[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