2010-02-11  Ozkan Sezer <sezeroz@gmail.com>

	* dshow.h: Updated from wine-1.1.38.
	* amaudio.h, amvideo.idl, amvideo.h, audevcod.h, errors.h, evcode.h,
	vfwmsgs.h: Added missing dshow dependency headers from wine-1.1.38.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@1897 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/direct-x/ChangeLog b/mingw-w64-headers/direct-x/ChangeLog
index a426c2c..7c1f385 100644
--- a/mingw-w64-headers/direct-x/ChangeLog
+++ b/mingw-w64-headers/direct-x/ChangeLog
@@ -1,5 +1,11 @@
 2010-02-11  Ozkan Sezer <sezeroz@gmail.com>
 
+	* dshow.h: Updated from wine-1.1.38.
+	* amaudio.h, amvideo.idl, amvideo.h, audevcod.h, errors.h, evcode.h,
+	vfwmsgs.h: Added missing dshow dependency headers from wine-1.1.38.
+
+2010-02-11  Ozkan Sezer <sezeroz@gmail.com>
+
 	* ddstream.h, docobj.h, downloadmgr.h: Regenerated using widl-1.1.38
 	from the latest wine-1.1.38 *.idl files.
 	* ddstream.idl, docobj.idl, downloadmgr.idl: Added as idl versions.
diff --git a/mingw-w64-headers/direct-x/include/amaudio.h b/mingw-w64-headers/direct-x/include/amaudio.h
new file mode 100644
index 0000000..21892c6
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/amaudio.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2010 Maarten Lankhorst for Codeweavers
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __AMAUDIO__
+#define __AMAUDIO__
+
+#include <mmsystem.h>
+#include <dsound.h>
+
+#undef INTERFACE
+#define INTERFACE IAMDirectSound
+
+DECLARE_INTERFACE_(IAMDirectSound,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** IAMDirectSound methods ***/
+    STDMETHOD(GetDirectSoundInterface)(THIS_ IDirectSound **ds) PURE;
+    STDMETHOD(GetPrimaryBufferInterface(THIS_ IDirectSoundBuffer **buf) PURE;
+    STDMETHOD(GetSecondaryBufferInterface)(THIS_ IDirectSoundBuffer **buf) PURE;
+    STDMETHOD(ReleaseDirectSoundInterface(THIS_ IDirectSound *ds) PURE;
+    STDMETHOD(ReleasePrimaryBufferInterface(THIS_ IDirectSoundBuffer *buf) PURE;
+    STDMETHOD(ReleaseSecondaryBufferInterface(THIS_ IDirectSoundBuffer *buf) PURE;
+    STDMETHOD(SetFocusWindow)(THIS_ HWND hwnd, BOOL bgsilent) PURE;
+    STDMETHOD(GetFocusWindow)(THIS_ HWND hwnd) PURE;
+};
+
+#endif
diff --git a/mingw-w64-headers/direct-x/include/amvideo.h b/mingw-w64-headers/direct-x/include/amvideo.h
new file mode 100644
index 0000000..54a0fb0
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/amvideo.h
@@ -0,0 +1,1291 @@
+/*** Autogenerated by WIDL 1.1.38 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
+
+/* Headers for imported files */
+
+#include <objidl.h>
+
+/* Forward declarations */
+
+#ifndef __IDirectDrawVideo_FWD_DEFINED__
+#define __IDirectDrawVideo_FWD_DEFINED__
+typedef interface IDirectDrawVideo IDirectDrawVideo;
+#endif
+
+#ifndef __IQualProp_FWD_DEFINED__
+#define __IQualProp_FWD_DEFINED__
+typedef interface IQualProp IQualProp;
+#endif
+
+#ifndef __IFullScreenVideo_FWD_DEFINED__
+#define __IFullScreenVideo_FWD_DEFINED__
+typedef interface IFullScreenVideo IFullScreenVideo;
+#endif
+
+#ifndef __IFullScreenVideoEx_FWD_DEFINED__
+#define __IFullScreenVideoEx_FWD_DEFINED__
+typedef interface IFullScreenVideoEx IFullScreenVideoEx;
+#endif
+
+#ifndef __IBaseVideoMixer_FWD_DEFINED__
+#define __IBaseVideoMixer_FWD_DEFINED__
+typedef interface IBaseVideoMixer IBaseVideoMixer;
+#endif
+
+
+#if 0
+typedef void *LPDIRECTDRAW;
+typedef void DDSURFACEDESC;
+typedef void DDCAPS;
+typedef DWORD RGBQUAD;
+typedef LONGLONG REFERENCE_TIME;
+typedef struct __WIDL_amvideo_generated_name_00000000 {
+    DWORD biSize;
+    LONG biWidth;
+    LONG biHeight;
+    WORD biPlanes;
+    WORD biBitCount;
+    DWORD biCompression;
+    DWORD biSizeImage;
+    LONG biXPelsPerMeter;
+    LONG biYPelsPerMeter;
+    DWORD biClrUsed;
+    DWORD biClrImportant;
+} BITMAPINFOHEADER;
+typedef struct __WIDL_amvideo_generated_name_00000000 *PBITMAPINFOHEADER;
+typedef struct __WIDL_amvideo_generated_name_00000000 *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)
+/*****************************************************************************
+ * IDirectDrawVideo interface
+ */
+#ifndef __IDirectDrawVideo_INTERFACE_DEFINED__
+#define __IDirectDrawVideo_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface 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 {
+    BEGIN_INTERFACE
+
+    /*** 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);
+
+    END_INTERFACE
+} IDirectDrawVideoVtbl;
+interface IDirectDrawVideo {
+    CONST_VTBL IDirectDrawVideoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IDirectDrawVideo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDirectDrawVideo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDirectDrawVideo_Release(This) (This)->lpVtbl->Release(This)
+/*** IDirectDrawVideo methods ***/
+#define IDirectDrawVideo_GetSwitches(This,pSwitches) (This)->lpVtbl->GetSwitches(This,pSwitches)
+#define IDirectDrawVideo_SetSwitches(This,Switches) (This)->lpVtbl->SetSwitches(This,Switches)
+#define IDirectDrawVideo_GetCaps(This,pCaps) (This)->lpVtbl->GetCaps(This,pCaps)
+#define IDirectDrawVideo_GetEmulatedCaps(This,pCaps) (This)->lpVtbl->GetEmulatedCaps(This,pCaps)
+#define IDirectDrawVideo_GetSurfaceDesc(This,pSurfaceDesc) (This)->lpVtbl->GetSurfaceDesc(This,pSurfaceDesc)
+#define IDirectDrawVideo_GetFourCCCodes(This,pCount,pCodes) (This)->lpVtbl->GetFourCCCodes(This,pCount,pCodes)
+#define IDirectDrawVideo_SetDirectDraw(This,pDirectDraw) (This)->lpVtbl->SetDirectDraw(This,pDirectDraw)
+#define IDirectDrawVideo_GetDirectDraw(This,ppDirectDraw) (This)->lpVtbl->GetDirectDraw(This,ppDirectDraw)
+#define IDirectDrawVideo_GetSurfaceType(This,pSurfaceType) (This)->lpVtbl->GetSurfaceType(This,pSurfaceType)
+#define IDirectDrawVideo_SetDefault(This) (This)->lpVtbl->SetDefault(This)
+#define IDirectDrawVideo_UseScanLine(This,UseScanLine) (This)->lpVtbl->UseScanLine(This,UseScanLine)
+#define IDirectDrawVideo_CanUseScanLine(This,UseScanLine) (This)->lpVtbl->CanUseScanLine(This,UseScanLine)
+#define IDirectDrawVideo_UseOverlayStretch(This,UseOverlayStretch) (This)->lpVtbl->UseOverlayStretch(This,UseOverlayStretch)
+#define IDirectDrawVideo_CanUseOverlayStretch(This,UseOverlayStretch) (This)->lpVtbl->CanUseOverlayStretch(This,UseOverlayStretch)
+#define IDirectDrawVideo_UseWhenFullScreen(This,UseWhenFullScreen) (This)->lpVtbl->UseWhenFullScreen(This,UseWhenFullScreen)
+#define IDirectDrawVideo_WillUseFullScreen(This,UseWhenFullScreen) (This)->lpVtbl->WillUseFullScreen(This,UseWhenFullScreen)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetSwitches_Proxy(
+    IDirectDrawVideo* This,
+    DWORD *pSwitches);
+void __RPC_STUB IDirectDrawVideo_GetSwitches_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_SetSwitches_Proxy(
+    IDirectDrawVideo* This,
+    DWORD Switches);
+void __RPC_STUB IDirectDrawVideo_SetSwitches_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetCaps_Proxy(
+    IDirectDrawVideo* This,
+    DDCAPS *pCaps);
+void __RPC_STUB IDirectDrawVideo_GetCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetEmulatedCaps_Proxy(
+    IDirectDrawVideo* This,
+    DDCAPS *pCaps);
+void __RPC_STUB IDirectDrawVideo_GetEmulatedCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetSurfaceDesc_Proxy(
+    IDirectDrawVideo* This,
+    DDSURFACEDESC *pSurfaceDesc);
+void __RPC_STUB IDirectDrawVideo_GetSurfaceDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetFourCCCodes_Proxy(
+    IDirectDrawVideo* This,
+    DWORD *pCount,
+    DWORD *pCodes);
+void __RPC_STUB IDirectDrawVideo_GetFourCCCodes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_SetDirectDraw_Proxy(
+    IDirectDrawVideo* This,
+    LPDIRECTDRAW pDirectDraw);
+void __RPC_STUB IDirectDrawVideo_SetDirectDraw_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetDirectDraw_Proxy(
+    IDirectDrawVideo* This,
+    LPDIRECTDRAW *ppDirectDraw);
+void __RPC_STUB IDirectDrawVideo_GetDirectDraw_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetSurfaceType_Proxy(
+    IDirectDrawVideo* This,
+    DWORD *pSurfaceType);
+void __RPC_STUB IDirectDrawVideo_GetSurfaceType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_SetDefault_Proxy(
+    IDirectDrawVideo* This);
+void __RPC_STUB IDirectDrawVideo_SetDefault_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_UseScanLine_Proxy(
+    IDirectDrawVideo* This,
+    LONG UseScanLine);
+void __RPC_STUB IDirectDrawVideo_UseScanLine_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_CanUseScanLine_Proxy(
+    IDirectDrawVideo* This,
+    LONG *UseScanLine);
+void __RPC_STUB IDirectDrawVideo_CanUseScanLine_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_UseOverlayStretch_Proxy(
+    IDirectDrawVideo* This,
+    LONG UseOverlayStretch);
+void __RPC_STUB IDirectDrawVideo_UseOverlayStretch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_CanUseOverlayStretch_Proxy(
+    IDirectDrawVideo* This,
+    LONG *UseOverlayStretch);
+void __RPC_STUB IDirectDrawVideo_CanUseOverlayStretch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_UseWhenFullScreen_Proxy(
+    IDirectDrawVideo* This,
+    LONG UseWhenFullScreen);
+void __RPC_STUB IDirectDrawVideo_UseWhenFullScreen_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_WillUseFullScreen_Proxy(
+    IDirectDrawVideo* This,
+    LONG *UseWhenFullScreen);
+void __RPC_STUB IDirectDrawVideo_WillUseFullScreen_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDirectDrawVideo_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IQualProp interface
+ */
+#ifndef __IQualProp_INTERFACE_DEFINED__
+#define __IQualProp_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface 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 {
+    BEGIN_INTERFACE
+
+    /*** 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);
+
+    END_INTERFACE
+} IQualPropVtbl;
+interface IQualProp {
+    CONST_VTBL IQualPropVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IQualProp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IQualProp_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IQualProp_Release(This) (This)->lpVtbl->Release(This)
+/*** IQualProp methods ***/
+#define IQualProp_get_FramesDroppedInRenderer(This,pcFrames) (This)->lpVtbl->get_FramesDroppedInRenderer(This,pcFrames)
+#define IQualProp_get_FramesDrawn(This,pcFramesDrawn) (This)->lpVtbl->get_FramesDrawn(This,pcFramesDrawn)
+#define IQualProp_get_AvgFrameRate(This,piAvgFrameRate) (This)->lpVtbl->get_AvgFrameRate(This,piAvgFrameRate)
+#define IQualProp_get_Jitter(This,iJitter) (This)->lpVtbl->get_Jitter(This,iJitter)
+#define IQualProp_get_AvgSyncOffset(This,piAvg) (This)->lpVtbl->get_AvgSyncOffset(This,piAvg)
+#define IQualProp_get_DevSyncOffset(This,piDev) (This)->lpVtbl->get_DevSyncOffset(This,piDev)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IQualProp_get_FramesDroppedInRenderer_Proxy(
+    IQualProp* This,
+    int *pcFrames);
+void __RPC_STUB IQualProp_get_FramesDroppedInRenderer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IQualProp_get_FramesDrawn_Proxy(
+    IQualProp* This,
+    int *pcFramesDrawn);
+void __RPC_STUB IQualProp_get_FramesDrawn_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IQualProp_get_AvgFrameRate_Proxy(
+    IQualProp* This,
+    int *piAvgFrameRate);
+void __RPC_STUB IQualProp_get_AvgFrameRate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IQualProp_get_Jitter_Proxy(
+    IQualProp* This,
+    int *iJitter);
+void __RPC_STUB IQualProp_get_Jitter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IQualProp_get_AvgSyncOffset_Proxy(
+    IQualProp* This,
+    int *piAvg);
+void __RPC_STUB IQualProp_get_AvgSyncOffset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IQualProp_get_DevSyncOffset_Proxy(
+    IQualProp* This,
+    int *piDev);
+void __RPC_STUB IQualProp_get_DevSyncOffset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IQualProp_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFullScreenVideo interface
+ */
+#ifndef __IFullScreenVideo_INTERFACE_DEFINED__
+#define __IFullScreenVideo_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface 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 {
+    BEGIN_INTERFACE
+
+    /*** 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);
+
+    END_INTERFACE
+} IFullScreenVideoVtbl;
+interface IFullScreenVideo {
+    CONST_VTBL IFullScreenVideoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IFullScreenVideo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFullScreenVideo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFullScreenVideo_Release(This) (This)->lpVtbl->Release(This)
+/*** IFullScreenVideo methods ***/
+#define IFullScreenVideo_CountModes(This,pModes) (This)->lpVtbl->CountModes(This,pModes)
+#define IFullScreenVideo_GetModeInfo(This,Mode,pWidth,pHeight,pDepth) (This)->lpVtbl->GetModeInfo(This,Mode,pWidth,pHeight,pDepth)
+#define IFullScreenVideo_GetCurrentMode(This,pMode) (This)->lpVtbl->GetCurrentMode(This,pMode)
+#define IFullScreenVideo_IsModeAvailable(This,Mode) (This)->lpVtbl->IsModeAvailable(This,Mode)
+#define IFullScreenVideo_IsModeEnabled(This,Mode) (This)->lpVtbl->IsModeEnabled(This,Mode)
+#define IFullScreenVideo_SetEnabled(This,Mode,bEnabled) (This)->lpVtbl->SetEnabled(This,Mode,bEnabled)
+#define IFullScreenVideo_GetClipFactor(This,pClipFactor) (This)->lpVtbl->GetClipFactor(This,pClipFactor)
+#define IFullScreenVideo_SetClipFactor(This,ClipFactor) (This)->lpVtbl->SetClipFactor(This,ClipFactor)
+#define IFullScreenVideo_SetMessageDrain(This,hwnd) (This)->lpVtbl->SetMessageDrain(This,hwnd)
+#define IFullScreenVideo_GetMessageDrain(This,hwnd) (This)->lpVtbl->GetMessageDrain(This,hwnd)
+#define IFullScreenVideo_SetMonitor(This,Monitor) (This)->lpVtbl->SetMonitor(This,Monitor)
+#define IFullScreenVideo_GetMonitor(This,Monitor) (This)->lpVtbl->GetMonitor(This,Monitor)
+#define IFullScreenVideo_HideOnDeactivate(This,Hide) (This)->lpVtbl->HideOnDeactivate(This,Hide)
+#define IFullScreenVideo_IsHideOnDeactivate(This) (This)->lpVtbl->IsHideOnDeactivate(This)
+#define IFullScreenVideo_SetCaption(This,strCaption) (This)->lpVtbl->SetCaption(This,strCaption)
+#define IFullScreenVideo_GetCaption(This,pstrCaption) (This)->lpVtbl->GetCaption(This,pstrCaption)
+#define IFullScreenVideo_SetDefault(This) (This)->lpVtbl->SetDefault(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_CountModes_Proxy(
+    IFullScreenVideo* This,
+    LONG *pModes);
+void __RPC_STUB IFullScreenVideo_CountModes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetModeInfo_Proxy(
+    IFullScreenVideo* This,
+    LONG Mode,
+    LONG *pWidth,
+    LONG *pHeight,
+    LONG *pDepth);
+void __RPC_STUB IFullScreenVideo_GetModeInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetCurrentMode_Proxy(
+    IFullScreenVideo* This,
+    LONG *pMode);
+void __RPC_STUB IFullScreenVideo_GetCurrentMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_IsModeAvailable_Proxy(
+    IFullScreenVideo* This,
+    LONG Mode);
+void __RPC_STUB IFullScreenVideo_IsModeAvailable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_IsModeEnabled_Proxy(
+    IFullScreenVideo* This,
+    LONG Mode);
+void __RPC_STUB IFullScreenVideo_IsModeEnabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetEnabled_Proxy(
+    IFullScreenVideo* This,
+    LONG Mode,
+    LONG bEnabled);
+void __RPC_STUB IFullScreenVideo_SetEnabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetClipFactor_Proxy(
+    IFullScreenVideo* This,
+    LONG *pClipFactor);
+void __RPC_STUB IFullScreenVideo_GetClipFactor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetClipFactor_Proxy(
+    IFullScreenVideo* This,
+    LONG ClipFactor);
+void __RPC_STUB IFullScreenVideo_SetClipFactor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetMessageDrain_Proxy(
+    IFullScreenVideo* This,
+    HWND hwnd);
+void __RPC_STUB IFullScreenVideo_SetMessageDrain_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetMessageDrain_Proxy(
+    IFullScreenVideo* This,
+    HWND *hwnd);
+void __RPC_STUB IFullScreenVideo_GetMessageDrain_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetMonitor_Proxy(
+    IFullScreenVideo* This,
+    LONG Monitor);
+void __RPC_STUB IFullScreenVideo_SetMonitor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetMonitor_Proxy(
+    IFullScreenVideo* This,
+    LONG *Monitor);
+void __RPC_STUB IFullScreenVideo_GetMonitor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_HideOnDeactivate_Proxy(
+    IFullScreenVideo* This,
+    LONG Hide);
+void __RPC_STUB IFullScreenVideo_HideOnDeactivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_IsHideOnDeactivate_Proxy(
+    IFullScreenVideo* This);
+void __RPC_STUB IFullScreenVideo_IsHideOnDeactivate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetCaption_Proxy(
+    IFullScreenVideo* This,
+    BSTR strCaption);
+void __RPC_STUB IFullScreenVideo_SetCaption_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetCaption_Proxy(
+    IFullScreenVideo* This,
+    BSTR *pstrCaption);
+void __RPC_STUB IFullScreenVideo_GetCaption_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetDefault_Proxy(
+    IFullScreenVideo* This);
+void __RPC_STUB IFullScreenVideo_SetDefault_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFullScreenVideo_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFullScreenVideoEx interface
+ */
+#ifndef __IFullScreenVideoEx_INTERFACE_DEFINED__
+#define __IFullScreenVideoEx_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface 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 {
+    BEGIN_INTERFACE
+
+    /*** 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);
+
+    END_INTERFACE
+} IFullScreenVideoExVtbl;
+interface IFullScreenVideoEx {
+    CONST_VTBL IFullScreenVideoExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IFullScreenVideoEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFullScreenVideoEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFullScreenVideoEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IFullScreenVideo methods ***/
+#define IFullScreenVideoEx_CountModes(This,pModes) (This)->lpVtbl->CountModes(This,pModes)
+#define IFullScreenVideoEx_GetModeInfo(This,Mode,pWidth,pHeight,pDepth) (This)->lpVtbl->GetModeInfo(This,Mode,pWidth,pHeight,pDepth)
+#define IFullScreenVideoEx_GetCurrentMode(This,pMode) (This)->lpVtbl->GetCurrentMode(This,pMode)
+#define IFullScreenVideoEx_IsModeAvailable(This,Mode) (This)->lpVtbl->IsModeAvailable(This,Mode)
+#define IFullScreenVideoEx_IsModeEnabled(This,Mode) (This)->lpVtbl->IsModeEnabled(This,Mode)
+#define IFullScreenVideoEx_SetEnabled(This,Mode,bEnabled) (This)->lpVtbl->SetEnabled(This,Mode,bEnabled)
+#define IFullScreenVideoEx_GetClipFactor(This,pClipFactor) (This)->lpVtbl->GetClipFactor(This,pClipFactor)
+#define IFullScreenVideoEx_SetClipFactor(This,ClipFactor) (This)->lpVtbl->SetClipFactor(This,ClipFactor)
+#define IFullScreenVideoEx_SetMessageDrain(This,hwnd) (This)->lpVtbl->SetMessageDrain(This,hwnd)
+#define IFullScreenVideoEx_GetMessageDrain(This,hwnd) (This)->lpVtbl->GetMessageDrain(This,hwnd)
+#define IFullScreenVideoEx_SetMonitor(This,Monitor) (This)->lpVtbl->SetMonitor(This,Monitor)
+#define IFullScreenVideoEx_GetMonitor(This,Monitor) (This)->lpVtbl->GetMonitor(This,Monitor)
+#define IFullScreenVideoEx_HideOnDeactivate(This,Hide) (This)->lpVtbl->HideOnDeactivate(This,Hide)
+#define IFullScreenVideoEx_IsHideOnDeactivate(This) (This)->lpVtbl->IsHideOnDeactivate(This)
+#define IFullScreenVideoEx_SetCaption(This,strCaption) (This)->lpVtbl->SetCaption(This,strCaption)
+#define IFullScreenVideoEx_GetCaption(This,pstrCaption) (This)->lpVtbl->GetCaption(This,pstrCaption)
+#define IFullScreenVideoEx_SetDefault(This) (This)->lpVtbl->SetDefault(This)
+/*** IFullScreenVideoEx methods ***/
+#define IFullScreenVideoEx_SetAcceleratorTable(This,hwnd,hAccel) (This)->lpVtbl->SetAcceleratorTable(This,hwnd,hAccel)
+#define IFullScreenVideoEx_GetAcceleratorTable(This,phwnd,phAccel) (This)->lpVtbl->GetAcceleratorTable(This,phwnd,phAccel)
+#define IFullScreenVideoEx_KeepPixelAspectRatio(This,KeepAspect) (This)->lpVtbl->KeepPixelAspectRatio(This,KeepAspect)
+#define IFullScreenVideoEx_IsKeepPixelAspectRatio(This,pKeepAspect) (This)->lpVtbl->IsKeepPixelAspectRatio(This,pKeepAspect)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFullScreenVideoEx_SetAcceleratorTable_Proxy(
+    IFullScreenVideoEx* This,
+    HWND hwnd,
+    HACCEL hAccel);
+void __RPC_STUB IFullScreenVideoEx_SetAcceleratorTable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideoEx_GetAcceleratorTable_Proxy(
+    IFullScreenVideoEx* This,
+    HWND *phwnd,
+    HACCEL *phAccel);
+void __RPC_STUB IFullScreenVideoEx_GetAcceleratorTable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideoEx_KeepPixelAspectRatio_Proxy(
+    IFullScreenVideoEx* This,
+    LONG KeepAspect);
+void __RPC_STUB IFullScreenVideoEx_KeepPixelAspectRatio_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideoEx_IsKeepPixelAspectRatio_Proxy(
+    IFullScreenVideoEx* This,
+    LONG *pKeepAspect);
+void __RPC_STUB IFullScreenVideoEx_IsKeepPixelAspectRatio_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFullScreenVideoEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBaseVideoMixer interface
+ */
+#ifndef __IBaseVideoMixer_INTERFACE_DEFINED__
+#define __IBaseVideoMixer_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface 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 {
+    BEGIN_INTERFACE
+
+    /*** 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);
+
+    END_INTERFACE
+} IBaseVideoMixerVtbl;
+interface IBaseVideoMixer {
+    CONST_VTBL IBaseVideoMixerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IBaseVideoMixer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBaseVideoMixer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBaseVideoMixer_Release(This) (This)->lpVtbl->Release(This)
+/*** IBaseVideoMixer methods ***/
+#define IBaseVideoMixer_SetLeadPin(This,iPin) (This)->lpVtbl->SetLeadPin(This,iPin)
+#define IBaseVideoMixer_GetLeadPin(This,piPin) (This)->lpVtbl->GetLeadPin(This,piPin)
+#define IBaseVideoMixer_GetInputPinCount(This,piPinCount) (This)->lpVtbl->GetInputPinCount(This,piPinCount)
+#define IBaseVideoMixer_IsUsingClock(This,pbValue) (This)->lpVtbl->IsUsingClock(This,pbValue)
+#define IBaseVideoMixer_SetUsingClock(This,bValue) (This)->lpVtbl->SetUsingClock(This,bValue)
+#define IBaseVideoMixer_GetClockPeriod(This,pbValue) (This)->lpVtbl->GetClockPeriod(This,pbValue)
+#define IBaseVideoMixer_SetClockPeriod(This,bValue) (This)->lpVtbl->SetClockPeriod(This,bValue)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_SetLeadPin_Proxy(
+    IBaseVideoMixer* This,
+    int iPin);
+void __RPC_STUB IBaseVideoMixer_SetLeadPin_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_GetLeadPin_Proxy(
+    IBaseVideoMixer* This,
+    int *piPin);
+void __RPC_STUB IBaseVideoMixer_GetLeadPin_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_GetInputPinCount_Proxy(
+    IBaseVideoMixer* This,
+    int *piPinCount);
+void __RPC_STUB IBaseVideoMixer_GetInputPinCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_IsUsingClock_Proxy(
+    IBaseVideoMixer* This,
+    int *pbValue);
+void __RPC_STUB IBaseVideoMixer_IsUsingClock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_SetUsingClock_Proxy(
+    IBaseVideoMixer* This,
+    int bValue);
+void __RPC_STUB IBaseVideoMixer_SetUsingClock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_GetClockPeriod_Proxy(
+    IBaseVideoMixer* This,
+    int *pbValue);
+void __RPC_STUB IBaseVideoMixer_GetClockPeriod_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_SetClockPeriod_Proxy(
+    IBaseVideoMixer* This,
+    int bValue);
+void __RPC_STUB IBaseVideoMixer_SetClockPeriod_Stub(
+    IRpcStubBuffer* This,
+    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 __WIDL_amvideo_generated_name_00000001 {
+    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;
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
+unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
+unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
+void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_AMVIDEO_H */
diff --git a/mingw-w64-headers/direct-x/include/amvideo.idl b/mingw-w64-headers/direct-x/include/amvideo.idl
new file mode 100644
index 0000000..ea486d5
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/amvideo.idl
@@ -0,0 +1,241 @@
+/*
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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,
+    /* uuid(36d39eb0-dd75-11ce-bf0e-00aa0055595a)  conflicts with uuids.h */
+    pointer_default(unique),
+    local
+]
+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,
+    /* uuid(1bd0ecb0-f8e2-11ce-aac6-0020af0b99a3)  conflicts with uuids.h */
+    pointer_default(unique),
+    local
+]
+interface IQualProp : IUnknown
+{
+    [propget] HRESULT FramesDroppedInRenderer([out] int * pcFrames);
+    [propget] HRESULT FramesDrawn([out] int * pcFramesDrawn);
+    [propget] HRESULT AvgFrameRate([out] int * piAvgFrameRate);
+    [propget] HRESULT Jitter([out] int * iJitter);
+    [propget] HRESULT AvgSyncOffset([out] int * piAvg);
+    [propget] HRESULT DevSyncOffset([out] int * piDev);
+}
+
+[
+    object,
+    /* uuid(dd1d7110-7836-11cf-bf47-00aa0055595a)  conflicts with uuids.h */
+    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,
+    /* uuid(53479470-f1dd-11cf-bc42-00aa00ac74f6)  conflicts with uuids.h */
+    pointer_default(unique),
+    local
+]
+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,
+    /* uuid(61ded640-e912-11ce-a099-00aa00479a58)  conflicts with uuids.h */
+    pointer_default(unique),
+    local
+]
+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;
+    } DUMMYUNIONNAME;
+} 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;
diff --git a/mingw-w64-headers/direct-x/include/audevcod.h b/mingw-w64-headers/direct-x/include/audevcod.h
new file mode 100644
index 0000000..116f1a8
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/audevcod.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __AUDEVCOD__
+#define __AUDEVCOD__
+
+typedef enum _tagSND_DEVICE_ERROR
+{
+    SNDDEV_ERROR_Open=1,
+    SNDDEV_ERROR_Close=2,
+    SNDDEV_ERROR_GetCaps=3,
+    SNDDEV_ERROR_PrepareHeader=4,
+    SNDDEV_ERROR_UnprepareHeader=5,
+    SNDDEV_ERROR_Reset=6,
+    SNDDEV_ERROR_Restart=7,
+    SNDDEV_ERROR_GetPosition=8,
+    SNDDEV_ERROR_Write=9,
+    SNDDEV_ERROR_Pause=10,
+    SNDDEV_ERROR_Stop=11,
+    SNDDEV_ERROR_Start=12,
+    SNDDEV_ERROR_AddBuffer=13,
+    SNDDEV_ERROR_Query=14
+} SNDDEV_ERR;
+
+#define EC_SND_DEVICE_ERROR_BASE 0x0200
+#define EC_SNDDEV_IN_ERROR       (EC_SND_DEVICE_ERROR_BASE+0x00)
+#define EC_SNDDEV_OUT_ERROR      (EC_SND_DEVICE_ERROR_BASE+0x01)
+
+#endif  /* __AUDEVCOD__ */
diff --git a/mingw-w64-headers/direct-x/include/dshow.h b/mingw-w64-headers/direct-x/include/dshow.h
index 349ad9d..6513140 100644
--- a/mingw-w64-headers/direct-x/include/dshow.h
+++ b/mingw-w64-headers/direct-x/include/dshow.h
@@ -21,24 +21,35 @@
 
 #define AM_NOVTABLE
 
-#include <windef.h>
-#include <wingdi.h>
-#include <objbase.h>
+#ifndef __WINESRC__
+# include <windows.h>
+# include <windowsx.h>
+#else
+# include <windef.h>
+# include <wingdi.h>
+# include <objbase.h>
+#endif
+#include <olectl.h>
 #include <ddraw.h>
 #include <mmsystem.h>
+/* FIXME: #include <strsafe.h>*/
 
 #ifndef NUMELMS
 #define NUMELMS(array) (sizeof(array)/sizeof((array)[0]))
 #endif
 
 #include <strmif.h>
-/*#include <amvideo.h>*/
-/*#include <amaudio.h>*/
+#include <amvideo.h>
+#ifdef DSHOW_USE_AMAUDIO
+/* FIXME: #include <amaudio.h>*/
+#endif
 #include <control.h>
-/*#include <evcode.h>*/
+#include <evcode.h>
 #include <uuids.h>
 #include <errors.h>
+/* FIXME: #include <edevdefs.h> */
 #include <audevcod.h>
+/* FIXME: #include <dvdevcod.h> */
 
 #ifndef OATRUE
 #define OATRUE (-1)
@@ -47,19 +58,4 @@
 #define OAFALSE (0)
 #endif
 
-#include "dmdls.h"
-
-#ifndef VIDEINFOHEADER_DEFINED
-#define VIDEINFOHEADER_DEFINED
-
-typedef struct tagVIDEOINFOHEADER {
-    RECT                rcSource;
-    RECT                rcTarget;
-    DWORD               dwBitRate;
-    DWORD               dwBitErrorRate;
-    REFERENCE_TIME      AvgTimePerFrame;
-    BITMAPINFOHEADER    bmiHeader;
-} VIDEOINFOHEADER;
-#endif
-
 #endif /* __DSHOW_INCLUDED__ */
diff --git a/mingw-w64-headers/direct-x/include/errors.h b/mingw-w64-headers/direct-x/include/errors.h
new file mode 100644
index 0000000..c8c3067
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/errors.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2006 Hans Leidekker
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __ERRORS__
+#define __ERRORS__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AMOVIEAPI
+
+#define VFW_FIRST_CODE      0x200
+#define MAX_ERROR_TEXT_LEN  160
+
+#include <vfwmsgs.h>
+
+typedef BOOL (WINAPI* AMGETERRORTEXTPROCA)(HRESULT,char*,DWORD);
+typedef BOOL (WINAPI* AMGETERRORTEXTPROCW)(HRESULT,WCHAR*,DWORD);
+DECL_WINELIB_TYPE_AW(AMGETERRORTEXTPROC)
+
+DWORD WINAPI AMGetErrorTextA(HRESULT,LPSTR,DWORD);
+DWORD WINAPI AMGetErrorTextW(HRESULT,LPWSTR,DWORD);
+#define AMGetErrorText WINELIB_NAME_AW(AMGetErrorText)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ERRORS__ */
diff --git a/mingw-w64-headers/direct-x/include/evcode.h b/mingw-w64-headers/direct-x/include/evcode.h
new file mode 100644
index 0000000..3cbdd9d
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/evcode.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2004 Christian Costa
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_EVCODE_H
+#define __WINE_EVCODE_H
+
+#define EC_SYSTEMBASE                       0x00
+#define EC_USER                             0x8000
+
+#define EC_COMPLETE                         0x01
+#define EC_USERABORT                        0x02
+#define EC_ERRORABORT                       0x03
+#define EC_TIME                             0x04
+#define EC_REPAINT                          0x05
+#define EC_STREAM_ERROR_STOPPED             0x06
+#define EC_STREAM_ERROR_STILLPLAYING        0x07
+#define EC_ERROR_STILLPLAYING               0x08
+#define EC_PALETTE_CHANGED                  0x09
+#define EC_VIDEO_SIZE_CHANGED               0x0A
+#define EC_QUALITY_CHANGE                   0x0B
+#define EC_SHUTTING_DOWN                    0x0C
+#define EC_CLOCK_CHANGED                    0x0D
+#define EC_OPENING_FILE                     0x10
+#define EC_BUFFERING_DATA                   0x11
+#define EC_FULLSCREEN_LOST                  0x12
+#define EC_ACTIVATE                         0x13
+#define EC_NEED_RESTART                     0x14
+#define EC_WINDOW_DESTROYED                 0x15
+#define EC_DISPLAY_CHANGED                  0x16
+#define EC_STARVATION                       0x17
+#define EC_OLE_EVENT                        0x18
+#define EC_NOTIFY_WINDOW                    0x19
+#define EC_STREAM_CONTROL_STOPPED           0x1A
+#define EC_STREAM_CONTROL_STARTED           0x1B
+#define EC_END_OF_SEGMENT                   0x1C
+#define EC_SEGMENT_STARTED                  0x1D
+#define EC_LENGTH_CHANGED                   0x1E
+
+#endif /* __WINE_EVCODE_H */
diff --git a/mingw-w64-headers/direct-x/include/vfwmsgs.h b/mingw-w64-headers/direct-x/include/vfwmsgs.h
new file mode 100644
index 0000000..16b25c3
--- /dev/null
+++ b/mingw-w64-headers/direct-x/include/vfwmsgs.h
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define VFW_S_NO_MORE_ITEMS              ((HRESULT)0x00040103)
+#define VFW_S_DUPLICATE_NAME             ((HRESULT)0x0004022D)
+#define VFW_S_STATE_INTERMEDIATE         ((HRESULT)0x00040237)
+#define VFW_S_PARTIAL_RENDER             ((HRESULT)0x00040242)
+#define VFW_S_SOME_DATA_IGNORED          ((HRESULT)0x00040245)
+#define VFW_S_CONNECTIONS_DEFERRED       ((HRESULT)0x00040246)
+#define VFW_S_RESOURCE_NOT_NEEDED        ((HRESULT)0x00040250)
+#define VFW_S_MEDIA_TYPE_IGNORED         ((HRESULT)0x00040254)
+#define VFW_S_VIDEO_NOT_RENDERED         ((HRESULT)0x00040257)
+#define VFW_S_AUDIO_NOT_RENDERED         ((HRESULT)0x00040258)
+#define VFW_S_RPZA                       ((HRESULT)0x0004025A)
+#define VFW_S_ESTIMATED                  ((HRESULT)0x00040260)
+#define VFW_S_RESERVED                   ((HRESULT)0x00040263)
+#define VFW_S_STREAM_OFF                 ((HRESULT)0x00040267)
+#define VFW_S_CANT_CUE                   ((HRESULT)0x00040268)
+#define VFW_S_NO_STOP_TIME               ((HRESULT)0x00040270)
+#define VFW_S_NOPREVIEWPIN               ((HRESULT)0x0004027E)
+#define VFW_S_DVD_NON_ONE_SEQUENTIAL     ((HRESULT)0x00040280)
+#define VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE ((HRESULT)0x0004028C)
+#define VFW_S_DVD_NOT_ACCURATE           ((HRESULT)0x0004028D)
+#define VFW_E_INVALIDMEDIATYPE           ((HRESULT)0x80040200)
+#define VFW_E_INVALIDSUBTYPE             ((HRESULT)0x80040201)
+#define VFW_E_NEED_OWNER                 ((HRESULT)0x80040202)
+#define VFW_E_ENUM_OUT_OF_SYNC           ((HRESULT)0x80040203)
+#define VFW_E_ALREADY_CONNECTED          ((HRESULT)0x80040204)
+#define VFW_E_FILTER_ACTIVE              ((HRESULT)0x80040205)
+#define VFW_E_NO_TYPES                   ((HRESULT)0x80040206)
+#define VFW_E_NO_ACCEPTABLE_TYPES        ((HRESULT)0x80040207)
+#define VFW_E_INVALID_DIRECTION          ((HRESULT)0x80040208)
+#define VFW_E_NOT_CONNECTED              ((HRESULT)0x80040209)
+#define VFW_E_NO_ALLOCATOR               ((HRESULT)0x8004020A)
+#define VFW_E_RUNTIME_ERROR              ((HRESULT)0x8004020B)
+#define VFW_E_BUFFER_NOTSET              ((HRESULT)0x8004020C)
+#define VFW_E_BUFFER_OVERFLOW            ((HRESULT)0x8004020D)
+#define VFW_E_BADALIGN                   ((HRESULT)0x8004020E)
+#define VFW_E_ALREADY_COMMITTED          ((HRESULT)0x8004020F)
+#define VFW_E_BUFFERS_OUTSTANDING        ((HRESULT)0x80040210)
+#define VFW_E_NOT_COMMITTED              ((HRESULT)0x80040211)
+#define VFW_E_SIZENOTSET                 ((HRESULT)0x80040212)
+#define VFW_E_NO_CLOCK                   ((HRESULT)0x80040213)
+#define VFW_E_NO_SINK                    ((HRESULT)0x80040214)
+#define VFW_E_NO_INTERFACE               ((HRESULT)0x80040215)
+#define VFW_E_NOT_FOUND                  ((HRESULT)0x80040216)
+#define VFW_E_CANNOT_CONNECT             ((HRESULT)0x80040217)
+#define VFW_E_CANNOT_RENDER              ((HRESULT)0x80040218)
+#define VFW_E_CHANGING_FORMAT            ((HRESULT)0x80040219)
+#define VFW_E_NO_COLOR_KEY_SET           ((HRESULT)0x8004021A)
+#define VFW_E_NOT_OVERLAY_CONNECTION     ((HRESULT)0x8004021B)
+#define VFW_E_NOT_SAMPLE_CONNECTION      ((HRESULT)0x8004021C)
+#define VFW_E_PALETTE_SET                ((HRESULT)0x8004021D)
+#define VFW_E_COLOR_KEY_SET              ((HRESULT)0x8004021E)
+#define VFW_E_NO_COLOR_KEY_FOUND         ((HRESULT)0x8004021F)
+#define VFW_E_NO_PALETTE_AVAILABLE       ((HRESULT)0x80040220)
+#define VFW_E_NO_DISPLAY_PALETTE         ((HRESULT)0x80040221)
+#define VFW_E_TOO_MANY_COLORS            ((HRESULT)0x80040222)
+#define VFW_E_STATE_CHANGED              ((HRESULT)0x80040223)
+#define VFW_E_NOT_STOPPED                ((HRESULT)0x80040224)
+#define VFW_E_NOT_PAUSED                 ((HRESULT)0x80040225)
+#define VFW_E_NOT_RUNNING                ((HRESULT)0x80040226)
+#define VFW_E_WRONG_STATE                ((HRESULT)0x80040227)
+#define VFW_E_START_TIME_AFTER_END       ((HRESULT)0x80040228)
+#define VFW_E_INVALID_RECT               ((HRESULT)0x80040229)
+#define VFW_E_TYPE_NOT_ACCEPTED          ((HRESULT)0x8004022A)
+#define VFW_E_SAMPLE_REJECTED            ((HRESULT)0x8004022B)
+#define VFW_E_SAMPLE_REJECTED_EOS        ((HRESULT)0x8004022C)
+#define VFW_E_DUPLICATE_NAME             ((HRESULT)0x8004022D)
+#define VFW_E_TIMEOUT                    ((HRESULT)0x8004022E)
+#define VFW_E_INVALID_FILE_FORMAT        ((HRESULT)0x8004022F)
+#define VFW_E_ENUM_OUT_OF_RANGE          ((HRESULT)0x80040230)
+#define VFW_E_CIRCULAR_GRAPH             ((HRESULT)0x80040231)
+#define VFW_E_NOT_ALLOWED_TO_SAVE        ((HRESULT)0x80040232)
+#define VFW_E_TIME_ALREADY_PASSED        ((HRESULT)0x80040233)
+#define VFW_E_ALREADY_CANCELLED          ((HRESULT)0x80040234)
+#define VFW_E_CORRUPT_GRAPH_FILE         ((HRESULT)0x80040235)
+#define VFW_E_ADVISE_ALREADY_SET         ((HRESULT)0x80040236)
+#define VFW_E_NO_MODEX_AVAILABLE         ((HRESULT)0x80040238)
+#define VFW_E_NO_ADVISE_SET              ((HRESULT)0x80040239)
+#define VFW_E_NO_FULLSCREEN              ((HRESULT)0x8004023A)
+#define VFW_E_IN_FULLSCREEN_MODE         ((HRESULT)0x8004023B)
+#define VFW_E_UNKNOWN_FILE_TYPE          ((HRESULT)0x80040240)
+#define VFW_E_CANNOT_LOAD_SOURCE_FILTER  ((HRESULT)0x80040241)
+#define VFW_E_FILE_TOO_SHORT             ((HRESULT)0x80040243)
+#define VFW_E_INVALID_FILE_VERSION       ((HRESULT)0x80040244)
+#define VFW_E_INVALID_CLSID              ((HRESULT)0x80040247)
+#define VFW_E_INVALID_MEDIA_TYPE         ((HRESULT)0x80040248)
+#define VFW_E_SAMPLE_TIME_NOT_SET        ((HRESULT)0x80040249)
+#define VFW_E_MEDIA_TIME_NOT_SET         ((HRESULT)0x80040251)
+#define VFW_E_NO_TIME_FORMAT_SET         ((HRESULT)0x80040252)
+#define VFW_E_MONO_AUDIO_HW              ((HRESULT)0x80040253)
+#define VFW_E_NO_DECOMPRESSOR            ((HRESULT)0x80040255)
+#define VFW_E_NO_AUDIO_HARDWARE          ((HRESULT)0x80040256)
+#define VFW_E_RPZA                       ((HRESULT)0x80040259)
+#define VFW_E_PROCESSOR_NOT_SUITABLE     ((HRESULT)0x8004025B)
+#define VFW_E_UNSUPPORTED_AUDIO          ((HRESULT)0x8004025C)
+#define VFW_E_UNSUPPORTED_VIDEO          ((HRESULT)0x8004025D)
+#define VFW_E_MPEG_NOT_CONSTRAINED       ((HRESULT)0x8004025E)
+#define VFW_E_NOT_IN_GRAPH               ((HRESULT)0x8004025F)
+#define VFW_E_NO_TIME_FORMAT             ((HRESULT)0x80040261)
+#define VFW_E_READ_ONLY                  ((HRESULT)0x80040262)
+#define VFW_E_BUFFER_UNDERFLOW           ((HRESULT)0x80040264)
+#define VFW_E_UNSUPPORTED_STREAM         ((HRESULT)0x80040265)
+#define VFW_E_NO_TRANSPORT               ((HRESULT)0x80040266)
+#define VFW_E_BAD_VIDEOCD                ((HRESULT)0x80040269)
+#define VFW_E_OUT_OF_VIDEO_MEMORY        ((HRESULT)0x80040271)
+#define VFW_E_VP_NEGOTIATION_FAILED      ((HRESULT)0x80040272)
+#define VFW_E_DDRAW_CAPS_NOT_SUITABLE    ((HRESULT)0x80040273)
+#define VFW_E_NO_VP_HARDWARE             ((HRESULT)0x80040274)
+#define VFW_E_NO_CAPTURE_HARDWARE        ((HRESULT)0x80040275)
+#define VFW_E_DVD_OPERATION_INHIBITED    ((HRESULT)0x80040276)
+#define VFW_E_DVD_INVALIDDOMAIN          ((HRESULT)0x80040277)
+#define VFW_E_DVD_NO_BUTTON              ((HRESULT)0x80040278)
+#define VFW_E_DVD_GRAPHNOTREADY          ((HRESULT)0x80040279)
+#define VFW_E_DVD_RENDERFAIL             ((HRESULT)0x8004027A)
+#define VFW_E_DVD_DECNOTENOUGH           ((HRESULT)0x8004027B)
+#define VFW_E_DDRAW_VERSION_NOT_SUITABLE ((HRESULT)0x8004027C)
+#define VFW_E_COPYPROT_FAILED            ((HRESULT)0x8004027D)
+#define VFW_E_TIME_EXPIRED               ((HRESULT)0x8004027F)
+#define VFW_E_DVD_WRONG_SPEED            ((HRESULT)0x80040281)
+#define VFW_E_DVD_MENU_DOES_NOT_EXIST    ((HRESULT)0x80040282)
+#define VFW_E_DVD_CMD_CANCELLED          ((HRESULT)0x80040283)
+#define VFW_E_DVD_STATE_WRONG_VERSION    ((HRESULT)0x80040284)
+#define VFW_E_DVD_STATE_CORRUPT          ((HRESULT)0x80040285)
+#define VFW_E_DVD_STATE_WRONG_DISC       ((HRESULT)0x80040286)
+#define VFW_E_DVD_INCOMPATIBLE_REGION    ((HRESULT)0x80040287)
+#define VFW_E_DVD_NO_ATTRIBUTES          ((HRESULT)0x80040288)
+#define VFW_E_DVD_NO_GOUP_PGC            ((HRESULT)0x80040289)
+#define VFW_E_DVD_LOW_PARENTAL_LEVEL     ((HRESULT)0x8004028A)
+#define VFW_E_DVD_NOT_IN_KARAOKE_MODE    ((HRESULT)0x8004028B)
+#define VFW_E_FRAME_STEP_UNSUPPORTED     ((HRESULT)0x8004028E)
+#define VFW_E_DVD_STREAM_DISABLED        ((HRESULT)0x8004028F)
+#define VFW_E_DVD_TITLE_UNKNOWN          ((HRESULT)0x80040290)
+#define VFW_E_DVD_INVALID_DISC           ((HRESULT)0x80040291)
+#define VFW_E_DVD_NO_RESUME_INFORMATION  ((HRESULT)0x80040292)
+#define VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD ((HRESULT)0x80040293)
+#define VFW_E_PIN_ALREADY_BLOCKED        ((HRESULT)0x80040294)
+#define VFW_E_CERTIFICATION_FAILURE      ((HRESULT)0x80040295)
+#define VFW_E_VMR_NOT_IN_MIXER_MODE      ((HRESULT)0x80040296)
+#define VFW_E_VMR_NO_AP_SUPPLIED         ((HRESULT)0x80040297)
+#define VFW_E_VMR_NO_DEINTERLACE_HW      ((HRESULT)0x80040298)
+#define VFW_E_DVD_VMR9_INCOMPATIBLEDEC   ((HRESULT)0x8004029A)
+#define VFW_E_BAD_KEY                    ((HRESULT)0x800403F2)
+
+#ifndef E_PROP_ID_UNSUPPORTED
+#define E_PROP_ID_UNSUPPORTED            ((HRESULT)0x80070490)
+#endif
+#ifndef E_PROP_SET_UNSUPPORTED
+#define E_PROP_SET_UNSUPPORTED           ((HRESULT)0x80070492)
+#endif