[PATCH v2 02/13] qedit: Implement MediaDet_get_StreamTypeB.

Gabriel Ivăncescu gabrielopcode at gmail.com
Thu Apr 16 10:24:54 CDT 2020


Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---
 dlls/qedit/mediadet.c       | 17 +++++++++++++++--
 dlls/qedit/tests/mediadet.c | 22 ++++++++++++++++++++++
 2 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/dlls/qedit/mediadet.c b/dlls/qedit/mediadet.c
index a6b52c0..dae98fd 100644
--- a/dlls/qedit/mediadet.c
+++ b/dlls/qedit/mediadet.c
@@ -303,8 +303,21 @@ static HRESULT WINAPI MediaDet_get_StreamType(IMediaDet* iface, GUID *pVal)
 static HRESULT WINAPI MediaDet_get_StreamTypeB(IMediaDet* iface, BSTR *pVal)
 {
     MediaDetImpl *This = impl_from_IMediaDet(iface);
-    FIXME("(%p)->(%p): not implemented!\n", This, pVal);
-    return E_NOTIMPL;
+    AM_MEDIA_TYPE mt;
+    HRESULT hr;
+
+    TRACE("(%p)->(%p)\n", This, pVal);
+
+    hr = IMediaDet_get_StreamMediaType(&This->IMediaDet_iface, &mt);
+    if (FAILED(hr))
+        return hr;
+    CoTaskMemFree(mt.pbFormat);
+
+    if (!(*pVal = SysAllocStringLen(NULL, CHARS_IN_GUID - 1)))
+        return E_OUTOFMEMORY;
+
+    StringFromGUID2(&mt.majortype, *pVal, CHARS_IN_GUID);
+    return hr;
 }
 
 static HRESULT WINAPI MediaDet_get_StreamLength(IMediaDet* iface, double *pVal)
diff --git a/dlls/qedit/tests/mediadet.c b/dlls/qedit/tests/mediadet.c
index c92c187..596171b 100644
--- a/dlls/qedit/tests/mediadet.c
+++ b/dlls/qedit/tests/mediadet.c
@@ -193,6 +193,7 @@ static void test_mediadet(void)
     LONG nstrms = 0;
     LONG strm;
     GUID guid;
+    BSTR bstr;
     AM_MEDIA_TYPE mt;
     double fps;
     int flags;
@@ -249,6 +250,12 @@ static void test_mediadet(void)
     hr = IMediaDet_get_StreamType(pM, NULL);
     ok(hr == E_POINTER, "IMediaDet_get_StreamType failed: %08x\n", hr);
 
+    hr = IMediaDet_get_StreamTypeB(pM, &bstr);
+    ok(hr == E_INVALIDARG, "IMediaDet_get_StreamTypeB failed: %08x\n", hr);
+
+    hr = IMediaDet_get_StreamTypeB(pM, NULL);
+    ok(hr == E_INVALIDARG, "IMediaDet_get_StreamTypeB failed: %08x\n", hr);
+
     filename = SysAllocString(test_avi_filename);
     hr = IMediaDet_put_Filename(pM, filename);
     ok(hr == S_OK, "IMediaDet_put_Filename failed: %08x\n", hr);
@@ -269,6 +276,11 @@ static void test_mediadet(void)
     ok(hr == S_OK, "IMediaDet_get_StreamType failed: %08x\n", hr);
     ok(IsEqualGUID(&guid, &MEDIATYPE_Video), "Wrong GUID %s\n", wine_dbgstr_guid(&guid));
 
+    hr = IMediaDet_get_StreamTypeB(pM, &bstr);
+    ok(hr == S_OK, "IMediaDet_get_StreamTypeB failed: %08x\n", hr);
+    ok(!wcscmp(bstr, L"{73646976-0000-0010-8000-00AA00389B71}"), "Wrong GUID %s\n", wine_dbgstr_w(bstr));
+    SysFreeString(bstr);
+
     /* Even before get_OutputStreams.  */
     hr = IMediaDet_put_CurrentStream(pM, 1);
     ok(hr == E_INVALIDARG, "IMediaDet_put_CurrentStream failed: %08x\n", hr);
@@ -326,6 +338,11 @@ static void test_mediadet(void)
     ok(hr == S_OK, "IMediaDet_get_StreamType failed: %08x\n", hr);
     ok(IsEqualGUID(&guid, &MEDIATYPE_Video), "Wrong GUID %s\n", wine_dbgstr_guid(&guid));
 
+    hr = IMediaDet_get_StreamTypeB(pM, &bstr);
+    ok(hr == S_OK, "IMediaDet_get_StreamTypeB failed: %08x\n", hr);
+    ok(!wcscmp(bstr, L"{73646976-0000-0010-8000-00AA00389B71}"), "Wrong GUID %s\n", wine_dbgstr_w(bstr));
+    SysFreeString(bstr);
+
     hr = IMediaDet_get_FrameRate(pM, NULL);
     ok(hr == E_POINTER, "IMediaDet_get_FrameRate failed: %08x\n", hr);
 
@@ -389,6 +406,11 @@ static void test_mediadet(void)
             ok(hr == S_OK, "IMediaDet_get_StreamType failed: %08x\n", hr);
             ok(IsEqualGUID(&guid, &MEDIATYPE_Audio), "Wrong GUID %s\n", wine_dbgstr_guid(&guid));
 
+            hr = IMediaDet_get_StreamTypeB(pM, &bstr);
+            ok(hr == S_OK, "IMediaDet_get_StreamTypeB failed: %08x\n", hr);
+            ok(!wcscmp(bstr, L"{73647561-0000-0010-8000-00AA00389B71}"), "Wrong GUID %s\n", wine_dbgstr_w(bstr));
+            SysFreeString(bstr);
+
             hr = IMediaDet_get_FrameRate(pM, &fps);
             ok(hr == VFW_E_INVALIDMEDIATYPE, "IMediaDet_get_FrameRate failed: %08x\n", hr);
         }
-- 
2.21.0




More information about the wine-devel mailing list