Aric Stewart : amstream: Have the MediaStream Filter use strmbase.

Alexandre Julliard julliard at winehq.org
Wed Jan 18 14:03:41 CST 2012


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Wed Jan 18 07:49:45 2012 -0600

amstream: Have the MediaStream Filter use strmbase.

---

 dlls/amstream/Makefile.in         |    2 +-
 dlls/amstream/mediastreamfilter.c |   81 ++++++++++++++++---------------------
 2 files changed, 36 insertions(+), 47 deletions(-)

diff --git a/dlls/amstream/Makefile.in b/dlls/amstream/Makefile.in
index 0418c05..3353a38 100644
--- a/dlls/amstream/Makefile.in
+++ b/dlls/amstream/Makefile.in
@@ -1,5 +1,5 @@
 MODULE    = amstream.dll
-IMPORTS   = strmiids uuid ole32 advapi32
+IMPORTS   = strmiids strmbase uuid ole32 advapi32
 
 C_SRCS = \
 	amstream.c \
diff --git a/dlls/amstream/mediastreamfilter.c b/dlls/amstream/mediastreamfilter.c
index 0c72c77..d576b49 100644
--- a/dlls/amstream/mediastreamfilter.c
+++ b/dlls/amstream/mediastreamfilter.c
@@ -24,6 +24,9 @@
 
 #include "winbase.h"
 #include "wingdi.h"
+#include "dshow.h"
+
+#include "wine/strmbase.h"
 
 #include "amstream_private.h"
 #include "amstream.h"
@@ -33,18 +36,13 @@
 WINE_DEFAULT_DEBUG_CHANNEL(amstream);
 
 typedef struct {
-    IMediaStreamFilter IMediaStreamFilter_iface;
-    LONG ref;
-    CRITICAL_SECTION csFilter;
-    FILTER_STATE state;
-    REFERENCE_TIME rtStreamStart;
-    IReferenceClock * pClock;
-    FILTER_INFO filterInfo;
+    BaseFilter filter;
+
 } IMediaStreamFilterImpl;
 
 static inline IMediaStreamFilterImpl *impl_from_IMediaStreamFilter(IMediaStreamFilter *iface)
 {
-    return CONTAINING_RECORD(iface, IMediaStreamFilterImpl, IMediaStreamFilter_iface);
+    return CONTAINING_RECORD(iface, IMediaStreamFilterImpl, filter);
 }
 
 /*** IUnknown methods ***/
@@ -80,18 +78,13 @@ static HRESULT WINAPI MediaStreamFilterImpl_QueryInterface(IMediaStreamFilter *i
 
 static ULONG WINAPI MediaStreamFilterImpl_AddRef(IMediaStreamFilter *iface)
 {
-    IMediaStreamFilterImpl *This = impl_from_IMediaStreamFilter(iface);
-    ULONG refCount = InterlockedIncrement(&This->ref);
-
-    TRACE("(%p)->() AddRef from %d\n", iface, refCount - 1);
-
-    return refCount;
+    return BaseFilterImpl_AddRef((IBaseFilter*)iface);
 }
 
 static ULONG WINAPI MediaStreamFilterImpl_Release(IMediaStreamFilter *iface)
 {
     IMediaStreamFilterImpl *This = impl_from_IMediaStreamFilter(iface);
-    ULONG refCount = InterlockedDecrement(&This->ref);
+    ULONG refCount = BaseFilterImpl_Release((IBaseFilter*)iface);
 
     TRACE("(%p)->() Release from %d\n", iface, refCount + 1);
 
@@ -105,14 +98,10 @@ static ULONG WINAPI MediaStreamFilterImpl_Release(IMediaStreamFilter *iface)
 
 static HRESULT WINAPI MediaStreamFilterImpl_GetClassID(IMediaStreamFilter * iface, CLSID * pClsid)
 {
-    TRACE("(%p)->(%p)\n", iface, pClsid);
-
-    *pClsid = CLSID_MediaStreamFilter;
-
-    return S_OK;
+    return BaseFilterImpl_GetClassID((IBaseFilter*)iface, pClsid);
 }
 
-/*** IMediaFilter methods ***/
+/*** IBaseFilter methods ***/
 
 static HRESULT WINAPI MediaStreamFilterImpl_Stop(IMediaStreamFilter * iface)
 {
@@ -137,32 +126,22 @@ static HRESULT WINAPI MediaStreamFilterImpl_Run(IMediaStreamFilter * iface, REFE
 
 static HRESULT WINAPI MediaStreamFilterImpl_GetState(IMediaStreamFilter * iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState)
 {
-    FIXME("(%p)->(%d,%p): Stub!\n", iface, dwMilliSecsTimeout, pState);
-
-    return E_NOTIMPL;
+    return BaseFilterImpl_GetState((IBaseFilter*)iface, dwMilliSecsTimeout, pState);
 }
 
 static HRESULT WINAPI MediaStreamFilterImpl_SetSyncSource(IMediaStreamFilter * iface, IReferenceClock *pClock)
 {
-    TRACE("(%p)->(%p): Stub!\n", iface, pClock);
-
-    return E_NOTIMPL;
+    return BaseFilterImpl_SetSyncSource((IBaseFilter*)iface, pClock);
 }
 
 static HRESULT WINAPI MediaStreamFilterImpl_GetSyncSource(IMediaStreamFilter * iface, IReferenceClock **ppClock)
 {
-    FIXME("(%p)->(%p): Stub!\n", iface, ppClock);
-
-    return E_NOTIMPL;
+    return BaseFilterImpl_GetSyncSource((IBaseFilter*)iface, ppClock);
 }
 
-/*** IBaseFilter methods ***/
-
 static HRESULT WINAPI MediaStreamFilterImpl_EnumPins(IMediaStreamFilter * iface, IEnumPins **ppEnum)
 {
-    FIXME("(%p)->(%p): Stub!\n", iface, ppEnum);
-
-    return E_NOTIMPL;
+    return BaseFilterImpl_EnumPins((IBaseFilter*)iface, ppEnum);
 }
 
 static HRESULT WINAPI MediaStreamFilterImpl_FindPin(IMediaStreamFilter * iface, LPCWSTR Id, IPin **ppPin)
@@ -174,23 +153,17 @@ static HRESULT WINAPI MediaStreamFilterImpl_FindPin(IMediaStreamFilter * iface,
 
 static HRESULT WINAPI MediaStreamFilterImpl_QueryFilterInfo(IMediaStreamFilter * iface, FILTER_INFO *pInfo)
 {
-    FIXME("(%p)->(%p): Stub!\n", iface, pInfo);
-
-    return E_NOTIMPL;
+    return BaseFilterImpl_QueryFilterInfo((IBaseFilter*)iface, pInfo);
 }
 
 static HRESULT WINAPI MediaStreamFilterImpl_JoinFilterGraph(IMediaStreamFilter * iface, IFilterGraph *pGraph, LPCWSTR pName)
 {
-    FIXME("(%p)->(%p, %s): Stub!\n", iface, pGraph, debugstr_w(pName));
-
-    return E_NOTIMPL;
+    return BaseFilterImpl_JoinFilterGraph((IBaseFilter*)iface, pGraph, pName);
 }
 
 static HRESULT WINAPI MediaStreamFilterImpl_QueryVendorInfo(IMediaStreamFilter * iface, LPWSTR *pVendorInfo)
 {
-    FIXME("(%p)->(%p): Stub!\n", iface, pVendorInfo);
-
-    return E_NOTIMPL;
+    return BaseFilterImpl_QueryVendorInfo((IBaseFilter*)iface, pVendorInfo);
 }
 
 /*** IMediaStreamFilter methods ***/
@@ -286,6 +259,23 @@ static const IMediaStreamFilterVtbl MediaStreamFilter_Vtbl =
     MediaStreamFilterImpl_EndOfStream
 };
 
+static IPin* WINAPI MediaStreamFilterImpl_GetPin(BaseFilter *iface, int pos)
+{
+    /* No pins */
+    return NULL;
+}
+
+static LONG WINAPI MediaStreamFilterImpl_GetPinCount(BaseFilter *iface)
+{
+    /* No pins */
+    return 0;
+}
+
+static const BaseFilterFuncTable BaseFuncTable = {
+    MediaStreamFilterImpl_GetPin,
+    MediaStreamFilterImpl_GetPinCount
+};
+
 HRESULT MediaStreamFilter_create(IUnknown *pUnkOuter, void **ppObj)
 {
     IMediaStreamFilterImpl* object;
@@ -302,8 +292,7 @@ HRESULT MediaStreamFilter_create(IUnknown *pUnkOuter, void **ppObj)
         return E_OUTOFMEMORY;
     }
 
-    object->IMediaStreamFilter_iface.lpVtbl = &MediaStreamFilter_Vtbl;
-    object->ref = 1;
+    BaseFilter_Init(&object->filter, (IBaseFilterVtbl*)&MediaStreamFilter_Vtbl, &CLSID_MediaStreamFilter, (DWORD_PTR)(__FILE__ ": MediaStreamFilterImpl.csFilter"), &BaseFuncTable);
 
     *ppObj = object;
 




More information about the wine-cvs mailing list