[PATCH v4 2/4] qedit: Implement IMediaDet::get_StreamTypeB().

Zebediah Figura z.figura12 at gmail.com
Fri Apr 17 15:02:07 CDT 2020


From: Gabriel Ivăncescu <gabrielopcode at gmail.com>

Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/qedit/mediadet.c       | 18 ++++++++++++++----
 dlls/qedit/tests/mediadet.c | 25 +++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 4 deletions(-)

diff --git a/dlls/qedit/mediadet.c b/dlls/qedit/mediadet.c
index 92c154a50a5..0d0240aff36 100644
--- a/dlls/qedit/mediadet.c
+++ b/dlls/qedit/mediadet.c
@@ -301,11 +301,21 @@ static HRESULT WINAPI MediaDet_get_StreamType(IMediaDet *iface, GUID *majortype)
     return hr;
 }
 
-static HRESULT WINAPI MediaDet_get_StreamTypeB(IMediaDet* iface, BSTR *pVal)
+static HRESULT WINAPI MediaDet_get_StreamTypeB(IMediaDet *iface, BSTR *bstr)
 {
-    MediaDetImpl *This = impl_from_IMediaDet(iface);
-    FIXME("(%p)->(%p): not implemented!\n", This, pVal);
-    return E_NOTIMPL;
+    MediaDetImpl *detector = impl_from_IMediaDet(iface);
+    HRESULT hr;
+    GUID guid;
+
+    TRACE("detector %p, bstr %p.\n", detector, bstr);
+
+    if (SUCCEEDED(hr = IMediaDet_get_StreamType(iface, &guid)))
+    {
+        if (!(*bstr = SysAllocStringLen(NULL, CHARS_IN_GUID - 1)))
+            return E_OUTOFMEMORY;
+        StringFromGUID2(&guid, *bstr, 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 1d8db732c88..7f1bdc7ab64 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, "Got hr %#x.\n", hr);
 
+    hr = IMediaDet_get_StreamTypeB(pM, &bstr);
+    ok(hr == E_INVALIDARG, "Got hr %#x.\n", hr);
+
+    hr = IMediaDet_get_StreamTypeB(pM, NULL);
+    ok(hr == E_INVALIDARG, "Got hr %#x.\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,12 @@ static void test_mediadet(void)
     ok(hr == S_OK, "Got hr %#x.\n", hr);
     ok(IsEqualGUID(&guid, &MEDIATYPE_Video), "Got major type %s.\n", debugstr_guid(&guid));
 
+    hr = IMediaDet_get_StreamTypeB(pM, &bstr);
+    ok(hr == S_OK, "Got hr %#x.\n", hr);
+    ok(!wcscmp(bstr, L"{73646976-0000-0010-8000-00AA00389B71}"),
+            "Got major type %s.\n", debugstr_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 +339,12 @@ static void test_mediadet(void)
     ok(hr == S_OK, "Got hr %#x.\n", hr);
     ok(IsEqualGUID(&guid, &MEDIATYPE_Video), "Got major type %s.\n", debugstr_guid(&guid));
 
+    hr = IMediaDet_get_StreamTypeB(pM, &bstr);
+    ok(hr == S_OK, "Got hr %#x.\n", hr);
+    ok(!wcscmp(bstr, L"{73646976-0000-0010-8000-00AA00389B71}"),
+            "Got major type %s.\n", debugstr_w(bstr));
+    SysFreeString(bstr);
+
     hr = IMediaDet_get_FrameRate(pM, NULL);
     ok(hr == E_POINTER, "IMediaDet_get_FrameRate failed: %08x\n", hr);
 
@@ -389,6 +408,12 @@ static void test_mediadet(void)
             ok(hr == S_OK, "Got hr %#x.\n", hr);
             ok(IsEqualGUID(&guid, &MEDIATYPE_Audio), "Got major type %s.\n", debugstr_guid(&guid));
 
+            hr = IMediaDet_get_StreamTypeB(pM, &bstr);
+            ok(hr == S_OK, "Got hr %#x.\n", hr);
+            ok(!wcscmp(bstr, L"{73647561-0000-0010-8000-00AA00389B71}"),
+                    "Got major type %s.\n", debugstr_w(bstr));
+            SysFreeString(bstr);
+
             hr = IMediaDet_get_FrameRate(pM, &fps);
             ok(hr == VFW_E_INVALIDMEDIATYPE, "IMediaDet_get_FrameRate failed: %08x\n", hr);
         }
-- 
2.26.0




More information about the wine-devel mailing list