quartz: Add IAMFilterMiscFlags to null renderer.

This commit is contained in:
Maarten Lankhorst 2010-11-04 17:02:26 +01:00 committed by Alexandre Julliard
parent 79f717bb91
commit 443e24fe88
1 changed files with 35 additions and 0 deletions

View File

@ -48,11 +48,13 @@ static const WCHAR wcsAltInputPinName[] = {'I','n',0};
static const IBaseFilterVtbl NullRenderer_Vtbl; static const IBaseFilterVtbl NullRenderer_Vtbl;
static const IUnknownVtbl IInner_VTable; static const IUnknownVtbl IInner_VTable;
static const IPinVtbl NullRenderer_InputPin_Vtbl; static const IPinVtbl NullRenderer_InputPin_Vtbl;
static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl;
typedef struct NullRendererImpl typedef struct NullRendererImpl
{ {
BaseFilter filter; BaseFilter filter;
const IUnknownVtbl * IInner_vtbl; const IUnknownVtbl * IInner_vtbl;
const IAMFilterMiscFlagsVtbl *IAMFilterMiscFlags_vtbl;
IUnknown *seekthru_unk; IUnknown *seekthru_unk;
BaseInputPin *pInputPin; BaseInputPin *pInputPin;
@ -133,6 +135,7 @@ HRESULT NullRenderer_create(IUnknown * pUnkOuter, LPVOID * ppv)
pNullRenderer->bUnkOuterValid = FALSE; pNullRenderer->bUnkOuterValid = FALSE;
pNullRenderer->bAggregatable = FALSE; pNullRenderer->bAggregatable = FALSE;
pNullRenderer->IInner_vtbl = &IInner_VTable; pNullRenderer->IInner_vtbl = &IInner_VTable;
pNullRenderer->IAMFilterMiscFlags_vtbl = &IAMFilterMiscFlags_Vtbl;
BaseFilter_Init(&pNullRenderer->filter, &NullRenderer_Vtbl, &CLSID_NullRenderer, (DWORD_PTR)(__FILE__ ": NullRendererImpl.csFilter"), &BaseFuncTable); BaseFilter_Init(&pNullRenderer->filter, &NullRenderer_Vtbl, &CLSID_NullRenderer, (DWORD_PTR)(__FILE__ ": NullRendererImpl.csFilter"), &BaseFuncTable);
@ -185,6 +188,8 @@ static HRESULT WINAPI NullRendererInner_QueryInterface(IUnknown * iface, REFIID
*ppv = This; *ppv = This;
else if (IsEqualIID(riid, &IID_IMediaSeeking)) else if (IsEqualIID(riid, &IID_IMediaSeeking))
return IUnknown_QueryInterface(This->seekthru_unk, riid, ppv); return IUnknown_QueryInterface(This->seekthru_unk, riid, ppv);
else if (IsEqualIID(riid, &IID_IAMFilterMiscFlags))
*ppv = &This->IAMFilterMiscFlags_vtbl;
if (*ppv) if (*ppv)
{ {
@ -468,3 +473,33 @@ static const IPinVtbl NullRenderer_InputPin_Vtbl =
NullRenderer_InputPin_EndFlush, NullRenderer_InputPin_EndFlush,
BaseInputPinImpl_NewSegment BaseInputPinImpl_NewSegment
}; };
static NullRendererImpl *from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface) {
return (NullRendererImpl*)((char*)iface - offsetof(NullRendererImpl, IAMFilterMiscFlags_vtbl));
}
static HRESULT WINAPI AMFilterMiscFlags_QueryInterface(IAMFilterMiscFlags *iface, const REFIID riid, void **ppv) {
NullRendererImpl *This = from_IAMFilterMiscFlags(iface);
return IUnknown_QueryInterface((IUnknown*)This, riid, ppv);
}
static ULONG WINAPI AMFilterMiscFlags_AddRef(IAMFilterMiscFlags *iface) {
NullRendererImpl *This = from_IAMFilterMiscFlags(iface);
return IUnknown_AddRef((IUnknown*)This);
}
static ULONG WINAPI AMFilterMiscFlags_Release(IAMFilterMiscFlags *iface) {
NullRendererImpl *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
};