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