/*** Autogenerated by WIDL 1.3.20 from strmif.idl - Do not edit ***/

#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_STRMIF_H
#define __WIDL_STRMIF_H

/* Forward declarations */

#ifndef __ICreateDevEnum_FWD_DEFINED__
#define __ICreateDevEnum_FWD_DEFINED__
typedef interface ICreateDevEnum ICreateDevEnum;
#endif

#ifndef __IPin_FWD_DEFINED__
#define __IPin_FWD_DEFINED__
typedef interface IPin IPin;
#endif

#ifndef __IEnumPins_FWD_DEFINED__
#define __IEnumPins_FWD_DEFINED__
typedef interface IEnumPins IEnumPins;
#endif

#ifndef __IEnumMediaTypes_FWD_DEFINED__
#define __IEnumMediaTypes_FWD_DEFINED__
typedef interface IEnumMediaTypes IEnumMediaTypes;
#endif

#ifndef __IFilterGraph_FWD_DEFINED__
#define __IFilterGraph_FWD_DEFINED__
typedef interface IFilterGraph IFilterGraph;
#endif

#ifndef __IEnumFilters_FWD_DEFINED__
#define __IEnumFilters_FWD_DEFINED__
typedef interface IEnumFilters IEnumFilters;
#endif

#ifndef __IMediaFilter_FWD_DEFINED__
#define __IMediaFilter_FWD_DEFINED__
typedef interface IMediaFilter IMediaFilter;
#endif

#ifndef __IBaseFilter_FWD_DEFINED__
#define __IBaseFilter_FWD_DEFINED__
typedef interface IBaseFilter IBaseFilter;
#endif

#ifndef __IReferenceClock_FWD_DEFINED__
#define __IReferenceClock_FWD_DEFINED__
typedef interface IReferenceClock IReferenceClock;
#endif

#ifndef __IMediaSample_FWD_DEFINED__
#define __IMediaSample_FWD_DEFINED__
typedef interface IMediaSample IMediaSample;
#endif

#ifndef __IMediaSample2_FWD_DEFINED__
#define __IMediaSample2_FWD_DEFINED__
typedef interface IMediaSample2 IMediaSample2;
#endif

#ifndef __IMemAllocator_FWD_DEFINED__
#define __IMemAllocator_FWD_DEFINED__
typedef interface IMemAllocator IMemAllocator;
#endif

#ifndef __IMemAllocatorCallbackTemp_FWD_DEFINED__
#define __IMemAllocatorCallbackTemp_FWD_DEFINED__
typedef interface IMemAllocatorCallbackTemp IMemAllocatorCallbackTemp;
#endif

#ifndef __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__
#define __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__
typedef interface IMemAllocatorNotifyCallbackTemp IMemAllocatorNotifyCallbackTemp;
#endif

#ifndef __IMemInputPin_FWD_DEFINED__
#define __IMemInputPin_FWD_DEFINED__
typedef interface IMemInputPin IMemInputPin;
#endif

#ifndef __IAMovieSetup_FWD_DEFINED__
#define __IAMovieSetup_FWD_DEFINED__
typedef interface IAMovieSetup IAMovieSetup;
#endif

#ifndef __IMediaSeeking_FWD_DEFINED__
#define __IMediaSeeking_FWD_DEFINED__
typedef interface IMediaSeeking IMediaSeeking;
#endif

#ifndef __IEnumRegFilters_FWD_DEFINED__
#define __IEnumRegFilters_FWD_DEFINED__
typedef interface IEnumRegFilters IEnumRegFilters;
#endif

#ifndef __IFilterMapper_FWD_DEFINED__
#define __IFilterMapper_FWD_DEFINED__
typedef interface IFilterMapper IFilterMapper;
#endif

#ifndef __IFilterMapper2_FWD_DEFINED__
#define __IFilterMapper2_FWD_DEFINED__
typedef interface IFilterMapper2 IFilterMapper2;
#endif

#ifndef __IFilterMapper3_FWD_DEFINED__
#define __IFilterMapper3_FWD_DEFINED__
typedef interface IFilterMapper3 IFilterMapper3;
#endif

#ifndef __IQualityControl_FWD_DEFINED__
#define __IQualityControl_FWD_DEFINED__
typedef interface IQualityControl IQualityControl;
#endif

#ifndef __IOverlayNotify_FWD_DEFINED__
#define __IOverlayNotify_FWD_DEFINED__
typedef interface IOverlayNotify IOverlayNotify;
#endif

#ifndef __IOverlayNotify2_FWD_DEFINED__
#define __IOverlayNotify2_FWD_DEFINED__
typedef interface IOverlayNotify2 IOverlayNotify2;
#endif

#ifndef __IOverlay_FWD_DEFINED__
#define __IOverlay_FWD_DEFINED__
typedef interface IOverlay IOverlay;
#endif

#ifndef __IMediaEventSink_FWD_DEFINED__
#define __IMediaEventSink_FWD_DEFINED__
typedef interface IMediaEventSink IMediaEventSink;
#endif

#ifndef __IFileSourceFilter_FWD_DEFINED__
#define __IFileSourceFilter_FWD_DEFINED__
typedef interface IFileSourceFilter IFileSourceFilter;
#endif

#ifndef __IFileSinkFilter_FWD_DEFINED__
#define __IFileSinkFilter_FWD_DEFINED__
typedef interface IFileSinkFilter IFileSinkFilter;
#endif

#ifndef __IFileSinkFilter2_FWD_DEFINED__
#define __IFileSinkFilter2_FWD_DEFINED__
typedef interface IFileSinkFilter2 IFileSinkFilter2;
#endif

#ifndef __IGraphBuilder_FWD_DEFINED__
#define __IGraphBuilder_FWD_DEFINED__
typedef interface IGraphBuilder IGraphBuilder;
#endif

#ifndef __ICaptureGraphBuilder_FWD_DEFINED__
#define __ICaptureGraphBuilder_FWD_DEFINED__
typedef interface ICaptureGraphBuilder ICaptureGraphBuilder;
#endif

#ifndef __IAMCopyCaptureFileProgress_FWD_DEFINED__
#define __IAMCopyCaptureFileProgress_FWD_DEFINED__
typedef interface IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress;
#endif

#ifndef __ICaptureGraphBuilder2_FWD_DEFINED__
#define __ICaptureGraphBuilder2_FWD_DEFINED__
typedef interface ICaptureGraphBuilder2 ICaptureGraphBuilder2;
#endif

#ifndef __IFilterGraph2_FWD_DEFINED__
#define __IFilterGraph2_FWD_DEFINED__
typedef interface IFilterGraph2 IFilterGraph2;
#endif

#ifndef __IStreamBuilder_FWD_DEFINED__
#define __IStreamBuilder_FWD_DEFINED__
typedef interface IStreamBuilder IStreamBuilder;
#endif

#ifndef __IAMStreamConfig_FWD_DEFINED__
#define __IAMStreamConfig_FWD_DEFINED__
typedef interface IAMStreamConfig IAMStreamConfig;
#endif

#ifndef __IAMVideoProcAmp_FWD_DEFINED__
#define __IAMVideoProcAmp_FWD_DEFINED__
typedef interface IAMVideoProcAmp IAMVideoProcAmp;
#endif

#ifndef __IAsyncReader_FWD_DEFINED__
#define __IAsyncReader_FWD_DEFINED__
typedef interface IAsyncReader IAsyncReader;
#endif

#ifndef __IGraphVersion_FWD_DEFINED__
#define __IGraphVersion_FWD_DEFINED__
typedef interface IGraphVersion IGraphVersion;
#endif

#ifndef __IResourceConsumer_FWD_DEFINED__
#define __IResourceConsumer_FWD_DEFINED__
typedef interface IResourceConsumer IResourceConsumer;
#endif

#ifndef __IResourceManager_FWD_DEFINED__
#define __IResourceManager_FWD_DEFINED__
typedef interface IResourceManager IResourceManager;
#endif

#ifndef __IKsPropertySet_FWD_DEFINED__
#define __IKsPropertySet_FWD_DEFINED__
typedef interface IKsPropertySet IKsPropertySet;
#endif

#ifndef __ISeekingPassThru_FWD_DEFINED__
#define __ISeekingPassThru_FWD_DEFINED__
typedef interface ISeekingPassThru ISeekingPassThru;
#endif

#ifndef __IAMFilterMiscFlags_FWD_DEFINED__
#define __IAMFilterMiscFlags_FWD_DEFINED__
typedef interface IAMFilterMiscFlags IAMFilterMiscFlags;
#endif

#ifndef __IPinConnection_FWD_DEFINED__
#define __IPinConnection_FWD_DEFINED__
typedef interface IPinConnection IPinConnection;
#endif

#ifndef __IPinFlowControl_FWD_DEFINED__
#define __IPinFlowControl_FWD_DEFINED__
typedef interface IPinFlowControl IPinFlowControl;
#endif

#ifndef __IGraphConfig_FWD_DEFINED__
#define __IGraphConfig_FWD_DEFINED__
typedef interface IGraphConfig IGraphConfig;
#endif

#ifndef __IGraphConfigCallback_FWD_DEFINED__
#define __IGraphConfigCallback_FWD_DEFINED__
typedef interface IGraphConfigCallback IGraphConfigCallback;
#endif

#ifndef __IFilterChain_FWD_DEFINED__
#define __IFilterChain_FWD_DEFINED__
typedef interface IFilterChain IFilterChain;
#endif

#ifndef __IVMRImagePresenter_FWD_DEFINED__
#define __IVMRImagePresenter_FWD_DEFINED__
typedef interface IVMRImagePresenter IVMRImagePresenter;
#endif

#ifndef __IVMRSurfaceAllocator_FWD_DEFINED__
#define __IVMRSurfaceAllocator_FWD_DEFINED__
typedef interface IVMRSurfaceAllocator IVMRSurfaceAllocator;
#endif

#ifndef __IVMRSurfaceAllocatorNotify_FWD_DEFINED__
#define __IVMRSurfaceAllocatorNotify_FWD_DEFINED__
typedef interface IVMRSurfaceAllocatorNotify IVMRSurfaceAllocatorNotify;
#endif

#ifndef __IVMRWindowlessControl_FWD_DEFINED__
#define __IVMRWindowlessControl_FWD_DEFINED__
typedef interface IVMRWindowlessControl IVMRWindowlessControl;
#endif

#ifndef __IVMRMixerControl_FWD_DEFINED__
#define __IVMRMixerControl_FWD_DEFINED__
typedef interface IVMRMixerControl IVMRMixerControl;
#endif

#ifndef __IVMRMonitorConfig_FWD_DEFINED__
#define __IVMRMonitorConfig_FWD_DEFINED__
typedef interface IVMRMonitorConfig IVMRMonitorConfig;
#endif

#ifndef __IVMRFilterConfig_FWD_DEFINED__
#define __IVMRFilterConfig_FWD_DEFINED__
typedef interface IVMRFilterConfig IVMRFilterConfig;
#endif

#ifndef __IVMRAspectRatioControl_FWD_DEFINED__
#define __IVMRAspectRatioControl_FWD_DEFINED__
typedef interface IVMRAspectRatioControl IVMRAspectRatioControl;
#endif

#ifndef __IVMRDeinterlaceControl_FWD_DEFINED__
#define __IVMRDeinterlaceControl_FWD_DEFINED__
typedef interface IVMRDeinterlaceControl IVMRDeinterlaceControl;
#endif

#ifndef __IVMRMixerBitmap_FWD_DEFINED__
#define __IVMRMixerBitmap_FWD_DEFINED__
typedef interface IVMRMixerBitmap IVMRMixerBitmap;
#endif

#ifndef __IVMRImageCompositor_FWD_DEFINED__
#define __IVMRImageCompositor_FWD_DEFINED__
typedef interface IVMRImageCompositor IVMRImageCompositor;
#endif

#ifndef __IVMRVideoStreamControl_FWD_DEFINED__
#define __IVMRVideoStreamControl_FWD_DEFINED__
typedef interface IVMRVideoStreamControl IVMRVideoStreamControl;
#endif

#ifndef __IVMRImagePresenterConfig_FWD_DEFINED__
#define __IVMRImagePresenterConfig_FWD_DEFINED__
typedef interface IVMRImagePresenterConfig IVMRImagePresenterConfig;
#endif

#ifndef __IVMRImagePresenterExclModeConfig_FWD_DEFINED__
#define __IVMRImagePresenterExclModeConfig_FWD_DEFINED__
typedef interface IVMRImagePresenterExclModeConfig IVMRImagePresenterExclModeConfig;
#endif

#ifndef __IVPManager_FWD_DEFINED__
#define __IVPManager_FWD_DEFINED__
typedef interface IVPManager IVPManager;
#endif

/* Headers for imported files */

#include <objidl.h>
#include <oaidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#define CDEF_CLASS_DEFAULT 0x0001
#define CDEF_BYPASS_CLASS_MANAGER 0x0002
#define CDEF_CLASS_LEGACY  0x0004
#define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008
/*****************************************************************************
 * 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)
interface ICreateDevEnum : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateClassEnumerator(
        REFCLSID clsidDeviceClass,
        IEnumMoniker **ppEnumMoniker,
        DWORD dwFlags) = 0;

};
#else
typedef struct ICreateDevEnumVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} ICreateDevEnumVtbl;
interface ICreateDevEnum {
    CONST_VTBL ICreateDevEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ICreateDevEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICreateDevEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICreateDevEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICreateDevEnum methods ***/
#define ICreateDevEnum_CreateClassEnumerator(This,clsidDeviceClass,ppEnumMoniker,dwFlags) (This)->lpVtbl->CreateClassEnumerator(This,clsidDeviceClass,ppEnumMoniker,dwFlags)
#endif

#endif

HRESULT STDMETHODCALLTYPE ICreateDevEnum_CreateClassEnumerator_Proxy(
    ICreateDevEnum* This,
    REFCLSID clsidDeviceClass,
    IEnumMoniker **ppEnumMoniker,
    DWORD dwFlags);
void __RPC_STUB ICreateDevEnum_CreateClassEnumerator_Stub(
    IRpcStubBuffer* This,
    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 = 0,
    PINDIR_OUTPUT = 1
} PIN_DIRECTION;
#define MAX_PIN_NAME    128
#define MAX_FILTER_NAME 128
#ifndef REFERENCE_TIME_DEFINED
#define REFERENCE_TIME_DEFINED
typedef LONGLONG REFERENCE_TIME;
#endif
#ifndef REFTIME_DEFINED
#define REFTIME_DEFINED
typedef DOUBLE REFTIME;
#endif
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 interface IAMovieSetup IAMovieSetup;
#endif

#ifndef __IEnumFilters_FWD_DEFINED__
#define __IEnumFilters_FWD_DEFINED__
typedef interface IEnumFilters IEnumFilters;
#endif

#ifndef __IEnumMediaTypes_FWD_DEFINED__
#define __IEnumMediaTypes_FWD_DEFINED__
typedef interface IEnumMediaTypes IEnumMediaTypes;
#endif

#ifndef __IEnumPins_FWD_DEFINED__
#define __IEnumPins_FWD_DEFINED__
typedef interface IEnumPins IEnumPins;
#endif

#ifndef __IBaseFilter_FWD_DEFINED__
#define __IBaseFilter_FWD_DEFINED__
typedef interface IBaseFilter IBaseFilter;
#endif

#ifndef __IFilterGraph_FWD_DEFINED__
#define __IFilterGraph_FWD_DEFINED__
typedef interface IFilterGraph IFilterGraph;
#endif

#ifndef __IMediaFilter_FWD_DEFINED__
#define __IMediaFilter_FWD_DEFINED__
typedef interface IMediaFilter IMediaFilter;
#endif

#ifndef __IMediaSample_FWD_DEFINED__
#define __IMediaSample_FWD_DEFINED__
typedef interface IMediaSample IMediaSample;
#endif

#ifndef __IMemAllocator_FWD_DEFINED__
#define __IMemAllocator_FWD_DEFINED__
typedef interface IMemAllocator IMemAllocator;
#endif

#ifndef __IMemAllocatorCallbackTemp_FWD_DEFINED__
#define __IMemAllocatorCallbackTemp_FWD_DEFINED__
typedef interface IMemAllocatorCallbackTemp IMemAllocatorCallbackTemp;
#endif

#ifndef __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__
#define __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__
typedef interface IMemAllocatorNotifyCallbackTemp IMemAllocatorNotifyCallbackTemp;
#endif

#ifndef __IMemInputPin_FWD_DEFINED__
#define __IMemInputPin_FWD_DEFINED__
typedef interface IMemInputPin IMemInputPin;
#endif

#ifndef __IPin_FWD_DEFINED__
#define __IPin_FWD_DEFINED__
typedef interface IPin IPin;
#endif

#ifndef __IReferenceClock_FWD_DEFINED__
#define __IReferenceClock_FWD_DEFINED__
typedef interface IReferenceClock IReferenceClock;
#endif

/*****************************************************************************
 * IPin interface
 */
#ifndef __IPin_INTERFACE_DEFINED__
#define __IPin_INTERFACE_DEFINED__

typedef struct _PinInfo {
    IBaseFilter *pFilter;
    PIN_DIRECTION dir;
    WCHAR achName[128];
} PIN_INFO;
DEFINE_GUID(IID_IPin, 0x56a86891, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IPinVtbl;
interface IPin {
    CONST_VTBL IPinVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IPin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPin_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPin_Release(This) (This)->lpVtbl->Release(This)
/*** IPin methods ***/
#define IPin_Connect(This,pReceivePin,pmt) (This)->lpVtbl->Connect(This,pReceivePin,pmt)
#define IPin_ReceiveConnection(This,pConnector,pmt) (This)->lpVtbl->ReceiveConnection(This,pConnector,pmt)
#define IPin_Disconnect(This) (This)->lpVtbl->Disconnect(This)
#define IPin_ConnectedTo(This,pPin) (This)->lpVtbl->ConnectedTo(This,pPin)
#define IPin_ConnectionMediaType(This,pmt) (This)->lpVtbl->ConnectionMediaType(This,pmt)
#define IPin_QueryPinInfo(This,pInfo) (This)->lpVtbl->QueryPinInfo(This,pInfo)
#define IPin_QueryDirection(This,pPinDir) (This)->lpVtbl->QueryDirection(This,pPinDir)
#define IPin_QueryId(This,Id) (This)->lpVtbl->QueryId(This,Id)
#define IPin_QueryAccept(This,pmt) (This)->lpVtbl->QueryAccept(This,pmt)
#define IPin_EnumMediaTypes(This,ppEnum) (This)->lpVtbl->EnumMediaTypes(This,ppEnum)
#define IPin_QueryInternalConnections(This,apPin,nPin) (This)->lpVtbl->QueryInternalConnections(This,apPin,nPin)
#define IPin_EndOfStream(This) (This)->lpVtbl->EndOfStream(This)
#define IPin_BeginFlush(This) (This)->lpVtbl->BeginFlush(This)
#define IPin_EndFlush(This) (This)->lpVtbl->EndFlush(This)
#define IPin_NewSegment(This,tStart,tStop,dRate) (This)->lpVtbl->NewSegment(This,tStart,tStop,dRate)
#endif

#endif

HRESULT STDMETHODCALLTYPE IPin_Connect_Proxy(
    IPin* This,
    IPin *pReceivePin,
    const AM_MEDIA_TYPE *pmt);
void __RPC_STUB IPin_Connect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_ReceiveConnection_Proxy(
    IPin* This,
    IPin *pConnector,
    const AM_MEDIA_TYPE *pmt);
void __RPC_STUB IPin_ReceiveConnection_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_Disconnect_Proxy(
    IPin* This);
void __RPC_STUB IPin_Disconnect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_ConnectedTo_Proxy(
    IPin* This,
    IPin **pPin);
void __RPC_STUB IPin_ConnectedTo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_ConnectionMediaType_Proxy(
    IPin* This,
    AM_MEDIA_TYPE *pmt);
void __RPC_STUB IPin_ConnectionMediaType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_QueryPinInfo_Proxy(
    IPin* This,
    PIN_INFO *pInfo);
void __RPC_STUB IPin_QueryPinInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_QueryDirection_Proxy(
    IPin* This,
    PIN_DIRECTION *pPinDir);
void __RPC_STUB IPin_QueryDirection_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_QueryId_Proxy(
    IPin* This,
    LPWSTR *Id);
void __RPC_STUB IPin_QueryId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_QueryAccept_Proxy(
    IPin* This,
    const AM_MEDIA_TYPE *pmt);
void __RPC_STUB IPin_QueryAccept_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_EnumMediaTypes_Proxy(
    IPin* This,
    IEnumMediaTypes **ppEnum);
void __RPC_STUB IPin_EnumMediaTypes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_QueryInternalConnections_Proxy(
    IPin* This,
    IPin **apPin,
    ULONG *nPin);
void __RPC_STUB IPin_QueryInternalConnections_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_EndOfStream_Proxy(
    IPin* This);
void __RPC_STUB IPin_EndOfStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_BeginFlush_Proxy(
    IPin* This);
void __RPC_STUB IPin_BeginFlush_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_EndFlush_Proxy(
    IPin* This);
void __RPC_STUB IPin_EndFlush_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPin_NewSegment_Proxy(
    IPin* This,
    REFERENCE_TIME tStart,
    REFERENCE_TIME tStop,
    double dRate);
void __RPC_STUB IPin_NewSegment_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IEnumPinsVtbl;
interface IEnumPins {
    CONST_VTBL IEnumPinsVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumPins_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumPins_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumPins_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumPins methods ***/
#define IEnumPins_Next(This,cPins,ppPins,pcFetched) (This)->lpVtbl->Next(This,cPins,ppPins,pcFetched)
#define IEnumPins_Skip(This,cPins) (This)->lpVtbl->Skip(This,cPins)
#define IEnumPins_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumPins_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumPins_Next_Proxy(
    IEnumPins* This,
    ULONG cPins,
    IPin **ppPins,
    ULONG *pcFetched);
void __RPC_STUB IEnumPins_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumPins_Skip_Proxy(
    IEnumPins* This,
    ULONG cPins);
void __RPC_STUB IEnumPins_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumPins_Reset_Proxy(
    IEnumPins* This);
void __RPC_STUB IEnumPins_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumPins_Clone_Proxy(
    IEnumPins* This,
    IEnumPins **ppEnum);
void __RPC_STUB IEnumPins_Clone_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IEnumMediaTypesVtbl;
interface IEnumMediaTypes {
    CONST_VTBL IEnumMediaTypesVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumMediaTypes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumMediaTypes_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumMediaTypes_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumMediaTypes methods ***/
#define IEnumMediaTypes_Next(This,cMediaTypes,ppMediaTypes,pcFetched) (This)->lpVtbl->Next(This,cMediaTypes,ppMediaTypes,pcFetched)
#define IEnumMediaTypes_Skip(This,cMediaTypes) (This)->lpVtbl->Skip(This,cMediaTypes)
#define IEnumMediaTypes_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumMediaTypes_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Next_Proxy(
    IEnumMediaTypes* This,
    ULONG cMediaTypes,
    AM_MEDIA_TYPE **ppMediaTypes,
    ULONG *pcFetched);
void __RPC_STUB IEnumMediaTypes_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Skip_Proxy(
    IEnumMediaTypes* This,
    ULONG cMediaTypes);
void __RPC_STUB IEnumMediaTypes_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Reset_Proxy(
    IEnumMediaTypes* This);
void __RPC_STUB IEnumMediaTypes_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Clone_Proxy(
    IEnumMediaTypes* This,
    IEnumMediaTypes **ppEnum);
void __RPC_STUB IEnumMediaTypes_Clone_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IFilterGraphVtbl;
interface IFilterGraph {
    CONST_VTBL IFilterGraphVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFilterGraph_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFilterGraph_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFilterGraph_Release(This) (This)->lpVtbl->Release(This)
/*** IFilterGraph methods ***/
#define IFilterGraph_AddFilter(This,pFilter,pName) (This)->lpVtbl->AddFilter(This,pFilter,pName)
#define IFilterGraph_RemoveFilter(This,pFilter) (This)->lpVtbl->RemoveFilter(This,pFilter)
#define IFilterGraph_EnumFilters(This,ppEnum) (This)->lpVtbl->EnumFilters(This,ppEnum)
#define IFilterGraph_FindFilterByName(This,pName,ppFilter) (This)->lpVtbl->FindFilterByName(This,pName,ppFilter)
#define IFilterGraph_ConnectDirect(This,ppinOut,ppinIn,pmt) (This)->lpVtbl->ConnectDirect(This,ppinOut,ppinIn,pmt)
#define IFilterGraph_Reconnect(This,ppin) (This)->lpVtbl->Reconnect(This,ppin)
#define IFilterGraph_Disconnect(This,ppin) (This)->lpVtbl->Disconnect(This,ppin)
#define IFilterGraph_SetDefaultSyncSource(This) (This)->lpVtbl->SetDefaultSyncSource(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFilterGraph_AddFilter_Proxy(
    IFilterGraph* This,
    IBaseFilter *pFilter,
    LPCWSTR pName);
void __RPC_STUB IFilterGraph_AddFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterGraph_RemoveFilter_Proxy(
    IFilterGraph* This,
    IBaseFilter *pFilter);
void __RPC_STUB IFilterGraph_RemoveFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterGraph_EnumFilters_Proxy(
    IFilterGraph* This,
    IEnumFilters **ppEnum);
void __RPC_STUB IFilterGraph_EnumFilters_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterGraph_FindFilterByName_Proxy(
    IFilterGraph* This,
    LPCWSTR pName,
    IBaseFilter **ppFilter);
void __RPC_STUB IFilterGraph_FindFilterByName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterGraph_ConnectDirect_Proxy(
    IFilterGraph* This,
    IPin *ppinOut,
    IPin *ppinIn,
    const AM_MEDIA_TYPE *pmt);
void __RPC_STUB IFilterGraph_ConnectDirect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterGraph_Reconnect_Proxy(
    IFilterGraph* This,
    IPin *ppin);
void __RPC_STUB IFilterGraph_Reconnect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterGraph_Disconnect_Proxy(
    IFilterGraph* This,
    IPin *ppin);
void __RPC_STUB IFilterGraph_Disconnect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterGraph_SetDefaultSyncSource_Proxy(
    IFilterGraph* This);
void __RPC_STUB IFilterGraph_SetDefaultSyncSource_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IEnumFiltersVtbl;
interface IEnumFilters {
    CONST_VTBL IEnumFiltersVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumFilters_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumFilters_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumFilters_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumFilters methods ***/
#define IEnumFilters_Next(This,cFilters,ppFilter,pcFetched) (This)->lpVtbl->Next(This,cFilters,ppFilter,pcFetched)
#define IEnumFilters_Skip(This,cFilters) (This)->lpVtbl->Skip(This,cFilters)
#define IEnumFilters_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumFilters_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumFilters_Next_Proxy(
    IEnumFilters* This,
    ULONG cFilters,
    IBaseFilter **ppFilter,
    ULONG *pcFetched);
void __RPC_STUB IEnumFilters_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumFilters_Skip_Proxy(
    IEnumFilters* This,
    ULONG cFilters);
void __RPC_STUB IEnumFilters_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumFilters_Reset_Proxy(
    IEnumFilters* This);
void __RPC_STUB IEnumFilters_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumFilters_Clone_Proxy(
    IEnumFilters* This,
    IEnumFilters **ppEnum);
void __RPC_STUB IEnumFilters_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumFilters_INTERFACE_DEFINED__ */

typedef IEnumFilters *PENUMFILTERS;
/*****************************************************************************
 * IMediaFilter interface
 */
#ifndef __IMediaFilter_INTERFACE_DEFINED__
#define __IMediaFilter_INTERFACE_DEFINED__

typedef enum _FilterState {
    State_Stopped = 0,
    State_Paused = 1,
    State_Running = 2
} FILTER_STATE;
DEFINE_GUID(IID_IMediaFilter, 0x56a86899, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IMediaFilterVtbl;
interface IMediaFilter {
    CONST_VTBL IMediaFilterVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMediaFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaFilter_Release(This) (This)->lpVtbl->Release(This)
/*** IPersist methods ***/
#define IMediaFilter_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
/*** IMediaFilter methods ***/
#define IMediaFilter_Stop(This) (This)->lpVtbl->Stop(This)
#define IMediaFilter_Pause(This) (This)->lpVtbl->Pause(This)
#define IMediaFilter_Run(This,tStart) (This)->lpVtbl->Run(This,tStart)
#define IMediaFilter_GetState(This,dwMilliSecsTimeout,State) (This)->lpVtbl->GetState(This,dwMilliSecsTimeout,State)
#define IMediaFilter_SetSyncSource(This,pClock) (This)->lpVtbl->SetSyncSource(This,pClock)
#define IMediaFilter_GetSyncSource(This,pClock) (This)->lpVtbl->GetSyncSource(This,pClock)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMediaFilter_Stop_Proxy(
    IMediaFilter* This);
void __RPC_STUB IMediaFilter_Stop_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaFilter_Pause_Proxy(
    IMediaFilter* This);
void __RPC_STUB IMediaFilter_Pause_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaFilter_Run_Proxy(
    IMediaFilter* This,
    REFERENCE_TIME tStart);
void __RPC_STUB IMediaFilter_Run_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaFilter_GetState_Proxy(
    IMediaFilter* This,
    DWORD dwMilliSecsTimeout,
    FILTER_STATE *State);
void __RPC_STUB IMediaFilter_GetState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaFilter_SetSyncSource_Proxy(
    IMediaFilter* This,
    IReferenceClock *pClock);
void __RPC_STUB IMediaFilter_SetSyncSource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaFilter_GetSyncSource_Proxy(
    IMediaFilter* This,
    IReferenceClock **pClock);
void __RPC_STUB IMediaFilter_GetSyncSource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IMediaFilter_INTERFACE_DEFINED__ */

typedef IMediaFilter *PMEDIAFILTER;
/*****************************************************************************
 * IBaseFilter interface
 */
#ifndef __IBaseFilter_INTERFACE_DEFINED__
#define __IBaseFilter_INTERFACE_DEFINED__

typedef struct _FilterInfo {
    WCHAR achName[128];
    IFilterGraph *pGraph;
} FILTER_INFO;
DEFINE_GUID(IID_IBaseFilter, 0x56a86895, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IBaseFilterVtbl;
interface IBaseFilter {
    CONST_VTBL IBaseFilterVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IBaseFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBaseFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBaseFilter_Release(This) (This)->lpVtbl->Release(This)
/*** IPersist methods ***/
#define IBaseFilter_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
/*** IMediaFilter methods ***/
#define IBaseFilter_Stop(This) (This)->lpVtbl->Stop(This)
#define IBaseFilter_Pause(This) (This)->lpVtbl->Pause(This)
#define IBaseFilter_Run(This,tStart) (This)->lpVtbl->Run(This,tStart)
#define IBaseFilter_GetState(This,dwMilliSecsTimeout,State) (This)->lpVtbl->GetState(This,dwMilliSecsTimeout,State)
#define IBaseFilter_SetSyncSource(This,pClock) (This)->lpVtbl->SetSyncSource(This,pClock)
#define IBaseFilter_GetSyncSource(This,pClock) (This)->lpVtbl->GetSyncSource(This,pClock)
/*** IBaseFilter methods ***/
#define IBaseFilter_EnumPins(This,ppEnum) (This)->lpVtbl->EnumPins(This,ppEnum)
#define IBaseFilter_FindPin(This,Id,ppPin) (This)->lpVtbl->FindPin(This,Id,ppPin)
#define IBaseFilter_QueryFilterInfo(This,pInfo) (This)->lpVtbl->QueryFilterInfo(This,pInfo)
#define IBaseFilter_JoinFilterGraph(This,pGraph,pName) (This)->lpVtbl->JoinFilterGraph(This,pGraph,pName)
#define IBaseFilter_QueryVendorInfo(This,pVendorInfo) (This)->lpVtbl->QueryVendorInfo(This,pVendorInfo)
#endif

#endif

HRESULT STDMETHODCALLTYPE IBaseFilter_EnumPins_Proxy(
    IBaseFilter* This,
    IEnumPins **ppEnum);
void __RPC_STUB IBaseFilter_EnumPins_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBaseFilter_FindPin_Proxy(
    IBaseFilter* This,
    LPCWSTR Id,
    IPin **ppPin);
void __RPC_STUB IBaseFilter_FindPin_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBaseFilter_QueryFilterInfo_Proxy(
    IBaseFilter* This,
    FILTER_INFO *pInfo);
void __RPC_STUB IBaseFilter_QueryFilterInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBaseFilter_JoinFilterGraph_Proxy(
    IBaseFilter* This,
    IFilterGraph *pGraph,
    LPCWSTR pName);
void __RPC_STUB IBaseFilter_JoinFilterGraph_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBaseFilter_QueryVendorInfo_Proxy(
    IBaseFilter* This,
    LPWSTR *pVendorInfo);
void __RPC_STUB IBaseFilter_QueryVendorInfo_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IReferenceClockVtbl;
interface IReferenceClock {
    CONST_VTBL IReferenceClockVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IReferenceClock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IReferenceClock_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IReferenceClock_Release(This) (This)->lpVtbl->Release(This)
/*** IReferenceClock methods ***/
#define IReferenceClock_GetTime(This,pTime) (This)->lpVtbl->GetTime(This,pTime)
#define IReferenceClock_AdviseTime(This,baseTime,streamTime,hEvent,pdwAdviseCookie) (This)->lpVtbl->AdviseTime(This,baseTime,streamTime,hEvent,pdwAdviseCookie)
#define IReferenceClock_AdvisePeriodic(This,startTime,periodTime,hSemaphore,pdwAdviseCookie) (This)->lpVtbl->AdvisePeriodic(This,startTime,periodTime,hSemaphore,pdwAdviseCookie)
#define IReferenceClock_Unadvise(This,dwAdviseCookie) (This)->lpVtbl->Unadvise(This,dwAdviseCookie)
#endif

#endif

HRESULT STDMETHODCALLTYPE IReferenceClock_GetTime_Proxy(
    IReferenceClock* This,
    REFERENCE_TIME *pTime);
void __RPC_STUB IReferenceClock_GetTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IReferenceClock_AdviseTime_Proxy(
    IReferenceClock* This,
    REFERENCE_TIME baseTime,
    REFERENCE_TIME streamTime,
    HEVENT hEvent,
    DWORD_PTR *pdwAdviseCookie);
void __RPC_STUB IReferenceClock_AdviseTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IReferenceClock_AdvisePeriodic_Proxy(
    IReferenceClock* This,
    REFERENCE_TIME startTime,
    REFERENCE_TIME periodTime,
    HSEMAPHORE hSemaphore,
    DWORD_PTR *pdwAdviseCookie);
void __RPC_STUB IReferenceClock_AdvisePeriodic_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IReferenceClock_Unadvise_Proxy(
    IReferenceClock* This,
    DWORD_PTR dwAdviseCookie);
void __RPC_STUB IReferenceClock_Unadvise_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IMediaSampleVtbl;
interface IMediaSample {
    CONST_VTBL IMediaSampleVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMediaSample_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaSample_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaSample_Release(This) (This)->lpVtbl->Release(This)
/*** IMediaSample methods ***/
#define IMediaSample_GetPointer(This,ppBuffer) (This)->lpVtbl->GetPointer(This,ppBuffer)
#define IMediaSample_GetSize(This) (This)->lpVtbl->GetSize(This)
#define IMediaSample_GetTime(This,pTimeStart,pTimeEnd) (This)->lpVtbl->GetTime(This,pTimeStart,pTimeEnd)
#define IMediaSample_SetTime(This,pTimeStart,pTimeEnd) (This)->lpVtbl->SetTime(This,pTimeStart,pTimeEnd)
#define IMediaSample_IsSyncPoint(This) (This)->lpVtbl->IsSyncPoint(This)
#define IMediaSample_SetSyncPoint(This,bIsSyncPoint) (This)->lpVtbl->SetSyncPoint(This,bIsSyncPoint)
#define IMediaSample_IsPreroll(This) (This)->lpVtbl->IsPreroll(This)
#define IMediaSample_SetPreroll(This,bIsPreroll) (This)->lpVtbl->SetPreroll(This,bIsPreroll)
#define IMediaSample_GetActualDataLength(This) (This)->lpVtbl->GetActualDataLength(This)
#define IMediaSample_SetActualDataLength(This,length) (This)->lpVtbl->SetActualDataLength(This,length)
#define IMediaSample_GetMediaType(This,ppMediaType) (This)->lpVtbl->GetMediaType(This,ppMediaType)
#define IMediaSample_SetMediaType(This,pMediaType) (This)->lpVtbl->SetMediaType(This,pMediaType)
#define IMediaSample_IsDiscontinuity(This) (This)->lpVtbl->IsDiscontinuity(This)
#define IMediaSample_SetDiscontinuity(This,bDiscontinuity) (This)->lpVtbl->SetDiscontinuity(This,bDiscontinuity)
#define IMediaSample_GetMediaTime(This,pTimeStart,pTimeEnd) (This)->lpVtbl->GetMediaTime(This,pTimeStart,pTimeEnd)
#define IMediaSample_SetMediaTime(This,pTimeStart,pTimeEnd) (This)->lpVtbl->SetMediaTime(This,pTimeStart,pTimeEnd)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMediaSample_GetPointer_Proxy(
    IMediaSample* This,
    BYTE **ppBuffer);
void __RPC_STUB IMediaSample_GetPointer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
LONG STDMETHODCALLTYPE IMediaSample_GetSize_Proxy(
    IMediaSample* This);
void __RPC_STUB IMediaSample_GetSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_GetTime_Proxy(
    IMediaSample* This,
    REFERENCE_TIME *pTimeStart,
    REFERENCE_TIME *pTimeEnd);
void __RPC_STUB IMediaSample_GetTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_SetTime_Proxy(
    IMediaSample* This,
    REFERENCE_TIME *pTimeStart,
    REFERENCE_TIME *pTimeEnd);
void __RPC_STUB IMediaSample_SetTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_IsSyncPoint_Proxy(
    IMediaSample* This);
void __RPC_STUB IMediaSample_IsSyncPoint_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_SetSyncPoint_Proxy(
    IMediaSample* This,
    BOOL bIsSyncPoint);
void __RPC_STUB IMediaSample_SetSyncPoint_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_IsPreroll_Proxy(
    IMediaSample* This);
void __RPC_STUB IMediaSample_IsPreroll_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_SetPreroll_Proxy(
    IMediaSample* This,
    BOOL bIsPreroll);
void __RPC_STUB IMediaSample_SetPreroll_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
LONG STDMETHODCALLTYPE IMediaSample_GetActualDataLength_Proxy(
    IMediaSample* This);
void __RPC_STUB IMediaSample_GetActualDataLength_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_SetActualDataLength_Proxy(
    IMediaSample* This,
    LONG length);
void __RPC_STUB IMediaSample_SetActualDataLength_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_GetMediaType_Proxy(
    IMediaSample* This,
    AM_MEDIA_TYPE **ppMediaType);
void __RPC_STUB IMediaSample_GetMediaType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_SetMediaType_Proxy(
    IMediaSample* This,
    AM_MEDIA_TYPE *pMediaType);
void __RPC_STUB IMediaSample_SetMediaType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_IsDiscontinuity_Proxy(
    IMediaSample* This);
void __RPC_STUB IMediaSample_IsDiscontinuity_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_SetDiscontinuity_Proxy(
    IMediaSample* This,
    BOOL bDiscontinuity);
void __RPC_STUB IMediaSample_SetDiscontinuity_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_GetMediaTime_Proxy(
    IMediaSample* This,
    LONGLONG *pTimeStart,
    LONGLONG *pTimeEnd);
void __RPC_STUB IMediaSample_GetMediaTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample_SetMediaTime_Proxy(
    IMediaSample* This,
    LONGLONG *pTimeStart,
    LONGLONG *pTimeEnd);
void __RPC_STUB IMediaSample_SetMediaTime_Stub(
    IRpcStubBuffer* This,
    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;
/*****************************************************************************
 * 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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IMediaSample2Vtbl;
interface IMediaSample2 {
    CONST_VTBL IMediaSample2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMediaSample2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaSample2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaSample2_Release(This) (This)->lpVtbl->Release(This)
/*** IMediaSample methods ***/
#define IMediaSample2_GetPointer(This,ppBuffer) (This)->lpVtbl->GetPointer(This,ppBuffer)
#define IMediaSample2_GetSize(This) (This)->lpVtbl->GetSize(This)
#define IMediaSample2_GetTime(This,pTimeStart,pTimeEnd) (This)->lpVtbl->GetTime(This,pTimeStart,pTimeEnd)
#define IMediaSample2_SetTime(This,pTimeStart,pTimeEnd) (This)->lpVtbl->SetTime(This,pTimeStart,pTimeEnd)
#define IMediaSample2_IsSyncPoint(This) (This)->lpVtbl->IsSyncPoint(This)
#define IMediaSample2_SetSyncPoint(This,bIsSyncPoint) (This)->lpVtbl->SetSyncPoint(This,bIsSyncPoint)
#define IMediaSample2_IsPreroll(This) (This)->lpVtbl->IsPreroll(This)
#define IMediaSample2_SetPreroll(This,bIsPreroll) (This)->lpVtbl->SetPreroll(This,bIsPreroll)
#define IMediaSample2_GetActualDataLength(This) (This)->lpVtbl->GetActualDataLength(This)
#define IMediaSample2_SetActualDataLength(This,length) (This)->lpVtbl->SetActualDataLength(This,length)
#define IMediaSample2_GetMediaType(This,ppMediaType) (This)->lpVtbl->GetMediaType(This,ppMediaType)
#define IMediaSample2_SetMediaType(This,pMediaType) (This)->lpVtbl->SetMediaType(This,pMediaType)
#define IMediaSample2_IsDiscontinuity(This) (This)->lpVtbl->IsDiscontinuity(This)
#define IMediaSample2_SetDiscontinuity(This,bDiscontinuity) (This)->lpVtbl->SetDiscontinuity(This,bDiscontinuity)
#define IMediaSample2_GetMediaTime(This,pTimeStart,pTimeEnd) (This)->lpVtbl->GetMediaTime(This,pTimeStart,pTimeEnd)
#define IMediaSample2_SetMediaTime(This,pTimeStart,pTimeEnd) (This)->lpVtbl->SetMediaTime(This,pTimeStart,pTimeEnd)
/*** IMediaSample2 methods ***/
#define IMediaSample2_GetProperties(This,cbProperties,pbProperties) (This)->lpVtbl->GetProperties(This,cbProperties,pbProperties)
#define IMediaSample2_SetProperties(This,cbProperties,pbProperties) (This)->lpVtbl->SetProperties(This,cbProperties,pbProperties)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMediaSample2_GetProperties_Proxy(
    IMediaSample2* This,
    DWORD cbProperties,
    BYTE *pbProperties);
void __RPC_STUB IMediaSample2_GetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSample2_SetProperties_Proxy(
    IMediaSample2* This,
    DWORD cbProperties,
    const BYTE *pbProperties);
void __RPC_STUB IMediaSample2_SetProperties_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IMemAllocatorVtbl;
interface IMemAllocator {
    CONST_VTBL IMemAllocatorVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMemAllocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMemAllocator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMemAllocator_Release(This) (This)->lpVtbl->Release(This)
/*** IMemAllocator methods ***/
#define IMemAllocator_SetProperties(This,pRequest,pActual) (This)->lpVtbl->SetProperties(This,pRequest,pActual)
#define IMemAllocator_GetProperties(This,pProps) (This)->lpVtbl->GetProperties(This,pProps)
#define IMemAllocator_Commit(This) (This)->lpVtbl->Commit(This)
#define IMemAllocator_Decommit(This) (This)->lpVtbl->Decommit(This)
#define IMemAllocator_GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags) (This)->lpVtbl->GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags)
#define IMemAllocator_ReleaseBuffer(This,pBuffer) (This)->lpVtbl->ReleaseBuffer(This,pBuffer)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMemAllocator_SetProperties_Proxy(
    IMemAllocator* This,
    ALLOCATOR_PROPERTIES *pRequest,
    ALLOCATOR_PROPERTIES *pActual);
void __RPC_STUB IMemAllocator_SetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemAllocator_GetProperties_Proxy(
    IMemAllocator* This,
    ALLOCATOR_PROPERTIES *pProps);
void __RPC_STUB IMemAllocator_GetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemAllocator_Commit_Proxy(
    IMemAllocator* This);
void __RPC_STUB IMemAllocator_Commit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemAllocator_Decommit_Proxy(
    IMemAllocator* This);
void __RPC_STUB IMemAllocator_Decommit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemAllocator_GetBuffer_Proxy(
    IMemAllocator* This,
    IMediaSample **ppBuffer,
    REFERENCE_TIME *pStartTime,
    REFERENCE_TIME *pEndTime,
    DWORD dwFlags);
void __RPC_STUB IMemAllocator_GetBuffer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemAllocator_ReleaseBuffer_Proxy(
    IMemAllocator* This,
    IMediaSample *pBuffer);
void __RPC_STUB IMemAllocator_ReleaseBuffer_Stub(
    IRpcStubBuffer* This,
    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)
interface IMemAllocatorCallbackTemp : public IMemAllocator
{
    virtual HRESULT STDMETHODCALLTYPE SetNotify(
        IMemAllocatorNotifyCallbackTemp *pNotify) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFreeCount(
        LONG *plBuffersFree) = 0;

};
#else
typedef struct IMemAllocatorCallbackTempVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IMemAllocatorCallbackTempVtbl;
interface IMemAllocatorCallbackTemp {
    CONST_VTBL IMemAllocatorCallbackTempVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMemAllocatorCallbackTemp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMemAllocatorCallbackTemp_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMemAllocatorCallbackTemp_Release(This) (This)->lpVtbl->Release(This)
/*** IMemAllocator methods ***/
#define IMemAllocatorCallbackTemp_SetProperties(This,pRequest,pActual) (This)->lpVtbl->SetProperties(This,pRequest,pActual)
#define IMemAllocatorCallbackTemp_GetProperties(This,pProps) (This)->lpVtbl->GetProperties(This,pProps)
#define IMemAllocatorCallbackTemp_Commit(This) (This)->lpVtbl->Commit(This)
#define IMemAllocatorCallbackTemp_Decommit(This) (This)->lpVtbl->Decommit(This)
#define IMemAllocatorCallbackTemp_GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags) (This)->lpVtbl->GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags)
#define IMemAllocatorCallbackTemp_ReleaseBuffer(This,pBuffer) (This)->lpVtbl->ReleaseBuffer(This,pBuffer)
/*** IMemAllocatorCallbackTemp methods ***/
#define IMemAllocatorCallbackTemp_SetNotify(This,pNotify) (This)->lpVtbl->SetNotify(This,pNotify)
#define IMemAllocatorCallbackTemp_GetFreeCount(This,plBuffersFree) (This)->lpVtbl->GetFreeCount(This,plBuffersFree)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMemAllocatorCallbackTemp_SetNotify_Proxy(
    IMemAllocatorCallbackTemp* This,
    IMemAllocatorNotifyCallbackTemp *pNotify);
void __RPC_STUB IMemAllocatorCallbackTemp_SetNotify_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemAllocatorCallbackTemp_GetFreeCount_Proxy(
    IMemAllocatorCallbackTemp* This,
    LONG *plBuffersFree);
void __RPC_STUB IMemAllocatorCallbackTemp_GetFreeCount_Stub(
    IRpcStubBuffer* This,
    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)
interface IMemAllocatorNotifyCallbackTemp : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE NotifyRelease(
        ) = 0;

};
#else
typedef struct IMemAllocatorNotifyCallbackTempVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IMemAllocatorNotifyCallbackTempVtbl;
interface IMemAllocatorNotifyCallbackTemp {
    CONST_VTBL IMemAllocatorNotifyCallbackTempVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMemAllocatorNotifyCallbackTemp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMemAllocatorNotifyCallbackTemp_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMemAllocatorNotifyCallbackTemp_Release(This) (This)->lpVtbl->Release(This)
/*** IMemAllocatorNotifyCallbackTemp methods ***/
#define IMemAllocatorNotifyCallbackTemp_NotifyRelease(This) (This)->lpVtbl->NotifyRelease(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMemAllocatorNotifyCallbackTemp_NotifyRelease_Proxy(
    IMemAllocatorNotifyCallbackTemp* This);
void __RPC_STUB IMemAllocatorNotifyCallbackTemp_NotifyRelease_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IMemInputPinVtbl;
interface IMemInputPin {
    CONST_VTBL IMemInputPinVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMemInputPin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMemInputPin_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMemInputPin_Release(This) (This)->lpVtbl->Release(This)
/*** IMemInputPin methods ***/
#define IMemInputPin_GetAllocator(This,ppAllocator) (This)->lpVtbl->GetAllocator(This,ppAllocator)
#define IMemInputPin_NotifyAllocator(This,pAllocator,bReadOnly) (This)->lpVtbl->NotifyAllocator(This,pAllocator,bReadOnly)
#define IMemInputPin_GetAllocatorRequirements(This,pProps) (This)->lpVtbl->GetAllocatorRequirements(This,pProps)
#define IMemInputPin_Receive(This,pSample) (This)->lpVtbl->Receive(This,pSample)
#define IMemInputPin_ReceiveMultiple(This,pSamples,nSamples,nSamplesProcessed) (This)->lpVtbl->ReceiveMultiple(This,pSamples,nSamples,nSamplesProcessed)
#define IMemInputPin_ReceiveCanBlock(This) (This)->lpVtbl->ReceiveCanBlock(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMemInputPin_GetAllocator_Proxy(
    IMemInputPin* This,
    IMemAllocator **ppAllocator);
void __RPC_STUB IMemInputPin_GetAllocator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemInputPin_NotifyAllocator_Proxy(
    IMemInputPin* This,
    IMemAllocator *pAllocator,
    BOOL bReadOnly);
void __RPC_STUB IMemInputPin_NotifyAllocator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemInputPin_GetAllocatorRequirements_Proxy(
    IMemInputPin* This,
    ALLOCATOR_PROPERTIES *pProps);
void __RPC_STUB IMemInputPin_GetAllocatorRequirements_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemInputPin_Receive_Proxy(
    IMemInputPin* This,
    IMediaSample *pSample);
void __RPC_STUB IMemInputPin_Receive_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemInputPin_ReceiveMultiple_Proxy(
    IMemInputPin* This,
    IMediaSample **pSamples,
    LONG nSamples,
    LONG *nSamplesProcessed);
void __RPC_STUB IMemInputPin_ReceiveMultiple_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemInputPin_ReceiveCanBlock_Proxy(
    IMemInputPin* This);
void __RPC_STUB IMemInputPin_ReceiveCanBlock_Stub(
    IRpcStubBuffer* This,
    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)
interface IAMovieSetup : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Register(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unregister(
        ) = 0;

};
#else
typedef struct IAMovieSetupVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IAMovieSetupVtbl;
interface IAMovieSetup {
    CONST_VTBL IAMovieSetupVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IAMovieSetup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAMovieSetup_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAMovieSetup_Release(This) (This)->lpVtbl->Release(This)
/*** IAMovieSetup methods ***/
#define IAMovieSetup_Register(This) (This)->lpVtbl->Register(This)
#define IAMovieSetup_Unregister(This) (This)->lpVtbl->Unregister(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IAMovieSetup_Register_Proxy(
    IAMovieSetup* This);
void __RPC_STUB IAMovieSetup_Register_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAMovieSetup_Unregister_Proxy(
    IAMovieSetup* This);
void __RPC_STUB IAMovieSetup_Unregister_Stub(
    IRpcStubBuffer* This,
    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;
/*****************************************************************************
 * 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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IMediaSeekingVtbl;
interface IMediaSeeking {
    CONST_VTBL IMediaSeekingVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMediaSeeking_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaSeeking_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaSeeking_Release(This) (This)->lpVtbl->Release(This)
/*** IMediaSeeking methods ***/
#define IMediaSeeking_GetCapabilities(This,pCapabilities) (This)->lpVtbl->GetCapabilities(This,pCapabilities)
#define IMediaSeeking_CheckCapabilities(This,pCapabilities) (This)->lpVtbl->CheckCapabilities(This,pCapabilities)
#define IMediaSeeking_IsFormatSupported(This,pFormat) (This)->lpVtbl->IsFormatSupported(This,pFormat)
#define IMediaSeeking_QueryPreferredFormat(This,pFormat) (This)->lpVtbl->QueryPreferredFormat(This,pFormat)
#define IMediaSeeking_GetTimeFormat(This,pFormat) (This)->lpVtbl->GetTimeFormat(This,pFormat)
#define IMediaSeeking_IsUsingTimeFormat(This,pFormat) (This)->lpVtbl->IsUsingTimeFormat(This,pFormat)
#define IMediaSeeking_SetTimeFormat(This,pFormat) (This)->lpVtbl->SetTimeFormat(This,pFormat)
#define IMediaSeeking_GetDuration(This,pDuration) (This)->lpVtbl->GetDuration(This,pDuration)
#define IMediaSeeking_GetStopPosition(This,pStop) (This)->lpVtbl->GetStopPosition(This,pStop)
#define IMediaSeeking_GetCurrentPosition(This,pCurrent) (This)->lpVtbl->GetCurrentPosition(This,pCurrent)
#define IMediaSeeking_ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) (This)->lpVtbl->ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat)
#define IMediaSeeking_SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) (This)->lpVtbl->SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags)
#define IMediaSeeking_GetPositions(This,pCurrent,pStop) (This)->lpVtbl->GetPositions(This,pCurrent,pStop)
#define IMediaSeeking_GetAvailable(This,pEarliest,pLatest) (This)->lpVtbl->GetAvailable(This,pEarliest,pLatest)
#define IMediaSeeking_SetRate(This,dRate) (This)->lpVtbl->SetRate(This,dRate)
#define IMediaSeeking_GetRate(This,pdRate) (This)->lpVtbl->GetRate(This,pdRate)
#define IMediaSeeking_GetPreroll(This,pllPreroll) (This)->lpVtbl->GetPreroll(This,pllPreroll)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMediaSeeking_GetCapabilities_Proxy(
    IMediaSeeking* This,
    DWORD *pCapabilities);
void __RPC_STUB IMediaSeeking_GetCapabilities_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_CheckCapabilities_Proxy(
    IMediaSeeking* This,
    DWORD *pCapabilities);
void __RPC_STUB IMediaSeeking_CheckCapabilities_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_IsFormatSupported_Proxy(
    IMediaSeeking* This,
    const GUID *pFormat);
void __RPC_STUB IMediaSeeking_IsFormatSupported_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_QueryPreferredFormat_Proxy(
    IMediaSeeking* This,
    GUID *pFormat);
void __RPC_STUB IMediaSeeking_QueryPreferredFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_GetTimeFormat_Proxy(
    IMediaSeeking* This,
    GUID *pFormat);
void __RPC_STUB IMediaSeeking_GetTimeFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_IsUsingTimeFormat_Proxy(
    IMediaSeeking* This,
    const GUID *pFormat);
void __RPC_STUB IMediaSeeking_IsUsingTimeFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_SetTimeFormat_Proxy(
    IMediaSeeking* This,
    const GUID *pFormat);
void __RPC_STUB IMediaSeeking_SetTimeFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_GetDuration_Proxy(
    IMediaSeeking* This,
    LONGLONG *pDuration);
void __RPC_STUB IMediaSeeking_GetDuration_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_GetStopPosition_Proxy(
    IMediaSeeking* This,
    LONGLONG *pStop);
void __RPC_STUB IMediaSeeking_GetStopPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_GetCurrentPosition_Proxy(
    IMediaSeeking* This,
    LONGLONG *pCurrent);
void __RPC_STUB IMediaSeeking_GetCurrentPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_ConvertTimeFormat_Proxy(
    IMediaSeeking* This,
    LONGLONG *pTarget,
    const GUID *pTargetFormat,
    LONGLONG Source,
    const GUID *pSourceFormat);
void __RPC_STUB IMediaSeeking_ConvertTimeFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_SetPositions_Proxy(
    IMediaSeeking* This,
    LONGLONG *pCurrent,
    DWORD dwCurrentFlags,
    LONGLONG *pStop,
    DWORD dwStopFlags);
void __RPC_STUB IMediaSeeking_SetPositions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_GetPositions_Proxy(
    IMediaSeeking* This,
    LONGLONG *pCurrent,
    LONGLONG *pStop);
void __RPC_STUB IMediaSeeking_GetPositions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_GetAvailable_Proxy(
    IMediaSeeking* This,
    LONGLONG *pEarliest,
    LONGLONG *pLatest);
void __RPC_STUB IMediaSeeking_GetAvailable_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_SetRate_Proxy(
    IMediaSeeking* This,
    double dRate);
void __RPC_STUB IMediaSeeking_SetRate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_GetRate_Proxy(
    IMediaSeeking* This,
    double *pdRate);
void __RPC_STUB IMediaSeeking_GetRate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaSeeking_GetPreroll_Proxy(
    IMediaSeeking* This,
    LONGLONG *pllPreroll);
void __RPC_STUB IMediaSeeking_GetPreroll_Stub(
    IRpcStubBuffer* This,
    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 interface IAMAnalogVideoDecoder IAMAnalogVideoDecoder;
#endif

#ifndef __IAMAnalogVideoEncoder_FWD_DEFINED__
#define __IAMAnalogVideoEncoder_FWD_DEFINED__
typedef interface IAMAnalogVideoEncoder IAMAnalogVideoEncoder;
#endif

#ifndef __IAMAudioInputMixer_FWD_DEFINED__
#define __IAMAudioInputMixer_FWD_DEFINED__
typedef interface IAMAudioInputMixer IAMAudioInputMixer;
#endif

#ifndef __IAMAudioRendererStats_FWD_DEFINED__
#define __IAMAudioRendererStats_FWD_DEFINED__
typedef interface IAMAudioRendererStats IAMAudioRendererStats;
#endif

#ifndef __IAMBufferNegotiation_FWD_DEFINED__
#define __IAMBufferNegotiation_FWD_DEFINED__
typedef interface IAMBufferNegotiation IAMBufferNegotiation;
#endif

#ifndef __IAMCameraControl_FWD_DEFINED__
#define __IAMCameraControl_FWD_DEFINED__
typedef interface IAMCameraControl IAMCameraControl;
#endif

#ifndef __IAMCopyCaptureFileProgress_FWD_DEFINED__
#define __IAMCopyCaptureFileProgress_FWD_DEFINED__
typedef interface IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress;
#endif

#ifndef __IAMCrossbar_FWD_DEFINED__
#define __IAMCrossbar_FWD_DEFINED__
typedef interface IAMCrossbar IAMCrossbar;
#endif

#ifndef __IAMDevMemoryAllocator_FWD_DEFINED__
#define __IAMDevMemoryAllocator_FWD_DEFINED__
typedef interface IAMDevMemoryAllocator IAMDevMemoryAllocator;
#endif

#ifndef __IAMDevMemoryControl_FWD_DEFINED__
#define __IAMDevMemoryControl_FWD_DEFINED__
typedef interface IAMDevMemoryControl IAMDevMemoryControl;
#endif

#ifndef __IAMDroppedFrames_FWD_DEFINED__
#define __IAMDroppedFrames_FWD_DEFINED__
typedef interface IAMDroppedFrames IAMDroppedFrames;
#endif

#ifndef __IAMExtDevice_FWD_DEFINED__
#define __IAMExtDevice_FWD_DEFINED__
typedef interface IAMExtDevice IAMExtDevice;
#endif

#ifndef __IAMExtTransport_FWD_DEFINED__
#define __IAMExtTransport_FWD_DEFINED__
typedef interface IAMExtTransport IAMExtTransport;
#endif

#ifndef __IAMGraphStreams_FWD_DEFINED__
#define __IAMGraphStreams_FWD_DEFINED__
typedef interface IAMGraphStreams IAMGraphStreams;
#endif

#ifndef __IAMLatency_FWD_DEFINED__
#define __IAMLatency_FWD_DEFINED__
typedef interface IAMLatency IAMLatency;
#endif

#ifndef __IAMOpenProgress_FWD_DEFINED__
#define __IAMOpenProgress_FWD_DEFINED__
typedef interface IAMOpenProgress IAMOpenProgress;
#endif

#ifndef __IAMOverlayFX_FWD_DEFINED__
#define __IAMOverlayFX_FWD_DEFINED__
typedef interface IAMOverlayFX IAMOverlayFX;
#endif

#ifndef __IAMPhysicalPinInfo_FWD_DEFINED__
#define __IAMPhysicalPinInfo_FWD_DEFINED__
typedef interface IAMPhysicalPinInfo IAMPhysicalPinInfo;
#endif

#ifndef __IAMPushSource_FWD_DEFINED__
#define __IAMPushSource_FWD_DEFINED__
typedef interface IAMPushSource IAMPushSource;
#endif

#ifndef __IAMStreamConfig_FWD_DEFINED__
#define __IAMStreamConfig_FWD_DEFINED__
typedef interface IAMStreamConfig IAMStreamConfig;
#endif

#ifndef __IAMTimecodeDisplay_FWD_DEFINED__
#define __IAMTimecodeDisplay_FWD_DEFINED__
typedef interface IAMTimecodeDisplay IAMTimecodeDisplay;
#endif

#ifndef __IAMTimecodeGenerator_FWD_DEFINED__
#define __IAMTimecodeGenerator_FWD_DEFINED__
typedef interface IAMTimecodeGenerator IAMTimecodeGenerator;
#endif

#ifndef __IAMTimecodeReader_FWD_DEFINED__
#define __IAMTimecodeReader_FWD_DEFINED__
typedef interface IAMTimecodeReader IAMTimecodeReader;
#endif

#ifndef __IAMTVTuner_FWD_DEFINED__
#define __IAMTVTuner_FWD_DEFINED__
typedef interface IAMTVTuner IAMTVTuner;
#endif

#ifndef __IAMVfwCaptureDialogs_FWD_DEFINED__
#define __IAMVfwCaptureDialogs_FWD_DEFINED__
typedef interface IAMVfwCaptureDialogs IAMVfwCaptureDialogs;
#endif

#ifndef __IAMVfwCompressDialogs_FWD_DEFINED__
#define __IAMVfwCompressDialogs_FWD_DEFINED__
typedef interface IAMVfwCompressDialogs IAMVfwCompressDialogs;
#endif

#ifndef __IAMVideoCompression_FWD_DEFINED__
#define __IAMVideoCompression_FWD_DEFINED__
typedef interface IAMVideoCompression IAMVideoCompression;
#endif

#ifndef __IAMVideoDecimationProperties_FWD_DEFINED__
#define __IAMVideoDecimationProperties_FWD_DEFINED__
typedef interface IAMVideoDecimationProperties IAMVideoDecimationProperties;
#endif

#ifndef __IAMVideoProcAmp_FWD_DEFINED__
#define __IAMVideoProcAmp_FWD_DEFINED__
typedef interface IAMVideoProcAmp IAMVideoProcAmp;
#endif

#ifndef __ICaptureGraphBuilder_FWD_DEFINED__
#define __ICaptureGraphBuilder_FWD_DEFINED__
typedef interface ICaptureGraphBuilder ICaptureGraphBuilder;
#endif

#ifndef __ICaptureGraphBuilder2_FWD_DEFINED__
#define __ICaptureGraphBuilder2_FWD_DEFINED__
typedef interface ICaptureGraphBuilder2 ICaptureGraphBuilder2;
#endif

#ifndef __IConfigAviMux_FWD_DEFINED__
#define __IConfigAviMux_FWD_DEFINED__
typedef interface IConfigAviMux IConfigAviMux;
#endif

#ifndef __IConfigInterleaving_FWD_DEFINED__
#define __IConfigInterleaving_FWD_DEFINED__
typedef interface IConfigInterleaving IConfigInterleaving;
#endif

#ifndef __IDecimateVideoImage_FWD_DEFINED__
#define __IDecimateVideoImage_FWD_DEFINED__
typedef interface IDecimateVideoImage IDecimateVideoImage;
#endif

#ifndef __IDrawVideoImage_FWD_DEFINED__
#define __IDrawVideoImage_FWD_DEFINED__
typedef interface IDrawVideoImage IDrawVideoImage;
#endif

#ifndef __IEnumRegFilters_FWD_DEFINED__
#define __IEnumRegFilters_FWD_DEFINED__
typedef interface IEnumRegFilters IEnumRegFilters;
#endif

#ifndef __IEnumStreamIdMap_FWD_DEFINED__
#define __IEnumStreamIdMap_FWD_DEFINED__
typedef interface IEnumStreamIdMap IEnumStreamIdMap;
#endif

#ifndef __IFileSourceFilter_FWD_DEFINED__
#define __IFileSourceFilter_FWD_DEFINED__
typedef interface IFileSourceFilter IFileSourceFilter;
#endif

#ifndef __IFileSinkFilter_FWD_DEFINED__
#define __IFileSinkFilter_FWD_DEFINED__
typedef interface IFileSinkFilter IFileSinkFilter;
#endif

#ifndef __IFileSinkFilter2_FWD_DEFINED__
#define __IFileSinkFilter2_FWD_DEFINED__
typedef interface IFileSinkFilter2 IFileSinkFilter2;
#endif

#ifndef __IFilterMapper_FWD_DEFINED__
#define __IFilterMapper_FWD_DEFINED__
typedef interface IFilterMapper IFilterMapper;
#endif

#ifndef __IFilterMapper2_FWD_DEFINED__
#define __IFilterMapper2_FWD_DEFINED__
typedef interface IFilterMapper2 IFilterMapper2;
#endif

#ifndef __IGraphBuilder_FWD_DEFINED__
#define __IGraphBuilder_FWD_DEFINED__
typedef interface IGraphBuilder IGraphBuilder;
#endif

#ifndef __IKsPropertySet_FWD_DEFINED__
#define __IKsPropertySet_FWD_DEFINED__
typedef interface IKsPropertySet IKsPropertySet;
#endif

#ifndef __IMediaEventSink_FWD_DEFINED__
#define __IMediaEventSink_FWD_DEFINED__
typedef interface IMediaEventSink IMediaEventSink;
#endif

#ifndef __IMpeg2Demultiplexer_FWD_DEFINED__
#define __IMpeg2Demultiplexer_FWD_DEFINED__
typedef interface IMpeg2Demultiplexer IMpeg2Demultiplexer;
#endif

#ifndef __IMPEG2StreamIdMap_FWD_DEFINED__
#define __IMPEG2StreamIdMap_FWD_DEFINED__
typedef interface IMPEG2StreamIdMap IMPEG2StreamIdMap;
#endif

#ifndef __IOverlay_FWD_DEFINED__
#define __IOverlay_FWD_DEFINED__
typedef interface IOverlay IOverlay;
#endif

#ifndef __IOverlayNotify_FWD_DEFINED__
#define __IOverlayNotify_FWD_DEFINED__
typedef interface IOverlayNotify IOverlayNotify;
#endif

#ifndef __IOverlayNotify2_FWD_DEFINED__
#define __IOverlayNotify2_FWD_DEFINED__
typedef interface IOverlayNotify2 IOverlayNotify2;
#endif

#ifndef __IQualityControl_FWD_DEFINED__
#define __IQualityControl_FWD_DEFINED__
typedef interface IQualityControl IQualityControl;
#endif

#ifndef __ISeekingPassThru_FWD_DEFINED__
#define __ISeekingPassThru_FWD_DEFINED__
typedef interface ISeekingPassThru ISeekingPassThru;
#endif

typedef struct __WIDL_axextend_generated_name_00000000 {
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IEnumRegFiltersVtbl;
interface IEnumRegFilters {
    CONST_VTBL IEnumRegFiltersVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumRegFilters_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumRegFilters_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumRegFilters_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumRegFilters methods ***/
#define IEnumRegFilters_Next(This,cFilters,apRegFilter,pcFetched) (This)->lpVtbl->Next(This,cFilters,apRegFilter,pcFetched)
#define IEnumRegFilters_Skip(This,cFilters) (This)->lpVtbl->Skip(This,cFilters)
#define IEnumRegFilters_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumRegFilters_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumRegFilters_Next_Proxy(
    IEnumRegFilters* This,
    ULONG cFilters,
    REGFILTER **apRegFilter,
    ULONG *pcFetched);
void __RPC_STUB IEnumRegFilters_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumRegFilters_Skip_Proxy(
    IEnumRegFilters* This,
    ULONG cFilters);
void __RPC_STUB IEnumRegFilters_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumRegFilters_Reset_Proxy(
    IEnumRegFilters* This);
void __RPC_STUB IEnumRegFilters_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumRegFilters_Clone_Proxy(
    IEnumRegFilters* This,
    IEnumRegFilters **ppEnum);
void __RPC_STUB IEnumRegFilters_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumRegFilters_INTERFACE_DEFINED__ */

typedef IEnumRegFilters *PENUMREGFILTERS;
/*****************************************************************************
 * IFilterMapper interface
 */
#ifndef __IFilterMapper_INTERFACE_DEFINED__
#define __IFilterMapper_INTERFACE_DEFINED__

enum {
    MERIT_PREFERRED = 0x800000,
    MERIT_NORMAL = 0x600000,
    MERIT_UNLIKELY = 0x400000,
    MERIT_DO_NOT_USE = 0x200000,
    MERIT_SW_COMPRESSOR = 0x100000,
    MERIT_HW_COMPRESSOR = 0x100050
};

DEFINE_GUID(IID_IFilterMapper, 0x56a868a3, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IFilterMapperVtbl;
interface IFilterMapper {
    CONST_VTBL IFilterMapperVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFilterMapper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFilterMapper_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFilterMapper_Release(This) (This)->lpVtbl->Release(This)
/*** IFilterMapper methods ***/
#define IFilterMapper_RegisterFilter(This,clsid,Name,dwMerit) (This)->lpVtbl->RegisterFilter(This,clsid,Name,dwMerit)
#define IFilterMapper_RegisterFilterInstance(This,clsid,Name,MRId) (This)->lpVtbl->RegisterFilterInstance(This,clsid,Name,MRId)
#define IFilterMapper_RegisterPin(This,Filter,Name,bRendered,bOutput,bZero,bMany,ConnectsToFilter,ConnectsToPin) (This)->lpVtbl->RegisterPin(This,Filter,Name,bRendered,bOutput,bZero,bMany,ConnectsToFilter,ConnectsToPin)
#define IFilterMapper_RegisterPinType(This,clsFilter,strName,clsMajorType,clsSubType) (This)->lpVtbl->RegisterPinType(This,clsFilter,strName,clsMajorType,clsSubType)
#define IFilterMapper_UnregisterFilter(This,Filter) (This)->lpVtbl->UnregisterFilter(This,Filter)
#define IFilterMapper_UnregisterFilterInstance(This,MRId) (This)->lpVtbl->UnregisterFilterInstance(This,MRId)
#define IFilterMapper_UnregisterPin(This,Filter,Name) (This)->lpVtbl->UnregisterPin(This,Filter,Name)
#define IFilterMapper_EnumMatchingFilters(This,ppEnum,dwMerit,bInputNeeded,clsInMaj,clsInSub,bRender,bOututNeeded,clsOutMaj,clsOutSub) (This)->lpVtbl->EnumMatchingFilters(This,ppEnum,dwMerit,bInputNeeded,clsInMaj,clsInSub,bRender,bOututNeeded,clsOutMaj,clsOutSub)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterFilter_Proxy(
    IFilterMapper* This,
    CLSID clsid,
    LPCWSTR Name,
    DWORD dwMerit);
void __RPC_STUB IFilterMapper_RegisterFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterFilterInstance_Proxy(
    IFilterMapper* This,
    CLSID clsid,
    LPCWSTR Name,
    CLSID *MRId);
void __RPC_STUB IFilterMapper_RegisterFilterInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterPinType_Proxy(
    IFilterMapper* This,
    CLSID clsFilter,
    LPCWSTR strName,
    CLSID clsMajorType,
    CLSID clsSubType);
void __RPC_STUB IFilterMapper_RegisterPinType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterMapper_UnregisterFilter_Proxy(
    IFilterMapper* This,
    CLSID Filter);
void __RPC_STUB IFilterMapper_UnregisterFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterMapper_UnregisterFilterInstance_Proxy(
    IFilterMapper* This,
    CLSID MRId);
void __RPC_STUB IFilterMapper_UnregisterFilterInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterMapper_UnregisterPin_Proxy(
    IFilterMapper* This,
    CLSID Filter,
    LPCWSTR Name);
void __RPC_STUB IFilterMapper_UnregisterPin_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFilterMapper_INTERFACE_DEFINED__ */

typedef struct __WIDL_axextend_generated_name_00000001 {
    const CLSID *clsMajorType;
    const CLSID *clsMinorType;
} REGPINTYPES;
typedef struct __WIDL_axextend_generated_name_00000002 {
    LPWSTR strName;
    BOOL bRendered;
    BOOL bOutput;
    BOOL bZero;
    BOOL bMany;
    const CLSID *clsConnectsToFilter;
    const WCHAR *strConnectsToPin;
    UINT nMediaTypes;
    const REGPINTYPES *lpMediaType;
} REGFILTERPINS;
typedef struct __WIDL_axextend_generated_name_00000003 {
    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 __WIDL_axextend_generated_name_00000004 {
    DWORD dwFlags;
    UINT cInstances;
    UINT nMediaTypes;
    const REGPINTYPES *lpMediaType;
    UINT nMediums;
    const REGPINMEDIUM *lpMedium;
    const CLSID *clsPinCategory;
} REGFILTERPINS2;
typedef struct __WIDL_axextend_generated_name_00000005 {
    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)
interface IFilterMapper2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateCategory(
        REFCLSID clsidCategory,
        DWORD dwCategoryMerit,
        LPCWSTR Description) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnregisterFilter(
        const CLSID *pclsidCategory,
        LPCOLESTR szInstance,
        REFCLSID Filter) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterFilter(
        REFCLSID clsidFilter,
        LPCWSTR Name,
        IMoniker **ppMoniker,
        const CLSID *pclsidCategory,
        LPCOLESTR 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 {
    BEGIN_INTERFACE

    /*** 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,
        LPCOLESTR szInstance,
        REFCLSID Filter);

    HRESULT (STDMETHODCALLTYPE *RegisterFilter)(
        IFilterMapper2* This,
        REFCLSID clsidFilter,
        LPCWSTR Name,
        IMoniker **ppMoniker,
        const CLSID *pclsidCategory,
        LPCOLESTR 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);

    END_INTERFACE
} IFilterMapper2Vtbl;
interface IFilterMapper2 {
    CONST_VTBL IFilterMapper2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFilterMapper2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFilterMapper2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFilterMapper2_Release(This) (This)->lpVtbl->Release(This)
/*** IFilterMapper2 methods ***/
#define IFilterMapper2_CreateCategory(This,clsidCategory,dwCategoryMerit,Description) (This)->lpVtbl->CreateCategory(This,clsidCategory,dwCategoryMerit,Description)
#define IFilterMapper2_UnregisterFilter(This,pclsidCategory,szInstance,Filter) (This)->lpVtbl->UnregisterFilter(This,pclsidCategory,szInstance,Filter)
#define IFilterMapper2_RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2) (This)->lpVtbl->RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2)
#define IFilterMapper2_EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut) (This)->lpVtbl->EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFilterMapper2_CreateCategory_Proxy(
    IFilterMapper2* This,
    REFCLSID clsidCategory,
    DWORD dwCategoryMerit,
    LPCWSTR Description);
void __RPC_STUB IFilterMapper2_CreateCategory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterMapper2_UnregisterFilter_Proxy(
    IFilterMapper2* This,
    const CLSID *pclsidCategory,
    LPCOLESTR szInstance,
    REFCLSID Filter);
void __RPC_STUB IFilterMapper2_UnregisterFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterMapper2_RegisterFilter_Proxy(
    IFilterMapper2* This,
    REFCLSID clsidFilter,
    LPCWSTR Name,
    IMoniker **ppMoniker,
    const CLSID *pclsidCategory,
    LPCOLESTR szInstance,
    const REGFILTER2 *prf2);
void __RPC_STUB IFilterMapper2_RegisterFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFilterMapper2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * 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)
interface IFilterMapper3 : public IFilterMapper2
{
    virtual HRESULT STDMETHODCALLTYPE GetICreateDevEnum(
        ICreateDevEnum **ppEnum) = 0;

};
#else
typedef struct IFilterMapper3Vtbl {
    BEGIN_INTERFACE

    /*** 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,
        LPCOLESTR szInstance,
        REFCLSID Filter);

    HRESULT (STDMETHODCALLTYPE *RegisterFilter)(
        IFilterMapper3* This,
        REFCLSID clsidFilter,
        LPCWSTR Name,
        IMoniker **ppMoniker,
        const CLSID *pclsidCategory,
        LPCOLESTR 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);

    END_INTERFACE
} IFilterMapper3Vtbl;
interface IFilterMapper3 {
    CONST_VTBL IFilterMapper3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFilterMapper3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFilterMapper3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFilterMapper3_Release(This) (This)->lpVtbl->Release(This)
/*** IFilterMapper2 methods ***/
#define IFilterMapper3_CreateCategory(This,clsidCategory,dwCategoryMerit,Description) (This)->lpVtbl->CreateCategory(This,clsidCategory,dwCategoryMerit,Description)
#define IFilterMapper3_UnregisterFilter(This,pclsidCategory,szInstance,Filter) (This)->lpVtbl->UnregisterFilter(This,pclsidCategory,szInstance,Filter)
#define IFilterMapper3_RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2) (This)->lpVtbl->RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2)
#define IFilterMapper3_EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut) (This)->lpVtbl->EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut)
/*** IFilterMapper3 methods ***/
#define IFilterMapper3_GetICreateDevEnum(This,ppEnum) (This)->lpVtbl->GetICreateDevEnum(This,ppEnum)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFilterMapper3_GetICreateDevEnum_Proxy(
    IFilterMapper3* This,
    ICreateDevEnum **ppEnum);
void __RPC_STUB IFilterMapper3_GetICreateDevEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFilterMapper3_INTERFACE_DEFINED__ */

typedef enum tagQualityMessageType {
    Famine = 0,
    Flood = 1
} 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)
interface IQualityControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Notify(
        IBaseFilter *pSelf,
        Quality q) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSink(
        IQualityControl *piqc) = 0;

};
#else
typedef struct IQualityControlVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IQualityControlVtbl;
interface IQualityControl {
    CONST_VTBL IQualityControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IQualityControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IQualityControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IQualityControl_Release(This) (This)->lpVtbl->Release(This)
/*** IQualityControl methods ***/
#define IQualityControl_Notify(This,pSelf,q) (This)->lpVtbl->Notify(This,pSelf,q)
#define IQualityControl_SetSink(This,piqc) (This)->lpVtbl->SetSink(This,piqc)
#endif

#endif

HRESULT STDMETHODCALLTYPE IQualityControl_Notify_Proxy(
    IQualityControl* This,
    IBaseFilter *pSelf,
    Quality q);
void __RPC_STUB IQualityControl_Notify_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IQualityControl_SetSink_Proxy(
    IQualityControl* This,
    IQualityControl *piqc);
void __RPC_STUB IQualityControl_SetSink_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IOverlayNotifyVtbl;
interface IOverlayNotify {
    CONST_VTBL IOverlayNotifyVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IOverlayNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IOverlayNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IOverlayNotify_Release(This) (This)->lpVtbl->Release(This)
/*** IOverlayNotify methods ***/
#define IOverlayNotify_OnPaletteChange(This,dwColors,pPalette) (This)->lpVtbl->OnPaletteChange(This,dwColors,pPalette)
#define IOverlayNotify_OnClipChange(This,pSourceRect,pDestinationRect,pRgnData) (This)->lpVtbl->OnClipChange(This,pSourceRect,pDestinationRect,pRgnData)
#define IOverlayNotify_OnColorKeyChange(This,pColorKey) (This)->lpVtbl->OnColorKeyChange(This,pColorKey)
#define IOverlayNotify_OnPositionChange(This,pSourceRect,pDestinationRect) (This)->lpVtbl->OnPositionChange(This,pSourceRect,pDestinationRect)
#endif

#endif

HRESULT STDMETHODCALLTYPE IOverlayNotify_OnPaletteChange_Proxy(
    IOverlayNotify* This,
    DWORD dwColors,
    const PALETTEENTRY *pPalette);
void __RPC_STUB IOverlayNotify_OnPaletteChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlayNotify_OnClipChange_Proxy(
    IOverlayNotify* This,
    const RECT *pSourceRect,
    const RECT *pDestinationRect,
    const RGNDATA *pRgnData);
void __RPC_STUB IOverlayNotify_OnClipChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlayNotify_OnColorKeyChange_Proxy(
    IOverlayNotify* This,
    const COLORKEY *pColorKey);
void __RPC_STUB IOverlayNotify_OnColorKeyChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlayNotify_OnPositionChange_Proxy(
    IOverlayNotify* This,
    const RECT *pSourceRect,
    const RECT *pDestinationRect);
void __RPC_STUB IOverlayNotify_OnPositionChange_Stub(
    IRpcStubBuffer* This,
    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)
interface IOverlayNotify2 : public IOverlayNotify
{
    virtual HRESULT STDMETHODCALLTYPE OnDisplayChange(
        HMONITOR hMonitor) = 0;

};
#else
typedef struct IOverlayNotify2Vtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IOverlayNotify2Vtbl;
interface IOverlayNotify2 {
    CONST_VTBL IOverlayNotify2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IOverlayNotify2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IOverlayNotify2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IOverlayNotify2_Release(This) (This)->lpVtbl->Release(This)
/*** IOverlayNotify methods ***/
#define IOverlayNotify2_OnPaletteChange(This,dwColors,pPalette) (This)->lpVtbl->OnPaletteChange(This,dwColors,pPalette)
#define IOverlayNotify2_OnClipChange(This,pSourceRect,pDestinationRect,pRgnData) (This)->lpVtbl->OnClipChange(This,pSourceRect,pDestinationRect,pRgnData)
#define IOverlayNotify2_OnColorKeyChange(This,pColorKey) (This)->lpVtbl->OnColorKeyChange(This,pColorKey)
#define IOverlayNotify2_OnPositionChange(This,pSourceRect,pDestinationRect) (This)->lpVtbl->OnPositionChange(This,pSourceRect,pDestinationRect)
/*** IOverlayNotify2 methods ***/
#define IOverlayNotify2_OnDisplayChange(This,hMonitor) (This)->lpVtbl->OnDisplayChange(This,hMonitor)
#endif

#endif

HRESULT STDMETHODCALLTYPE IOverlayNotify2_OnDisplayChange_Proxy(
    IOverlayNotify2* This,
    HMONITOR hMonitor);
void __RPC_STUB IOverlayNotify2_OnDisplayChange_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IOverlayVtbl;
interface IOverlay {
    CONST_VTBL IOverlayVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IOverlay_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IOverlay_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IOverlay_Release(This) (This)->lpVtbl->Release(This)
/*** IOverlay methods ***/
#define IOverlay_GetPalette(This,pdwColors,ppPalette) (This)->lpVtbl->GetPalette(This,pdwColors,ppPalette)
#define IOverlay_SetPalette(This,dwColors,pPalette) (This)->lpVtbl->SetPalette(This,dwColors,pPalette)
#define IOverlay_GetDefaultColorKey(This,pColorKey) (This)->lpVtbl->GetDefaultColorKey(This,pColorKey)
#define IOverlay_GetColorKey(This,pColorKey) (This)->lpVtbl->GetColorKey(This,pColorKey)
#define IOverlay_SetColorKey(This,pColorKey) (This)->lpVtbl->SetColorKey(This,pColorKey)
#define IOverlay_GetWindowHandle(This,pHwnd) (This)->lpVtbl->GetWindowHandle(This,pHwnd)
#define IOverlay_GetClipList(This,pSourceRect,pDestinationRect,ppRgnData) (This)->lpVtbl->GetClipList(This,pSourceRect,pDestinationRect,ppRgnData)
#define IOverlay_GetVideoPosition(This,pSourceRect,pDestinationRect) (This)->lpVtbl->GetVideoPosition(This,pSourceRect,pDestinationRect)
#define IOverlay_Advise(This,pOverlayNotify,dwInterests) (This)->lpVtbl->Advise(This,pOverlayNotify,dwInterests)
#define IOverlay_Unadvise(This) (This)->lpVtbl->Unadvise(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IOverlay_GetPalette_Proxy(
    IOverlay* This,
    DWORD *pdwColors,
    PALETTEENTRY **ppPalette);
void __RPC_STUB IOverlay_GetPalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlay_SetPalette_Proxy(
    IOverlay* This,
    DWORD dwColors,
    PALETTEENTRY *pPalette);
void __RPC_STUB IOverlay_SetPalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlay_GetDefaultColorKey_Proxy(
    IOverlay* This,
    COLORKEY *pColorKey);
void __RPC_STUB IOverlay_GetDefaultColorKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlay_GetColorKey_Proxy(
    IOverlay* This,
    COLORKEY *pColorKey);
void __RPC_STUB IOverlay_GetColorKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlay_SetColorKey_Proxy(
    IOverlay* This,
    COLORKEY *pColorKey);
void __RPC_STUB IOverlay_SetColorKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlay_GetWindowHandle_Proxy(
    IOverlay* This,
    HWND *pHwnd);
void __RPC_STUB IOverlay_GetWindowHandle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlay_GetClipList_Proxy(
    IOverlay* This,
    RECT *pSourceRect,
    RECT *pDestinationRect,
    RGNDATA **ppRgnData);
void __RPC_STUB IOverlay_GetClipList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlay_GetVideoPosition_Proxy(
    IOverlay* This,
    RECT *pSourceRect,
    RECT *pDestinationRect);
void __RPC_STUB IOverlay_GetVideoPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlay_Advise_Proxy(
    IOverlay* This,
    IOverlayNotify *pOverlayNotify,
    DWORD dwInterests);
void __RPC_STUB IOverlay_Advise_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IOverlay_Unadvise_Proxy(
    IOverlay* This);
void __RPC_STUB IOverlay_Unadvise_Stub(
    IRpcStubBuffer* This,
    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)
interface IMediaEventSink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Notify(
        LONG EventCode,
        LONG_PTR EventParam1,
        LONG_PTR EventParam2) = 0;

};
#else
typedef struct IMediaEventSinkVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IMediaEventSinkVtbl;
interface IMediaEventSink {
    CONST_VTBL IMediaEventSinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMediaEventSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaEventSink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaEventSink_Release(This) (This)->lpVtbl->Release(This)
/*** IMediaEventSink methods ***/
#define IMediaEventSink_Notify(This,EventCode,EventParam1,EventParam2) (This)->lpVtbl->Notify(This,EventCode,EventParam1,EventParam2)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMediaEventSink_Notify_Proxy(
    IMediaEventSink* This,
    LONG EventCode,
    LONG_PTR EventParam1,
    LONG_PTR EventParam2);
void __RPC_STUB IMediaEventSink_Notify_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IFileSourceFilterVtbl;
interface IFileSourceFilter {
    CONST_VTBL IFileSourceFilterVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileSourceFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileSourceFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileSourceFilter_Release(This) (This)->lpVtbl->Release(This)
/*** IFileSourceFilter methods ***/
#define IFileSourceFilter_Load(This,pszFileName,pmt) (This)->lpVtbl->Load(This,pszFileName,pmt)
#define IFileSourceFilter_GetCurFile(This,ppszFileName,pmt) (This)->lpVtbl->GetCurFile(This,ppszFileName,pmt)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileSourceFilter_Load_Proxy(
    IFileSourceFilter* This,
    LPCOLESTR pszFileName,
    const AM_MEDIA_TYPE *pmt);
void __RPC_STUB IFileSourceFilter_Load_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileSourceFilter_GetCurFile_Proxy(
    IFileSourceFilter* This,
    LPOLESTR *ppszFileName,
    AM_MEDIA_TYPE *pmt);
void __RPC_STUB IFileSourceFilter_GetCurFile_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IFileSinkFilterVtbl;
interface IFileSinkFilter {
    CONST_VTBL IFileSinkFilterVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileSinkFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileSinkFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileSinkFilter_Release(This) (This)->lpVtbl->Release(This)
/*** IFileSinkFilter methods ***/
#define IFileSinkFilter_SetFileName(This,pszFileName,pmt) (This)->lpVtbl->SetFileName(This,pszFileName,pmt)
#define IFileSinkFilter_GetCurFile(This,ppszFileName,pmt) (This)->lpVtbl->GetCurFile(This,ppszFileName,pmt)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileSinkFilter_SetFileName_Proxy(
    IFileSinkFilter* This,
    LPCOLESTR pszFileName,
    const AM_MEDIA_TYPE *pmt);
void __RPC_STUB IFileSinkFilter_SetFileName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileSinkFilter_GetCurFile_Proxy(
    IFileSinkFilter* This,
    LPOLESTR *ppszFileName,
    AM_MEDIA_TYPE *pmt);
void __RPC_STUB IFileSinkFilter_GetCurFile_Stub(
    IRpcStubBuffer* This,
    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)
interface IFileSinkFilter2 : public IFileSinkFilter
{
    virtual HRESULT STDMETHODCALLTYPE SetMode(
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMode(
        DWORD *pdwFlags) = 0;

};
#else
typedef struct IFileSinkFilter2Vtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IFileSinkFilter2Vtbl;
interface IFileSinkFilter2 {
    CONST_VTBL IFileSinkFilter2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileSinkFilter2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileSinkFilter2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileSinkFilter2_Release(This) (This)->lpVtbl->Release(This)
/*** IFileSinkFilter methods ***/
#define IFileSinkFilter2_SetFileName(This,pszFileName,pmt) (This)->lpVtbl->SetFileName(This,pszFileName,pmt)
#define IFileSinkFilter2_GetCurFile(This,ppszFileName,pmt) (This)->lpVtbl->GetCurFile(This,ppszFileName,pmt)
/*** IFileSinkFilter2 methods ***/
#define IFileSinkFilter2_SetMode(This,dwFlags) (This)->lpVtbl->SetMode(This,dwFlags)
#define IFileSinkFilter2_GetMode(This,pdwFlags) (This)->lpVtbl->GetMode(This,pdwFlags)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileSinkFilter2_SetMode_Proxy(
    IFileSinkFilter2* This,
    DWORD dwFlags);
void __RPC_STUB IFileSinkFilter2_SetMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileSinkFilter2_GetMode_Proxy(
    IFileSinkFilter2* This,
    DWORD *pdwFlags);
void __RPC_STUB IFileSinkFilter2_GetMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFileSinkFilter2_INTERFACE_DEFINED__ */

typedef IFileSinkFilter2 *PFILESINKFILTER2;
typedef enum __WIDL_axextend_generated_name_00000006 {
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IGraphBuilderVtbl;
interface IGraphBuilder {
    CONST_VTBL IGraphBuilderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IGraphBuilder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IGraphBuilder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IGraphBuilder_Release(This) (This)->lpVtbl->Release(This)
/*** IFilterGraph methods ***/
#define IGraphBuilder_AddFilter(This,pFilter,pName) (This)->lpVtbl->AddFilter(This,pFilter,pName)
#define IGraphBuilder_RemoveFilter(This,pFilter) (This)->lpVtbl->RemoveFilter(This,pFilter)
#define IGraphBuilder_EnumFilters(This,ppEnum) (This)->lpVtbl->EnumFilters(This,ppEnum)
#define IGraphBuilder_FindFilterByName(This,pName,ppFilter) (This)->lpVtbl->FindFilterByName(This,pName,ppFilter)
#define IGraphBuilder_ConnectDirect(This,ppinOut,ppinIn,pmt) (This)->lpVtbl->ConnectDirect(This,ppinOut,ppinIn,pmt)
#define IGraphBuilder_Reconnect(This,ppin) (This)->lpVtbl->Reconnect(This,ppin)
#define IGraphBuilder_Disconnect(This,ppin) (This)->lpVtbl->Disconnect(This,ppin)
#define IGraphBuilder_SetDefaultSyncSource(This) (This)->lpVtbl->SetDefaultSyncSource(This)
/*** IGraphBuilder methods ***/
#define IGraphBuilder_Connect(This,ppinOut,ppinIn) (This)->lpVtbl->Connect(This,ppinOut,ppinIn)
#define IGraphBuilder_Render(This,ppinOut) (This)->lpVtbl->Render(This,ppinOut)
#define IGraphBuilder_RenderFile(This,lpcwstrFile,lpcwstrPlayList) (This)->lpVtbl->RenderFile(This,lpcwstrFile,lpcwstrPlayList)
#define IGraphBuilder_AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter) (This)->lpVtbl->AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter)
#define IGraphBuilder_SetLogFile(This,hFile) (This)->lpVtbl->SetLogFile(This,hFile)
#define IGraphBuilder_Abort(This) (This)->lpVtbl->Abort(This)
#define IGraphBuilder_ShouldOperationContinue(This) (This)->lpVtbl->ShouldOperationContinue(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IGraphBuilder_Connect_Proxy(
    IGraphBuilder* This,
    IPin *ppinOut,
    IPin *ppinIn);
void __RPC_STUB IGraphBuilder_Connect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphBuilder_Render_Proxy(
    IGraphBuilder* This,
    IPin *ppinOut);
void __RPC_STUB IGraphBuilder_Render_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphBuilder_RenderFile_Proxy(
    IGraphBuilder* This,
    LPCWSTR lpcwstrFile,
    LPCWSTR lpcwstrPlayList);
void __RPC_STUB IGraphBuilder_RenderFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphBuilder_AddSourceFilter_Proxy(
    IGraphBuilder* This,
    LPCWSTR lpcwstrFileName,
    LPCWSTR lpcwstrFilterName,
    IBaseFilter **ppFilter);
void __RPC_STUB IGraphBuilder_AddSourceFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphBuilder_SetLogFile_Proxy(
    IGraphBuilder* This,
    DWORD_PTR hFile);
void __RPC_STUB IGraphBuilder_SetLogFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphBuilder_Abort_Proxy(
    IGraphBuilder* This);
void __RPC_STUB IGraphBuilder_Abort_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphBuilder_ShouldOperationContinue_Proxy(
    IGraphBuilder* This);
void __RPC_STUB IGraphBuilder_ShouldOperationContinue_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} ICaptureGraphBuilderVtbl;
interface ICaptureGraphBuilder {
    CONST_VTBL ICaptureGraphBuilderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ICaptureGraphBuilder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICaptureGraphBuilder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICaptureGraphBuilder_Release(This) (This)->lpVtbl->Release(This)
/*** ICaptureGraphBuilder methods ***/
#define ICaptureGraphBuilder_SetFiltergraph(This,pfg) (This)->lpVtbl->SetFiltergraph(This,pfg)
#define ICaptureGraphBuilder_GetFiltergraph(This,ppfg) (This)->lpVtbl->GetFiltergraph(This,ppfg)
#define ICaptureGraphBuilder_SetOutputFileName(This,pType,lpstrFile,ppf,ppSink) (This)->lpVtbl->SetOutputFileName(This,pType,lpstrFile,ppf,ppSink)
#define ICaptureGraphBuilder_FindInterface(This,pCategory,pf,riid,ppint) (This)->lpVtbl->FindInterface(This,pCategory,pf,riid,ppint)
#define ICaptureGraphBuilder_RenderStream(This,pCategory,pSource,pfCompressor,pfRenderer) (This)->lpVtbl->RenderStream(This,pCategory,pSource,pfCompressor,pfRenderer)
#define ICaptureGraphBuilder_ControlStream(This,pCategory,pFilter,pstart,pstop,wStartCookie,wStopCookie) (This)->lpVtbl->ControlStream(This,pCategory,pFilter,pstart,pstop,wStartCookie,wStopCookie)
#define ICaptureGraphBuilder_AllocCapFile(This,lpstr,dwlSize) (This)->lpVtbl->AllocCapFile(This,lpstr,dwlSize)
#define ICaptureGraphBuilder_CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback) (This)->lpVtbl->CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback)
#endif

#endif

HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_SetFiltergraph_Proxy(
    ICaptureGraphBuilder* This,
    IGraphBuilder *pfg);
void __RPC_STUB ICaptureGraphBuilder_SetFiltergraph_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_GetFiltergraph_Proxy(
    ICaptureGraphBuilder* This,
    IGraphBuilder **ppfg);
void __RPC_STUB ICaptureGraphBuilder_GetFiltergraph_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_SetOutputFileName_Proxy(
    ICaptureGraphBuilder* This,
    const GUID *pType,
    LPCOLESTR lpstrFile,
    IBaseFilter **ppf,
    IFileSinkFilter **ppSink);
void __RPC_STUB ICaptureGraphBuilder_SetOutputFileName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_RemoteFindInterface_Proxy(
    ICaptureGraphBuilder* This,
    const GUID *pCategory,
    IBaseFilter *pf,
    REFIID riid,
    IUnknown **ppint);
void __RPC_STUB ICaptureGraphBuilder_RemoteFindInterface_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_RenderStream_Proxy(
    ICaptureGraphBuilder* This,
    const GUID *pCategory,
    IUnknown *pSource,
    IBaseFilter *pfCompressor,
    IBaseFilter *pfRenderer);
void __RPC_STUB ICaptureGraphBuilder_RenderStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_AllocCapFile_Proxy(
    ICaptureGraphBuilder* This,
    LPCOLESTR lpstr,
    DWORDLONG dwlSize);
void __RPC_STUB ICaptureGraphBuilder_AllocCapFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_CopyCaptureFile_Proxy(
    ICaptureGraphBuilder* This,
    LPOLESTR lpwstrOld,
    LPOLESTR lpwstrNew,
    int fAllowEscAbort,
    IAMCopyCaptureFileProgress *pCallback);
void __RPC_STUB ICaptureGraphBuilder_CopyCaptureFile_Stub(
    IRpcStubBuffer* This,
    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);

#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)
interface IAMCopyCaptureFileProgress : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Progress(
        int iProgress) = 0;

};
#else
typedef struct IAMCopyCaptureFileProgressVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IAMCopyCaptureFileProgressVtbl;
interface IAMCopyCaptureFileProgress {
    CONST_VTBL IAMCopyCaptureFileProgressVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IAMCopyCaptureFileProgress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAMCopyCaptureFileProgress_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAMCopyCaptureFileProgress_Release(This) (This)->lpVtbl->Release(This)
/*** IAMCopyCaptureFileProgress methods ***/
#define IAMCopyCaptureFileProgress_Progress(This,iProgress) (This)->lpVtbl->Progress(This,iProgress)
#endif

#endif

HRESULT STDMETHODCALLTYPE IAMCopyCaptureFileProgress_Progress_Proxy(
    IAMCopyCaptureFileProgress* This,
    int iProgress);
void __RPC_STUB IAMCopyCaptureFileProgress_Progress_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} ICaptureGraphBuilder2Vtbl;
interface ICaptureGraphBuilder2 {
    CONST_VTBL ICaptureGraphBuilder2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ICaptureGraphBuilder2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICaptureGraphBuilder2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICaptureGraphBuilder2_Release(This) (This)->lpVtbl->Release(This)
/*** ICaptureGraphBuilder2 methods ***/
#define ICaptureGraphBuilder2_SetFiltergraph(This,pfg) (This)->lpVtbl->SetFiltergraph(This,pfg)
#define ICaptureGraphBuilder2_GetFiltergraph(This,ppfg) (This)->lpVtbl->GetFiltergraph(This,ppfg)
#define ICaptureGraphBuilder2_SetOutputFileName(This,pType,lpstrFile,ppf,ppSink) (This)->lpVtbl->SetOutputFileName(This,pType,lpstrFile,ppf,ppSink)
#define ICaptureGraphBuilder2_FindInterface(This,pCategory,pType,pf,riid,ppint) (This)->lpVtbl->FindInterface(This,pCategory,pType,pf,riid,ppint)
#define ICaptureGraphBuilder2_RenderStream(This,pCategory,pType,pSource,pfCompressor,pfRenderer) (This)->lpVtbl->RenderStream(This,pCategory,pType,pSource,pfCompressor,pfRenderer)
#define ICaptureGraphBuilder2_ControlStream(This,pCategory,pType,pFilter,pstart,pstop,wStartCookie,wStopCookie) (This)->lpVtbl->ControlStream(This,pCategory,pType,pFilter,pstart,pstop,wStartCookie,wStopCookie)
#define ICaptureGraphBuilder2_AllocCapFile(This,lpstr,dwlSize) (This)->lpVtbl->AllocCapFile(This,lpstr,dwlSize)
#define ICaptureGraphBuilder2_CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback) (This)->lpVtbl->CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback)
#define ICaptureGraphBuilder2_FindPin(This,pSource,pindir,pCategory,pType,fUnconnected,num,ppPin) (This)->lpVtbl->FindPin(This,pSource,pindir,pCategory,pType,fUnconnected,num,ppPin)
#endif

#endif

HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_SetFiltergraph_Proxy(
    ICaptureGraphBuilder2* This,
    IGraphBuilder *pfg);
void __RPC_STUB ICaptureGraphBuilder2_SetFiltergraph_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_GetFiltergraph_Proxy(
    ICaptureGraphBuilder2* This,
    IGraphBuilder **ppfg);
void __RPC_STUB ICaptureGraphBuilder2_GetFiltergraph_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_SetOutputFileName_Proxy(
    ICaptureGraphBuilder2* This,
    const GUID *pType,
    LPCOLESTR lpstrFile,
    IBaseFilter **ppf,
    IFileSinkFilter **ppSink);
void __RPC_STUB ICaptureGraphBuilder2_SetOutputFileName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_RemoteFindInterface_Proxy(
    ICaptureGraphBuilder2* This,
    const GUID *pCategory,
    const GUID *pType,
    IBaseFilter *pf,
    REFIID riid,
    IUnknown **ppint);
void __RPC_STUB ICaptureGraphBuilder2_RemoteFindInterface_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_RenderStream_Proxy(
    ICaptureGraphBuilder2* This,
    const GUID *pCategory,
    const GUID *pType,
    IUnknown *pSource,
    IBaseFilter *pfCompressor,
    IBaseFilter *pfRenderer);
void __RPC_STUB ICaptureGraphBuilder2_RenderStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_AllocCapFile_Proxy(
    ICaptureGraphBuilder2* This,
    LPCOLESTR lpstr,
    DWORDLONG dwlSize);
void __RPC_STUB ICaptureGraphBuilder2_AllocCapFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_CopyCaptureFile_Proxy(
    ICaptureGraphBuilder2* This,
    LPOLESTR lpwstrOld,
    LPOLESTR lpwstrNew,
    int fAllowEscAbort,
    IAMCopyCaptureFileProgress *pCallback);
void __RPC_STUB ICaptureGraphBuilder2_CopyCaptureFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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(
    IRpcStubBuffer* This,
    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);

#endif  /* __ICaptureGraphBuilder2_INTERFACE_DEFINED__ */

enum _AM_RENSDEREXFLAGS {
    AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x1
};

/*****************************************************************************
 * 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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IFilterGraph2Vtbl;
interface IFilterGraph2 {
    CONST_VTBL IFilterGraph2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFilterGraph2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFilterGraph2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFilterGraph2_Release(This) (This)->lpVtbl->Release(This)
/*** IFilterGraph methods ***/
#define IFilterGraph2_AddFilter(This,pFilter,pName) (This)->lpVtbl->AddFilter(This,pFilter,pName)
#define IFilterGraph2_RemoveFilter(This,pFilter) (This)->lpVtbl->RemoveFilter(This,pFilter)
#define IFilterGraph2_EnumFilters(This,ppEnum) (This)->lpVtbl->EnumFilters(This,ppEnum)
#define IFilterGraph2_FindFilterByName(This,pName,ppFilter) (This)->lpVtbl->FindFilterByName(This,pName,ppFilter)
#define IFilterGraph2_ConnectDirect(This,ppinOut,ppinIn,pmt) (This)->lpVtbl->ConnectDirect(This,ppinOut,ppinIn,pmt)
#define IFilterGraph2_Reconnect(This,ppin) (This)->lpVtbl->Reconnect(This,ppin)
#define IFilterGraph2_Disconnect(This,ppin) (This)->lpVtbl->Disconnect(This,ppin)
#define IFilterGraph2_SetDefaultSyncSource(This) (This)->lpVtbl->SetDefaultSyncSource(This)
/*** IGraphBuilder methods ***/
#define IFilterGraph2_Connect(This,ppinOut,ppinIn) (This)->lpVtbl->Connect(This,ppinOut,ppinIn)
#define IFilterGraph2_Render(This,ppinOut) (This)->lpVtbl->Render(This,ppinOut)
#define IFilterGraph2_RenderFile(This,lpcwstrFile,lpcwstrPlayList) (This)->lpVtbl->RenderFile(This,lpcwstrFile,lpcwstrPlayList)
#define IFilterGraph2_AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter) (This)->lpVtbl->AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter)
#define IFilterGraph2_SetLogFile(This,hFile) (This)->lpVtbl->SetLogFile(This,hFile)
#define IFilterGraph2_Abort(This) (This)->lpVtbl->Abort(This)
#define IFilterGraph2_ShouldOperationContinue(This) (This)->lpVtbl->ShouldOperationContinue(This)
/*** IFilterGraph2 methods ***/
#define IFilterGraph2_AddSourceFilterForMoniker(This,pMoniker,pCtx,lpcwstrFilterName,ppFilter) (This)->lpVtbl->AddSourceFilterForMoniker(This,pMoniker,pCtx,lpcwstrFilterName,ppFilter)
#define IFilterGraph2_ReconnectEx(This,ppin,pmt) (This)->lpVtbl->ReconnectEx(This,ppin,pmt)
#define IFilterGraph2_RenderEx(This,pPinOut,dwFlags,pvContext) (This)->lpVtbl->RenderEx(This,pPinOut,dwFlags,pvContext)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFilterGraph2_AddSourceFilterForMoniker_Proxy(
    IFilterGraph2* This,
    IMoniker *pMoniker,
    IBindCtx *pCtx,
    LPCWSTR lpcwstrFilterName,
    IBaseFilter **ppFilter);
void __RPC_STUB IFilterGraph2_AddSourceFilterForMoniker_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterGraph2_ReconnectEx_Proxy(
    IFilterGraph2* This,
    IPin *ppin,
    const AM_MEDIA_TYPE *pmt);
void __RPC_STUB IFilterGraph2_ReconnectEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterGraph2_RenderEx_Proxy(
    IFilterGraph2* This,
    IPin *pPinOut,
    DWORD dwFlags,
    DWORD *pvContext);
void __RPC_STUB IFilterGraph2_RenderEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFilterGraph2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * 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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IStreamBuilderVtbl;
interface IStreamBuilder {
    CONST_VTBL IStreamBuilderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IStreamBuilder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IStreamBuilder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IStreamBuilder_Release(This) (This)->lpVtbl->Release(This)
/*** IStreamBuilder methods ***/
#define IStreamBuilder_Render(This,ppinOut,pGraph) (This)->lpVtbl->Render(This,ppinOut,pGraph)
#define IStreamBuilder_Backout(This,ppinOut,pGraph) (This)->lpVtbl->Backout(This,ppinOut,pGraph)
#endif

#endif

HRESULT STDMETHODCALLTYPE IStreamBuilder_Render_Proxy(
    IStreamBuilder* This,
    IPin *ppinOut,
    IGraphBuilder *pGraph);
void __RPC_STUB IStreamBuilder_Render_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IStreamBuilder_Backout_Proxy(
    IStreamBuilder* This,
    IPin *ppinOut,
    IGraphBuilder *pGraph);
void __RPC_STUB IStreamBuilder_Backout_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IStreamBuilder_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAMStreamConfig interface
 */
#ifndef __IAMStreamConfig_INTERFACE_DEFINED__
#define __IAMStreamConfig_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAMStreamConfig, 0xc6e13340, 0x30ac, 0x11d0, 0xa1,0x8c, 0x00,0xa0,0xc9,0x11,0x89,0x56);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IAMStreamConfig : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFormat(
        AM_MEDIA_TYPE *pmt) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFormat(
        AM_MEDIA_TYPE **pmt) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNumberOfCapabilities(
        int *piCount,
        int *piSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStreamCaps(
        int iIndex,
        AM_MEDIA_TYPE **pmt,
        BYTE *pSCC) = 0;

};
#else
typedef struct IAMStreamConfigVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IAMStreamConfig* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IAMStreamConfig* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IAMStreamConfig* This);

    /*** IAMStreamConfig methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFormat)(
        IAMStreamConfig* This,
        AM_MEDIA_TYPE *pmt);

    HRESULT (STDMETHODCALLTYPE *GetFormat)(
        IAMStreamConfig* This,
        AM_MEDIA_TYPE **pmt);

    HRESULT (STDMETHODCALLTYPE *GetNumberOfCapabilities)(
        IAMStreamConfig* This,
        int *piCount,
        int *piSize);

    HRESULT (STDMETHODCALLTYPE *GetStreamCaps)(
        IAMStreamConfig* This,
        int iIndex,
        AM_MEDIA_TYPE **pmt,
        BYTE *pSCC);

    END_INTERFACE
} IAMStreamConfigVtbl;
interface IAMStreamConfig {
    CONST_VTBL IAMStreamConfigVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IAMStreamConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAMStreamConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAMStreamConfig_Release(This) (This)->lpVtbl->Release(This)
/*** IAMStreamConfig methods ***/
#define IAMStreamConfig_SetFormat(This,pmt) (This)->lpVtbl->SetFormat(This,pmt)
#define IAMStreamConfig_GetFormat(This,pmt) (This)->lpVtbl->GetFormat(This,pmt)
#define IAMStreamConfig_GetNumberOfCapabilities(This,piCount,piSize) (This)->lpVtbl->GetNumberOfCapabilities(This,piCount,piSize)
#define IAMStreamConfig_GetStreamCaps(This,iIndex,pmt,pSCC) (This)->lpVtbl->GetStreamCaps(This,iIndex,pmt,pSCC)
#endif

#endif

HRESULT STDMETHODCALLTYPE IAMStreamConfig_SetFormat_Proxy(
    IAMStreamConfig* This,
    AM_MEDIA_TYPE *pmt);
void __RPC_STUB IAMStreamConfig_SetFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAMStreamConfig_GetFormat_Proxy(
    IAMStreamConfig* This,
    AM_MEDIA_TYPE **pmt);
void __RPC_STUB IAMStreamConfig_GetFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAMStreamConfig_GetNumberOfCapabilities_Proxy(
    IAMStreamConfig* This,
    int *piCount,
    int *piSize);
void __RPC_STUB IAMStreamConfig_GetNumberOfCapabilities_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAMStreamConfig_GetStreamCaps_Proxy(
    IAMStreamConfig* This,
    int iIndex,
    AM_MEDIA_TYPE **pmt,
    BYTE *pSCC);
void __RPC_STUB IAMStreamConfig_GetStreamCaps_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IAMStreamConfig_INTERFACE_DEFINED__ */

typedef enum tagVideoProcAmpProperty {
    VideoProcAmp_Brightness = 0,
    VideoProcAmp_Contrast = 1,
    VideoProcAmp_Hue = 2,
    VideoProcAmp_Saturation = 3,
    VideoProcAmp_Sharpness = 4,
    VideoProcAmp_Gamma = 5,
    VideoProcAmp_ColorEnable = 6,
    VideoProcAmp_WhiteBalance = 7,
    VideoProcAmp_BacklightCompensation = 8,
    VideoProcAmp_Gain = 9
} VideoProcAmpProperty;
typedef enum tagVideoProcAmpFlags {
    VideoProcAmp_Flags_Auto = 0x1,
    VideoProcAmp_Flags_Manual = 0x2
} VideoProcAmpFlags;
/*****************************************************************************
 * IAMVideoProcAmp interface
 */
#ifndef __IAMVideoProcAmp_INTERFACE_DEFINED__
#define __IAMVideoProcAmp_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAMVideoProcAmp, 0xc6e13360, 0x30ac, 0x11d0, 0xa1,0x8c, 0x00,0xa0,0xc9,0x11,0x89,0x56);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IAMVideoProcAmp : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetRange(
        LONG Property,
        LONG *pMin,
        LONG *pMax,
        LONG *pSteppingDelta,
        LONG *pDefault,
        LONG *pCapsFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE Set(
        LONG Property,
        LONG lValue,
        LONG Flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE Get(
        LONG Property,
        LONG *lValue,
        LONG *Flags) = 0;

};
#else
typedef struct IAMVideoProcAmpVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IAMVideoProcAmp* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IAMVideoProcAmp* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IAMVideoProcAmp* This);

    /*** IAMVideoProcAmp methods ***/
    HRESULT (STDMETHODCALLTYPE *GetRange)(
        IAMVideoProcAmp* This,
        LONG Property,
        LONG *pMin,
        LONG *pMax,
        LONG *pSteppingDelta,
        LONG *pDefault,
        LONG *pCapsFlags);

    HRESULT (STDMETHODCALLTYPE *Set)(
        IAMVideoProcAmp* This,
        LONG Property,
        LONG lValue,
        LONG Flags);

    HRESULT (STDMETHODCALLTYPE *Get)(
        IAMVideoProcAmp* This,
        LONG Property,
        LONG *lValue,
        LONG *Flags);

    END_INTERFACE
} IAMVideoProcAmpVtbl;
interface IAMVideoProcAmp {
    CONST_VTBL IAMVideoProcAmpVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IAMVideoProcAmp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAMVideoProcAmp_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAMVideoProcAmp_Release(This) (This)->lpVtbl->Release(This)
/*** IAMVideoProcAmp methods ***/
#define IAMVideoProcAmp_GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags) (This)->lpVtbl->GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags)
#define IAMVideoProcAmp_Set(This,Property,lValue,Flags) (This)->lpVtbl->Set(This,Property,lValue,Flags)
#define IAMVideoProcAmp_Get(This,Property,lValue,Flags) (This)->lpVtbl->Get(This,Property,lValue,Flags)
#endif

#endif

HRESULT STDMETHODCALLTYPE IAMVideoProcAmp_GetRange_Proxy(
    IAMVideoProcAmp* This,
    LONG Property,
    LONG *pMin,
    LONG *pMax,
    LONG *pSteppingDelta,
    LONG *pDefault,
    LONG *pCapsFlags);
void __RPC_STUB IAMVideoProcAmp_GetRange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAMVideoProcAmp_Set_Proxy(
    IAMVideoProcAmp* This,
    LONG Property,
    LONG lValue,
    LONG Flags);
void __RPC_STUB IAMVideoProcAmp_Set_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAMVideoProcAmp_Get_Proxy(
    IAMVideoProcAmp* This,
    LONG Property,
    LONG *lValue,
    LONG *Flags);
void __RPC_STUB IAMVideoProcAmp_Get_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IAMVideoProcAmp_INTERFACE_DEFINED__ */

/*****************************************************************************
 * 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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IAsyncReaderVtbl;
interface IAsyncReader {
    CONST_VTBL IAsyncReaderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IAsyncReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAsyncReader_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAsyncReader_Release(This) (This)->lpVtbl->Release(This)
/*** IAsyncReader methods ***/
#define IAsyncReader_RequestAllocator(This,pPreferred,pProps,ppActual) (This)->lpVtbl->RequestAllocator(This,pPreferred,pProps,ppActual)
#define IAsyncReader_Request(This,pSample,dwUser) (This)->lpVtbl->Request(This,pSample,dwUser)
#define IAsyncReader_WaitForNext(This,dwTimeout,ppSample,pdwUser) (This)->lpVtbl->WaitForNext(This,dwTimeout,ppSample,pdwUser)
#define IAsyncReader_SyncReadAligned(This,pSample) (This)->lpVtbl->SyncReadAligned(This,pSample)
#define IAsyncReader_SyncRead(This,llPosition,lLength,pBuffer) (This)->lpVtbl->SyncRead(This,llPosition,lLength,pBuffer)
#define IAsyncReader_Length(This,pTotal,pAvailable) (This)->lpVtbl->Length(This,pTotal,pAvailable)
#define IAsyncReader_BeginFlush(This) (This)->lpVtbl->BeginFlush(This)
#define IAsyncReader_EndFlush(This) (This)->lpVtbl->EndFlush(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IAsyncReader_RequestAllocator_Proxy(
    IAsyncReader* This,
    IMemAllocator *pPreferred,
    ALLOCATOR_PROPERTIES *pProps,
    IMemAllocator **ppActual);
void __RPC_STUB IAsyncReader_RequestAllocator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAsyncReader_Request_Proxy(
    IAsyncReader* This,
    IMediaSample *pSample,
    DWORD_PTR dwUser);
void __RPC_STUB IAsyncReader_Request_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAsyncReader_WaitForNext_Proxy(
    IAsyncReader* This,
    DWORD dwTimeout,
    IMediaSample **ppSample,
    DWORD_PTR *pdwUser);
void __RPC_STUB IAsyncReader_WaitForNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAsyncReader_SyncReadAligned_Proxy(
    IAsyncReader* This,
    IMediaSample *pSample);
void __RPC_STUB IAsyncReader_SyncReadAligned_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAsyncReader_SyncRead_Proxy(
    IAsyncReader* This,
    LONGLONG llPosition,
    LONG lLength,
    BYTE *pBuffer);
void __RPC_STUB IAsyncReader_SyncRead_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAsyncReader_Length_Proxy(
    IAsyncReader* This,
    LONGLONG *pTotal,
    LONGLONG *pAvailable);
void __RPC_STUB IAsyncReader_Length_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAsyncReader_BeginFlush_Proxy(
    IAsyncReader* This);
void __RPC_STUB IAsyncReader_BeginFlush_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAsyncReader_EndFlush_Proxy(
    IAsyncReader* This);
void __RPC_STUB IAsyncReader_EndFlush_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IAsyncReader_INTERFACE_DEFINED__ */

/*****************************************************************************
 * 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)
interface IGraphVersion : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE QueryVersion(
        LONG *pVersion) = 0;

};
#else
typedef struct IGraphVersionVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IGraphVersionVtbl;
interface IGraphVersion {
    CONST_VTBL IGraphVersionVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IGraphVersion_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IGraphVersion_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IGraphVersion_Release(This) (This)->lpVtbl->Release(This)
/*** IGraphVersion methods ***/
#define IGraphVersion_QueryVersion(This,pVersion) (This)->lpVtbl->QueryVersion(This,pVersion)
#endif

#endif

HRESULT STDMETHODCALLTYPE IGraphVersion_QueryVersion_Proxy(
    IGraphVersion* This,
    LONG *pVersion);
void __RPC_STUB IGraphVersion_QueryVersion_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IGraphVersion_INTERFACE_DEFINED__ */

/*****************************************************************************
 * 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)
interface IResourceConsumer : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AcquireResource(
        LONG idResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReleaseResource(
        LONG idResource) = 0;

};
#else
typedef struct IResourceConsumerVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IResourceConsumerVtbl;
interface IResourceConsumer {
    CONST_VTBL IResourceConsumerVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IResourceConsumer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IResourceConsumer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IResourceConsumer_Release(This) (This)->lpVtbl->Release(This)
/*** IResourceConsumer methods ***/
#define IResourceConsumer_AcquireResource(This,idResource) (This)->lpVtbl->AcquireResource(This,idResource)
#define IResourceConsumer_ReleaseResource(This,idResource) (This)->lpVtbl->ReleaseResource(This,idResource)
#endif

#endif

HRESULT STDMETHODCALLTYPE IResourceConsumer_AcquireResource_Proxy(
    IResourceConsumer* This,
    LONG idResource);
void __RPC_STUB IResourceConsumer_AcquireResource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IResourceConsumer_ReleaseResource_Proxy(
    IResourceConsumer* This,
    LONG idResource);
void __RPC_STUB IResourceConsumer_ReleaseResource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IResourceConsumer_INTERFACE_DEFINED__ */

/*****************************************************************************
 * 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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IResourceManagerVtbl;
interface IResourceManager {
    CONST_VTBL IResourceManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IResourceManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IResourceManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IResourceManager_Release(This) (This)->lpVtbl->Release(This)
/*** IResourceManager methods ***/
#define IResourceManager_Register(This,pName,cResource,plToken) (This)->lpVtbl->Register(This,pName,cResource,plToken)
#define IResourceManager_RegisterGroup(This,pName,cResource,palTokens,plToken) (This)->lpVtbl->RegisterGroup(This,pName,cResource,palTokens,plToken)
#define IResourceManager_RequestResource(This,idResource,pFocusObject,pConsumer) (This)->lpVtbl->RequestResource(This,idResource,pFocusObject,pConsumer)
#define IResourceManager_NotifyAcquire(This,idResource,pConsumer,hr) (This)->lpVtbl->NotifyAcquire(This,idResource,pConsumer,hr)
#define IResourceManager_NotifyRelease(This,idResource,pConsumer,bStillWant) (This)->lpVtbl->NotifyRelease(This,idResource,pConsumer,bStillWant)
#define IResourceManager_CancelRequest(This,idResource,pConsumer) (This)->lpVtbl->CancelRequest(This,idResource,pConsumer)
#define IResourceManager_SetFocus(This,pFocusObject) (This)->lpVtbl->SetFocus(This,pFocusObject)
#define IResourceManager_ReleaseFocus(This,pFocusObject) (This)->lpVtbl->ReleaseFocus(This,pFocusObject)
#endif

#endif

HRESULT STDMETHODCALLTYPE IResourceManager_Register_Proxy(
    IResourceManager* This,
    LPCWSTR pName,
    LONG cResource,
    LONG *plToken);
void __RPC_STUB IResourceManager_Register_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IResourceManager_RegisterGroup_Proxy(
    IResourceManager* This,
    LPCWSTR pName,
    LONG cResource,
    LONG *palTokens,
    LONG *plToken);
void __RPC_STUB IResourceManager_RegisterGroup_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IResourceManager_RequestResource_Proxy(
    IResourceManager* This,
    LONG idResource,
    IUnknown *pFocusObject,
    IResourceConsumer *pConsumer);
void __RPC_STUB IResourceManager_RequestResource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IResourceManager_NotifyAcquire_Proxy(
    IResourceManager* This,
    LONG idResource,
    IResourceConsumer *pConsumer,
    HRESULT hr);
void __RPC_STUB IResourceManager_NotifyAcquire_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IResourceManager_NotifyRelease_Proxy(
    IResourceManager* This,
    LONG idResource,
    IResourceConsumer *pConsumer,
    BOOL bStillWant);
void __RPC_STUB IResourceManager_NotifyRelease_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IResourceManager_CancelRequest_Proxy(
    IResourceManager* This,
    LONG idResource,
    IResourceConsumer *pConsumer);
void __RPC_STUB IResourceManager_CancelRequest_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IResourceManager_SetFocus_Proxy(
    IResourceManager* This,
    IUnknown *pFocusObject);
void __RPC_STUB IResourceManager_SetFocus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IResourceManager_ReleaseFocus_Proxy(
    IResourceManager* This,
    IUnknown *pFocusObject);
void __RPC_STUB IResourceManager_ReleaseFocus_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IKsPropertySetVtbl;
interface IKsPropertySet {
    CONST_VTBL IKsPropertySetVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IKsPropertySet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IKsPropertySet_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IKsPropertySet_Release(This) (This)->lpVtbl->Release(This)
/*** IKsPropertySet methods ***/
#define IKsPropertySet_Set(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData) (This)->lpVtbl->Set(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData)
#define IKsPropertySet_Get(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData,pcbReturned) (This)->lpVtbl->Get(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData,pcbReturned)
#define IKsPropertySet_QuerySupported(This,guidPropSet,dwPropID,pTypeSupport) (This)->lpVtbl->QuerySupported(This,guidPropSet,dwPropID,pTypeSupport)
#endif

#endif

HRESULT STDMETHODCALLTYPE IKsPropertySet_Set_Proxy(
    IKsPropertySet* This,
    REFGUID guidPropSet,
    DWORD dwPropID,
    LPVOID pInstanceData,
    DWORD cbInstanceData,
    LPVOID pPropData,
    DWORD cbPropData);
void __RPC_STUB IKsPropertySet_Set_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKsPropertySet_QuerySupported_Proxy(
    IKsPropertySet* This,
    REFGUID guidPropSet,
    DWORD dwPropID,
    DWORD *pTypeSupport);
void __RPC_STUB IKsPropertySet_QuerySupported_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IKsPropertySet_INTERFACE_DEFINED__ */

#endif /* _IKsPropertySet_ */
/*****************************************************************************
 * ISeekingPassThru interface
 */
#ifndef __ISeekingPassThru_INTERFACE_DEFINED__
#define __ISeekingPassThru_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISeekingPassThru, 0x36b73883, 0xc2c8, 0x11cf, 0x8b,0x46, 0x00,0x80,0x5f,0x6c,0xef,0x60);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface ISeekingPassThru : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Init(
        BOOL bSupportRendering,
        IPin *pPin) = 0;

};
#else
typedef struct ISeekingPassThruVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISeekingPassThru* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISeekingPassThru* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISeekingPassThru* This);

    /*** ISeekingPassThru methods ***/
    HRESULT (STDMETHODCALLTYPE *Init)(
        ISeekingPassThru* This,
        BOOL bSupportRendering,
        IPin *pPin);

    END_INTERFACE
} ISeekingPassThruVtbl;
interface ISeekingPassThru {
    CONST_VTBL ISeekingPassThruVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ISeekingPassThru_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISeekingPassThru_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISeekingPassThru_Release(This) (This)->lpVtbl->Release(This)
/*** ISeekingPassThru methods ***/
#define ISeekingPassThru_Init(This,bSupportRendering,pPin) (This)->lpVtbl->Init(This,bSupportRendering,pPin)
#endif

#endif

HRESULT STDMETHODCALLTYPE ISeekingPassThru_Init_Proxy(
    ISeekingPassThru* This,
    BOOL bSupportRendering,
    IPin *pPin);
void __RPC_STUB ISeekingPassThru_Init_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISeekingPassThru_INTERFACE_DEFINED__ */

enum _AM_FILTER_MISC_FLAGS {
    AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1,
    AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2
};

/*****************************************************************************
 * IAMFilterMiscFlags interface
 */
#ifndef __IAMFilterMiscFlags_INTERFACE_DEFINED__
#define __IAMFilterMiscFlags_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAMFilterMiscFlags, 0x2dd74950, 0xa890, 0x11d1, 0xab,0xe8, 0x00,0xa0,0xc9,0x05,0xf3,0x75);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IAMFilterMiscFlags : public IUnknown
{
    virtual ULONG STDMETHODCALLTYPE GetMiscFlags(
        ) = 0;

};
#else
typedef struct IAMFilterMiscFlagsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IAMFilterMiscFlags* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IAMFilterMiscFlags* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IAMFilterMiscFlags* This);

    /*** IAMFilterMiscFlags methods ***/
    ULONG (STDMETHODCALLTYPE *GetMiscFlags)(
        IAMFilterMiscFlags* This);

    END_INTERFACE
} IAMFilterMiscFlagsVtbl;
interface IAMFilterMiscFlags {
    CONST_VTBL IAMFilterMiscFlagsVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IAMFilterMiscFlags_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAMFilterMiscFlags_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAMFilterMiscFlags_Release(This) (This)->lpVtbl->Release(This)
/*** IAMFilterMiscFlags methods ***/
#define IAMFilterMiscFlags_GetMiscFlags(This) (This)->lpVtbl->GetMiscFlags(This)
#endif

#endif

ULONG STDMETHODCALLTYPE IAMFilterMiscFlags_GetMiscFlags_Proxy(
    IAMFilterMiscFlags* This);
void __RPC_STUB IAMFilterMiscFlags_GetMiscFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IAMFilterMiscFlags_INTERFACE_DEFINED__ */

#ifndef __IPinConnection_FWD_DEFINED__
#define __IPinConnection_FWD_DEFINED__
typedef interface IPinConnection IPinConnection;
#endif

#ifndef __IPinFlowControl_FWD_DEFINED__
#define __IPinFlowControl_FWD_DEFINED__
typedef interface IPinFlowControl IPinFlowControl;
#endif

#ifndef __IGraphConfig_FWD_DEFINED__
#define __IGraphConfig_FWD_DEFINED__
typedef interface IGraphConfig IGraphConfig;
#endif

#ifndef __IGraphConfigCallback_FWD_DEFINED__
#define __IGraphConfigCallback_FWD_DEFINED__
typedef interface 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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IPinConnectionVtbl;
interface IPinConnection {
    CONST_VTBL IPinConnectionVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IPinConnection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPinConnection_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPinConnection_Release(This) (This)->lpVtbl->Release(This)
/*** IPinConnection methods ***/
#define IPinConnection_DynamicQueryAccept(This,pmt) (This)->lpVtbl->DynamicQueryAccept(This,pmt)
#define IPinConnection_NotifyEndOfStream(This,hNotifyEvent) (This)->lpVtbl->NotifyEndOfStream(This,hNotifyEvent)
#define IPinConnection_IsEndPin(This) (This)->lpVtbl->IsEndPin(This)
#define IPinConnection_DynamicDisconnect(This) (This)->lpVtbl->DynamicDisconnect(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IPinConnection_DynamicQueryAccept_Proxy(
    IPinConnection* This,
    const AM_MEDIA_TYPE *pmt);
void __RPC_STUB IPinConnection_DynamicQueryAccept_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPinConnection_NotifyEndOfStream_Proxy(
    IPinConnection* This,
    HANDLE hNotifyEvent);
void __RPC_STUB IPinConnection_NotifyEndOfStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPinConnection_IsEndPin_Proxy(
    IPinConnection* This);
void __RPC_STUB IPinConnection_IsEndPin_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPinConnection_DynamicDisconnect_Proxy(
    IPinConnection* This);
void __RPC_STUB IPinConnection_DynamicDisconnect_Stub(
    IRpcStubBuffer* This,
    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)
interface IPinFlowControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Block(
        DWORD dwBlockFlags,
        HANDLE hEvent) = 0;

};
#else
typedef struct IPinFlowControlVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IPinFlowControlVtbl;
interface IPinFlowControl {
    CONST_VTBL IPinFlowControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IPinFlowControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPinFlowControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPinFlowControl_Release(This) (This)->lpVtbl->Release(This)
/*** IPinFlowControl methods ***/
#define IPinFlowControl_Block(This,dwBlockFlags,hEvent) (This)->lpVtbl->Block(This,dwBlockFlags,hEvent)
#endif

#endif

HRESULT STDMETHODCALLTYPE IPinFlowControl_Block_Proxy(
    IPinFlowControl* This,
    DWORD dwBlockFlags,
    HANDLE hEvent);
void __RPC_STUB IPinFlowControl_Block_Stub(
    IRpcStubBuffer* This,
    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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IGraphConfigVtbl;
interface IGraphConfig {
    CONST_VTBL IGraphConfigVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IGraphConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IGraphConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IGraphConfig_Release(This) (This)->lpVtbl->Release(This)
/*** IGraphConfig methods ***/
#define IGraphConfig_Reconnect(This,pOutputPin,pInputPin,pmtFirstConnection,pUsingFilter,hAbortEvent,dwFlags) (This)->lpVtbl->Reconnect(This,pOutputPin,pInputPin,pmtFirstConnection,pUsingFilter,hAbortEvent,dwFlags)
#define IGraphConfig_Reconfigure(This,pCallback,pvContext,dwFlags,hAbortEvent) (This)->lpVtbl->Reconfigure(This,pCallback,pvContext,dwFlags,hAbortEvent)
#define IGraphConfig_AddFilterToCache(This,pFilter) (This)->lpVtbl->AddFilterToCache(This,pFilter)
#define IGraphConfig_EnumCacheFilter(This,pEnum) (This)->lpVtbl->EnumCacheFilter(This,pEnum)
#define IGraphConfig_RemoveFilterFromCache(This,pFilter) (This)->lpVtbl->RemoveFilterFromCache(This,pFilter)
#define IGraphConfig_GetStartTime(This,prtStart) (This)->lpVtbl->GetStartTime(This,prtStart)
#define IGraphConfig_PushThroughData(This,pOutputPin,pConnection,hEventAbort) (This)->lpVtbl->PushThroughData(This,pOutputPin,pConnection,hEventAbort)
#define IGraphConfig_SetFilterFlags(This,pFilter,dwFlags) (This)->lpVtbl->SetFilterFlags(This,pFilter,dwFlags)
#define IGraphConfig_GetFilterFlags(This,pFilter,pdwFlags) (This)->lpVtbl->GetFilterFlags(This,pFilter,pdwFlags)
#define IGraphConfig_RemoveFilterEx(This,pFilter,Flags) (This)->lpVtbl->RemoveFilterEx(This,pFilter,Flags)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphConfig_Reconfigure_Proxy(
    IGraphConfig* This,
    IGraphConfigCallback *pCallback,
    PVOID pvContext,
    DWORD dwFlags,
    HANDLE hAbortEvent);
void __RPC_STUB IGraphConfig_Reconfigure_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphConfig_AddFilterToCache_Proxy(
    IGraphConfig* This,
    IBaseFilter *pFilter);
void __RPC_STUB IGraphConfig_AddFilterToCache_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphConfig_EnumCacheFilter_Proxy(
    IGraphConfig* This,
    IEnumFilters **pEnum);
void __RPC_STUB IGraphConfig_EnumCacheFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphConfig_RemoveFilterFromCache_Proxy(
    IGraphConfig* This,
    IBaseFilter *pFilter);
void __RPC_STUB IGraphConfig_RemoveFilterFromCache_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphConfig_GetStartTime_Proxy(
    IGraphConfig* This,
    REFERENCE_TIME *prtStart);
void __RPC_STUB IGraphConfig_GetStartTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphConfig_PushThroughData_Proxy(
    IGraphConfig* This,
    IPin *pOutputPin,
    IPinConnection *pConnection,
    HANDLE hEventAbort);
void __RPC_STUB IGraphConfig_PushThroughData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphConfig_SetFilterFlags_Proxy(
    IGraphConfig* This,
    IBaseFilter *pFilter,
    DWORD dwFlags);
void __RPC_STUB IGraphConfig_SetFilterFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphConfig_GetFilterFlags_Proxy(
    IGraphConfig* This,
    IBaseFilter *pFilter,
    DWORD *pdwFlags);
void __RPC_STUB IGraphConfig_GetFilterFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IGraphConfig_RemoveFilterEx_Proxy(
    IGraphConfig* This,
    IBaseFilter *pFilter,
    DWORD Flags);
void __RPC_STUB IGraphConfig_RemoveFilterEx_Stub(
    IRpcStubBuffer* This,
    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)
interface IGraphConfigCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Reconfigure(
        PVOID pvContext,
        DWORD dwFlags) = 0;

};
#else
typedef struct IGraphConfigCallbackVtbl {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IGraphConfigCallbackVtbl;
interface IGraphConfigCallback {
    CONST_VTBL IGraphConfigCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IGraphConfigCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IGraphConfigCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IGraphConfigCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IGraphConfigCallback methods ***/
#define IGraphConfigCallback_Reconfigure(This,pvContext,dwFlags) (This)->lpVtbl->Reconfigure(This,pvContext,dwFlags)
#endif

#endif

HRESULT STDMETHODCALLTYPE IGraphConfigCallback_Reconfigure_Proxy(
    IGraphConfigCallback* This,
    PVOID pvContext,
    DWORD dwFlags);
void __RPC_STUB IGraphConfigCallback_Reconfigure_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IGraphConfigCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * 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)
interface 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 {
    BEGIN_INTERFACE

    /*** 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);

    END_INTERFACE
} IFilterChainVtbl;
interface IFilterChain {
    CONST_VTBL IFilterChainVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFilterChain_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFilterChain_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFilterChain_Release(This) (This)->lpVtbl->Release(This)
/*** IFilterChain methods ***/
#define IFilterChain_StartChain(This,pStartFilter,pEndFilter) (This)->lpVtbl->StartChain(This,pStartFilter,pEndFilter)
#define IFilterChain_PauseChain(This,pStartFilter,pEndFilter) (This)->lpVtbl->PauseChain(This,pStartFilter,pEndFilter)
#define IFilterChain_StopChain(This,pStartFilter,pEndFilter) (This)->lpVtbl->StopChain(This,pStartFilter,pEndFilter)
#define IFilterChain_RemoveChain(This,pStartFilter,pEndFilter) (This)->lpVtbl->RemoveChain(This,pStartFilter,pEndFilter)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFilterChain_StartChain_Proxy(
    IFilterChain* This,
    IBaseFilter *pStartFilter,
    IBaseFilter *pEndFilter);
void __RPC_STUB IFilterChain_StartChain_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterChain_PauseChain_Proxy(
    IFilterChain* This,
    IBaseFilter *pStartFilter,
    IBaseFilter *pEndFilter);
void __RPC_STUB IFilterChain_PauseChain_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterChain_StopChain_Proxy(
    IFilterChain* This,
    IBaseFilter *pStartFilter,
    IBaseFilter *pEndFilter);
void __RPC_STUB IFilterChain_StopChain_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFilterChain_RemoveChain_Proxy(
    IFilterChain* This,
    IBaseFilter *pStartFilter,
    IBaseFilter *pEndFilter);
void __RPC_STUB IFilterChain_RemoveChain_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFilterChain_INTERFACE_DEFINED__ */

#if 0
typedef DWORD IDirectDrawSurface7;
typedef DWORD IDirectDraw7;
typedef DWORD *LPBITMAPINFOHEADER;
typedef DWORD *LPDDPIXELFORMAT;
typedef struct __WIDL_axextend_generated_name_00000007 {
    DWORD dw1;
    DWORD dw2;
} DDCOLORKEY;
#endif
#include <ddraw.h>
#ifndef __IVMRSurface_FWD_DEFINED__
#define __IVMRSurface_FWD_DEFINED__
typedef interface IVMRSurface IVMRSurface;
#endif

#ifndef __IVMRSurfaceAllocator_FWD_DEFINED__
#define __IVMRSurfaceAllocator_FWD_DEFINED__
typedef interface IVMRSurfaceAllocator IVMRSurfaceAllocator;
#endif

#ifndef __IVMRSurfaceAllocatorNotify_FWD_DEFINED__
#define __IVMRSurfaceAllocatorNotify_FWD_DEFINED__
typedef interface IVMRSurfaceAllocatorNotify IVMRSurfaceAllocatorNotify;
#endif

#ifndef __IVMRImagePresenter_FWD_DEFINED__
#define __IVMRImagePresenter_FWD_DEFINED__
typedef interface IVMRImagePresenter IVMRImagePresenter;
#endif

#ifndef __IVMRImagePresenterNotify_FWD_DEFINED__
#define __IVMRImagePresenterNotify_FWD_DEFINED__
typedef interface IVMRImagePresenterNotify IVMRImagePresenterNotify;
#endif

#ifndef __IVMRWindowlessControl_FWD_DEFINED__
#define __IVMRWindowlessControl_FWD_DEFINED__
typedef interface IVMRWindowlessControl IVMRWindowlessControl;
#endif

#ifndef __IVMRMixerControl_FWD_DEFINED__
#define __IVMRMixerControl_FWD_DEFINED__
typedef interface IVMRMixerControl IVMRMixerControl;
#endif

#ifndef __IVMRMixerBitmap_FWD_DEFINED__
#define __IVMRMixerBitmap_FWD_DEFINED__
typedef interface IVMRMixerBitmap IVMRMixerBitmap;
#endif

#ifndef __IVMRFilterConfig_FWD_DEFINED__
#define __IVMRFilterConfig_FWD_DEFINED__
typedef interface IVMRFilterConfig IVMRFilterConfig;
#endif

#ifndef __IVMRAspectRatioControl_FWD_DEFINED__
#define __IVMRAspectRatioControl_FWD_DEFINED__
typedef interface IVMRAspectRatioControl IVMRAspectRatioControl;
#endif

#ifndef __IVMRDeinterlaceControl_FWD_DEFINED__
#define __IVMRDeinterlaceControl_FWD_DEFINED__
typedef interface IVMRDeinterlaceControl IVMRDeinterlaceControl;
#endif

#ifndef __IVMRMonitorConfig_FWD_DEFINED__
#define __IVMRMonitorConfig_FWD_DEFINED__
typedef interface IVMRMonitorConfig IVMRMonitorConfig;
#endif

#ifndef __IVMRImageCompositor_FWD_DEFINED__
#define __IVMRImageCompositor_FWD_DEFINED__
typedef interface IVMRImageCompositor IVMRImageCompositor;
#endif

#ifndef __IVMRVideoStreamControl_FWD_DEFINED__
#define __IVMRVideoStreamControl_FWD_DEFINED__
typedef interface IVMRVideoStreamControl IVMRVideoStreamControl;
#endif

typedef enum _VMRPresentationFlags {
    VMRSample_SyncPoint = 0x1,
    VMRSample_Preroll = 0x2,
    VMRSample_Discontinuity = 0x4,
    VMRSample_TimeValid = 0x8,
    VMRSample_SrcDstRectsValid = 0x10
} VMRPresentationFlags;
typedef struct tagVMRPRESENTATIONINFO {
    DWORD dwFlags;
    IDirectDrawSurface7 *lpSurf;
    REFERENCE_TIME rtStart;
    REFERENCE_TIME rtEnd;
    SIZE szAspectRatio;
    RECT rcSrc;
    RECT rcDst;
    DWORD dwTypeSpecificFlags;
    DWORD dwInterlaceFlags;
} VMRPRESENTATIONINFO;
/*****************************************************************************
 * IVMRImagePresenter interface
 */
#ifndef __IVMRImagePresenter_INTERFACE_DEFINED__
#define __IVMRImagePresenter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRImagePresenter, 0xce704fe7, 0xe71e, 0x41fb, 0xba,0xa2, 0xc4,0x40,0x3e,0x11,0x82,0xf5);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRImagePresenter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE StartPresenting(
        DWORD_PTR id) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopPresenting(
        DWORD_PTR id) = 0;

    virtual HRESULT STDMETHODCALLTYPE PresentImage(
        DWORD_PTR id,
        VMRPRESENTATIONINFO *info) = 0;

};
#else
typedef struct IVMRImagePresenterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRImagePresenter* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRImagePresenter* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRImagePresenter* This);

    /*** IVMRImagePresenter methods ***/
    HRESULT (STDMETHODCALLTYPE *StartPresenting)(
        IVMRImagePresenter* This,
        DWORD_PTR id);

    HRESULT (STDMETHODCALLTYPE *StopPresenting)(
        IVMRImagePresenter* This,
        DWORD_PTR id);

    HRESULT (STDMETHODCALLTYPE *PresentImage)(
        IVMRImagePresenter* This,
        DWORD_PTR id,
        VMRPRESENTATIONINFO *info);

    END_INTERFACE
} IVMRImagePresenterVtbl;
interface IVMRImagePresenter {
    CONST_VTBL IVMRImagePresenterVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRImagePresenter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRImagePresenter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRImagePresenter_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRImagePresenter methods ***/
#define IVMRImagePresenter_StartPresenting(This,id) (This)->lpVtbl->StartPresenting(This,id)
#define IVMRImagePresenter_StopPresenting(This,id) (This)->lpVtbl->StopPresenting(This,id)
#define IVMRImagePresenter_PresentImage(This,id,info) (This)->lpVtbl->PresentImage(This,id,info)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRImagePresenter_StartPresenting_Proxy(
    IVMRImagePresenter* This,
    DWORD_PTR id);
void __RPC_STUB IVMRImagePresenter_StartPresenting_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRImagePresenter_StopPresenting_Proxy(
    IVMRImagePresenter* This,
    DWORD_PTR id);
void __RPC_STUB IVMRImagePresenter_StopPresenting_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRImagePresenter_PresentImage_Proxy(
    IVMRImagePresenter* This,
    DWORD_PTR id,
    VMRPRESENTATIONINFO *info);
void __RPC_STUB IVMRImagePresenter_PresentImage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRImagePresenter_INTERFACE_DEFINED__ */

typedef enum _VMRSurfaceAllocationFlags {
    AMAP_PIXELFORMAT_VALID = 0x1,
    AMAP_3D_TARGET = 0x2,
    AMAP_ALLOW_SYSMEM = 0x4,
    AMAP_FORCE_SYSMEM = 0x8,
    AMAP_DIRECTED_FLIP = 0x10,
    AMAP_DXVA_TARGET = 0x20
} VMRSurfaceAllocationFlags;
typedef struct tagVMRALLOCATIONINFO {
    DWORD dwFlags;
    LPBITMAPINFOHEADER lpHdr;
    LPDDPIXELFORMAT lpPixFmt;
    SIZE szAspectRatio;
    DWORD dwMinBuffers;
    DWORD dwMaxBuffers;
    DWORD dwInterlaceFlags;
    SIZE szNativeSize;
} VMRALLOCATIONINFO;
/*****************************************************************************
 * IVMRSurfaceAllocator interface
 */
#ifndef __IVMRSurfaceAllocator_INTERFACE_DEFINED__
#define __IVMRSurfaceAllocator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRSurfaceAllocator, 0x31ce832e, 0x4484, 0x458b, 0x8c,0xca, 0xf4,0xd7,0xe3,0xdb,0x0b,0x52);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRSurfaceAllocator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AllocateSurface(
        DWORD_PTR id,
        VMRALLOCATIONINFO *allocinfo,
        DWORD *buffers,
        IDirectDrawSurface7 **surface) = 0;

    virtual HRESULT STDMETHODCALLTYPE FreeSurface(
        DWORD_PTR id) = 0;

    virtual HRESULT STDMETHODCALLTYPE PrepareSurface(
        DWORD_PTR id,
        IDirectDrawSurface7 *surface,
        DWORD dwSurfaceFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE AdviseNotify(
        IVMRSurfaceAllocatorNotify *notify) = 0;

};
#else
typedef struct IVMRSurfaceAllocatorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRSurfaceAllocator* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRSurfaceAllocator* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRSurfaceAllocator* This);

    /*** IVMRSurfaceAllocator methods ***/
    HRESULT (STDMETHODCALLTYPE *AllocateSurface)(
        IVMRSurfaceAllocator* This,
        DWORD_PTR id,
        VMRALLOCATIONINFO *allocinfo,
        DWORD *buffers,
        IDirectDrawSurface7 **surface);

    HRESULT (STDMETHODCALLTYPE *FreeSurface)(
        IVMRSurfaceAllocator* This,
        DWORD_PTR id);

    HRESULT (STDMETHODCALLTYPE *PrepareSurface)(
        IVMRSurfaceAllocator* This,
        DWORD_PTR id,
        IDirectDrawSurface7 *surface,
        DWORD dwSurfaceFlags);

    HRESULT (STDMETHODCALLTYPE *AdviseNotify)(
        IVMRSurfaceAllocator* This,
        IVMRSurfaceAllocatorNotify *notify);

    END_INTERFACE
} IVMRSurfaceAllocatorVtbl;
interface IVMRSurfaceAllocator {
    CONST_VTBL IVMRSurfaceAllocatorVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRSurfaceAllocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRSurfaceAllocator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRSurfaceAllocator_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRSurfaceAllocator methods ***/
#define IVMRSurfaceAllocator_AllocateSurface(This,id,allocinfo,buffers,surface) (This)->lpVtbl->AllocateSurface(This,id,allocinfo,buffers,surface)
#define IVMRSurfaceAllocator_FreeSurface(This,id) (This)->lpVtbl->FreeSurface(This,id)
#define IVMRSurfaceAllocator_PrepareSurface(This,id,surface,dwSurfaceFlags) (This)->lpVtbl->PrepareSurface(This,id,surface,dwSurfaceFlags)
#define IVMRSurfaceAllocator_AdviseNotify(This,notify) (This)->lpVtbl->AdviseNotify(This,notify)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_AllocateSurface_Proxy(
    IVMRSurfaceAllocator* This,
    DWORD_PTR id,
    VMRALLOCATIONINFO *allocinfo,
    DWORD *buffers,
    IDirectDrawSurface7 **surface);
void __RPC_STUB IVMRSurfaceAllocator_AllocateSurface_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_FreeSurface_Proxy(
    IVMRSurfaceAllocator* This,
    DWORD_PTR id);
void __RPC_STUB IVMRSurfaceAllocator_FreeSurface_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_PrepareSurface_Proxy(
    IVMRSurfaceAllocator* This,
    DWORD_PTR id,
    IDirectDrawSurface7 *surface,
    DWORD dwSurfaceFlags);
void __RPC_STUB IVMRSurfaceAllocator_PrepareSurface_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_AdviseNotify_Proxy(
    IVMRSurfaceAllocator* This,
    IVMRSurfaceAllocatorNotify *notify);
void __RPC_STUB IVMRSurfaceAllocator_AdviseNotify_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRSurfaceAllocator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVMRSurfaceAllocatorNotify interface
 */
#ifndef __IVMRSurfaceAllocatorNotify_INTERFACE_DEFINED__
#define __IVMRSurfaceAllocatorNotify_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRSurfaceAllocatorNotify, 0xaada05a8, 0x5a4e, 0x4729, 0xaf,0x0b, 0xce,0xa2,0x7a,0xed,0x51,0xe2);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRSurfaceAllocatorNotify : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AdviseSurfaceAllocator(
        DWORD_PTR id,
        IVMRSurfaceAllocator *allocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDDrawDevice(
        IDirectDraw7 *device,
        HMONITOR monitor) = 0;

    virtual HRESULT STDMETHODCALLTYPE ChangeDDrawDevice(
        IDirectDraw7 *device,
        HMONITOR monitor) = 0;

    virtual HRESULT STDMETHODCALLTYPE RestoreDDrawSurfaces(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE NotifyEvent(
        LONG EventCode,
        LONG_PTR p1,
        LONG_PTR p2) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBorderColor(
        COLORREF border) = 0;

};
#else
typedef struct IVMRSurfaceAllocatorNotifyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRSurfaceAllocatorNotify* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRSurfaceAllocatorNotify* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRSurfaceAllocatorNotify* This);

    /*** IVMRSurfaceAllocatorNotify methods ***/
    HRESULT (STDMETHODCALLTYPE *AdviseSurfaceAllocator)(
        IVMRSurfaceAllocatorNotify* This,
        DWORD_PTR id,
        IVMRSurfaceAllocator *allocator);

    HRESULT (STDMETHODCALLTYPE *SetDDrawDevice)(
        IVMRSurfaceAllocatorNotify* This,
        IDirectDraw7 *device,
        HMONITOR monitor);

    HRESULT (STDMETHODCALLTYPE *ChangeDDrawDevice)(
        IVMRSurfaceAllocatorNotify* This,
        IDirectDraw7 *device,
        HMONITOR monitor);

    HRESULT (STDMETHODCALLTYPE *RestoreDDrawSurfaces)(
        IVMRSurfaceAllocatorNotify* This);

    HRESULT (STDMETHODCALLTYPE *NotifyEvent)(
        IVMRSurfaceAllocatorNotify* This,
        LONG EventCode,
        LONG_PTR p1,
        LONG_PTR p2);

    HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
        IVMRSurfaceAllocatorNotify* This,
        COLORREF border);

    END_INTERFACE
} IVMRSurfaceAllocatorNotifyVtbl;
interface IVMRSurfaceAllocatorNotify {
    CONST_VTBL IVMRSurfaceAllocatorNotifyVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRSurfaceAllocatorNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRSurfaceAllocatorNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRSurfaceAllocatorNotify_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRSurfaceAllocatorNotify methods ***/
#define IVMRSurfaceAllocatorNotify_AdviseSurfaceAllocator(This,id,allocator) (This)->lpVtbl->AdviseSurfaceAllocator(This,id,allocator)
#define IVMRSurfaceAllocatorNotify_SetDDrawDevice(This,device,monitor) (This)->lpVtbl->SetDDrawDevice(This,device,monitor)
#define IVMRSurfaceAllocatorNotify_ChangeDDrawDevice(This,device,monitor) (This)->lpVtbl->ChangeDDrawDevice(This,device,monitor)
#define IVMRSurfaceAllocatorNotify_RestoreDDrawSurfaces(This) (This)->lpVtbl->RestoreDDrawSurfaces(This)
#define IVMRSurfaceAllocatorNotify_NotifyEvent(This,EventCode,p1,p2) (This)->lpVtbl->NotifyEvent(This,EventCode,p1,p2)
#define IVMRSurfaceAllocatorNotify_SetBorderColor(This,border) (This)->lpVtbl->SetBorderColor(This,border)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_AdviseSurfaceAllocator_Proxy(
    IVMRSurfaceAllocatorNotify* This,
    DWORD_PTR id,
    IVMRSurfaceAllocator *allocator);
void __RPC_STUB IVMRSurfaceAllocatorNotify_AdviseSurfaceAllocator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_SetDDrawDevice_Proxy(
    IVMRSurfaceAllocatorNotify* This,
    IDirectDraw7 *device,
    HMONITOR monitor);
void __RPC_STUB IVMRSurfaceAllocatorNotify_SetDDrawDevice_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_ChangeDDrawDevice_Proxy(
    IVMRSurfaceAllocatorNotify* This,
    IDirectDraw7 *device,
    HMONITOR monitor);
void __RPC_STUB IVMRSurfaceAllocatorNotify_ChangeDDrawDevice_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_RestoreDDrawSurfaces_Proxy(
    IVMRSurfaceAllocatorNotify* This);
void __RPC_STUB IVMRSurfaceAllocatorNotify_RestoreDDrawSurfaces_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_NotifyEvent_Proxy(
    IVMRSurfaceAllocatorNotify* This,
    LONG EventCode,
    LONG_PTR p1,
    LONG_PTR p2);
void __RPC_STUB IVMRSurfaceAllocatorNotify_NotifyEvent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_SetBorderColor_Proxy(
    IVMRSurfaceAllocatorNotify* This,
    COLORREF border);
void __RPC_STUB IVMRSurfaceAllocatorNotify_SetBorderColor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRSurfaceAllocatorNotify_INTERFACE_DEFINED__ */

typedef enum _VMR_ASPECT_RATIO_MODE {
    VMR_ARMODE_NONE = 0,
    VMR_ARMODE_LETTER_BOX = 1
} VMR_ASPECT_RATIO_MODE;
/*****************************************************************************
 * IVMRWindowlessControl interface
 */
#ifndef __IVMRWindowlessControl_INTERFACE_DEFINED__
#define __IVMRWindowlessControl_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRWindowlessControl, 0x0eb1088c, 0x4dcd, 0x46f0, 0x87,0x8f, 0x39,0xda,0xe8,0x6a,0x51,0xb7);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRWindowlessControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize(
        LONG *width,
        LONG *height,
        LONG *ar_width,
        LONG *ar_height) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMinIdealVideoSize(
        LONG *width,
        LONG *height) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMaxIdealVideoSize(
        LONG *width,
        LONG *height) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoPosition(
        const RECT *src_rect,
        const RECT *dst_rect) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVideoPosition(
        RECT *src_rect,
        RECT *dst_rect) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode(
        DWORD *mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode(
        DWORD mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoClippingWindow(
        HWND hwnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE RepaintVideo(
        HWND hwnd,
        HDC hdc) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayModeChanged(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentImage(
        BYTE **data) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBorderColor(
        COLORREF border) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBorderColor(
        COLORREF *border) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetColorKey(
        COLORREF key) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColorKey(
        COLORREF *key) = 0;

};
#else
typedef struct IVMRWindowlessControlVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRWindowlessControl* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRWindowlessControl* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRWindowlessControl* This);

    /*** IVMRWindowlessControl methods ***/
    HRESULT (STDMETHODCALLTYPE *GetNativeVideoSize)(
        IVMRWindowlessControl* This,
        LONG *width,
        LONG *height,
        LONG *ar_width,
        LONG *ar_height);

    HRESULT (STDMETHODCALLTYPE *GetMinIdealVideoSize)(
        IVMRWindowlessControl* This,
        LONG *width,
        LONG *height);

    HRESULT (STDMETHODCALLTYPE *GetMaxIdealVideoSize)(
        IVMRWindowlessControl* This,
        LONG *width,
        LONG *height);

    HRESULT (STDMETHODCALLTYPE *SetVideoPosition)(
        IVMRWindowlessControl* This,
        const RECT *src_rect,
        const RECT *dst_rect);

    HRESULT (STDMETHODCALLTYPE *GetVideoPosition)(
        IVMRWindowlessControl* This,
        RECT *src_rect,
        RECT *dst_rect);

    HRESULT (STDMETHODCALLTYPE *GetAspectRatioMode)(
        IVMRWindowlessControl* This,
        DWORD *mode);

    HRESULT (STDMETHODCALLTYPE *SetAspectRatioMode)(
        IVMRWindowlessControl* This,
        DWORD mode);

    HRESULT (STDMETHODCALLTYPE *SetVideoClippingWindow)(
        IVMRWindowlessControl* This,
        HWND hwnd);

    HRESULT (STDMETHODCALLTYPE *RepaintVideo)(
        IVMRWindowlessControl* This,
        HWND hwnd,
        HDC hdc);

    HRESULT (STDMETHODCALLTYPE *DisplayModeChanged)(
        IVMRWindowlessControl* This);

    HRESULT (STDMETHODCALLTYPE *GetCurrentImage)(
        IVMRWindowlessControl* This,
        BYTE **data);

    HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
        IVMRWindowlessControl* This,
        COLORREF border);

    HRESULT (STDMETHODCALLTYPE *GetBorderColor)(
        IVMRWindowlessControl* This,
        COLORREF *border);

    HRESULT (STDMETHODCALLTYPE *SetColorKey)(
        IVMRWindowlessControl* This,
        COLORREF key);

    HRESULT (STDMETHODCALLTYPE *GetColorKey)(
        IVMRWindowlessControl* This,
        COLORREF *key);

    END_INTERFACE
} IVMRWindowlessControlVtbl;
interface IVMRWindowlessControl {
    CONST_VTBL IVMRWindowlessControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRWindowlessControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRWindowlessControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRWindowlessControl_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRWindowlessControl methods ***/
#define IVMRWindowlessControl_GetNativeVideoSize(This,width,height,ar_width,ar_height) (This)->lpVtbl->GetNativeVideoSize(This,width,height,ar_width,ar_height)
#define IVMRWindowlessControl_GetMinIdealVideoSize(This,width,height) (This)->lpVtbl->GetMinIdealVideoSize(This,width,height)
#define IVMRWindowlessControl_GetMaxIdealVideoSize(This,width,height) (This)->lpVtbl->GetMaxIdealVideoSize(This,width,height)
#define IVMRWindowlessControl_SetVideoPosition(This,src_rect,dst_rect) (This)->lpVtbl->SetVideoPosition(This,src_rect,dst_rect)
#define IVMRWindowlessControl_GetVideoPosition(This,src_rect,dst_rect) (This)->lpVtbl->GetVideoPosition(This,src_rect,dst_rect)
#define IVMRWindowlessControl_GetAspectRatioMode(This,mode) (This)->lpVtbl->GetAspectRatioMode(This,mode)
#define IVMRWindowlessControl_SetAspectRatioMode(This,mode) (This)->lpVtbl->SetAspectRatioMode(This,mode)
#define IVMRWindowlessControl_SetVideoClippingWindow(This,hwnd) (This)->lpVtbl->SetVideoClippingWindow(This,hwnd)
#define IVMRWindowlessControl_RepaintVideo(This,hwnd,hdc) (This)->lpVtbl->RepaintVideo(This,hwnd,hdc)
#define IVMRWindowlessControl_DisplayModeChanged(This) (This)->lpVtbl->DisplayModeChanged(This)
#define IVMRWindowlessControl_GetCurrentImage(This,data) (This)->lpVtbl->GetCurrentImage(This,data)
#define IVMRWindowlessControl_SetBorderColor(This,border) (This)->lpVtbl->SetBorderColor(This,border)
#define IVMRWindowlessControl_GetBorderColor(This,border) (This)->lpVtbl->GetBorderColor(This,border)
#define IVMRWindowlessControl_SetColorKey(This,key) (This)->lpVtbl->SetColorKey(This,key)
#define IVMRWindowlessControl_GetColorKey(This,key) (This)->lpVtbl->GetColorKey(This,key)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetNativeVideoSize_Proxy(
    IVMRWindowlessControl* This,
    LONG *width,
    LONG *height,
    LONG *ar_width,
    LONG *ar_height);
void __RPC_STUB IVMRWindowlessControl_GetNativeVideoSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetMinIdealVideoSize_Proxy(
    IVMRWindowlessControl* This,
    LONG *width,
    LONG *height);
void __RPC_STUB IVMRWindowlessControl_GetMinIdealVideoSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetMaxIdealVideoSize_Proxy(
    IVMRWindowlessControl* This,
    LONG *width,
    LONG *height);
void __RPC_STUB IVMRWindowlessControl_GetMaxIdealVideoSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetVideoPosition_Proxy(
    IVMRWindowlessControl* This,
    const RECT *src_rect,
    const RECT *dst_rect);
void __RPC_STUB IVMRWindowlessControl_SetVideoPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetVideoPosition_Proxy(
    IVMRWindowlessControl* This,
    RECT *src_rect,
    RECT *dst_rect);
void __RPC_STUB IVMRWindowlessControl_GetVideoPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetAspectRatioMode_Proxy(
    IVMRWindowlessControl* This,
    DWORD *mode);
void __RPC_STUB IVMRWindowlessControl_GetAspectRatioMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetAspectRatioMode_Proxy(
    IVMRWindowlessControl* This,
    DWORD mode);
void __RPC_STUB IVMRWindowlessControl_SetAspectRatioMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetVideoClippingWindow_Proxy(
    IVMRWindowlessControl* This,
    HWND hwnd);
void __RPC_STUB IVMRWindowlessControl_SetVideoClippingWindow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_RepaintVideo_Proxy(
    IVMRWindowlessControl* This,
    HWND hwnd,
    HDC hdc);
void __RPC_STUB IVMRWindowlessControl_RepaintVideo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_DisplayModeChanged_Proxy(
    IVMRWindowlessControl* This);
void __RPC_STUB IVMRWindowlessControl_DisplayModeChanged_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetCurrentImage_Proxy(
    IVMRWindowlessControl* This,
    BYTE **data);
void __RPC_STUB IVMRWindowlessControl_GetCurrentImage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetBorderColor_Proxy(
    IVMRWindowlessControl* This,
    COLORREF border);
void __RPC_STUB IVMRWindowlessControl_SetBorderColor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetBorderColor_Proxy(
    IVMRWindowlessControl* This,
    COLORREF *border);
void __RPC_STUB IVMRWindowlessControl_GetBorderColor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetColorKey_Proxy(
    IVMRWindowlessControl* This,
    COLORREF key);
void __RPC_STUB IVMRWindowlessControl_SetColorKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetColorKey_Proxy(
    IVMRWindowlessControl* This,
    COLORREF *key);
void __RPC_STUB IVMRWindowlessControl_GetColorKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRWindowlessControl_INTERFACE_DEFINED__ */

typedef enum _VMRMixerPrefs {
    MixerPref_NoDecimation = 0x1,
    MixerPref_DecimateOutput = 0x2,
    MixerPref_ARAdjustXorY = 0x4,
    MixerPref_DecimationReserved = 0x8,
    MixerPref_DecimateMask = 0xf,
    MixerPref_BiLinearFiltering = 0x10,
    MixerPref_PointFiltering = 0x20,
    MixerPref_FinteringMask = 0xf0,
    MixerPref_RenderTargetRGB = 0x100,
    MixerPref_RenderTargetYUV = 0x1000,
    MixerPref_RenderTargetYUV420 = 0x200,
    MixerPref_RenderTargetYUV422 = 0x400,
    MixerPref_RenderTargetYUV444 = 0x800,
    MixerPref_RenderTargetReserved = 0xe000,
    MixerPref_RenderTargetMask = 0xff00,
    MixerPref_DynamicSwitchToBOB = 0x10000,
    MixerPref_DynamicDecimateBy2 = 0x20000,
    MixerPref_DynamicReserved = 0xc0000,
    MixerPref_DynamicMask = 0xf0000
} VMRMixerPrefs;
typedef struct _NORMALIZEDRECT {
    FLOAT left;
    FLOAT top;
    FLOAT right;
    FLOAT bottom;
} NORMALIZEDRECT;
/*****************************************************************************
 * IVMRMixerControl interface
 */
#ifndef __IVMRMixerControl_INTERFACE_DEFINED__
#define __IVMRMixerControl_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRMixerControl, 0x1c1a17b0, 0xbed0, 0x415d, 0x97,0x4b, 0xdc,0x66,0x96,0x13,0x15,0x99);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRMixerControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetAlpha(
        DWORD id,
        FLOAT alpha) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAlpha(
        DWORD id,
        FLOAT *alpha) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetZOrder(
        DWORD id,
        DWORD z) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetZOrder(
        DWORD id,
        DWORD *z) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOutputRect(
        DWORD id,
        const NORMALIZEDRECT *rect) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBackgroundClr(
        COLORREF background) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBackgroundClr(
        COLORREF *background) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMixingPrefs(
        DWORD prefs) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMixingPrefs(
        DWORD *prefs) = 0;

};
#else
typedef struct IVMRMixerControlVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRMixerControl* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRMixerControl* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRMixerControl* This);

    /*** IVMRMixerControl methods ***/
    HRESULT (STDMETHODCALLTYPE *SetAlpha)(
        IVMRMixerControl* This,
        DWORD id,
        FLOAT alpha);

    HRESULT (STDMETHODCALLTYPE *GetAlpha)(
        IVMRMixerControl* This,
        DWORD id,
        FLOAT *alpha);

    HRESULT (STDMETHODCALLTYPE *SetZOrder)(
        IVMRMixerControl* This,
        DWORD id,
        DWORD z);

    HRESULT (STDMETHODCALLTYPE *GetZOrder)(
        IVMRMixerControl* This,
        DWORD id,
        DWORD *z);

    HRESULT (STDMETHODCALLTYPE *SetOutputRect)(
        IVMRMixerControl* This,
        DWORD id,
        const NORMALIZEDRECT *rect);

    HRESULT (STDMETHODCALLTYPE *SetBackgroundClr)(
        IVMRMixerControl* This,
        COLORREF background);

    HRESULT (STDMETHODCALLTYPE *GetBackgroundClr)(
        IVMRMixerControl* This,
        COLORREF *background);

    HRESULT (STDMETHODCALLTYPE *SetMixingPrefs)(
        IVMRMixerControl* This,
        DWORD prefs);

    HRESULT (STDMETHODCALLTYPE *GetMixingPrefs)(
        IVMRMixerControl* This,
        DWORD *prefs);

    END_INTERFACE
} IVMRMixerControlVtbl;
interface IVMRMixerControl {
    CONST_VTBL IVMRMixerControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRMixerControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRMixerControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRMixerControl_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRMixerControl methods ***/
#define IVMRMixerControl_SetAlpha(This,id,alpha) (This)->lpVtbl->SetAlpha(This,id,alpha)
#define IVMRMixerControl_GetAlpha(This,id,alpha) (This)->lpVtbl->GetAlpha(This,id,alpha)
#define IVMRMixerControl_SetZOrder(This,id,z) (This)->lpVtbl->SetZOrder(This,id,z)
#define IVMRMixerControl_GetZOrder(This,id,z) (This)->lpVtbl->GetZOrder(This,id,z)
#define IVMRMixerControl_SetOutputRect(This,id,rect) (This)->lpVtbl->SetOutputRect(This,id,rect)
#define IVMRMixerControl_SetBackgroundClr(This,background) (This)->lpVtbl->SetBackgroundClr(This,background)
#define IVMRMixerControl_GetBackgroundClr(This,background) (This)->lpVtbl->GetBackgroundClr(This,background)
#define IVMRMixerControl_SetMixingPrefs(This,prefs) (This)->lpVtbl->SetMixingPrefs(This,prefs)
#define IVMRMixerControl_GetMixingPrefs(This,prefs) (This)->lpVtbl->GetMixingPrefs(This,prefs)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetAlpha_Proxy(
    IVMRMixerControl* This,
    DWORD id,
    FLOAT alpha);
void __RPC_STUB IVMRMixerControl_SetAlpha_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetAlpha_Proxy(
    IVMRMixerControl* This,
    DWORD id,
    FLOAT *alpha);
void __RPC_STUB IVMRMixerControl_GetAlpha_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetZOrder_Proxy(
    IVMRMixerControl* This,
    DWORD id,
    DWORD z);
void __RPC_STUB IVMRMixerControl_SetZOrder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetZOrder_Proxy(
    IVMRMixerControl* This,
    DWORD id,
    DWORD *z);
void __RPC_STUB IVMRMixerControl_GetZOrder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetOutputRect_Proxy(
    IVMRMixerControl* This,
    DWORD id,
    const NORMALIZEDRECT *rect);
void __RPC_STUB IVMRMixerControl_SetOutputRect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetBackgroundClr_Proxy(
    IVMRMixerControl* This,
    COLORREF background);
void __RPC_STUB IVMRMixerControl_SetBackgroundClr_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetBackgroundClr_Proxy(
    IVMRMixerControl* This,
    COLORREF *background);
void __RPC_STUB IVMRMixerControl_GetBackgroundClr_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetMixingPrefs_Proxy(
    IVMRMixerControl* This,
    DWORD prefs);
void __RPC_STUB IVMRMixerControl_SetMixingPrefs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetMixingPrefs_Proxy(
    IVMRMixerControl* This,
    DWORD *prefs);
void __RPC_STUB IVMRMixerControl_GetMixingPrefs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRMixerControl_INTERFACE_DEFINED__ */

typedef struct tagVMRGUID {
    struct _GUID *pGUID;
    struct _GUID GUID;
} VMRGUID;
typedef struct tagVMRMONITORINFO {
    VMRGUID guid;
    RECT rcMonitor;
    HMONITOR hMon;
    DWORD dwFlags;
    WCHAR szDevice[32];
    WCHAR szDescription[256];
    LARGE_INTEGER liDriverVersion;
    DWORD dwVendorId;
    DWORD dwDeviceId;
    DWORD dwSubSysId;
    DWORD dwRevision;
} VMRMONITORINFO;
/*****************************************************************************
 * IVMRMonitorConfig interface
 */
#ifndef __IVMRMonitorConfig_INTERFACE_DEFINED__
#define __IVMRMonitorConfig_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRMonitorConfig, 0x9cf0b1b6, 0xfbaa, 0x4b7f, 0x88,0xcf, 0xcf,0x1f,0x13,0x0a,0x0d,0xce);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRMonitorConfig : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetMonitor(
        const VMRGUID *vmrguid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMonitor(
        VMRGUID *vmrguid) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDefaultMonitor(
        const VMRGUID *vmrguid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultMonitor(
        VMRGUID *vmrguid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableMonitors(
        VMRMONITORINFO *info,
        DWORD array_size,
        DWORD *retrieved) = 0;

};
#else
typedef struct IVMRMonitorConfigVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRMonitorConfig* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRMonitorConfig* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRMonitorConfig* This);

    /*** IVMRMonitorConfig methods ***/
    HRESULT (STDMETHODCALLTYPE *SetMonitor)(
        IVMRMonitorConfig* This,
        const VMRGUID *vmrguid);

    HRESULT (STDMETHODCALLTYPE *GetMonitor)(
        IVMRMonitorConfig* This,
        VMRGUID *vmrguid);

    HRESULT (STDMETHODCALLTYPE *SetDefaultMonitor)(
        IVMRMonitorConfig* This,
        const VMRGUID *vmrguid);

    HRESULT (STDMETHODCALLTYPE *GetDefaultMonitor)(
        IVMRMonitorConfig* This,
        VMRGUID *vmrguid);

    HRESULT (STDMETHODCALLTYPE *GetAvailableMonitors)(
        IVMRMonitorConfig* This,
        VMRMONITORINFO *info,
        DWORD array_size,
        DWORD *retrieved);

    END_INTERFACE
} IVMRMonitorConfigVtbl;
interface IVMRMonitorConfig {
    CONST_VTBL IVMRMonitorConfigVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRMonitorConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRMonitorConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRMonitorConfig_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRMonitorConfig methods ***/
#define IVMRMonitorConfig_SetMonitor(This,vmrguid) (This)->lpVtbl->SetMonitor(This,vmrguid)
#define IVMRMonitorConfig_GetMonitor(This,vmrguid) (This)->lpVtbl->GetMonitor(This,vmrguid)
#define IVMRMonitorConfig_SetDefaultMonitor(This,vmrguid) (This)->lpVtbl->SetDefaultMonitor(This,vmrguid)
#define IVMRMonitorConfig_GetDefaultMonitor(This,vmrguid) (This)->lpVtbl->GetDefaultMonitor(This,vmrguid)
#define IVMRMonitorConfig_GetAvailableMonitors(This,info,array_size,retrieved) (This)->lpVtbl->GetAvailableMonitors(This,info,array_size,retrieved)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_SetMonitor_Proxy(
    IVMRMonitorConfig* This,
    const VMRGUID *vmrguid);
void __RPC_STUB IVMRMonitorConfig_SetMonitor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_GetMonitor_Proxy(
    IVMRMonitorConfig* This,
    VMRGUID *vmrguid);
void __RPC_STUB IVMRMonitorConfig_GetMonitor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_SetDefaultMonitor_Proxy(
    IVMRMonitorConfig* This,
    const VMRGUID *vmrguid);
void __RPC_STUB IVMRMonitorConfig_SetDefaultMonitor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_GetDefaultMonitor_Proxy(
    IVMRMonitorConfig* This,
    VMRGUID *vmrguid);
void __RPC_STUB IVMRMonitorConfig_GetDefaultMonitor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_GetAvailableMonitors_Proxy(
    IVMRMonitorConfig* This,
    VMRMONITORINFO *info,
    DWORD array_size,
    DWORD *retrieved);
void __RPC_STUB IVMRMonitorConfig_GetAvailableMonitors_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRMonitorConfig_INTERFACE_DEFINED__ */

typedef enum _VMRRenderPrefs {
    RenderPrefs_RestrictToInitialMonitor = 0x0,
    RenderPrefs_ForceOffScreen = 0x1,
    RenderPrefs_ForceOverlays = 0x2,
    RenderPrefs_AllowOverlays = 0x0,
    RenderPrefs_AllowOffscreen = 0x0,
    RenderPrefs_DoNotRenderColorKeyAndBorder = 0x8,
    RenderPrefs_Reserved = 0x10,
    RenderPrefs_PreferAGPMemWhenMixing = 0x20,
    RenderPrefs_Mask = 0x3f
} VMRRenderPrefs;
typedef enum _VMRMode {
    VMRMode_Windowed = 0x1,
    VMRMode_Windowless = 0x2,
    VMRMode_Renderless = 0x4,
    VMRMode_Mask = 0x7
} VMRMode;
enum {
    MAX_NUMBER_OF_STREAMS = 16
};

/*****************************************************************************
 * IVMRFilterConfig interface
 */
#ifndef __IVMRFilterConfig_INTERFACE_DEFINED__
#define __IVMRFilterConfig_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRFilterConfig, 0x9e5530c5, 0x7034, 0x48b4, 0xbb,0x46, 0x0b,0x8a,0x6e,0xfc,0x8e,0x36);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRFilterConfig : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetImageCompositor(
        IVMRImageCompositor *compositor) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNumberOfStreams(
        DWORD streams) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams(
        DWORD *streams) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs(
        DWORD prefs) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs(
        DWORD *prefs) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRenderingMode(
        DWORD mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRenderingMode(
        DWORD *mode) = 0;

};
#else
typedef struct IVMRFilterConfigVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRFilterConfig* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRFilterConfig* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRFilterConfig* This);

    /*** IVMRFilterConfig methods ***/
    HRESULT (STDMETHODCALLTYPE *SetImageCompositor)(
        IVMRFilterConfig* This,
        IVMRImageCompositor *compositor);

    HRESULT (STDMETHODCALLTYPE *SetNumberOfStreams)(
        IVMRFilterConfig* This,
        DWORD streams);

    HRESULT (STDMETHODCALLTYPE *GetNumberOfStreams)(
        IVMRFilterConfig* This,
        DWORD *streams);

    HRESULT (STDMETHODCALLTYPE *SetRenderingPrefs)(
        IVMRFilterConfig* This,
        DWORD prefs);

    HRESULT (STDMETHODCALLTYPE *GetRenderingPrefs)(
        IVMRFilterConfig* This,
        DWORD *prefs);

    HRESULT (STDMETHODCALLTYPE *SetRenderingMode)(
        IVMRFilterConfig* This,
        DWORD mode);

    HRESULT (STDMETHODCALLTYPE *GetRenderingMode)(
        IVMRFilterConfig* This,
        DWORD *mode);

    END_INTERFACE
} IVMRFilterConfigVtbl;
interface IVMRFilterConfig {
    CONST_VTBL IVMRFilterConfigVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRFilterConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRFilterConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRFilterConfig_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRFilterConfig methods ***/
#define IVMRFilterConfig_SetImageCompositor(This,compositor) (This)->lpVtbl->SetImageCompositor(This,compositor)
#define IVMRFilterConfig_SetNumberOfStreams(This,streams) (This)->lpVtbl->SetNumberOfStreams(This,streams)
#define IVMRFilterConfig_GetNumberOfStreams(This,streams) (This)->lpVtbl->GetNumberOfStreams(This,streams)
#define IVMRFilterConfig_SetRenderingPrefs(This,prefs) (This)->lpVtbl->SetRenderingPrefs(This,prefs)
#define IVMRFilterConfig_GetRenderingPrefs(This,prefs) (This)->lpVtbl->GetRenderingPrefs(This,prefs)
#define IVMRFilterConfig_SetRenderingMode(This,mode) (This)->lpVtbl->SetRenderingMode(This,mode)
#define IVMRFilterConfig_GetRenderingMode(This,mode) (This)->lpVtbl->GetRenderingMode(This,mode)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetImageCompositor_Proxy(
    IVMRFilterConfig* This,
    IVMRImageCompositor *compositor);
void __RPC_STUB IVMRFilterConfig_SetImageCompositor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetNumberOfStreams_Proxy(
    IVMRFilterConfig* This,
    DWORD streams);
void __RPC_STUB IVMRFilterConfig_SetNumberOfStreams_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRFilterConfig_GetNumberOfStreams_Proxy(
    IVMRFilterConfig* This,
    DWORD *streams);
void __RPC_STUB IVMRFilterConfig_GetNumberOfStreams_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetRenderingPrefs_Proxy(
    IVMRFilterConfig* This,
    DWORD prefs);
void __RPC_STUB IVMRFilterConfig_SetRenderingPrefs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRFilterConfig_GetRenderingPrefs_Proxy(
    IVMRFilterConfig* This,
    DWORD *prefs);
void __RPC_STUB IVMRFilterConfig_GetRenderingPrefs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetRenderingMode_Proxy(
    IVMRFilterConfig* This,
    DWORD mode);
void __RPC_STUB IVMRFilterConfig_SetRenderingMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRFilterConfig_GetRenderingMode_Proxy(
    IVMRFilterConfig* This,
    DWORD *mode);
void __RPC_STUB IVMRFilterConfig_GetRenderingMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRFilterConfig_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVMRAspectRatioControl interface
 */
#ifndef __IVMRAspectRatioControl_INTERFACE_DEFINED__
#define __IVMRAspectRatioControl_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRAspectRatioControl, 0xede80b5c, 0xbad6, 0x4623, 0xb5,0x37, 0x65,0x58,0x6c,0x9f,0x8d,0xfd);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRAspectRatioControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode(
        DWORD *armode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode(
        DWORD armode) = 0;

};
#else
typedef struct IVMRAspectRatioControlVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRAspectRatioControl* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRAspectRatioControl* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRAspectRatioControl* This);

    /*** IVMRAspectRatioControl methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAspectRatioMode)(
        IVMRAspectRatioControl* This,
        DWORD *armode);

    HRESULT (STDMETHODCALLTYPE *SetAspectRatioMode)(
        IVMRAspectRatioControl* This,
        DWORD armode);

    END_INTERFACE
} IVMRAspectRatioControlVtbl;
interface IVMRAspectRatioControl {
    CONST_VTBL IVMRAspectRatioControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRAspectRatioControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRAspectRatioControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRAspectRatioControl_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRAspectRatioControl methods ***/
#define IVMRAspectRatioControl_GetAspectRatioMode(This,armode) (This)->lpVtbl->GetAspectRatioMode(This,armode)
#define IVMRAspectRatioControl_SetAspectRatioMode(This,armode) (This)->lpVtbl->SetAspectRatioMode(This,armode)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRAspectRatioControl_GetAspectRatioMode_Proxy(
    IVMRAspectRatioControl* This,
    DWORD *armode);
void __RPC_STUB IVMRAspectRatioControl_GetAspectRatioMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRAspectRatioControl_SetAspectRatioMode_Proxy(
    IVMRAspectRatioControl* This,
    DWORD armode);
void __RPC_STUB IVMRAspectRatioControl_SetAspectRatioMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRAspectRatioControl_INTERFACE_DEFINED__ */

typedef enum _VMRDeinterlacePrefs {
    DeinterlacePref_NextBest = 0x1,
    DeinterlacePref_BOB = 0x2,
    DeinterlacePref_Weave = 0x4,
    DeinterlacePref_Mask = 0x7
} VMRDeinterlacePrefs;
typedef enum _VMRDeinterlaceTech {
    DeinterlaceTech_Unknown = 0x0,
    DeinterlaceTech_BOBLineReplicate = 0x1,
    DeinterlaceTech_BOBVerticalStretch = 0x2,
    DeinterlaceTech_MedianFiltering = 0x4,
    DeinterlaceTech_EdgeFiltering = 0x8,
    DeinterlaceTech_FieldAdaptive = 0x10,
    DeinterlaceTech_PixelAdaptive = 0x20,
    DeinterlaceTech_MotionVectorSteered = 0x80
} VMRDeinterlaceTech;
typedef struct _VMRFrequency {
    DWORD dwNumerator;
    DWORD dwDenominator;
} VMRFrequency;
typedef struct _VMRVideoDesc {
    DWORD dwSize;
    DWORD dwSampleWidth;
    DWORD dwSampleHeight;
    BOOL SingleFieldPerSample;
    DWORD dwFourCC;
    VMRFrequency InputSampleFreq;
    VMRFrequency OutputFrameFreq;
} VMRVideoDesc;
typedef struct _VMRDeinterlaceCaps {
    DWORD dwSize;
    DWORD dwNumPreviousOutputFrames;
    DWORD dwNumForwardRefSamples;
    DWORD dwNumBackwardRefSamples;
    VMRDeinterlaceTech DeinterlaceTechnology;
} VMRDeinterlaceCaps;
/*****************************************************************************
 * IVMRDeinterlaceControl interface
 */
#ifndef __IVMRDeinterlaceControl_INTERFACE_DEFINED__
#define __IVMRDeinterlaceControl_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRDeinterlaceControl, 0xbb057577, 0x0db8, 0x4e6a, 0x87,0xa7, 0x1a,0x8c,0x9a,0x50,0x5a,0x0f);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRDeinterlaceControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetNumberOfDeinterlaceModes(
        VMRVideoDesc *desc,
        DWORD *num_modes,
        GUID *modes) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDeinterlaceModeCaps(
        GUID *mode,
        VMRVideoDesc *desc,
        VMRDeinterlaceCaps *caps) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDeinterlaceMode(
        DWORD id,
        GUID *mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDeinterlaceMode(
        DWORD id,
        GUID *mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDeinterlacePrefs(
        DWORD *prefs) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDeinterlacePrefs(
        DWORD prefs) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetActualDeinterlaceMode(
        DWORD id,
        GUID *mode) = 0;

};
#else
typedef struct IVMRDeinterlaceControlVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRDeinterlaceControl* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRDeinterlaceControl* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRDeinterlaceControl* This);

    /*** IVMRDeinterlaceControl methods ***/
    HRESULT (STDMETHODCALLTYPE *GetNumberOfDeinterlaceModes)(
        IVMRDeinterlaceControl* This,
        VMRVideoDesc *desc,
        DWORD *num_modes,
        GUID *modes);

    HRESULT (STDMETHODCALLTYPE *GetDeinterlaceModeCaps)(
        IVMRDeinterlaceControl* This,
        GUID *mode,
        VMRVideoDesc *desc,
        VMRDeinterlaceCaps *caps);

    HRESULT (STDMETHODCALLTYPE *GetDeinterlaceMode)(
        IVMRDeinterlaceControl* This,
        DWORD id,
        GUID *mode);

    HRESULT (STDMETHODCALLTYPE *SetDeinterlaceMode)(
        IVMRDeinterlaceControl* This,
        DWORD id,
        GUID *mode);

    HRESULT (STDMETHODCALLTYPE *GetDeinterlacePrefs)(
        IVMRDeinterlaceControl* This,
        DWORD *prefs);

    HRESULT (STDMETHODCALLTYPE *SetDeinterlacePrefs)(
        IVMRDeinterlaceControl* This,
        DWORD prefs);

    HRESULT (STDMETHODCALLTYPE *GetActualDeinterlaceMode)(
        IVMRDeinterlaceControl* This,
        DWORD id,
        GUID *mode);

    END_INTERFACE
} IVMRDeinterlaceControlVtbl;
interface IVMRDeinterlaceControl {
    CONST_VTBL IVMRDeinterlaceControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRDeinterlaceControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRDeinterlaceControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRDeinterlaceControl_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRDeinterlaceControl methods ***/
#define IVMRDeinterlaceControl_GetNumberOfDeinterlaceModes(This,desc,num_modes,modes) (This)->lpVtbl->GetNumberOfDeinterlaceModes(This,desc,num_modes,modes)
#define IVMRDeinterlaceControl_GetDeinterlaceModeCaps(This,mode,desc,caps) (This)->lpVtbl->GetDeinterlaceModeCaps(This,mode,desc,caps)
#define IVMRDeinterlaceControl_GetDeinterlaceMode(This,id,mode) (This)->lpVtbl->GetDeinterlaceMode(This,id,mode)
#define IVMRDeinterlaceControl_SetDeinterlaceMode(This,id,mode) (This)->lpVtbl->SetDeinterlaceMode(This,id,mode)
#define IVMRDeinterlaceControl_GetDeinterlacePrefs(This,prefs) (This)->lpVtbl->GetDeinterlacePrefs(This,prefs)
#define IVMRDeinterlaceControl_SetDeinterlacePrefs(This,prefs) (This)->lpVtbl->SetDeinterlacePrefs(This,prefs)
#define IVMRDeinterlaceControl_GetActualDeinterlaceMode(This,id,mode) (This)->lpVtbl->GetActualDeinterlaceMode(This,id,mode)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl_GetNumberOfDeinterlaceModes_Proxy(
    IVMRDeinterlaceControl* This,
    VMRVideoDesc *desc,
    DWORD *num_modes,
    GUID *modes);
void __RPC_STUB IVMRDeinterlaceControl_GetNumberOfDeinterlaceModes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl_GetDeinterlaceModeCaps_Proxy(
    IVMRDeinterlaceControl* This,
    GUID *mode,
    VMRVideoDesc *desc,
    VMRDeinterlaceCaps *caps);
void __RPC_STUB IVMRDeinterlaceControl_GetDeinterlaceModeCaps_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl_GetDeinterlaceMode_Proxy(
    IVMRDeinterlaceControl* This,
    DWORD id,
    GUID *mode);
void __RPC_STUB IVMRDeinterlaceControl_GetDeinterlaceMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl_SetDeinterlaceMode_Proxy(
    IVMRDeinterlaceControl* This,
    DWORD id,
    GUID *mode);
void __RPC_STUB IVMRDeinterlaceControl_SetDeinterlaceMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl_GetDeinterlacePrefs_Proxy(
    IVMRDeinterlaceControl* This,
    DWORD *prefs);
void __RPC_STUB IVMRDeinterlaceControl_GetDeinterlacePrefs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl_SetDeinterlacePrefs_Proxy(
    IVMRDeinterlaceControl* This,
    DWORD prefs);
void __RPC_STUB IVMRDeinterlaceControl_SetDeinterlacePrefs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl_GetActualDeinterlaceMode_Proxy(
    IVMRDeinterlaceControl* This,
    DWORD id,
    GUID *mode);
void __RPC_STUB IVMRDeinterlaceControl_GetActualDeinterlaceMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRDeinterlaceControl_INTERFACE_DEFINED__ */

typedef struct _VMRALPHABITMAP {
    DWORD dwFlags;
    HDC hdc;
    IDirectDrawSurface7 *pDDS;
    RECT rSrc;
    RECT rDest;
    FLOAT fAlpha;
    COLORREF clrSrcKey;
} VMRALPHABITMAP;
typedef struct _VMRALPHABITMAP *PVMRALPHABITMAP;
#define VMRBITMAP_DISABLE (0x01)
#define VMRBITMAP_HDC (0x02)
#define VMRBITMAP_ENTIREDDS (0x04)
#define VMRBITMAP_SRCCOLORKEY (0x08)
#define VMRBITMAP_SRCRECT (0x10)
/*****************************************************************************
 * IVMRMixerBitmap interface
 */
#ifndef __IVMRMixerBitmap_INTERFACE_DEFINED__
#define __IVMRMixerBitmap_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRMixerBitmap, 0x1e673275, 0x0257, 0x40aa, 0xaf,0x20, 0x7c,0x60,0x8d,0x4a,0x04,0x28);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRMixerBitmap : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetAlphaBitmap(
        const VMRALPHABITMAP *params) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateAlphaBitmapParameters(
        VMRALPHABITMAP *params) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAlphaBitmapParameters(
        VMRALPHABITMAP *params) = 0;

};
#else
typedef struct IVMRMixerBitmapVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRMixerBitmap* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRMixerBitmap* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRMixerBitmap* This);

    /*** IVMRMixerBitmap methods ***/
    HRESULT (STDMETHODCALLTYPE *SetAlphaBitmap)(
        IVMRMixerBitmap* This,
        const VMRALPHABITMAP *params);

    HRESULT (STDMETHODCALLTYPE *UpdateAlphaBitmapParameters)(
        IVMRMixerBitmap* This,
        VMRALPHABITMAP *params);

    HRESULT (STDMETHODCALLTYPE *GetAlphaBitmapParameters)(
        IVMRMixerBitmap* This,
        VMRALPHABITMAP *params);

    END_INTERFACE
} IVMRMixerBitmapVtbl;
interface IVMRMixerBitmap {
    CONST_VTBL IVMRMixerBitmapVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRMixerBitmap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRMixerBitmap_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRMixerBitmap_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRMixerBitmap methods ***/
#define IVMRMixerBitmap_SetAlphaBitmap(This,params) (This)->lpVtbl->SetAlphaBitmap(This,params)
#define IVMRMixerBitmap_UpdateAlphaBitmapParameters(This,params) (This)->lpVtbl->UpdateAlphaBitmapParameters(This,params)
#define IVMRMixerBitmap_GetAlphaBitmapParameters(This,params) (This)->lpVtbl->GetAlphaBitmapParameters(This,params)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRMixerBitmap_SetAlphaBitmap_Proxy(
    IVMRMixerBitmap* This,
    const VMRALPHABITMAP *params);
void __RPC_STUB IVMRMixerBitmap_SetAlphaBitmap_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMixerBitmap_UpdateAlphaBitmapParameters_Proxy(
    IVMRMixerBitmap* This,
    VMRALPHABITMAP *params);
void __RPC_STUB IVMRMixerBitmap_UpdateAlphaBitmapParameters_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRMixerBitmap_GetAlphaBitmapParameters_Proxy(
    IVMRMixerBitmap* This,
    VMRALPHABITMAP *params);
void __RPC_STUB IVMRMixerBitmap_GetAlphaBitmapParameters_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRMixerBitmap_INTERFACE_DEFINED__ */

typedef struct _VMRVIDEOSTREAMINFO {
    IDirectDrawSurface7 *pddsVideoSurface;
    DWORD dwWidth;
    DWORD dwHeight;
    DWORD dwStrmID;
    FLOAT fAlpha;
    DDCOLORKEY ddClrKey;
    NORMALIZEDRECT rNormal;
} VMRVIDEOSTREAMINFO;
/*****************************************************************************
 * IVMRImageCompositor interface
 */
#ifndef __IVMRImageCompositor_INTERFACE_DEFINED__
#define __IVMRImageCompositor_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRImageCompositor, 0x7a4fb5af, 0x479f, 0x4074, 0xbb,0x40, 0xce,0x67,0x22,0xe4,0x3c,0x82);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRImageCompositor : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InitCompositionTarget(
        IUnknown *d3ddev,
        IDirectDrawSurface7 *rendertarget) = 0;

    virtual HRESULT STDMETHODCALLTYPE TermCompositionTarget(
        IUnknown *d3ddev,
        IDirectDrawSurface7 *rendertarget) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStreamMediaType(
        DWORD id,
        AM_MEDIA_TYPE *pmt,
        BOOL texture) = 0;

    virtual HRESULT STDMETHODCALLTYPE CompositeImage(
        IUnknown *d3ddev,
        IDirectDrawSurface7 *rendertarget,
        AM_MEDIA_TYPE *pmt,
        REFERENCE_TIME start,
        REFERENCE_TIME stop,
        DWORD backgrnd,
        VMRVIDEOSTREAMINFO *info,
        UINT streams) = 0;

};
#else
typedef struct IVMRImageCompositorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRImageCompositor* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRImageCompositor* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRImageCompositor* This);

    /*** IVMRImageCompositor methods ***/
    HRESULT (STDMETHODCALLTYPE *InitCompositionTarget)(
        IVMRImageCompositor* This,
        IUnknown *d3ddev,
        IDirectDrawSurface7 *rendertarget);

    HRESULT (STDMETHODCALLTYPE *TermCompositionTarget)(
        IVMRImageCompositor* This,
        IUnknown *d3ddev,
        IDirectDrawSurface7 *rendertarget);

    HRESULT (STDMETHODCALLTYPE *SetStreamMediaType)(
        IVMRImageCompositor* This,
        DWORD id,
        AM_MEDIA_TYPE *pmt,
        BOOL texture);

    HRESULT (STDMETHODCALLTYPE *CompositeImage)(
        IVMRImageCompositor* This,
        IUnknown *d3ddev,
        IDirectDrawSurface7 *rendertarget,
        AM_MEDIA_TYPE *pmt,
        REFERENCE_TIME start,
        REFERENCE_TIME stop,
        DWORD backgrnd,
        VMRVIDEOSTREAMINFO *info,
        UINT streams);

    END_INTERFACE
} IVMRImageCompositorVtbl;
interface IVMRImageCompositor {
    CONST_VTBL IVMRImageCompositorVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRImageCompositor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRImageCompositor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRImageCompositor_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRImageCompositor methods ***/
#define IVMRImageCompositor_InitCompositionTarget(This,d3ddev,rendertarget) (This)->lpVtbl->InitCompositionTarget(This,d3ddev,rendertarget)
#define IVMRImageCompositor_TermCompositionTarget(This,d3ddev,rendertarget) (This)->lpVtbl->TermCompositionTarget(This,d3ddev,rendertarget)
#define IVMRImageCompositor_SetStreamMediaType(This,id,pmt,texture) (This)->lpVtbl->SetStreamMediaType(This,id,pmt,texture)
#define IVMRImageCompositor_CompositeImage(This,d3ddev,rendertarget,pmt,start,stop,backgrnd,info,streams) (This)->lpVtbl->CompositeImage(This,d3ddev,rendertarget,pmt,start,stop,backgrnd,info,streams)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRImageCompositor_InitCompositionTarget_Proxy(
    IVMRImageCompositor* This,
    IUnknown *d3ddev,
    IDirectDrawSurface7 *rendertarget);
void __RPC_STUB IVMRImageCompositor_InitCompositionTarget_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRImageCompositor_TermCompositionTarget_Proxy(
    IVMRImageCompositor* This,
    IUnknown *d3ddev,
    IDirectDrawSurface7 *rendertarget);
void __RPC_STUB IVMRImageCompositor_TermCompositionTarget_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRImageCompositor_SetStreamMediaType_Proxy(
    IVMRImageCompositor* This,
    DWORD id,
    AM_MEDIA_TYPE *pmt,
    BOOL texture);
void __RPC_STUB IVMRImageCompositor_SetStreamMediaType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRImageCompositor_CompositeImage_Proxy(
    IVMRImageCompositor* This,
    IUnknown *d3ddev,
    IDirectDrawSurface7 *rendertarget,
    AM_MEDIA_TYPE *pmt,
    REFERENCE_TIME start,
    REFERENCE_TIME stop,
    DWORD backgrnd,
    VMRVIDEOSTREAMINFO *info,
    UINT streams);
void __RPC_STUB IVMRImageCompositor_CompositeImage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRImageCompositor_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVMRVideoStreamControl interface
 */
#ifndef __IVMRVideoStreamControl_INTERFACE_DEFINED__
#define __IVMRVideoStreamControl_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRVideoStreamControl, 0x058d1f11, 0x2a54, 0x4bef, 0xbd,0x54, 0xdf,0x70,0x66,0x26,0xb7,0x27);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRVideoStreamControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetColorKey(
        DDCOLORKEY *key) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColorKey(
        DDCOLORKEY *key) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStreamActiveState(
        BOOL active) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStreamActiveState(
        BOOL *active) = 0;

};
#else
typedef struct IVMRVideoStreamControlVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRVideoStreamControl* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRVideoStreamControl* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRVideoStreamControl* This);

    /*** IVMRVideoStreamControl methods ***/
    HRESULT (STDMETHODCALLTYPE *SetColorKey)(
        IVMRVideoStreamControl* This,
        DDCOLORKEY *key);

    HRESULT (STDMETHODCALLTYPE *GetColorKey)(
        IVMRVideoStreamControl* This,
        DDCOLORKEY *key);

    HRESULT (STDMETHODCALLTYPE *SetStreamActiveState)(
        IVMRVideoStreamControl* This,
        BOOL active);

    HRESULT (STDMETHODCALLTYPE *GetStreamActiveState)(
        IVMRVideoStreamControl* This,
        BOOL *active);

    END_INTERFACE
} IVMRVideoStreamControlVtbl;
interface IVMRVideoStreamControl {
    CONST_VTBL IVMRVideoStreamControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRVideoStreamControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRVideoStreamControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRVideoStreamControl_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRVideoStreamControl methods ***/
#define IVMRVideoStreamControl_SetColorKey(This,key) (This)->lpVtbl->SetColorKey(This,key)
#define IVMRVideoStreamControl_GetColorKey(This,key) (This)->lpVtbl->GetColorKey(This,key)
#define IVMRVideoStreamControl_SetStreamActiveState(This,active) (This)->lpVtbl->SetStreamActiveState(This,active)
#define IVMRVideoStreamControl_GetStreamActiveState(This,active) (This)->lpVtbl->GetStreamActiveState(This,active)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_SetColorKey_Proxy(
    IVMRVideoStreamControl* This,
    DDCOLORKEY *key);
void __RPC_STUB IVMRVideoStreamControl_SetColorKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_GetColorKey_Proxy(
    IVMRVideoStreamControl* This,
    DDCOLORKEY *key);
void __RPC_STUB IVMRVideoStreamControl_GetColorKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_SetStreamActiveState_Proxy(
    IVMRVideoStreamControl* This,
    BOOL active);
void __RPC_STUB IVMRVideoStreamControl_SetStreamActiveState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_GetStreamActiveState_Proxy(
    IVMRVideoStreamControl* This,
    BOOL *active);
void __RPC_STUB IVMRVideoStreamControl_GetStreamActiveState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRVideoStreamControl_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVMRImagePresenterConfig interface
 */
#ifndef __IVMRImagePresenterConfig_INTERFACE_DEFINED__
#define __IVMRImagePresenterConfig_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRImagePresenterConfig, 0x9f3a1c85, 0x8555, 0x49ba, 0x93,0x5f, 0xbe,0x5b,0x5b,0x29,0xd1,0x78);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRImagePresenterConfig : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs(
        DWORD prefs) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs(
        DWORD *prefs) = 0;

};
#else
typedef struct IVMRImagePresenterConfigVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRImagePresenterConfig* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRImagePresenterConfig* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRImagePresenterConfig* This);

    /*** IVMRImagePresenterConfig methods ***/
    HRESULT (STDMETHODCALLTYPE *SetRenderingPrefs)(
        IVMRImagePresenterConfig* This,
        DWORD prefs);

    HRESULT (STDMETHODCALLTYPE *GetRenderingPrefs)(
        IVMRImagePresenterConfig* This,
        DWORD *prefs);

    END_INTERFACE
} IVMRImagePresenterConfigVtbl;
interface IVMRImagePresenterConfig {
    CONST_VTBL IVMRImagePresenterConfigVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRImagePresenterConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRImagePresenterConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRImagePresenterConfig_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRImagePresenterConfig methods ***/
#define IVMRImagePresenterConfig_SetRenderingPrefs(This,prefs) (This)->lpVtbl->SetRenderingPrefs(This,prefs)
#define IVMRImagePresenterConfig_GetRenderingPrefs(This,prefs) (This)->lpVtbl->GetRenderingPrefs(This,prefs)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig_SetRenderingPrefs_Proxy(
    IVMRImagePresenterConfig* This,
    DWORD prefs);
void __RPC_STUB IVMRImagePresenterConfig_SetRenderingPrefs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig_GetRenderingPrefs_Proxy(
    IVMRImagePresenterConfig* This,
    DWORD *prefs);
void __RPC_STUB IVMRImagePresenterConfig_GetRenderingPrefs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRImagePresenterConfig_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVMRImagePresenterExclModeConfig interface
 */
#ifndef __IVMRImagePresenterExclModeConfig_INTERFACE_DEFINED__
#define __IVMRImagePresenterExclModeConfig_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVMRImagePresenterExclModeConfig, 0xe6f7ce40, 0x4673, 0x44f1, 0x8f,0x77, 0x54,0x99,0xd6,0x8c,0xb4,0xea);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVMRImagePresenterExclModeConfig : public IVMRImagePresenterConfig
{
    virtual HRESULT STDMETHODCALLTYPE SetXlcModeDDObjAndPrimarySurface(
        IDirectDraw7 *dddev,
        IDirectDrawSurface7 *ddsurface) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetXlcModeDDObjAndPrimarySurface(
        IDirectDraw7 **dddev,
        IDirectDrawSurface7 **ddsurface) = 0;

};
#else
typedef struct IVMRImagePresenterExclModeConfigVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVMRImagePresenterExclModeConfig* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVMRImagePresenterExclModeConfig* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVMRImagePresenterExclModeConfig* This);

    /*** IVMRImagePresenterConfig methods ***/
    HRESULT (STDMETHODCALLTYPE *SetRenderingPrefs)(
        IVMRImagePresenterExclModeConfig* This,
        DWORD prefs);

    HRESULT (STDMETHODCALLTYPE *GetRenderingPrefs)(
        IVMRImagePresenterExclModeConfig* This,
        DWORD *prefs);

    /*** IVMRImagePresenterExclModeConfig methods ***/
    HRESULT (STDMETHODCALLTYPE *SetXlcModeDDObjAndPrimarySurface)(
        IVMRImagePresenterExclModeConfig* This,
        IDirectDraw7 *dddev,
        IDirectDrawSurface7 *ddsurface);

    HRESULT (STDMETHODCALLTYPE *GetXlcModeDDObjAndPrimarySurface)(
        IVMRImagePresenterExclModeConfig* This,
        IDirectDraw7 **dddev,
        IDirectDrawSurface7 **ddsurface);

    END_INTERFACE
} IVMRImagePresenterExclModeConfigVtbl;
interface IVMRImagePresenterExclModeConfig {
    CONST_VTBL IVMRImagePresenterExclModeConfigVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVMRImagePresenterExclModeConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVMRImagePresenterExclModeConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVMRImagePresenterExclModeConfig_Release(This) (This)->lpVtbl->Release(This)
/*** IVMRImagePresenterConfig methods ***/
#define IVMRImagePresenterExclModeConfig_SetRenderingPrefs(This,prefs) (This)->lpVtbl->SetRenderingPrefs(This,prefs)
#define IVMRImagePresenterExclModeConfig_GetRenderingPrefs(This,prefs) (This)->lpVtbl->GetRenderingPrefs(This,prefs)
/*** IVMRImagePresenterExclModeConfig methods ***/
#define IVMRImagePresenterExclModeConfig_SetXlcModeDDObjAndPrimarySurface(This,dddev,ddsurface) (This)->lpVtbl->SetXlcModeDDObjAndPrimarySurface(This,dddev,ddsurface)
#define IVMRImagePresenterExclModeConfig_GetXlcModeDDObjAndPrimarySurface(This,dddev,ddsurface) (This)->lpVtbl->GetXlcModeDDObjAndPrimarySurface(This,dddev,ddsurface)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVMRImagePresenterExclModeConfig_SetXlcModeDDObjAndPrimarySurface_Proxy(
    IVMRImagePresenterExclModeConfig* This,
    IDirectDraw7 *dddev,
    IDirectDrawSurface7 *ddsurface);
void __RPC_STUB IVMRImagePresenterExclModeConfig_SetXlcModeDDObjAndPrimarySurface_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVMRImagePresenterExclModeConfig_GetXlcModeDDObjAndPrimarySurface_Proxy(
    IVMRImagePresenterExclModeConfig* This,
    IDirectDraw7 **dddev,
    IDirectDrawSurface7 **ddsurface);
void __RPC_STUB IVMRImagePresenterExclModeConfig_GetXlcModeDDObjAndPrimarySurface_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVMRImagePresenterExclModeConfig_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVPManager interface
 */
#ifndef __IVPManager_INTERFACE_DEFINED__
#define __IVPManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVPManager, 0xaac18c18, 0xe186, 0x46d2, 0x82,0x5d, 0xa1,0xf8,0xdc,0x8e,0x39,0x5a);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IVPManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetVideoPortIndex(
        DWORD index) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVideoPortIndex(
        DWORD *index) = 0;

};
#else
typedef struct IVPManagerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVPManager* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVPManager* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVPManager* This);

    /*** IVPManager methods ***/
    HRESULT (STDMETHODCALLTYPE *SetVideoPortIndex)(
        IVPManager* This,
        DWORD index);

    HRESULT (STDMETHODCALLTYPE *GetVideoPortIndex)(
        IVPManager* This,
        DWORD *index);

    END_INTERFACE
} IVPManagerVtbl;
interface IVPManager {
    CONST_VTBL IVPManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVPManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVPManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVPManager_Release(This) (This)->lpVtbl->Release(This)
/*** IVPManager methods ***/
#define IVPManager_SetVideoPortIndex(This,index) (This)->lpVtbl->SetVideoPortIndex(This,index)
#define IVPManager_GetVideoPortIndex(This,index) (This)->lpVtbl->GetVideoPortIndex(This,index)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVPManager_SetVideoPortIndex_Proxy(
    IVPManager* This,
    DWORD index);
void __RPC_STUB IVPManager_SetVideoPortIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVPManager_GetVideoPortIndex_Proxy(
    IVPManager* This,
    DWORD *index);
void __RPC_STUB IVPManager_GetVideoPortIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVPManager_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __WIDL_STRMIF_H */
