Zebediah Figura : mp3dmod: Implement IMediaObject::GetInputType().

Alexandre Julliard julliard at winehq.org
Mon Feb 24 15:23:53 CST 2020


Module: wine
Branch: master
Commit: c37109a5c6d22ac49dc342f548e5cb709a9be0d0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c37109a5c6d22ac49dc342f548e5cb709a9be0d0

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Fri Feb 21 19:34:57 2020 -0600

mp3dmod: Implement IMediaObject::GetInputType().

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mp3dmod/mp3dmod.c       | 14 ++++++++++++--
 dlls/mp3dmod/tests/mp3dmod.c | 31 +++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/dlls/mp3dmod/mp3dmod.c b/dlls/mp3dmod/mp3dmod.c
index 9e86bcc31d..4df74fc037 100644
--- a/dlls/mp3dmod/mp3dmod.c
+++ b/dlls/mp3dmod/mp3dmod.c
@@ -163,9 +163,19 @@ static HRESULT WINAPI MediaObject_GetOutputStreamInfo(IMediaObject *iface, DWORD
 
 static HRESULT WINAPI MediaObject_GetInputType(IMediaObject *iface, DWORD index, DWORD type_index, DMO_MEDIA_TYPE *type)
 {
-    FIXME("(%p)->(%d, %d, %p) stub!\n", iface, index, type_index, type);
+    TRACE("iface %p, index %u, type_index %u, type %p.\n", iface, index, type_index, type);
 
-    return E_NOTIMPL;
+    if (type_index)
+        return DMO_E_NO_MORE_ITEMS;
+
+    type->majortype = WMMEDIATYPE_Audio;
+    type->subtype = WMMEDIASUBTYPE_MP3;
+    type->formattype = GUID_NULL;
+    type->pUnk = NULL;
+    type->cbFormat = 0;
+    type->pbFormat = NULL;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI MediaObject_GetOutputType(IMediaObject *iface, DWORD index, DWORD type_index, DMO_MEDIA_TYPE *type)
diff --git a/dlls/mp3dmod/tests/mp3dmod.c b/dlls/mp3dmod/tests/mp3dmod.c
index 211731db9a..da78547999 100644
--- a/dlls/mp3dmod/tests/mp3dmod.c
+++ b/dlls/mp3dmod/tests/mp3dmod.c
@@ -314,6 +314,36 @@ static void test_stream_info(void)
     IMediaObject_Release(dmo);
 }
 
+static void test_media_types(void)
+{
+    DMO_MEDIA_TYPE mt;
+    IMediaObject *dmo;
+    HRESULT hr;
+
+    hr = CoCreateInstance(&CLSID_CMP3DecMediaObject, NULL, CLSCTX_INPROC_SERVER,
+            &IID_IMediaObject, (void **)&dmo);
+    ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+    memset(&mt, 0xcc, sizeof(DMO_MEDIA_TYPE));
+    hr = IMediaObject_GetInputType(dmo, 0, 0, &mt);
+    ok(hr == S_OK, "Got hr %#x.\n", hr);
+    ok(IsEqualGUID(&mt.majortype, &MEDIATYPE_Audio), "Got major type %s.\n", wine_dbgstr_guid(&mt.majortype));
+    ok(IsEqualGUID(&mt.subtype, &WMMEDIASUBTYPE_MP3), "Got subtype %s.\n", wine_dbgstr_guid(&mt.subtype));
+    ok(mt.bFixedSizeSamples == 0xcccccccc, "Got fixed size %d.\n", mt.bFixedSizeSamples);
+    ok(mt.bTemporalCompression == 0xcccccccc, "Got temporal compression %d.\n", mt.bTemporalCompression);
+    ok(mt.lSampleSize == 0xcccccccc, "Got sample size %u.\n", mt.lSampleSize);
+    ok(IsEqualGUID(&mt.formattype, &GUID_NULL), "Got format type %s.\n",
+            wine_dbgstr_guid(&mt.formattype));
+    ok(!mt.pUnk, "Got pUnk %p.\n", mt.pUnk);
+    ok(!mt.cbFormat, "Got format size %u.\n", mt.cbFormat);
+    ok(!mt.pbFormat, "Got format block %p.\n", mt.pbFormat);
+
+    hr = IMediaObject_GetInputType(dmo, 0, 1, &mt);
+    ok(hr == DMO_E_NO_MORE_ITEMS, "Got hr %#x.\n", hr);
+
+    IMediaObject_Release(dmo);
+}
+
 START_TEST(mp3dmod)
 {
     IMediaObject *dmo;
@@ -333,6 +363,7 @@ START_TEST(mp3dmod)
     test_convert();
     test_aggregation();
     test_stream_info();
+    test_media_types();
 
     CoUninitialize();
 }




More information about the wine-cvs mailing list