[PATCH v2 01/13] qedit: Implement MediaDet_get_StreamType.

Zebediah Figura zfigura at codeweavers.com
Thu Apr 16 11:15:58 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 | 19 +++++++++++++++++++
>  2 files changed, 34 insertions(+), 2 deletions(-)
> 
> diff --git a/dlls/qedit/mediadet.c b/dlls/qedit/mediadet.c
> index ecfafc4..a6b52c0 100644
> --- a/dlls/qedit/mediadet.c
> +++ b/dlls/qedit/mediadet.c
> @@ -283,8 +283,21 @@ static HRESULT WINAPI MediaDet_put_CurrentStream(IMediaDet* iface, LONG newVal)
>  static HRESULT WINAPI MediaDet_get_StreamType(IMediaDet* iface, GUID *pVal)
>  {
>      MediaDetImpl *This = impl_from_IMediaDet(iface);
> -    FIXME("(%p)->(%s): not implemented!\n", This, debugstr_guid(pVal));
> -    return E_NOTIMPL;
> +    AM_MEDIA_TYPE mt;
> +    HRESULT hr;
> +
> +    TRACE("(%p)->(%p)\n", This, pVal);
> +
> +    if (!pVal)
> +        return E_POINTER;
> +
> +    hr = IMediaDet_get_StreamMediaType(&This->IMediaDet_iface, &mt);
> +    if (FAILED(hr))
> +        return hr;
> +    CoTaskMemFree(mt.pbFormat);

This should be FreeMediaType().

> +
> +    *pVal = mt.majortype;
> +    return hr;
>  }
>  
>  static HRESULT WINAPI MediaDet_get_StreamTypeB(IMediaDet* iface, BSTR *pVal)
> diff --git a/dlls/qedit/tests/mediadet.c b/dlls/qedit/tests/mediadet.c
> index 65f5af7..c92c187 100644
> --- a/dlls/qedit/tests/mediadet.c
> +++ b/dlls/qedit/tests/mediadet.c
> @@ -192,6 +192,7 @@ static void test_mediadet(void)
>      BSTR filename = NULL;
>      LONG nstrms = 0;
>      LONG strm;
> +    GUID guid;
>      AM_MEDIA_TYPE mt;
>      double fps;
>      int flags;
> @@ -242,6 +243,12 @@ static void test_mediadet(void)
>      hr = IMediaDet_get_StreamMediaType(pM, NULL);
>      ok(hr == E_POINTER, "IMediaDet_get_StreamMediaType failed: %08x\n", hr);
>  
> +    hr = IMediaDet_get_StreamType(pM, &guid);
> +    ok(hr == E_INVALIDARG, "IMediaDet_get_StreamType failed: %08x\n", hr);
> +
> +    hr = IMediaDet_get_StreamType(pM, NULL);
> +    ok(hr == E_POINTER, "IMediaDet_get_StreamType 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);
> @@ -258,6 +265,10 @@ static void test_mediadet(void)
>      ok(hr == S_OK, "IMediaDet_get_StreamMediaType failed: %08x\n", hr);
>      CoTaskMemFree(mt.pbFormat);
>  
> +    hr = IMediaDet_get_StreamType(pM, &guid);
> +    ok(hr == S_OK, "IMediaDet_get_StreamType failed: %08x\n", hr);
> +    ok(IsEqualGUID(&guid, &MEDIATYPE_Video), "Wrong GUID %s\n", wine_dbgstr_guid(&guid));
> +
>      /* Even before get_OutputStreams.  */
>      hr = IMediaDet_put_CurrentStream(pM, 1);
>      ok(hr == E_INVALIDARG, "IMediaDet_put_CurrentStream failed: %08x\n", hr);
> @@ -311,6 +322,10 @@ static void test_mediadet(void)
>                   "IMediaDet_get_StreamMediaType\n");
>      CoTaskMemFree(mt.pbFormat);
>  
> +    hr = IMediaDet_get_StreamType(pM, &guid);
> +    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_FrameRate(pM, NULL);
>      ok(hr == E_POINTER, "IMediaDet_get_FrameRate failed: %08x\n", hr);
>  
> @@ -370,6 +385,10 @@ static void test_mediadet(void)
>  
>          if (IsEqualGUID(&mt.majortype, &MEDIATYPE_Audio))
>          {
> +            hr = IMediaDet_get_StreamType(pM, &guid);
> +            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_FrameRate(pM, &fps);
>              ok(hr == VFW_E_INVALIDMEDIATYPE, "IMediaDet_get_FrameRate failed: %08x\n", hr);
>          }
> 



More information about the wine-devel mailing list