From 217faec5f59c5a83981c39698e94391a7bd3d766 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20Hentschel?= Date: Wed, 6 Nov 2013 00:06:41 +0100 Subject: [PATCH] quartz: Add stubbed IAMCertifiedOutputProtection interface. --- dlls/quartz/vmr9.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c index 1e89225f1ed..2dc12a60dd9 100644 --- a/dlls/quartz/vmr9.c +++ b/dlls/quartz/vmr9.c @@ -52,6 +52,7 @@ struct quartz_vmr BaseControlVideo baseControlVideo; IUnknown IUnknown_inner; + IAMCertifiedOutputProtection IAMCertifiedOutputProtection_iface; IAMFilterMiscFlags IAMFilterMiscFlags_iface; IVMRFilterConfig IVMRFilterConfig_iface; IVMRFilterConfig9 IVMRFilterConfig9_iface; @@ -120,6 +121,11 @@ static inline struct quartz_vmr *impl_from_IBasicVideo(IBasicVideo *iface) return CONTAINING_RECORD(iface, struct quartz_vmr, baseControlVideo.IBasicVideo_iface); } +static inline struct quartz_vmr *impl_from_IAMCertifiedOutputProtection(IAMCertifiedOutputProtection *iface) +{ + return CONTAINING_RECORD(iface, struct quartz_vmr, IAMCertifiedOutputProtection_iface); +} + static inline struct quartz_vmr *impl_from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface) { return CONTAINING_RECORD(iface, struct quartz_vmr, IAMFilterMiscFlags_iface); @@ -753,6 +759,8 @@ static HRESULT WINAPI VMR9Inner_QueryInterface(IUnknown * iface, REFIID riid, LP *ppv = &This->baseControlWindow.IVideoWindow_iface; else if (IsEqualIID(riid, &IID_IBasicVideo)) *ppv = &This->baseControlVideo.IBasicVideo_iface; + else if (IsEqualIID(riid, &IID_IAMCertifiedOutputProtection)) + *ppv = &This->IAMCertifiedOutputProtection_iface; else if (IsEqualIID(riid, &IID_IAMFilterMiscFlags)) *ppv = &This->IAMFilterMiscFlags_iface; else if (IsEqualIID(riid, &IID_IVMRFilterConfig)) @@ -1086,6 +1094,74 @@ static const IBasicVideoVtbl IBasicVideo_VTable = BaseControlVideoImpl_IsUsingDefaultDestination }; +static HRESULT WINAPI AMCertifiedOutputProtection_QueryInterface(IAMCertifiedOutputProtection *iface, + REFIID riid, void **ppv) +{ + struct quartz_vmr *This = impl_from_IAMCertifiedOutputProtection(iface); + return VMR9_QueryInterface(&This->renderer.filter.IBaseFilter_iface, riid, ppv); +} + +static ULONG WINAPI AMCertifiedOutputProtection_AddRef(IAMCertifiedOutputProtection *iface) +{ + struct quartz_vmr *This = impl_from_IAMCertifiedOutputProtection(iface); + return VMR9_AddRef(&This->renderer.filter.IBaseFilter_iface); +} + +static ULONG WINAPI AMCertifiedOutputProtection_Release(IAMCertifiedOutputProtection *iface) +{ + struct quartz_vmr *This = impl_from_IAMCertifiedOutputProtection(iface); + return VMR9_Release(&This->renderer.filter.IBaseFilter_iface); +} + +static HRESULT WINAPI AMCertifiedOutputProtection_KeyExchange(IAMCertifiedOutputProtection *iface, + GUID* pRandom, BYTE** VarLenCertGH, + DWORD* pdwLengthCertGH) +{ + struct quartz_vmr *This = impl_from_IAMCertifiedOutputProtection(iface); + + FIXME("(%p/%p)->(%p, %p, %p) stub\n", iface, This, pRandom, VarLenCertGH, pdwLengthCertGH); + return E_NOTIMPL; +} + +static HRESULT WINAPI AMCertifiedOutputProtection_SessionSequenceStart(IAMCertifiedOutputProtection *iface, + AMCOPPSignature* pSig) +{ + struct quartz_vmr *This = impl_from_IAMCertifiedOutputProtection(iface); + + FIXME("(%p/%p)->(%p) stub\n", iface, This, pSig); + return E_NOTIMPL; +} + +static HRESULT WINAPI AMCertifiedOutputProtection_ProtectionCommand(IAMCertifiedOutputProtection *iface, + const AMCOPPCommand* cmd) +{ + struct quartz_vmr *This = impl_from_IAMCertifiedOutputProtection(iface); + + FIXME("(%p/%p)->(%p) stub\n", iface, This, cmd); + return E_NOTIMPL; +} + +static HRESULT WINAPI AMCertifiedOutputProtection_ProtectionStatus(IAMCertifiedOutputProtection *iface, + const AMCOPPStatusInput* pStatusInput, + AMCOPPStatusOutput* pStatusOutput) +{ + struct quartz_vmr *This = impl_from_IAMCertifiedOutputProtection(iface); + + FIXME("(%p/%p)->(%p, %p) stub\n", iface, This, pStatusInput, pStatusOutput); + return E_NOTIMPL; +} + +static const IAMCertifiedOutputProtectionVtbl IAMCertifiedOutputProtection_Vtbl = +{ + AMCertifiedOutputProtection_QueryInterface, + AMCertifiedOutputProtection_AddRef, + AMCertifiedOutputProtection_Release, + AMCertifiedOutputProtection_KeyExchange, + AMCertifiedOutputProtection_SessionSequenceStart, + AMCertifiedOutputProtection_ProtectionCommand, + AMCertifiedOutputProtection_ProtectionStatus +}; + static HRESULT WINAPI AMFilterMiscFlags_QueryInterface(IAMFilterMiscFlags *iface, REFIID riid, void **ppv) { struct quartz_vmr *This = impl_from_IAMFilterMiscFlags(iface); return VMR9_QueryInterface(&This->renderer.filter.IBaseFilter_iface, riid, ppv); @@ -2183,6 +2259,7 @@ static HRESULT vmr_create(IUnknown *outer_unk, LPVOID *ppv, const CLSID *clsid) pVMR->bUnkOuterValid = FALSE; pVMR->bAggregatable = FALSE; pVMR->IUnknown_inner.lpVtbl = &IInner_VTable; + pVMR->IAMCertifiedOutputProtection_iface.lpVtbl = &IAMCertifiedOutputProtection_Vtbl; pVMR->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl; pVMR->mode = 0; -- 2.11.4.GIT