[DSHOW-10] Some Headers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

More headers for the work I am doing on DirectShow. The file amvideo.idl 
doesn't exist in the DirectShow SDK (version 8), but I hope this is an 
appropriate extension. 

Rob

Changelog:
- Add amvideo.{idl,h} and aviriff.h
Index: wine/include/Makefile.in
===================================================================
RCS file: /home/wine/wine/include/Makefile.in,v
retrieving revision 1.108
diff -u -r1.108 Makefile.in
--- wine/include/Makefile.in	4 Oct 2003 03:48:11 -0000	1.108
+++ wine/include/Makefile.in	21 Oct 2003 21:24:04 -0000
@@ -5,6 +5,7 @@
 MODULE	  = none
 
 IDL_SRCS = \
+	amvideo.idl \
 	comcat.idl \
 	docobj.idl \
 	exdisp.idl \
@@ -29,6 +30,7 @@
 WINDOWS_INCLUDES = \
 	accctrl.h \
 	audevcod.h \
+	aviriff.h \
 	basetsd.h \
 	cderr.h \
 	cguid.h \
--- /dev/null	Mon Jun 24 01:53:01 2002
+++ wine/include/amvideo.idl	Tue Oct 21 22:33:55 2003
@@ -0,0 +1,232 @@
+/*
+ * Copyright (C) 2003 Robert Shearman
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+import "objidl.idl";
+
+/* trick widl into thinking that it knows the DirectDraw types 
+ * as there is no IDL file for them (yet) */
+cpp_quote("#if 0")
+typedef void * LPDIRECTDRAW;
+typedef void DDSURFACEDESC,DDCAPS;
+typedef DWORD RGBQUAD;
+typedef LONGLONG REFERENCE_TIME;
+typedef struct
+{
+    DWORD 	biSize;
+    LONG  	biWidth;
+    LONG  	biHeight;
+    WORD 	biPlanes;
+    WORD 	biBitCount;
+    DWORD 	biCompression;
+    DWORD 	biSizeImage;
+    LONG  	biXPelsPerMeter;
+    LONG  	biYPelsPerMeter;
+    DWORD 	biClrUsed;
+    DWORD 	biClrImportant;
+} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
+cpp_quote("#endif")
+
+cpp_quote("#include <ddraw.h>")
+
+cpp_quote("#define AMDDS_NONE 0x00")
+cpp_quote("#define AMDDS_DCIPS 0x01")
+cpp_quote("#define AMDDS_PS 0x02")
+cpp_quote("#define AMDDS_RGBOVR 0x04")
+cpp_quote("#define AMDDS_YUVOVR 0x08")
+cpp_quote("#define AMDDS_RGBOFF 0x10")
+cpp_quote("#define AMDDS_YUVOFF 0x20")
+cpp_quote("#define AMDDS_RGBFLP 0x40")
+cpp_quote("#define AMDDS_YUVFLP 0x80")
+cpp_quote("#define AMDDS_ALL 0xFF")
+cpp_quote("#define AMDDS_DEFAULT AMDDS_ALL")
+
+cpp_quote("#define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)")
+cpp_quote("#define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)")
+cpp_quote("#define AMDSS_PRIMARY (AMDDS_DCIPS | AMDDS_PS)")
+
+[
+    object,
+    pointer_default(unique)
+]
+interface IDirectDrawVideo : IUnknown
+{
+    HRESULT GetSwitches([out] DWORD * pSwitches);
+    HRESULT SetSwitches([in] DWORD Switches);
+    HRESULT GetCaps([out] DDCAPS * pCaps);
+    HRESULT GetEmulatedCaps([out] DDCAPS *pCaps);
+    HRESULT GetSurfaceDesc([out] DDSURFACEDESC * pSurfaceDesc);
+    HRESULT GetFourCCCodes([out] DWORD * pCount, [out] DWORD * pCodes);
+    HRESULT SetDirectDraw([in] LPDIRECTDRAW pDirectDraw);
+    HRESULT GetDirectDraw([out] LPDIRECTDRAW * ppDirectDraw);
+    HRESULT GetSurfaceType([out] DWORD * pSurfaceType);
+    HRESULT SetDefault();
+    HRESULT UseScanLine([in] long UseScanLine);
+    HRESULT CanUseScanLine([out] long * UseScanLine);
+    HRESULT UseOverlayStretch([in] long UseOverlayStretch);
+    HRESULT CanUseOverlayStretch([out] long * UseOverlayStretch);
+    HRESULT UseWhenFullScreen([in] long UseWhenFullScreen);
+    HRESULT WillUseFullScreen([out] long * UseWhenFullScreen);
+}
+
+[
+    object,
+    pointer_default(unique)
+]
+interface IQualProp : IUnknown
+{
+    HRESULT get_FramesDroppedInRenderer([out] int * pcFrames);
+    HRESULT get_FramesDrawn([out] int * pcFramesDrawn);
+    HRESULT get_AvgFrameRate([out] int * piAvgFrameRate);
+    HRESULT get_Jitter([out] int * iJitter);
+    HRESULT get_AvgSyncOffset([out] int * piAvg);
+    HRESULT get_DevSyncOffset([out] int * piDev);
+}
+
+[
+    object,
+    pointer_default(unique)
+]
+interface IFullScreenVideo : IUnknown
+{
+    HRESULT CountModes([out] long * pModes);
+    HRESULT GetModeInfo([in] long Mode, [out] long * pWidth, [out] long * pHeight, [out] long * pDepth);
+    HRESULT GetCurrentMode([out] long * pMode);
+    HRESULT IsModeAvailable([in] long Mode);
+    HRESULT IsModeEnabled([in] long Mode);
+    HRESULT SetEnabled([in] long Mode, [in] long bEnabled);
+    HRESULT GetClipFactor([out] long * pClipFactor);
+    HRESULT SetClipFactor([in] long ClipFactor);
+    HRESULT SetMessageDrain([in] HWND hwnd);
+    HRESULT GetMessageDrain([out] HWND * hwnd);
+    HRESULT SetMonitor([in] long Monitor);
+    HRESULT GetMonitor([out] long * Monitor);
+    HRESULT HideOnDeactivate([in] long Hide);
+    HRESULT IsHideOnDeactivate();
+    HRESULT SetCaption([in] BSTR strCaption);
+    HRESULT GetCaption([out] BSTR * pstrCaption);
+    HRESULT SetDefault();
+}
+
+[
+    object,
+    pointer_default(unique)
+]
+interface IFullScreenVideoEx : IFullScreenVideo
+{
+    HRESULT SetAcceleratorTable([in] HWND hwnd, [in] HACCEL hAccel);
+    HRESULT GetAcceleratorTable([out] HWND * phwnd, [out] HACCEL * phAccel);
+    HRESULT KeepPixelAspectRatio([in] long KeepAspect);
+    /* FIXME: not sure is this next method is an [out] */
+    HRESULT IsKeepPixelAspectRatio([out] long * pKeepAspect);
+}
+
+[
+    object,
+    pointer_default(unique)
+]
+interface IBaseVideoMixer : IUnknown
+{
+    HRESULT SetLeadPin([in] int iPin);
+    HRESULT GetLeadPin([out] int * piPin);
+    HRESULT GetInputPinCount([out] int * piPinCount);
+    HRESULT IsUsingClock([out] int * pbValue);
+    HRESULT SetUsingClock([in] int bValue);
+    HRESULT GetClockPeriod([out] int * pbValue);
+    HRESULT SetClockPeriod([in] int bValue);
+}
+
+#define iPALETTE_COLORS 256
+#define iMASK_COLORS 3
+
+cpp_quote("#define iPALETTE_COLORS 256")
+cpp_quote("#define iEGA_COLORS 16")
+cpp_quote("#define iMASK_COLORS 3")
+cpp_quote("#define iTRUECOLOR 16")
+cpp_quote("#define iRED 0")
+cpp_quote("#define iGREEN 1")
+cpp_quote("#define iBLUE 2")
+cpp_quote("#define iPALETTE 8")
+cpp_quote("#define iMAXBITS 8")
+
+typedef struct tag_TRUECOLORINFO
+{
+    DWORD dwBitMasks[iMASK_COLORS];
+    RGBQUAD bmiColors[iPALETTE_COLORS];
+} TRUECOLORINFO;
+
+typedef struct tagVIDEOINFOHEADER
+{
+    RECT rcSource;
+    RECT rcTarget;
+    DWORD dwBitRate;
+    DWORD dwBitErrorRate;
+    REFERENCE_TIME AvgTimePerFrame;
+
+    BITMAPINFOHEADER bmiHeader;
+} VIDEOINFOHEADER;
+
+typedef struct tagVIDEOINFO
+{
+    RECT rcSource;
+    RECT rcTarget;
+    DWORD dwBitRate;
+    DWORD dwBitErrorRate;
+    REFERENCE_TIME AvgTimePerFrame;
+
+    BITMAPINFOHEADER bmiHeader;
+
+    union
+    {
+        RGBQUAD bmiColors[iPALETTE_COLORS];
+        DWORD dwBitMasks[iMASK_COLORS];
+        TRUECOLORINFO TrueColorInfo;
+    };
+} VIDEOINFO;
+
+typedef struct tagMPEG1VIDEOINFO
+{
+    VIDEOINFOHEADER hdr;
+    DWORD dwStartTimeCode;
+    DWORD cbSequenceHeader;
+    BYTE bSequenceHeader[1];
+} MPEG1VIDEOINFO;
+
+cpp_quote("#define MAX_SIZE_MPEG1_SEQUENCE_INFO 140")
+cpp_quote("#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)")
+
+typedef struct tagAnalogVideoInfo
+{
+    RECT rcSource;
+    RECT rcTarget;
+    DWORD dwActiveWidth;
+    DWORD dwActiveHeight;
+    REFERENCE_TIME AvgTimePerFrame;
+} ANALOGVIDEOINFO;
+
+typedef enum
+{
+    AM_PROPERTY_FRAMESTEP_STEP = 0x01,
+    AM_PROPERTY_FRAMESTEP_CANCEL = 0x02,
+    AM_PROPERTY_FRAMESTEP_CANSTEP = 0x03,
+    AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x04
+} AM_PROPERTY_FRAMESTEP;
+
+typedef struct _AM_FRAMESTEP_STEP
+{
+    DWORD dwFramesToStep;
+} AM_FRAMESTEP_STEP;
--- /dev/null	Mon Jun 24 01:53:01 2002
+++ wine/include/aviriff.h	Tue Oct 21 22:33:58 2003
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2003 Robert Shearman
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+typedef struct _riffchunk
+{
+    FOURCC fcc;
+    DWORD cb;
+} RIFFCHUNK, * LPRIFFCHUNK;
+
+typedef struct _rifflist
+{
+    FOURCC fcc;
+    DWORD cb;
+    FOURCC fccListType;
+} RIFFLIST, * LPRIFFLIST;
+
+#define RIFFROUND(cb) ((cb) + ((cb)&1))
+#define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk)+sizeof(RIFFCHUNK)+RIFFROUND(((LPRIFFCHUNK)pChunk)->cb))
+
+/* flags for dwFlags member of AVIMAINHEADER */
+#define AVIF_HASINDEX       0x00000010
+#define AVIF_MUSTUSEINDEX   0x00000020
+#define AVIF_ISINTERLEAVED  0x00000100
+#define AVIF_TRUSTCKTYPE    0x00000800
+#define AVIF_WASCAPTUREFILE 0x00010000
+#define AVIF_COPYRIGHTED    0x00020000
+
+typedef struct _avimainheader
+{
+    FOURCC fcc;
+    DWORD cb;
+    DWORD dwMicroSecPerFrame;
+    DWORD dwMaxBytesPerSec;
+    DWORD dwPaddingGranularity;
+    DWORD dwFlags;
+    DWORD dwTotalFrames;
+    DWORD dwInitialFrames;
+    DWORD dwStreams;
+    DWORD dwSuggestedBufferSize;
+    DWORD dwWidth;
+    DWORD dwHeight;
+    DWORD dwReserved[4];
+} AVIMAINHEADER;
+
+typedef struct _aviextheader
+{
+    FOURCC fcc;
+    DWORD cb;
+    DWORD dwGrandFrames;
+    DWORD dwFuture[61];
+} AVIEXTHEADER;
+
+
+/* flags for dwFlags member of AVISTREAMHEADER */
+#define AVISF_DISABLED         0x00000001
+#define AVISF_VIDEO_PALCHANGES 0x00010000
+
+typedef struct _avistreamheader
+{
+    FOURCC fcc;
+    DWORD cb;
+    FOURCC fccType;
+    FOURCC fccHandler;
+    DWORD dwFlags;
+    WORD wPriority;
+    WORD wLanguage;
+    DWORD dwInitialFrames;
+    DWORD dwScale;
+    DWORD dwRate;
+    DWORD dwStart;
+    DWORD dwLength;
+    DWORD dwSuggestedBufferSize;
+    DWORD dwQuality;
+    DWORD dwSampleSize;
+    struct
+    {
+        short int left;
+        short int top;
+        short int right;
+        short int bottom;
+    } rcFrame;
+} AVISTREAMHEADER;
+
+/* flags for dwFlags member of _avioldindex_entry */
+#define AVIIF_LIST       0x00000001
+#define AVIIF_KEYFRAME   0x00000010
+#define AVIIF_NO_TIME    0x00000100
+#define AVIIF_COMPRESSOR 0x0FFF0000
+
+typedef struct _avioldindex
+{
+    FOURCC fcc;
+    DWORD cb;
+    struct _avioldindex_entry
+    {
+        DWORD dwChunkId;
+        DWORD dwFlags;
+        DWORD dwOffset;
+        DWORD dwSize;
+    } aIndex[0];
+} AVIOLDINDEX;
+
+typedef union _timecode
+{
+    struct
+    {
+        WORD wFrameRate;
+        WORD wFrameFract;
+        LONG cFrames;
+    } DUMMYSTRUCTNAME;
+    DWORDLONG qw;
+} TIMECODE;
+
+#define TIMECODE_RATE_30DROP 0
+
+/* flags for dwSMPTEflags member of TIMECODEDATA */
+#define TIMECODE_SMPTE_BINARY_GROUP 0x07
+#define TIMECODE_SMPTE_COLOR_FRAME  0x08
+
+typedef struct _timecodedata
+{
+    TIMECODE time;
+    DWORD dwSMPTEflags;
+    DWORD dwUser;
+} TIMECODEDATA;
+
+#define AVI_INDEX_OF_INDEXES      0x00
+#define AVI_INDEX_OF_CHUNKS       0x01
+#define AVI_INDEX_OF_TIMED_CHUNKS 0x02
+#define AVI_INDEX_OF_SUB_2FIELD   0x03
+#define AVI_INDEX_IS_DATA         0x80
+
+#define AVI_INDEX_SUB_DEFAULT     0x00
+#define AVI_INDEX_SUB_2FIELD      0x01
+
+typedef struct _avimetaindex
+{
+    FOURCC fcc;
+    UINT cb;
+    WORD wLongsPerEntry;
+    BYTE bIndexSubType;
+    BYTE bIndexType;
+    DWORD nEntriesInUse;
+    DWORD dwChunkId;
+    DWORD dwReserved[3];
+    DWORD adwIndex[0];
+} AVIMETAINDEX;
+
+/* FIXME: index structures missing */
--- /dev/null	Mon Jun 24 01:53:01 2002
+++ wine/include/amvideo.h	Tue Oct 21 22:34:01 2003
@@ -0,0 +1,1375 @@
+/*** Autogenerated by WIDL 0.1 from amvideo.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_AMVIDEO_H
+#define __WIDL_AMVIDEO_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <objidl.h>
+#if 0
+typedef void *LPDIRECTDRAW;
+
+typedef void DDSURFACEDESC, DDCAPS;
+
+typedef DWORD RGBQUAD;
+
+typedef LONGLONG REFERENCE_TIME;
+
+typedef struct {
+    DWORD biSize;
+    LONG biWidth;
+    LONG biHeight;
+    WORD biPlanes;
+    WORD biBitCount;
+    DWORD biCompression;
+    DWORD biSizeImage;
+    LONG biXPelsPerMeter;
+    LONG biYPelsPerMeter;
+    DWORD biClrUsed;
+    DWORD biClrImportant;
+} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
+
+#endif
+#include <ddraw.h>
+#define AMDDS_NONE 0x00
+#define AMDDS_DCIPS 0x01
+#define AMDDS_PS 0x02
+#define AMDDS_RGBOVR 0x04
+#define AMDDS_YUVOVR 0x08
+#define AMDDS_RGBOFF 0x10
+#define AMDDS_YUVOFF 0x20
+#define AMDDS_RGBFLP 0x40
+#define AMDDS_YUVFLP 0x80
+#define AMDDS_ALL 0xFF
+#define AMDDS_DEFAULT AMDDS_ALL
+#define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)
+#define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)
+#define AMDSS_PRIMARY (AMDDS_DCIPS | AMDDS_PS)
+#ifndef __IDirectDrawVideo_FWD_DEFINED__
+#define __IDirectDrawVideo_FWD_DEFINED__
+typedef struct IDirectDrawVideo IDirectDrawVideo;
+#endif
+
+/*****************************************************************************
+ * IDirectDrawVideo interface
+ */
+#ifndef __IDirectDrawVideo_INTERFACE_DEFINED__
+#define __IDirectDrawVideo_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IDirectDrawVideo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetSwitches(
+        DWORD* pSwitches) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSwitches(
+        DWORD Switches) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCaps(
+        DDCAPS* pCaps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEmulatedCaps(
+        DDCAPS* pCaps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSurfaceDesc(
+        DDSURFACEDESC* pSurfaceDesc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFourCCCodes(
+        DWORD* pCount,
+        DWORD* pCodes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDirectDraw(
+        LPDIRECTDRAW pDirectDraw) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDirectDraw(
+        LPDIRECTDRAW* ppDirectDraw) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSurfaceType(
+        DWORD* pSurfaceType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDefault(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UseScanLine(
+        long UseScanLine) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CanUseScanLine(
+        long* UseScanLine) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UseOverlayStretch(
+        long UseOverlayStretch) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CanUseOverlayStretch(
+        long* UseOverlayStretch) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UseWhenFullScreen(
+        long UseWhenFullScreen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WillUseFullScreen(
+        long* UseWhenFullScreen) = 0;
+
+};
+#else
+typedef struct IDirectDrawVideoVtbl IDirectDrawVideoVtbl;
+struct IDirectDrawVideo {
+    const IDirectDrawVideoVtbl* lpVtbl;
+};
+struct IDirectDrawVideoVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDirectDrawVideo* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDirectDrawVideo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDirectDrawVideo* This);
+
+    /*** IDirectDrawVideo methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetSwitches)(
+        IDirectDrawVideo* This,
+        DWORD* pSwitches);
+
+    HRESULT (STDMETHODCALLTYPE *SetSwitches)(
+        IDirectDrawVideo* This,
+        DWORD Switches);
+
+    HRESULT (STDMETHODCALLTYPE *GetCaps)(
+        IDirectDrawVideo* This,
+        DDCAPS* pCaps);
+
+    HRESULT (STDMETHODCALLTYPE *GetEmulatedCaps)(
+        IDirectDrawVideo* This,
+        DDCAPS* pCaps);
+
+    HRESULT (STDMETHODCALLTYPE *GetSurfaceDesc)(
+        IDirectDrawVideo* This,
+        DDSURFACEDESC* pSurfaceDesc);
+
+    HRESULT (STDMETHODCALLTYPE *GetFourCCCodes)(
+        IDirectDrawVideo* This,
+        DWORD* pCount,
+        DWORD* pCodes);
+
+    HRESULT (STDMETHODCALLTYPE *SetDirectDraw)(
+        IDirectDrawVideo* This,
+        LPDIRECTDRAW pDirectDraw);
+
+    HRESULT (STDMETHODCALLTYPE *GetDirectDraw)(
+        IDirectDrawVideo* This,
+        LPDIRECTDRAW* ppDirectDraw);
+
+    HRESULT (STDMETHODCALLTYPE *GetSurfaceType)(
+        IDirectDrawVideo* This,
+        DWORD* pSurfaceType);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefault)(
+        IDirectDrawVideo* This);
+
+    HRESULT (STDMETHODCALLTYPE *UseScanLine)(
+        IDirectDrawVideo* This,
+        long UseScanLine);
+
+    HRESULT (STDMETHODCALLTYPE *CanUseScanLine)(
+        IDirectDrawVideo* This,
+        long* UseScanLine);
+
+    HRESULT (STDMETHODCALLTYPE *UseOverlayStretch)(
+        IDirectDrawVideo* This,
+        long UseOverlayStretch);
+
+    HRESULT (STDMETHODCALLTYPE *CanUseOverlayStretch)(
+        IDirectDrawVideo* This,
+        long* UseOverlayStretch);
+
+    HRESULT (STDMETHODCALLTYPE *UseWhenFullScreen)(
+        IDirectDrawVideo* This,
+        long UseWhenFullScreen);
+
+    HRESULT (STDMETHODCALLTYPE *WillUseFullScreen)(
+        IDirectDrawVideo* This,
+        long* UseWhenFullScreen);
+
+};
+
+/*** IUnknown methods ***/
+#define IDirectDrawVideo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawVideo_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawVideo_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDrawVideo methods ***/
+#define IDirectDrawVideo_GetSwitches(p,a) (p)->lpVtbl->GetSwitches(p,a)
+#define IDirectDrawVideo_SetSwitches(p,a) (p)->lpVtbl->SetSwitches(p,a)
+#define IDirectDrawVideo_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawVideo_GetEmulatedCaps(p,a) (p)->lpVtbl->GetEmulatedCaps(p,a)
+#define IDirectDrawVideo_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawVideo_GetFourCCCodes(p,a,b) (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDrawVideo_SetDirectDraw(p,a) (p)->lpVtbl->SetDirectDraw(p,a)
+#define IDirectDrawVideo_GetDirectDraw(p,a) (p)->lpVtbl->GetDirectDraw(p,a)
+#define IDirectDrawVideo_GetSurfaceType(p,a) (p)->lpVtbl->GetSurfaceType(p,a)
+#define IDirectDrawVideo_SetDefault(p) (p)->lpVtbl->SetDefault(p)
+#define IDirectDrawVideo_UseScanLine(p,a) (p)->lpVtbl->UseScanLine(p,a)
+#define IDirectDrawVideo_CanUseScanLine(p,a) (p)->lpVtbl->CanUseScanLine(p,a)
+#define IDirectDrawVideo_UseOverlayStretch(p,a) (p)->lpVtbl->UseOverlayStretch(p,a)
+#define IDirectDrawVideo_CanUseOverlayStretch(p,a) (p)->lpVtbl->CanUseOverlayStretch(p,a)
+#define IDirectDrawVideo_UseWhenFullScreen(p,a) (p)->lpVtbl->UseWhenFullScreen(p,a)
+#define IDirectDrawVideo_WillUseFullScreen(p,a) (p)->lpVtbl->WillUseFullScreen(p,a)
+
+#endif
+
+#define IDirectDrawVideo_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IDirectDrawVideo methods ***/ \
+    STDMETHOD_(HRESULT,GetSwitches)(THIS_ DWORD* pSwitches) PURE; \
+    STDMETHOD_(HRESULT,SetSwitches)(THIS_ DWORD Switches) PURE; \
+    STDMETHOD_(HRESULT,GetCaps)(THIS_ DDCAPS* pCaps) PURE; \
+    STDMETHOD_(HRESULT,GetEmulatedCaps)(THIS_ DDCAPS* pCaps) PURE; \
+    STDMETHOD_(HRESULT,GetSurfaceDesc)(THIS_ DDSURFACEDESC* pSurfaceDesc) PURE; \
+    STDMETHOD_(HRESULT,GetFourCCCodes)(THIS_ DWORD* pCount, DWORD* pCodes) PURE; \
+    STDMETHOD_(HRESULT,SetDirectDraw)(THIS_ LPDIRECTDRAW pDirectDraw) PURE; \
+    STDMETHOD_(HRESULT,GetDirectDraw)(THIS_ LPDIRECTDRAW* ppDirectDraw) PURE; \
+    STDMETHOD_(HRESULT,GetSurfaceType)(THIS_ DWORD* pSurfaceType) PURE; \
+    STDMETHOD_(HRESULT,SetDefault)(THIS) PURE; \
+    STDMETHOD_(HRESULT,UseScanLine)(THIS_ long UseScanLine) PURE; \
+    STDMETHOD_(HRESULT,CanUseScanLine)(THIS_ long* UseScanLine) PURE; \
+    STDMETHOD_(HRESULT,UseOverlayStretch)(THIS_ long UseOverlayStretch) PURE; \
+    STDMETHOD_(HRESULT,CanUseOverlayStretch)(THIS_ long* UseOverlayStretch) PURE; \
+    STDMETHOD_(HRESULT,UseWhenFullScreen)(THIS_ long UseWhenFullScreen) PURE; \
+    STDMETHOD_(HRESULT,WillUseFullScreen)(THIS_ long* UseWhenFullScreen) PURE;
+
+HRESULT CALLBACK IDirectDrawVideo_GetSwitches_Proxy(
+    IDirectDrawVideo* This,
+    DWORD* pSwitches);
+void __RPC_STUB IDirectDrawVideo_GetSwitches_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_SetSwitches_Proxy(
+    IDirectDrawVideo* This,
+    DWORD Switches);
+void __RPC_STUB IDirectDrawVideo_SetSwitches_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_GetCaps_Proxy(
+    IDirectDrawVideo* This,
+    DDCAPS* pCaps);
+void __RPC_STUB IDirectDrawVideo_GetCaps_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_GetEmulatedCaps_Proxy(
+    IDirectDrawVideo* This,
+    DDCAPS* pCaps);
+void __RPC_STUB IDirectDrawVideo_GetEmulatedCaps_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_GetSurfaceDesc_Proxy(
+    IDirectDrawVideo* This,
+    DDSURFACEDESC* pSurfaceDesc);
+void __RPC_STUB IDirectDrawVideo_GetSurfaceDesc_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_GetFourCCCodes_Proxy(
+    IDirectDrawVideo* This,
+    DWORD* pCount,
+    DWORD* pCodes);
+void __RPC_STUB IDirectDrawVideo_GetFourCCCodes_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_SetDirectDraw_Proxy(
+    IDirectDrawVideo* This,
+    LPDIRECTDRAW pDirectDraw);
+void __RPC_STUB IDirectDrawVideo_SetDirectDraw_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_GetDirectDraw_Proxy(
+    IDirectDrawVideo* This,
+    LPDIRECTDRAW* ppDirectDraw);
+void __RPC_STUB IDirectDrawVideo_GetDirectDraw_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_GetSurfaceType_Proxy(
+    IDirectDrawVideo* This,
+    DWORD* pSurfaceType);
+void __RPC_STUB IDirectDrawVideo_GetSurfaceType_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_SetDefault_Proxy(
+    IDirectDrawVideo* This);
+void __RPC_STUB IDirectDrawVideo_SetDefault_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_UseScanLine_Proxy(
+    IDirectDrawVideo* This,
+    long UseScanLine);
+void __RPC_STUB IDirectDrawVideo_UseScanLine_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_CanUseScanLine_Proxy(
+    IDirectDrawVideo* This,
+    long* UseScanLine);
+void __RPC_STUB IDirectDrawVideo_CanUseScanLine_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_UseOverlayStretch_Proxy(
+    IDirectDrawVideo* This,
+    long UseOverlayStretch);
+void __RPC_STUB IDirectDrawVideo_UseOverlayStretch_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_CanUseOverlayStretch_Proxy(
+    IDirectDrawVideo* This,
+    long* UseOverlayStretch);
+void __RPC_STUB IDirectDrawVideo_CanUseOverlayStretch_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_UseWhenFullScreen_Proxy(
+    IDirectDrawVideo* This,
+    long UseWhenFullScreen);
+void __RPC_STUB IDirectDrawVideo_UseWhenFullScreen_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDirectDrawVideo_WillUseFullScreen_Proxy(
+    IDirectDrawVideo* This,
+    long* UseWhenFullScreen);
+void __RPC_STUB IDirectDrawVideo_WillUseFullScreen_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDirectDrawVideo_INTERFACE_DEFINED__ */
+
+#ifndef __IQualProp_FWD_DEFINED__
+#define __IQualProp_FWD_DEFINED__
+typedef struct IQualProp IQualProp;
+#endif
+
+/*****************************************************************************
+ * IQualProp interface
+ */
+#ifndef __IQualProp_INTERFACE_DEFINED__
+#define __IQualProp_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IQualProp : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_FramesDroppedInRenderer(
+        int* pcFrames) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FramesDrawn(
+        int* pcFramesDrawn) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AvgFrameRate(
+        int* piAvgFrameRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Jitter(
+        int* iJitter) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AvgSyncOffset(
+        int* piAvg) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DevSyncOffset(
+        int* piDev) = 0;
+
+};
+#else
+typedef struct IQualPropVtbl IQualPropVtbl;
+struct IQualProp {
+    const IQualPropVtbl* lpVtbl;
+};
+struct IQualPropVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IQualProp* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IQualProp* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IQualProp* This);
+
+    /*** IQualProp methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_FramesDroppedInRenderer)(
+        IQualProp* This,
+        int* pcFrames);
+
+    HRESULT (STDMETHODCALLTYPE *get_FramesDrawn)(
+        IQualProp* This,
+        int* pcFramesDrawn);
+
+    HRESULT (STDMETHODCALLTYPE *get_AvgFrameRate)(
+        IQualProp* This,
+        int* piAvgFrameRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_Jitter)(
+        IQualProp* This,
+        int* iJitter);
+
+    HRESULT (STDMETHODCALLTYPE *get_AvgSyncOffset)(
+        IQualProp* This,
+        int* piAvg);
+
+    HRESULT (STDMETHODCALLTYPE *get_DevSyncOffset)(
+        IQualProp* This,
+        int* piDev);
+
+};
+
+/*** IUnknown methods ***/
+#define IQualProp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IQualProp_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IQualProp_Release(p) (p)->lpVtbl->Release(p)
+/*** IQualProp methods ***/
+#define IQualProp_get_FramesDroppedInRenderer(p,a) (p)->lpVtbl->get_FramesDroppedInRenderer(p,a)
+#define IQualProp_get_FramesDrawn(p,a) (p)->lpVtbl->get_FramesDrawn(p,a)
+#define IQualProp_get_AvgFrameRate(p,a) (p)->lpVtbl->get_AvgFrameRate(p,a)
+#define IQualProp_get_Jitter(p,a) (p)->lpVtbl->get_Jitter(p,a)
+#define IQualProp_get_AvgSyncOffset(p,a) (p)->lpVtbl->get_AvgSyncOffset(p,a)
+#define IQualProp_get_DevSyncOffset(p,a) (p)->lpVtbl->get_DevSyncOffset(p,a)
+
+#endif
+
+#define IQualProp_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IQualProp methods ***/ \
+    STDMETHOD_(HRESULT,get_FramesDroppedInRenderer)(THIS_ int* pcFrames) PURE; \
+    STDMETHOD_(HRESULT,get_FramesDrawn)(THIS_ int* pcFramesDrawn) PURE; \
+    STDMETHOD_(HRESULT,get_AvgFrameRate)(THIS_ int* piAvgFrameRate) PURE; \
+    STDMETHOD_(HRESULT,get_Jitter)(THIS_ int* iJitter) PURE; \
+    STDMETHOD_(HRESULT,get_AvgSyncOffset)(THIS_ int* piAvg) PURE; \
+    STDMETHOD_(HRESULT,get_DevSyncOffset)(THIS_ int* piDev) PURE;
+
+HRESULT CALLBACK IQualProp_get_FramesDroppedInRenderer_Proxy(
+    IQualProp* This,
+    int* pcFrames);
+void __RPC_STUB IQualProp_get_FramesDroppedInRenderer_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IQualProp_get_FramesDrawn_Proxy(
+    IQualProp* This,
+    int* pcFramesDrawn);
+void __RPC_STUB IQualProp_get_FramesDrawn_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IQualProp_get_AvgFrameRate_Proxy(
+    IQualProp* This,
+    int* piAvgFrameRate);
+void __RPC_STUB IQualProp_get_AvgFrameRate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IQualProp_get_Jitter_Proxy(
+    IQualProp* This,
+    int* iJitter);
+void __RPC_STUB IQualProp_get_Jitter_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IQualProp_get_AvgSyncOffset_Proxy(
+    IQualProp* This,
+    int* piAvg);
+void __RPC_STUB IQualProp_get_AvgSyncOffset_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IQualProp_get_DevSyncOffset_Proxy(
+    IQualProp* This,
+    int* piDev);
+void __RPC_STUB IQualProp_get_DevSyncOffset_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IQualProp_INTERFACE_DEFINED__ */
+
+#ifndef __IFullScreenVideo_FWD_DEFINED__
+#define __IFullScreenVideo_FWD_DEFINED__
+typedef struct IFullScreenVideo IFullScreenVideo;
+#endif
+
+/*****************************************************************************
+ * IFullScreenVideo interface
+ */
+#ifndef __IFullScreenVideo_INTERFACE_DEFINED__
+#define __IFullScreenVideo_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IFullScreenVideo : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE CountModes(
+        long* pModes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetModeInfo(
+        long Mode,
+        long* pWidth,
+        long* pHeight,
+        long* pDepth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCurrentMode(
+        long* pMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsModeAvailable(
+        long Mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsModeEnabled(
+        long Mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetEnabled(
+        long Mode,
+        long bEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClipFactor(
+        long* pClipFactor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClipFactor(
+        long ClipFactor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMessageDrain(
+        HWND hwnd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMessageDrain(
+        HWND* hwnd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMonitor(
+        long Monitor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMonitor(
+        long* Monitor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HideOnDeactivate(
+        long Hide) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsHideOnDeactivate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCaption(
+        BSTR strCaption) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCaption(
+        BSTR* pstrCaption) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDefault(
+        ) = 0;
+
+};
+#else
+typedef struct IFullScreenVideoVtbl IFullScreenVideoVtbl;
+struct IFullScreenVideo {
+    const IFullScreenVideoVtbl* lpVtbl;
+};
+struct IFullScreenVideoVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFullScreenVideo* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFullScreenVideo* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFullScreenVideo* This);
+
+    /*** IFullScreenVideo methods ***/
+    HRESULT (STDMETHODCALLTYPE *CountModes)(
+        IFullScreenVideo* This,
+        long* pModes);
+
+    HRESULT (STDMETHODCALLTYPE *GetModeInfo)(
+        IFullScreenVideo* This,
+        long Mode,
+        long* pWidth,
+        long* pHeight,
+        long* pDepth);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurrentMode)(
+        IFullScreenVideo* This,
+        long* pMode);
+
+    HRESULT (STDMETHODCALLTYPE *IsModeAvailable)(
+        IFullScreenVideo* This,
+        long Mode);
+
+    HRESULT (STDMETHODCALLTYPE *IsModeEnabled)(
+        IFullScreenVideo* This,
+        long Mode);
+
+    HRESULT (STDMETHODCALLTYPE *SetEnabled)(
+        IFullScreenVideo* This,
+        long Mode,
+        long bEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *GetClipFactor)(
+        IFullScreenVideo* This,
+        long* pClipFactor);
+
+    HRESULT (STDMETHODCALLTYPE *SetClipFactor)(
+        IFullScreenVideo* This,
+        long ClipFactor);
+
+    HRESULT (STDMETHODCALLTYPE *SetMessageDrain)(
+        IFullScreenVideo* This,
+        HWND hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *GetMessageDrain)(
+        IFullScreenVideo* This,
+        HWND* hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *SetMonitor)(
+        IFullScreenVideo* This,
+        long Monitor);
+
+    HRESULT (STDMETHODCALLTYPE *GetMonitor)(
+        IFullScreenVideo* This,
+        long* Monitor);
+
+    HRESULT (STDMETHODCALLTYPE *HideOnDeactivate)(
+        IFullScreenVideo* This,
+        long Hide);
+
+    HRESULT (STDMETHODCALLTYPE *IsHideOnDeactivate)(
+        IFullScreenVideo* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetCaption)(
+        IFullScreenVideo* This,
+        BSTR strCaption);
+
+    HRESULT (STDMETHODCALLTYPE *GetCaption)(
+        IFullScreenVideo* This,
+        BSTR* pstrCaption);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefault)(
+        IFullScreenVideo* This);
+
+};
+
+/*** IUnknown methods ***/
+#define IFullScreenVideo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IFullScreenVideo_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IFullScreenVideo_Release(p) (p)->lpVtbl->Release(p)
+/*** IFullScreenVideo methods ***/
+#define IFullScreenVideo_CountModes(p,a) (p)->lpVtbl->CountModes(p,a)
+#define IFullScreenVideo_GetModeInfo(p,a,b,c,d) (p)->lpVtbl->GetModeInfo(p,a,b,c,d)
+#define IFullScreenVideo_GetCurrentMode(p,a) (p)->lpVtbl->GetCurrentMode(p,a)
+#define IFullScreenVideo_IsModeAvailable(p,a) (p)->lpVtbl->IsModeAvailable(p,a)
+#define IFullScreenVideo_IsModeEnabled(p,a) (p)->lpVtbl->IsModeEnabled(p,a)
+#define IFullScreenVideo_SetEnabled(p,a,b) (p)->lpVtbl->SetEnabled(p,a,b)
+#define IFullScreenVideo_GetClipFactor(p,a) (p)->lpVtbl->GetClipFactor(p,a)
+#define IFullScreenVideo_SetClipFactor(p,a) (p)->lpVtbl->SetClipFactor(p,a)
+#define IFullScreenVideo_SetMessageDrain(p,a) (p)->lpVtbl->SetMessageDrain(p,a)
+#define IFullScreenVideo_GetMessageDrain(p,a) (p)->lpVtbl->GetMessageDrain(p,a)
+#define IFullScreenVideo_SetMonitor(p,a) (p)->lpVtbl->SetMonitor(p,a)
+#define IFullScreenVideo_GetMonitor(p,a) (p)->lpVtbl->GetMonitor(p,a)
+#define IFullScreenVideo_HideOnDeactivate(p,a) (p)->lpVtbl->HideOnDeactivate(p,a)
+#define IFullScreenVideo_IsHideOnDeactivate(p) (p)->lpVtbl->IsHideOnDeactivate(p)
+#define IFullScreenVideo_SetCaption(p,a) (p)->lpVtbl->SetCaption(p,a)
+#define IFullScreenVideo_GetCaption(p,a) (p)->lpVtbl->GetCaption(p,a)
+#define IFullScreenVideo_SetDefault(p) (p)->lpVtbl->SetDefault(p)
+
+#endif
+
+#define IFullScreenVideo_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IFullScreenVideo methods ***/ \
+    STDMETHOD_(HRESULT,CountModes)(THIS_ long* pModes) PURE; \
+    STDMETHOD_(HRESULT,GetModeInfo)(THIS_ long Mode, long* pWidth, long* pHeight, long* pDepth) PURE; \
+    STDMETHOD_(HRESULT,GetCurrentMode)(THIS_ long* pMode) PURE; \
+    STDMETHOD_(HRESULT,IsModeAvailable)(THIS_ long Mode) PURE; \
+    STDMETHOD_(HRESULT,IsModeEnabled)(THIS_ long Mode) PURE; \
+    STDMETHOD_(HRESULT,SetEnabled)(THIS_ long Mode, long bEnabled) PURE; \
+    STDMETHOD_(HRESULT,GetClipFactor)(THIS_ long* pClipFactor) PURE; \
+    STDMETHOD_(HRESULT,SetClipFactor)(THIS_ long ClipFactor) PURE; \
+    STDMETHOD_(HRESULT,SetMessageDrain)(THIS_ HWND hwnd) PURE; \
+    STDMETHOD_(HRESULT,GetMessageDrain)(THIS_ HWND* hwnd) PURE; \
+    STDMETHOD_(HRESULT,SetMonitor)(THIS_ long Monitor) PURE; \
+    STDMETHOD_(HRESULT,GetMonitor)(THIS_ long* Monitor) PURE; \
+    STDMETHOD_(HRESULT,HideOnDeactivate)(THIS_ long Hide) PURE; \
+    STDMETHOD_(HRESULT,IsHideOnDeactivate)(THIS) PURE; \
+    STDMETHOD_(HRESULT,SetCaption)(THIS_ BSTR strCaption) PURE; \
+    STDMETHOD_(HRESULT,GetCaption)(THIS_ BSTR* pstrCaption) PURE; \
+    STDMETHOD_(HRESULT,SetDefault)(THIS) PURE;
+
+HRESULT CALLBACK IFullScreenVideo_CountModes_Proxy(
+    IFullScreenVideo* This,
+    long* pModes);
+void __RPC_STUB IFullScreenVideo_CountModes_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_GetModeInfo_Proxy(
+    IFullScreenVideo* This,
+    long Mode,
+    long* pWidth,
+    long* pHeight,
+    long* pDepth);
+void __RPC_STUB IFullScreenVideo_GetModeInfo_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_GetCurrentMode_Proxy(
+    IFullScreenVideo* This,
+    long* pMode);
+void __RPC_STUB IFullScreenVideo_GetCurrentMode_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_IsModeAvailable_Proxy(
+    IFullScreenVideo* This,
+    long Mode);
+void __RPC_STUB IFullScreenVideo_IsModeAvailable_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_IsModeEnabled_Proxy(
+    IFullScreenVideo* This,
+    long Mode);
+void __RPC_STUB IFullScreenVideo_IsModeEnabled_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_SetEnabled_Proxy(
+    IFullScreenVideo* This,
+    long Mode,
+    long bEnabled);
+void __RPC_STUB IFullScreenVideo_SetEnabled_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_GetClipFactor_Proxy(
+    IFullScreenVideo* This,
+    long* pClipFactor);
+void __RPC_STUB IFullScreenVideo_GetClipFactor_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_SetClipFactor_Proxy(
+    IFullScreenVideo* This,
+    long ClipFactor);
+void __RPC_STUB IFullScreenVideo_SetClipFactor_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_SetMessageDrain_Proxy(
+    IFullScreenVideo* This,
+    HWND hwnd);
+void __RPC_STUB IFullScreenVideo_SetMessageDrain_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_GetMessageDrain_Proxy(
+    IFullScreenVideo* This,
+    HWND* hwnd);
+void __RPC_STUB IFullScreenVideo_GetMessageDrain_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_SetMonitor_Proxy(
+    IFullScreenVideo* This,
+    long Monitor);
+void __RPC_STUB IFullScreenVideo_SetMonitor_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_GetMonitor_Proxy(
+    IFullScreenVideo* This,
+    long* Monitor);
+void __RPC_STUB IFullScreenVideo_GetMonitor_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_HideOnDeactivate_Proxy(
+    IFullScreenVideo* This,
+    long Hide);
+void __RPC_STUB IFullScreenVideo_HideOnDeactivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_IsHideOnDeactivate_Proxy(
+    IFullScreenVideo* This);
+void __RPC_STUB IFullScreenVideo_IsHideOnDeactivate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_SetCaption_Proxy(
+    IFullScreenVideo* This,
+    BSTR strCaption);
+void __RPC_STUB IFullScreenVideo_SetCaption_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_GetCaption_Proxy(
+    IFullScreenVideo* This,
+    BSTR* pstrCaption);
+void __RPC_STUB IFullScreenVideo_GetCaption_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideo_SetDefault_Proxy(
+    IFullScreenVideo* This);
+void __RPC_STUB IFullScreenVideo_SetDefault_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFullScreenVideo_INTERFACE_DEFINED__ */
+
+#ifndef __IFullScreenVideoEx_FWD_DEFINED__
+#define __IFullScreenVideoEx_FWD_DEFINED__
+typedef struct IFullScreenVideoEx IFullScreenVideoEx;
+#endif
+
+/*****************************************************************************
+ * IFullScreenVideoEx interface
+ */
+#ifndef __IFullScreenVideoEx_INTERFACE_DEFINED__
+#define __IFullScreenVideoEx_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IFullScreenVideoEx : public IFullScreenVideo
+{
+    virtual HRESULT STDMETHODCALLTYPE SetAcceleratorTable(
+        HWND hwnd,
+        HACCEL hAccel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAcceleratorTable(
+        HWND* phwnd,
+        HACCEL* phAccel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE KeepPixelAspectRatio(
+        long KeepAspect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsKeepPixelAspectRatio(
+        long* pKeepAspect) = 0;
+
+};
+#else
+typedef struct IFullScreenVideoExVtbl IFullScreenVideoExVtbl;
+struct IFullScreenVideoEx {
+    const IFullScreenVideoExVtbl* lpVtbl;
+};
+struct IFullScreenVideoExVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFullScreenVideoEx* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFullScreenVideoEx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFullScreenVideoEx* This);
+
+    /*** IFullScreenVideo methods ***/
+    HRESULT (STDMETHODCALLTYPE *CountModes)(
+        IFullScreenVideoEx* This,
+        long* pModes);
+
+    HRESULT (STDMETHODCALLTYPE *GetModeInfo)(
+        IFullScreenVideoEx* This,
+        long Mode,
+        long* pWidth,
+        long* pHeight,
+        long* pDepth);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurrentMode)(
+        IFullScreenVideoEx* This,
+        long* pMode);
+
+    HRESULT (STDMETHODCALLTYPE *IsModeAvailable)(
+        IFullScreenVideoEx* This,
+        long Mode);
+
+    HRESULT (STDMETHODCALLTYPE *IsModeEnabled)(
+        IFullScreenVideoEx* This,
+        long Mode);
+
+    HRESULT (STDMETHODCALLTYPE *SetEnabled)(
+        IFullScreenVideoEx* This,
+        long Mode,
+        long bEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *GetClipFactor)(
+        IFullScreenVideoEx* This,
+        long* pClipFactor);
+
+    HRESULT (STDMETHODCALLTYPE *SetClipFactor)(
+        IFullScreenVideoEx* This,
+        long ClipFactor);
+
+    HRESULT (STDMETHODCALLTYPE *SetMessageDrain)(
+        IFullScreenVideoEx* This,
+        HWND hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *GetMessageDrain)(
+        IFullScreenVideoEx* This,
+        HWND* hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *SetMonitor)(
+        IFullScreenVideoEx* This,
+        long Monitor);
+
+    HRESULT (STDMETHODCALLTYPE *GetMonitor)(
+        IFullScreenVideoEx* This,
+        long* Monitor);
+
+    HRESULT (STDMETHODCALLTYPE *HideOnDeactivate)(
+        IFullScreenVideoEx* This,
+        long Hide);
+
+    HRESULT (STDMETHODCALLTYPE *IsHideOnDeactivate)(
+        IFullScreenVideoEx* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetCaption)(
+        IFullScreenVideoEx* This,
+        BSTR strCaption);
+
+    HRESULT (STDMETHODCALLTYPE *GetCaption)(
+        IFullScreenVideoEx* This,
+        BSTR* pstrCaption);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefault)(
+        IFullScreenVideoEx* This);
+
+    /*** IFullScreenVideoEx methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetAcceleratorTable)(
+        IFullScreenVideoEx* This,
+        HWND hwnd,
+        HACCEL hAccel);
+
+    HRESULT (STDMETHODCALLTYPE *GetAcceleratorTable)(
+        IFullScreenVideoEx* This,
+        HWND* phwnd,
+        HACCEL* phAccel);
+
+    HRESULT (STDMETHODCALLTYPE *KeepPixelAspectRatio)(
+        IFullScreenVideoEx* This,
+        long KeepAspect);
+
+    HRESULT (STDMETHODCALLTYPE *IsKeepPixelAspectRatio)(
+        IFullScreenVideoEx* This,
+        long* pKeepAspect);
+
+};
+
+/*** IUnknown methods ***/
+#define IFullScreenVideoEx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IFullScreenVideoEx_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IFullScreenVideoEx_Release(p) (p)->lpVtbl->Release(p)
+/*** IFullScreenVideo methods ***/
+#define IFullScreenVideoEx_CountModes(p,a) (p)->lpVtbl->CountModes(p,a)
+#define IFullScreenVideoEx_GetModeInfo(p,a,b,c,d) (p)->lpVtbl->GetModeInfo(p,a,b,c,d)
+#define IFullScreenVideoEx_GetCurrentMode(p,a) (p)->lpVtbl->GetCurrentMode(p,a)
+#define IFullScreenVideoEx_IsModeAvailable(p,a) (p)->lpVtbl->IsModeAvailable(p,a)
+#define IFullScreenVideoEx_IsModeEnabled(p,a) (p)->lpVtbl->IsModeEnabled(p,a)
+#define IFullScreenVideoEx_SetEnabled(p,a,b) (p)->lpVtbl->SetEnabled(p,a,b)
+#define IFullScreenVideoEx_GetClipFactor(p,a) (p)->lpVtbl->GetClipFactor(p,a)
+#define IFullScreenVideoEx_SetClipFactor(p,a) (p)->lpVtbl->SetClipFactor(p,a)
+#define IFullScreenVideoEx_SetMessageDrain(p,a) (p)->lpVtbl->SetMessageDrain(p,a)
+#define IFullScreenVideoEx_GetMessageDrain(p,a) (p)->lpVtbl->GetMessageDrain(p,a)
+#define IFullScreenVideoEx_SetMonitor(p,a) (p)->lpVtbl->SetMonitor(p,a)
+#define IFullScreenVideoEx_GetMonitor(p,a) (p)->lpVtbl->GetMonitor(p,a)
+#define IFullScreenVideoEx_HideOnDeactivate(p,a) (p)->lpVtbl->HideOnDeactivate(p,a)
+#define IFullScreenVideoEx_IsHideOnDeactivate(p) (p)->lpVtbl->IsHideOnDeactivate(p)
+#define IFullScreenVideoEx_SetCaption(p,a) (p)->lpVtbl->SetCaption(p,a)
+#define IFullScreenVideoEx_GetCaption(p,a) (p)->lpVtbl->GetCaption(p,a)
+#define IFullScreenVideoEx_SetDefault(p) (p)->lpVtbl->SetDefault(p)
+/*** IFullScreenVideoEx methods ***/
+#define IFullScreenVideoEx_SetAcceleratorTable(p,a,b) (p)->lpVtbl->SetAcceleratorTable(p,a,b)
+#define IFullScreenVideoEx_GetAcceleratorTable(p,a,b) (p)->lpVtbl->GetAcceleratorTable(p,a,b)
+#define IFullScreenVideoEx_KeepPixelAspectRatio(p,a) (p)->lpVtbl->KeepPixelAspectRatio(p,a)
+#define IFullScreenVideoEx_IsKeepPixelAspectRatio(p,a) (p)->lpVtbl->IsKeepPixelAspectRatio(p,a)
+
+#endif
+
+#define IFullScreenVideoEx_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IFullScreenVideo methods ***/ \
+    STDMETHOD_(HRESULT,CountModes)(THIS_ long* pModes) PURE; \
+    STDMETHOD_(HRESULT,GetModeInfo)(THIS_ long Mode, long* pWidth, long* pHeight, long* pDepth) PURE; \
+    STDMETHOD_(HRESULT,GetCurrentMode)(THIS_ long* pMode) PURE; \
+    STDMETHOD_(HRESULT,IsModeAvailable)(THIS_ long Mode) PURE; \
+    STDMETHOD_(HRESULT,IsModeEnabled)(THIS_ long Mode) PURE; \
+    STDMETHOD_(HRESULT,SetEnabled)(THIS_ long Mode, long bEnabled) PURE; \
+    STDMETHOD_(HRESULT,GetClipFactor)(THIS_ long* pClipFactor) PURE; \
+    STDMETHOD_(HRESULT,SetClipFactor)(THIS_ long ClipFactor) PURE; \
+    STDMETHOD_(HRESULT,SetMessageDrain)(THIS_ HWND hwnd) PURE; \
+    STDMETHOD_(HRESULT,GetMessageDrain)(THIS_ HWND* hwnd) PURE; \
+    STDMETHOD_(HRESULT,SetMonitor)(THIS_ long Monitor) PURE; \
+    STDMETHOD_(HRESULT,GetMonitor)(THIS_ long* Monitor) PURE; \
+    STDMETHOD_(HRESULT,HideOnDeactivate)(THIS_ long Hide) PURE; \
+    STDMETHOD_(HRESULT,IsHideOnDeactivate)(THIS) PURE; \
+    STDMETHOD_(HRESULT,SetCaption)(THIS_ BSTR strCaption) PURE; \
+    STDMETHOD_(HRESULT,GetCaption)(THIS_ BSTR* pstrCaption) PURE; \
+    STDMETHOD_(HRESULT,SetDefault)(THIS) PURE; \
+    /*** IFullScreenVideoEx methods ***/ \
+    STDMETHOD_(HRESULT,SetAcceleratorTable)(THIS_ HWND hwnd, HACCEL hAccel) PURE; \
+    STDMETHOD_(HRESULT,GetAcceleratorTable)(THIS_ HWND* phwnd, HACCEL* phAccel) PURE; \
+    STDMETHOD_(HRESULT,KeepPixelAspectRatio)(THIS_ long KeepAspect) PURE; \
+    STDMETHOD_(HRESULT,IsKeepPixelAspectRatio)(THIS_ long* pKeepAspect) PURE;
+
+HRESULT CALLBACK IFullScreenVideoEx_SetAcceleratorTable_Proxy(
+    IFullScreenVideoEx* This,
+    HWND hwnd,
+    HACCEL hAccel);
+void __RPC_STUB IFullScreenVideoEx_SetAcceleratorTable_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideoEx_GetAcceleratorTable_Proxy(
+    IFullScreenVideoEx* This,
+    HWND* phwnd,
+    HACCEL* phAccel);
+void __RPC_STUB IFullScreenVideoEx_GetAcceleratorTable_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideoEx_KeepPixelAspectRatio_Proxy(
+    IFullScreenVideoEx* This,
+    long KeepAspect);
+void __RPC_STUB IFullScreenVideoEx_KeepPixelAspectRatio_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFullScreenVideoEx_IsKeepPixelAspectRatio_Proxy(
+    IFullScreenVideoEx* This,
+    long* pKeepAspect);
+void __RPC_STUB IFullScreenVideoEx_IsKeepPixelAspectRatio_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFullScreenVideoEx_INTERFACE_DEFINED__ */
+
+#ifndef __IBaseVideoMixer_FWD_DEFINED__
+#define __IBaseVideoMixer_FWD_DEFINED__
+typedef struct IBaseVideoMixer IBaseVideoMixer;
+#endif
+
+/*****************************************************************************
+ * IBaseVideoMixer interface
+ */
+#ifndef __IBaseVideoMixer_INTERFACE_DEFINED__
+#define __IBaseVideoMixer_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IBaseVideoMixer : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetLeadPin(
+        int iPin) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLeadPin(
+        int* piPin) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetInputPinCount(
+        int* piPinCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsUsingClock(
+        int* pbValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetUsingClock(
+        int bValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClockPeriod(
+        int* pbValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClockPeriod(
+        int bValue) = 0;
+
+};
+#else
+typedef struct IBaseVideoMixerVtbl IBaseVideoMixerVtbl;
+struct IBaseVideoMixer {
+    const IBaseVideoMixerVtbl* lpVtbl;
+};
+struct IBaseVideoMixerVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBaseVideoMixer* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBaseVideoMixer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBaseVideoMixer* This);
+
+    /*** IBaseVideoMixer methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetLeadPin)(
+        IBaseVideoMixer* This,
+        int iPin);
+
+    HRESULT (STDMETHODCALLTYPE *GetLeadPin)(
+        IBaseVideoMixer* This,
+        int* piPin);
+
+    HRESULT (STDMETHODCALLTYPE *GetInputPinCount)(
+        IBaseVideoMixer* This,
+        int* piPinCount);
+
+    HRESULT (STDMETHODCALLTYPE *IsUsingClock)(
+        IBaseVideoMixer* This,
+        int* pbValue);
+
+    HRESULT (STDMETHODCALLTYPE *SetUsingClock)(
+        IBaseVideoMixer* This,
+        int bValue);
+
+    HRESULT (STDMETHODCALLTYPE *GetClockPeriod)(
+        IBaseVideoMixer* This,
+        int* pbValue);
+
+    HRESULT (STDMETHODCALLTYPE *SetClockPeriod)(
+        IBaseVideoMixer* This,
+        int bValue);
+
+};
+
+/*** IUnknown methods ***/
+#define IBaseVideoMixer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IBaseVideoMixer_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IBaseVideoMixer_Release(p) (p)->lpVtbl->Release(p)
+/*** IBaseVideoMixer methods ***/
+#define IBaseVideoMixer_SetLeadPin(p,a) (p)->lpVtbl->SetLeadPin(p,a)
+#define IBaseVideoMixer_GetLeadPin(p,a) (p)->lpVtbl->GetLeadPin(p,a)
+#define IBaseVideoMixer_GetInputPinCount(p,a) (p)->lpVtbl->GetInputPinCount(p,a)
+#define IBaseVideoMixer_IsUsingClock(p,a) (p)->lpVtbl->IsUsingClock(p,a)
+#define IBaseVideoMixer_SetUsingClock(p,a) (p)->lpVtbl->SetUsingClock(p,a)
+#define IBaseVideoMixer_GetClockPeriod(p,a) (p)->lpVtbl->GetClockPeriod(p,a)
+#define IBaseVideoMixer_SetClockPeriod(p,a) (p)->lpVtbl->SetClockPeriod(p,a)
+
+#endif
+
+#define IBaseVideoMixer_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IBaseVideoMixer methods ***/ \
+    STDMETHOD_(HRESULT,SetLeadPin)(THIS_ int iPin) PURE; \
+    STDMETHOD_(HRESULT,GetLeadPin)(THIS_ int* piPin) PURE; \
+    STDMETHOD_(HRESULT,GetInputPinCount)(THIS_ int* piPinCount) PURE; \
+    STDMETHOD_(HRESULT,IsUsingClock)(THIS_ int* pbValue) PURE; \
+    STDMETHOD_(HRESULT,SetUsingClock)(THIS_ int bValue) PURE; \
+    STDMETHOD_(HRESULT,GetClockPeriod)(THIS_ int* pbValue) PURE; \
+    STDMETHOD_(HRESULT,SetClockPeriod)(THIS_ int bValue) PURE;
+
+HRESULT CALLBACK IBaseVideoMixer_SetLeadPin_Proxy(
+    IBaseVideoMixer* This,
+    int iPin);
+void __RPC_STUB IBaseVideoMixer_SetLeadPin_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IBaseVideoMixer_GetLeadPin_Proxy(
+    IBaseVideoMixer* This,
+    int* piPin);
+void __RPC_STUB IBaseVideoMixer_GetLeadPin_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IBaseVideoMixer_GetInputPinCount_Proxy(
+    IBaseVideoMixer* This,
+    int* piPinCount);
+void __RPC_STUB IBaseVideoMixer_GetInputPinCount_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IBaseVideoMixer_IsUsingClock_Proxy(
+    IBaseVideoMixer* This,
+    int* pbValue);
+void __RPC_STUB IBaseVideoMixer_IsUsingClock_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IBaseVideoMixer_SetUsingClock_Proxy(
+    IBaseVideoMixer* This,
+    int bValue);
+void __RPC_STUB IBaseVideoMixer_SetUsingClock_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IBaseVideoMixer_GetClockPeriod_Proxy(
+    IBaseVideoMixer* This,
+    int* pbValue);
+void __RPC_STUB IBaseVideoMixer_GetClockPeriod_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IBaseVideoMixer_SetClockPeriod_Proxy(
+    IBaseVideoMixer* This,
+    int bValue);
+void __RPC_STUB IBaseVideoMixer_SetClockPeriod_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IBaseVideoMixer_INTERFACE_DEFINED__ */
+
+#define iPALETTE_COLORS 256
+#define iEGA_COLORS 16
+#define iMASK_COLORS 3
+#define iTRUECOLOR 16
+#define iRED 0
+#define iGREEN 1
+#define iBLUE 2
+#define iPALETTE 8
+#define iMAXBITS 8
+typedef struct tag_TRUECOLORINFO {
+    DWORD dwBitMasks[3];
+    RGBQUAD bmiColors[256];
+} TRUECOLORINFO;
+
+typedef struct tagVIDEOINFOHEADER {
+    RECT rcSource;
+    RECT rcTarget;
+    DWORD dwBitRate;
+    DWORD dwBitErrorRate;
+    REFERENCE_TIME AvgTimePerFrame;
+    BITMAPINFOHEADER bmiHeader;
+} VIDEOINFOHEADER;
+
+typedef struct tagVIDEOINFO {
+    RECT rcSource;
+    RECT rcTarget;
+    DWORD dwBitRate;
+    DWORD dwBitErrorRate;
+    REFERENCE_TIME AvgTimePerFrame;
+    BITMAPINFOHEADER bmiHeader;
+    union {
+        RGBQUAD bmiColors[256];
+        DWORD dwBitMasks[3];
+        TRUECOLORINFO TrueColorInfo;
+    } DUMMYUNIONNAME;
+} VIDEOINFO;
+
+typedef struct tagMPEG1VIDEOINFO {
+    VIDEOINFOHEADER hdr;
+    DWORD dwStartTimeCode;
+    DWORD cbSequenceHeader;
+    BYTE bSequenceHeader[1];
+} MPEG1VIDEOINFO;
+
+#define MAX_SIZE_MPEG1_SEQUENCE_INFO 140
+#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
+typedef struct tagAnalogVideoInfo {
+    RECT rcSource;
+    RECT rcTarget;
+    DWORD dwActiveWidth;
+    DWORD dwActiveHeight;
+    REFERENCE_TIME AvgTimePerFrame;
+} ANALOGVIDEOINFO;
+
+typedef enum {
+    AM_PROPERTY_FRAMESTEP_STEP = 0x1,
+    AM_PROPERTY_FRAMESTEP_CANCEL = 0x2,
+    AM_PROPERTY_FRAMESTEP_CANSTEP = 0x3,
+    AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x4
+} AM_PROPERTY_FRAMESTEP;
+
+typedef struct _AM_FRAMESTEP_STEP {
+    DWORD dwFramesToStep;
+} AM_FRAMESTEP_STEP;
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __WIDL_AMVIDEO_H */

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux