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

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __control_h__
#define __control_h__

/* Forward declarations */

#ifndef __IMediaControl_FWD_DEFINED__
#define __IMediaControl_FWD_DEFINED__
typedef interface IMediaControl IMediaControl;
#ifdef __cplusplus
interface IMediaControl;
#endif /* __cplusplus */
#endif

#ifndef __IBasicAudio_FWD_DEFINED__
#define __IBasicAudio_FWD_DEFINED__
typedef interface IBasicAudio IBasicAudio;
#ifdef __cplusplus
interface IBasicAudio;
#endif /* __cplusplus */
#endif

#ifndef __IVideoWindow_FWD_DEFINED__
#define __IVideoWindow_FWD_DEFINED__
typedef interface IVideoWindow IVideoWindow;
#ifdef __cplusplus
interface IVideoWindow;
#endif /* __cplusplus */
#endif

#ifndef __IBasicVideo_FWD_DEFINED__
#define __IBasicVideo_FWD_DEFINED__
typedef interface IBasicVideo IBasicVideo;
#ifdef __cplusplus
interface IBasicVideo;
#endif /* __cplusplus */
#endif

#ifndef __IBasicVideo2_FWD_DEFINED__
#define __IBasicVideo2_FWD_DEFINED__
typedef interface IBasicVideo2 IBasicVideo2;
#ifdef __cplusplus
interface IBasicVideo2;
#endif /* __cplusplus */
#endif

#ifndef __IMediaEvent_FWD_DEFINED__
#define __IMediaEvent_FWD_DEFINED__
typedef interface IMediaEvent IMediaEvent;
#ifdef __cplusplus
interface IMediaEvent;
#endif /* __cplusplus */
#endif

#ifndef __IMediaEventEx_FWD_DEFINED__
#define __IMediaEventEx_FWD_DEFINED__
typedef interface IMediaEventEx IMediaEventEx;
#ifdef __cplusplus
interface IMediaEventEx;
#endif /* __cplusplus */
#endif

#ifndef __IMediaPosition_FWD_DEFINED__
#define __IMediaPosition_FWD_DEFINED__
typedef interface IMediaPosition IMediaPosition;
#ifdef __cplusplus
interface IMediaPosition;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <oaidl.h>

#ifdef __cplusplus
extern "C" {
#endif


DEFINE_GUID(LIBID_QuartzTypeLib, 0x56a868b0, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);

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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IMediaControl_QueryInterface(IMediaControl* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IMediaControl_AddRef(IMediaControl* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IMediaControl_Release(IMediaControl* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IMediaControl_GetTypeInfoCount(IMediaControl* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IMediaControl_GetTypeInfo(IMediaControl* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IMediaControl_GetIDsOfNames(IMediaControl* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IMediaControl_Invoke(IMediaControl* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IMediaControl methods ***/
static FORCEINLINE HRESULT IMediaControl_Run(IMediaControl* This) {
    return This->lpVtbl->Run(This);
}
static FORCEINLINE HRESULT IMediaControl_Pause(IMediaControl* This) {
    return This->lpVtbl->Pause(This);
}
static FORCEINLINE HRESULT IMediaControl_Stop(IMediaControl* This) {
    return This->lpVtbl->Stop(This);
}
static FORCEINLINE HRESULT IMediaControl_GetState(IMediaControl* This,LONG msTimeout,OAFilterState *pfs) {
    return This->lpVtbl->GetState(This,msTimeout,pfs);
}
static FORCEINLINE HRESULT IMediaControl_RenderFile(IMediaControl* This,BSTR strFilename) {
    return This->lpVtbl->RenderFile(This,strFilename);
}
static FORCEINLINE HRESULT IMediaControl_AddSourceFilter(IMediaControl* This,BSTR strFilename,IDispatch **ppUnk) {
    return This->lpVtbl->AddSourceFilter(This,strFilename,ppUnk);
}
static FORCEINLINE HRESULT IMediaControl_get_FilterCollection(IMediaControl* This,IDispatch **ppUnk) {
    return This->lpVtbl->get_FilterCollection(This,ppUnk);
}
static FORCEINLINE HRESULT IMediaControl_get_RegFilterCollection(IMediaControl* This,IDispatch **ppUnk) {
    return This->lpVtbl->get_RegFilterCollection(This,ppUnk);
}
static FORCEINLINE HRESULT IMediaControl_StopWhenReady(IMediaControl* This) {
    return This->lpVtbl->StopWhenReady(This);
}
#endif
#endif

#endif


#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBasicAudio_QueryInterface(IBasicAudio* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBasicAudio_AddRef(IBasicAudio* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBasicAudio_Release(IBasicAudio* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IBasicAudio_GetTypeInfoCount(IBasicAudio* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IBasicAudio_GetTypeInfo(IBasicAudio* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IBasicAudio_GetIDsOfNames(IBasicAudio* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IBasicAudio_Invoke(IBasicAudio* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IBasicAudio methods ***/
static FORCEINLINE HRESULT IBasicAudio_put_Volume(IBasicAudio* This,LONG lVolume) {
    return This->lpVtbl->put_Volume(This,lVolume);
}
static FORCEINLINE HRESULT IBasicAudio_get_Volume(IBasicAudio* This,LONG *plVolume) {
    return This->lpVtbl->get_Volume(This,plVolume);
}
static FORCEINLINE HRESULT IBasicAudio_put_Balance(IBasicAudio* This,LONG lBalance) {
    return This->lpVtbl->put_Balance(This,lBalance);
}
static FORCEINLINE HRESULT IBasicAudio_get_Balance(IBasicAudio* This,LONG *plBalance) {
    return This->lpVtbl->get_Balance(This,plBalance);
}
#endif
#endif

#endif


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

#endif


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

#endif


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

#endif


#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IMediaEvent_QueryInterface(IMediaEvent* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IMediaEvent_AddRef(IMediaEvent* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IMediaEvent_Release(IMediaEvent* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IMediaEvent_GetTypeInfoCount(IMediaEvent* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IMediaEvent_GetTypeInfo(IMediaEvent* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IMediaEvent_GetIDsOfNames(IMediaEvent* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IMediaEvent_Invoke(IMediaEvent* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IMediaEvent methods ***/
static FORCEINLINE HRESULT IMediaEvent_GetEventHandle(IMediaEvent* This,OAEVENT *hEvent) {
    return This->lpVtbl->GetEventHandle(This,hEvent);
}
static FORCEINLINE HRESULT IMediaEvent_GetEvent(IMediaEvent* This,LONG *lEventCode,LONG_PTR *lParam1,LONG_PTR *lParam2,LONG msTimeout) {
    return This->lpVtbl->GetEvent(This,lEventCode,lParam1,lParam2,msTimeout);
}
static FORCEINLINE HRESULT IMediaEvent_WaitForCompletion(IMediaEvent* This,LONG msTimeout,LONG *pEvCode) {
    return This->lpVtbl->WaitForCompletion(This,msTimeout,pEvCode);
}
static FORCEINLINE HRESULT IMediaEvent_CancelDefaultHandling(IMediaEvent* This,LONG lEvCode) {
    return This->lpVtbl->CancelDefaultHandling(This,lEvCode);
}
static FORCEINLINE HRESULT IMediaEvent_RestoreDefaultHandling(IMediaEvent* This,LONG lEvCode) {
    return This->lpVtbl->RestoreDefaultHandling(This,lEvCode);
}
static FORCEINLINE HRESULT IMediaEvent_FreeEventParams(IMediaEvent* This,LONG lEvCode,LONG_PTR lParam1,LONG_PTR lParam2) {
    return This->lpVtbl->FreeEventParams(This,lEvCode,lParam1,lParam2);
}
#endif
#endif

#endif


#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IMediaEventEx_QueryInterface(IMediaEventEx* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IMediaEventEx_AddRef(IMediaEventEx* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IMediaEventEx_Release(IMediaEventEx* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IMediaEventEx_GetTypeInfoCount(IMediaEventEx* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IMediaEventEx_GetTypeInfo(IMediaEventEx* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IMediaEventEx_GetIDsOfNames(IMediaEventEx* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IMediaEventEx_Invoke(IMediaEventEx* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IMediaEvent methods ***/
static FORCEINLINE HRESULT IMediaEventEx_GetEventHandle(IMediaEventEx* This,OAEVENT *hEvent) {
    return This->lpVtbl->GetEventHandle(This,hEvent);
}
static FORCEINLINE HRESULT IMediaEventEx_GetEvent(IMediaEventEx* This,LONG *lEventCode,LONG_PTR *lParam1,LONG_PTR *lParam2,LONG msTimeout) {
    return This->lpVtbl->GetEvent(This,lEventCode,lParam1,lParam2,msTimeout);
}
static FORCEINLINE HRESULT IMediaEventEx_WaitForCompletion(IMediaEventEx* This,LONG msTimeout,LONG *pEvCode) {
    return This->lpVtbl->WaitForCompletion(This,msTimeout,pEvCode);
}
static FORCEINLINE HRESULT IMediaEventEx_CancelDefaultHandling(IMediaEventEx* This,LONG lEvCode) {
    return This->lpVtbl->CancelDefaultHandling(This,lEvCode);
}
static FORCEINLINE HRESULT IMediaEventEx_RestoreDefaultHandling(IMediaEventEx* This,LONG lEvCode) {
    return This->lpVtbl->RestoreDefaultHandling(This,lEvCode);
}
static FORCEINLINE HRESULT IMediaEventEx_FreeEventParams(IMediaEventEx* This,LONG lEvCode,LONG_PTR lParam1,LONG_PTR lParam2) {
    return This->lpVtbl->FreeEventParams(This,lEvCode,lParam1,lParam2);
}
/*** IMediaEventEx methods ***/
static FORCEINLINE HRESULT IMediaEventEx_SetNotifyWindow(IMediaEventEx* This,OAHWND hwnd,LONG lMsg,LONG_PTR lInstanceData) {
    return This->lpVtbl->SetNotifyWindow(This,hwnd,lMsg,lInstanceData);
}
static FORCEINLINE HRESULT IMediaEventEx_SetNotifyFlags(IMediaEventEx* This,LONG lNoNotifyFlags) {
    return This->lpVtbl->SetNotifyFlags(This,lNoNotifyFlags);
}
static FORCEINLINE HRESULT IMediaEventEx_GetNotifyFlags(IMediaEventEx* This,LONG *lplNoNotifyFlags) {
    return This->lpVtbl->GetNotifyFlags(This,lplNoNotifyFlags);
}
#endif
#endif

#endif


#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IMediaPosition_QueryInterface(IMediaPosition* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IMediaPosition_AddRef(IMediaPosition* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IMediaPosition_Release(IMediaPosition* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IMediaPosition_GetTypeInfoCount(IMediaPosition* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IMediaPosition_GetTypeInfo(IMediaPosition* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IMediaPosition_GetIDsOfNames(IMediaPosition* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IMediaPosition_Invoke(IMediaPosition* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IMediaPosition methods ***/
static FORCEINLINE HRESULT IMediaPosition_get_Duration(IMediaPosition* This,REFTIME *plength) {
    return This->lpVtbl->get_Duration(This,plength);
}
static FORCEINLINE HRESULT IMediaPosition_put_CurrentPosition(IMediaPosition* This,REFTIME llTime) {
    return This->lpVtbl->put_CurrentPosition(This,llTime);
}
static FORCEINLINE HRESULT IMediaPosition_get_CurrentPosition(IMediaPosition* This,REFTIME *pllTime) {
    return This->lpVtbl->get_CurrentPosition(This,pllTime);
}
static FORCEINLINE HRESULT IMediaPosition_get_StopTime(IMediaPosition* This,REFTIME *pllTime) {
    return This->lpVtbl->get_StopTime(This,pllTime);
}
static FORCEINLINE HRESULT IMediaPosition_put_StopTime(IMediaPosition* This,REFTIME llTime) {
    return This->lpVtbl->put_StopTime(This,llTime);
}
static FORCEINLINE HRESULT IMediaPosition_get_PrerollTime(IMediaPosition* This,REFTIME *pllTime) {
    return This->lpVtbl->get_PrerollTime(This,pllTime);
}
static FORCEINLINE HRESULT IMediaPosition_put_PrerollTime(IMediaPosition* This,REFTIME llTime) {
    return This->lpVtbl->put_PrerollTime(This,llTime);
}
static FORCEINLINE HRESULT IMediaPosition_put_Rate(IMediaPosition* This,double dRate) {
    return This->lpVtbl->put_Rate(This,dRate);
}
static FORCEINLINE HRESULT IMediaPosition_get_Rate(IMediaPosition* This,double *pdRate) {
    return This->lpVtbl->get_Rate(This,pdRate);
}
static FORCEINLINE HRESULT IMediaPosition_CanSeekForward(IMediaPosition* This,LONG *pCanSeekForward) {
    return This->lpVtbl->CanSeekForward(This,pCanSeekForward);
}
static FORCEINLINE HRESULT IMediaPosition_CanSeekBackward(IMediaPosition* This,LONG *pCanSeekBackward) {
    return This->lpVtbl->CanSeekBackward(This,pCanSeekBackward);
}
#endif
#endif

#endif


#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 /* __control_h__ */
