quartz: Add IQualityControl to video renderer.

This commit is contained in:
Maarten Lankhorst 2010-11-05 23:19:13 +01:00 committed by Alexandre Julliard
parent 3329873b81
commit b6fd7bc133
2 changed files with 15 additions and 2 deletions

View File

@ -70,6 +70,8 @@ static void test_query_interface(void)
RELEASE_EXPECT(pBasicVideo, 1); RELEASE_EXPECT(pBasicVideo, 1);
QI_SUCCEED(pVideoRenderer, IID_IMediaSeeking, pMediaSeeking); QI_SUCCEED(pVideoRenderer, IID_IMediaSeeking, pMediaSeeking);
RELEASE_EXPECT(pMediaSeeking, 1); RELEASE_EXPECT(pMediaSeeking, 1);
QI_SUCCEED(pVideoRenderer, IID_IQualityControl, pQualityControl);
RELEASE_EXPECT(pQualityControl, 1);
todo_wine { todo_wine {
QI_SUCCEED(pVideoRenderer, IID_IDirectDrawVideo, pDirectDrawVideo); QI_SUCCEED(pVideoRenderer, IID_IDirectDrawVideo, pDirectDrawVideo);
RELEASE_EXPECT(pDirectDrawVideo, 1); RELEASE_EXPECT(pDirectDrawVideo, 1);
@ -77,8 +79,6 @@ static void test_query_interface(void)
RELEASE_EXPECT(pKsPropertySet, 1); RELEASE_EXPECT(pKsPropertySet, 1);
QI_SUCCEED(pVideoRenderer, IID_IMediaPosition, pMediaPosition); QI_SUCCEED(pVideoRenderer, IID_IMediaPosition, pMediaPosition);
RELEASE_EXPECT(pMediaPosition, 1); RELEASE_EXPECT(pMediaPosition, 1);
QI_SUCCEED(pVideoRenderer, IID_IQualityControl, pQualityControl);
RELEASE_EXPECT(pQualityControl, 1);
QI_SUCCEED(pVideoRenderer, IID_IQualProp, pQualProp); QI_SUCCEED(pVideoRenderer, IID_IQualProp, pQualProp);
RELEASE_EXPECT(pQualProp, 1); RELEASE_EXPECT(pQualProp, 1);
} }

View File

@ -53,6 +53,13 @@ static const IBasicVideoVtbl IBasicVideo_VTable;
static const IVideoWindowVtbl IVideoWindow_VTable; static const IVideoWindowVtbl IVideoWindow_VTable;
static const IPinVtbl VideoRenderer_InputPin_Vtbl; static const IPinVtbl VideoRenderer_InputPin_Vtbl;
static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_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 typedef struct VideoRendererImpl
{ {
@ -62,6 +69,7 @@ typedef struct VideoRendererImpl
const IUnknownVtbl * IInner_vtbl; const IUnknownVtbl * IInner_vtbl;
const IAMFilterMiscFlagsVtbl *IAMFilterMiscFlags_vtbl; const IAMFilterMiscFlagsVtbl *IAMFilterMiscFlags_vtbl;
IUnknown *seekthru_unk; IUnknown *seekthru_unk;
QualityControlImpl qcimpl;
BaseInputPin *pInputPin; BaseInputPin *pInputPin;
@ -622,6 +630,9 @@ HRESULT VideoRenderer_create(IUnknown * pUnkOuter, LPVOID * ppv)
if (FAILED(hr)) if (FAILED(hr))
goto fail; goto fail;
QualityControlImpl_init(&pVideoRenderer->qcimpl, (IPin*)pVideoRenderer->pInputPin, (IBaseFilter*)pVideoRenderer);
pVideoRenderer->qcimpl.lpVtbl = &VideoRenderer_QualityControl_Vtbl;
if (!CreateRenderingSubsystem(pVideoRenderer)) if (!CreateRenderingSubsystem(pVideoRenderer))
return E_FAIL; return E_FAIL;
@ -671,6 +682,8 @@ static HRESULT WINAPI VideoRendererInner_QueryInterface(IUnknown * iface, REFIID
return IUnknown_QueryInterface(This->seekthru_unk, riid, ppv); return IUnknown_QueryInterface(This->seekthru_unk, riid, ppv);
else if (IsEqualIID(riid, &IID_IAMFilterMiscFlags)) else if (IsEqualIID(riid, &IID_IAMFilterMiscFlags))
*ppv = &This->IAMFilterMiscFlags_vtbl; *ppv = &This->IAMFilterMiscFlags_vtbl;
else if (IsEqualIID(riid, &IID_IQualityControl))
*ppv = &This->qcimpl;
if (*ppv) if (*ppv)
{ {