From b6fd7bc133158f8da13df35586df404433b0907f Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Fri, 5 Nov 2010 23:19:13 +0100 Subject: [PATCH] quartz: Add IQualityControl to video renderer. --- dlls/quartz/tests/videorenderer.c | 4 ++-- dlls/quartz/videorenderer.c | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c index 967abd4ff96..860b30db13c 100644 --- a/dlls/quartz/tests/videorenderer.c +++ b/dlls/quartz/tests/videorenderer.c @@ -70,6 +70,8 @@ static void test_query_interface(void) RELEASE_EXPECT(pBasicVideo, 1); QI_SUCCEED(pVideoRenderer, IID_IMediaSeeking, pMediaSeeking); RELEASE_EXPECT(pMediaSeeking, 1); + QI_SUCCEED(pVideoRenderer, IID_IQualityControl, pQualityControl); + RELEASE_EXPECT(pQualityControl, 1); todo_wine { QI_SUCCEED(pVideoRenderer, IID_IDirectDrawVideo, pDirectDrawVideo); RELEASE_EXPECT(pDirectDrawVideo, 1); @@ -77,8 +79,6 @@ static void test_query_interface(void) RELEASE_EXPECT(pKsPropertySet, 1); QI_SUCCEED(pVideoRenderer, IID_IMediaPosition, pMediaPosition); RELEASE_EXPECT(pMediaPosition, 1); - QI_SUCCEED(pVideoRenderer, IID_IQualityControl, pQualityControl); - RELEASE_EXPECT(pQualityControl, 1); QI_SUCCEED(pVideoRenderer, IID_IQualProp, pQualProp); RELEASE_EXPECT(pQualProp, 1); } diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index 3a35f38a6d7..e135fb9b774 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -53,6 +53,13 @@ static const IBasicVideoVtbl IBasicVideo_VTable; static const IVideoWindowVtbl IVideoWindow_VTable; static const IPinVtbl VideoRenderer_InputPin_Vtbl; static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl; +static const IQualityControlVtbl VideoRenderer_QualityControl_Vtbl = { + QualityControlImpl_QueryInterface, + QualityControlImpl_AddRef, + QualityControlImpl_Release, + QualityControlImpl_Notify, + QualityControlImpl_SetSink +}; typedef struct VideoRendererImpl { @@ -62,6 +69,7 @@ typedef struct VideoRendererImpl const IUnknownVtbl * IInner_vtbl; const IAMFilterMiscFlagsVtbl *IAMFilterMiscFlags_vtbl; IUnknown *seekthru_unk; + QualityControlImpl qcimpl; BaseInputPin *pInputPin; @@ -622,6 +630,9 @@ HRESULT VideoRenderer_create(IUnknown * pUnkOuter, LPVOID * ppv) if (FAILED(hr)) goto fail; + QualityControlImpl_init(&pVideoRenderer->qcimpl, (IPin*)pVideoRenderer->pInputPin, (IBaseFilter*)pVideoRenderer); + pVideoRenderer->qcimpl.lpVtbl = &VideoRenderer_QualityControl_Vtbl; + if (!CreateRenderingSubsystem(pVideoRenderer)) return E_FAIL; @@ -671,6 +682,8 @@ static HRESULT WINAPI VideoRendererInner_QueryInterface(IUnknown * iface, REFIID return IUnknown_QueryInterface(This->seekthru_unk, riid, ppv); else if (IsEqualIID(riid, &IID_IAMFilterMiscFlags)) *ppv = &This->IAMFilterMiscFlags_vtbl; + else if (IsEqualIID(riid, &IID_IQualityControl)) + *ppv = &This->qcimpl; if (*ppv) { -- 2.11.4.GIT