From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com Signed-off-by: Zebediah Figura z.figura12@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); }