[PATCH v2 02/13] qedit: Implement MediaDet_get_StreamTypeB.
Zebediah Figura
zfigura at codeweavers.com
Thu Apr 16 11:18:54 CDT 2020
On 4/16/20 10:24 AM, Gabriel Ivăncescu wrote:
> 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);
Wouldn't it be simpler just to call get_StreamType() here?
> + 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);
> }
>
More information about the wine-devel
mailing list