Module: wine Branch: master Commit: 822c3fe9eab143c0213a0e5a95d9ecdf77c93b38 URL: http://source.winehq.org/git/wine.git/?a=commit;h=822c3fe9eab143c0213a0e5a95...
Author: Maarten Lankhorst m.b.lankhorst@gmail.com Date: Thu Nov 4 17:02:24 2010 +0100
quartz: Add IAMFilterMiscFlags to video renderer.
---
dlls/quartz/videorenderer.c | 35 +++++++++++++++++++++++++++++++++++ 1 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index c30ce06..3a35f38 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -52,6 +52,7 @@ static const IUnknownVtbl IInner_VTable; static const IBasicVideoVtbl IBasicVideo_VTable; static const IVideoWindowVtbl IVideoWindow_VTable; static const IPinVtbl VideoRenderer_InputPin_Vtbl; +static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl;
typedef struct VideoRendererImpl { @@ -59,6 +60,7 @@ typedef struct VideoRendererImpl const IBasicVideoVtbl * IBasicVideo_vtbl; const IVideoWindowVtbl * IVideoWindow_vtbl; const IUnknownVtbl * IInner_vtbl; + const IAMFilterMiscFlagsVtbl *IAMFilterMiscFlags_vtbl; IUnknown *seekthru_unk;
BaseInputPin *pInputPin; @@ -581,6 +583,7 @@ HRESULT VideoRenderer_create(IUnknown * pUnkOuter, LPVOID * ppv) pVideoRenderer->bUnkOuterValid = FALSE; pVideoRenderer->bAggregatable = FALSE; pVideoRenderer->IInner_vtbl = &IInner_VTable; + pVideoRenderer->IAMFilterMiscFlags_vtbl = &IAMFilterMiscFlags_Vtbl;
BaseFilter_Init(&pVideoRenderer->filter, &VideoRenderer_Vtbl, &CLSID_VideoRenderer, (DWORD_PTR)(__FILE__ ": VideoRendererImpl.csFilter"), &BaseFuncTable);
@@ -666,6 +669,8 @@ static HRESULT WINAPI VideoRendererInner_QueryInterface(IUnknown * iface, REFIID *ppv = &This->IVideoWindow_vtbl; else if (IsEqualIID(riid, &IID_IMediaSeeking)) return IUnknown_QueryInterface(This->seekthru_unk, riid, ppv); + else if (IsEqualIID(riid, &IID_IAMFilterMiscFlags)) + *ppv = &This->IAMFilterMiscFlags_vtbl;
if (*ppv) { @@ -2169,3 +2174,33 @@ static const IVideoWindowVtbl IVideoWindow_VTable = Videowindow_HideCursor, Videowindow_IsCursorHidden }; + +static VideoRendererImpl *from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface) { + return (VideoRendererImpl*)((char*)iface - offsetof(VideoRendererImpl, IAMFilterMiscFlags_vtbl)); +} + +static HRESULT WINAPI AMFilterMiscFlags_QueryInterface(IAMFilterMiscFlags *iface, const REFIID riid, void **ppv) { + VideoRendererImpl *This = from_IAMFilterMiscFlags(iface); + return IUnknown_QueryInterface((IUnknown*)This, riid, ppv); +} + +static ULONG WINAPI AMFilterMiscFlags_AddRef(IAMFilterMiscFlags *iface) { + VideoRendererImpl *This = from_IAMFilterMiscFlags(iface); + return IUnknown_AddRef((IUnknown*)This); +} + +static ULONG WINAPI AMFilterMiscFlags_Release(IAMFilterMiscFlags *iface) { + VideoRendererImpl *This = from_IAMFilterMiscFlags(iface); + return IUnknown_Release((IUnknown*)This); +} + +static ULONG WINAPI AMFilterMiscFlags_GetMiscFlags(IAMFilterMiscFlags *iface) { + return AM_FILTER_MISC_FLAGS_IS_RENDERER; +} + +static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl = { + AMFilterMiscFlags_QueryInterface, + AMFilterMiscFlags_AddRef, + AMFilterMiscFlags_Release, + AMFilterMiscFlags_GetMiscFlags +};