Aric Stewart : quartz: Add IAMFilterMiscFlags to VMR9 implementation.

Alexandre Julliard julliard at winehq.org
Thu Apr 5 12:31:46 CDT 2012


Module: wine
Branch: master
Commit: 8e79273b0efd80e186a84ca2ce8f9e34317ab628
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=8e79273b0efd80e186a84ca2ce8f9e34317ab628

Author: Aric Stewart <aric at codeweavers.com>
Date:   Tue Apr  3 14:38:04 2012 -0500

quartz: Add IAMFilterMiscFlags to VMR9 implementation.

---

 dlls/quartz/vmr9.c |   37 +++++++++++++++++++++++++++++++++++--
 1 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c
index d9f9035..07e3428 100644
--- a/dlls/quartz/vmr9.c
+++ b/dlls/quartz/vmr9.c
@@ -52,6 +52,7 @@ typedef struct
     BaseControlVideo baseControlVideo;
 
     IUnknown IUnknown_inner;
+    IAMFilterMiscFlags IAMFilterMiscFlags_iface;
 
     BITMAPINFOHEADER bmiheader;
     IUnknown * outer_unk;
@@ -89,6 +90,11 @@ static inline VMR9Impl *impl_from_IBasicVideo( IBasicVideo *iface)
     return CONTAINING_RECORD(iface, VMR9Impl, baseControlVideo.IBasicVideo_iface);
 }
 
+static inline VMR9Impl *impl_from_IAMFilterMiscFlags( IAMFilterMiscFlags *iface)
+{
+    return CONTAINING_RECORD(iface, VMR9Impl, IAMFilterMiscFlags_iface);
+}
+
 static HRESULT WINAPI VMR9_DoRenderSample(BaseRenderer *iface, IMediaSample * pSample)
 {
     VMR9Impl *This = (VMR9Impl *)iface;
@@ -425,6 +431,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_IAMFilterMiscFlags))
+        *ppv = &This->IAMFilterMiscFlags_iface;
     else
     {
         HRESULT hr;
@@ -445,8 +453,6 @@ static HRESULT WINAPI VMR9Inner_QueryInterface(IUnknown * iface, REFIID riid, LP
         ;
     else if (IsEqualIID(riid, &IID_IVMRSurfaceAllocatorNotify9))
         ;
-    else if (IsEqualIID(riid, &IID_IAMFilterMiscFlags))
-        FIXME("No interface for IID_IAMFilterMiscFlags\n");
     else if (IsEqualIID(riid, &IID_IMediaPosition))
         FIXME("No interface for IID_IMediaPosition\n");
     else if (IsEqualIID(riid, &IID_IQualProp))
@@ -730,6 +736,32 @@ static const IBasicVideoVtbl IBasicVideo_VTable =
     BaseControlVideoImpl_IsUsingDefaultDestination
 };
 
+static HRESULT WINAPI AMFilterMiscFlags_QueryInterface(IAMFilterMiscFlags *iface, REFIID riid, void **ppv) {
+    VMR9Impl *This = impl_from_IAMFilterMiscFlags(iface);
+    return VMR9_QueryInterface(&This->renderer.filter.IBaseFilter_iface, riid, ppv);
+}
+
+static ULONG WINAPI AMFilterMiscFlags_AddRef(IAMFilterMiscFlags *iface) {
+    VMR9Impl *This = impl_from_IAMFilterMiscFlags(iface);
+    return VMR9_AddRef(&This->renderer.filter.IBaseFilter_iface);
+}
+
+static ULONG WINAPI AMFilterMiscFlags_Release(IAMFilterMiscFlags *iface) {
+    VMR9Impl *This = impl_from_IAMFilterMiscFlags(iface);
+    return VMR9_Release(&This->renderer.filter.IBaseFilter_iface);
+}
+
+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
+};
+
 HRESULT VMR9Impl_create(IUnknown * outer_unk, LPVOID * ppv)
 {
     HRESULT hr;
@@ -745,6 +777,7 @@ HRESULT VMR9Impl_create(IUnknown * outer_unk, LPVOID * ppv)
     pVMR9->bUnkOuterValid = FALSE;
     pVMR9->bAggregatable = FALSE;
     pVMR9->IUnknown_inner.lpVtbl = &IInner_VTable;
+    pVMR9->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl;
 
     hr = BaseRenderer_Init(&pVMR9->renderer, &VMR9_Vtbl, outer_unk, &CLSID_VideoMixingRenderer9, (DWORD_PTR)(__FILE__ ": VMR9Impl.csFilter"), &BaseFuncTable);
     if (FAILED(hr))




More information about the wine-cvs mailing list