|  | /*** Autogenerated by WIDL 0.1 from strmif.idl - Do not edit ***/ | 
|  | #include <rpc.h> | 
|  | #include <rpcndr.h> | 
|  |  | 
|  | #ifndef __WIDL_STRMIF_H | 
|  | #define __WIDL_STRMIF_H | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  | #include <objidl.h> | 
|  | #include <oaidl.h> | 
|  | #define CDEF_CLASS_DEFAULT 0x0001 | 
|  | #define CDEF_BYPASS_CLASS_MANAGER 0x0002 | 
|  | #define CDEF_CLASS_LEGACY  0x0004 | 
|  | #define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008 | 
|  | #ifndef __ICreateDevEnum_FWD_DEFINED__ | 
|  | #define __ICreateDevEnum_FWD_DEFINED__ | 
|  | typedef struct ICreateDevEnum ICreateDevEnum; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * ICreateDevEnum interface | 
|  | */ | 
|  | #ifndef __ICreateDevEnum_INTERFACE_DEFINED__ | 
|  | #define __ICreateDevEnum_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_ICreateDevEnum, 0x29840822, 0x5b84, 0x11d0, 0xbd,0x3b, 0x00,0xa0,0xc9,0x11,0xce,0x86); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct ICreateDevEnum : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE CreateClassEnumerator( | 
|  | REFCLSID clsidDeviceClass, | 
|  | IEnumMoniker** ppEnumMoniker, | 
|  | DWORD dwFlags) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct ICreateDevEnumVtbl ICreateDevEnumVtbl; | 
|  | struct ICreateDevEnum { | 
|  | const ICreateDevEnumVtbl* lpVtbl; | 
|  | }; | 
|  | struct ICreateDevEnumVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | ICreateDevEnum* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | ICreateDevEnum* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | ICreateDevEnum* This); | 
|  |  | 
|  | /*** ICreateDevEnum methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *CreateClassEnumerator)( | 
|  | ICreateDevEnum* This, | 
|  | REFCLSID clsidDeviceClass, | 
|  | IEnumMoniker** ppEnumMoniker, | 
|  | DWORD dwFlags); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define ICreateDevEnum_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define ICreateDevEnum_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define ICreateDevEnum_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** ICreateDevEnum methods ***/ | 
|  | #define ICreateDevEnum_CreateClassEnumerator(p,a,b,c) (p)->lpVtbl->CreateClassEnumerator(p,a,b,c) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define ICreateDevEnum_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** ICreateDevEnum methods ***/ \ | 
|  | STDMETHOD_(HRESULT,CreateClassEnumerator)(THIS_ REFCLSID clsidDeviceClass, IEnumMoniker** ppEnumMoniker, DWORD dwFlags) PURE; | 
|  |  | 
|  | HRESULT CALLBACK ICreateDevEnum_CreateClassEnumerator_Proxy( | 
|  | ICreateDevEnum* This, | 
|  | REFCLSID clsidDeviceClass, | 
|  | IEnumMoniker** ppEnumMoniker, | 
|  | DWORD dwFlags); | 
|  | void __RPC_STUB ICreateDevEnum_CreateClassEnumerator_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __ICreateDevEnum_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #define CHARS_IN_GUID 39 | 
|  | #undef GetTimeFormat | 
|  | typedef struct _AMMediaType { | 
|  | GUID majortype; | 
|  | GUID subtype; | 
|  | BOOL bFixedSizeSamples; | 
|  | BOOL bTemporalCompression; | 
|  | ULONG lSampleSize; | 
|  | GUID formattype; | 
|  | IUnknown *pUnk; | 
|  | ULONG cbFormat; | 
|  | BYTE *pbFormat; | 
|  | } AM_MEDIA_TYPE; | 
|  |  | 
|  | typedef enum _PinDirection { | 
|  | PINDIR_INPUT, | 
|  | PINDIR_OUTPUT | 
|  | } PIN_DIRECTION; | 
|  |  | 
|  | #define MAX_PIN_NAME    128 | 
|  | #define MAX_FILTER_NAME 128 | 
|  | typedef LONGLONG REFERENCE_TIME; | 
|  |  | 
|  | typedef double REFTIME; | 
|  |  | 
|  | typedef DWORD_PTR HSEMAPHORE; | 
|  |  | 
|  | typedef DWORD_PTR HEVENT; | 
|  |  | 
|  | typedef struct _AllocatorProperties { | 
|  | long cBuffers; | 
|  | long cbBuffer; | 
|  | long cbAlign; | 
|  | long cbPrefix; | 
|  | } ALLOCATOR_PROPERTIES; | 
|  |  | 
|  | #ifndef __IAMovieSetup_FWD_DEFINED__ | 
|  | #define __IAMovieSetup_FWD_DEFINED__ | 
|  | typedef struct IAMovieSetup IAMovieSetup; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IEnumFilters_FWD_DEFINED__ | 
|  | #define __IEnumFilters_FWD_DEFINED__ | 
|  | typedef struct IEnumFilters IEnumFilters; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IEnumMediaTypes_FWD_DEFINED__ | 
|  | #define __IEnumMediaTypes_FWD_DEFINED__ | 
|  | typedef struct IEnumMediaTypes IEnumMediaTypes; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IEnumPins_FWD_DEFINED__ | 
|  | #define __IEnumPins_FWD_DEFINED__ | 
|  | typedef struct IEnumPins IEnumPins; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IBaseFilter_FWD_DEFINED__ | 
|  | #define __IBaseFilter_FWD_DEFINED__ | 
|  | typedef struct IBaseFilter IBaseFilter; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IFilterGraph_FWD_DEFINED__ | 
|  | #define __IFilterGraph_FWD_DEFINED__ | 
|  | typedef struct IFilterGraph IFilterGraph; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IMediaFilter_FWD_DEFINED__ | 
|  | #define __IMediaFilter_FWD_DEFINED__ | 
|  | typedef struct IMediaFilter IMediaFilter; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IMediaSample_FWD_DEFINED__ | 
|  | #define __IMediaSample_FWD_DEFINED__ | 
|  | typedef struct IMediaSample IMediaSample; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IMemAllocator_FWD_DEFINED__ | 
|  | #define __IMemAllocator_FWD_DEFINED__ | 
|  | typedef struct IMemAllocator IMemAllocator; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IMemAllocatorCallbackTemp_FWD_DEFINED__ | 
|  | #define __IMemAllocatorCallbackTemp_FWD_DEFINED__ | 
|  | typedef struct IMemAllocatorCallbackTemp IMemAllocatorCallbackTemp; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__ | 
|  | #define __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__ | 
|  | typedef struct IMemAllocatorNotifyCallbackTemp IMemAllocatorNotifyCallbackTemp; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IMemInputPin_FWD_DEFINED__ | 
|  | #define __IMemInputPin_FWD_DEFINED__ | 
|  | typedef struct IMemInputPin IMemInputPin; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IPin_FWD_DEFINED__ | 
|  | #define __IPin_FWD_DEFINED__ | 
|  | typedef struct IPin IPin; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IReferenceClock_FWD_DEFINED__ | 
|  | #define __IReferenceClock_FWD_DEFINED__ | 
|  | typedef struct IReferenceClock IReferenceClock; | 
|  | #endif | 
|  |  | 
|  | typedef struct _PinInfo { | 
|  | IBaseFilter *pFilter; | 
|  | PIN_DIRECTION dir; | 
|  | WCHAR achName[128]; | 
|  | } PIN_INFO; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IPin interface | 
|  | */ | 
|  | #ifndef __IPin_INTERFACE_DEFINED__ | 
|  | #define __IPin_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IPin, 0x56a86891, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IPin : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Connect( | 
|  | IPin* pReceivePin, | 
|  | const AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ReceiveConnection( | 
|  | IPin* pConnector, | 
|  | const AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Disconnect( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ConnectedTo( | 
|  | IPin** pPin) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ConnectionMediaType( | 
|  | AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE QueryPinInfo( | 
|  | PIN_INFO* pInfo) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE QueryDirection( | 
|  | PIN_DIRECTION* pPinDir) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE QueryId( | 
|  | LPWSTR* Id) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE QueryAccept( | 
|  | const AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE EnumMediaTypes( | 
|  | IEnumMediaTypes** ppEnum) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE QueryInternalConnections( | 
|  | IPin** apPin, | 
|  | ULONG* nPin) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE EndOfStream( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE BeginFlush( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE EndFlush( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE NewSegment( | 
|  | REFERENCE_TIME tStart, | 
|  | REFERENCE_TIME tStop, | 
|  | double dRate) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IPinVtbl IPinVtbl; | 
|  | struct IPin { | 
|  | const IPinVtbl* lpVtbl; | 
|  | }; | 
|  | struct IPinVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IPin* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IPin* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IPin* This); | 
|  |  | 
|  | /*** IPin methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Connect)( | 
|  | IPin* This, | 
|  | IPin* pReceivePin, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ReceiveConnection)( | 
|  | IPin* This, | 
|  | IPin* pConnector, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Disconnect)( | 
|  | IPin* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ConnectedTo)( | 
|  | IPin* This, | 
|  | IPin** pPin); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ConnectionMediaType)( | 
|  | IPin* This, | 
|  | AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *QueryPinInfo)( | 
|  | IPin* This, | 
|  | PIN_INFO* pInfo); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *QueryDirection)( | 
|  | IPin* This, | 
|  | PIN_DIRECTION* pPinDir); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *QueryId)( | 
|  | IPin* This, | 
|  | LPWSTR* Id); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *QueryAccept)( | 
|  | IPin* This, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EnumMediaTypes)( | 
|  | IPin* This, | 
|  | IEnumMediaTypes** ppEnum); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInternalConnections)( | 
|  | IPin* This, | 
|  | IPin** apPin, | 
|  | ULONG* nPin); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EndOfStream)( | 
|  | IPin* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *BeginFlush)( | 
|  | IPin* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EndFlush)( | 
|  | IPin* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *NewSegment)( | 
|  | IPin* This, | 
|  | REFERENCE_TIME tStart, | 
|  | REFERENCE_TIME tStop, | 
|  | double dRate); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IPin_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IPin_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IPin_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IPin methods ***/ | 
|  | #define IPin_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b) | 
|  | #define IPin_ReceiveConnection(p,a,b) (p)->lpVtbl->ReceiveConnection(p,a,b) | 
|  | #define IPin_Disconnect(p) (p)->lpVtbl->Disconnect(p) | 
|  | #define IPin_ConnectedTo(p,a) (p)->lpVtbl->ConnectedTo(p,a) | 
|  | #define IPin_ConnectionMediaType(p,a) (p)->lpVtbl->ConnectionMediaType(p,a) | 
|  | #define IPin_QueryPinInfo(p,a) (p)->lpVtbl->QueryPinInfo(p,a) | 
|  | #define IPin_QueryDirection(p,a) (p)->lpVtbl->QueryDirection(p,a) | 
|  | #define IPin_QueryId(p,a) (p)->lpVtbl->QueryId(p,a) | 
|  | #define IPin_QueryAccept(p,a) (p)->lpVtbl->QueryAccept(p,a) | 
|  | #define IPin_EnumMediaTypes(p,a) (p)->lpVtbl->EnumMediaTypes(p,a) | 
|  | #define IPin_QueryInternalConnections(p,a,b) (p)->lpVtbl->QueryInternalConnections(p,a,b) | 
|  | #define IPin_EndOfStream(p) (p)->lpVtbl->EndOfStream(p) | 
|  | #define IPin_BeginFlush(p) (p)->lpVtbl->BeginFlush(p) | 
|  | #define IPin_EndFlush(p) (p)->lpVtbl->EndFlush(p) | 
|  | #define IPin_NewSegment(p,a,b,c) (p)->lpVtbl->NewSegment(p,a,b,c) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IPin_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IPin methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Connect)(THIS_ IPin* pReceivePin, const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,ReceiveConnection)(THIS_ IPin* pConnector, const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,Disconnect)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,ConnectedTo)(THIS_ IPin** pPin) PURE; \ | 
|  | STDMETHOD_(HRESULT,ConnectionMediaType)(THIS_ AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,QueryPinInfo)(THIS_ PIN_INFO* pInfo) PURE; \ | 
|  | STDMETHOD_(HRESULT,QueryDirection)(THIS_ PIN_DIRECTION* pPinDir) PURE; \ | 
|  | STDMETHOD_(HRESULT,QueryId)(THIS_ LPWSTR* Id) PURE; \ | 
|  | STDMETHOD_(HRESULT,QueryAccept)(THIS_ const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,EnumMediaTypes)(THIS_ IEnumMediaTypes** ppEnum) PURE; \ | 
|  | STDMETHOD_(HRESULT,QueryInternalConnections)(THIS_ IPin** apPin, ULONG* nPin) PURE; \ | 
|  | STDMETHOD_(HRESULT,EndOfStream)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,BeginFlush)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,EndFlush)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,NewSegment)(THIS_ REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IPin_Connect_Proxy( | 
|  | IPin* This, | 
|  | IPin* pReceivePin, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IPin_Connect_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_ReceiveConnection_Proxy( | 
|  | IPin* This, | 
|  | IPin* pConnector, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IPin_ReceiveConnection_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_Disconnect_Proxy( | 
|  | IPin* This); | 
|  | void __RPC_STUB IPin_Disconnect_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_ConnectedTo_Proxy( | 
|  | IPin* This, | 
|  | IPin** pPin); | 
|  | void __RPC_STUB IPin_ConnectedTo_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_ConnectionMediaType_Proxy( | 
|  | IPin* This, | 
|  | AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IPin_ConnectionMediaType_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_QueryPinInfo_Proxy( | 
|  | IPin* This, | 
|  | PIN_INFO* pInfo); | 
|  | void __RPC_STUB IPin_QueryPinInfo_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_QueryDirection_Proxy( | 
|  | IPin* This, | 
|  | PIN_DIRECTION* pPinDir); | 
|  | void __RPC_STUB IPin_QueryDirection_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_QueryId_Proxy( | 
|  | IPin* This, | 
|  | LPWSTR* Id); | 
|  | void __RPC_STUB IPin_QueryId_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_QueryAccept_Proxy( | 
|  | IPin* This, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IPin_QueryAccept_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_EnumMediaTypes_Proxy( | 
|  | IPin* This, | 
|  | IEnumMediaTypes** ppEnum); | 
|  | void __RPC_STUB IPin_EnumMediaTypes_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_QueryInternalConnections_Proxy( | 
|  | IPin* This, | 
|  | IPin** apPin, | 
|  | ULONG* nPin); | 
|  | void __RPC_STUB IPin_QueryInternalConnections_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_EndOfStream_Proxy( | 
|  | IPin* This); | 
|  | void __RPC_STUB IPin_EndOfStream_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_BeginFlush_Proxy( | 
|  | IPin* This); | 
|  | void __RPC_STUB IPin_BeginFlush_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_EndFlush_Proxy( | 
|  | IPin* This); | 
|  | void __RPC_STUB IPin_EndFlush_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPin_NewSegment_Proxy( | 
|  | IPin* This, | 
|  | REFERENCE_TIME tStart, | 
|  | REFERENCE_TIME tStop, | 
|  | double dRate); | 
|  | void __RPC_STUB IPin_NewSegment_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IPin_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IPin *PPIN; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IEnumPins interface | 
|  | */ | 
|  | #ifndef __IEnumPins_INTERFACE_DEFINED__ | 
|  | #define __IEnumPins_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IEnumPins, 0x56a86892, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IEnumPins : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Next( | 
|  | ULONG cPins, | 
|  | IPin** ppPins, | 
|  | ULONG* pcFetched) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Skip( | 
|  | ULONG cPins) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Reset( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Clone( | 
|  | IEnumPins** ppEnum) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IEnumPinsVtbl IEnumPinsVtbl; | 
|  | struct IEnumPins { | 
|  | const IEnumPinsVtbl* lpVtbl; | 
|  | }; | 
|  | struct IEnumPinsVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IEnumPins* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IEnumPins* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IEnumPins* This); | 
|  |  | 
|  | /*** IEnumPins methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Next)( | 
|  | IEnumPins* This, | 
|  | ULONG cPins, | 
|  | IPin** ppPins, | 
|  | ULONG* pcFetched); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Skip)( | 
|  | IEnumPins* This, | 
|  | ULONG cPins); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Reset)( | 
|  | IEnumPins* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Clone)( | 
|  | IEnumPins* This, | 
|  | IEnumPins** ppEnum); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IEnumPins_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IEnumPins_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IEnumPins_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IEnumPins methods ***/ | 
|  | #define IEnumPins_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
|  | #define IEnumPins_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
|  | #define IEnumPins_Reset(p) (p)->lpVtbl->Reset(p) | 
|  | #define IEnumPins_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IEnumPins_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IEnumPins methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Next)(THIS_ ULONG cPins, IPin** ppPins, ULONG* pcFetched) PURE; \ | 
|  | STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cPins) PURE; \ | 
|  | STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Clone)(THIS_ IEnumPins** ppEnum) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IEnumPins_Next_Proxy( | 
|  | IEnumPins* This, | 
|  | ULONG cPins, | 
|  | IPin** ppPins, | 
|  | ULONG* pcFetched); | 
|  | void __RPC_STUB IEnumPins_Next_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumPins_Skip_Proxy( | 
|  | IEnumPins* This, | 
|  | ULONG cPins); | 
|  | void __RPC_STUB IEnumPins_Skip_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumPins_Reset_Proxy( | 
|  | IEnumPins* This); | 
|  | void __RPC_STUB IEnumPins_Reset_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumPins_Clone_Proxy( | 
|  | IEnumPins* This, | 
|  | IEnumPins** ppEnum); | 
|  | void __RPC_STUB IEnumPins_Clone_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IEnumPins_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IEnumPins *PENUMPINS; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IEnumMediaTypes interface | 
|  | */ | 
|  | #ifndef __IEnumMediaTypes_INTERFACE_DEFINED__ | 
|  | #define __IEnumMediaTypes_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IEnumMediaTypes, 0x89c31040, 0x846b, 0x11ce, 0x97,0xd3, 0x00,0xaa,0x00,0x55,0x59,0x5a); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IEnumMediaTypes : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Next( | 
|  | ULONG cMediaTypes, | 
|  | AM_MEDIA_TYPE** ppMediaTypes, | 
|  | ULONG* pcFetched) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Skip( | 
|  | ULONG cMediaTypes) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Reset( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Clone( | 
|  | IEnumMediaTypes** ppEnum) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IEnumMediaTypesVtbl IEnumMediaTypesVtbl; | 
|  | struct IEnumMediaTypes { | 
|  | const IEnumMediaTypesVtbl* lpVtbl; | 
|  | }; | 
|  | struct IEnumMediaTypesVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IEnumMediaTypes* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IEnumMediaTypes* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IEnumMediaTypes* This); | 
|  |  | 
|  | /*** IEnumMediaTypes methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Next)( | 
|  | IEnumMediaTypes* This, | 
|  | ULONG cMediaTypes, | 
|  | AM_MEDIA_TYPE** ppMediaTypes, | 
|  | ULONG* pcFetched); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Skip)( | 
|  | IEnumMediaTypes* This, | 
|  | ULONG cMediaTypes); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Reset)( | 
|  | IEnumMediaTypes* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Clone)( | 
|  | IEnumMediaTypes* This, | 
|  | IEnumMediaTypes** ppEnum); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IEnumMediaTypes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IEnumMediaTypes_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IEnumMediaTypes_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IEnumMediaTypes methods ***/ | 
|  | #define IEnumMediaTypes_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
|  | #define IEnumMediaTypes_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
|  | #define IEnumMediaTypes_Reset(p) (p)->lpVtbl->Reset(p) | 
|  | #define IEnumMediaTypes_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IEnumMediaTypes_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IEnumMediaTypes methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Next)(THIS_ ULONG cMediaTypes, AM_MEDIA_TYPE** ppMediaTypes, ULONG* pcFetched) PURE; \ | 
|  | STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cMediaTypes) PURE; \ | 
|  | STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Clone)(THIS_ IEnumMediaTypes** ppEnum) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IEnumMediaTypes_Next_Proxy( | 
|  | IEnumMediaTypes* This, | 
|  | ULONG cMediaTypes, | 
|  | AM_MEDIA_TYPE** ppMediaTypes, | 
|  | ULONG* pcFetched); | 
|  | void __RPC_STUB IEnumMediaTypes_Next_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumMediaTypes_Skip_Proxy( | 
|  | IEnumMediaTypes* This, | 
|  | ULONG cMediaTypes); | 
|  | void __RPC_STUB IEnumMediaTypes_Skip_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumMediaTypes_Reset_Proxy( | 
|  | IEnumMediaTypes* This); | 
|  | void __RPC_STUB IEnumMediaTypes_Reset_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumMediaTypes_Clone_Proxy( | 
|  | IEnumMediaTypes* This, | 
|  | IEnumMediaTypes** ppEnum); | 
|  | void __RPC_STUB IEnumMediaTypes_Clone_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IEnumMediaTypes_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IEnumMediaTypes *PENUMMEDIATYPES; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IFilterGraph interface | 
|  | */ | 
|  | #ifndef __IFilterGraph_INTERFACE_DEFINED__ | 
|  | #define __IFilterGraph_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IFilterGraph, 0x56a8689f, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IFilterGraph : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE AddFilter( | 
|  | IBaseFilter* pFilter, | 
|  | LPCWSTR pName) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RemoveFilter( | 
|  | IBaseFilter* pFilter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE EnumFilters( | 
|  | IEnumFilters** ppEnum) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE FindFilterByName( | 
|  | LPCWSTR pName, | 
|  | IBaseFilter** ppFilter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ConnectDirect( | 
|  | IPin* ppinOut, | 
|  | IPin* ppinIn, | 
|  | const AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Reconnect( | 
|  | IPin* ppin) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Disconnect( | 
|  | IPin* ppin) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetDefaultSyncSource( | 
|  | ) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IFilterGraphVtbl IFilterGraphVtbl; | 
|  | struct IFilterGraph { | 
|  | const IFilterGraphVtbl* lpVtbl; | 
|  | }; | 
|  | struct IFilterGraphVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IFilterGraph* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IFilterGraph* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IFilterGraph* This); | 
|  |  | 
|  | /*** IFilterGraph methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *AddFilter)( | 
|  | IFilterGraph* This, | 
|  | IBaseFilter* pFilter, | 
|  | LPCWSTR pName); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RemoveFilter)( | 
|  | IFilterGraph* This, | 
|  | IBaseFilter* pFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EnumFilters)( | 
|  | IFilterGraph* This, | 
|  | IEnumFilters** ppEnum); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *FindFilterByName)( | 
|  | IFilterGraph* This, | 
|  | LPCWSTR pName, | 
|  | IBaseFilter** ppFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ConnectDirect)( | 
|  | IFilterGraph* This, | 
|  | IPin* ppinOut, | 
|  | IPin* ppinIn, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Reconnect)( | 
|  | IFilterGraph* This, | 
|  | IPin* ppin); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Disconnect)( | 
|  | IFilterGraph* This, | 
|  | IPin* ppin); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetDefaultSyncSource)( | 
|  | IFilterGraph* This); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IFilterGraph_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IFilterGraph_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IFilterGraph_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IFilterGraph methods ***/ | 
|  | #define IFilterGraph_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b) | 
|  | #define IFilterGraph_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a) | 
|  | #define IFilterGraph_EnumFilters(p,a) (p)->lpVtbl->EnumFilters(p,a) | 
|  | #define IFilterGraph_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b) | 
|  | #define IFilterGraph_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c) | 
|  | #define IFilterGraph_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a) | 
|  | #define IFilterGraph_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a) | 
|  | #define IFilterGraph_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IFilterGraph_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IFilterGraph methods ***/ \ | 
|  | STDMETHOD_(HRESULT,AddFilter)(THIS_ IBaseFilter* pFilter, LPCWSTR pName) PURE; \ | 
|  | STDMETHOD_(HRESULT,RemoveFilter)(THIS_ IBaseFilter* pFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,EnumFilters)(THIS_ IEnumFilters** ppEnum) PURE; \ | 
|  | STDMETHOD_(HRESULT,FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter** ppFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,ConnectDirect)(THIS_ IPin* ppinOut, IPin* ppinIn, const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* ppin) PURE; \ | 
|  | STDMETHOD_(HRESULT,Disconnect)(THIS_ IPin* ppin) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetDefaultSyncSource)(THIS) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IFilterGraph_AddFilter_Proxy( | 
|  | IFilterGraph* This, | 
|  | IBaseFilter* pFilter, | 
|  | LPCWSTR pName); | 
|  | void __RPC_STUB IFilterGraph_AddFilter_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterGraph_RemoveFilter_Proxy( | 
|  | IFilterGraph* This, | 
|  | IBaseFilter* pFilter); | 
|  | void __RPC_STUB IFilterGraph_RemoveFilter_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterGraph_EnumFilters_Proxy( | 
|  | IFilterGraph* This, | 
|  | IEnumFilters** ppEnum); | 
|  | void __RPC_STUB IFilterGraph_EnumFilters_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterGraph_FindFilterByName_Proxy( | 
|  | IFilterGraph* This, | 
|  | LPCWSTR pName, | 
|  | IBaseFilter** ppFilter); | 
|  | void __RPC_STUB IFilterGraph_FindFilterByName_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterGraph_ConnectDirect_Proxy( | 
|  | IFilterGraph* This, | 
|  | IPin* ppinOut, | 
|  | IPin* ppinIn, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IFilterGraph_ConnectDirect_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterGraph_Reconnect_Proxy( | 
|  | IFilterGraph* This, | 
|  | IPin* ppin); | 
|  | void __RPC_STUB IFilterGraph_Reconnect_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterGraph_Disconnect_Proxy( | 
|  | IFilterGraph* This, | 
|  | IPin* ppin); | 
|  | void __RPC_STUB IFilterGraph_Disconnect_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterGraph_SetDefaultSyncSource_Proxy( | 
|  | IFilterGraph* This); | 
|  | void __RPC_STUB IFilterGraph_SetDefaultSyncSource_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IFilterGraph_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IFilterGraph *PFILTERGRAPH; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IEnumFilters interface | 
|  | */ | 
|  | #ifndef __IEnumFilters_INTERFACE_DEFINED__ | 
|  | #define __IEnumFilters_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IEnumFilters, 0x56a86893, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IEnumFilters : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Next( | 
|  | ULONG cFilters, | 
|  | IBaseFilter** ppFilter, | 
|  | ULONG* pcFetched) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Skip( | 
|  | ULONG cFilters) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Reset( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Clone( | 
|  | IEnumFilters** ppEnum) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IEnumFiltersVtbl IEnumFiltersVtbl; | 
|  | struct IEnumFilters { | 
|  | const IEnumFiltersVtbl* lpVtbl; | 
|  | }; | 
|  | struct IEnumFiltersVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IEnumFilters* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IEnumFilters* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IEnumFilters* This); | 
|  |  | 
|  | /*** IEnumFilters methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Next)( | 
|  | IEnumFilters* This, | 
|  | ULONG cFilters, | 
|  | IBaseFilter** ppFilter, | 
|  | ULONG* pcFetched); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Skip)( | 
|  | IEnumFilters* This, | 
|  | ULONG cFilters); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Reset)( | 
|  | IEnumFilters* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Clone)( | 
|  | IEnumFilters* This, | 
|  | IEnumFilters** ppEnum); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IEnumFilters_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IEnumFilters_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IEnumFilters_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IEnumFilters methods ***/ | 
|  | #define IEnumFilters_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
|  | #define IEnumFilters_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
|  | #define IEnumFilters_Reset(p) (p)->lpVtbl->Reset(p) | 
|  | #define IEnumFilters_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IEnumFilters_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IEnumFilters methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Next)(THIS_ ULONG cFilters, IBaseFilter** ppFilter, ULONG* pcFetched) PURE; \ | 
|  | STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cFilters) PURE; \ | 
|  | STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Clone)(THIS_ IEnumFilters** ppEnum) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IEnumFilters_Next_Proxy( | 
|  | IEnumFilters* This, | 
|  | ULONG cFilters, | 
|  | IBaseFilter** ppFilter, | 
|  | ULONG* pcFetched); | 
|  | void __RPC_STUB IEnumFilters_Next_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumFilters_Skip_Proxy( | 
|  | IEnumFilters* This, | 
|  | ULONG cFilters); | 
|  | void __RPC_STUB IEnumFilters_Skip_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumFilters_Reset_Proxy( | 
|  | IEnumFilters* This); | 
|  | void __RPC_STUB IEnumFilters_Reset_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumFilters_Clone_Proxy( | 
|  | IEnumFilters* This, | 
|  | IEnumFilters** ppEnum); | 
|  | void __RPC_STUB IEnumFilters_Clone_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IEnumFilters_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IEnumFilters *PENUMFILTERS; | 
|  |  | 
|  | typedef enum _FilterState { | 
|  | State_Stopped, | 
|  | State_Paused, | 
|  | State_Running | 
|  | } FILTER_STATE; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IMediaFilter interface | 
|  | */ | 
|  | #ifndef __IMediaFilter_INTERFACE_DEFINED__ | 
|  | #define __IMediaFilter_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IMediaFilter, 0x56a86899, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IMediaFilter : public IPersist | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Stop( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Pause( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Run( | 
|  | REFERENCE_TIME tStart) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetState( | 
|  | DWORD dwMilliSecsTimeout, | 
|  | FILTER_STATE* State) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetSyncSource( | 
|  | IReferenceClock* pClock) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetSyncSource( | 
|  | IReferenceClock** pClock) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IMediaFilterVtbl IMediaFilterVtbl; | 
|  | struct IMediaFilter { | 
|  | const IMediaFilterVtbl* lpVtbl; | 
|  | }; | 
|  | struct IMediaFilterVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IMediaFilter* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IMediaFilter* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IMediaFilter* This); | 
|  |  | 
|  | /*** IPersist methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *GetClassID)( | 
|  | IMediaFilter* This, | 
|  | CLSID* pClassID); | 
|  |  | 
|  | /*** IMediaFilter methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Stop)( | 
|  | IMediaFilter* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Pause)( | 
|  | IMediaFilter* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Run)( | 
|  | IMediaFilter* This, | 
|  | REFERENCE_TIME tStart); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetState)( | 
|  | IMediaFilter* This, | 
|  | DWORD dwMilliSecsTimeout, | 
|  | FILTER_STATE* State); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetSyncSource)( | 
|  | IMediaFilter* This, | 
|  | IReferenceClock* pClock); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetSyncSource)( | 
|  | IMediaFilter* This, | 
|  | IReferenceClock** pClock); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IMediaFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IMediaFilter_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IMediaFilter_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IPersist methods ***/ | 
|  | #define IMediaFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) | 
|  | /*** IMediaFilter methods ***/ | 
|  | #define IMediaFilter_Stop(p) (p)->lpVtbl->Stop(p) | 
|  | #define IMediaFilter_Pause(p) (p)->lpVtbl->Pause(p) | 
|  | #define IMediaFilter_Run(p,a) (p)->lpVtbl->Run(p,a) | 
|  | #define IMediaFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b) | 
|  | #define IMediaFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a) | 
|  | #define IMediaFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IMediaFilter_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IPersist methods ***/ \ | 
|  | STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \ | 
|  | /*** IMediaFilter methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Stop)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Pause)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Run)(THIS_ REFERENCE_TIME tStart) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetState)(THIS_ DWORD dwMilliSecsTimeout, FILTER_STATE* State) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetSyncSource)(THIS_ IReferenceClock* pClock) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetSyncSource)(THIS_ IReferenceClock** pClock) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IMediaFilter_Stop_Proxy( | 
|  | IMediaFilter* This); | 
|  | void __RPC_STUB IMediaFilter_Stop_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaFilter_Pause_Proxy( | 
|  | IMediaFilter* This); | 
|  | void __RPC_STUB IMediaFilter_Pause_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaFilter_Run_Proxy( | 
|  | IMediaFilter* This, | 
|  | REFERENCE_TIME tStart); | 
|  | void __RPC_STUB IMediaFilter_Run_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaFilter_GetState_Proxy( | 
|  | IMediaFilter* This, | 
|  | DWORD dwMilliSecsTimeout, | 
|  | FILTER_STATE* State); | 
|  | void __RPC_STUB IMediaFilter_GetState_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaFilter_SetSyncSource_Proxy( | 
|  | IMediaFilter* This, | 
|  | IReferenceClock* pClock); | 
|  | void __RPC_STUB IMediaFilter_SetSyncSource_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaFilter_GetSyncSource_Proxy( | 
|  | IMediaFilter* This, | 
|  | IReferenceClock** pClock); | 
|  | void __RPC_STUB IMediaFilter_GetSyncSource_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IMediaFilter_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IMediaFilter *PMEDIAFILTER; | 
|  |  | 
|  | typedef struct _FilterInfo { | 
|  | WCHAR achName[128]; | 
|  | IFilterGraph *pGraph; | 
|  | } FILTER_INFO; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IBaseFilter interface | 
|  | */ | 
|  | #ifndef __IBaseFilter_INTERFACE_DEFINED__ | 
|  | #define __IBaseFilter_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IBaseFilter, 0x56a86895, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IBaseFilter : public IMediaFilter | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE EnumPins( | 
|  | IEnumPins** ppEnum) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE FindPin( | 
|  | LPCWSTR Id, | 
|  | IPin** ppPin) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE QueryFilterInfo( | 
|  | FILTER_INFO* pInfo) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE JoinFilterGraph( | 
|  | IFilterGraph* pGraph, | 
|  | LPCWSTR pName) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE QueryVendorInfo( | 
|  | LPWSTR* pVendorInfo) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IBaseFilterVtbl IBaseFilterVtbl; | 
|  | struct IBaseFilter { | 
|  | const IBaseFilterVtbl* lpVtbl; | 
|  | }; | 
|  | struct IBaseFilterVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IBaseFilter* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IBaseFilter* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IBaseFilter* This); | 
|  |  | 
|  | /*** IPersist methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *GetClassID)( | 
|  | IBaseFilter* This, | 
|  | CLSID* pClassID); | 
|  |  | 
|  | /*** IMediaFilter methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Stop)( | 
|  | IBaseFilter* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Pause)( | 
|  | IBaseFilter* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Run)( | 
|  | IBaseFilter* This, | 
|  | REFERENCE_TIME tStart); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetState)( | 
|  | IBaseFilter* This, | 
|  | DWORD dwMilliSecsTimeout, | 
|  | FILTER_STATE* State); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetSyncSource)( | 
|  | IBaseFilter* This, | 
|  | IReferenceClock* pClock); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetSyncSource)( | 
|  | IBaseFilter* This, | 
|  | IReferenceClock** pClock); | 
|  |  | 
|  | /*** IBaseFilter methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *EnumPins)( | 
|  | IBaseFilter* This, | 
|  | IEnumPins** ppEnum); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *FindPin)( | 
|  | IBaseFilter* This, | 
|  | LPCWSTR Id, | 
|  | IPin** ppPin); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *QueryFilterInfo)( | 
|  | IBaseFilter* This, | 
|  | FILTER_INFO* pInfo); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *JoinFilterGraph)( | 
|  | IBaseFilter* This, | 
|  | IFilterGraph* pGraph, | 
|  | LPCWSTR pName); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *QueryVendorInfo)( | 
|  | IBaseFilter* This, | 
|  | LPWSTR* pVendorInfo); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IBaseFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IBaseFilter_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IBaseFilter_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IPersist methods ***/ | 
|  | #define IBaseFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) | 
|  | /*** IMediaFilter methods ***/ | 
|  | #define IBaseFilter_Stop(p) (p)->lpVtbl->Stop(p) | 
|  | #define IBaseFilter_Pause(p) (p)->lpVtbl->Pause(p) | 
|  | #define IBaseFilter_Run(p,a) (p)->lpVtbl->Run(p,a) | 
|  | #define IBaseFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b) | 
|  | #define IBaseFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a) | 
|  | #define IBaseFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a) | 
|  | /*** IBaseFilter methods ***/ | 
|  | #define IBaseFilter_EnumPins(p,a) (p)->lpVtbl->EnumPins(p,a) | 
|  | #define IBaseFilter_FindPin(p,a,b) (p)->lpVtbl->FindPin(p,a,b) | 
|  | #define IBaseFilter_QueryFilterInfo(p,a) (p)->lpVtbl->QueryFilterInfo(p,a) | 
|  | #define IBaseFilter_JoinFilterGraph(p,a,b) (p)->lpVtbl->JoinFilterGraph(p,a,b) | 
|  | #define IBaseFilter_QueryVendorInfo(p,a) (p)->lpVtbl->QueryVendorInfo(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IBaseFilter_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IPersist methods ***/ \ | 
|  | STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \ | 
|  | /*** IMediaFilter methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Stop)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Pause)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Run)(THIS_ REFERENCE_TIME tStart) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetState)(THIS_ DWORD dwMilliSecsTimeout, FILTER_STATE* State) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetSyncSource)(THIS_ IReferenceClock* pClock) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetSyncSource)(THIS_ IReferenceClock** pClock) PURE; \ | 
|  | /*** IBaseFilter methods ***/ \ | 
|  | STDMETHOD_(HRESULT,EnumPins)(THIS_ IEnumPins** ppEnum) PURE; \ | 
|  | STDMETHOD_(HRESULT,FindPin)(THIS_ LPCWSTR Id, IPin** ppPin) PURE; \ | 
|  | STDMETHOD_(HRESULT,QueryFilterInfo)(THIS_ FILTER_INFO* pInfo) PURE; \ | 
|  | STDMETHOD_(HRESULT,JoinFilterGraph)(THIS_ IFilterGraph* pGraph, LPCWSTR pName) PURE; \ | 
|  | STDMETHOD_(HRESULT,QueryVendorInfo)(THIS_ LPWSTR* pVendorInfo) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IBaseFilter_EnumPins_Proxy( | 
|  | IBaseFilter* This, | 
|  | IEnumPins** ppEnum); | 
|  | void __RPC_STUB IBaseFilter_EnumPins_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IBaseFilter_FindPin_Proxy( | 
|  | IBaseFilter* This, | 
|  | LPCWSTR Id, | 
|  | IPin** ppPin); | 
|  | void __RPC_STUB IBaseFilter_FindPin_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IBaseFilter_QueryFilterInfo_Proxy( | 
|  | IBaseFilter* This, | 
|  | FILTER_INFO* pInfo); | 
|  | void __RPC_STUB IBaseFilter_QueryFilterInfo_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IBaseFilter_JoinFilterGraph_Proxy( | 
|  | IBaseFilter* This, | 
|  | IFilterGraph* pGraph, | 
|  | LPCWSTR pName); | 
|  | void __RPC_STUB IBaseFilter_JoinFilterGraph_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IBaseFilter_QueryVendorInfo_Proxy( | 
|  | IBaseFilter* This, | 
|  | LPWSTR* pVendorInfo); | 
|  | void __RPC_STUB IBaseFilter_QueryVendorInfo_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IBaseFilter_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IBaseFilter *PFILTER; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IReferenceClock interface | 
|  | */ | 
|  | #ifndef __IReferenceClock_INTERFACE_DEFINED__ | 
|  | #define __IReferenceClock_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IReferenceClock, 0x56a86897, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IReferenceClock : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE GetTime( | 
|  | REFERENCE_TIME* pTime) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE AdviseTime( | 
|  | REFERENCE_TIME baseTime, | 
|  | REFERENCE_TIME streamTime, | 
|  | HEVENT hEvent, | 
|  | DWORD_PTR* pdwAdviseCookie) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE AdvisePeriodic( | 
|  | REFERENCE_TIME startTime, | 
|  | REFERENCE_TIME periodTime, | 
|  | HSEMAPHORE hSemaphore, | 
|  | DWORD_PTR* pdwAdviseCookie) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Unadvise( | 
|  | DWORD_PTR dwAdviseCookie) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IReferenceClockVtbl IReferenceClockVtbl; | 
|  | struct IReferenceClock { | 
|  | const IReferenceClockVtbl* lpVtbl; | 
|  | }; | 
|  | struct IReferenceClockVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IReferenceClock* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IReferenceClock* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IReferenceClock* This); | 
|  |  | 
|  | /*** IReferenceClock methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *GetTime)( | 
|  | IReferenceClock* This, | 
|  | REFERENCE_TIME* pTime); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *AdviseTime)( | 
|  | IReferenceClock* This, | 
|  | REFERENCE_TIME baseTime, | 
|  | REFERENCE_TIME streamTime, | 
|  | HEVENT hEvent, | 
|  | DWORD_PTR* pdwAdviseCookie); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *AdvisePeriodic)( | 
|  | IReferenceClock* This, | 
|  | REFERENCE_TIME startTime, | 
|  | REFERENCE_TIME periodTime, | 
|  | HSEMAPHORE hSemaphore, | 
|  | DWORD_PTR* pdwAdviseCookie); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Unadvise)( | 
|  | IReferenceClock* This, | 
|  | DWORD_PTR dwAdviseCookie); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IReferenceClock_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IReferenceClock_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IReferenceClock_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IReferenceClock methods ***/ | 
|  | #define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a) | 
|  | #define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d) | 
|  | #define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d) | 
|  | #define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IReferenceClock_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IReferenceClock methods ***/ \ | 
|  | STDMETHOD_(HRESULT,GetTime)(THIS_ REFERENCE_TIME* pTime) PURE; \ | 
|  | STDMETHOD_(HRESULT,AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HEVENT hEvent, DWORD_PTR* pdwAdviseCookie) PURE; \ | 
|  | STDMETHOD_(HRESULT,AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HSEMAPHORE hSemaphore, DWORD_PTR* pdwAdviseCookie) PURE; \ | 
|  | STDMETHOD_(HRESULT,Unadvise)(THIS_ DWORD_PTR dwAdviseCookie) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IReferenceClock_GetTime_Proxy( | 
|  | IReferenceClock* This, | 
|  | REFERENCE_TIME* pTime); | 
|  | void __RPC_STUB IReferenceClock_GetTime_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IReferenceClock_AdviseTime_Proxy( | 
|  | IReferenceClock* This, | 
|  | REFERENCE_TIME baseTime, | 
|  | REFERENCE_TIME streamTime, | 
|  | HEVENT hEvent, | 
|  | DWORD_PTR* pdwAdviseCookie); | 
|  | void __RPC_STUB IReferenceClock_AdviseTime_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IReferenceClock_AdvisePeriodic_Proxy( | 
|  | IReferenceClock* This, | 
|  | REFERENCE_TIME startTime, | 
|  | REFERENCE_TIME periodTime, | 
|  | HSEMAPHORE hSemaphore, | 
|  | DWORD_PTR* pdwAdviseCookie); | 
|  | void __RPC_STUB IReferenceClock_AdvisePeriodic_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IReferenceClock_Unadvise_Proxy( | 
|  | IReferenceClock* This, | 
|  | DWORD_PTR dwAdviseCookie); | 
|  | void __RPC_STUB IReferenceClock_Unadvise_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IReferenceClock_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IReferenceClock *PREFERENCECLOCK; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IMediaSample interface | 
|  | */ | 
|  | #ifndef __IMediaSample_INTERFACE_DEFINED__ | 
|  | #define __IMediaSample_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IMediaSample, 0x56a8689a, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IMediaSample : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE GetPointer( | 
|  | BYTE** ppBuffer) = 0; | 
|  |  | 
|  | virtual long STDMETHODCALLTYPE GetSize( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetTime( | 
|  | REFERENCE_TIME* pTimeStart, | 
|  | REFERENCE_TIME* pTimeEnd) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetTime( | 
|  | REFERENCE_TIME* pTimeStart, | 
|  | REFERENCE_TIME* pTimeEnd) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE IsSyncPoint( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetSyncPoint( | 
|  | BOOL bIsSyncPoint) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE IsPreroll( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetPreroll( | 
|  | BOOL bIsPreroll) = 0; | 
|  |  | 
|  | virtual long STDMETHODCALLTYPE GetActualDataLength( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetActualDataLength( | 
|  | long length) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetMediaType( | 
|  | AM_MEDIA_TYPE** ppMediaType) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetMediaType( | 
|  | AM_MEDIA_TYPE* pMediaType) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE IsDiscontinuity( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetDiscontinuity( | 
|  | BOOL bDiscontinuity) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetMediaTime( | 
|  | LONGLONG* pTimeStart, | 
|  | LONGLONG* pTimeEnd) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetMediaTime( | 
|  | LONGLONG* pTimeStart, | 
|  | LONGLONG* pTimeEnd) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IMediaSampleVtbl IMediaSampleVtbl; | 
|  | struct IMediaSample { | 
|  | const IMediaSampleVtbl* lpVtbl; | 
|  | }; | 
|  | struct IMediaSampleVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IMediaSample* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IMediaSample* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IMediaSample* This); | 
|  |  | 
|  | /*** IMediaSample methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *GetPointer)( | 
|  | IMediaSample* This, | 
|  | BYTE** ppBuffer); | 
|  |  | 
|  | long (STDMETHODCALLTYPE *GetSize)( | 
|  | IMediaSample* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetTime)( | 
|  | IMediaSample* This, | 
|  | REFERENCE_TIME* pTimeStart, | 
|  | REFERENCE_TIME* pTimeEnd); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetTime)( | 
|  | IMediaSample* This, | 
|  | REFERENCE_TIME* pTimeStart, | 
|  | REFERENCE_TIME* pTimeEnd); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *IsSyncPoint)( | 
|  | IMediaSample* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetSyncPoint)( | 
|  | IMediaSample* This, | 
|  | BOOL bIsSyncPoint); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *IsPreroll)( | 
|  | IMediaSample* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetPreroll)( | 
|  | IMediaSample* This, | 
|  | BOOL bIsPreroll); | 
|  |  | 
|  | long (STDMETHODCALLTYPE *GetActualDataLength)( | 
|  | IMediaSample* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetActualDataLength)( | 
|  | IMediaSample* This, | 
|  | long length); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetMediaType)( | 
|  | IMediaSample* This, | 
|  | AM_MEDIA_TYPE** ppMediaType); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetMediaType)( | 
|  | IMediaSample* This, | 
|  | AM_MEDIA_TYPE* pMediaType); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *IsDiscontinuity)( | 
|  | IMediaSample* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetDiscontinuity)( | 
|  | IMediaSample* This, | 
|  | BOOL bDiscontinuity); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetMediaTime)( | 
|  | IMediaSample* This, | 
|  | LONGLONG* pTimeStart, | 
|  | LONGLONG* pTimeEnd); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetMediaTime)( | 
|  | IMediaSample* This, | 
|  | LONGLONG* pTimeStart, | 
|  | LONGLONG* pTimeEnd); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IMediaSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IMediaSample_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IMediaSample_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IMediaSample methods ***/ | 
|  | #define IMediaSample_GetPointer(p,a) (p)->lpVtbl->GetPointer(p,a) | 
|  | #define IMediaSample_GetSize(p) (p)->lpVtbl->GetSize(p) | 
|  | #define IMediaSample_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b) | 
|  | #define IMediaSample_SetTime(p,a,b) (p)->lpVtbl->SetTime(p,a,b) | 
|  | #define IMediaSample_IsSyncPoint(p) (p)->lpVtbl->IsSyncPoint(p) | 
|  | #define IMediaSample_SetSyncPoint(p,a) (p)->lpVtbl->SetSyncPoint(p,a) | 
|  | #define IMediaSample_IsPreroll(p) (p)->lpVtbl->IsPreroll(p) | 
|  | #define IMediaSample_SetPreroll(p,a) (p)->lpVtbl->SetPreroll(p,a) | 
|  | #define IMediaSample_GetActualDataLength(p) (p)->lpVtbl->GetActualDataLength(p) | 
|  | #define IMediaSample_SetActualDataLength(p,a) (p)->lpVtbl->SetActualDataLength(p,a) | 
|  | #define IMediaSample_GetMediaType(p,a) (p)->lpVtbl->GetMediaType(p,a) | 
|  | #define IMediaSample_SetMediaType(p,a) (p)->lpVtbl->SetMediaType(p,a) | 
|  | #define IMediaSample_IsDiscontinuity(p) (p)->lpVtbl->IsDiscontinuity(p) | 
|  | #define IMediaSample_SetDiscontinuity(p,a) (p)->lpVtbl->SetDiscontinuity(p,a) | 
|  | #define IMediaSample_GetMediaTime(p,a,b) (p)->lpVtbl->GetMediaTime(p,a,b) | 
|  | #define IMediaSample_SetMediaTime(p,a,b) (p)->lpVtbl->SetMediaTime(p,a,b) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IMediaSample_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IMediaSample methods ***/ \ | 
|  | STDMETHOD_(HRESULT,GetPointer)(THIS_ BYTE** ppBuffer) PURE; \ | 
|  | STDMETHOD_(long,GetSize)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \ | 
|  | STDMETHOD_(HRESULT,IsSyncPoint)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetSyncPoint)(THIS_ BOOL bIsSyncPoint) PURE; \ | 
|  | STDMETHOD_(HRESULT,IsPreroll)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetPreroll)(THIS_ BOOL bIsPreroll) PURE; \ | 
|  | STDMETHOD_(long,GetActualDataLength)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetActualDataLength)(THIS_ long length) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetMediaType)(THIS_ AM_MEDIA_TYPE** ppMediaType) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetMediaType)(THIS_ AM_MEDIA_TYPE* pMediaType) PURE; \ | 
|  | STDMETHOD_(HRESULT,IsDiscontinuity)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetDiscontinuity)(THIS_ BOOL bDiscontinuity) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IMediaSample_GetPointer_Proxy( | 
|  | IMediaSample* This, | 
|  | BYTE** ppBuffer); | 
|  | void __RPC_STUB IMediaSample_GetPointer_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | long CALLBACK IMediaSample_GetSize_Proxy( | 
|  | IMediaSample* This); | 
|  | void __RPC_STUB IMediaSample_GetSize_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_GetTime_Proxy( | 
|  | IMediaSample* This, | 
|  | REFERENCE_TIME* pTimeStart, | 
|  | REFERENCE_TIME* pTimeEnd); | 
|  | void __RPC_STUB IMediaSample_GetTime_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_SetTime_Proxy( | 
|  | IMediaSample* This, | 
|  | REFERENCE_TIME* pTimeStart, | 
|  | REFERENCE_TIME* pTimeEnd); | 
|  | void __RPC_STUB IMediaSample_SetTime_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_IsSyncPoint_Proxy( | 
|  | IMediaSample* This); | 
|  | void __RPC_STUB IMediaSample_IsSyncPoint_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_SetSyncPoint_Proxy( | 
|  | IMediaSample* This, | 
|  | BOOL bIsSyncPoint); | 
|  | void __RPC_STUB IMediaSample_SetSyncPoint_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_IsPreroll_Proxy( | 
|  | IMediaSample* This); | 
|  | void __RPC_STUB IMediaSample_IsPreroll_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_SetPreroll_Proxy( | 
|  | IMediaSample* This, | 
|  | BOOL bIsPreroll); | 
|  | void __RPC_STUB IMediaSample_SetPreroll_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | long CALLBACK IMediaSample_GetActualDataLength_Proxy( | 
|  | IMediaSample* This); | 
|  | void __RPC_STUB IMediaSample_GetActualDataLength_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_SetActualDataLength_Proxy( | 
|  | IMediaSample* This, | 
|  | long length); | 
|  | void __RPC_STUB IMediaSample_SetActualDataLength_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_GetMediaType_Proxy( | 
|  | IMediaSample* This, | 
|  | AM_MEDIA_TYPE** ppMediaType); | 
|  | void __RPC_STUB IMediaSample_GetMediaType_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_SetMediaType_Proxy( | 
|  | IMediaSample* This, | 
|  | AM_MEDIA_TYPE* pMediaType); | 
|  | void __RPC_STUB IMediaSample_SetMediaType_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_IsDiscontinuity_Proxy( | 
|  | IMediaSample* This); | 
|  | void __RPC_STUB IMediaSample_IsDiscontinuity_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_SetDiscontinuity_Proxy( | 
|  | IMediaSample* This, | 
|  | BOOL bDiscontinuity); | 
|  | void __RPC_STUB IMediaSample_SetDiscontinuity_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_GetMediaTime_Proxy( | 
|  | IMediaSample* This, | 
|  | LONGLONG* pTimeStart, | 
|  | LONGLONG* pTimeEnd); | 
|  | void __RPC_STUB IMediaSample_GetMediaTime_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample_SetMediaTime_Proxy( | 
|  | IMediaSample* This, | 
|  | LONGLONG* pTimeStart, | 
|  | LONGLONG* pTimeEnd); | 
|  | void __RPC_STUB IMediaSample_SetMediaTime_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IMediaSample_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IMediaSample *PMEDIASAMPLE; | 
|  |  | 
|  | enum tagAM_SAMPLE_PROPERTY_FLAGS { | 
|  | AM_SAMPLE_SPLICEPOINT = 0x1, | 
|  | AM_SAMPLE_PREROLL = 0x2, | 
|  | AM_SAMPLE_DATADISCONTINUITY = 0x4, | 
|  | AM_SAMPLE_TYPECHANGED = 0x8, | 
|  | AM_SAMPLE_TIMEVALID = 0x10, | 
|  | AM_SAMPLE_TIMEDISCONTINUITY = 0x40, | 
|  | AM_SAMPLE_FLUSH_ON_PAUSE = 0x80, | 
|  | AM_SAMPLE_STOPVALID = 0x100, | 
|  | AM_SAMPLE_ENDOFSTREAM = 0x200, | 
|  | AM_STREAM_MEDIA = 0, | 
|  | AM_STREAM_CONTROL = 1 | 
|  | }; | 
|  |  | 
|  | typedef struct tagAM_SAMPLE2_PROPERTIES { | 
|  | DWORD cbData; | 
|  | DWORD dwTypeSpecificFlags; | 
|  | DWORD dwSampleFlags; | 
|  | LONG lActual; | 
|  | REFERENCE_TIME tStart; | 
|  | REFERENCE_TIME tStop; | 
|  | DWORD dwStreamId; | 
|  | AM_MEDIA_TYPE *pMediaType; | 
|  | BYTE *pbBuffer; | 
|  | LONG cbBuffer; | 
|  | } AM_SAMPLE2_PROPERTIES; | 
|  |  | 
|  | #ifndef __IMediaSample2_FWD_DEFINED__ | 
|  | #define __IMediaSample2_FWD_DEFINED__ | 
|  | typedef struct IMediaSample2 IMediaSample2; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IMediaSample2 interface | 
|  | */ | 
|  | #ifndef __IMediaSample2_INTERFACE_DEFINED__ | 
|  | #define __IMediaSample2_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IMediaSample2, 0x36b73884, 0xc2c8, 0x11cf, 0x8b,0x46, 0x00,0x80,0x5f,0x6c,0xef,0x60); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IMediaSample2 : public IMediaSample | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE GetProperties( | 
|  | DWORD cbProperties, | 
|  | BYTE* pbProperties) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetProperties( | 
|  | DWORD cbProperties, | 
|  | const BYTE* pbProperties) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IMediaSample2Vtbl IMediaSample2Vtbl; | 
|  | struct IMediaSample2 { | 
|  | const IMediaSample2Vtbl* lpVtbl; | 
|  | }; | 
|  | struct IMediaSample2Vtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IMediaSample2* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IMediaSample2* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IMediaSample2* This); | 
|  |  | 
|  | /*** IMediaSample methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *GetPointer)( | 
|  | IMediaSample2* This, | 
|  | BYTE** ppBuffer); | 
|  |  | 
|  | long (STDMETHODCALLTYPE *GetSize)( | 
|  | IMediaSample2* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetTime)( | 
|  | IMediaSample2* This, | 
|  | REFERENCE_TIME* pTimeStart, | 
|  | REFERENCE_TIME* pTimeEnd); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetTime)( | 
|  | IMediaSample2* This, | 
|  | REFERENCE_TIME* pTimeStart, | 
|  | REFERENCE_TIME* pTimeEnd); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *IsSyncPoint)( | 
|  | IMediaSample2* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetSyncPoint)( | 
|  | IMediaSample2* This, | 
|  | BOOL bIsSyncPoint); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *IsPreroll)( | 
|  | IMediaSample2* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetPreroll)( | 
|  | IMediaSample2* This, | 
|  | BOOL bIsPreroll); | 
|  |  | 
|  | long (STDMETHODCALLTYPE *GetActualDataLength)( | 
|  | IMediaSample2* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetActualDataLength)( | 
|  | IMediaSample2* This, | 
|  | long length); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetMediaType)( | 
|  | IMediaSample2* This, | 
|  | AM_MEDIA_TYPE** ppMediaType); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetMediaType)( | 
|  | IMediaSample2* This, | 
|  | AM_MEDIA_TYPE* pMediaType); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *IsDiscontinuity)( | 
|  | IMediaSample2* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetDiscontinuity)( | 
|  | IMediaSample2* This, | 
|  | BOOL bDiscontinuity); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetMediaTime)( | 
|  | IMediaSample2* This, | 
|  | LONGLONG* pTimeStart, | 
|  | LONGLONG* pTimeEnd); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetMediaTime)( | 
|  | IMediaSample2* This, | 
|  | LONGLONG* pTimeStart, | 
|  | LONGLONG* pTimeEnd); | 
|  |  | 
|  | /*** IMediaSample2 methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *GetProperties)( | 
|  | IMediaSample2* This, | 
|  | DWORD cbProperties, | 
|  | BYTE* pbProperties); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetProperties)( | 
|  | IMediaSample2* This, | 
|  | DWORD cbProperties, | 
|  | const BYTE* pbProperties); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IMediaSample2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IMediaSample2_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IMediaSample2_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IMediaSample methods ***/ | 
|  | #define IMediaSample2_GetPointer(p,a) (p)->lpVtbl->GetPointer(p,a) | 
|  | #define IMediaSample2_GetSize(p) (p)->lpVtbl->GetSize(p) | 
|  | #define IMediaSample2_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b) | 
|  | #define IMediaSample2_SetTime(p,a,b) (p)->lpVtbl->SetTime(p,a,b) | 
|  | #define IMediaSample2_IsSyncPoint(p) (p)->lpVtbl->IsSyncPoint(p) | 
|  | #define IMediaSample2_SetSyncPoint(p,a) (p)->lpVtbl->SetSyncPoint(p,a) | 
|  | #define IMediaSample2_IsPreroll(p) (p)->lpVtbl->IsPreroll(p) | 
|  | #define IMediaSample2_SetPreroll(p,a) (p)->lpVtbl->SetPreroll(p,a) | 
|  | #define IMediaSample2_GetActualDataLength(p) (p)->lpVtbl->GetActualDataLength(p) | 
|  | #define IMediaSample2_SetActualDataLength(p,a) (p)->lpVtbl->SetActualDataLength(p,a) | 
|  | #define IMediaSample2_GetMediaType(p,a) (p)->lpVtbl->GetMediaType(p,a) | 
|  | #define IMediaSample2_SetMediaType(p,a) (p)->lpVtbl->SetMediaType(p,a) | 
|  | #define IMediaSample2_IsDiscontinuity(p) (p)->lpVtbl->IsDiscontinuity(p) | 
|  | #define IMediaSample2_SetDiscontinuity(p,a) (p)->lpVtbl->SetDiscontinuity(p,a) | 
|  | #define IMediaSample2_GetMediaTime(p,a,b) (p)->lpVtbl->GetMediaTime(p,a,b) | 
|  | #define IMediaSample2_SetMediaTime(p,a,b) (p)->lpVtbl->SetMediaTime(p,a,b) | 
|  | /*** IMediaSample2 methods ***/ | 
|  | #define IMediaSample2_GetProperties(p,a,b) (p)->lpVtbl->GetProperties(p,a,b) | 
|  | #define IMediaSample2_SetProperties(p,a,b) (p)->lpVtbl->SetProperties(p,a,b) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IMediaSample2_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IMediaSample methods ***/ \ | 
|  | STDMETHOD_(HRESULT,GetPointer)(THIS_ BYTE** ppBuffer) PURE; \ | 
|  | STDMETHOD_(long,GetSize)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \ | 
|  | STDMETHOD_(HRESULT,IsSyncPoint)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetSyncPoint)(THIS_ BOOL bIsSyncPoint) PURE; \ | 
|  | STDMETHOD_(HRESULT,IsPreroll)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetPreroll)(THIS_ BOOL bIsPreroll) PURE; \ | 
|  | STDMETHOD_(long,GetActualDataLength)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetActualDataLength)(THIS_ long length) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetMediaType)(THIS_ AM_MEDIA_TYPE** ppMediaType) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetMediaType)(THIS_ AM_MEDIA_TYPE* pMediaType) PURE; \ | 
|  | STDMETHOD_(HRESULT,IsDiscontinuity)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetDiscontinuity)(THIS_ BOOL bDiscontinuity) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; \ | 
|  | /*** IMediaSample2 methods ***/ \ | 
|  | STDMETHOD_(HRESULT,GetProperties)(THIS_ DWORD cbProperties, BYTE* pbProperties) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetProperties)(THIS_ DWORD cbProperties, const BYTE* pbProperties) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IMediaSample2_GetProperties_Proxy( | 
|  | IMediaSample2* This, | 
|  | DWORD cbProperties, | 
|  | BYTE* pbProperties); | 
|  | void __RPC_STUB IMediaSample2_GetProperties_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSample2_SetProperties_Proxy( | 
|  | IMediaSample2* This, | 
|  | DWORD cbProperties, | 
|  | const BYTE* pbProperties); | 
|  | void __RPC_STUB IMediaSample2_SetProperties_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IMediaSample2_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IMediaSample2 *PMEDIASAMPLE2; | 
|  |  | 
|  | #define AM_GBF_PREVFRAMESKIPPED 1 | 
|  | #define AM_GBF_NOTASYNCPOINT 2 | 
|  | #define AM_GBF_NOWAIT 4 | 
|  | /***************************************************************************** | 
|  | * IMemAllocator interface | 
|  | */ | 
|  | #ifndef __IMemAllocator_INTERFACE_DEFINED__ | 
|  | #define __IMemAllocator_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IMemAllocator, 0x56a8689c, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IMemAllocator : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE SetProperties( | 
|  | ALLOCATOR_PROPERTIES* pRequest, | 
|  | ALLOCATOR_PROPERTIES* pActual) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetProperties( | 
|  | ALLOCATOR_PROPERTIES* pProps) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Commit( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Decommit( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetBuffer( | 
|  | IMediaSample** ppBuffer, | 
|  | REFERENCE_TIME* pStartTime, | 
|  | REFERENCE_TIME* pEndTime, | 
|  | DWORD dwFlags) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( | 
|  | IMediaSample* pBuffer) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IMemAllocatorVtbl IMemAllocatorVtbl; | 
|  | struct IMemAllocator { | 
|  | const IMemAllocatorVtbl* lpVtbl; | 
|  | }; | 
|  | struct IMemAllocatorVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IMemAllocator* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IMemAllocator* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IMemAllocator* This); | 
|  |  | 
|  | /*** IMemAllocator methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *SetProperties)( | 
|  | IMemAllocator* This, | 
|  | ALLOCATOR_PROPERTIES* pRequest, | 
|  | ALLOCATOR_PROPERTIES* pActual); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetProperties)( | 
|  | IMemAllocator* This, | 
|  | ALLOCATOR_PROPERTIES* pProps); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Commit)( | 
|  | IMemAllocator* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Decommit)( | 
|  | IMemAllocator* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetBuffer)( | 
|  | IMemAllocator* This, | 
|  | IMediaSample** ppBuffer, | 
|  | REFERENCE_TIME* pStartTime, | 
|  | REFERENCE_TIME* pEndTime, | 
|  | DWORD dwFlags); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)( | 
|  | IMemAllocator* This, | 
|  | IMediaSample* pBuffer); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IMemAllocator_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IMemAllocator_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IMemAllocator_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IMemAllocator methods ***/ | 
|  | #define IMemAllocator_SetProperties(p,a,b) (p)->lpVtbl->SetProperties(p,a,b) | 
|  | #define IMemAllocator_GetProperties(p,a) (p)->lpVtbl->GetProperties(p,a) | 
|  | #define IMemAllocator_Commit(p) (p)->lpVtbl->Commit(p) | 
|  | #define IMemAllocator_Decommit(p) (p)->lpVtbl->Decommit(p) | 
|  | #define IMemAllocator_GetBuffer(p,a,b,c,d) (p)->lpVtbl->GetBuffer(p,a,b,c,d) | 
|  | #define IMemAllocator_ReleaseBuffer(p,a) (p)->lpVtbl->ReleaseBuffer(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IMemAllocator_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IMemAllocator methods ***/ \ | 
|  | STDMETHOD_(HRESULT,SetProperties)(THIS_ ALLOCATOR_PROPERTIES* pRequest, ALLOCATOR_PROPERTIES* pActual) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetProperties)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE; \ | 
|  | STDMETHOD_(HRESULT,Commit)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Decommit)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetBuffer)(THIS_ IMediaSample** ppBuffer, REFERENCE_TIME* pStartTime, REFERENCE_TIME* pEndTime, DWORD dwFlags) PURE; \ | 
|  | STDMETHOD_(HRESULT,ReleaseBuffer)(THIS_ IMediaSample* pBuffer) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IMemAllocator_SetProperties_Proxy( | 
|  | IMemAllocator* This, | 
|  | ALLOCATOR_PROPERTIES* pRequest, | 
|  | ALLOCATOR_PROPERTIES* pActual); | 
|  | void __RPC_STUB IMemAllocator_SetProperties_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemAllocator_GetProperties_Proxy( | 
|  | IMemAllocator* This, | 
|  | ALLOCATOR_PROPERTIES* pProps); | 
|  | void __RPC_STUB IMemAllocator_GetProperties_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemAllocator_Commit_Proxy( | 
|  | IMemAllocator* This); | 
|  | void __RPC_STUB IMemAllocator_Commit_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemAllocator_Decommit_Proxy( | 
|  | IMemAllocator* This); | 
|  | void __RPC_STUB IMemAllocator_Decommit_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemAllocator_GetBuffer_Proxy( | 
|  | IMemAllocator* This, | 
|  | IMediaSample** ppBuffer, | 
|  | REFERENCE_TIME* pStartTime, | 
|  | REFERENCE_TIME* pEndTime, | 
|  | DWORD dwFlags); | 
|  | void __RPC_STUB IMemAllocator_GetBuffer_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemAllocator_ReleaseBuffer_Proxy( | 
|  | IMemAllocator* This, | 
|  | IMediaSample* pBuffer); | 
|  | void __RPC_STUB IMemAllocator_ReleaseBuffer_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IMemAllocator_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IMemAllocator *PMEMALLOCATOR; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IMemAllocatorCallbackTemp interface | 
|  | */ | 
|  | #ifndef __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ | 
|  | #define __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IMemAllocatorCallbackTemp, 0x379a0cf0, 0xc1de, 0x11d2, 0xab,0xf5, 0x00,0xa0,0xc9,0x05,0xf3,0x75); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IMemAllocatorCallbackTemp : public IMemAllocator | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE SetNotify( | 
|  | IMemAllocatorNotifyCallbackTemp* pNotify) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetFreeCount( | 
|  | LONG* plBuffersFree) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IMemAllocatorCallbackTempVtbl IMemAllocatorCallbackTempVtbl; | 
|  | struct IMemAllocatorCallbackTemp { | 
|  | const IMemAllocatorCallbackTempVtbl* lpVtbl; | 
|  | }; | 
|  | struct IMemAllocatorCallbackTempVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IMemAllocatorCallbackTemp* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IMemAllocatorCallbackTemp* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IMemAllocatorCallbackTemp* This); | 
|  |  | 
|  | /*** IMemAllocator methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *SetProperties)( | 
|  | IMemAllocatorCallbackTemp* This, | 
|  | ALLOCATOR_PROPERTIES* pRequest, | 
|  | ALLOCATOR_PROPERTIES* pActual); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetProperties)( | 
|  | IMemAllocatorCallbackTemp* This, | 
|  | ALLOCATOR_PROPERTIES* pProps); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Commit)( | 
|  | IMemAllocatorCallbackTemp* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Decommit)( | 
|  | IMemAllocatorCallbackTemp* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetBuffer)( | 
|  | IMemAllocatorCallbackTemp* This, | 
|  | IMediaSample** ppBuffer, | 
|  | REFERENCE_TIME* pStartTime, | 
|  | REFERENCE_TIME* pEndTime, | 
|  | DWORD dwFlags); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)( | 
|  | IMemAllocatorCallbackTemp* This, | 
|  | IMediaSample* pBuffer); | 
|  |  | 
|  | /*** IMemAllocatorCallbackTemp methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *SetNotify)( | 
|  | IMemAllocatorCallbackTemp* This, | 
|  | IMemAllocatorNotifyCallbackTemp* pNotify); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetFreeCount)( | 
|  | IMemAllocatorCallbackTemp* This, | 
|  | LONG* plBuffersFree); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IMemAllocatorCallbackTemp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IMemAllocatorCallbackTemp_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IMemAllocatorCallbackTemp_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IMemAllocator methods ***/ | 
|  | #define IMemAllocatorCallbackTemp_SetProperties(p,a,b) (p)->lpVtbl->SetProperties(p,a,b) | 
|  | #define IMemAllocatorCallbackTemp_GetProperties(p,a) (p)->lpVtbl->GetProperties(p,a) | 
|  | #define IMemAllocatorCallbackTemp_Commit(p) (p)->lpVtbl->Commit(p) | 
|  | #define IMemAllocatorCallbackTemp_Decommit(p) (p)->lpVtbl->Decommit(p) | 
|  | #define IMemAllocatorCallbackTemp_GetBuffer(p,a,b,c,d) (p)->lpVtbl->GetBuffer(p,a,b,c,d) | 
|  | #define IMemAllocatorCallbackTemp_ReleaseBuffer(p,a) (p)->lpVtbl->ReleaseBuffer(p,a) | 
|  | /*** IMemAllocatorCallbackTemp methods ***/ | 
|  | #define IMemAllocatorCallbackTemp_SetNotify(p,a) (p)->lpVtbl->SetNotify(p,a) | 
|  | #define IMemAllocatorCallbackTemp_GetFreeCount(p,a) (p)->lpVtbl->GetFreeCount(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IMemAllocatorCallbackTemp_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IMemAllocator methods ***/ \ | 
|  | STDMETHOD_(HRESULT,SetProperties)(THIS_ ALLOCATOR_PROPERTIES* pRequest, ALLOCATOR_PROPERTIES* pActual) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetProperties)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE; \ | 
|  | STDMETHOD_(HRESULT,Commit)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Decommit)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetBuffer)(THIS_ IMediaSample** ppBuffer, REFERENCE_TIME* pStartTime, REFERENCE_TIME* pEndTime, DWORD dwFlags) PURE; \ | 
|  | STDMETHOD_(HRESULT,ReleaseBuffer)(THIS_ IMediaSample* pBuffer) PURE; \ | 
|  | /*** IMemAllocatorCallbackTemp methods ***/ \ | 
|  | STDMETHOD_(HRESULT,SetNotify)(THIS_ IMemAllocatorNotifyCallbackTemp* pNotify) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetFreeCount)(THIS_ LONG* plBuffersFree) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IMemAllocatorCallbackTemp_SetNotify_Proxy( | 
|  | IMemAllocatorCallbackTemp* This, | 
|  | IMemAllocatorNotifyCallbackTemp* pNotify); | 
|  | void __RPC_STUB IMemAllocatorCallbackTemp_SetNotify_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemAllocatorCallbackTemp_GetFreeCount_Proxy( | 
|  | IMemAllocatorCallbackTemp* This, | 
|  | LONG* plBuffersFree); | 
|  | void __RPC_STUB IMemAllocatorCallbackTemp_GetFreeCount_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IMemAllocatorNotifyCallbackTemp interface | 
|  | */ | 
|  | #ifndef __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ | 
|  | #define __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IMemAllocatorNotifyCallbackTemp, 0x92980b30, 0xc1de, 0x11d2, 0xab,0xf5, 0x00,0xa0,0xc9,0x05,0xf3,0x75); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IMemAllocatorNotifyCallbackTemp : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE NotifyRelease( | 
|  | ) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IMemAllocatorNotifyCallbackTempVtbl IMemAllocatorNotifyCallbackTempVtbl; | 
|  | struct IMemAllocatorNotifyCallbackTemp { | 
|  | const IMemAllocatorNotifyCallbackTempVtbl* lpVtbl; | 
|  | }; | 
|  | struct IMemAllocatorNotifyCallbackTempVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IMemAllocatorNotifyCallbackTemp* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IMemAllocatorNotifyCallbackTemp* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IMemAllocatorNotifyCallbackTemp* This); | 
|  |  | 
|  | /*** IMemAllocatorNotifyCallbackTemp methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *NotifyRelease)( | 
|  | IMemAllocatorNotifyCallbackTemp* This); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IMemAllocatorNotifyCallbackTemp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IMemAllocatorNotifyCallbackTemp_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IMemAllocatorNotifyCallbackTemp_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IMemAllocatorNotifyCallbackTemp methods ***/ | 
|  | #define IMemAllocatorNotifyCallbackTemp_NotifyRelease(p) (p)->lpVtbl->NotifyRelease(p) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IMemAllocatorNotifyCallbackTemp_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IMemAllocatorNotifyCallbackTemp methods ***/ \ | 
|  | STDMETHOD_(HRESULT,NotifyRelease)(THIS) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IMemAllocatorNotifyCallbackTemp_NotifyRelease_Proxy( | 
|  | IMemAllocatorNotifyCallbackTemp* This); | 
|  | void __RPC_STUB IMemAllocatorNotifyCallbackTemp_NotifyRelease_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IMemInputPin interface | 
|  | */ | 
|  | #ifndef __IMemInputPin_INTERFACE_DEFINED__ | 
|  | #define __IMemInputPin_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IMemInputPin, 0x56a8689d, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IMemInputPin : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE GetAllocator( | 
|  | IMemAllocator** ppAllocator) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE NotifyAllocator( | 
|  | IMemAllocator* pAllocator, | 
|  | BOOL bReadOnly) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetAllocatorRequirements( | 
|  | ALLOCATOR_PROPERTIES* pProps) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Receive( | 
|  | IMediaSample* pSample) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ReceiveMultiple( | 
|  | IMediaSample** pSamples, | 
|  | long nSamples, | 
|  | long* nSamplesProcessed) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ReceiveCanBlock( | 
|  | ) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IMemInputPinVtbl IMemInputPinVtbl; | 
|  | struct IMemInputPin { | 
|  | const IMemInputPinVtbl* lpVtbl; | 
|  | }; | 
|  | struct IMemInputPinVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IMemInputPin* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IMemInputPin* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IMemInputPin* This); | 
|  |  | 
|  | /*** IMemInputPin methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *GetAllocator)( | 
|  | IMemInputPin* This, | 
|  | IMemAllocator** ppAllocator); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *NotifyAllocator)( | 
|  | IMemInputPin* This, | 
|  | IMemAllocator* pAllocator, | 
|  | BOOL bReadOnly); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetAllocatorRequirements)( | 
|  | IMemInputPin* This, | 
|  | ALLOCATOR_PROPERTIES* pProps); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Receive)( | 
|  | IMemInputPin* This, | 
|  | IMediaSample* pSample); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ReceiveMultiple)( | 
|  | IMemInputPin* This, | 
|  | IMediaSample** pSamples, | 
|  | long nSamples, | 
|  | long* nSamplesProcessed); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ReceiveCanBlock)( | 
|  | IMemInputPin* This); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IMemInputPin_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IMemInputPin_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IMemInputPin_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IMemInputPin methods ***/ | 
|  | #define IMemInputPin_GetAllocator(p,a) (p)->lpVtbl->GetAllocator(p,a) | 
|  | #define IMemInputPin_NotifyAllocator(p,a,b) (p)->lpVtbl->NotifyAllocator(p,a,b) | 
|  | #define IMemInputPin_GetAllocatorRequirements(p,a) (p)->lpVtbl->GetAllocatorRequirements(p,a) | 
|  | #define IMemInputPin_Receive(p,a) (p)->lpVtbl->Receive(p,a) | 
|  | #define IMemInputPin_ReceiveMultiple(p,a,b,c) (p)->lpVtbl->ReceiveMultiple(p,a,b,c) | 
|  | #define IMemInputPin_ReceiveCanBlock(p) (p)->lpVtbl->ReceiveCanBlock(p) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IMemInputPin_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IMemInputPin methods ***/ \ | 
|  | STDMETHOD_(HRESULT,GetAllocator)(THIS_ IMemAllocator** ppAllocator) PURE; \ | 
|  | STDMETHOD_(HRESULT,NotifyAllocator)(THIS_ IMemAllocator* pAllocator, BOOL bReadOnly) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetAllocatorRequirements)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE; \ | 
|  | STDMETHOD_(HRESULT,Receive)(THIS_ IMediaSample* pSample) PURE; \ | 
|  | STDMETHOD_(HRESULT,ReceiveMultiple)(THIS_ IMediaSample** pSamples, long nSamples, long* nSamplesProcessed) PURE; \ | 
|  | STDMETHOD_(HRESULT,ReceiveCanBlock)(THIS) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IMemInputPin_GetAllocator_Proxy( | 
|  | IMemInputPin* This, | 
|  | IMemAllocator** ppAllocator); | 
|  | void __RPC_STUB IMemInputPin_GetAllocator_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemInputPin_NotifyAllocator_Proxy( | 
|  | IMemInputPin* This, | 
|  | IMemAllocator* pAllocator, | 
|  | BOOL bReadOnly); | 
|  | void __RPC_STUB IMemInputPin_NotifyAllocator_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemInputPin_GetAllocatorRequirements_Proxy( | 
|  | IMemInputPin* This, | 
|  | ALLOCATOR_PROPERTIES* pProps); | 
|  | void __RPC_STUB IMemInputPin_GetAllocatorRequirements_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemInputPin_Receive_Proxy( | 
|  | IMemInputPin* This, | 
|  | IMediaSample* pSample); | 
|  | void __RPC_STUB IMemInputPin_Receive_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemInputPin_ReceiveMultiple_Proxy( | 
|  | IMemInputPin* This, | 
|  | IMediaSample** pSamples, | 
|  | long nSamples, | 
|  | long* nSamplesProcessed); | 
|  | void __RPC_STUB IMemInputPin_ReceiveMultiple_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMemInputPin_ReceiveCanBlock_Proxy( | 
|  | IMemInputPin* This); | 
|  | void __RPC_STUB IMemInputPin_ReceiveCanBlock_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IMemInputPin_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IMemInputPin *PMEMINPUTPIN; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IAMovieSetup interface | 
|  | */ | 
|  | #ifndef __IAMovieSetup_INTERFACE_DEFINED__ | 
|  | #define __IAMovieSetup_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IAMovieSetup, 0xa3d8cec0, 0x7e5a, 0x11cf, 0xbb,0xc5, 0x00,0x80,0x5f,0x6c,0xef,0x20); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IAMovieSetup : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Register( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Unregister( | 
|  | ) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IAMovieSetupVtbl IAMovieSetupVtbl; | 
|  | struct IAMovieSetup { | 
|  | const IAMovieSetupVtbl* lpVtbl; | 
|  | }; | 
|  | struct IAMovieSetupVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IAMovieSetup* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IAMovieSetup* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IAMovieSetup* This); | 
|  |  | 
|  | /*** IAMovieSetup methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Register)( | 
|  | IAMovieSetup* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Unregister)( | 
|  | IAMovieSetup* This); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IAMovieSetup_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IAMovieSetup_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IAMovieSetup_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IAMovieSetup methods ***/ | 
|  | #define IAMovieSetup_Register(p) (p)->lpVtbl->Register(p) | 
|  | #define IAMovieSetup_Unregister(p) (p)->lpVtbl->Unregister(p) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IAMovieSetup_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IAMovieSetup methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Register)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Unregister)(THIS) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IAMovieSetup_Register_Proxy( | 
|  | IAMovieSetup* This); | 
|  | void __RPC_STUB IAMovieSetup_Register_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IAMovieSetup_Unregister_Proxy( | 
|  | IAMovieSetup* This); | 
|  | void __RPC_STUB IAMovieSetup_Unregister_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IAMovieSetup_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IAMovieSetup *PAMOVIESETUP; | 
|  |  | 
|  | typedef enum AM_SEEKING_SeekingFlags { | 
|  | AM_SEEKING_NoPositioning = 0x0, | 
|  | AM_SEEKING_AbsolutePositioning = 0x1, | 
|  | AM_SEEKING_RelativePositioning = 0x2, | 
|  | AM_SEEKING_IncrementalPositioning = 0x3, | 
|  | AM_SEEKING_PositioningBitsMask = 0x3, | 
|  | AM_SEEKING_SeekToKeyFrame = 0x4, | 
|  | AM_SEEKING_ReturnTime = 0x8, | 
|  | AM_SEEKING_Segment = 0x10, | 
|  | AM_SEEKING_NoFlush = 0x20 | 
|  | } AM_SEEKING_SEEKING_FLAGS; | 
|  |  | 
|  | typedef enum AM_SEEKING_SeekingCapabilities { | 
|  | AM_SEEKING_CanSeekAbsolute = 0x1, | 
|  | AM_SEEKING_CanSeekForwards = 0x2, | 
|  | AM_SEEKING_CanSeekBackwards = 0x4, | 
|  | AM_SEEKING_CanGetCurrentPos = 0x8, | 
|  | AM_SEEKING_CanGetStopPos = 0x10, | 
|  | AM_SEEKING_CanGetDuration = 0x20, | 
|  | AM_SEEKING_CanPlayBackwards = 0x40, | 
|  | AM_SEEKING_CanDoSegments = 0x80, | 
|  | AM_SEEKING_Source = 0x100 | 
|  | } AM_SEEKING_SEEKING_CAPABILITIES; | 
|  |  | 
|  | #ifndef __IMediaSeeking_FWD_DEFINED__ | 
|  | #define __IMediaSeeking_FWD_DEFINED__ | 
|  | typedef struct IMediaSeeking IMediaSeeking; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IMediaSeeking interface | 
|  | */ | 
|  | #ifndef __IMediaSeeking_INTERFACE_DEFINED__ | 
|  | #define __IMediaSeeking_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IMediaSeeking, 0x36b73880, 0xc2c8, 0x11cf, 0x8b,0x46, 0x00,0x80,0x5f,0x6c,0xef,0x60); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IMediaSeeking : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE GetCapabilities( | 
|  | DWORD* pCapabilities) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE CheckCapabilities( | 
|  | DWORD* pCapabilities) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE IsFormatSupported( | 
|  | const GUID* pFormat) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE QueryPreferredFormat( | 
|  | GUID* pFormat) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetTimeFormat( | 
|  | GUID* pFormat) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE IsUsingTimeFormat( | 
|  | const GUID* pFormat) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetTimeFormat( | 
|  | const GUID* pFormat) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetDuration( | 
|  | LONGLONG* pDuration) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetStopPosition( | 
|  | LONGLONG* pStop) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition( | 
|  | LONGLONG* pCurrent) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ConvertTimeFormat( | 
|  | LONGLONG* pTarget, | 
|  | const GUID* pTargetFormat, | 
|  | LONGLONG Source, | 
|  | const GUID* pSourceFormat) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetPositions( | 
|  | LONGLONG* pCurrent, | 
|  | DWORD dwCurrentFlags, | 
|  | LONGLONG* pStop, | 
|  | DWORD dwStopFlags) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetPositions( | 
|  | LONGLONG* pCurrent, | 
|  | LONGLONG* pStop) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetAvailable( | 
|  | LONGLONG* pEarliest, | 
|  | LONGLONG* pLatest) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetRate( | 
|  | double dRate) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetRate( | 
|  | double* pdRate) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetPreroll( | 
|  | LONGLONG* pllPreroll) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IMediaSeekingVtbl IMediaSeekingVtbl; | 
|  | struct IMediaSeeking { | 
|  | const IMediaSeekingVtbl* lpVtbl; | 
|  | }; | 
|  | struct IMediaSeekingVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IMediaSeeking* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IMediaSeeking* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IMediaSeeking* This); | 
|  |  | 
|  | /*** IMediaSeeking methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *GetCapabilities)( | 
|  | IMediaSeeking* This, | 
|  | DWORD* pCapabilities); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *CheckCapabilities)( | 
|  | IMediaSeeking* This, | 
|  | DWORD* pCapabilities); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *IsFormatSupported)( | 
|  | IMediaSeeking* This, | 
|  | const GUID* pFormat); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *QueryPreferredFormat)( | 
|  | IMediaSeeking* This, | 
|  | GUID* pFormat); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetTimeFormat)( | 
|  | IMediaSeeking* This, | 
|  | GUID* pFormat); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *IsUsingTimeFormat)( | 
|  | IMediaSeeking* This, | 
|  | const GUID* pFormat); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetTimeFormat)( | 
|  | IMediaSeeking* This, | 
|  | const GUID* pFormat); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetDuration)( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pDuration); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetStopPosition)( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pStop); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetCurrentPosition)( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pCurrent); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ConvertTimeFormat)( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pTarget, | 
|  | const GUID* pTargetFormat, | 
|  | LONGLONG Source, | 
|  | const GUID* pSourceFormat); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetPositions)( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pCurrent, | 
|  | DWORD dwCurrentFlags, | 
|  | LONGLONG* pStop, | 
|  | DWORD dwStopFlags); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetPositions)( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pCurrent, | 
|  | LONGLONG* pStop); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetAvailable)( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pEarliest, | 
|  | LONGLONG* pLatest); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetRate)( | 
|  | IMediaSeeking* This, | 
|  | double dRate); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetRate)( | 
|  | IMediaSeeking* This, | 
|  | double* pdRate); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetPreroll)( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pllPreroll); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IMediaSeeking_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IMediaSeeking_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IMediaSeeking_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IMediaSeeking methods ***/ | 
|  | #define IMediaSeeking_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) | 
|  | #define IMediaSeeking_CheckCapabilities(p,a) (p)->lpVtbl->CheckCapabilities(p,a) | 
|  | #define IMediaSeeking_IsFormatSupported(p,a) (p)->lpVtbl->IsFormatSupported(p,a) | 
|  | #define IMediaSeeking_QueryPreferredFormat(p,a) (p)->lpVtbl->QueryPreferredFormat(p,a) | 
|  | #define IMediaSeeking_GetTimeFormat(p,a) (p)->lpVtbl->GetTimeFormat(p,a) | 
|  | #define IMediaSeeking_IsUsingTimeFormat(p,a) (p)->lpVtbl->IsUsingTimeFormat(p,a) | 
|  | #define IMediaSeeking_SetTimeFormat(p,a) (p)->lpVtbl->SetTimeFormat(p,a) | 
|  | #define IMediaSeeking_GetDuration(p,a) (p)->lpVtbl->GetDuration(p,a) | 
|  | #define IMediaSeeking_GetStopPosition(p,a) (p)->lpVtbl->GetStopPosition(p,a) | 
|  | #define IMediaSeeking_GetCurrentPosition(p,a) (p)->lpVtbl->GetCurrentPosition(p,a) | 
|  | #define IMediaSeeking_ConvertTimeFormat(p,a,b,c,d) (p)->lpVtbl->ConvertTimeFormat(p,a,b,c,d) | 
|  | #define IMediaSeeking_SetPositions(p,a,b,c,d) (p)->lpVtbl->SetPositions(p,a,b,c,d) | 
|  | #define IMediaSeeking_GetPositions(p,a,b) (p)->lpVtbl->GetPositions(p,a,b) | 
|  | #define IMediaSeeking_GetAvailable(p,a,b) (p)->lpVtbl->GetAvailable(p,a,b) | 
|  | #define IMediaSeeking_SetRate(p,a) (p)->lpVtbl->SetRate(p,a) | 
|  | #define IMediaSeeking_GetRate(p,a) (p)->lpVtbl->GetRate(p,a) | 
|  | #define IMediaSeeking_GetPreroll(p,a) (p)->lpVtbl->GetPreroll(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IMediaSeeking_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IMediaSeeking methods ***/ \ | 
|  | STDMETHOD_(HRESULT,GetCapabilities)(THIS_ DWORD* pCapabilities) PURE; \ | 
|  | STDMETHOD_(HRESULT,CheckCapabilities)(THIS_ DWORD* pCapabilities) PURE; \ | 
|  | STDMETHOD_(HRESULT,IsFormatSupported)(THIS_ const GUID* pFormat) PURE; \ | 
|  | STDMETHOD_(HRESULT,QueryPreferredFormat)(THIS_ GUID* pFormat) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetTimeFormat)(THIS_ GUID* pFormat) PURE; \ | 
|  | STDMETHOD_(HRESULT,IsUsingTimeFormat)(THIS_ const GUID* pFormat) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetTimeFormat)(THIS_ const GUID* pFormat) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetDuration)(THIS_ LONGLONG* pDuration) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetStopPosition)(THIS_ LONGLONG* pStop) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetCurrentPosition)(THIS_ LONGLONG* pCurrent) PURE; \ | 
|  | STDMETHOD_(HRESULT,ConvertTimeFormat)(THIS_ LONGLONG* pTarget, const GUID* pTargetFormat, LONGLONG Source, const GUID* pSourceFormat) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetPositions)(THIS_ LONGLONG* pCurrent, DWORD dwCurrentFlags, LONGLONG* pStop, DWORD dwStopFlags) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetPositions)(THIS_ LONGLONG* pCurrent, LONGLONG* pStop) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetAvailable)(THIS_ LONGLONG* pEarliest, LONGLONG* pLatest) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetRate)(THIS_ double dRate) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetRate)(THIS_ double* pdRate) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetPreroll)(THIS_ LONGLONG* pllPreroll) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IMediaSeeking_GetCapabilities_Proxy( | 
|  | IMediaSeeking* This, | 
|  | DWORD* pCapabilities); | 
|  | void __RPC_STUB IMediaSeeking_GetCapabilities_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_CheckCapabilities_Proxy( | 
|  | IMediaSeeking* This, | 
|  | DWORD* pCapabilities); | 
|  | void __RPC_STUB IMediaSeeking_CheckCapabilities_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_IsFormatSupported_Proxy( | 
|  | IMediaSeeking* This, | 
|  | const GUID* pFormat); | 
|  | void __RPC_STUB IMediaSeeking_IsFormatSupported_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_QueryPreferredFormat_Proxy( | 
|  | IMediaSeeking* This, | 
|  | GUID* pFormat); | 
|  | void __RPC_STUB IMediaSeeking_QueryPreferredFormat_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_GetTimeFormat_Proxy( | 
|  | IMediaSeeking* This, | 
|  | GUID* pFormat); | 
|  | void __RPC_STUB IMediaSeeking_GetTimeFormat_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_IsUsingTimeFormat_Proxy( | 
|  | IMediaSeeking* This, | 
|  | const GUID* pFormat); | 
|  | void __RPC_STUB IMediaSeeking_IsUsingTimeFormat_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_SetTimeFormat_Proxy( | 
|  | IMediaSeeking* This, | 
|  | const GUID* pFormat); | 
|  | void __RPC_STUB IMediaSeeking_SetTimeFormat_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_GetDuration_Proxy( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pDuration); | 
|  | void __RPC_STUB IMediaSeeking_GetDuration_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_GetStopPosition_Proxy( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pStop); | 
|  | void __RPC_STUB IMediaSeeking_GetStopPosition_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_GetCurrentPosition_Proxy( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pCurrent); | 
|  | void __RPC_STUB IMediaSeeking_GetCurrentPosition_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_ConvertTimeFormat_Proxy( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pTarget, | 
|  | const GUID* pTargetFormat, | 
|  | LONGLONG Source, | 
|  | const GUID* pSourceFormat); | 
|  | void __RPC_STUB IMediaSeeking_ConvertTimeFormat_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_SetPositions_Proxy( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pCurrent, | 
|  | DWORD dwCurrentFlags, | 
|  | LONGLONG* pStop, | 
|  | DWORD dwStopFlags); | 
|  | void __RPC_STUB IMediaSeeking_SetPositions_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_GetPositions_Proxy( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pCurrent, | 
|  | LONGLONG* pStop); | 
|  | void __RPC_STUB IMediaSeeking_GetPositions_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_GetAvailable_Proxy( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pEarliest, | 
|  | LONGLONG* pLatest); | 
|  | void __RPC_STUB IMediaSeeking_GetAvailable_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_SetRate_Proxy( | 
|  | IMediaSeeking* This, | 
|  | double dRate); | 
|  | void __RPC_STUB IMediaSeeking_SetRate_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_GetRate_Proxy( | 
|  | IMediaSeeking* This, | 
|  | double* pdRate); | 
|  | void __RPC_STUB IMediaSeeking_GetRate_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IMediaSeeking_GetPreroll_Proxy( | 
|  | IMediaSeeking* This, | 
|  | LONGLONG* pllPreroll); | 
|  | void __RPC_STUB IMediaSeeking_GetPreroll_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IMediaSeeking_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IMediaSeeking *PMEDIASEEKING; | 
|  |  | 
|  | enum tagAM_MEDIAEVENT_FLAGS { | 
|  | AM_MEDIAEVENT_NONOTIFY = 0x1 | 
|  | }; | 
|  |  | 
|  | #ifndef __IAMAnalogVideoDecoder_FWD_DEFINED__ | 
|  | #define __IAMAnalogVideoDecoder_FWD_DEFINED__ | 
|  | typedef struct IAMAnalogVideoDecoder IAMAnalogVideoDecoder; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMAnalogVideoEncoder_FWD_DEFINED__ | 
|  | #define __IAMAnalogVideoEncoder_FWD_DEFINED__ | 
|  | typedef struct IAMAnalogVideoEncoder IAMAnalogVideoEncoder; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMAudioInputMixer_FWD_DEFINED__ | 
|  | #define __IAMAudioInputMixer_FWD_DEFINED__ | 
|  | typedef struct IAMAudioInputMixer IAMAudioInputMixer; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMAudioRendererStats_FWD_DEFINED__ | 
|  | #define __IAMAudioRendererStats_FWD_DEFINED__ | 
|  | typedef struct IAMAudioRendererStats IAMAudioRendererStats; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMBufferNegotiation_FWD_DEFINED__ | 
|  | #define __IAMBufferNegotiation_FWD_DEFINED__ | 
|  | typedef struct IAMBufferNegotiation IAMBufferNegotiation; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMCameraControl_FWD_DEFINED__ | 
|  | #define __IAMCameraControl_FWD_DEFINED__ | 
|  | typedef struct IAMCameraControl IAMCameraControl; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMCopyCaptureFileProgress_FWD_DEFINED__ | 
|  | #define __IAMCopyCaptureFileProgress_FWD_DEFINED__ | 
|  | typedef struct IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMCrossbar_FWD_DEFINED__ | 
|  | #define __IAMCrossbar_FWD_DEFINED__ | 
|  | typedef struct IAMCrossbar IAMCrossbar; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMDevMemoryAllocator_FWD_DEFINED__ | 
|  | #define __IAMDevMemoryAllocator_FWD_DEFINED__ | 
|  | typedef struct IAMDevMemoryAllocator IAMDevMemoryAllocator; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMDevMemoryControl_FWD_DEFINED__ | 
|  | #define __IAMDevMemoryControl_FWD_DEFINED__ | 
|  | typedef struct IAMDevMemoryControl IAMDevMemoryControl; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMDroppedFrames_FWD_DEFINED__ | 
|  | #define __IAMDroppedFrames_FWD_DEFINED__ | 
|  | typedef struct IAMDroppedFrames IAMDroppedFrames; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMExtDevice_FWD_DEFINED__ | 
|  | #define __IAMExtDevice_FWD_DEFINED__ | 
|  | typedef struct IAMExtDevice IAMExtDevice; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMExtTransport_FWD_DEFINED__ | 
|  | #define __IAMExtTransport_FWD_DEFINED__ | 
|  | typedef struct IAMExtTransport IAMExtTransport; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMGraphStreams_FWD_DEFINED__ | 
|  | #define __IAMGraphStreams_FWD_DEFINED__ | 
|  | typedef struct IAMGraphStreams IAMGraphStreams; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMLatency_FWD_DEFINED__ | 
|  | #define __IAMLatency_FWD_DEFINED__ | 
|  | typedef struct IAMLatency IAMLatency; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMOpenProgress_FWD_DEFINED__ | 
|  | #define __IAMOpenProgress_FWD_DEFINED__ | 
|  | typedef struct IAMOpenProgress IAMOpenProgress; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMOverlayFX_FWD_DEFINED__ | 
|  | #define __IAMOverlayFX_FWD_DEFINED__ | 
|  | typedef struct IAMOverlayFX IAMOverlayFX; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMPhysicalPinInfo_FWD_DEFINED__ | 
|  | #define __IAMPhysicalPinInfo_FWD_DEFINED__ | 
|  | typedef struct IAMPhysicalPinInfo IAMPhysicalPinInfo; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMPushSource_FWD_DEFINED__ | 
|  | #define __IAMPushSource_FWD_DEFINED__ | 
|  | typedef struct IAMPushSource IAMPushSource; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMStreamConfig_FWD_DEFINED__ | 
|  | #define __IAMStreamConfig_FWD_DEFINED__ | 
|  | typedef struct IAMStreamConfig IAMStreamConfig; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMTimecodeDisplay_FWD_DEFINED__ | 
|  | #define __IAMTimecodeDisplay_FWD_DEFINED__ | 
|  | typedef struct IAMTimecodeDisplay IAMTimecodeDisplay; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMTimecodeGenerator_FWD_DEFINED__ | 
|  | #define __IAMTimecodeGenerator_FWD_DEFINED__ | 
|  | typedef struct IAMTimecodeGenerator IAMTimecodeGenerator; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMTimecodeReader_FWD_DEFINED__ | 
|  | #define __IAMTimecodeReader_FWD_DEFINED__ | 
|  | typedef struct IAMTimecodeReader IAMTimecodeReader; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMTVTuner_FWD_DEFINED__ | 
|  | #define __IAMTVTuner_FWD_DEFINED__ | 
|  | typedef struct IAMTVTuner IAMTVTuner; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMVfwCaptureDialogs_FWD_DEFINED__ | 
|  | #define __IAMVfwCaptureDialogs_FWD_DEFINED__ | 
|  | typedef struct IAMVfwCaptureDialogs IAMVfwCaptureDialogs; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMVfwCompressDialogs_FWD_DEFINED__ | 
|  | #define __IAMVfwCompressDialogs_FWD_DEFINED__ | 
|  | typedef struct IAMVfwCompressDialogs IAMVfwCompressDialogs; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMVideoCompression_FWD_DEFINED__ | 
|  | #define __IAMVideoCompression_FWD_DEFINED__ | 
|  | typedef struct IAMVideoCompression IAMVideoCompression; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMVideoDecimationProperties_FWD_DEFINED__ | 
|  | #define __IAMVideoDecimationProperties_FWD_DEFINED__ | 
|  | typedef struct IAMVideoDecimationProperties IAMVideoDecimationProperties; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IAMVideoProcAmp_FWD_DEFINED__ | 
|  | #define __IAMVideoProcAmp_FWD_DEFINED__ | 
|  | typedef struct IAMVideoProcAmp IAMVideoProcAmp; | 
|  | #endif | 
|  |  | 
|  | #ifndef __ICaptureGraphBuilder_FWD_DEFINED__ | 
|  | #define __ICaptureGraphBuilder_FWD_DEFINED__ | 
|  | typedef struct ICaptureGraphBuilder ICaptureGraphBuilder; | 
|  | #endif | 
|  |  | 
|  | #ifndef __ICaptureGraphBuilder2_FWD_DEFINED__ | 
|  | #define __ICaptureGraphBuilder2_FWD_DEFINED__ | 
|  | typedef struct ICaptureGraphBuilder2 ICaptureGraphBuilder2; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IConfigAviMux_FWD_DEFINED__ | 
|  | #define __IConfigAviMux_FWD_DEFINED__ | 
|  | typedef struct IConfigAviMux IConfigAviMux; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IConfigInterleaving_FWD_DEFINED__ | 
|  | #define __IConfigInterleaving_FWD_DEFINED__ | 
|  | typedef struct IConfigInterleaving IConfigInterleaving; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IDecimateVideoImage_FWD_DEFINED__ | 
|  | #define __IDecimateVideoImage_FWD_DEFINED__ | 
|  | typedef struct IDecimateVideoImage IDecimateVideoImage; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IDrawVideoImage_FWD_DEFINED__ | 
|  | #define __IDrawVideoImage_FWD_DEFINED__ | 
|  | typedef struct IDrawVideoImage IDrawVideoImage; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IEnumRegFilters_FWD_DEFINED__ | 
|  | #define __IEnumRegFilters_FWD_DEFINED__ | 
|  | typedef struct IEnumRegFilters IEnumRegFilters; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IEnumStreamIdMap_FWD_DEFINED__ | 
|  | #define __IEnumStreamIdMap_FWD_DEFINED__ | 
|  | typedef struct IEnumStreamIdMap IEnumStreamIdMap; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IFileSourceFilter_FWD_DEFINED__ | 
|  | #define __IFileSourceFilter_FWD_DEFINED__ | 
|  | typedef struct IFileSourceFilter IFileSourceFilter; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IFileSinkFilter_FWD_DEFINED__ | 
|  | #define __IFileSinkFilter_FWD_DEFINED__ | 
|  | typedef struct IFileSinkFilter IFileSinkFilter; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IFileSinkFilter2_FWD_DEFINED__ | 
|  | #define __IFileSinkFilter2_FWD_DEFINED__ | 
|  | typedef struct IFileSinkFilter2 IFileSinkFilter2; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IFilterMapper_FWD_DEFINED__ | 
|  | #define __IFilterMapper_FWD_DEFINED__ | 
|  | typedef struct IFilterMapper IFilterMapper; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IFilterMapper2_FWD_DEFINED__ | 
|  | #define __IFilterMapper2_FWD_DEFINED__ | 
|  | typedef struct IFilterMapper2 IFilterMapper2; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IGraphBuilder_FWD_DEFINED__ | 
|  | #define __IGraphBuilder_FWD_DEFINED__ | 
|  | typedef struct IGraphBuilder IGraphBuilder; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IKsPropertySet_FWD_DEFINED__ | 
|  | #define __IKsPropertySet_FWD_DEFINED__ | 
|  | typedef struct IKsPropertySet IKsPropertySet; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IMediaEventSink_FWD_DEFINED__ | 
|  | #define __IMediaEventSink_FWD_DEFINED__ | 
|  | typedef struct IMediaEventSink IMediaEventSink; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IMpeg2Demultiplexer_FWD_DEFINED__ | 
|  | #define __IMpeg2Demultiplexer_FWD_DEFINED__ | 
|  | typedef struct IMpeg2Demultiplexer IMpeg2Demultiplexer; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IMPEG2StreamIdMap_FWD_DEFINED__ | 
|  | #define __IMPEG2StreamIdMap_FWD_DEFINED__ | 
|  | typedef struct IMPEG2StreamIdMap IMPEG2StreamIdMap; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IOverlay_FWD_DEFINED__ | 
|  | #define __IOverlay_FWD_DEFINED__ | 
|  | typedef struct IOverlay IOverlay; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IOverlayNotify_FWD_DEFINED__ | 
|  | #define __IOverlayNotify_FWD_DEFINED__ | 
|  | typedef struct IOverlayNotify IOverlayNotify; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IOverlayNotify2_FWD_DEFINED__ | 
|  | #define __IOverlayNotify2_FWD_DEFINED__ | 
|  | typedef struct IOverlayNotify2 IOverlayNotify2; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IQualityControl_FWD_DEFINED__ | 
|  | #define __IQualityControl_FWD_DEFINED__ | 
|  | typedef struct IQualityControl IQualityControl; | 
|  | #endif | 
|  |  | 
|  | #ifndef __ISeekingPassThru_FWD_DEFINED__ | 
|  | #define __ISeekingPassThru_FWD_DEFINED__ | 
|  | typedef struct ISeekingPassThru ISeekingPassThru; | 
|  | #endif | 
|  |  | 
|  | typedef struct { | 
|  | CLSID Clsid; | 
|  | LPWSTR Name; | 
|  | } REGFILTER; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IEnumRegFilters interface | 
|  | */ | 
|  | #ifndef __IEnumRegFilters_INTERFACE_DEFINED__ | 
|  | #define __IEnumRegFilters_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IEnumRegFilters, 0x56a868a4, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IEnumRegFilters : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Next( | 
|  | ULONG cFilters, | 
|  | REGFILTER** apRegFilter, | 
|  | ULONG* pcFetched) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Skip( | 
|  | ULONG cFilters) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Reset( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Clone( | 
|  | IEnumRegFilters** ppEnum) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IEnumRegFiltersVtbl IEnumRegFiltersVtbl; | 
|  | struct IEnumRegFilters { | 
|  | const IEnumRegFiltersVtbl* lpVtbl; | 
|  | }; | 
|  | struct IEnumRegFiltersVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IEnumRegFilters* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IEnumRegFilters* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IEnumRegFilters* This); | 
|  |  | 
|  | /*** IEnumRegFilters methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Next)( | 
|  | IEnumRegFilters* This, | 
|  | ULONG cFilters, | 
|  | REGFILTER** apRegFilter, | 
|  | ULONG* pcFetched); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Skip)( | 
|  | IEnumRegFilters* This, | 
|  | ULONG cFilters); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Reset)( | 
|  | IEnumRegFilters* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Clone)( | 
|  | IEnumRegFilters* This, | 
|  | IEnumRegFilters** ppEnum); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IEnumRegFilters_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IEnumRegFilters_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IEnumRegFilters_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IEnumRegFilters methods ***/ | 
|  | #define IEnumRegFilters_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
|  | #define IEnumRegFilters_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
|  | #define IEnumRegFilters_Reset(p) (p)->lpVtbl->Reset(p) | 
|  | #define IEnumRegFilters_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IEnumRegFilters_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IEnumRegFilters methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Next)(THIS_ ULONG cFilters, REGFILTER** apRegFilter, ULONG* pcFetched) PURE; \ | 
|  | STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cFilters) PURE; \ | 
|  | STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,Clone)(THIS_ IEnumRegFilters** ppEnum) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IEnumRegFilters_Next_Proxy( | 
|  | IEnumRegFilters* This, | 
|  | ULONG cFilters, | 
|  | REGFILTER** apRegFilter, | 
|  | ULONG* pcFetched); | 
|  | void __RPC_STUB IEnumRegFilters_Next_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumRegFilters_Skip_Proxy( | 
|  | IEnumRegFilters* This, | 
|  | ULONG cFilters); | 
|  | void __RPC_STUB IEnumRegFilters_Skip_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumRegFilters_Reset_Proxy( | 
|  | IEnumRegFilters* This); | 
|  | void __RPC_STUB IEnumRegFilters_Reset_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IEnumRegFilters_Clone_Proxy( | 
|  | IEnumRegFilters* This, | 
|  | IEnumRegFilters** ppEnum); | 
|  | void __RPC_STUB IEnumRegFilters_Clone_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IEnumRegFilters_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IEnumRegFilters *PENUMREGFILTERS; | 
|  |  | 
|  | enum { | 
|  | MERIT_PREFERRED = 0x800000, | 
|  | MERIT_NORMAL = 0x600000, | 
|  | MERIT_UNLIKELY = 0x400000, | 
|  | MERIT_DO_NOT_USE = 0x200000, | 
|  | MERIT_SW_COMPRESSOR = 0x100000, | 
|  | MERIT_HW_COMPRESSOR = 0x100050 | 
|  | }; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IFilterMapper interface | 
|  | */ | 
|  | #ifndef __IFilterMapper_INTERFACE_DEFINED__ | 
|  | #define __IFilterMapper_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IFilterMapper, 0x56a868a3, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IFilterMapper : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE RegisterFilter( | 
|  | CLSID clsid, | 
|  | LPCWSTR Name, | 
|  | DWORD dwMerit) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RegisterFilterInstance( | 
|  | CLSID clsid, | 
|  | LPCWSTR Name, | 
|  | CLSID* MRId) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RegisterPin( | 
|  | CLSID Filter, | 
|  | LPCWSTR Name, | 
|  | BOOL bRendered, | 
|  | BOOL bOutput, | 
|  | BOOL bZero, | 
|  | BOOL bMany, | 
|  | CLSID ConnectsToFilter, | 
|  | LPCWSTR ConnectsToPin) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RegisterPinType( | 
|  | CLSID clsFilter, | 
|  | LPCWSTR strName, | 
|  | CLSID clsMajorType, | 
|  | CLSID clsSubType) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE UnregisterFilter( | 
|  | CLSID Filter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE UnregisterFilterInstance( | 
|  | CLSID MRId) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE UnregisterPin( | 
|  | CLSID Filter, | 
|  | LPCWSTR Name) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE EnumMatchingFilters( | 
|  | IEnumRegFilters** ppEnum, | 
|  | DWORD dwMerit, | 
|  | BOOL bInputNeeded, | 
|  | CLSID clsInMaj, | 
|  | CLSID clsInSub, | 
|  | BOOL bRender, | 
|  | BOOL bOututNeeded, | 
|  | CLSID clsOutMaj, | 
|  | CLSID clsOutSub) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IFilterMapperVtbl IFilterMapperVtbl; | 
|  | struct IFilterMapper { | 
|  | const IFilterMapperVtbl* lpVtbl; | 
|  | }; | 
|  | struct IFilterMapperVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IFilterMapper* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IFilterMapper* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IFilterMapper* This); | 
|  |  | 
|  | /*** IFilterMapper methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *RegisterFilter)( | 
|  | IFilterMapper* This, | 
|  | CLSID clsid, | 
|  | LPCWSTR Name, | 
|  | DWORD dwMerit); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RegisterFilterInstance)( | 
|  | IFilterMapper* This, | 
|  | CLSID clsid, | 
|  | LPCWSTR Name, | 
|  | CLSID* MRId); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RegisterPin)( | 
|  | IFilterMapper* This, | 
|  | CLSID Filter, | 
|  | LPCWSTR Name, | 
|  | BOOL bRendered, | 
|  | BOOL bOutput, | 
|  | BOOL bZero, | 
|  | BOOL bMany, | 
|  | CLSID ConnectsToFilter, | 
|  | LPCWSTR ConnectsToPin); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RegisterPinType)( | 
|  | IFilterMapper* This, | 
|  | CLSID clsFilter, | 
|  | LPCWSTR strName, | 
|  | CLSID clsMajorType, | 
|  | CLSID clsSubType); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *UnregisterFilter)( | 
|  | IFilterMapper* This, | 
|  | CLSID Filter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *UnregisterFilterInstance)( | 
|  | IFilterMapper* This, | 
|  | CLSID MRId); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *UnregisterPin)( | 
|  | IFilterMapper* This, | 
|  | CLSID Filter, | 
|  | LPCWSTR Name); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EnumMatchingFilters)( | 
|  | IFilterMapper* This, | 
|  | IEnumRegFilters** ppEnum, | 
|  | DWORD dwMerit, | 
|  | BOOL bInputNeeded, | 
|  | CLSID clsInMaj, | 
|  | CLSID clsInSub, | 
|  | BOOL bRender, | 
|  | BOOL bOututNeeded, | 
|  | CLSID clsOutMaj, | 
|  | CLSID clsOutSub); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IFilterMapper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IFilterMapper_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IFilterMapper_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IFilterMapper methods ***/ | 
|  | #define IFilterMapper_RegisterFilter(p,a,b,c) (p)->lpVtbl->RegisterFilter(p,a,b,c) | 
|  | #define IFilterMapper_RegisterFilterInstance(p,a,b,c) (p)->lpVtbl->RegisterFilterInstance(p,a,b,c) | 
|  | #define IFilterMapper_RegisterPin(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->RegisterPin(p,a,b,c,d,e,f,g,h) | 
|  | #define IFilterMapper_RegisterPinType(p,a,b,c,d) (p)->lpVtbl->RegisterPinType(p,a,b,c,d) | 
|  | #define IFilterMapper_UnregisterFilter(p,a) (p)->lpVtbl->UnregisterFilter(p,a) | 
|  | #define IFilterMapper_UnregisterFilterInstance(p,a) (p)->lpVtbl->UnregisterFilterInstance(p,a) | 
|  | #define IFilterMapper_UnregisterPin(p,a,b) (p)->lpVtbl->UnregisterPin(p,a,b) | 
|  | #define IFilterMapper_EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IFilterMapper_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IFilterMapper methods ***/ \ | 
|  | STDMETHOD_(HRESULT,RegisterFilter)(THIS_ CLSID clsid, LPCWSTR Name, DWORD dwMerit) PURE; \ | 
|  | STDMETHOD_(HRESULT,RegisterFilterInstance)(THIS_ CLSID clsid, LPCWSTR Name, CLSID* MRId) PURE; \ | 
|  | STDMETHOD_(HRESULT,RegisterPin)(THIS_ CLSID Filter, LPCWSTR Name, BOOL bRendered, BOOL bOutput, BOOL bZero, BOOL bMany, CLSID ConnectsToFilter, LPCWSTR ConnectsToPin) PURE; \ | 
|  | STDMETHOD_(HRESULT,RegisterPinType)(THIS_ CLSID clsFilter, LPCWSTR strName, CLSID clsMajorType, CLSID clsSubType) PURE; \ | 
|  | STDMETHOD_(HRESULT,UnregisterFilter)(THIS_ CLSID Filter) PURE; \ | 
|  | STDMETHOD_(HRESULT,UnregisterFilterInstance)(THIS_ CLSID MRId) PURE; \ | 
|  | STDMETHOD_(HRESULT,UnregisterPin)(THIS_ CLSID Filter, LPCWSTR Name) PURE; \ | 
|  | STDMETHOD_(HRESULT,EnumMatchingFilters)(THIS_ IEnumRegFilters** ppEnum, DWORD dwMerit, BOOL bInputNeeded, CLSID clsInMaj, CLSID clsInSub, BOOL bRender, BOOL bOututNeeded, CLSID clsOutMaj, CLSID clsOutSub) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IFilterMapper_RegisterFilter_Proxy( | 
|  | IFilterMapper* This, | 
|  | CLSID clsid, | 
|  | LPCWSTR Name, | 
|  | DWORD dwMerit); | 
|  | void __RPC_STUB IFilterMapper_RegisterFilter_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterMapper_RegisterFilterInstance_Proxy( | 
|  | IFilterMapper* This, | 
|  | CLSID clsid, | 
|  | LPCWSTR Name, | 
|  | CLSID* MRId); | 
|  | void __RPC_STUB IFilterMapper_RegisterFilterInstance_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterMapper_RegisterPin_Proxy( | 
|  | IFilterMapper* This, | 
|  | CLSID Filter, | 
|  | LPCWSTR Name, | 
|  | BOOL bRendered, | 
|  | BOOL bOutput, | 
|  | BOOL bZero, | 
|  | BOOL bMany, | 
|  | CLSID ConnectsToFilter, | 
|  | LPCWSTR ConnectsToPin); | 
|  | void __RPC_STUB IFilterMapper_RegisterPin_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterMapper_RegisterPinType_Proxy( | 
|  | IFilterMapper* This, | 
|  | CLSID clsFilter, | 
|  | LPCWSTR strName, | 
|  | CLSID clsMajorType, | 
|  | CLSID clsSubType); | 
|  | void __RPC_STUB IFilterMapper_RegisterPinType_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterMapper_UnregisterFilter_Proxy( | 
|  | IFilterMapper* This, | 
|  | CLSID Filter); | 
|  | void __RPC_STUB IFilterMapper_UnregisterFilter_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterMapper_UnregisterFilterInstance_Proxy( | 
|  | IFilterMapper* This, | 
|  | CLSID MRId); | 
|  | void __RPC_STUB IFilterMapper_UnregisterFilterInstance_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterMapper_UnregisterPin_Proxy( | 
|  | IFilterMapper* This, | 
|  | CLSID Filter, | 
|  | LPCWSTR Name); | 
|  | void __RPC_STUB IFilterMapper_UnregisterPin_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterMapper_EnumMatchingFilters_Proxy( | 
|  | IFilterMapper* This, | 
|  | IEnumRegFilters** ppEnum, | 
|  | DWORD dwMerit, | 
|  | BOOL bInputNeeded, | 
|  | CLSID clsInMaj, | 
|  | CLSID clsInSub, | 
|  | BOOL bRender, | 
|  | BOOL bOututNeeded, | 
|  | CLSID clsOutMaj, | 
|  | CLSID clsOutSub); | 
|  | void __RPC_STUB IFilterMapper_EnumMatchingFilters_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IFilterMapper_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef struct { | 
|  | const CLSID *clsMajorType; | 
|  | const CLSID *clsMinorType; | 
|  | } REGPINTYPES; | 
|  |  | 
|  | typedef struct { | 
|  | LPWSTR strName; | 
|  | BOOL bRendered; | 
|  | BOOL bOutput; | 
|  | BOOL bZero; | 
|  | BOOL bMany; | 
|  | const CLSID *clsConnectsToFilter; | 
|  | const WCHAR *strConnectsToPin; | 
|  | UINT nMediaTypes; | 
|  | const REGPINTYPES *lpMediaType; | 
|  | } REGFILTERPINS; | 
|  |  | 
|  | typedef struct { | 
|  | CLSID clsMedium; | 
|  | DWORD dw1; | 
|  | DWORD dw2; | 
|  | } REGPINMEDIUM; | 
|  |  | 
|  | enum { | 
|  | REG_PINFLAG_B_ZERO = 0x1, | 
|  | REG_PINFLAG_B_RENDERER = 0x2, | 
|  | REG_PINFLAG_B_MANY = 0x4, | 
|  | REG_PINFLAG_B_OUTPUT = 0x8 | 
|  | }; | 
|  |  | 
|  | typedef struct { | 
|  | DWORD dwFlags; | 
|  | UINT cInstances; | 
|  | UINT nMediaTypes; | 
|  | const REGPINTYPES *lpMediaType; | 
|  | UINT nMediums; | 
|  | const REGPINMEDIUM *lpMedium; | 
|  | const CLSID *clsPinCategory; | 
|  | } REGFILTERPINS2; | 
|  |  | 
|  | typedef struct { | 
|  | DWORD dwVersion; | 
|  | DWORD dwMerit; | 
|  | union { | 
|  | struct { | 
|  | ULONG cPins; | 
|  | const REGFILTERPINS *rgPins; | 
|  | } DUMMYSTRUCTNAME; | 
|  | struct { | 
|  | ULONG cPins2; | 
|  | const REGFILTERPINS2 *rgPins2; | 
|  | } DUMMYSTRUCTNAME1; | 
|  | } DUMMYUNIONNAME; | 
|  | } REGFILTER2; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IFilterMapper2 interface | 
|  | */ | 
|  | #ifndef __IFilterMapper2_INTERFACE_DEFINED__ | 
|  | #define __IFilterMapper2_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IFilterMapper2, 0xb79bb0b0, 0x33c1, 0x11d1, 0xab,0xe1, 0x00,0xa0,0xc9,0x05,0xf3,0x75); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IFilterMapper2 : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE CreateCategory( | 
|  | REFCLSID clsidCategory, | 
|  | DWORD dwCategoryMerit, | 
|  | LPCWSTR Description) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE UnregisterFilter( | 
|  | const CLSID* pclsidCategory, | 
|  | const OLECHAR* szInstance, | 
|  | REFCLSID Filter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RegisterFilter( | 
|  | REFCLSID clsidFilter, | 
|  | LPCWSTR Name, | 
|  | IMoniker** ppMoniker, | 
|  | const CLSID* pclsidCategory, | 
|  | const OLECHAR* szInstance, | 
|  | const REGFILTER2* prf2) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE EnumMatchingFilters( | 
|  | IEnumMoniker** ppEnum, | 
|  | DWORD dwFlags, | 
|  | BOOL bExactMatch, | 
|  | DWORD dwMerit, | 
|  | BOOL bInputNeeded, | 
|  | DWORD cInputTypes, | 
|  | const GUID* pInputTypes, | 
|  | const REGPINMEDIUM* pMedIn, | 
|  | const CLSID* pPinCategoryIn, | 
|  | BOOL bRender, | 
|  | BOOL bOutputNeeded, | 
|  | DWORD cOutputTypes, | 
|  | const GUID* pOutputTypes, | 
|  | const REGPINMEDIUM* pMedOut, | 
|  | const CLSID* pPinCategoryOut) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IFilterMapper2Vtbl IFilterMapper2Vtbl; | 
|  | struct IFilterMapper2 { | 
|  | const IFilterMapper2Vtbl* lpVtbl; | 
|  | }; | 
|  | struct IFilterMapper2Vtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IFilterMapper2* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IFilterMapper2* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IFilterMapper2* This); | 
|  |  | 
|  | /*** IFilterMapper2 methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *CreateCategory)( | 
|  | IFilterMapper2* This, | 
|  | REFCLSID clsidCategory, | 
|  | DWORD dwCategoryMerit, | 
|  | LPCWSTR Description); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *UnregisterFilter)( | 
|  | IFilterMapper2* This, | 
|  | const CLSID* pclsidCategory, | 
|  | const OLECHAR* szInstance, | 
|  | REFCLSID Filter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RegisterFilter)( | 
|  | IFilterMapper2* This, | 
|  | REFCLSID clsidFilter, | 
|  | LPCWSTR Name, | 
|  | IMoniker** ppMoniker, | 
|  | const CLSID* pclsidCategory, | 
|  | const OLECHAR* szInstance, | 
|  | const REGFILTER2* prf2); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EnumMatchingFilters)( | 
|  | IFilterMapper2* This, | 
|  | IEnumMoniker** ppEnum, | 
|  | DWORD dwFlags, | 
|  | BOOL bExactMatch, | 
|  | DWORD dwMerit, | 
|  | BOOL bInputNeeded, | 
|  | DWORD cInputTypes, | 
|  | const GUID* pInputTypes, | 
|  | const REGPINMEDIUM* pMedIn, | 
|  | const CLSID* pPinCategoryIn, | 
|  | BOOL bRender, | 
|  | BOOL bOutputNeeded, | 
|  | DWORD cOutputTypes, | 
|  | const GUID* pOutputTypes, | 
|  | const REGPINMEDIUM* pMedOut, | 
|  | const CLSID* pPinCategoryOut); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IFilterMapper2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IFilterMapper2_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IFilterMapper2_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IFilterMapper2 methods ***/ | 
|  | #define IFilterMapper2_CreateCategory(p,a,b,c) (p)->lpVtbl->CreateCategory(p,a,b,c) | 
|  | #define IFilterMapper2_UnregisterFilter(p,a,b,c) (p)->lpVtbl->UnregisterFilter(p,a,b,c) | 
|  | #define IFilterMapper2_RegisterFilter(p,a,b,c,d,e,f) (p)->lpVtbl->RegisterFilter(p,a,b,c,d,e,f) | 
|  | #define IFilterMapper2_EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) (p)->lpVtbl->EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IFilterMapper2_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IFilterMapper2 methods ***/ \ | 
|  | STDMETHOD_(HRESULT,CreateCategory)(THIS_ REFCLSID clsidCategory, DWORD dwCategoryMerit, LPCWSTR Description) PURE; \ | 
|  | STDMETHOD_(HRESULT,UnregisterFilter)(THIS_ const CLSID* pclsidCategory, const OLECHAR* szInstance, REFCLSID Filter) PURE; \ | 
|  | STDMETHOD_(HRESULT,RegisterFilter)(THIS_ REFCLSID clsidFilter, LPCWSTR Name, IMoniker** ppMoniker, const CLSID* pclsidCategory, const OLECHAR* szInstance, const REGFILTER2* prf2) PURE; \ | 
|  | STDMETHOD_(HRESULT,EnumMatchingFilters)(THIS_ IEnumMoniker** ppEnum, DWORD dwFlags, BOOL bExactMatch, DWORD dwMerit, BOOL bInputNeeded, DWORD cInputTypes, const GUID* pInputTypes, const REGPINMEDIUM* pMedIn, const CLSID* pPinCategoryIn, BOOL bRender, BOOL bOutputNeeded, DWORD cOutputTypes, const GUID* pOutputTypes, const REGPINMEDIUM* pMedOut, const CLSID* pPinCategoryOut) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IFilterMapper2_CreateCategory_Proxy( | 
|  | IFilterMapper2* This, | 
|  | REFCLSID clsidCategory, | 
|  | DWORD dwCategoryMerit, | 
|  | LPCWSTR Description); | 
|  | void __RPC_STUB IFilterMapper2_CreateCategory_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterMapper2_UnregisterFilter_Proxy( | 
|  | IFilterMapper2* This, | 
|  | const CLSID* pclsidCategory, | 
|  | const OLECHAR* szInstance, | 
|  | REFCLSID Filter); | 
|  | void __RPC_STUB IFilterMapper2_UnregisterFilter_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterMapper2_RegisterFilter_Proxy( | 
|  | IFilterMapper2* This, | 
|  | REFCLSID clsidFilter, | 
|  | LPCWSTR Name, | 
|  | IMoniker** ppMoniker, | 
|  | const CLSID* pclsidCategory, | 
|  | const OLECHAR* szInstance, | 
|  | const REGFILTER2* prf2); | 
|  | void __RPC_STUB IFilterMapper2_RegisterFilter_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterMapper2_EnumMatchingFilters_Proxy( | 
|  | IFilterMapper2* This, | 
|  | IEnumMoniker** ppEnum, | 
|  | DWORD dwFlags, | 
|  | BOOL bExactMatch, | 
|  | DWORD dwMerit, | 
|  | BOOL bInputNeeded, | 
|  | DWORD cInputTypes, | 
|  | const GUID* pInputTypes, | 
|  | const REGPINMEDIUM* pMedIn, | 
|  | const CLSID* pPinCategoryIn, | 
|  | BOOL bRender, | 
|  | BOOL bOutputNeeded, | 
|  | DWORD cOutputTypes, | 
|  | const GUID* pOutputTypes, | 
|  | const REGPINMEDIUM* pMedOut, | 
|  | const CLSID* pPinCategoryOut); | 
|  | void __RPC_STUB IFilterMapper2_EnumMatchingFilters_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IFilterMapper2_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #ifndef __IFilterMapper3_FWD_DEFINED__ | 
|  | #define __IFilterMapper3_FWD_DEFINED__ | 
|  | typedef struct IFilterMapper3 IFilterMapper3; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IFilterMapper3 interface | 
|  | */ | 
|  | #ifndef __IFilterMapper3_INTERFACE_DEFINED__ | 
|  | #define __IFilterMapper3_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IFilterMapper3, 0xb79bb0b1, 0x33c1, 0x11d1, 0xab,0xe1, 0x00,0xa0,0xc9,0x05,0xf3,0x75); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IFilterMapper3 : public IFilterMapper2 | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE GetICreateDevEnum( | 
|  | ICreateDevEnum** ppEnum) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IFilterMapper3Vtbl IFilterMapper3Vtbl; | 
|  | struct IFilterMapper3 { | 
|  | const IFilterMapper3Vtbl* lpVtbl; | 
|  | }; | 
|  | struct IFilterMapper3Vtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IFilterMapper3* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IFilterMapper3* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IFilterMapper3* This); | 
|  |  | 
|  | /*** IFilterMapper2 methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *CreateCategory)( | 
|  | IFilterMapper3* This, | 
|  | REFCLSID clsidCategory, | 
|  | DWORD dwCategoryMerit, | 
|  | LPCWSTR Description); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *UnregisterFilter)( | 
|  | IFilterMapper3* This, | 
|  | const CLSID* pclsidCategory, | 
|  | const OLECHAR* szInstance, | 
|  | REFCLSID Filter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RegisterFilter)( | 
|  | IFilterMapper3* This, | 
|  | REFCLSID clsidFilter, | 
|  | LPCWSTR Name, | 
|  | IMoniker** ppMoniker, | 
|  | const CLSID* pclsidCategory, | 
|  | const OLECHAR* szInstance, | 
|  | const REGFILTER2* prf2); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EnumMatchingFilters)( | 
|  | IFilterMapper3* This, | 
|  | IEnumMoniker** ppEnum, | 
|  | DWORD dwFlags, | 
|  | BOOL bExactMatch, | 
|  | DWORD dwMerit, | 
|  | BOOL bInputNeeded, | 
|  | DWORD cInputTypes, | 
|  | const GUID* pInputTypes, | 
|  | const REGPINMEDIUM* pMedIn, | 
|  | const CLSID* pPinCategoryIn, | 
|  | BOOL bRender, | 
|  | BOOL bOutputNeeded, | 
|  | DWORD cOutputTypes, | 
|  | const GUID* pOutputTypes, | 
|  | const REGPINMEDIUM* pMedOut, | 
|  | const CLSID* pPinCategoryOut); | 
|  |  | 
|  | /*** IFilterMapper3 methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *GetICreateDevEnum)( | 
|  | IFilterMapper3* This, | 
|  | ICreateDevEnum** ppEnum); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IFilterMapper3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IFilterMapper3_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IFilterMapper3_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IFilterMapper2 methods ***/ | 
|  | #define IFilterMapper3_CreateCategory(p,a,b,c) (p)->lpVtbl->CreateCategory(p,a,b,c) | 
|  | #define IFilterMapper3_UnregisterFilter(p,a,b,c) (p)->lpVtbl->UnregisterFilter(p,a,b,c) | 
|  | #define IFilterMapper3_RegisterFilter(p,a,b,c,d,e,f) (p)->lpVtbl->RegisterFilter(p,a,b,c,d,e,f) | 
|  | #define IFilterMapper3_EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) (p)->lpVtbl->EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) | 
|  | /*** IFilterMapper3 methods ***/ | 
|  | #define IFilterMapper3_GetICreateDevEnum(p,a) (p)->lpVtbl->GetICreateDevEnum(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IFilterMapper3_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IFilterMapper2 methods ***/ \ | 
|  | STDMETHOD_(HRESULT,CreateCategory)(THIS_ REFCLSID clsidCategory, DWORD dwCategoryMerit, LPCWSTR Description) PURE; \ | 
|  | STDMETHOD_(HRESULT,UnregisterFilter)(THIS_ const CLSID* pclsidCategory, const OLECHAR* szInstance, REFCLSID Filter) PURE; \ | 
|  | STDMETHOD_(HRESULT,RegisterFilter)(THIS_ REFCLSID clsidFilter, LPCWSTR Name, IMoniker** ppMoniker, const CLSID* pclsidCategory, const OLECHAR* szInstance, const REGFILTER2* prf2) PURE; \ | 
|  | STDMETHOD_(HRESULT,EnumMatchingFilters)(THIS_ IEnumMoniker** ppEnum, DWORD dwFlags, BOOL bExactMatch, DWORD dwMerit, BOOL bInputNeeded, DWORD cInputTypes, const GUID* pInputTypes, const REGPINMEDIUM* pMedIn, const CLSID* pPinCategoryIn, BOOL bRender, BOOL bOutputNeeded, DWORD cOutputTypes, const GUID* pOutputTypes, const REGPINMEDIUM* pMedOut, const CLSID* pPinCategoryOut) PURE; \ | 
|  | /*** IFilterMapper3 methods ***/ \ | 
|  | STDMETHOD_(HRESULT,GetICreateDevEnum)(THIS_ ICreateDevEnum** ppEnum) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IFilterMapper3_GetICreateDevEnum_Proxy( | 
|  | IFilterMapper3* This, | 
|  | ICreateDevEnum** ppEnum); | 
|  | void __RPC_STUB IFilterMapper3_GetICreateDevEnum_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IFilterMapper3_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef enum tagQualityMessageType { | 
|  | Famine, | 
|  | Flood | 
|  | } QualityMessageType; | 
|  |  | 
|  | typedef struct tagQuality { | 
|  | QualityMessageType Type; | 
|  | long Proportion; | 
|  | REFERENCE_TIME Late; | 
|  | REFERENCE_TIME TimeStamp; | 
|  | } Quality; | 
|  |  | 
|  | typedef IQualityControl *PQUALITYCONTROL; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IQualityControl interface | 
|  | */ | 
|  | #ifndef __IQualityControl_INTERFACE_DEFINED__ | 
|  | #define __IQualityControl_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IQualityControl, 0x56a868a5, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IQualityControl : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Notify( | 
|  | IBaseFilter* pSelf, | 
|  | Quality q) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetSink( | 
|  | IQualityControl* piqc) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IQualityControlVtbl IQualityControlVtbl; | 
|  | struct IQualityControl { | 
|  | const IQualityControlVtbl* lpVtbl; | 
|  | }; | 
|  | struct IQualityControlVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IQualityControl* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IQualityControl* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IQualityControl* This); | 
|  |  | 
|  | /*** IQualityControl methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Notify)( | 
|  | IQualityControl* This, | 
|  | IBaseFilter* pSelf, | 
|  | Quality q); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetSink)( | 
|  | IQualityControl* This, | 
|  | IQualityControl* piqc); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IQualityControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IQualityControl_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IQualityControl_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IQualityControl methods ***/ | 
|  | #define IQualityControl_Notify(p,a,b) (p)->lpVtbl->Notify(p,a,b) | 
|  | #define IQualityControl_SetSink(p,a) (p)->lpVtbl->SetSink(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IQualityControl_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IQualityControl methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Notify)(THIS_ IBaseFilter* pSelf, Quality q) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetSink)(THIS_ IQualityControl* piqc) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IQualityControl_Notify_Proxy( | 
|  | IQualityControl* This, | 
|  | IBaseFilter* pSelf, | 
|  | Quality q); | 
|  | void __RPC_STUB IQualityControl_Notify_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IQualityControl_SetSink_Proxy( | 
|  | IQualityControl* This, | 
|  | IQualityControl* piqc); | 
|  | void __RPC_STUB IQualityControl_SetSink_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IQualityControl_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | enum { | 
|  | CK_NOCOLORKEY = 0x0, | 
|  | CK_INDEX = 0x1, | 
|  | CK_RGB = 0x2 | 
|  | }; | 
|  |  | 
|  | typedef struct tagCOLORKEY { | 
|  | DWORD KeyType; | 
|  | DWORD PaletteIndex; | 
|  | COLORREF LowColorValue; | 
|  | COLORREF HighColorValue; | 
|  | } COLORKEY; | 
|  |  | 
|  | enum { | 
|  | ADVISE_NONE = 0x0, | 
|  | ADVISE_CLIPPING = 0x1, | 
|  | ADVISE_PALETTE = 0x2, | 
|  | ADVISE_COLORKEY = 0x4, | 
|  | ADVISE_POSITION = 0x8, | 
|  | ADVISE_DISPLAY_CHANGE = 0x10 | 
|  | }; | 
|  |  | 
|  | #define ADVISE_ALL (((ADVISE_CLIPPING | ADVISE_PALETTE) | ADVISE_COLORKEY) | ADVISE_POSITION) | 
|  |  | 
|  | #define ADVISE_ALL2 (ADVISE_ALL | ADVISE_DISPLAY_CHANGE) | 
|  |  | 
|  | #ifndef _WINGDI_ | 
|  | typedef struct _RGNDATAHEADER { | 
|  | DWORD dwSize; | 
|  | DWORD iType; | 
|  | DWORD nCount; | 
|  | DWORD nRgnSize; | 
|  | RECT rcBound; | 
|  | } RGNDATAHEADER; | 
|  |  | 
|  | typedef struct _RGNDATA { | 
|  | RGNDATAHEADER rdh; | 
|  | char Buffer[1]; | 
|  | } RGNDATA; | 
|  |  | 
|  | #endif /* _WINGDI_ */ | 
|  | /***************************************************************************** | 
|  | * IOverlayNotify interface | 
|  | */ | 
|  | #ifndef __IOverlayNotify_INTERFACE_DEFINED__ | 
|  | #define __IOverlayNotify_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IOverlayNotify, 0x56a868a0, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IOverlayNotify : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE OnPaletteChange( | 
|  | DWORD dwColors, | 
|  | const PALETTEENTRY* pPalette) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE OnClipChange( | 
|  | const RECT* pSourceRect, | 
|  | const RECT* pDestinationRect, | 
|  | const RGNDATA* pRgnData) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE OnColorKeyChange( | 
|  | const COLORKEY* pColorKey) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE OnPositionChange( | 
|  | const RECT* pSourceRect, | 
|  | const RECT* pDestinationRect) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IOverlayNotifyVtbl IOverlayNotifyVtbl; | 
|  | struct IOverlayNotify { | 
|  | const IOverlayNotifyVtbl* lpVtbl; | 
|  | }; | 
|  | struct IOverlayNotifyVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IOverlayNotify* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IOverlayNotify* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IOverlayNotify* This); | 
|  |  | 
|  | /*** IOverlayNotify methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *OnPaletteChange)( | 
|  | IOverlayNotify* This, | 
|  | DWORD dwColors, | 
|  | const PALETTEENTRY* pPalette); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *OnClipChange)( | 
|  | IOverlayNotify* This, | 
|  | const RECT* pSourceRect, | 
|  | const RECT* pDestinationRect, | 
|  | const RGNDATA* pRgnData); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *OnColorKeyChange)( | 
|  | IOverlayNotify* This, | 
|  | const COLORKEY* pColorKey); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *OnPositionChange)( | 
|  | IOverlayNotify* This, | 
|  | const RECT* pSourceRect, | 
|  | const RECT* pDestinationRect); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IOverlayNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IOverlayNotify_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IOverlayNotify_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IOverlayNotify methods ***/ | 
|  | #define IOverlayNotify_OnPaletteChange(p,a,b) (p)->lpVtbl->OnPaletteChange(p,a,b) | 
|  | #define IOverlayNotify_OnClipChange(p,a,b,c) (p)->lpVtbl->OnClipChange(p,a,b,c) | 
|  | #define IOverlayNotify_OnColorKeyChange(p,a) (p)->lpVtbl->OnColorKeyChange(p,a) | 
|  | #define IOverlayNotify_OnPositionChange(p,a,b) (p)->lpVtbl->OnPositionChange(p,a,b) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IOverlayNotify_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IOverlayNotify methods ***/ \ | 
|  | STDMETHOD_(HRESULT,OnPaletteChange)(THIS_ DWORD dwColors, const PALETTEENTRY* pPalette) PURE; \ | 
|  | STDMETHOD_(HRESULT,OnClipChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect, const RGNDATA* pRgnData) PURE; \ | 
|  | STDMETHOD_(HRESULT,OnColorKeyChange)(THIS_ const COLORKEY* pColorKey) PURE; \ | 
|  | STDMETHOD_(HRESULT,OnPositionChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IOverlayNotify_OnPaletteChange_Proxy( | 
|  | IOverlayNotify* This, | 
|  | DWORD dwColors, | 
|  | const PALETTEENTRY* pPalette); | 
|  | void __RPC_STUB IOverlayNotify_OnPaletteChange_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlayNotify_OnClipChange_Proxy( | 
|  | IOverlayNotify* This, | 
|  | const RECT* pSourceRect, | 
|  | const RECT* pDestinationRect, | 
|  | const RGNDATA* pRgnData); | 
|  | void __RPC_STUB IOverlayNotify_OnClipChange_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlayNotify_OnColorKeyChange_Proxy( | 
|  | IOverlayNotify* This, | 
|  | const COLORKEY* pColorKey); | 
|  | void __RPC_STUB IOverlayNotify_OnColorKeyChange_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlayNotify_OnPositionChange_Proxy( | 
|  | IOverlayNotify* This, | 
|  | const RECT* pSourceRect, | 
|  | const RECT* pDestinationRect); | 
|  | void __RPC_STUB IOverlayNotify_OnPositionChange_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IOverlayNotify_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IOverlayNotify *POVERLAYNOTIFY; | 
|  |  | 
|  | #if 0 | 
|  | typedef HANDLE HMONITOR; | 
|  |  | 
|  | #endif /* 0 */ | 
|  | /***************************************************************************** | 
|  | * IOverlayNotify2 interface | 
|  | */ | 
|  | #ifndef __IOverlayNotify2_INTERFACE_DEFINED__ | 
|  | #define __IOverlayNotify2_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IOverlayNotify2, 0x680efa10, 0xd535, 0x11d1, 0x87,0xc8, 0x00,0xa0,0xc9,0x22,0x31,0x96); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IOverlayNotify2 : public IOverlayNotify | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE OnDisplayChange( | 
|  | HMONITOR hMonitor) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IOverlayNotify2Vtbl IOverlayNotify2Vtbl; | 
|  | struct IOverlayNotify2 { | 
|  | const IOverlayNotify2Vtbl* lpVtbl; | 
|  | }; | 
|  | struct IOverlayNotify2Vtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IOverlayNotify2* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IOverlayNotify2* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IOverlayNotify2* This); | 
|  |  | 
|  | /*** IOverlayNotify methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *OnPaletteChange)( | 
|  | IOverlayNotify2* This, | 
|  | DWORD dwColors, | 
|  | const PALETTEENTRY* pPalette); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *OnClipChange)( | 
|  | IOverlayNotify2* This, | 
|  | const RECT* pSourceRect, | 
|  | const RECT* pDestinationRect, | 
|  | const RGNDATA* pRgnData); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *OnColorKeyChange)( | 
|  | IOverlayNotify2* This, | 
|  | const COLORKEY* pColorKey); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *OnPositionChange)( | 
|  | IOverlayNotify2* This, | 
|  | const RECT* pSourceRect, | 
|  | const RECT* pDestinationRect); | 
|  |  | 
|  | /*** IOverlayNotify2 methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *OnDisplayChange)( | 
|  | IOverlayNotify2* This, | 
|  | HMONITOR hMonitor); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IOverlayNotify2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IOverlayNotify2_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IOverlayNotify2_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IOverlayNotify methods ***/ | 
|  | #define IOverlayNotify2_OnPaletteChange(p,a,b) (p)->lpVtbl->OnPaletteChange(p,a,b) | 
|  | #define IOverlayNotify2_OnClipChange(p,a,b,c) (p)->lpVtbl->OnClipChange(p,a,b,c) | 
|  | #define IOverlayNotify2_OnColorKeyChange(p,a) (p)->lpVtbl->OnColorKeyChange(p,a) | 
|  | #define IOverlayNotify2_OnPositionChange(p,a,b) (p)->lpVtbl->OnPositionChange(p,a,b) | 
|  | /*** IOverlayNotify2 methods ***/ | 
|  | #define IOverlayNotify2_OnDisplayChange(p,a) (p)->lpVtbl->OnDisplayChange(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IOverlayNotify2_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IOverlayNotify methods ***/ \ | 
|  | STDMETHOD_(HRESULT,OnPaletteChange)(THIS_ DWORD dwColors, const PALETTEENTRY* pPalette) PURE; \ | 
|  | STDMETHOD_(HRESULT,OnClipChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect, const RGNDATA* pRgnData) PURE; \ | 
|  | STDMETHOD_(HRESULT,OnColorKeyChange)(THIS_ const COLORKEY* pColorKey) PURE; \ | 
|  | STDMETHOD_(HRESULT,OnPositionChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect) PURE; \ | 
|  | /*** IOverlayNotify2 methods ***/ \ | 
|  | STDMETHOD_(HRESULT,OnDisplayChange)(THIS_ HMONITOR hMonitor) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IOverlayNotify2_OnDisplayChange_Proxy( | 
|  | IOverlayNotify2* This, | 
|  | HMONITOR hMonitor); | 
|  | void __RPC_STUB IOverlayNotify2_OnDisplayChange_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IOverlayNotify2_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IOverlayNotify2 *POVERLAYNOTIFY2; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IOverlay interface | 
|  | */ | 
|  | #ifndef __IOverlay_INTERFACE_DEFINED__ | 
|  | #define __IOverlay_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IOverlay, 0x56a868a1, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IOverlay : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE GetPalette( | 
|  | DWORD* pdwColors, | 
|  | PALETTEENTRY** ppPalette) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetPalette( | 
|  | DWORD dwColors, | 
|  | PALETTEENTRY* pPalette) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetDefaultColorKey( | 
|  | COLORKEY* pColorKey) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetColorKey( | 
|  | COLORKEY* pColorKey) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetColorKey( | 
|  | COLORKEY* pColorKey) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetWindowHandle( | 
|  | HWND* pHwnd) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetClipList( | 
|  | RECT* pSourceRect, | 
|  | RECT* pDestinationRect, | 
|  | RGNDATA** ppRgnData) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetVideoPosition( | 
|  | RECT* pSourceRect, | 
|  | RECT* pDestinationRect) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Advise( | 
|  | IOverlayNotify* pOverlayNotify, | 
|  | DWORD dwInterests) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Unadvise( | 
|  | ) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IOverlayVtbl IOverlayVtbl; | 
|  | struct IOverlay { | 
|  | const IOverlayVtbl* lpVtbl; | 
|  | }; | 
|  | struct IOverlayVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IOverlay* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IOverlay* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IOverlay* This); | 
|  |  | 
|  | /*** IOverlay methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *GetPalette)( | 
|  | IOverlay* This, | 
|  | DWORD* pdwColors, | 
|  | PALETTEENTRY** ppPalette); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetPalette)( | 
|  | IOverlay* This, | 
|  | DWORD dwColors, | 
|  | PALETTEENTRY* pPalette); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetDefaultColorKey)( | 
|  | IOverlay* This, | 
|  | COLORKEY* pColorKey); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetColorKey)( | 
|  | IOverlay* This, | 
|  | COLORKEY* pColorKey); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetColorKey)( | 
|  | IOverlay* This, | 
|  | COLORKEY* pColorKey); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetWindowHandle)( | 
|  | IOverlay* This, | 
|  | HWND* pHwnd); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetClipList)( | 
|  | IOverlay* This, | 
|  | RECT* pSourceRect, | 
|  | RECT* pDestinationRect, | 
|  | RGNDATA** ppRgnData); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetVideoPosition)( | 
|  | IOverlay* This, | 
|  | RECT* pSourceRect, | 
|  | RECT* pDestinationRect); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Advise)( | 
|  | IOverlay* This, | 
|  | IOverlayNotify* pOverlayNotify, | 
|  | DWORD dwInterests); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Unadvise)( | 
|  | IOverlay* This); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IOverlay_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IOverlay_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IOverlay_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IOverlay methods ***/ | 
|  | #define IOverlay_GetPalette(p,a,b) (p)->lpVtbl->GetPalette(p,a,b) | 
|  | #define IOverlay_SetPalette(p,a,b) (p)->lpVtbl->SetPalette(p,a,b) | 
|  | #define IOverlay_GetDefaultColorKey(p,a) (p)->lpVtbl->GetDefaultColorKey(p,a) | 
|  | #define IOverlay_GetColorKey(p,a) (p)->lpVtbl->GetColorKey(p,a) | 
|  | #define IOverlay_SetColorKey(p,a) (p)->lpVtbl->SetColorKey(p,a) | 
|  | #define IOverlay_GetWindowHandle(p,a) (p)->lpVtbl->GetWindowHandle(p,a) | 
|  | #define IOverlay_GetClipList(p,a,b,c) (p)->lpVtbl->GetClipList(p,a,b,c) | 
|  | #define IOverlay_GetVideoPosition(p,a,b) (p)->lpVtbl->GetVideoPosition(p,a,b) | 
|  | #define IOverlay_Advise(p,a,b) (p)->lpVtbl->Advise(p,a,b) | 
|  | #define IOverlay_Unadvise(p) (p)->lpVtbl->Unadvise(p) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IOverlay_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IOverlay methods ***/ \ | 
|  | STDMETHOD_(HRESULT,GetPalette)(THIS_ DWORD* pdwColors, PALETTEENTRY** ppPalette) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetPalette)(THIS_ DWORD dwColors, PALETTEENTRY* pPalette) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetDefaultColorKey)(THIS_ COLORKEY* pColorKey) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetColorKey)(THIS_ COLORKEY* pColorKey) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetColorKey)(THIS_ COLORKEY* pColorKey) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetWindowHandle)(THIS_ HWND* pHwnd) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetClipList)(THIS_ RECT* pSourceRect, RECT* pDestinationRect, RGNDATA** ppRgnData) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetVideoPosition)(THIS_ RECT* pSourceRect, RECT* pDestinationRect) PURE; \ | 
|  | STDMETHOD_(HRESULT,Advise)(THIS_ IOverlayNotify* pOverlayNotify, DWORD dwInterests) PURE; \ | 
|  | STDMETHOD_(HRESULT,Unadvise)(THIS) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IOverlay_GetPalette_Proxy( | 
|  | IOverlay* This, | 
|  | DWORD* pdwColors, | 
|  | PALETTEENTRY** ppPalette); | 
|  | void __RPC_STUB IOverlay_GetPalette_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlay_SetPalette_Proxy( | 
|  | IOverlay* This, | 
|  | DWORD dwColors, | 
|  | PALETTEENTRY* pPalette); | 
|  | void __RPC_STUB IOverlay_SetPalette_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlay_GetDefaultColorKey_Proxy( | 
|  | IOverlay* This, | 
|  | COLORKEY* pColorKey); | 
|  | void __RPC_STUB IOverlay_GetDefaultColorKey_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlay_GetColorKey_Proxy( | 
|  | IOverlay* This, | 
|  | COLORKEY* pColorKey); | 
|  | void __RPC_STUB IOverlay_GetColorKey_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlay_SetColorKey_Proxy( | 
|  | IOverlay* This, | 
|  | COLORKEY* pColorKey); | 
|  | void __RPC_STUB IOverlay_SetColorKey_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlay_GetWindowHandle_Proxy( | 
|  | IOverlay* This, | 
|  | HWND* pHwnd); | 
|  | void __RPC_STUB IOverlay_GetWindowHandle_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlay_GetClipList_Proxy( | 
|  | IOverlay* This, | 
|  | RECT* pSourceRect, | 
|  | RECT* pDestinationRect, | 
|  | RGNDATA** ppRgnData); | 
|  | void __RPC_STUB IOverlay_GetClipList_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlay_GetVideoPosition_Proxy( | 
|  | IOverlay* This, | 
|  | RECT* pSourceRect, | 
|  | RECT* pDestinationRect); | 
|  | void __RPC_STUB IOverlay_GetVideoPosition_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlay_Advise_Proxy( | 
|  | IOverlay* This, | 
|  | IOverlayNotify* pOverlayNotify, | 
|  | DWORD dwInterests); | 
|  | void __RPC_STUB IOverlay_Advise_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IOverlay_Unadvise_Proxy( | 
|  | IOverlay* This); | 
|  | void __RPC_STUB IOverlay_Unadvise_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IOverlay_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IOverlay *POVERLAY; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IMediaEventSink interface | 
|  | */ | 
|  | #ifndef __IMediaEventSink_INTERFACE_DEFINED__ | 
|  | #define __IMediaEventSink_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IMediaEventSink, 0x56a868a2, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IMediaEventSink : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Notify( | 
|  | long EventCode, | 
|  | LONG_PTR EventParam1, | 
|  | LONG_PTR EventParam2) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IMediaEventSinkVtbl IMediaEventSinkVtbl; | 
|  | struct IMediaEventSink { | 
|  | const IMediaEventSinkVtbl* lpVtbl; | 
|  | }; | 
|  | struct IMediaEventSinkVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IMediaEventSink* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IMediaEventSink* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IMediaEventSink* This); | 
|  |  | 
|  | /*** IMediaEventSink methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Notify)( | 
|  | IMediaEventSink* This, | 
|  | long EventCode, | 
|  | LONG_PTR EventParam1, | 
|  | LONG_PTR EventParam2); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IMediaEventSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IMediaEventSink_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IMediaEventSink_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IMediaEventSink methods ***/ | 
|  | #define IMediaEventSink_Notify(p,a,b,c) (p)->lpVtbl->Notify(p,a,b,c) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IMediaEventSink_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IMediaEventSink methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Notify)(THIS_ long EventCode, LONG_PTR EventParam1, LONG_PTR EventParam2) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IMediaEventSink_Notify_Proxy( | 
|  | IMediaEventSink* This, | 
|  | long EventCode, | 
|  | LONG_PTR EventParam1, | 
|  | LONG_PTR EventParam2); | 
|  | void __RPC_STUB IMediaEventSink_Notify_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IMediaEventSink_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IMediaEventSink *PMEDIAEVENTSINK; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IFileSourceFilter interface | 
|  | */ | 
|  | #ifndef __IFileSourceFilter_INTERFACE_DEFINED__ | 
|  | #define __IFileSourceFilter_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IFileSourceFilter, 0x56a868a6, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IFileSourceFilter : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Load( | 
|  | LPCOLESTR pszFileName, | 
|  | const AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetCurFile( | 
|  | LPOLESTR* ppszFileName, | 
|  | AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IFileSourceFilterVtbl IFileSourceFilterVtbl; | 
|  | struct IFileSourceFilter { | 
|  | const IFileSourceFilterVtbl* lpVtbl; | 
|  | }; | 
|  | struct IFileSourceFilterVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IFileSourceFilter* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IFileSourceFilter* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IFileSourceFilter* This); | 
|  |  | 
|  | /*** IFileSourceFilter methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Load)( | 
|  | IFileSourceFilter* This, | 
|  | LPCOLESTR pszFileName, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetCurFile)( | 
|  | IFileSourceFilter* This, | 
|  | LPOLESTR* ppszFileName, | 
|  | AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IFileSourceFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IFileSourceFilter_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IFileSourceFilter_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IFileSourceFilter methods ***/ | 
|  | #define IFileSourceFilter_Load(p,a,b) (p)->lpVtbl->Load(p,a,b) | 
|  | #define IFileSourceFilter_GetCurFile(p,a,b) (p)->lpVtbl->GetCurFile(p,a,b) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IFileSourceFilter_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IFileSourceFilter methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Load)(THIS_ LPCOLESTR pszFileName, const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName, AM_MEDIA_TYPE* pmt) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IFileSourceFilter_Load_Proxy( | 
|  | IFileSourceFilter* This, | 
|  | LPCOLESTR pszFileName, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IFileSourceFilter_Load_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFileSourceFilter_GetCurFile_Proxy( | 
|  | IFileSourceFilter* This, | 
|  | LPOLESTR* ppszFileName, | 
|  | AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IFileSourceFilter_GetCurFile_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IFileSourceFilter_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IFileSourceFilter *PFILTERFILESOURCE; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IFileSinkFilter interface | 
|  | */ | 
|  | #ifndef __IFileSinkFilter_INTERFACE_DEFINED__ | 
|  | #define __IFileSinkFilter_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IFileSinkFilter, 0xa2104830, 0x7c70, 0x11cf, 0x8b,0xce, 0x00,0xaa,0x00,0xa3,0xf1,0xa6); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IFileSinkFilter : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE SetFileName( | 
|  | LPCOLESTR pszFileName, | 
|  | const AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetCurFile( | 
|  | LPOLESTR* ppszFileName, | 
|  | AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IFileSinkFilterVtbl IFileSinkFilterVtbl; | 
|  | struct IFileSinkFilter { | 
|  | const IFileSinkFilterVtbl* lpVtbl; | 
|  | }; | 
|  | struct IFileSinkFilterVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IFileSinkFilter* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IFileSinkFilter* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IFileSinkFilter* This); | 
|  |  | 
|  | /*** IFileSinkFilter methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *SetFileName)( | 
|  | IFileSinkFilter* This, | 
|  | LPCOLESTR pszFileName, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetCurFile)( | 
|  | IFileSinkFilter* This, | 
|  | LPOLESTR* ppszFileName, | 
|  | AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IFileSinkFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IFileSinkFilter_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IFileSinkFilter_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IFileSinkFilter methods ***/ | 
|  | #define IFileSinkFilter_SetFileName(p,a,b) (p)->lpVtbl->SetFileName(p,a,b) | 
|  | #define IFileSinkFilter_GetCurFile(p,a,b) (p)->lpVtbl->GetCurFile(p,a,b) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IFileSinkFilter_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IFileSinkFilter methods ***/ \ | 
|  | STDMETHOD_(HRESULT,SetFileName)(THIS_ LPCOLESTR pszFileName, const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName, AM_MEDIA_TYPE* pmt) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IFileSinkFilter_SetFileName_Proxy( | 
|  | IFileSinkFilter* This, | 
|  | LPCOLESTR pszFileName, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IFileSinkFilter_SetFileName_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFileSinkFilter_GetCurFile_Proxy( | 
|  | IFileSinkFilter* This, | 
|  | LPOLESTR* ppszFileName, | 
|  | AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IFileSinkFilter_GetCurFile_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IFileSinkFilter_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IFileSinkFilter *PFILTERFILESINK; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IFileSinkFilter2 interface | 
|  | */ | 
|  | #ifndef __IFileSinkFilter2_INTERFACE_DEFINED__ | 
|  | #define __IFileSinkFilter2_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IFileSinkFilter2, 0x00855b90, 0xce1b, 0x11d0, 0xbd,0x4f, 0x00,0xa0,0xc9,0x11,0xce,0x86); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IFileSinkFilter2 : public IFileSinkFilter | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE SetMode( | 
|  | DWORD dwFlags) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetMode( | 
|  | DWORD* pdwFlags) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IFileSinkFilter2Vtbl IFileSinkFilter2Vtbl; | 
|  | struct IFileSinkFilter2 { | 
|  | const IFileSinkFilter2Vtbl* lpVtbl; | 
|  | }; | 
|  | struct IFileSinkFilter2Vtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IFileSinkFilter2* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IFileSinkFilter2* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IFileSinkFilter2* This); | 
|  |  | 
|  | /*** IFileSinkFilter methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *SetFileName)( | 
|  | IFileSinkFilter2* This, | 
|  | LPCOLESTR pszFileName, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetCurFile)( | 
|  | IFileSinkFilter2* This, | 
|  | LPOLESTR* ppszFileName, | 
|  | AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | /*** IFileSinkFilter2 methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *SetMode)( | 
|  | IFileSinkFilter2* This, | 
|  | DWORD dwFlags); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetMode)( | 
|  | IFileSinkFilter2* This, | 
|  | DWORD* pdwFlags); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IFileSinkFilter2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IFileSinkFilter2_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IFileSinkFilter2_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IFileSinkFilter methods ***/ | 
|  | #define IFileSinkFilter2_SetFileName(p,a,b) (p)->lpVtbl->SetFileName(p,a,b) | 
|  | #define IFileSinkFilter2_GetCurFile(p,a,b) (p)->lpVtbl->GetCurFile(p,a,b) | 
|  | /*** IFileSinkFilter2 methods ***/ | 
|  | #define IFileSinkFilter2_SetMode(p,a) (p)->lpVtbl->SetMode(p,a) | 
|  | #define IFileSinkFilter2_GetMode(p,a) (p)->lpVtbl->GetMode(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IFileSinkFilter2_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IFileSinkFilter methods ***/ \ | 
|  | STDMETHOD_(HRESULT,SetFileName)(THIS_ LPCOLESTR pszFileName, const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName, AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | /*** IFileSinkFilter2 methods ***/ \ | 
|  | STDMETHOD_(HRESULT,SetMode)(THIS_ DWORD dwFlags) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetMode)(THIS_ DWORD* pdwFlags) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IFileSinkFilter2_SetMode_Proxy( | 
|  | IFileSinkFilter2* This, | 
|  | DWORD dwFlags); | 
|  | void __RPC_STUB IFileSinkFilter2_SetMode_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFileSinkFilter2_GetMode_Proxy( | 
|  | IFileSinkFilter2* This, | 
|  | DWORD* pdwFlags); | 
|  | void __RPC_STUB IFileSinkFilter2_GetMode_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IFileSinkFilter2_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | typedef IFileSinkFilter2 *PFILESINKFILTER2; | 
|  |  | 
|  | typedef enum { | 
|  | AM_FILE_OVERWRITE = 0x1 | 
|  | } AM_FILESINK_FLAGS; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IGraphBuilder interface | 
|  | */ | 
|  | #ifndef __IGraphBuilder_INTERFACE_DEFINED__ | 
|  | #define __IGraphBuilder_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IGraphBuilder, 0x56a868a9, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IGraphBuilder : public IFilterGraph | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Connect( | 
|  | IPin* ppinOut, | 
|  | IPin* ppinIn) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Render( | 
|  | IPin* ppinOut) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RenderFile( | 
|  | LPCWSTR lpcwstrFile, | 
|  | LPCWSTR lpcwstrPlayList) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE AddSourceFilter( | 
|  | LPCWSTR lpcwstrFileName, | 
|  | LPCWSTR lpcwstrFilterName, | 
|  | IBaseFilter** ppFilter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetLogFile( | 
|  | DWORD_PTR hFile) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Abort( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ShouldOperationContinue( | 
|  | ) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IGraphBuilderVtbl IGraphBuilderVtbl; | 
|  | struct IGraphBuilder { | 
|  | const IGraphBuilderVtbl* lpVtbl; | 
|  | }; | 
|  | struct IGraphBuilderVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IGraphBuilder* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IGraphBuilder* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IGraphBuilder* This); | 
|  |  | 
|  | /*** IFilterGraph methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *AddFilter)( | 
|  | IGraphBuilder* This, | 
|  | IBaseFilter* pFilter, | 
|  | LPCWSTR pName); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RemoveFilter)( | 
|  | IGraphBuilder* This, | 
|  | IBaseFilter* pFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EnumFilters)( | 
|  | IGraphBuilder* This, | 
|  | IEnumFilters** ppEnum); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *FindFilterByName)( | 
|  | IGraphBuilder* This, | 
|  | LPCWSTR pName, | 
|  | IBaseFilter** ppFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ConnectDirect)( | 
|  | IGraphBuilder* This, | 
|  | IPin* ppinOut, | 
|  | IPin* ppinIn, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Reconnect)( | 
|  | IGraphBuilder* This, | 
|  | IPin* ppin); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Disconnect)( | 
|  | IGraphBuilder* This, | 
|  | IPin* ppin); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetDefaultSyncSource)( | 
|  | IGraphBuilder* This); | 
|  |  | 
|  | /*** IGraphBuilder methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Connect)( | 
|  | IGraphBuilder* This, | 
|  | IPin* ppinOut, | 
|  | IPin* ppinIn); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Render)( | 
|  | IGraphBuilder* This, | 
|  | IPin* ppinOut); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RenderFile)( | 
|  | IGraphBuilder* This, | 
|  | LPCWSTR lpcwstrFile, | 
|  | LPCWSTR lpcwstrPlayList); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *AddSourceFilter)( | 
|  | IGraphBuilder* This, | 
|  | LPCWSTR lpcwstrFileName, | 
|  | LPCWSTR lpcwstrFilterName, | 
|  | IBaseFilter** ppFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetLogFile)( | 
|  | IGraphBuilder* This, | 
|  | DWORD_PTR hFile); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Abort)( | 
|  | IGraphBuilder* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ShouldOperationContinue)( | 
|  | IGraphBuilder* This); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IGraphBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IGraphBuilder_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IGraphBuilder_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IFilterGraph methods ***/ | 
|  | #define IGraphBuilder_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b) | 
|  | #define IGraphBuilder_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a) | 
|  | #define IGraphBuilder_EnumFilters(p,a) (p)->lpVtbl->EnumFilters(p,a) | 
|  | #define IGraphBuilder_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b) | 
|  | #define IGraphBuilder_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c) | 
|  | #define IGraphBuilder_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a) | 
|  | #define IGraphBuilder_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a) | 
|  | #define IGraphBuilder_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p) | 
|  | /*** IGraphBuilder methods ***/ | 
|  | #define IGraphBuilder_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b) | 
|  | #define IGraphBuilder_Render(p,a) (p)->lpVtbl->Render(p,a) | 
|  | #define IGraphBuilder_RenderFile(p,a,b) (p)->lpVtbl->RenderFile(p,a,b) | 
|  | #define IGraphBuilder_AddSourceFilter(p,a,b,c) (p)->lpVtbl->AddSourceFilter(p,a,b,c) | 
|  | #define IGraphBuilder_SetLogFile(p,a) (p)->lpVtbl->SetLogFile(p,a) | 
|  | #define IGraphBuilder_Abort(p) (p)->lpVtbl->Abort(p) | 
|  | #define IGraphBuilder_ShouldOperationContinue(p) (p)->lpVtbl->ShouldOperationContinue(p) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IGraphBuilder_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IFilterGraph methods ***/ \ | 
|  | STDMETHOD_(HRESULT,AddFilter)(THIS_ IBaseFilter* pFilter, LPCWSTR pName) PURE; \ | 
|  | STDMETHOD_(HRESULT,RemoveFilter)(THIS_ IBaseFilter* pFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,EnumFilters)(THIS_ IEnumFilters** ppEnum) PURE; \ | 
|  | STDMETHOD_(HRESULT,FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter** ppFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,ConnectDirect)(THIS_ IPin* ppinOut, IPin* ppinIn, const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* ppin) PURE; \ | 
|  | STDMETHOD_(HRESULT,Disconnect)(THIS_ IPin* ppin) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetDefaultSyncSource)(THIS) PURE; \ | 
|  | /*** IGraphBuilder methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Connect)(THIS_ IPin* ppinOut, IPin* ppinIn) PURE; \ | 
|  | STDMETHOD_(HRESULT,Render)(THIS_ IPin* ppinOut) PURE; \ | 
|  | STDMETHOD_(HRESULT,RenderFile)(THIS_ LPCWSTR lpcwstrFile, LPCWSTR lpcwstrPlayList) PURE; \ | 
|  | STDMETHOD_(HRESULT,AddSourceFilter)(THIS_ LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetLogFile)(THIS_ DWORD_PTR hFile) PURE; \ | 
|  | STDMETHOD_(HRESULT,Abort)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,ShouldOperationContinue)(THIS) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IGraphBuilder_Connect_Proxy( | 
|  | IGraphBuilder* This, | 
|  | IPin* ppinOut, | 
|  | IPin* ppinIn); | 
|  | void __RPC_STUB IGraphBuilder_Connect_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphBuilder_Render_Proxy( | 
|  | IGraphBuilder* This, | 
|  | IPin* ppinOut); | 
|  | void __RPC_STUB IGraphBuilder_Render_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphBuilder_RenderFile_Proxy( | 
|  | IGraphBuilder* This, | 
|  | LPCWSTR lpcwstrFile, | 
|  | LPCWSTR lpcwstrPlayList); | 
|  | void __RPC_STUB IGraphBuilder_RenderFile_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphBuilder_AddSourceFilter_Proxy( | 
|  | IGraphBuilder* This, | 
|  | LPCWSTR lpcwstrFileName, | 
|  | LPCWSTR lpcwstrFilterName, | 
|  | IBaseFilter** ppFilter); | 
|  | void __RPC_STUB IGraphBuilder_AddSourceFilter_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphBuilder_SetLogFile_Proxy( | 
|  | IGraphBuilder* This, | 
|  | DWORD_PTR hFile); | 
|  | void __RPC_STUB IGraphBuilder_SetLogFile_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphBuilder_Abort_Proxy( | 
|  | IGraphBuilder* This); | 
|  | void __RPC_STUB IGraphBuilder_Abort_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphBuilder_ShouldOperationContinue_Proxy( | 
|  | IGraphBuilder* This); | 
|  | void __RPC_STUB IGraphBuilder_ShouldOperationContinue_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IGraphBuilder_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | /***************************************************************************** | 
|  | * ICaptureGraphBuilder interface | 
|  | */ | 
|  | #ifndef __ICaptureGraphBuilder_INTERFACE_DEFINED__ | 
|  | #define __ICaptureGraphBuilder_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_ICaptureGraphBuilder, 0xbf87b6e0, 0x8c27, 0x11d0, 0xb3,0xf0, 0x00,0xaa,0x00,0x37,0x61,0xc5); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct ICaptureGraphBuilder : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE SetFiltergraph( | 
|  | IGraphBuilder* pfg) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetFiltergraph( | 
|  | IGraphBuilder** ppfg) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetOutputFileName( | 
|  | const GUID* pType, | 
|  | LPCOLESTR lpstrFile, | 
|  | IBaseFilter** ppf, | 
|  | IFileSinkFilter** ppSink) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE FindInterface( | 
|  | const GUID* pCategory, | 
|  | IBaseFilter* pf, | 
|  | REFIID riid, | 
|  | void** ppint) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RenderStream( | 
|  | const GUID* pCategory, | 
|  | IUnknown* pSource, | 
|  | IBaseFilter* pfCompressor, | 
|  | IBaseFilter* pfRenderer) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ControlStream( | 
|  | const GUID* pCategory, | 
|  | IBaseFilter* pFilter, | 
|  | REFERENCE_TIME* pstart, | 
|  | REFERENCE_TIME* pstop, | 
|  | WORD wStartCookie, | 
|  | WORD wStopCookie) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE AllocCapFile( | 
|  | LPCOLESTR lpstr, | 
|  | DWORDLONG dwlSize) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile( | 
|  | LPOLESTR lpwstrOld, | 
|  | LPOLESTR lpwstrNew, | 
|  | int fAllowEscAbort, | 
|  | IAMCopyCaptureFileProgress* pCallback) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct ICaptureGraphBuilderVtbl ICaptureGraphBuilderVtbl; | 
|  | struct ICaptureGraphBuilder { | 
|  | const ICaptureGraphBuilderVtbl* lpVtbl; | 
|  | }; | 
|  | struct ICaptureGraphBuilderVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | ICaptureGraphBuilder* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | ICaptureGraphBuilder* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | ICaptureGraphBuilder* This); | 
|  |  | 
|  | /*** ICaptureGraphBuilder methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *SetFiltergraph)( | 
|  | ICaptureGraphBuilder* This, | 
|  | IGraphBuilder* pfg); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetFiltergraph)( | 
|  | ICaptureGraphBuilder* This, | 
|  | IGraphBuilder** ppfg); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetOutputFileName)( | 
|  | ICaptureGraphBuilder* This, | 
|  | const GUID* pType, | 
|  | LPCOLESTR lpstrFile, | 
|  | IBaseFilter** ppf, | 
|  | IFileSinkFilter** ppSink); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *FindInterface)( | 
|  | ICaptureGraphBuilder* This, | 
|  | const GUID* pCategory, | 
|  | IBaseFilter* pf, | 
|  | REFIID riid, | 
|  | void** ppint); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RenderStream)( | 
|  | ICaptureGraphBuilder* This, | 
|  | const GUID* pCategory, | 
|  | IUnknown* pSource, | 
|  | IBaseFilter* pfCompressor, | 
|  | IBaseFilter* pfRenderer); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ControlStream)( | 
|  | ICaptureGraphBuilder* This, | 
|  | const GUID* pCategory, | 
|  | IBaseFilter* pFilter, | 
|  | REFERENCE_TIME* pstart, | 
|  | REFERENCE_TIME* pstop, | 
|  | WORD wStartCookie, | 
|  | WORD wStopCookie); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *AllocCapFile)( | 
|  | ICaptureGraphBuilder* This, | 
|  | LPCOLESTR lpstr, | 
|  | DWORDLONG dwlSize); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *CopyCaptureFile)( | 
|  | ICaptureGraphBuilder* This, | 
|  | LPOLESTR lpwstrOld, | 
|  | LPOLESTR lpwstrNew, | 
|  | int fAllowEscAbort, | 
|  | IAMCopyCaptureFileProgress* pCallback); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define ICaptureGraphBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define ICaptureGraphBuilder_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define ICaptureGraphBuilder_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** ICaptureGraphBuilder methods ***/ | 
|  | #define ICaptureGraphBuilder_SetFiltergraph(p,a) (p)->lpVtbl->SetFiltergraph(p,a) | 
|  | #define ICaptureGraphBuilder_GetFiltergraph(p,a) (p)->lpVtbl->GetFiltergraph(p,a) | 
|  | #define ICaptureGraphBuilder_SetOutputFileName(p,a,b,c,d) (p)->lpVtbl->SetOutputFileName(p,a,b,c,d) | 
|  | #define ICaptureGraphBuilder_FindInterface(p,a,b,c,d) (p)->lpVtbl->FindInterface(p,a,b,c,d) | 
|  | #define ICaptureGraphBuilder_RenderStream(p,a,b,c,d) (p)->lpVtbl->RenderStream(p,a,b,c,d) | 
|  | #define ICaptureGraphBuilder_ControlStream(p,a,b,c,d,e,f) (p)->lpVtbl->ControlStream(p,a,b,c,d,e,f) | 
|  | #define ICaptureGraphBuilder_AllocCapFile(p,a,b) (p)->lpVtbl->AllocCapFile(p,a,b) | 
|  | #define ICaptureGraphBuilder_CopyCaptureFile(p,a,b,c,d) (p)->lpVtbl->CopyCaptureFile(p,a,b,c,d) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define ICaptureGraphBuilder_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** ICaptureGraphBuilder methods ***/ \ | 
|  | STDMETHOD_(HRESULT,SetFiltergraph)(THIS_ IGraphBuilder* pfg) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetFiltergraph)(THIS_ IGraphBuilder** ppfg) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetOutputFileName)(THIS_ const GUID* pType, LPCOLESTR lpstrFile, IBaseFilter** ppf, IFileSinkFilter** ppSink) PURE; \ | 
|  | STDMETHOD_(HRESULT,FindInterface)(THIS_ const GUID* pCategory, IBaseFilter* pf, REFIID riid, void** ppint) PURE; \ | 
|  | STDMETHOD_(HRESULT,RenderStream)(THIS_ const GUID* pCategory, IUnknown* pSource, IBaseFilter* pfCompressor, IBaseFilter* pfRenderer) PURE; \ | 
|  | STDMETHOD_(HRESULT,ControlStream)(THIS_ const GUID* pCategory, IBaseFilter* pFilter, REFERENCE_TIME* pstart, REFERENCE_TIME* pstop, WORD wStartCookie, WORD wStopCookie) PURE; \ | 
|  | STDMETHOD_(HRESULT,AllocCapFile)(THIS_ LPCOLESTR lpstr, DWORDLONG dwlSize) PURE; \ | 
|  | STDMETHOD_(HRESULT,CopyCaptureFile)(THIS_ LPOLESTR lpwstrOld, LPOLESTR lpwstrNew, int fAllowEscAbort, IAMCopyCaptureFileProgress* pCallback) PURE; | 
|  |  | 
|  | HRESULT CALLBACK ICaptureGraphBuilder_SetFiltergraph_Proxy( | 
|  | ICaptureGraphBuilder* This, | 
|  | IGraphBuilder* pfg); | 
|  | void __RPC_STUB ICaptureGraphBuilder_SetFiltergraph_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder_GetFiltergraph_Proxy( | 
|  | ICaptureGraphBuilder* This, | 
|  | IGraphBuilder** ppfg); | 
|  | void __RPC_STUB ICaptureGraphBuilder_GetFiltergraph_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder_SetOutputFileName_Proxy( | 
|  | ICaptureGraphBuilder* This, | 
|  | const GUID* pType, | 
|  | LPCOLESTR lpstrFile, | 
|  | IBaseFilter** ppf, | 
|  | IFileSinkFilter** ppSink); | 
|  | void __RPC_STUB ICaptureGraphBuilder_SetOutputFileName_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder_RemoteFindInterface_Proxy( | 
|  | ICaptureGraphBuilder* This, | 
|  | const GUID* pCategory, | 
|  | IBaseFilter* pf, | 
|  | REFIID riid, | 
|  | IUnknown** ppint); | 
|  | void __RPC_STUB ICaptureGraphBuilder_RemoteFindInterface_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder_FindInterface_Proxy( | 
|  | ICaptureGraphBuilder* This, | 
|  | const GUID* pCategory, | 
|  | IBaseFilter* pf, | 
|  | REFIID riid, | 
|  | void** ppint); | 
|  | HRESULT __RPC_STUB ICaptureGraphBuilder_FindInterface_Stub( | 
|  | ICaptureGraphBuilder* This, | 
|  | const GUID* pCategory, | 
|  | IBaseFilter* pf, | 
|  | REFIID riid, | 
|  | IUnknown** ppint); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder_RenderStream_Proxy( | 
|  | ICaptureGraphBuilder* This, | 
|  | const GUID* pCategory, | 
|  | IUnknown* pSource, | 
|  | IBaseFilter* pfCompressor, | 
|  | IBaseFilter* pfRenderer); | 
|  | void __RPC_STUB ICaptureGraphBuilder_RenderStream_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder_ControlStream_Proxy( | 
|  | ICaptureGraphBuilder* This, | 
|  | const GUID* pCategory, | 
|  | IBaseFilter* pFilter, | 
|  | REFERENCE_TIME* pstart, | 
|  | REFERENCE_TIME* pstop, | 
|  | WORD wStartCookie, | 
|  | WORD wStopCookie); | 
|  | void __RPC_STUB ICaptureGraphBuilder_ControlStream_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder_AllocCapFile_Proxy( | 
|  | ICaptureGraphBuilder* This, | 
|  | LPCOLESTR lpstr, | 
|  | DWORDLONG dwlSize); | 
|  | void __RPC_STUB ICaptureGraphBuilder_AllocCapFile_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder_CopyCaptureFile_Proxy( | 
|  | ICaptureGraphBuilder* This, | 
|  | LPOLESTR lpwstrOld, | 
|  | LPOLESTR lpwstrNew, | 
|  | int fAllowEscAbort, | 
|  | IAMCopyCaptureFileProgress* pCallback); | 
|  | void __RPC_STUB ICaptureGraphBuilder_CopyCaptureFile_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __ICaptureGraphBuilder_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IAMCopyCaptureFileProgress interface | 
|  | */ | 
|  | #ifndef __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ | 
|  | #define __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IAMCopyCaptureFileProgress, 0x670d1d20, 0xa068, 0x11d0, 0xb3,0xf0, 0x00,0xaa,0x00,0x37,0x61,0xc5); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IAMCopyCaptureFileProgress : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Progress( | 
|  | int iProgress) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IAMCopyCaptureFileProgressVtbl IAMCopyCaptureFileProgressVtbl; | 
|  | struct IAMCopyCaptureFileProgress { | 
|  | const IAMCopyCaptureFileProgressVtbl* lpVtbl; | 
|  | }; | 
|  | struct IAMCopyCaptureFileProgressVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IAMCopyCaptureFileProgress* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IAMCopyCaptureFileProgress* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IAMCopyCaptureFileProgress* This); | 
|  |  | 
|  | /*** IAMCopyCaptureFileProgress methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Progress)( | 
|  | IAMCopyCaptureFileProgress* This, | 
|  | int iProgress); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IAMCopyCaptureFileProgress_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IAMCopyCaptureFileProgress_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IAMCopyCaptureFileProgress_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IAMCopyCaptureFileProgress methods ***/ | 
|  | #define IAMCopyCaptureFileProgress_Progress(p,a) (p)->lpVtbl->Progress(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IAMCopyCaptureFileProgress_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IAMCopyCaptureFileProgress methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Progress)(THIS_ int iProgress) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IAMCopyCaptureFileProgress_Progress_Proxy( | 
|  | IAMCopyCaptureFileProgress* This, | 
|  | int iProgress); | 
|  | void __RPC_STUB IAMCopyCaptureFileProgress_Progress_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | /***************************************************************************** | 
|  | * ICaptureGraphBuilder2 interface | 
|  | */ | 
|  | #ifndef __ICaptureGraphBuilder2_INTERFACE_DEFINED__ | 
|  | #define __ICaptureGraphBuilder2_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_ICaptureGraphBuilder2, 0x93e5a4e0, 0x2d50, 0x11d2, 0xab,0xfa, 0x00,0xa0,0xc9,0xc6,0xe3,0x8d); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct ICaptureGraphBuilder2 : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE SetFiltergraph( | 
|  | IGraphBuilder* pfg) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetFiltergraph( | 
|  | IGraphBuilder** ppfg) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetOutputFileName( | 
|  | const GUID* pType, | 
|  | LPCOLESTR lpstrFile, | 
|  | IBaseFilter** ppf, | 
|  | IFileSinkFilter** ppSink) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE FindInterface( | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IBaseFilter* pf, | 
|  | REFIID riid, | 
|  | void** ppint) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RenderStream( | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IUnknown* pSource, | 
|  | IBaseFilter* pfCompressor, | 
|  | IBaseFilter* pfRenderer) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ControlStream( | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IBaseFilter* pFilter, | 
|  | REFERENCE_TIME* pstart, | 
|  | REFERENCE_TIME* pstop, | 
|  | WORD wStartCookie, | 
|  | WORD wStopCookie) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE AllocCapFile( | 
|  | LPCOLESTR lpstr, | 
|  | DWORDLONG dwlSize) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile( | 
|  | LPOLESTR lpwstrOld, | 
|  | LPOLESTR lpwstrNew, | 
|  | int fAllowEscAbort, | 
|  | IAMCopyCaptureFileProgress* pCallback) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE FindPin( | 
|  | IUnknown* pSource, | 
|  | PIN_DIRECTION pindir, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | BOOL fUnconnected, | 
|  | int num, | 
|  | IPin** ppPin) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct ICaptureGraphBuilder2Vtbl ICaptureGraphBuilder2Vtbl; | 
|  | struct ICaptureGraphBuilder2 { | 
|  | const ICaptureGraphBuilder2Vtbl* lpVtbl; | 
|  | }; | 
|  | struct ICaptureGraphBuilder2Vtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | ICaptureGraphBuilder2* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | ICaptureGraphBuilder2* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | ICaptureGraphBuilder2* This); | 
|  |  | 
|  | /*** ICaptureGraphBuilder2 methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *SetFiltergraph)( | 
|  | ICaptureGraphBuilder2* This, | 
|  | IGraphBuilder* pfg); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetFiltergraph)( | 
|  | ICaptureGraphBuilder2* This, | 
|  | IGraphBuilder** ppfg); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetOutputFileName)( | 
|  | ICaptureGraphBuilder2* This, | 
|  | const GUID* pType, | 
|  | LPCOLESTR lpstrFile, | 
|  | IBaseFilter** ppf, | 
|  | IFileSinkFilter** ppSink); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *FindInterface)( | 
|  | ICaptureGraphBuilder2* This, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IBaseFilter* pf, | 
|  | REFIID riid, | 
|  | void** ppint); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RenderStream)( | 
|  | ICaptureGraphBuilder2* This, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IUnknown* pSource, | 
|  | IBaseFilter* pfCompressor, | 
|  | IBaseFilter* pfRenderer); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ControlStream)( | 
|  | ICaptureGraphBuilder2* This, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IBaseFilter* pFilter, | 
|  | REFERENCE_TIME* pstart, | 
|  | REFERENCE_TIME* pstop, | 
|  | WORD wStartCookie, | 
|  | WORD wStopCookie); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *AllocCapFile)( | 
|  | ICaptureGraphBuilder2* This, | 
|  | LPCOLESTR lpstr, | 
|  | DWORDLONG dwlSize); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *CopyCaptureFile)( | 
|  | ICaptureGraphBuilder2* This, | 
|  | LPOLESTR lpwstrOld, | 
|  | LPOLESTR lpwstrNew, | 
|  | int fAllowEscAbort, | 
|  | IAMCopyCaptureFileProgress* pCallback); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *FindPin)( | 
|  | ICaptureGraphBuilder2* This, | 
|  | IUnknown* pSource, | 
|  | PIN_DIRECTION pindir, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | BOOL fUnconnected, | 
|  | int num, | 
|  | IPin** ppPin); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define ICaptureGraphBuilder2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define ICaptureGraphBuilder2_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define ICaptureGraphBuilder2_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** ICaptureGraphBuilder2 methods ***/ | 
|  | #define ICaptureGraphBuilder2_SetFiltergraph(p,a) (p)->lpVtbl->SetFiltergraph(p,a) | 
|  | #define ICaptureGraphBuilder2_GetFiltergraph(p,a) (p)->lpVtbl->GetFiltergraph(p,a) | 
|  | #define ICaptureGraphBuilder2_SetOutputFileName(p,a,b,c,d) (p)->lpVtbl->SetOutputFileName(p,a,b,c,d) | 
|  | #define ICaptureGraphBuilder2_FindInterface(p,a,b,c,d,e) (p)->lpVtbl->FindInterface(p,a,b,c,d,e) | 
|  | #define ICaptureGraphBuilder2_RenderStream(p,a,b,c,d,e) (p)->lpVtbl->RenderStream(p,a,b,c,d,e) | 
|  | #define ICaptureGraphBuilder2_ControlStream(p,a,b,c,d,e,f,g) (p)->lpVtbl->ControlStream(p,a,b,c,d,e,f,g) | 
|  | #define ICaptureGraphBuilder2_AllocCapFile(p,a,b) (p)->lpVtbl->AllocCapFile(p,a,b) | 
|  | #define ICaptureGraphBuilder2_CopyCaptureFile(p,a,b,c,d) (p)->lpVtbl->CopyCaptureFile(p,a,b,c,d) | 
|  | #define ICaptureGraphBuilder2_FindPin(p,a,b,c,d,e,f,g) (p)->lpVtbl->FindPin(p,a,b,c,d,e,f,g) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define ICaptureGraphBuilder2_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** ICaptureGraphBuilder2 methods ***/ \ | 
|  | STDMETHOD_(HRESULT,SetFiltergraph)(THIS_ IGraphBuilder* pfg) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetFiltergraph)(THIS_ IGraphBuilder** ppfg) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetOutputFileName)(THIS_ const GUID* pType, LPCOLESTR lpstrFile, IBaseFilter** ppf, IFileSinkFilter** ppSink) PURE; \ | 
|  | STDMETHOD_(HRESULT,FindInterface)(THIS_ const GUID* pCategory, const GUID* pType, IBaseFilter* pf, REFIID riid, void** ppint) PURE; \ | 
|  | STDMETHOD_(HRESULT,RenderStream)(THIS_ const GUID* pCategory, const GUID* pType, IUnknown* pSource, IBaseFilter* pfCompressor, IBaseFilter* pfRenderer) PURE; \ | 
|  | STDMETHOD_(HRESULT,ControlStream)(THIS_ const GUID* pCategory, const GUID* pType, IBaseFilter* pFilter, REFERENCE_TIME* pstart, REFERENCE_TIME* pstop, WORD wStartCookie, WORD wStopCookie) PURE; \ | 
|  | STDMETHOD_(HRESULT,AllocCapFile)(THIS_ LPCOLESTR lpstr, DWORDLONG dwlSize) PURE; \ | 
|  | STDMETHOD_(HRESULT,CopyCaptureFile)(THIS_ LPOLESTR lpwstrOld, LPOLESTR lpwstrNew, int fAllowEscAbort, IAMCopyCaptureFileProgress* pCallback) PURE; \ | 
|  | STDMETHOD_(HRESULT,FindPin)(THIS_ IUnknown* pSource, PIN_DIRECTION pindir, const GUID* pCategory, const GUID* pType, BOOL fUnconnected, int num, IPin** ppPin) PURE; | 
|  |  | 
|  | HRESULT CALLBACK ICaptureGraphBuilder2_SetFiltergraph_Proxy( | 
|  | ICaptureGraphBuilder2* This, | 
|  | IGraphBuilder* pfg); | 
|  | void __RPC_STUB ICaptureGraphBuilder2_SetFiltergraph_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder2_GetFiltergraph_Proxy( | 
|  | ICaptureGraphBuilder2* This, | 
|  | IGraphBuilder** ppfg); | 
|  | void __RPC_STUB ICaptureGraphBuilder2_GetFiltergraph_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder2_SetOutputFileName_Proxy( | 
|  | ICaptureGraphBuilder2* This, | 
|  | const GUID* pType, | 
|  | LPCOLESTR lpstrFile, | 
|  | IBaseFilter** ppf, | 
|  | IFileSinkFilter** ppSink); | 
|  | void __RPC_STUB ICaptureGraphBuilder2_SetOutputFileName_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder2_RemoteFindInterface_Proxy( | 
|  | ICaptureGraphBuilder2* This, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IBaseFilter* pf, | 
|  | REFIID riid, | 
|  | IUnknown** ppint); | 
|  | void __RPC_STUB ICaptureGraphBuilder2_RemoteFindInterface_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder2_FindInterface_Proxy( | 
|  | ICaptureGraphBuilder2* This, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IBaseFilter* pf, | 
|  | REFIID riid, | 
|  | void** ppint); | 
|  | HRESULT __RPC_STUB ICaptureGraphBuilder2_FindInterface_Stub( | 
|  | ICaptureGraphBuilder2* This, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IBaseFilter* pf, | 
|  | REFIID riid, | 
|  | IUnknown** ppint); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder2_RenderStream_Proxy( | 
|  | ICaptureGraphBuilder2* This, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IUnknown* pSource, | 
|  | IBaseFilter* pfCompressor, | 
|  | IBaseFilter* pfRenderer); | 
|  | void __RPC_STUB ICaptureGraphBuilder2_RenderStream_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder2_ControlStream_Proxy( | 
|  | ICaptureGraphBuilder2* This, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | IBaseFilter* pFilter, | 
|  | REFERENCE_TIME* pstart, | 
|  | REFERENCE_TIME* pstop, | 
|  | WORD wStartCookie, | 
|  | WORD wStopCookie); | 
|  | void __RPC_STUB ICaptureGraphBuilder2_ControlStream_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder2_AllocCapFile_Proxy( | 
|  | ICaptureGraphBuilder2* This, | 
|  | LPCOLESTR lpstr, | 
|  | DWORDLONG dwlSize); | 
|  | void __RPC_STUB ICaptureGraphBuilder2_AllocCapFile_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder2_CopyCaptureFile_Proxy( | 
|  | ICaptureGraphBuilder2* This, | 
|  | LPOLESTR lpwstrOld, | 
|  | LPOLESTR lpwstrNew, | 
|  | int fAllowEscAbort, | 
|  | IAMCopyCaptureFileProgress* pCallback); | 
|  | void __RPC_STUB ICaptureGraphBuilder2_CopyCaptureFile_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK ICaptureGraphBuilder2_FindPin_Proxy( | 
|  | ICaptureGraphBuilder2* This, | 
|  | IUnknown* pSource, | 
|  | PIN_DIRECTION pindir, | 
|  | const GUID* pCategory, | 
|  | const GUID* pType, | 
|  | BOOL fUnconnected, | 
|  | int num, | 
|  | IPin** ppPin); | 
|  | void __RPC_STUB ICaptureGraphBuilder2_FindPin_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __ICaptureGraphBuilder2_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | enum _AM_RENSDEREXFLAGS { | 
|  | AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x1 | 
|  | }; | 
|  |  | 
|  | #ifndef __IFilterGraph2_FWD_DEFINED__ | 
|  | #define __IFilterGraph2_FWD_DEFINED__ | 
|  | typedef struct IFilterGraph2 IFilterGraph2; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IFilterGraph2 interface | 
|  | */ | 
|  | #ifndef __IFilterGraph2_INTERFACE_DEFINED__ | 
|  | #define __IFilterGraph2_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IFilterGraph2, 0x36b73882, 0xc2c8, 0x11cf, 0x8b,0x46, 0x00,0x80,0x5f,0x6c,0xef,0x60); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IFilterGraph2 : public IGraphBuilder | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE AddSourceFilterForMoniker( | 
|  | IMoniker* pMoniker, | 
|  | IBindCtx* pCtx, | 
|  | LPCWSTR lpcwstrFilterName, | 
|  | IBaseFilter** ppFilter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ReconnectEx( | 
|  | IPin* ppin, | 
|  | const AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RenderEx( | 
|  | IPin* pPinOut, | 
|  | DWORD dwFlags, | 
|  | DWORD* pvContext) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IFilterGraph2Vtbl IFilterGraph2Vtbl; | 
|  | struct IFilterGraph2 { | 
|  | const IFilterGraph2Vtbl* lpVtbl; | 
|  | }; | 
|  | struct IFilterGraph2Vtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IFilterGraph2* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IFilterGraph2* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IFilterGraph2* This); | 
|  |  | 
|  | /*** IFilterGraph methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *AddFilter)( | 
|  | IFilterGraph2* This, | 
|  | IBaseFilter* pFilter, | 
|  | LPCWSTR pName); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RemoveFilter)( | 
|  | IFilterGraph2* This, | 
|  | IBaseFilter* pFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EnumFilters)( | 
|  | IFilterGraph2* This, | 
|  | IEnumFilters** ppEnum); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *FindFilterByName)( | 
|  | IFilterGraph2* This, | 
|  | LPCWSTR pName, | 
|  | IBaseFilter** ppFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ConnectDirect)( | 
|  | IFilterGraph2* This, | 
|  | IPin* ppinOut, | 
|  | IPin* ppinIn, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Reconnect)( | 
|  | IFilterGraph2* This, | 
|  | IPin* ppin); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Disconnect)( | 
|  | IFilterGraph2* This, | 
|  | IPin* ppin); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetDefaultSyncSource)( | 
|  | IFilterGraph2* This); | 
|  |  | 
|  | /*** IGraphBuilder methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Connect)( | 
|  | IFilterGraph2* This, | 
|  | IPin* ppinOut, | 
|  | IPin* ppinIn); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Render)( | 
|  | IFilterGraph2* This, | 
|  | IPin* ppinOut); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RenderFile)( | 
|  | IFilterGraph2* This, | 
|  | LPCWSTR lpcwstrFile, | 
|  | LPCWSTR lpcwstrPlayList); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *AddSourceFilter)( | 
|  | IFilterGraph2* This, | 
|  | LPCWSTR lpcwstrFileName, | 
|  | LPCWSTR lpcwstrFilterName, | 
|  | IBaseFilter** ppFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetLogFile)( | 
|  | IFilterGraph2* This, | 
|  | DWORD_PTR hFile); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Abort)( | 
|  | IFilterGraph2* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ShouldOperationContinue)( | 
|  | IFilterGraph2* This); | 
|  |  | 
|  | /*** IFilterGraph2 methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *AddSourceFilterForMoniker)( | 
|  | IFilterGraph2* This, | 
|  | IMoniker* pMoniker, | 
|  | IBindCtx* pCtx, | 
|  | LPCWSTR lpcwstrFilterName, | 
|  | IBaseFilter** ppFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ReconnectEx)( | 
|  | IFilterGraph2* This, | 
|  | IPin* ppin, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RenderEx)( | 
|  | IFilterGraph2* This, | 
|  | IPin* pPinOut, | 
|  | DWORD dwFlags, | 
|  | DWORD* pvContext); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IFilterGraph2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IFilterGraph2_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IFilterGraph2_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IFilterGraph methods ***/ | 
|  | #define IFilterGraph2_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b) | 
|  | #define IFilterGraph2_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a) | 
|  | #define IFilterGraph2_EnumFilters(p,a) (p)->lpVtbl->EnumFilters(p,a) | 
|  | #define IFilterGraph2_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b) | 
|  | #define IFilterGraph2_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c) | 
|  | #define IFilterGraph2_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a) | 
|  | #define IFilterGraph2_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a) | 
|  | #define IFilterGraph2_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p) | 
|  | /*** IGraphBuilder methods ***/ | 
|  | #define IFilterGraph2_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b) | 
|  | #define IFilterGraph2_Render(p,a) (p)->lpVtbl->Render(p,a) | 
|  | #define IFilterGraph2_RenderFile(p,a,b) (p)->lpVtbl->RenderFile(p,a,b) | 
|  | #define IFilterGraph2_AddSourceFilter(p,a,b,c) (p)->lpVtbl->AddSourceFilter(p,a,b,c) | 
|  | #define IFilterGraph2_SetLogFile(p,a) (p)->lpVtbl->SetLogFile(p,a) | 
|  | #define IFilterGraph2_Abort(p) (p)->lpVtbl->Abort(p) | 
|  | #define IFilterGraph2_ShouldOperationContinue(p) (p)->lpVtbl->ShouldOperationContinue(p) | 
|  | /*** IFilterGraph2 methods ***/ | 
|  | #define IFilterGraph2_AddSourceFilterForMoniker(p,a,b,c,d) (p)->lpVtbl->AddSourceFilterForMoniker(p,a,b,c,d) | 
|  | #define IFilterGraph2_ReconnectEx(p,a,b) (p)->lpVtbl->ReconnectEx(p,a,b) | 
|  | #define IFilterGraph2_RenderEx(p,a,b,c) (p)->lpVtbl->RenderEx(p,a,b,c) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IFilterGraph2_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IFilterGraph methods ***/ \ | 
|  | STDMETHOD_(HRESULT,AddFilter)(THIS_ IBaseFilter* pFilter, LPCWSTR pName) PURE; \ | 
|  | STDMETHOD_(HRESULT,RemoveFilter)(THIS_ IBaseFilter* pFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,EnumFilters)(THIS_ IEnumFilters** ppEnum) PURE; \ | 
|  | STDMETHOD_(HRESULT,FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter** ppFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,ConnectDirect)(THIS_ IPin* ppinOut, IPin* ppinIn, const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* ppin) PURE; \ | 
|  | STDMETHOD_(HRESULT,Disconnect)(THIS_ IPin* ppin) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetDefaultSyncSource)(THIS) PURE; \ | 
|  | /*** IGraphBuilder methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Connect)(THIS_ IPin* ppinOut, IPin* ppinIn) PURE; \ | 
|  | STDMETHOD_(HRESULT,Render)(THIS_ IPin* ppinOut) PURE; \ | 
|  | STDMETHOD_(HRESULT,RenderFile)(THIS_ LPCWSTR lpcwstrFile, LPCWSTR lpcwstrPlayList) PURE; \ | 
|  | STDMETHOD_(HRESULT,AddSourceFilter)(THIS_ LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetLogFile)(THIS_ DWORD_PTR hFile) PURE; \ | 
|  | STDMETHOD_(HRESULT,Abort)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,ShouldOperationContinue)(THIS) PURE; \ | 
|  | /*** IFilterGraph2 methods ***/ \ | 
|  | STDMETHOD_(HRESULT,AddSourceFilterForMoniker)(THIS_ IMoniker* pMoniker, IBindCtx* pCtx, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,ReconnectEx)(THIS_ IPin* ppin, const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,RenderEx)(THIS_ IPin* pPinOut, DWORD dwFlags, DWORD* pvContext) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IFilterGraph2_AddSourceFilterForMoniker_Proxy( | 
|  | IFilterGraph2* This, | 
|  | IMoniker* pMoniker, | 
|  | IBindCtx* pCtx, | 
|  | LPCWSTR lpcwstrFilterName, | 
|  | IBaseFilter** ppFilter); | 
|  | void __RPC_STUB IFilterGraph2_AddSourceFilterForMoniker_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterGraph2_ReconnectEx_Proxy( | 
|  | IFilterGraph2* This, | 
|  | IPin* ppin, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IFilterGraph2_ReconnectEx_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterGraph2_RenderEx_Proxy( | 
|  | IFilterGraph2* This, | 
|  | IPin* pPinOut, | 
|  | DWORD dwFlags, | 
|  | DWORD* pvContext); | 
|  | void __RPC_STUB IFilterGraph2_RenderEx_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IFilterGraph2_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #ifndef __IStreamBuilder_FWD_DEFINED__ | 
|  | #define __IStreamBuilder_FWD_DEFINED__ | 
|  | typedef struct IStreamBuilder IStreamBuilder; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IStreamBuilder interface | 
|  | */ | 
|  | #ifndef __IStreamBuilder_INTERFACE_DEFINED__ | 
|  | #define __IStreamBuilder_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IStreamBuilder, 0x56a868bf, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IStreamBuilder : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Render( | 
|  | IPin* ppinOut, | 
|  | IGraphBuilder* pGraph) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Backout( | 
|  | IPin* ppinOut, | 
|  | IGraphBuilder* pGraph) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IStreamBuilderVtbl IStreamBuilderVtbl; | 
|  | struct IStreamBuilder { | 
|  | const IStreamBuilderVtbl* lpVtbl; | 
|  | }; | 
|  | struct IStreamBuilderVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IStreamBuilder* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IStreamBuilder* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IStreamBuilder* This); | 
|  |  | 
|  | /*** IStreamBuilder methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Render)( | 
|  | IStreamBuilder* This, | 
|  | IPin* ppinOut, | 
|  | IGraphBuilder* pGraph); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Backout)( | 
|  | IStreamBuilder* This, | 
|  | IPin* ppinOut, | 
|  | IGraphBuilder* pGraph); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IStreamBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IStreamBuilder_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IStreamBuilder_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IStreamBuilder methods ***/ | 
|  | #define IStreamBuilder_Render(p,a,b) (p)->lpVtbl->Render(p,a,b) | 
|  | #define IStreamBuilder_Backout(p,a,b) (p)->lpVtbl->Backout(p,a,b) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IStreamBuilder_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IStreamBuilder methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Render)(THIS_ IPin* ppinOut, IGraphBuilder* pGraph) PURE; \ | 
|  | STDMETHOD_(HRESULT,Backout)(THIS_ IPin* ppinOut, IGraphBuilder* pGraph) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IStreamBuilder_Render_Proxy( | 
|  | IStreamBuilder* This, | 
|  | IPin* ppinOut, | 
|  | IGraphBuilder* pGraph); | 
|  | void __RPC_STUB IStreamBuilder_Render_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IStreamBuilder_Backout_Proxy( | 
|  | IStreamBuilder* This, | 
|  | IPin* ppinOut, | 
|  | IGraphBuilder* pGraph); | 
|  | void __RPC_STUB IStreamBuilder_Backout_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IStreamBuilder_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #ifndef __IAsyncReader_FWD_DEFINED__ | 
|  | #define __IAsyncReader_FWD_DEFINED__ | 
|  | typedef struct IAsyncReader IAsyncReader; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IAsyncReader interface | 
|  | */ | 
|  | #ifndef __IAsyncReader_INTERFACE_DEFINED__ | 
|  | #define __IAsyncReader_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IAsyncReader, 0x56a868aa, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IAsyncReader : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE RequestAllocator( | 
|  | IMemAllocator* pPreferred, | 
|  | ALLOCATOR_PROPERTIES* pProps, | 
|  | IMemAllocator** ppActual) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Request( | 
|  | IMediaSample* pSample, | 
|  | DWORD_PTR dwUser) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE WaitForNext( | 
|  | DWORD dwTimeout, | 
|  | IMediaSample** ppSample, | 
|  | DWORD_PTR* pdwUser) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SyncReadAligned( | 
|  | IMediaSample* pSample) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SyncRead( | 
|  | LONGLONG llPosition, | 
|  | LONG lLength, | 
|  | BYTE* pBuffer) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Length( | 
|  | LONGLONG* pTotal, | 
|  | LONGLONG* pAvailable) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE BeginFlush( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE EndFlush( | 
|  | ) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IAsyncReaderVtbl IAsyncReaderVtbl; | 
|  | struct IAsyncReader { | 
|  | const IAsyncReaderVtbl* lpVtbl; | 
|  | }; | 
|  | struct IAsyncReaderVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IAsyncReader* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IAsyncReader* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IAsyncReader* This); | 
|  |  | 
|  | /*** IAsyncReader methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *RequestAllocator)( | 
|  | IAsyncReader* This, | 
|  | IMemAllocator* pPreferred, | 
|  | ALLOCATOR_PROPERTIES* pProps, | 
|  | IMemAllocator** ppActual); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Request)( | 
|  | IAsyncReader* This, | 
|  | IMediaSample* pSample, | 
|  | DWORD_PTR dwUser); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *WaitForNext)( | 
|  | IAsyncReader* This, | 
|  | DWORD dwTimeout, | 
|  | IMediaSample** ppSample, | 
|  | DWORD_PTR* pdwUser); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SyncReadAligned)( | 
|  | IAsyncReader* This, | 
|  | IMediaSample* pSample); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SyncRead)( | 
|  | IAsyncReader* This, | 
|  | LONGLONG llPosition, | 
|  | LONG lLength, | 
|  | BYTE* pBuffer); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Length)( | 
|  | IAsyncReader* This, | 
|  | LONGLONG* pTotal, | 
|  | LONGLONG* pAvailable); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *BeginFlush)( | 
|  | IAsyncReader* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EndFlush)( | 
|  | IAsyncReader* This); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IAsyncReader_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IAsyncReader_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IAsyncReader_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IAsyncReader methods ***/ | 
|  | #define IAsyncReader_RequestAllocator(p,a,b,c) (p)->lpVtbl->RequestAllocator(p,a,b,c) | 
|  | #define IAsyncReader_Request(p,a,b) (p)->lpVtbl->Request(p,a,b) | 
|  | #define IAsyncReader_WaitForNext(p,a,b,c) (p)->lpVtbl->WaitForNext(p,a,b,c) | 
|  | #define IAsyncReader_SyncReadAligned(p,a) (p)->lpVtbl->SyncReadAligned(p,a) | 
|  | #define IAsyncReader_SyncRead(p,a,b,c) (p)->lpVtbl->SyncRead(p,a,b,c) | 
|  | #define IAsyncReader_Length(p,a,b) (p)->lpVtbl->Length(p,a,b) | 
|  | #define IAsyncReader_BeginFlush(p) (p)->lpVtbl->BeginFlush(p) | 
|  | #define IAsyncReader_EndFlush(p) (p)->lpVtbl->EndFlush(p) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IAsyncReader_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IAsyncReader methods ***/ \ | 
|  | STDMETHOD_(HRESULT,RequestAllocator)(THIS_ IMemAllocator* pPreferred, ALLOCATOR_PROPERTIES* pProps, IMemAllocator** ppActual) PURE; \ | 
|  | STDMETHOD_(HRESULT,Request)(THIS_ IMediaSample* pSample, DWORD_PTR dwUser) PURE; \ | 
|  | STDMETHOD_(HRESULT,WaitForNext)(THIS_ DWORD dwTimeout, IMediaSample** ppSample, DWORD_PTR* pdwUser) PURE; \ | 
|  | STDMETHOD_(HRESULT,SyncReadAligned)(THIS_ IMediaSample* pSample) PURE; \ | 
|  | STDMETHOD_(HRESULT,SyncRead)(THIS_ LONGLONG llPosition, LONG lLength, BYTE* pBuffer) PURE; \ | 
|  | STDMETHOD_(HRESULT,Length)(THIS_ LONGLONG* pTotal, LONGLONG* pAvailable) PURE; \ | 
|  | STDMETHOD_(HRESULT,BeginFlush)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,EndFlush)(THIS) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IAsyncReader_RequestAllocator_Proxy( | 
|  | IAsyncReader* This, | 
|  | IMemAllocator* pPreferred, | 
|  | ALLOCATOR_PROPERTIES* pProps, | 
|  | IMemAllocator** ppActual); | 
|  | void __RPC_STUB IAsyncReader_RequestAllocator_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IAsyncReader_Request_Proxy( | 
|  | IAsyncReader* This, | 
|  | IMediaSample* pSample, | 
|  | DWORD_PTR dwUser); | 
|  | void __RPC_STUB IAsyncReader_Request_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IAsyncReader_WaitForNext_Proxy( | 
|  | IAsyncReader* This, | 
|  | DWORD dwTimeout, | 
|  | IMediaSample** ppSample, | 
|  | DWORD_PTR* pdwUser); | 
|  | void __RPC_STUB IAsyncReader_WaitForNext_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IAsyncReader_SyncReadAligned_Proxy( | 
|  | IAsyncReader* This, | 
|  | IMediaSample* pSample); | 
|  | void __RPC_STUB IAsyncReader_SyncReadAligned_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IAsyncReader_SyncRead_Proxy( | 
|  | IAsyncReader* This, | 
|  | LONGLONG llPosition, | 
|  | LONG lLength, | 
|  | BYTE* pBuffer); | 
|  | void __RPC_STUB IAsyncReader_SyncRead_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IAsyncReader_Length_Proxy( | 
|  | IAsyncReader* This, | 
|  | LONGLONG* pTotal, | 
|  | LONGLONG* pAvailable); | 
|  | void __RPC_STUB IAsyncReader_Length_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IAsyncReader_BeginFlush_Proxy( | 
|  | IAsyncReader* This); | 
|  | void __RPC_STUB IAsyncReader_BeginFlush_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IAsyncReader_EndFlush_Proxy( | 
|  | IAsyncReader* This); | 
|  | void __RPC_STUB IAsyncReader_EndFlush_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IAsyncReader_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #ifndef __IGraphVersion_FWD_DEFINED__ | 
|  | #define __IGraphVersion_FWD_DEFINED__ | 
|  | typedef struct IGraphVersion IGraphVersion; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IGraphVersion interface | 
|  | */ | 
|  | #ifndef __IGraphVersion_INTERFACE_DEFINED__ | 
|  | #define __IGraphVersion_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IGraphVersion, 0x56a868ab, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IGraphVersion : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE QueryVersion( | 
|  | LONG* pVersion) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IGraphVersionVtbl IGraphVersionVtbl; | 
|  | struct IGraphVersion { | 
|  | const IGraphVersionVtbl* lpVtbl; | 
|  | }; | 
|  | struct IGraphVersionVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IGraphVersion* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IGraphVersion* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IGraphVersion* This); | 
|  |  | 
|  | /*** IGraphVersion methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryVersion)( | 
|  | IGraphVersion* This, | 
|  | LONG* pVersion); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IGraphVersion_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IGraphVersion_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IGraphVersion_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IGraphVersion methods ***/ | 
|  | #define IGraphVersion_QueryVersion(p,a) (p)->lpVtbl->QueryVersion(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IGraphVersion_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IGraphVersion methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryVersion)(THIS_ LONG* pVersion) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IGraphVersion_QueryVersion_Proxy( | 
|  | IGraphVersion* This, | 
|  | LONG* pVersion); | 
|  | void __RPC_STUB IGraphVersion_QueryVersion_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IGraphVersion_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #ifndef __IResourceConsumer_FWD_DEFINED__ | 
|  | #define __IResourceConsumer_FWD_DEFINED__ | 
|  | typedef struct IResourceConsumer IResourceConsumer; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IResourceConsumer interface | 
|  | */ | 
|  | #ifndef __IResourceConsumer_INTERFACE_DEFINED__ | 
|  | #define __IResourceConsumer_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IResourceConsumer, 0x56a868ad, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IResourceConsumer : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE AcquireResource( | 
|  | LONG idResource) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ReleaseResource( | 
|  | LONG idResource) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IResourceConsumerVtbl IResourceConsumerVtbl; | 
|  | struct IResourceConsumer { | 
|  | const IResourceConsumerVtbl* lpVtbl; | 
|  | }; | 
|  | struct IResourceConsumerVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IResourceConsumer* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IResourceConsumer* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IResourceConsumer* This); | 
|  |  | 
|  | /*** IResourceConsumer methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *AcquireResource)( | 
|  | IResourceConsumer* This, | 
|  | LONG idResource); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ReleaseResource)( | 
|  | IResourceConsumer* This, | 
|  | LONG idResource); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IResourceConsumer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IResourceConsumer_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IResourceConsumer_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IResourceConsumer methods ***/ | 
|  | #define IResourceConsumer_AcquireResource(p,a) (p)->lpVtbl->AcquireResource(p,a) | 
|  | #define IResourceConsumer_ReleaseResource(p,a) (p)->lpVtbl->ReleaseResource(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IResourceConsumer_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IResourceConsumer methods ***/ \ | 
|  | STDMETHOD_(HRESULT,AcquireResource)(THIS_ LONG idResource) PURE; \ | 
|  | STDMETHOD_(HRESULT,ReleaseResource)(THIS_ LONG idResource) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IResourceConsumer_AcquireResource_Proxy( | 
|  | IResourceConsumer* This, | 
|  | LONG idResource); | 
|  | void __RPC_STUB IResourceConsumer_AcquireResource_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IResourceConsumer_ReleaseResource_Proxy( | 
|  | IResourceConsumer* This, | 
|  | LONG idResource); | 
|  | void __RPC_STUB IResourceConsumer_ReleaseResource_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IResourceConsumer_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #ifndef __IResourceManager_FWD_DEFINED__ | 
|  | #define __IResourceManager_FWD_DEFINED__ | 
|  | typedef struct IResourceManager IResourceManager; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IResourceManager interface | 
|  | */ | 
|  | #ifndef __IResourceManager_INTERFACE_DEFINED__ | 
|  | #define __IResourceManager_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IResourceManager, 0x56a868ac, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IResourceManager : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Register( | 
|  | LPCWSTR pName, | 
|  | LONG cResource, | 
|  | LONG* plToken) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RegisterGroup( | 
|  | LPCWSTR pName, | 
|  | LONG cResource, | 
|  | LONG* palTokens, | 
|  | LONG* plToken) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RequestResource( | 
|  | LONG idResource, | 
|  | IUnknown* pFocusObject, | 
|  | IResourceConsumer* pConsumer) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE NotifyAcquire( | 
|  | LONG idResource, | 
|  | IResourceConsumer* pConsumer, | 
|  | HRESULT hr) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE NotifyRelease( | 
|  | LONG idResource, | 
|  | IResourceConsumer* pConsumer, | 
|  | BOOL bStillWant) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE CancelRequest( | 
|  | LONG idResource, | 
|  | IResourceConsumer* pConsumer) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetFocus( | 
|  | IUnknown* pFocusObject) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE ReleaseFocus( | 
|  | IUnknown* pFocusObject) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IResourceManagerVtbl IResourceManagerVtbl; | 
|  | struct IResourceManager { | 
|  | const IResourceManagerVtbl* lpVtbl; | 
|  | }; | 
|  | struct IResourceManagerVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IResourceManager* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IResourceManager* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IResourceManager* This); | 
|  |  | 
|  | /*** IResourceManager methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Register)( | 
|  | IResourceManager* This, | 
|  | LPCWSTR pName, | 
|  | LONG cResource, | 
|  | LONG* plToken); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RegisterGroup)( | 
|  | IResourceManager* This, | 
|  | LPCWSTR pName, | 
|  | LONG cResource, | 
|  | LONG* palTokens, | 
|  | LONG* plToken); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RequestResource)( | 
|  | IResourceManager* This, | 
|  | LONG idResource, | 
|  | IUnknown* pFocusObject, | 
|  | IResourceConsumer* pConsumer); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *NotifyAcquire)( | 
|  | IResourceManager* This, | 
|  | LONG idResource, | 
|  | IResourceConsumer* pConsumer, | 
|  | HRESULT hr); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *NotifyRelease)( | 
|  | IResourceManager* This, | 
|  | LONG idResource, | 
|  | IResourceConsumer* pConsumer, | 
|  | BOOL bStillWant); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *CancelRequest)( | 
|  | IResourceManager* This, | 
|  | LONG idResource, | 
|  | IResourceConsumer* pConsumer); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetFocus)( | 
|  | IResourceManager* This, | 
|  | IUnknown* pFocusObject); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *ReleaseFocus)( | 
|  | IResourceManager* This, | 
|  | IUnknown* pFocusObject); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IResourceManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IResourceManager_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IResourceManager_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IResourceManager methods ***/ | 
|  | #define IResourceManager_Register(p,a,b,c) (p)->lpVtbl->Register(p,a,b,c) | 
|  | #define IResourceManager_RegisterGroup(p,a,b,c,d) (p)->lpVtbl->RegisterGroup(p,a,b,c,d) | 
|  | #define IResourceManager_RequestResource(p,a,b,c) (p)->lpVtbl->RequestResource(p,a,b,c) | 
|  | #define IResourceManager_NotifyAcquire(p,a,b,c) (p)->lpVtbl->NotifyAcquire(p,a,b,c) | 
|  | #define IResourceManager_NotifyRelease(p,a,b,c) (p)->lpVtbl->NotifyRelease(p,a,b,c) | 
|  | #define IResourceManager_CancelRequest(p,a,b) (p)->lpVtbl->CancelRequest(p,a,b) | 
|  | #define IResourceManager_SetFocus(p,a) (p)->lpVtbl->SetFocus(p,a) | 
|  | #define IResourceManager_ReleaseFocus(p,a) (p)->lpVtbl->ReleaseFocus(p,a) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IResourceManager_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IResourceManager methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Register)(THIS_ LPCWSTR pName, LONG cResource, LONG* plToken) PURE; \ | 
|  | STDMETHOD_(HRESULT,RegisterGroup)(THIS_ LPCWSTR pName, LONG cResource, LONG* palTokens, LONG* plToken) PURE; \ | 
|  | STDMETHOD_(HRESULT,RequestResource)(THIS_ LONG idResource, IUnknown* pFocusObject, IResourceConsumer* pConsumer) PURE; \ | 
|  | STDMETHOD_(HRESULT,NotifyAcquire)(THIS_ LONG idResource, IResourceConsumer* pConsumer, HRESULT hr) PURE; \ | 
|  | STDMETHOD_(HRESULT,NotifyRelease)(THIS_ LONG idResource, IResourceConsumer* pConsumer, BOOL bStillWant) PURE; \ | 
|  | STDMETHOD_(HRESULT,CancelRequest)(THIS_ LONG idResource, IResourceConsumer* pConsumer) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetFocus)(THIS_ IUnknown* pFocusObject) PURE; \ | 
|  | STDMETHOD_(HRESULT,ReleaseFocus)(THIS_ IUnknown* pFocusObject) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IResourceManager_Register_Proxy( | 
|  | IResourceManager* This, | 
|  | LPCWSTR pName, | 
|  | LONG cResource, | 
|  | LONG* plToken); | 
|  | void __RPC_STUB IResourceManager_Register_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IResourceManager_RegisterGroup_Proxy( | 
|  | IResourceManager* This, | 
|  | LPCWSTR pName, | 
|  | LONG cResource, | 
|  | LONG* palTokens, | 
|  | LONG* plToken); | 
|  | void __RPC_STUB IResourceManager_RegisterGroup_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IResourceManager_RequestResource_Proxy( | 
|  | IResourceManager* This, | 
|  | LONG idResource, | 
|  | IUnknown* pFocusObject, | 
|  | IResourceConsumer* pConsumer); | 
|  | void __RPC_STUB IResourceManager_RequestResource_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IResourceManager_NotifyAcquire_Proxy( | 
|  | IResourceManager* This, | 
|  | LONG idResource, | 
|  | IResourceConsumer* pConsumer, | 
|  | HRESULT hr); | 
|  | void __RPC_STUB IResourceManager_NotifyAcquire_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IResourceManager_NotifyRelease_Proxy( | 
|  | IResourceManager* This, | 
|  | LONG idResource, | 
|  | IResourceConsumer* pConsumer, | 
|  | BOOL bStillWant); | 
|  | void __RPC_STUB IResourceManager_NotifyRelease_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IResourceManager_CancelRequest_Proxy( | 
|  | IResourceManager* This, | 
|  | LONG idResource, | 
|  | IResourceConsumer* pConsumer); | 
|  | void __RPC_STUB IResourceManager_CancelRequest_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IResourceManager_SetFocus_Proxy( | 
|  | IResourceManager* This, | 
|  | IUnknown* pFocusObject); | 
|  | void __RPC_STUB IResourceManager_SetFocus_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IResourceManager_ReleaseFocus_Proxy( | 
|  | IResourceManager* This, | 
|  | IUnknown* pFocusObject); | 
|  | void __RPC_STUB IResourceManager_ReleaseFocus_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IResourceManager_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #ifndef _IKsPropertySet_ | 
|  | #define _IKsPropertySet_ | 
|  | #define KSPROPERTY_SUPPORT_GET  1 | 
|  | #define KSPROPERTY_SUPPORT_SET  2 | 
|  | /***************************************************************************** | 
|  | * IKsPropertySet interface | 
|  | */ | 
|  | #ifndef __IKsPropertySet_INTERFACE_DEFINED__ | 
|  | #define __IKsPropertySet_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IKsPropertySet, 0x31efac30, 0x515c, 0x11d0, 0xa9,0xaa, 0x00,0xaa,0x00,0x61,0xbe,0x93); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IKsPropertySet : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Set( | 
|  | REFGUID guidPropSet, | 
|  | DWORD dwPropID, | 
|  | LPVOID pInstanceData, | 
|  | DWORD cbInstanceData, | 
|  | LPVOID pPropData, | 
|  | DWORD cbPropData) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Get( | 
|  | REFGUID guidPropSet, | 
|  | DWORD dwPropID, | 
|  | LPVOID pInstanceData, | 
|  | DWORD cbInstanceData, | 
|  | LPVOID pPropData, | 
|  | DWORD cbPropData, | 
|  | DWORD* pcbReturned) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE QuerySupported( | 
|  | REFGUID guidPropSet, | 
|  | DWORD dwPropID, | 
|  | DWORD* pTypeSupport) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IKsPropertySetVtbl IKsPropertySetVtbl; | 
|  | struct IKsPropertySet { | 
|  | const IKsPropertySetVtbl* lpVtbl; | 
|  | }; | 
|  | struct IKsPropertySetVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IKsPropertySet* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IKsPropertySet* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IKsPropertySet* This); | 
|  |  | 
|  | /*** IKsPropertySet methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Set)( | 
|  | IKsPropertySet* This, | 
|  | REFGUID guidPropSet, | 
|  | DWORD dwPropID, | 
|  | LPVOID pInstanceData, | 
|  | DWORD cbInstanceData, | 
|  | LPVOID pPropData, | 
|  | DWORD cbPropData); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Get)( | 
|  | IKsPropertySet* This, | 
|  | REFGUID guidPropSet, | 
|  | DWORD dwPropID, | 
|  | LPVOID pInstanceData, | 
|  | DWORD cbInstanceData, | 
|  | LPVOID pPropData, | 
|  | DWORD cbPropData, | 
|  | DWORD* pcbReturned); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *QuerySupported)( | 
|  | IKsPropertySet* This, | 
|  | REFGUID guidPropSet, | 
|  | DWORD dwPropID, | 
|  | DWORD* pTypeSupport); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IKsPropertySet_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IKsPropertySet_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IKsPropertySet_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IKsPropertySet methods ***/ | 
|  | #define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->lpVtbl->Set(p,a,b,c,d,e,f) | 
|  | #define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->lpVtbl->Get(p,a,b,c,d,e,f,g) | 
|  | #define IKsPropertySet_QuerySupported(p,a,b,c) (p)->lpVtbl->QuerySupported(p,a,b,c) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IKsPropertySet_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IKsPropertySet methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Set)(THIS_ REFGUID guidPropSet, DWORD dwPropID, LPVOID pInstanceData, DWORD cbInstanceData, LPVOID pPropData, DWORD cbPropData) PURE; \ | 
|  | STDMETHOD_(HRESULT,Get)(THIS_ REFGUID guidPropSet, DWORD dwPropID, LPVOID pInstanceData, DWORD cbInstanceData, LPVOID pPropData, DWORD cbPropData, DWORD* pcbReturned) PURE; \ | 
|  | STDMETHOD_(HRESULT,QuerySupported)(THIS_ REFGUID guidPropSet, DWORD dwPropID, DWORD* pTypeSupport) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IKsPropertySet_Set_Proxy( | 
|  | IKsPropertySet* This, | 
|  | REFGUID guidPropSet, | 
|  | DWORD dwPropID, | 
|  | LPVOID pInstanceData, | 
|  | DWORD cbInstanceData, | 
|  | LPVOID pPropData, | 
|  | DWORD cbPropData); | 
|  | void __RPC_STUB IKsPropertySet_Set_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IKsPropertySet_Get_Proxy( | 
|  | IKsPropertySet* This, | 
|  | REFGUID guidPropSet, | 
|  | DWORD dwPropID, | 
|  | LPVOID pInstanceData, | 
|  | DWORD cbInstanceData, | 
|  | LPVOID pPropData, | 
|  | DWORD cbPropData, | 
|  | DWORD* pcbReturned); | 
|  | void __RPC_STUB IKsPropertySet_Get_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IKsPropertySet_QuerySupported_Proxy( | 
|  | IKsPropertySet* This, | 
|  | REFGUID guidPropSet, | 
|  | DWORD dwPropID, | 
|  | DWORD* pTypeSupport); | 
|  | void __RPC_STUB IKsPropertySet_QuerySupported_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IKsPropertySet_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #endif /* _IKsPropertySet_ */ | 
|  | #ifndef __IPinConnection_FWD_DEFINED__ | 
|  | #define __IPinConnection_FWD_DEFINED__ | 
|  | typedef struct IPinConnection IPinConnection; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IPinFlowControl_FWD_DEFINED__ | 
|  | #define __IPinFlowControl_FWD_DEFINED__ | 
|  | typedef struct IPinFlowControl IPinFlowControl; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IGraphConfig_FWD_DEFINED__ | 
|  | #define __IGraphConfig_FWD_DEFINED__ | 
|  | typedef struct IGraphConfig IGraphConfig; | 
|  | #endif | 
|  |  | 
|  | #ifndef __IGraphConfigCallback_FWD_DEFINED__ | 
|  | #define __IGraphConfigCallback_FWD_DEFINED__ | 
|  | typedef struct IGraphConfigCallback IGraphConfigCallback; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IPinConnection interface | 
|  | */ | 
|  | #ifndef __IPinConnection_INTERFACE_DEFINED__ | 
|  | #define __IPinConnection_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IPinConnection, 0x4a9a62d3, 0x27d4, 0x403d, 0x91,0xe9, 0x89,0xf5,0x40,0xe5,0x55,0x34); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IPinConnection : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE DynamicQueryAccept( | 
|  | const AM_MEDIA_TYPE* pmt) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE NotifyEndOfStream( | 
|  | HANDLE hNotifyEvent) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE IsEndPin( | 
|  | ) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE DynamicDisconnect( | 
|  | ) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IPinConnectionVtbl IPinConnectionVtbl; | 
|  | struct IPinConnection { | 
|  | const IPinConnectionVtbl* lpVtbl; | 
|  | }; | 
|  | struct IPinConnectionVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IPinConnection* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IPinConnection* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IPinConnection* This); | 
|  |  | 
|  | /*** IPinConnection methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *DynamicQueryAccept)( | 
|  | IPinConnection* This, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *NotifyEndOfStream)( | 
|  | IPinConnection* This, | 
|  | HANDLE hNotifyEvent); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *IsEndPin)( | 
|  | IPinConnection* This); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *DynamicDisconnect)( | 
|  | IPinConnection* This); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IPinConnection_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IPinConnection_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IPinConnection_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IPinConnection methods ***/ | 
|  | #define IPinConnection_DynamicQueryAccept(p,a) (p)->lpVtbl->DynamicQueryAccept(p,a) | 
|  | #define IPinConnection_NotifyEndOfStream(p,a) (p)->lpVtbl->NotifyEndOfStream(p,a) | 
|  | #define IPinConnection_IsEndPin(p) (p)->lpVtbl->IsEndPin(p) | 
|  | #define IPinConnection_DynamicDisconnect(p) (p)->lpVtbl->DynamicDisconnect(p) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IPinConnection_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IPinConnection methods ***/ \ | 
|  | STDMETHOD_(HRESULT,DynamicQueryAccept)(THIS_ const AM_MEDIA_TYPE* pmt) PURE; \ | 
|  | STDMETHOD_(HRESULT,NotifyEndOfStream)(THIS_ HANDLE hNotifyEvent) PURE; \ | 
|  | STDMETHOD_(HRESULT,IsEndPin)(THIS) PURE; \ | 
|  | STDMETHOD_(HRESULT,DynamicDisconnect)(THIS) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IPinConnection_DynamicQueryAccept_Proxy( | 
|  | IPinConnection* This, | 
|  | const AM_MEDIA_TYPE* pmt); | 
|  | void __RPC_STUB IPinConnection_DynamicQueryAccept_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPinConnection_NotifyEndOfStream_Proxy( | 
|  | IPinConnection* This, | 
|  | HANDLE hNotifyEvent); | 
|  | void __RPC_STUB IPinConnection_NotifyEndOfStream_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPinConnection_IsEndPin_Proxy( | 
|  | IPinConnection* This); | 
|  | void __RPC_STUB IPinConnection_IsEndPin_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IPinConnection_DynamicDisconnect_Proxy( | 
|  | IPinConnection* This); | 
|  | void __RPC_STUB IPinConnection_DynamicDisconnect_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IPinConnection_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IPinFlowControl interface | 
|  | */ | 
|  | #ifndef __IPinFlowControl_INTERFACE_DEFINED__ | 
|  | #define __IPinFlowControl_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IPinFlowControl, 0xc56e9858, 0xdbf3, 0x4f6b, 0x81,0x19, 0x38,0x4a,0xf2,0x06,0x0d,0xeb); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IPinFlowControl : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Block( | 
|  | DWORD dwBlockFlags, | 
|  | HANDLE hEvent) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IPinFlowControlVtbl IPinFlowControlVtbl; | 
|  | struct IPinFlowControl { | 
|  | const IPinFlowControlVtbl* lpVtbl; | 
|  | }; | 
|  | struct IPinFlowControlVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IPinFlowControl* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IPinFlowControl* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IPinFlowControl* This); | 
|  |  | 
|  | /*** IPinFlowControl methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Block)( | 
|  | IPinFlowControl* This, | 
|  | DWORD dwBlockFlags, | 
|  | HANDLE hEvent); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IPinFlowControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IPinFlowControl_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IPinFlowControl_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IPinFlowControl methods ***/ | 
|  | #define IPinFlowControl_Block(p,a,b) (p)->lpVtbl->Block(p,a,b) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IPinFlowControl_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IPinFlowControl methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Block)(THIS_ DWORD dwBlockFlags, HANDLE hEvent) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IPinFlowControl_Block_Proxy( | 
|  | IPinFlowControl* This, | 
|  | DWORD dwBlockFlags, | 
|  | HANDLE hEvent); | 
|  | void __RPC_STUB IPinFlowControl_Block_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IPinFlowControl_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS { | 
|  | AM_PIN_FLOW_CONTROL_BLOCK = 0x1 | 
|  | }; | 
|  |  | 
|  | typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS { | 
|  | AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x1, | 
|  | AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x2, | 
|  | AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x4 | 
|  | } AM_GRAPH_CONFIG_RECONNECT_FLAGS; | 
|  |  | 
|  | enum _REM_FILTER_FLAGS { | 
|  | REMFILTERF_LEAVECONNECTED = 0x1 | 
|  | }; | 
|  |  | 
|  | typedef enum _AM_FILTER_FLAGS { | 
|  | AM_FILTER_FLAGS_REMOVABLE = 0x1 | 
|  | } AM_FILTER_FLAGS; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IGraphConfig interface | 
|  | */ | 
|  | #ifndef __IGraphConfig_INTERFACE_DEFINED__ | 
|  | #define __IGraphConfig_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IGraphConfig, 0x03a1eb8e, 0x32bf, 0x4245, 0x85,0x02, 0x11,0x4d,0x08,0xa9,0xcb,0x88); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IGraphConfig : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Reconnect( | 
|  | IPin* pOutputPin, | 
|  | IPin* pInputPin, | 
|  | const AM_MEDIA_TYPE* pmtFirstConnection, | 
|  | IBaseFilter* pUsingFilter, | 
|  | HANDLE hAbortEvent, | 
|  | DWORD dwFlags) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE Reconfigure( | 
|  | IGraphConfigCallback* pCallback, | 
|  | PVOID pvContext, | 
|  | DWORD dwFlags, | 
|  | HANDLE hAbortEvent) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE AddFilterToCache( | 
|  | IBaseFilter* pFilter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE EnumCacheFilter( | 
|  | IEnumFilters** pEnum) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RemoveFilterFromCache( | 
|  | IBaseFilter* pFilter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetStartTime( | 
|  | REFERENCE_TIME* prtStart) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE PushThroughData( | 
|  | IPin* pOutputPin, | 
|  | IPinConnection* pConnection, | 
|  | HANDLE hEventAbort) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE SetFilterFlags( | 
|  | IBaseFilter* pFilter, | 
|  | DWORD dwFlags) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE GetFilterFlags( | 
|  | IBaseFilter* pFilter, | 
|  | DWORD* pdwFlags) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RemoveFilterEx( | 
|  | IBaseFilter* pFilter, | 
|  | DWORD Flags) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IGraphConfigVtbl IGraphConfigVtbl; | 
|  | struct IGraphConfig { | 
|  | const IGraphConfigVtbl* lpVtbl; | 
|  | }; | 
|  | struct IGraphConfigVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IGraphConfig* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IGraphConfig* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IGraphConfig* This); | 
|  |  | 
|  | /*** IGraphConfig methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Reconnect)( | 
|  | IGraphConfig* This, | 
|  | IPin* pOutputPin, | 
|  | IPin* pInputPin, | 
|  | const AM_MEDIA_TYPE* pmtFirstConnection, | 
|  | IBaseFilter* pUsingFilter, | 
|  | HANDLE hAbortEvent, | 
|  | DWORD dwFlags); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *Reconfigure)( | 
|  | IGraphConfig* This, | 
|  | IGraphConfigCallback* pCallback, | 
|  | PVOID pvContext, | 
|  | DWORD dwFlags, | 
|  | HANDLE hAbortEvent); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *AddFilterToCache)( | 
|  | IGraphConfig* This, | 
|  | IBaseFilter* pFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *EnumCacheFilter)( | 
|  | IGraphConfig* This, | 
|  | IEnumFilters** pEnum); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RemoveFilterFromCache)( | 
|  | IGraphConfig* This, | 
|  | IBaseFilter* pFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetStartTime)( | 
|  | IGraphConfig* This, | 
|  | REFERENCE_TIME* prtStart); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *PushThroughData)( | 
|  | IGraphConfig* This, | 
|  | IPin* pOutputPin, | 
|  | IPinConnection* pConnection, | 
|  | HANDLE hEventAbort); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *SetFilterFlags)( | 
|  | IGraphConfig* This, | 
|  | IBaseFilter* pFilter, | 
|  | DWORD dwFlags); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *GetFilterFlags)( | 
|  | IGraphConfig* This, | 
|  | IBaseFilter* pFilter, | 
|  | DWORD* pdwFlags); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RemoveFilterEx)( | 
|  | IGraphConfig* This, | 
|  | IBaseFilter* pFilter, | 
|  | DWORD Flags); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IGraphConfig_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IGraphConfig_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IGraphConfig_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IGraphConfig methods ***/ | 
|  | #define IGraphConfig_Reconnect(p,a,b,c,d,e,f) (p)->lpVtbl->Reconnect(p,a,b,c,d,e,f) | 
|  | #define IGraphConfig_Reconfigure(p,a,b,c,d) (p)->lpVtbl->Reconfigure(p,a,b,c,d) | 
|  | #define IGraphConfig_AddFilterToCache(p,a) (p)->lpVtbl->AddFilterToCache(p,a) | 
|  | #define IGraphConfig_EnumCacheFilter(p,a) (p)->lpVtbl->EnumCacheFilter(p,a) | 
|  | #define IGraphConfig_RemoveFilterFromCache(p,a) (p)->lpVtbl->RemoveFilterFromCache(p,a) | 
|  | #define IGraphConfig_GetStartTime(p,a) (p)->lpVtbl->GetStartTime(p,a) | 
|  | #define IGraphConfig_PushThroughData(p,a,b,c) (p)->lpVtbl->PushThroughData(p,a,b,c) | 
|  | #define IGraphConfig_SetFilterFlags(p,a,b) (p)->lpVtbl->SetFilterFlags(p,a,b) | 
|  | #define IGraphConfig_GetFilterFlags(p,a,b) (p)->lpVtbl->GetFilterFlags(p,a,b) | 
|  | #define IGraphConfig_RemoveFilterEx(p,a,b) (p)->lpVtbl->RemoveFilterEx(p,a,b) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IGraphConfig_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IGraphConfig methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* pOutputPin, IPin* pInputPin, const AM_MEDIA_TYPE* pmtFirstConnection, IBaseFilter* pUsingFilter, HANDLE hAbortEvent, DWORD dwFlags) PURE; \ | 
|  | STDMETHOD_(HRESULT,Reconfigure)(THIS_ IGraphConfigCallback* pCallback, PVOID pvContext, DWORD dwFlags, HANDLE hAbortEvent) PURE; \ | 
|  | STDMETHOD_(HRESULT,AddFilterToCache)(THIS_ IBaseFilter* pFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,EnumCacheFilter)(THIS_ IEnumFilters** pEnum) PURE; \ | 
|  | STDMETHOD_(HRESULT,RemoveFilterFromCache)(THIS_ IBaseFilter* pFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetStartTime)(THIS_ REFERENCE_TIME* prtStart) PURE; \ | 
|  | STDMETHOD_(HRESULT,PushThroughData)(THIS_ IPin* pOutputPin, IPinConnection* pConnection, HANDLE hEventAbort) PURE; \ | 
|  | STDMETHOD_(HRESULT,SetFilterFlags)(THIS_ IBaseFilter* pFilter, DWORD dwFlags) PURE; \ | 
|  | STDMETHOD_(HRESULT,GetFilterFlags)(THIS_ IBaseFilter* pFilter, DWORD* pdwFlags) PURE; \ | 
|  | STDMETHOD_(HRESULT,RemoveFilterEx)(THIS_ IBaseFilter* pFilter, DWORD Flags) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IGraphConfig_Reconnect_Proxy( | 
|  | IGraphConfig* This, | 
|  | IPin* pOutputPin, | 
|  | IPin* pInputPin, | 
|  | const AM_MEDIA_TYPE* pmtFirstConnection, | 
|  | IBaseFilter* pUsingFilter, | 
|  | HANDLE hAbortEvent, | 
|  | DWORD dwFlags); | 
|  | void __RPC_STUB IGraphConfig_Reconnect_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphConfig_Reconfigure_Proxy( | 
|  | IGraphConfig* This, | 
|  | IGraphConfigCallback* pCallback, | 
|  | PVOID pvContext, | 
|  | DWORD dwFlags, | 
|  | HANDLE hAbortEvent); | 
|  | void __RPC_STUB IGraphConfig_Reconfigure_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphConfig_AddFilterToCache_Proxy( | 
|  | IGraphConfig* This, | 
|  | IBaseFilter* pFilter); | 
|  | void __RPC_STUB IGraphConfig_AddFilterToCache_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphConfig_EnumCacheFilter_Proxy( | 
|  | IGraphConfig* This, | 
|  | IEnumFilters** pEnum); | 
|  | void __RPC_STUB IGraphConfig_EnumCacheFilter_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphConfig_RemoveFilterFromCache_Proxy( | 
|  | IGraphConfig* This, | 
|  | IBaseFilter* pFilter); | 
|  | void __RPC_STUB IGraphConfig_RemoveFilterFromCache_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphConfig_GetStartTime_Proxy( | 
|  | IGraphConfig* This, | 
|  | REFERENCE_TIME* prtStart); | 
|  | void __RPC_STUB IGraphConfig_GetStartTime_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphConfig_PushThroughData_Proxy( | 
|  | IGraphConfig* This, | 
|  | IPin* pOutputPin, | 
|  | IPinConnection* pConnection, | 
|  | HANDLE hEventAbort); | 
|  | void __RPC_STUB IGraphConfig_PushThroughData_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphConfig_SetFilterFlags_Proxy( | 
|  | IGraphConfig* This, | 
|  | IBaseFilter* pFilter, | 
|  | DWORD dwFlags); | 
|  | void __RPC_STUB IGraphConfig_SetFilterFlags_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphConfig_GetFilterFlags_Proxy( | 
|  | IGraphConfig* This, | 
|  | IBaseFilter* pFilter, | 
|  | DWORD* pdwFlags); | 
|  | void __RPC_STUB IGraphConfig_GetFilterFlags_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IGraphConfig_RemoveFilterEx_Proxy( | 
|  | IGraphConfig* This, | 
|  | IBaseFilter* pFilter, | 
|  | DWORD Flags); | 
|  | void __RPC_STUB IGraphConfig_RemoveFilterEx_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IGraphConfig_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IGraphConfigCallback interface | 
|  | */ | 
|  | #ifndef __IGraphConfigCallback_INTERFACE_DEFINED__ | 
|  | #define __IGraphConfigCallback_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IGraphConfigCallback, 0xade0fd60, 0xd19d, 0x11d2, 0xab,0xf6, 0x00,0xa0,0xc9,0x05,0xf3,0x75); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IGraphConfigCallback : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE Reconfigure( | 
|  | PVOID pvContext, | 
|  | DWORD dwFlags) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IGraphConfigCallbackVtbl IGraphConfigCallbackVtbl; | 
|  | struct IGraphConfigCallback { | 
|  | const IGraphConfigCallbackVtbl* lpVtbl; | 
|  | }; | 
|  | struct IGraphConfigCallbackVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IGraphConfigCallback* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IGraphConfigCallback* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IGraphConfigCallback* This); | 
|  |  | 
|  | /*** IGraphConfigCallback methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *Reconfigure)( | 
|  | IGraphConfigCallback* This, | 
|  | PVOID pvContext, | 
|  | DWORD dwFlags); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IGraphConfigCallback_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IGraphConfigCallback_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IGraphConfigCallback_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IGraphConfigCallback methods ***/ | 
|  | #define IGraphConfigCallback_Reconfigure(p,a,b) (p)->lpVtbl->Reconfigure(p,a,b) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IGraphConfigCallback_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IGraphConfigCallback methods ***/ \ | 
|  | STDMETHOD_(HRESULT,Reconfigure)(THIS_ PVOID pvContext, DWORD dwFlags) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IGraphConfigCallback_Reconfigure_Proxy( | 
|  | IGraphConfigCallback* This, | 
|  | PVOID pvContext, | 
|  | DWORD dwFlags); | 
|  | void __RPC_STUB IGraphConfigCallback_Reconfigure_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IGraphConfigCallback_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #ifndef __IFilterChain_FWD_DEFINED__ | 
|  | #define __IFilterChain_FWD_DEFINED__ | 
|  | typedef struct IFilterChain IFilterChain; | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IFilterChain interface | 
|  | */ | 
|  | #ifndef __IFilterChain_INTERFACE_DEFINED__ | 
|  | #define __IFilterChain_INTERFACE_DEFINED__ | 
|  |  | 
|  | DEFINE_GUID(IID_IFilterChain, 0xdcfbdcf6, 0x0dc2, 0x45f5, 0x9a,0xb2, 0x7c,0x33,0x0e,0xa0,0x9c,0x29); | 
|  | #if defined(__cplusplus) && !defined(CINTERFACE) | 
|  | struct IFilterChain : public IUnknown | 
|  | { | 
|  | virtual HRESULT STDMETHODCALLTYPE StartChain( | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE PauseChain( | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE StopChain( | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter) = 0; | 
|  |  | 
|  | virtual HRESULT STDMETHODCALLTYPE RemoveChain( | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter) = 0; | 
|  |  | 
|  | }; | 
|  | #else | 
|  | typedef struct IFilterChainVtbl IFilterChainVtbl; | 
|  | struct IFilterChain { | 
|  | const IFilterChainVtbl* lpVtbl; | 
|  | }; | 
|  | struct IFilterChainVtbl { | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
|  | IFilterChain* This, | 
|  | REFIID riid, | 
|  | void** ppvObject); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *AddRef)( | 
|  | IFilterChain* This); | 
|  |  | 
|  | ULONG (STDMETHODCALLTYPE *Release)( | 
|  | IFilterChain* This); | 
|  |  | 
|  | /*** IFilterChain methods ***/ | 
|  | HRESULT (STDMETHODCALLTYPE *StartChain)( | 
|  | IFilterChain* This, | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *PauseChain)( | 
|  | IFilterChain* This, | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *StopChain)( | 
|  | IFilterChain* This, | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter); | 
|  |  | 
|  | HRESULT (STDMETHODCALLTYPE *RemoveChain)( | 
|  | IFilterChain* This, | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*** IUnknown methods ***/ | 
|  | #define IFilterChain_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
|  | #define IFilterChain_AddRef(p) (p)->lpVtbl->AddRef(p) | 
|  | #define IFilterChain_Release(p) (p)->lpVtbl->Release(p) | 
|  | /*** IFilterChain methods ***/ | 
|  | #define IFilterChain_StartChain(p,a,b) (p)->lpVtbl->StartChain(p,a,b) | 
|  | #define IFilterChain_PauseChain(p,a,b) (p)->lpVtbl->PauseChain(p,a,b) | 
|  | #define IFilterChain_StopChain(p,a,b) (p)->lpVtbl->StopChain(p,a,b) | 
|  | #define IFilterChain_RemoveChain(p,a,b) (p)->lpVtbl->RemoveChain(p,a,b) | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #define IFilterChain_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_FIELDS \ | 
|  | /*** IUnknown methods ***/ \ | 
|  | STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
|  | STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
|  | STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
|  | /*** IFilterChain methods ***/ \ | 
|  | STDMETHOD_(HRESULT,StartChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,PauseChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,StopChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; \ | 
|  | STDMETHOD_(HRESULT,RemoveChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; | 
|  |  | 
|  | HRESULT CALLBACK IFilterChain_StartChain_Proxy( | 
|  | IFilterChain* This, | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter); | 
|  | void __RPC_STUB IFilterChain_StartChain_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterChain_PauseChain_Proxy( | 
|  | IFilterChain* This, | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter); | 
|  | void __RPC_STUB IFilterChain_PauseChain_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterChain_StopChain_Proxy( | 
|  | IFilterChain* This, | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter); | 
|  | void __RPC_STUB IFilterChain_StopChain_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  | HRESULT CALLBACK IFilterChain_RemoveChain_Proxy( | 
|  | IFilterChain* This, | 
|  | IBaseFilter* pStartFilter, | 
|  | IBaseFilter* pEndFilter); | 
|  | void __RPC_STUB IFilterChain_RemoveChain_Stub( | 
|  | struct IRpcStubBuffer* This, | 
|  | struct IRpcChannelBuffer* pRpcChannelBuffer, | 
|  | PRPC_MESSAGE pRpcMessage, | 
|  | DWORD* pdwStubPhase); | 
|  |  | 
|  | #endif  /* __IFilterChain_INTERFACE_DEFINED__ */ | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  | #endif /* __WIDL_STRMIF_H */ |