/*** Autogenerated by WIDL 1.3.27 from control.idl - Do not edit ***/

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

#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__)
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __WIDL_CONTROL_H
#define __WIDL_CONTROL_H

/* Forward declarations */

#ifndef __IMediaControl_FWD_DEFINED__
#define __IMediaControl_FWD_DEFINED__
typedef interface IMediaControl IMediaControl;
#endif

#ifndef __IBasicAudio_FWD_DEFINED__
#define __IBasicAudio_FWD_DEFINED__
typedef interface IBasicAudio IBasicAudio;
#endif

#ifndef __IVideoWindow_FWD_DEFINED__
#define __IVideoWindow_FWD_DEFINED__
typedef interface IVideoWindow IVideoWindow;
#endif

#ifndef __IBasicVideo_FWD_DEFINED__
#define __IBasicVideo_FWD_DEFINED__
typedef interface IBasicVideo IBasicVideo;
#endif

#ifndef __IBasicVideo2_FWD_DEFINED__
#define __IBasicVideo2_FWD_DEFINED__
typedef interface IBasicVideo2 IBasicVideo2;
#endif

#ifndef __IMediaEvent_FWD_DEFINED__
#define __IMediaEvent_FWD_DEFINED__
typedef interface IMediaEvent IMediaEvent;
#endif

#ifndef __IMediaEventEx_FWD_DEFINED__
#define __IMediaEventEx_FWD_DEFINED__
typedef interface IMediaEventEx IMediaEventEx;
#endif

#ifndef __IMediaPosition_FWD_DEFINED__
#define __IMediaPosition_FWD_DEFINED__
typedef interface IMediaPosition IMediaPosition;
#endif

/* Headers for imported files */

#include <oaidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __IMediaControl_FWD_DEFINED__
#define __IMediaControl_FWD_DEFINED__
typedef interface IMediaControl IMediaControl;
#endif

#ifndef __IBasicAudio_FWD_DEFINED__
#define __IBasicAudio_FWD_DEFINED__
typedef interface IBasicAudio IBasicAudio;
#endif

#ifndef __IBasicVideo_FWD_DEFINED__
#define __IBasicVideo_FWD_DEFINED__
typedef interface IBasicVideo IBasicVideo;
#endif

#ifndef __IVideoWindow_FWD_DEFINED__
#define __IVideoWindow_FWD_DEFINED__
typedef interface IVideoWindow IVideoWindow;
#endif

#ifndef __IMediaEvent_FWD_DEFINED__
#define __IMediaEvent_FWD_DEFINED__
typedef interface IMediaEvent IMediaEvent;
#endif

#ifndef __IMediaEventEx_FWD_DEFINED__
#define __IMediaEventEx_FWD_DEFINED__
typedef interface IMediaEventEx IMediaEventEx;
#endif

#ifndef __IMediaPosition_FWD_DEFINED__
#define __IMediaPosition_FWD_DEFINED__
typedef interface IMediaPosition IMediaPosition;
#endif

typedef LONG OAFilterState;
typedef LONG_PTR OAHWND;
typedef LONG_PTR OAEVENT;
#ifndef REFTIME_DEFINED
#define REFTIME_DEFINED
typedef DOUBLE REFTIME;
#endif
/*****************************************************************************
 * IMediaControl interface
 */
#ifndef __IMediaControl_INTERFACE_DEFINED__
#define __IMediaControl_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMediaControl, 0x56a868b1, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56a868b1-0ad4-11ce-b03a-0020af0ba770")
IMediaControl : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE Run(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Pause(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Stop(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetState(
        LONG msTimeout,
        OAFilterState *pfs) = 0;

    virtual HRESULT STDMETHODCALLTYPE RenderFile(
        BSTR strFilename) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddSourceFilter(
        BSTR strFilename,
        IDispatch **ppUnk) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FilterCollection(
        IDispatch **ppUnk) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RegFilterCollection(
        IDispatch **ppUnk) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopWhenReady(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMediaControl, 0x56a868b1, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70)
#endif
#else
typedef struct IMediaControlVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IMediaControl* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IMediaControl* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IMediaControl* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IMediaControl* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IMediaControl methods ***/
    HRESULT (STDMETHODCALLTYPE *Run)(
        IMediaControl* This);

    HRESULT (STDMETHODCALLTYPE *Pause)(
        IMediaControl* This);

    HRESULT (STDMETHODCALLTYPE *Stop)(
        IMediaControl* This);

    HRESULT (STDMETHODCALLTYPE *GetState)(
        IMediaControl* This,
        LONG msTimeout,
        OAFilterState *pfs);

    HRESULT (STDMETHODCALLTYPE *RenderFile)(
        IMediaControl* This,
        BSTR strFilename);

    HRESULT (STDMETHODCALLTYPE *AddSourceFilter)(
        IMediaControl* This,
        BSTR strFilename,
        IDispatch **ppUnk);

    HRESULT (STDMETHODCALLTYPE *get_FilterCollection)(
        IMediaControl* This,
        IDispatch **ppUnk);

    HRESULT (STDMETHODCALLTYPE *get_RegFilterCollection)(
        IMediaControl* This,
        IDispatch **ppUnk);

    HRESULT (STDMETHODCALLTYPE *StopWhenReady)(
        IMediaControl* This);

    END_INTERFACE
} IMediaControlVtbl;
interface IMediaControl {
    CONST_VTBL IMediaControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMediaControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaControl_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IMediaControl_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IMediaControl_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IMediaControl_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IMediaControl_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IMediaControl methods ***/
#define IMediaControl_Run(This) (This)->lpVtbl->Run(This)
#define IMediaControl_Pause(This) (This)->lpVtbl->Pause(This)
#define IMediaControl_Stop(This) (This)->lpVtbl->Stop(This)
#define IMediaControl_GetState(This,msTimeout,pfs) (This)->lpVtbl->GetState(This,msTimeout,pfs)
#define IMediaControl_RenderFile(This,strFilename) (This)->lpVtbl->RenderFile(This,strFilename)
#define IMediaControl_AddSourceFilter(This,strFilename,ppUnk) (This)->lpVtbl->AddSourceFilter(This,strFilename,ppUnk)
#define IMediaControl_get_FilterCollection(This,ppUnk) (This)->lpVtbl->get_FilterCollection(This,ppUnk)
#define IMediaControl_get_RegFilterCollection(This,ppUnk) (This)->lpVtbl->get_RegFilterCollection(This,ppUnk)
#define IMediaControl_StopWhenReady(This) (This)->lpVtbl->StopWhenReady(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMediaControl_Run_Proxy(
    IMediaControl* This);
void __RPC_STUB IMediaControl_Run_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaControl_Pause_Proxy(
    IMediaControl* This);
void __RPC_STUB IMediaControl_Pause_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaControl_Stop_Proxy(
    IMediaControl* This);
void __RPC_STUB IMediaControl_Stop_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaControl_GetState_Proxy(
    IMediaControl* This,
    LONG msTimeout,
    OAFilterState *pfs);
void __RPC_STUB IMediaControl_GetState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaControl_RenderFile_Proxy(
    IMediaControl* This,
    BSTR strFilename);
void __RPC_STUB IMediaControl_RenderFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaControl_AddSourceFilter_Proxy(
    IMediaControl* This,
    BSTR strFilename,
    IDispatch **ppUnk);
void __RPC_STUB IMediaControl_AddSourceFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaControl_get_FilterCollection_Proxy(
    IMediaControl* This,
    IDispatch **ppUnk);
void __RPC_STUB IMediaControl_get_FilterCollection_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaControl_get_RegFilterCollection_Proxy(
    IMediaControl* This,
    IDispatch **ppUnk);
void __RPC_STUB IMediaControl_get_RegFilterCollection_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaControl_StopWhenReady_Proxy(
    IMediaControl* This);
void __RPC_STUB IMediaControl_StopWhenReady_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IMediaControl_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBasicAudio interface
 */
#ifndef __IBasicAudio_INTERFACE_DEFINED__
#define __IBasicAudio_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBasicAudio, 0x56a868b3, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56a868b3-0ad4-11ce-b03a-0020af0ba770")
IBasicAudio : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE put_Volume(
        LONG lVolume) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Volume(
        LONG *plVolume) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Balance(
        LONG lBalance) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Balance(
        LONG *plBalance) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBasicAudio, 0x56a868b3, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70)
#endif
#else
typedef struct IBasicAudioVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IBasicAudio* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IBasicAudio* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IBasicAudio* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IBasicAudio* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IBasicAudio methods ***/
    HRESULT (STDMETHODCALLTYPE *put_Volume)(
        IBasicAudio* This,
        LONG lVolume);

    HRESULT (STDMETHODCALLTYPE *get_Volume)(
        IBasicAudio* This,
        LONG *plVolume);

    HRESULT (STDMETHODCALLTYPE *put_Balance)(
        IBasicAudio* This,
        LONG lBalance);

    HRESULT (STDMETHODCALLTYPE *get_Balance)(
        IBasicAudio* This,
        LONG *plBalance);

    END_INTERFACE
} IBasicAudioVtbl;
interface IBasicAudio {
    CONST_VTBL IBasicAudioVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IBasicAudio_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBasicAudio_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBasicAudio_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IBasicAudio_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IBasicAudio_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IBasicAudio_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IBasicAudio_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IBasicAudio methods ***/
#define IBasicAudio_put_Volume(This,lVolume) (This)->lpVtbl->put_Volume(This,lVolume)
#define IBasicAudio_get_Volume(This,plVolume) (This)->lpVtbl->get_Volume(This,plVolume)
#define IBasicAudio_put_Balance(This,lBalance) (This)->lpVtbl->put_Balance(This,lBalance)
#define IBasicAudio_get_Balance(This,plBalance) (This)->lpVtbl->get_Balance(This,plBalance)
#endif

#endif

HRESULT STDMETHODCALLTYPE IBasicAudio_put_Volume_Proxy(
    IBasicAudio* This,
    LONG lVolume);
void __RPC_STUB IBasicAudio_put_Volume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicAudio_get_Volume_Proxy(
    IBasicAudio* This,
    LONG *plVolume);
void __RPC_STUB IBasicAudio_get_Volume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicAudio_put_Balance_Proxy(
    IBasicAudio* This,
    LONG lBalance);
void __RPC_STUB IBasicAudio_put_Balance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicAudio_get_Balance_Proxy(
    IBasicAudio* This,
    LONG *plBalance);
void __RPC_STUB IBasicAudio_get_Balance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IBasicAudio_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVideoWindow interface
 */
#ifndef __IVideoWindow_INTERFACE_DEFINED__
#define __IVideoWindow_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVideoWindow, 0x56a868b4, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56a868b4-0ad4-11ce-b03a-0020af0ba770")
IVideoWindow : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE put_Caption(
        BSTR strCaption) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Caption(
        BSTR *strCaption) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_WindowStyle(
        LONG WindowStyle) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_WindowStyle(
        LONG *WindowStyle) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_WindowStyleEx(
        LONG WindowStyleEx) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_WindowStyleEx(
        LONG *WindowStyleEx) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AutoShow(
        LONG AutoShow) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AutoShow(
        LONG *AutoShow) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_WindowState(
        LONG WindowState) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_WindowState(
        LONG *WindowState) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_BackgroundPalette(
        LONG BackgroundPalette) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BackgroundPalette(
        LONG *pBackgroundPalette) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Visible(
        LONG Visible) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Visible(
        LONG *pVisible) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Left(
        LONG Left) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Left(
        LONG *pLeft) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Width(
        LONG Width) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Width(
        LONG *pWidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Top(
        LONG Top) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Top(
        LONG *pTop) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Height(
        LONG Height) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Height(
        LONG *pHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Owner(
        OAHWND Owner) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Owner(
        OAHWND *Owner) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_MessageDrain(
        OAHWND Drain) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MessageDrain(
        OAHWND *Drain) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BorderColor(
        LONG *Color) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_BorderColor(
        LONG Color) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FullScreenMode(
        LONG *FullScreenMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_FullScreenMode(
        LONG FullScreenMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWindowForeground(
        LONG Focus) = 0;

    virtual HRESULT STDMETHODCALLTYPE NotifyOwnerMessage(
        OAHWND hwnd,
        LONG uMsg,
        LONG_PTR wParam,
        LONG_PTR lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWindowPosition(
        LONG Left,
        LONG Top,
        LONG Width,
        LONG Height) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWindowPosition(
        LONG *pLeft,
        LONG *pTop,
        LONG *pWidth,
        LONG *pHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMinIdealImageSize(
        LONG *pWidth,
        LONG *pHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMaxIdealImageSize(
        LONG *pWidth,
        LONG *pHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRestorePosition(
        LONG *pLeft,
        LONG *pTop,
        LONG *pWidth,
        LONG *pHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE HideCursor(
        LONG HideCursor) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsCursorHidden(
        LONG *CursorHidden) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IVideoWindow, 0x56a868b4, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70)
#endif
#else
typedef struct IVideoWindowVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IVideoWindow* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IVideoWindow* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IVideoWindow* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IVideoWindow* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IVideoWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *put_Caption)(
        IVideoWindow* This,
        BSTR strCaption);

    HRESULT (STDMETHODCALLTYPE *get_Caption)(
        IVideoWindow* This,
        BSTR *strCaption);

    HRESULT (STDMETHODCALLTYPE *put_WindowStyle)(
        IVideoWindow* This,
        LONG WindowStyle);

    HRESULT (STDMETHODCALLTYPE *get_WindowStyle)(
        IVideoWindow* This,
        LONG *WindowStyle);

    HRESULT (STDMETHODCALLTYPE *put_WindowStyleEx)(
        IVideoWindow* This,
        LONG WindowStyleEx);

    HRESULT (STDMETHODCALLTYPE *get_WindowStyleEx)(
        IVideoWindow* This,
        LONG *WindowStyleEx);

    HRESULT (STDMETHODCALLTYPE *put_AutoShow)(
        IVideoWindow* This,
        LONG AutoShow);

    HRESULT (STDMETHODCALLTYPE *get_AutoShow)(
        IVideoWindow* This,
        LONG *AutoShow);

    HRESULT (STDMETHODCALLTYPE *put_WindowState)(
        IVideoWindow* This,
        LONG WindowState);

    HRESULT (STDMETHODCALLTYPE *get_WindowState)(
        IVideoWindow* This,
        LONG *WindowState);

    HRESULT (STDMETHODCALLTYPE *put_BackgroundPalette)(
        IVideoWindow* This,
        LONG BackgroundPalette);

    HRESULT (STDMETHODCALLTYPE *get_BackgroundPalette)(
        IVideoWindow* This,
        LONG *pBackgroundPalette);

    HRESULT (STDMETHODCALLTYPE *put_Visible)(
        IVideoWindow* This,
        LONG Visible);

    HRESULT (STDMETHODCALLTYPE *get_Visible)(
        IVideoWindow* This,
        LONG *pVisible);

    HRESULT (STDMETHODCALLTYPE *put_Left)(
        IVideoWindow* This,
        LONG Left);

    HRESULT (STDMETHODCALLTYPE *get_Left)(
        IVideoWindow* This,
        LONG *pLeft);

    HRESULT (STDMETHODCALLTYPE *put_Width)(
        IVideoWindow* This,
        LONG Width);

    HRESULT (STDMETHODCALLTYPE *get_Width)(
        IVideoWindow* This,
        LONG *pWidth);

    HRESULT (STDMETHODCALLTYPE *put_Top)(
        IVideoWindow* This,
        LONG Top);

    HRESULT (STDMETHODCALLTYPE *get_Top)(
        IVideoWindow* This,
        LONG *pTop);

    HRESULT (STDMETHODCALLTYPE *put_Height)(
        IVideoWindow* This,
        LONG Height);

    HRESULT (STDMETHODCALLTYPE *get_Height)(
        IVideoWindow* This,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *put_Owner)(
        IVideoWindow* This,
        OAHWND Owner);

    HRESULT (STDMETHODCALLTYPE *get_Owner)(
        IVideoWindow* This,
        OAHWND *Owner);

    HRESULT (STDMETHODCALLTYPE *put_MessageDrain)(
        IVideoWindow* This,
        OAHWND Drain);

    HRESULT (STDMETHODCALLTYPE *get_MessageDrain)(
        IVideoWindow* This,
        OAHWND *Drain);

    HRESULT (STDMETHODCALLTYPE *get_BorderColor)(
        IVideoWindow* This,
        LONG *Color);

    HRESULT (STDMETHODCALLTYPE *put_BorderColor)(
        IVideoWindow* This,
        LONG Color);

    HRESULT (STDMETHODCALLTYPE *get_FullScreenMode)(
        IVideoWindow* This,
        LONG *FullScreenMode);

    HRESULT (STDMETHODCALLTYPE *put_FullScreenMode)(
        IVideoWindow* This,
        LONG FullScreenMode);

    HRESULT (STDMETHODCALLTYPE *SetWindowForeground)(
        IVideoWindow* This,
        LONG Focus);

    HRESULT (STDMETHODCALLTYPE *NotifyOwnerMessage)(
        IVideoWindow* This,
        OAHWND hwnd,
        LONG uMsg,
        LONG_PTR wParam,
        LONG_PTR lParam);

    HRESULT (STDMETHODCALLTYPE *SetWindowPosition)(
        IVideoWindow* This,
        LONG Left,
        LONG Top,
        LONG Width,
        LONG Height);

    HRESULT (STDMETHODCALLTYPE *GetWindowPosition)(
        IVideoWindow* This,
        LONG *pLeft,
        LONG *pTop,
        LONG *pWidth,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *GetMinIdealImageSize)(
        IVideoWindow* This,
        LONG *pWidth,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *GetMaxIdealImageSize)(
        IVideoWindow* This,
        LONG *pWidth,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *GetRestorePosition)(
        IVideoWindow* This,
        LONG *pLeft,
        LONG *pTop,
        LONG *pWidth,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *HideCursor)(
        IVideoWindow* This,
        LONG HideCursor);

    HRESULT (STDMETHODCALLTYPE *IsCursorHidden)(
        IVideoWindow* This,
        LONG *CursorHidden);

    END_INTERFACE
} IVideoWindowVtbl;
interface IVideoWindow {
    CONST_VTBL IVideoWindowVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVideoWindow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVideoWindow_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVideoWindow_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IVideoWindow_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IVideoWindow_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IVideoWindow_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IVideoWindow_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IVideoWindow methods ***/
#define IVideoWindow_put_Caption(This,strCaption) (This)->lpVtbl->put_Caption(This,strCaption)
#define IVideoWindow_get_Caption(This,strCaption) (This)->lpVtbl->get_Caption(This,strCaption)
#define IVideoWindow_put_WindowStyle(This,WindowStyle) (This)->lpVtbl->put_WindowStyle(This,WindowStyle)
#define IVideoWindow_get_WindowStyle(This,WindowStyle) (This)->lpVtbl->get_WindowStyle(This,WindowStyle)
#define IVideoWindow_put_WindowStyleEx(This,WindowStyleEx) (This)->lpVtbl->put_WindowStyleEx(This,WindowStyleEx)
#define IVideoWindow_get_WindowStyleEx(This,WindowStyleEx) (This)->lpVtbl->get_WindowStyleEx(This,WindowStyleEx)
#define IVideoWindow_put_AutoShow(This,AutoShow) (This)->lpVtbl->put_AutoShow(This,AutoShow)
#define IVideoWindow_get_AutoShow(This,AutoShow) (This)->lpVtbl->get_AutoShow(This,AutoShow)
#define IVideoWindow_put_WindowState(This,WindowState) (This)->lpVtbl->put_WindowState(This,WindowState)
#define IVideoWindow_get_WindowState(This,WindowState) (This)->lpVtbl->get_WindowState(This,WindowState)
#define IVideoWindow_put_BackgroundPalette(This,BackgroundPalette) (This)->lpVtbl->put_BackgroundPalette(This,BackgroundPalette)
#define IVideoWindow_get_BackgroundPalette(This,pBackgroundPalette) (This)->lpVtbl->get_BackgroundPalette(This,pBackgroundPalette)
#define IVideoWindow_put_Visible(This,Visible) (This)->lpVtbl->put_Visible(This,Visible)
#define IVideoWindow_get_Visible(This,pVisible) (This)->lpVtbl->get_Visible(This,pVisible)
#define IVideoWindow_put_Left(This,Left) (This)->lpVtbl->put_Left(This,Left)
#define IVideoWindow_get_Left(This,pLeft) (This)->lpVtbl->get_Left(This,pLeft)
#define IVideoWindow_put_Width(This,Width) (This)->lpVtbl->put_Width(This,Width)
#define IVideoWindow_get_Width(This,pWidth) (This)->lpVtbl->get_Width(This,pWidth)
#define IVideoWindow_put_Top(This,Top) (This)->lpVtbl->put_Top(This,Top)
#define IVideoWindow_get_Top(This,pTop) (This)->lpVtbl->get_Top(This,pTop)
#define IVideoWindow_put_Height(This,Height) (This)->lpVtbl->put_Height(This,Height)
#define IVideoWindow_get_Height(This,pHeight) (This)->lpVtbl->get_Height(This,pHeight)
#define IVideoWindow_put_Owner(This,Owner) (This)->lpVtbl->put_Owner(This,Owner)
#define IVideoWindow_get_Owner(This,Owner) (This)->lpVtbl->get_Owner(This,Owner)
#define IVideoWindow_put_MessageDrain(This,Drain) (This)->lpVtbl->put_MessageDrain(This,Drain)
#define IVideoWindow_get_MessageDrain(This,Drain) (This)->lpVtbl->get_MessageDrain(This,Drain)
#define IVideoWindow_get_BorderColor(This,Color) (This)->lpVtbl->get_BorderColor(This,Color)
#define IVideoWindow_put_BorderColor(This,Color) (This)->lpVtbl->put_BorderColor(This,Color)
#define IVideoWindow_get_FullScreenMode(This,FullScreenMode) (This)->lpVtbl->get_FullScreenMode(This,FullScreenMode)
#define IVideoWindow_put_FullScreenMode(This,FullScreenMode) (This)->lpVtbl->put_FullScreenMode(This,FullScreenMode)
#define IVideoWindow_SetWindowForeground(This,Focus) (This)->lpVtbl->SetWindowForeground(This,Focus)
#define IVideoWindow_NotifyOwnerMessage(This,hwnd,uMsg,wParam,lParam) (This)->lpVtbl->NotifyOwnerMessage(This,hwnd,uMsg,wParam,lParam)
#define IVideoWindow_SetWindowPosition(This,Left,Top,Width,Height) (This)->lpVtbl->SetWindowPosition(This,Left,Top,Width,Height)
#define IVideoWindow_GetWindowPosition(This,pLeft,pTop,pWidth,pHeight) (This)->lpVtbl->GetWindowPosition(This,pLeft,pTop,pWidth,pHeight)
#define IVideoWindow_GetMinIdealImageSize(This,pWidth,pHeight) (This)->lpVtbl->GetMinIdealImageSize(This,pWidth,pHeight)
#define IVideoWindow_GetMaxIdealImageSize(This,pWidth,pHeight) (This)->lpVtbl->GetMaxIdealImageSize(This,pWidth,pHeight)
#define IVideoWindow_GetRestorePosition(This,pLeft,pTop,pWidth,pHeight) (This)->lpVtbl->GetRestorePosition(This,pLeft,pTop,pWidth,pHeight)
#define IVideoWindow_HideCursor(This,HideCursor) (This)->lpVtbl->HideCursor(This,HideCursor)
#define IVideoWindow_IsCursorHidden(This,CursorHidden) (This)->lpVtbl->IsCursorHidden(This,CursorHidden)
#endif

#endif

HRESULT STDMETHODCALLTYPE IVideoWindow_put_Caption_Proxy(
    IVideoWindow* This,
    BSTR strCaption);
void __RPC_STUB IVideoWindow_put_Caption_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_Caption_Proxy(
    IVideoWindow* This,
    BSTR *strCaption);
void __RPC_STUB IVideoWindow_get_Caption_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_WindowStyle_Proxy(
    IVideoWindow* This,
    LONG WindowStyle);
void __RPC_STUB IVideoWindow_put_WindowStyle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_WindowStyle_Proxy(
    IVideoWindow* This,
    LONG *WindowStyle);
void __RPC_STUB IVideoWindow_get_WindowStyle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_WindowStyleEx_Proxy(
    IVideoWindow* This,
    LONG WindowStyleEx);
void __RPC_STUB IVideoWindow_put_WindowStyleEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_WindowStyleEx_Proxy(
    IVideoWindow* This,
    LONG *WindowStyleEx);
void __RPC_STUB IVideoWindow_get_WindowStyleEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_AutoShow_Proxy(
    IVideoWindow* This,
    LONG AutoShow);
void __RPC_STUB IVideoWindow_put_AutoShow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_AutoShow_Proxy(
    IVideoWindow* This,
    LONG *AutoShow);
void __RPC_STUB IVideoWindow_get_AutoShow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_WindowState_Proxy(
    IVideoWindow* This,
    LONG WindowState);
void __RPC_STUB IVideoWindow_put_WindowState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_WindowState_Proxy(
    IVideoWindow* This,
    LONG *WindowState);
void __RPC_STUB IVideoWindow_get_WindowState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_BackgroundPalette_Proxy(
    IVideoWindow* This,
    LONG BackgroundPalette);
void __RPC_STUB IVideoWindow_put_BackgroundPalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_BackgroundPalette_Proxy(
    IVideoWindow* This,
    LONG *pBackgroundPalette);
void __RPC_STUB IVideoWindow_get_BackgroundPalette_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_Visible_Proxy(
    IVideoWindow* This,
    LONG Visible);
void __RPC_STUB IVideoWindow_put_Visible_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_Visible_Proxy(
    IVideoWindow* This,
    LONG *pVisible);
void __RPC_STUB IVideoWindow_get_Visible_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_Left_Proxy(
    IVideoWindow* This,
    LONG Left);
void __RPC_STUB IVideoWindow_put_Left_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_Left_Proxy(
    IVideoWindow* This,
    LONG *pLeft);
void __RPC_STUB IVideoWindow_get_Left_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_Width_Proxy(
    IVideoWindow* This,
    LONG Width);
void __RPC_STUB IVideoWindow_put_Width_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_Width_Proxy(
    IVideoWindow* This,
    LONG *pWidth);
void __RPC_STUB IVideoWindow_get_Width_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_Top_Proxy(
    IVideoWindow* This,
    LONG Top);
void __RPC_STUB IVideoWindow_put_Top_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_Top_Proxy(
    IVideoWindow* This,
    LONG *pTop);
void __RPC_STUB IVideoWindow_get_Top_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_Height_Proxy(
    IVideoWindow* This,
    LONG Height);
void __RPC_STUB IVideoWindow_put_Height_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_Height_Proxy(
    IVideoWindow* This,
    LONG *pHeight);
void __RPC_STUB IVideoWindow_get_Height_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_Owner_Proxy(
    IVideoWindow* This,
    OAHWND Owner);
void __RPC_STUB IVideoWindow_put_Owner_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_Owner_Proxy(
    IVideoWindow* This,
    OAHWND *Owner);
void __RPC_STUB IVideoWindow_get_Owner_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_MessageDrain_Proxy(
    IVideoWindow* This,
    OAHWND Drain);
void __RPC_STUB IVideoWindow_put_MessageDrain_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_MessageDrain_Proxy(
    IVideoWindow* This,
    OAHWND *Drain);
void __RPC_STUB IVideoWindow_get_MessageDrain_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_BorderColor_Proxy(
    IVideoWindow* This,
    LONG *Color);
void __RPC_STUB IVideoWindow_get_BorderColor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_BorderColor_Proxy(
    IVideoWindow* This,
    LONG Color);
void __RPC_STUB IVideoWindow_put_BorderColor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_get_FullScreenMode_Proxy(
    IVideoWindow* This,
    LONG *FullScreenMode);
void __RPC_STUB IVideoWindow_get_FullScreenMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_put_FullScreenMode_Proxy(
    IVideoWindow* This,
    LONG FullScreenMode);
void __RPC_STUB IVideoWindow_put_FullScreenMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_SetWindowForeground_Proxy(
    IVideoWindow* This,
    LONG Focus);
void __RPC_STUB IVideoWindow_SetWindowForeground_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_NotifyOwnerMessage_Proxy(
    IVideoWindow* This,
    OAHWND hwnd,
    LONG uMsg,
    LONG_PTR wParam,
    LONG_PTR lParam);
void __RPC_STUB IVideoWindow_NotifyOwnerMessage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_SetWindowPosition_Proxy(
    IVideoWindow* This,
    LONG Left,
    LONG Top,
    LONG Width,
    LONG Height);
void __RPC_STUB IVideoWindow_SetWindowPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_GetWindowPosition_Proxy(
    IVideoWindow* This,
    LONG *pLeft,
    LONG *pTop,
    LONG *pWidth,
    LONG *pHeight);
void __RPC_STUB IVideoWindow_GetWindowPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_GetMinIdealImageSize_Proxy(
    IVideoWindow* This,
    LONG *pWidth,
    LONG *pHeight);
void __RPC_STUB IVideoWindow_GetMinIdealImageSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_GetMaxIdealImageSize_Proxy(
    IVideoWindow* This,
    LONG *pWidth,
    LONG *pHeight);
void __RPC_STUB IVideoWindow_GetMaxIdealImageSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_GetRestorePosition_Proxy(
    IVideoWindow* This,
    LONG *pLeft,
    LONG *pTop,
    LONG *pWidth,
    LONG *pHeight);
void __RPC_STUB IVideoWindow_GetRestorePosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_HideCursor_Proxy(
    IVideoWindow* This,
    LONG HideCursor);
void __RPC_STUB IVideoWindow_HideCursor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVideoWindow_IsCursorHidden_Proxy(
    IVideoWindow* This,
    LONG *CursorHidden);
void __RPC_STUB IVideoWindow_IsCursorHidden_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IVideoWindow_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBasicVideo interface
 */
#ifndef __IBasicVideo_INTERFACE_DEFINED__
#define __IBasicVideo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBasicVideo, 0x56a868b5, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56a868b5-0ad4-11ce-b03a-0020af0ba770")
IBasicVideo : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_AvgTimePerFrame(
        REFTIME *pAvgTimePerFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BitRate(
        LONG *pBitRate) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BitErrorRate(
        LONG *pBitErrorRate) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_VideoWidth(
        LONG *pVideoWidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_VideoHeight(
        LONG *pVideoHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SourceLeft(
        LONG SourceLeft) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SourceLeft(
        LONG *pSourceLeft) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SourceWidth(
        LONG SourceWidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SourceWidth(
        LONG *pSourceWidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SourceTop(
        LONG SourceTop) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SourceTop(
        LONG *pSourceTop) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SourceHeight(
        LONG SourceHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SourceHeight(
        LONG *pSourceHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DestinationLeft(
        LONG DestinationLeft) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DestinationLeft(
        LONG *pDestinationLeft) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DestinationWidth(
        LONG DestinationWidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DestinationWidth(
        LONG *pDestinationWidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DestinationTop(
        LONG DestinationTop) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DestinationTop(
        LONG *pDestinationTop) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DestinationHeight(
        LONG DestinationHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DestinationHeight(
        LONG *pDestinationHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSourcePosition(
        LONG Left,
        LONG Top,
        LONG Width,
        LONG Height) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSourcePosition(
        LONG *pLeft,
        LONG *pTop,
        LONG *pWidth,
        LONG *pHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDefaultSourcePosition(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDestinationPosition(
        LONG Left,
        LONG Top,
        LONG Width,
        LONG Height) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDestinationPosition(
        LONG *pLeft,
        LONG *pTop,
        LONG *pWidth,
        LONG *pHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDefaultDestinationPosition(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVideoSize(
        LONG *pWidth,
        LONG *pHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVideoPaletteEntries(
        LONG StartIndex,
        LONG Entries,
        LONG *pRetrieved,
        LONG *pPalette) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentImage(
        LONG *pBufferSize,
        LONG *pDIBImage) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsUsingDefaultSource(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsUsingDefaultDestination(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBasicVideo, 0x56a868b5, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70)
#endif
#else
typedef struct IBasicVideoVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IBasicVideo* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IBasicVideo* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IBasicVideo* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IBasicVideo* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IBasicVideo methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AvgTimePerFrame)(
        IBasicVideo* This,
        REFTIME *pAvgTimePerFrame);

    HRESULT (STDMETHODCALLTYPE *get_BitRate)(
        IBasicVideo* This,
        LONG *pBitRate);

    HRESULT (STDMETHODCALLTYPE *get_BitErrorRate)(
        IBasicVideo* This,
        LONG *pBitErrorRate);

    HRESULT (STDMETHODCALLTYPE *get_VideoWidth)(
        IBasicVideo* This,
        LONG *pVideoWidth);

    HRESULT (STDMETHODCALLTYPE *get_VideoHeight)(
        IBasicVideo* This,
        LONG *pVideoHeight);

    HRESULT (STDMETHODCALLTYPE *put_SourceLeft)(
        IBasicVideo* This,
        LONG SourceLeft);

    HRESULT (STDMETHODCALLTYPE *get_SourceLeft)(
        IBasicVideo* This,
        LONG *pSourceLeft);

    HRESULT (STDMETHODCALLTYPE *put_SourceWidth)(
        IBasicVideo* This,
        LONG SourceWidth);

    HRESULT (STDMETHODCALLTYPE *get_SourceWidth)(
        IBasicVideo* This,
        LONG *pSourceWidth);

    HRESULT (STDMETHODCALLTYPE *put_SourceTop)(
        IBasicVideo* This,
        LONG SourceTop);

    HRESULT (STDMETHODCALLTYPE *get_SourceTop)(
        IBasicVideo* This,
        LONG *pSourceTop);

    HRESULT (STDMETHODCALLTYPE *put_SourceHeight)(
        IBasicVideo* This,
        LONG SourceHeight);

    HRESULT (STDMETHODCALLTYPE *get_SourceHeight)(
        IBasicVideo* This,
        LONG *pSourceHeight);

    HRESULT (STDMETHODCALLTYPE *put_DestinationLeft)(
        IBasicVideo* This,
        LONG DestinationLeft);

    HRESULT (STDMETHODCALLTYPE *get_DestinationLeft)(
        IBasicVideo* This,
        LONG *pDestinationLeft);

    HRESULT (STDMETHODCALLTYPE *put_DestinationWidth)(
        IBasicVideo* This,
        LONG DestinationWidth);

    HRESULT (STDMETHODCALLTYPE *get_DestinationWidth)(
        IBasicVideo* This,
        LONG *pDestinationWidth);

    HRESULT (STDMETHODCALLTYPE *put_DestinationTop)(
        IBasicVideo* This,
        LONG DestinationTop);

    HRESULT (STDMETHODCALLTYPE *get_DestinationTop)(
        IBasicVideo* This,
        LONG *pDestinationTop);

    HRESULT (STDMETHODCALLTYPE *put_DestinationHeight)(
        IBasicVideo* This,
        LONG DestinationHeight);

    HRESULT (STDMETHODCALLTYPE *get_DestinationHeight)(
        IBasicVideo* This,
        LONG *pDestinationHeight);

    HRESULT (STDMETHODCALLTYPE *SetSourcePosition)(
        IBasicVideo* This,
        LONG Left,
        LONG Top,
        LONG Width,
        LONG Height);

    HRESULT (STDMETHODCALLTYPE *GetSourcePosition)(
        IBasicVideo* This,
        LONG *pLeft,
        LONG *pTop,
        LONG *pWidth,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *SetDefaultSourcePosition)(
        IBasicVideo* This);

    HRESULT (STDMETHODCALLTYPE *SetDestinationPosition)(
        IBasicVideo* This,
        LONG Left,
        LONG Top,
        LONG Width,
        LONG Height);

    HRESULT (STDMETHODCALLTYPE *GetDestinationPosition)(
        IBasicVideo* This,
        LONG *pLeft,
        LONG *pTop,
        LONG *pWidth,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *SetDefaultDestinationPosition)(
        IBasicVideo* This);

    HRESULT (STDMETHODCALLTYPE *GetVideoSize)(
        IBasicVideo* This,
        LONG *pWidth,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *GetVideoPaletteEntries)(
        IBasicVideo* This,
        LONG StartIndex,
        LONG Entries,
        LONG *pRetrieved,
        LONG *pPalette);

    HRESULT (STDMETHODCALLTYPE *GetCurrentImage)(
        IBasicVideo* This,
        LONG *pBufferSize,
        LONG *pDIBImage);

    HRESULT (STDMETHODCALLTYPE *IsUsingDefaultSource)(
        IBasicVideo* This);

    HRESULT (STDMETHODCALLTYPE *IsUsingDefaultDestination)(
        IBasicVideo* This);

    END_INTERFACE
} IBasicVideoVtbl;
interface IBasicVideo {
    CONST_VTBL IBasicVideoVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IBasicVideo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBasicVideo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBasicVideo_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IBasicVideo_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IBasicVideo_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IBasicVideo_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IBasicVideo_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IBasicVideo methods ***/
#define IBasicVideo_get_AvgTimePerFrame(This,pAvgTimePerFrame) (This)->lpVtbl->get_AvgTimePerFrame(This,pAvgTimePerFrame)
#define IBasicVideo_get_BitRate(This,pBitRate) (This)->lpVtbl->get_BitRate(This,pBitRate)
#define IBasicVideo_get_BitErrorRate(This,pBitErrorRate) (This)->lpVtbl->get_BitErrorRate(This,pBitErrorRate)
#define IBasicVideo_get_VideoWidth(This,pVideoWidth) (This)->lpVtbl->get_VideoWidth(This,pVideoWidth)
#define IBasicVideo_get_VideoHeight(This,pVideoHeight) (This)->lpVtbl->get_VideoHeight(This,pVideoHeight)
#define IBasicVideo_put_SourceLeft(This,SourceLeft) (This)->lpVtbl->put_SourceLeft(This,SourceLeft)
#define IBasicVideo_get_SourceLeft(This,pSourceLeft) (This)->lpVtbl->get_SourceLeft(This,pSourceLeft)
#define IBasicVideo_put_SourceWidth(This,SourceWidth) (This)->lpVtbl->put_SourceWidth(This,SourceWidth)
#define IBasicVideo_get_SourceWidth(This,pSourceWidth) (This)->lpVtbl->get_SourceWidth(This,pSourceWidth)
#define IBasicVideo_put_SourceTop(This,SourceTop) (This)->lpVtbl->put_SourceTop(This,SourceTop)
#define IBasicVideo_get_SourceTop(This,pSourceTop) (This)->lpVtbl->get_SourceTop(This,pSourceTop)
#define IBasicVideo_put_SourceHeight(This,SourceHeight) (This)->lpVtbl->put_SourceHeight(This,SourceHeight)
#define IBasicVideo_get_SourceHeight(This,pSourceHeight) (This)->lpVtbl->get_SourceHeight(This,pSourceHeight)
#define IBasicVideo_put_DestinationLeft(This,DestinationLeft) (This)->lpVtbl->put_DestinationLeft(This,DestinationLeft)
#define IBasicVideo_get_DestinationLeft(This,pDestinationLeft) (This)->lpVtbl->get_DestinationLeft(This,pDestinationLeft)
#define IBasicVideo_put_DestinationWidth(This,DestinationWidth) (This)->lpVtbl->put_DestinationWidth(This,DestinationWidth)
#define IBasicVideo_get_DestinationWidth(This,pDestinationWidth) (This)->lpVtbl->get_DestinationWidth(This,pDestinationWidth)
#define IBasicVideo_put_DestinationTop(This,DestinationTop) (This)->lpVtbl->put_DestinationTop(This,DestinationTop)
#define IBasicVideo_get_DestinationTop(This,pDestinationTop) (This)->lpVtbl->get_DestinationTop(This,pDestinationTop)
#define IBasicVideo_put_DestinationHeight(This,DestinationHeight) (This)->lpVtbl->put_DestinationHeight(This,DestinationHeight)
#define IBasicVideo_get_DestinationHeight(This,pDestinationHeight) (This)->lpVtbl->get_DestinationHeight(This,pDestinationHeight)
#define IBasicVideo_SetSourcePosition(This,Left,Top,Width,Height) (This)->lpVtbl->SetSourcePosition(This,Left,Top,Width,Height)
#define IBasicVideo_GetSourcePosition(This,pLeft,pTop,pWidth,pHeight) (This)->lpVtbl->GetSourcePosition(This,pLeft,pTop,pWidth,pHeight)
#define IBasicVideo_SetDefaultSourcePosition(This) (This)->lpVtbl->SetDefaultSourcePosition(This)
#define IBasicVideo_SetDestinationPosition(This,Left,Top,Width,Height) (This)->lpVtbl->SetDestinationPosition(This,Left,Top,Width,Height)
#define IBasicVideo_GetDestinationPosition(This,pLeft,pTop,pWidth,pHeight) (This)->lpVtbl->GetDestinationPosition(This,pLeft,pTop,pWidth,pHeight)
#define IBasicVideo_SetDefaultDestinationPosition(This) (This)->lpVtbl->SetDefaultDestinationPosition(This)
#define IBasicVideo_GetVideoSize(This,pWidth,pHeight) (This)->lpVtbl->GetVideoSize(This,pWidth,pHeight)
#define IBasicVideo_GetVideoPaletteEntries(This,StartIndex,Entries,pRetrieved,pPalette) (This)->lpVtbl->GetVideoPaletteEntries(This,StartIndex,Entries,pRetrieved,pPalette)
#define IBasicVideo_GetCurrentImage(This,pBufferSize,pDIBImage) (This)->lpVtbl->GetCurrentImage(This,pBufferSize,pDIBImage)
#define IBasicVideo_IsUsingDefaultSource(This) (This)->lpVtbl->IsUsingDefaultSource(This)
#define IBasicVideo_IsUsingDefaultDestination(This) (This)->lpVtbl->IsUsingDefaultDestination(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IBasicVideo_get_AvgTimePerFrame_Proxy(
    IBasicVideo* This,
    REFTIME *pAvgTimePerFrame);
void __RPC_STUB IBasicVideo_get_AvgTimePerFrame_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_BitRate_Proxy(
    IBasicVideo* This,
    LONG *pBitRate);
void __RPC_STUB IBasicVideo_get_BitRate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_BitErrorRate_Proxy(
    IBasicVideo* This,
    LONG *pBitErrorRate);
void __RPC_STUB IBasicVideo_get_BitErrorRate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_VideoWidth_Proxy(
    IBasicVideo* This,
    LONG *pVideoWidth);
void __RPC_STUB IBasicVideo_get_VideoWidth_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_VideoHeight_Proxy(
    IBasicVideo* This,
    LONG *pVideoHeight);
void __RPC_STUB IBasicVideo_get_VideoHeight_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_put_SourceLeft_Proxy(
    IBasicVideo* This,
    LONG SourceLeft);
void __RPC_STUB IBasicVideo_put_SourceLeft_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_SourceLeft_Proxy(
    IBasicVideo* This,
    LONG *pSourceLeft);
void __RPC_STUB IBasicVideo_get_SourceLeft_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_put_SourceWidth_Proxy(
    IBasicVideo* This,
    LONG SourceWidth);
void __RPC_STUB IBasicVideo_put_SourceWidth_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_SourceWidth_Proxy(
    IBasicVideo* This,
    LONG *pSourceWidth);
void __RPC_STUB IBasicVideo_get_SourceWidth_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_put_SourceTop_Proxy(
    IBasicVideo* This,
    LONG SourceTop);
void __RPC_STUB IBasicVideo_put_SourceTop_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_SourceTop_Proxy(
    IBasicVideo* This,
    LONG *pSourceTop);
void __RPC_STUB IBasicVideo_get_SourceTop_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_put_SourceHeight_Proxy(
    IBasicVideo* This,
    LONG SourceHeight);
void __RPC_STUB IBasicVideo_put_SourceHeight_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_SourceHeight_Proxy(
    IBasicVideo* This,
    LONG *pSourceHeight);
void __RPC_STUB IBasicVideo_get_SourceHeight_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_put_DestinationLeft_Proxy(
    IBasicVideo* This,
    LONG DestinationLeft);
void __RPC_STUB IBasicVideo_put_DestinationLeft_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_DestinationLeft_Proxy(
    IBasicVideo* This,
    LONG *pDestinationLeft);
void __RPC_STUB IBasicVideo_get_DestinationLeft_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_put_DestinationWidth_Proxy(
    IBasicVideo* This,
    LONG DestinationWidth);
void __RPC_STUB IBasicVideo_put_DestinationWidth_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_DestinationWidth_Proxy(
    IBasicVideo* This,
    LONG *pDestinationWidth);
void __RPC_STUB IBasicVideo_get_DestinationWidth_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_put_DestinationTop_Proxy(
    IBasicVideo* This,
    LONG DestinationTop);
void __RPC_STUB IBasicVideo_put_DestinationTop_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_DestinationTop_Proxy(
    IBasicVideo* This,
    LONG *pDestinationTop);
void __RPC_STUB IBasicVideo_get_DestinationTop_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_put_DestinationHeight_Proxy(
    IBasicVideo* This,
    LONG DestinationHeight);
void __RPC_STUB IBasicVideo_put_DestinationHeight_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_get_DestinationHeight_Proxy(
    IBasicVideo* This,
    LONG *pDestinationHeight);
void __RPC_STUB IBasicVideo_get_DestinationHeight_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_SetSourcePosition_Proxy(
    IBasicVideo* This,
    LONG Left,
    LONG Top,
    LONG Width,
    LONG Height);
void __RPC_STUB IBasicVideo_SetSourcePosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_GetSourcePosition_Proxy(
    IBasicVideo* This,
    LONG *pLeft,
    LONG *pTop,
    LONG *pWidth,
    LONG *pHeight);
void __RPC_STUB IBasicVideo_GetSourcePosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_SetDefaultSourcePosition_Proxy(
    IBasicVideo* This);
void __RPC_STUB IBasicVideo_SetDefaultSourcePosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_SetDestinationPosition_Proxy(
    IBasicVideo* This,
    LONG Left,
    LONG Top,
    LONG Width,
    LONG Height);
void __RPC_STUB IBasicVideo_SetDestinationPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_GetDestinationPosition_Proxy(
    IBasicVideo* This,
    LONG *pLeft,
    LONG *pTop,
    LONG *pWidth,
    LONG *pHeight);
void __RPC_STUB IBasicVideo_GetDestinationPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_SetDefaultDestinationPosition_Proxy(
    IBasicVideo* This);
void __RPC_STUB IBasicVideo_SetDefaultDestinationPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_GetVideoSize_Proxy(
    IBasicVideo* This,
    LONG *pWidth,
    LONG *pHeight);
void __RPC_STUB IBasicVideo_GetVideoSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_GetVideoPaletteEntries_Proxy(
    IBasicVideo* This,
    LONG StartIndex,
    LONG Entries,
    LONG *pRetrieved,
    LONG *pPalette);
void __RPC_STUB IBasicVideo_GetVideoPaletteEntries_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_GetCurrentImage_Proxy(
    IBasicVideo* This,
    LONG *pBufferSize,
    LONG *pDIBImage);
void __RPC_STUB IBasicVideo_GetCurrentImage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_IsUsingDefaultSource_Proxy(
    IBasicVideo* This);
void __RPC_STUB IBasicVideo_IsUsingDefaultSource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBasicVideo_IsUsingDefaultDestination_Proxy(
    IBasicVideo* This);
void __RPC_STUB IBasicVideo_IsUsingDefaultDestination_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IBasicVideo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBasicVideo2 interface
 */
#ifndef __IBasicVideo2_INTERFACE_DEFINED__
#define __IBasicVideo2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBasicVideo2, 0x329bb360, 0xf6ea, 0x11d1, 0x90,0x38, 0x00,0xa0,0xc9,0x69,0x72,0x98);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("329bb360-f6ea-11d1-9038-00a0c9697298")
IBasicVideo2 : public IBasicVideo
{
    virtual HRESULT STDMETHODCALLTYPE GetPreferredAspectRatio(
        LONG *plAspectX,
        LONG *plAspectY) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBasicVideo2, 0x329bb360, 0xf6ea, 0x11d1, 0x90,0x38, 0x00,0xa0,0xc9,0x69,0x72,0x98)
#endif
#else
typedef struct IBasicVideo2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IBasicVideo2* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IBasicVideo2* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IBasicVideo2* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IBasicVideo2* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IBasicVideo methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AvgTimePerFrame)(
        IBasicVideo2* This,
        REFTIME *pAvgTimePerFrame);

    HRESULT (STDMETHODCALLTYPE *get_BitRate)(
        IBasicVideo2* This,
        LONG *pBitRate);

    HRESULT (STDMETHODCALLTYPE *get_BitErrorRate)(
        IBasicVideo2* This,
        LONG *pBitErrorRate);

    HRESULT (STDMETHODCALLTYPE *get_VideoWidth)(
        IBasicVideo2* This,
        LONG *pVideoWidth);

    HRESULT (STDMETHODCALLTYPE *get_VideoHeight)(
        IBasicVideo2* This,
        LONG *pVideoHeight);

    HRESULT (STDMETHODCALLTYPE *put_SourceLeft)(
        IBasicVideo2* This,
        LONG SourceLeft);

    HRESULT (STDMETHODCALLTYPE *get_SourceLeft)(
        IBasicVideo2* This,
        LONG *pSourceLeft);

    HRESULT (STDMETHODCALLTYPE *put_SourceWidth)(
        IBasicVideo2* This,
        LONG SourceWidth);

    HRESULT (STDMETHODCALLTYPE *get_SourceWidth)(
        IBasicVideo2* This,
        LONG *pSourceWidth);

    HRESULT (STDMETHODCALLTYPE *put_SourceTop)(
        IBasicVideo2* This,
        LONG SourceTop);

    HRESULT (STDMETHODCALLTYPE *get_SourceTop)(
        IBasicVideo2* This,
        LONG *pSourceTop);

    HRESULT (STDMETHODCALLTYPE *put_SourceHeight)(
        IBasicVideo2* This,
        LONG SourceHeight);

    HRESULT (STDMETHODCALLTYPE *get_SourceHeight)(
        IBasicVideo2* This,
        LONG *pSourceHeight);

    HRESULT (STDMETHODCALLTYPE *put_DestinationLeft)(
        IBasicVideo2* This,
        LONG DestinationLeft);

    HRESULT (STDMETHODCALLTYPE *get_DestinationLeft)(
        IBasicVideo2* This,
        LONG *pDestinationLeft);

    HRESULT (STDMETHODCALLTYPE *put_DestinationWidth)(
        IBasicVideo2* This,
        LONG DestinationWidth);

    HRESULT (STDMETHODCALLTYPE *get_DestinationWidth)(
        IBasicVideo2* This,
        LONG *pDestinationWidth);

    HRESULT (STDMETHODCALLTYPE *put_DestinationTop)(
        IBasicVideo2* This,
        LONG DestinationTop);

    HRESULT (STDMETHODCALLTYPE *get_DestinationTop)(
        IBasicVideo2* This,
        LONG *pDestinationTop);

    HRESULT (STDMETHODCALLTYPE *put_DestinationHeight)(
        IBasicVideo2* This,
        LONG DestinationHeight);

    HRESULT (STDMETHODCALLTYPE *get_DestinationHeight)(
        IBasicVideo2* This,
        LONG *pDestinationHeight);

    HRESULT (STDMETHODCALLTYPE *SetSourcePosition)(
        IBasicVideo2* This,
        LONG Left,
        LONG Top,
        LONG Width,
        LONG Height);

    HRESULT (STDMETHODCALLTYPE *GetSourcePosition)(
        IBasicVideo2* This,
        LONG *pLeft,
        LONG *pTop,
        LONG *pWidth,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *SetDefaultSourcePosition)(
        IBasicVideo2* This);

    HRESULT (STDMETHODCALLTYPE *SetDestinationPosition)(
        IBasicVideo2* This,
        LONG Left,
        LONG Top,
        LONG Width,
        LONG Height);

    HRESULT (STDMETHODCALLTYPE *GetDestinationPosition)(
        IBasicVideo2* This,
        LONG *pLeft,
        LONG *pTop,
        LONG *pWidth,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *SetDefaultDestinationPosition)(
        IBasicVideo2* This);

    HRESULT (STDMETHODCALLTYPE *GetVideoSize)(
        IBasicVideo2* This,
        LONG *pWidth,
        LONG *pHeight);

    HRESULT (STDMETHODCALLTYPE *GetVideoPaletteEntries)(
        IBasicVideo2* This,
        LONG StartIndex,
        LONG Entries,
        LONG *pRetrieved,
        LONG *pPalette);

    HRESULT (STDMETHODCALLTYPE *GetCurrentImage)(
        IBasicVideo2* This,
        LONG *pBufferSize,
        LONG *pDIBImage);

    HRESULT (STDMETHODCALLTYPE *IsUsingDefaultSource)(
        IBasicVideo2* This);

    HRESULT (STDMETHODCALLTYPE *IsUsingDefaultDestination)(
        IBasicVideo2* This);

    /*** IBasicVideo2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPreferredAspectRatio)(
        IBasicVideo2* This,
        LONG *plAspectX,
        LONG *plAspectY);

    END_INTERFACE
} IBasicVideo2Vtbl;
interface IBasicVideo2 {
    CONST_VTBL IBasicVideo2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IBasicVideo2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBasicVideo2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBasicVideo2_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IBasicVideo2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IBasicVideo2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IBasicVideo2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IBasicVideo2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IBasicVideo methods ***/
#define IBasicVideo2_get_AvgTimePerFrame(This,pAvgTimePerFrame) (This)->lpVtbl->get_AvgTimePerFrame(This,pAvgTimePerFrame)
#define IBasicVideo2_get_BitRate(This,pBitRate) (This)->lpVtbl->get_BitRate(This,pBitRate)
#define IBasicVideo2_get_BitErrorRate(This,pBitErrorRate) (This)->lpVtbl->get_BitErrorRate(This,pBitErrorRate)
#define IBasicVideo2_get_VideoWidth(This,pVideoWidth) (This)->lpVtbl->get_VideoWidth(This,pVideoWidth)
#define IBasicVideo2_get_VideoHeight(This,pVideoHeight) (This)->lpVtbl->get_VideoHeight(This,pVideoHeight)
#define IBasicVideo2_put_SourceLeft(This,SourceLeft) (This)->lpVtbl->put_SourceLeft(This,SourceLeft)
#define IBasicVideo2_get_SourceLeft(This,pSourceLeft) (This)->lpVtbl->get_SourceLeft(This,pSourceLeft)
#define IBasicVideo2_put_SourceWidth(This,SourceWidth) (This)->lpVtbl->put_SourceWidth(This,SourceWidth)
#define IBasicVideo2_get_SourceWidth(This,pSourceWidth) (This)->lpVtbl->get_SourceWidth(This,pSourceWidth)
#define IBasicVideo2_put_SourceTop(This,SourceTop) (This)->lpVtbl->put_SourceTop(This,SourceTop)
#define IBasicVideo2_get_SourceTop(This,pSourceTop) (This)->lpVtbl->get_SourceTop(This,pSourceTop)
#define IBasicVideo2_put_SourceHeight(This,SourceHeight) (This)->lpVtbl->put_SourceHeight(This,SourceHeight)
#define IBasicVideo2_get_SourceHeight(This,pSourceHeight) (This)->lpVtbl->get_SourceHeight(This,pSourceHeight)
#define IBasicVideo2_put_DestinationLeft(This,DestinationLeft) (This)->lpVtbl->put_DestinationLeft(This,DestinationLeft)
#define IBasicVideo2_get_DestinationLeft(This,pDestinationLeft) (This)->lpVtbl->get_DestinationLeft(This,pDestinationLeft)
#define IBasicVideo2_put_DestinationWidth(This,DestinationWidth) (This)->lpVtbl->put_DestinationWidth(This,DestinationWidth)
#define IBasicVideo2_get_DestinationWidth(This,pDestinationWidth) (This)->lpVtbl->get_DestinationWidth(This,pDestinationWidth)
#define IBasicVideo2_put_DestinationTop(This,DestinationTop) (This)->lpVtbl->put_DestinationTop(This,DestinationTop)
#define IBasicVideo2_get_DestinationTop(This,pDestinationTop) (This)->lpVtbl->get_DestinationTop(This,pDestinationTop)
#define IBasicVideo2_put_DestinationHeight(This,DestinationHeight) (This)->lpVtbl->put_DestinationHeight(This,DestinationHeight)
#define IBasicVideo2_get_DestinationHeight(This,pDestinationHeight) (This)->lpVtbl->get_DestinationHeight(This,pDestinationHeight)
#define IBasicVideo2_SetSourcePosition(This,Left,Top,Width,Height) (This)->lpVtbl->SetSourcePosition(This,Left,Top,Width,Height)
#define IBasicVideo2_GetSourcePosition(This,pLeft,pTop,pWidth,pHeight) (This)->lpVtbl->GetSourcePosition(This,pLeft,pTop,pWidth,pHeight)
#define IBasicVideo2_SetDefaultSourcePosition(This) (This)->lpVtbl->SetDefaultSourcePosition(This)
#define IBasicVideo2_SetDestinationPosition(This,Left,Top,Width,Height) (This)->lpVtbl->SetDestinationPosition(This,Left,Top,Width,Height)
#define IBasicVideo2_GetDestinationPosition(This,pLeft,pTop,pWidth,pHeight) (This)->lpVtbl->GetDestinationPosition(This,pLeft,pTop,pWidth,pHeight)
#define IBasicVideo2_SetDefaultDestinationPosition(This) (This)->lpVtbl->SetDefaultDestinationPosition(This)
#define IBasicVideo2_GetVideoSize(This,pWidth,pHeight) (This)->lpVtbl->GetVideoSize(This,pWidth,pHeight)
#define IBasicVideo2_GetVideoPaletteEntries(This,StartIndex,Entries,pRetrieved,pPalette) (This)->lpVtbl->GetVideoPaletteEntries(This,StartIndex,Entries,pRetrieved,pPalette)
#define IBasicVideo2_GetCurrentImage(This,pBufferSize,pDIBImage) (This)->lpVtbl->GetCurrentImage(This,pBufferSize,pDIBImage)
#define IBasicVideo2_IsUsingDefaultSource(This) (This)->lpVtbl->IsUsingDefaultSource(This)
#define IBasicVideo2_IsUsingDefaultDestination(This) (This)->lpVtbl->IsUsingDefaultDestination(This)
/*** IBasicVideo2 methods ***/
#define IBasicVideo2_GetPreferredAspectRatio(This,plAspectX,plAspectY) (This)->lpVtbl->GetPreferredAspectRatio(This,plAspectX,plAspectY)
#endif

#endif

HRESULT STDMETHODCALLTYPE IBasicVideo2_GetPreferredAspectRatio_Proxy(
    IBasicVideo2* This,
    LONG *plAspectX,
    LONG *plAspectY);
void __RPC_STUB IBasicVideo2_GetPreferredAspectRatio_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IBasicVideo2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IMediaEvent interface
 */
#ifndef __IMediaEvent_INTERFACE_DEFINED__
#define __IMediaEvent_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMediaEvent, 0x56a868b6, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56a868b6-0ad4-11ce-b03a-0020af0ba770")
IMediaEvent : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE GetEventHandle(
        OAEVENT *hEvent) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEvent(
        LONG *lEventCode,
        LONG_PTR *lParam1,
        LONG_PTR *lParam2,
        LONG msTimeout) = 0;

    virtual HRESULT STDMETHODCALLTYPE WaitForCompletion(
        LONG msTimeout,
        LONG *pEvCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE CancelDefaultHandling(
        LONG lEvCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE RestoreDefaultHandling(
        LONG lEvCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE FreeEventParams(
        LONG lEvCode,
        LONG_PTR lParam1,
        LONG_PTR lParam2) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMediaEvent, 0x56a868b6, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70)
#endif
#else
typedef struct IMediaEventVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IMediaEvent* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IMediaEvent* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IMediaEvent* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IMediaEvent* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IMediaEvent methods ***/
    HRESULT (STDMETHODCALLTYPE *GetEventHandle)(
        IMediaEvent* This,
        OAEVENT *hEvent);

    HRESULT (STDMETHODCALLTYPE *GetEvent)(
        IMediaEvent* This,
        LONG *lEventCode,
        LONG_PTR *lParam1,
        LONG_PTR *lParam2,
        LONG msTimeout);

    HRESULT (STDMETHODCALLTYPE *WaitForCompletion)(
        IMediaEvent* This,
        LONG msTimeout,
        LONG *pEvCode);

    HRESULT (STDMETHODCALLTYPE *CancelDefaultHandling)(
        IMediaEvent* This,
        LONG lEvCode);

    HRESULT (STDMETHODCALLTYPE *RestoreDefaultHandling)(
        IMediaEvent* This,
        LONG lEvCode);

    HRESULT (STDMETHODCALLTYPE *FreeEventParams)(
        IMediaEvent* This,
        LONG lEvCode,
        LONG_PTR lParam1,
        LONG_PTR lParam2);

    END_INTERFACE
} IMediaEventVtbl;
interface IMediaEvent {
    CONST_VTBL IMediaEventVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMediaEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaEvent_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IMediaEvent_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IMediaEvent_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IMediaEvent_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IMediaEvent_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IMediaEvent methods ***/
#define IMediaEvent_GetEventHandle(This,hEvent) (This)->lpVtbl->GetEventHandle(This,hEvent)
#define IMediaEvent_GetEvent(This,lEventCode,lParam1,lParam2,msTimeout) (This)->lpVtbl->GetEvent(This,lEventCode,lParam1,lParam2,msTimeout)
#define IMediaEvent_WaitForCompletion(This,msTimeout,pEvCode) (This)->lpVtbl->WaitForCompletion(This,msTimeout,pEvCode)
#define IMediaEvent_CancelDefaultHandling(This,lEvCode) (This)->lpVtbl->CancelDefaultHandling(This,lEvCode)
#define IMediaEvent_RestoreDefaultHandling(This,lEvCode) (This)->lpVtbl->RestoreDefaultHandling(This,lEvCode)
#define IMediaEvent_FreeEventParams(This,lEvCode,lParam1,lParam2) (This)->lpVtbl->FreeEventParams(This,lEvCode,lParam1,lParam2)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMediaEvent_GetEventHandle_Proxy(
    IMediaEvent* This,
    OAEVENT *hEvent);
void __RPC_STUB IMediaEvent_GetEventHandle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaEvent_GetEvent_Proxy(
    IMediaEvent* This,
    LONG *lEventCode,
    LONG_PTR *lParam1,
    LONG_PTR *lParam2,
    LONG msTimeout);
void __RPC_STUB IMediaEvent_GetEvent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaEvent_WaitForCompletion_Proxy(
    IMediaEvent* This,
    LONG msTimeout,
    LONG *pEvCode);
void __RPC_STUB IMediaEvent_WaitForCompletion_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaEvent_CancelDefaultHandling_Proxy(
    IMediaEvent* This,
    LONG lEvCode);
void __RPC_STUB IMediaEvent_CancelDefaultHandling_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaEvent_RestoreDefaultHandling_Proxy(
    IMediaEvent* This,
    LONG lEvCode);
void __RPC_STUB IMediaEvent_RestoreDefaultHandling_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaEvent_FreeEventParams_Proxy(
    IMediaEvent* This,
    LONG lEvCode,
    LONG_PTR lParam1,
    LONG_PTR lParam2);
void __RPC_STUB IMediaEvent_FreeEventParams_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IMediaEvent_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IMediaEventEx interface
 */
#ifndef __IMediaEventEx_INTERFACE_DEFINED__
#define __IMediaEventEx_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMediaEventEx, 0x56a868c0, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56a868c0-0ad4-11ce-b03a-0020af0ba770")
IMediaEventEx : public IMediaEvent
{
    virtual HRESULT STDMETHODCALLTYPE SetNotifyWindow(
        OAHWND hwnd,
        LONG lMsg,
        LONG_PTR lInstanceData) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNotifyFlags(
        LONG lNoNotifyFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNotifyFlags(
        LONG *lplNoNotifyFlags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMediaEventEx, 0x56a868c0, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70)
#endif
#else
typedef struct IMediaEventExVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IMediaEventEx* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IMediaEventEx* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IMediaEventEx* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IMediaEventEx* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IMediaEvent methods ***/
    HRESULT (STDMETHODCALLTYPE *GetEventHandle)(
        IMediaEventEx* This,
        OAEVENT *hEvent);

    HRESULT (STDMETHODCALLTYPE *GetEvent)(
        IMediaEventEx* This,
        LONG *lEventCode,
        LONG_PTR *lParam1,
        LONG_PTR *lParam2,
        LONG msTimeout);

    HRESULT (STDMETHODCALLTYPE *WaitForCompletion)(
        IMediaEventEx* This,
        LONG msTimeout,
        LONG *pEvCode);

    HRESULT (STDMETHODCALLTYPE *CancelDefaultHandling)(
        IMediaEventEx* This,
        LONG lEvCode);

    HRESULT (STDMETHODCALLTYPE *RestoreDefaultHandling)(
        IMediaEventEx* This,
        LONG lEvCode);

    HRESULT (STDMETHODCALLTYPE *FreeEventParams)(
        IMediaEventEx* This,
        LONG lEvCode,
        LONG_PTR lParam1,
        LONG_PTR lParam2);

    /*** IMediaEventEx methods ***/
    HRESULT (STDMETHODCALLTYPE *SetNotifyWindow)(
        IMediaEventEx* This,
        OAHWND hwnd,
        LONG lMsg,
        LONG_PTR lInstanceData);

    HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)(
        IMediaEventEx* This,
        LONG lNoNotifyFlags);

    HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)(
        IMediaEventEx* This,
        LONG *lplNoNotifyFlags);

    END_INTERFACE
} IMediaEventExVtbl;
interface IMediaEventEx {
    CONST_VTBL IMediaEventExVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMediaEventEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaEventEx_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaEventEx_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IMediaEventEx_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IMediaEventEx_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IMediaEventEx_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IMediaEventEx_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IMediaEvent methods ***/
#define IMediaEventEx_GetEventHandle(This,hEvent) (This)->lpVtbl->GetEventHandle(This,hEvent)
#define IMediaEventEx_GetEvent(This,lEventCode,lParam1,lParam2,msTimeout) (This)->lpVtbl->GetEvent(This,lEventCode,lParam1,lParam2,msTimeout)
#define IMediaEventEx_WaitForCompletion(This,msTimeout,pEvCode) (This)->lpVtbl->WaitForCompletion(This,msTimeout,pEvCode)
#define IMediaEventEx_CancelDefaultHandling(This,lEvCode) (This)->lpVtbl->CancelDefaultHandling(This,lEvCode)
#define IMediaEventEx_RestoreDefaultHandling(This,lEvCode) (This)->lpVtbl->RestoreDefaultHandling(This,lEvCode)
#define IMediaEventEx_FreeEventParams(This,lEvCode,lParam1,lParam2) (This)->lpVtbl->FreeEventParams(This,lEvCode,lParam1,lParam2)
/*** IMediaEventEx methods ***/
#define IMediaEventEx_SetNotifyWindow(This,hwnd,lMsg,lInstanceData) (This)->lpVtbl->SetNotifyWindow(This,hwnd,lMsg,lInstanceData)
#define IMediaEventEx_SetNotifyFlags(This,lNoNotifyFlags) (This)->lpVtbl->SetNotifyFlags(This,lNoNotifyFlags)
#define IMediaEventEx_GetNotifyFlags(This,lplNoNotifyFlags) (This)->lpVtbl->GetNotifyFlags(This,lplNoNotifyFlags)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMediaEventEx_SetNotifyWindow_Proxy(
    IMediaEventEx* This,
    OAHWND hwnd,
    LONG lMsg,
    LONG_PTR lInstanceData);
void __RPC_STUB IMediaEventEx_SetNotifyWindow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaEventEx_SetNotifyFlags_Proxy(
    IMediaEventEx* This,
    LONG lNoNotifyFlags);
void __RPC_STUB IMediaEventEx_SetNotifyFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaEventEx_GetNotifyFlags_Proxy(
    IMediaEventEx* This,
    LONG *lplNoNotifyFlags);
void __RPC_STUB IMediaEventEx_GetNotifyFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IMediaEventEx_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IMediaPosition interface
 */
#ifndef __IMediaPosition_INTERFACE_DEFINED__
#define __IMediaPosition_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMediaPosition, 0x56a868b2, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56a868b2-0ad4-11ce-b03a-0020af0ba770")
IMediaPosition : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Duration(
        REFTIME *plength) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_CurrentPosition(
        REFTIME llTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentPosition(
        REFTIME *pllTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_StopTime(
        REFTIME *pllTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_StopTime(
        REFTIME llTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PrerollTime(
        REFTIME *pllTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_PrerollTime(
        REFTIME llTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Rate(
        double dRate) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Rate(
        double *pdRate) = 0;

    virtual HRESULT STDMETHODCALLTYPE CanSeekForward(
        LONG *pCanSeekForward) = 0;

    virtual HRESULT STDMETHODCALLTYPE CanSeekBackward(
        LONG *pCanSeekBackward) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMediaPosition, 0x56a868b2, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70)
#endif
#else
typedef struct IMediaPositionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IMediaPosition* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IMediaPosition* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IMediaPosition* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IMediaPosition* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IMediaPosition methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Duration)(
        IMediaPosition* This,
        REFTIME *plength);

    HRESULT (STDMETHODCALLTYPE *put_CurrentPosition)(
        IMediaPosition* This,
        REFTIME llTime);

    HRESULT (STDMETHODCALLTYPE *get_CurrentPosition)(
        IMediaPosition* This,
        REFTIME *pllTime);

    HRESULT (STDMETHODCALLTYPE *get_StopTime)(
        IMediaPosition* This,
        REFTIME *pllTime);

    HRESULT (STDMETHODCALLTYPE *put_StopTime)(
        IMediaPosition* This,
        REFTIME llTime);

    HRESULT (STDMETHODCALLTYPE *get_PrerollTime)(
        IMediaPosition* This,
        REFTIME *pllTime);

    HRESULT (STDMETHODCALLTYPE *put_PrerollTime)(
        IMediaPosition* This,
        REFTIME llTime);

    HRESULT (STDMETHODCALLTYPE *put_Rate)(
        IMediaPosition* This,
        double dRate);

    HRESULT (STDMETHODCALLTYPE *get_Rate)(
        IMediaPosition* This,
        double *pdRate);

    HRESULT (STDMETHODCALLTYPE *CanSeekForward)(
        IMediaPosition* This,
        LONG *pCanSeekForward);

    HRESULT (STDMETHODCALLTYPE *CanSeekBackward)(
        IMediaPosition* This,
        LONG *pCanSeekBackward);

    END_INTERFACE
} IMediaPositionVtbl;
interface IMediaPosition {
    CONST_VTBL IMediaPositionVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMediaPosition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaPosition_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaPosition_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IMediaPosition_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IMediaPosition_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IMediaPosition_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IMediaPosition_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IMediaPosition methods ***/
#define IMediaPosition_get_Duration(This,plength) (This)->lpVtbl->get_Duration(This,plength)
#define IMediaPosition_put_CurrentPosition(This,llTime) (This)->lpVtbl->put_CurrentPosition(This,llTime)
#define IMediaPosition_get_CurrentPosition(This,pllTime) (This)->lpVtbl->get_CurrentPosition(This,pllTime)
#define IMediaPosition_get_StopTime(This,pllTime) (This)->lpVtbl->get_StopTime(This,pllTime)
#define IMediaPosition_put_StopTime(This,llTime) (This)->lpVtbl->put_StopTime(This,llTime)
#define IMediaPosition_get_PrerollTime(This,pllTime) (This)->lpVtbl->get_PrerollTime(This,pllTime)
#define IMediaPosition_put_PrerollTime(This,llTime) (This)->lpVtbl->put_PrerollTime(This,llTime)
#define IMediaPosition_put_Rate(This,dRate) (This)->lpVtbl->put_Rate(This,dRate)
#define IMediaPosition_get_Rate(This,pdRate) (This)->lpVtbl->get_Rate(This,pdRate)
#define IMediaPosition_CanSeekForward(This,pCanSeekForward) (This)->lpVtbl->CanSeekForward(This,pCanSeekForward)
#define IMediaPosition_CanSeekBackward(This,pCanSeekBackward) (This)->lpVtbl->CanSeekBackward(This,pCanSeekBackward)
#endif

#endif

HRESULT STDMETHODCALLTYPE IMediaPosition_get_Duration_Proxy(
    IMediaPosition* This,
    REFTIME *plength);
void __RPC_STUB IMediaPosition_get_Duration_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaPosition_put_CurrentPosition_Proxy(
    IMediaPosition* This,
    REFTIME llTime);
void __RPC_STUB IMediaPosition_put_CurrentPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaPosition_get_CurrentPosition_Proxy(
    IMediaPosition* This,
    REFTIME *pllTime);
void __RPC_STUB IMediaPosition_get_CurrentPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaPosition_get_StopTime_Proxy(
    IMediaPosition* This,
    REFTIME *pllTime);
void __RPC_STUB IMediaPosition_get_StopTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaPosition_put_StopTime_Proxy(
    IMediaPosition* This,
    REFTIME llTime);
void __RPC_STUB IMediaPosition_put_StopTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaPosition_get_PrerollTime_Proxy(
    IMediaPosition* This,
    REFTIME *pllTime);
void __RPC_STUB IMediaPosition_get_PrerollTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaPosition_put_PrerollTime_Proxy(
    IMediaPosition* This,
    REFTIME llTime);
void __RPC_STUB IMediaPosition_put_PrerollTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaPosition_put_Rate_Proxy(
    IMediaPosition* This,
    double dRate);
void __RPC_STUB IMediaPosition_put_Rate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaPosition_get_Rate_Proxy(
    IMediaPosition* This,
    double *pdRate);
void __RPC_STUB IMediaPosition_get_Rate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaPosition_CanSeekForward_Proxy(
    IMediaPosition* This,
    LONG *pCanSeekForward);
void __RPC_STUB IMediaPosition_CanSeekForward_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMediaPosition_CanSeekBackward_Proxy(
    IMediaPosition* This,
    LONG *pCanSeekBackward);
void __RPC_STUB IMediaPosition_CanSeekBackward_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IMediaPosition_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __WIDL_CONTROL_H */
