diff --git a/mingw-w64-headers/direct-x/include/amstream.h b/mingw-w64-headers/direct-x/include/amstream.h
index fb2d3ed..563b1f4 100644
--- a/mingw-w64-headers/direct-x/include/amstream.h
+++ b/mingw-w64-headers/direct-x/include/amstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/amstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/amstream.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/amvideo.h b/mingw-w64-headers/direct-x/include/amvideo.h
index 55116c3..ec552a5 100644
--- a/mingw-w64-headers/direct-x/include/amvideo.h
+++ b/mingw-w64-headers/direct-x/include/amvideo.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/amvideo.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/amvideo.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/austream.h b/mingw-w64-headers/direct-x/include/austream.h
index dbd4070..fd50089 100644
--- a/mingw-w64-headers/direct-x/include/austream.h
+++ b/mingw-w64-headers/direct-x/include/austream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/austream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/austream.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/d3d10.h b/mingw-w64-headers/direct-x/include/d3d10.h
index 3089334..78a6b01 100644
--- a/mingw-w64-headers/direct-x/include/d3d10.h
+++ b/mingw-w64-headers/direct-x/include/d3d10.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/d3d10.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/d3d10.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/d3d10_1.h b/mingw-w64-headers/direct-x/include/d3d10_1.h
index 4132980..d7cd8c8 100644
--- a/mingw-w64-headers/direct-x/include/d3d10_1.h
+++ b/mingw-w64-headers/direct-x/include/d3d10_1.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/d3d10_1.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/d3d10_1.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/d3d10sdklayers.h b/mingw-w64-headers/direct-x/include/d3d10sdklayers.h
index 226847f..02d2cda 100644
--- a/mingw-w64-headers/direct-x/include/d3d10sdklayers.h
+++ b/mingw-w64-headers/direct-x/include/d3d10sdklayers.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/d3d10sdklayers.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/d3d10sdklayers.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/d3d11.h b/mingw-w64-headers/direct-x/include/d3d11.h
index fc4cb67..c3a8810 100644
--- a/mingw-w64-headers/direct-x/include/d3d11.h
+++ b/mingw-w64-headers/direct-x/include/d3d11.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/d3d11.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/d3d11.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/d3d11_1.h b/mingw-w64-headers/direct-x/include/d3d11_1.h
index bec9571..f8e6652 100644
--- a/mingw-w64-headers/direct-x/include/d3d11_1.h
+++ b/mingw-w64-headers/direct-x/include/d3d11_1.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/d3d11_1.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/d3d11_1.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/d3d11_2.h b/mingw-w64-headers/direct-x/include/d3d11_2.h
index 6d46bbb..2090864 100644
--- a/mingw-w64-headers/direct-x/include/d3d11_2.h
+++ b/mingw-w64-headers/direct-x/include/d3d11_2.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/d3d11_2.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/d3d11_2.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/d3d11_3.h b/mingw-w64-headers/direct-x/include/d3d11_3.h
index fa23164..1ece5a9 100644
--- a/mingw-w64-headers/direct-x/include/d3d11_3.h
+++ b/mingw-w64-headers/direct-x/include/d3d11_3.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/d3d11_3.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/d3d11_3.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/d3d11_4.h b/mingw-w64-headers/direct-x/include/d3d11_4.h
index f96bee1..5ca65a1 100644
--- a/mingw-w64-headers/direct-x/include/d3d11_4.h
+++ b/mingw-w64-headers/direct-x/include/d3d11_4.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/d3d11_4.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/d3d11_4.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/d3d11sdklayers.h b/mingw-w64-headers/direct-x/include/d3d11sdklayers.h
index f118348..328d910 100644
--- a/mingw-w64-headers/direct-x/include/d3d11sdklayers.h
+++ b/mingw-w64-headers/direct-x/include/d3d11sdklayers.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/d3d11sdklayers.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/d3d11sdklayers.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/d3dcommon.h b/mingw-w64-headers/direct-x/include/d3dcommon.h
index cad7bca..e3bfd3a 100644
--- a/mingw-w64-headers/direct-x/include/d3dcommon.h
+++ b/mingw-w64-headers/direct-x/include/d3dcommon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/d3dcommon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/d3dcommon.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/ddstream.h b/mingw-w64-headers/direct-x/include/ddstream.h
index 42b7418..1df366f 100644
--- a/mingw-w64-headers/direct-x/include/ddstream.h
+++ b/mingw-w64-headers/direct-x/include/ddstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/ddstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/ddstream.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/dmodshow.h b/mingw-w64-headers/direct-x/include/dmodshow.h
index 517dc74..9c7efc5 100644
--- a/mingw-w64-headers/direct-x/include/dmodshow.h
+++ b/mingw-w64-headers/direct-x/include/dmodshow.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from direct-x/include/dmodshow.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/dmodshow.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
@@ -20,6 +20,9 @@
 #ifndef __IDMOWrapperFilter_FWD_DEFINED__
 #define __IDMOWrapperFilter_FWD_DEFINED__
 typedef interface IDMOWrapperFilter IDMOWrapperFilter;
+#ifdef __cplusplus
+interface IDMOWrapperFilter;
+#endif /* __cplusplus */
 #endif
 
 /* Headers for imported files */
@@ -56,24 +59,25 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDMOWrapperFilter* This,
+        IDMOWrapperFilter *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDMOWrapperFilter* This);
+        IDMOWrapperFilter *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDMOWrapperFilter* This);
+        IDMOWrapperFilter *This);
 
     /*** IDMOWrapperFilter methods ***/
     HRESULT (STDMETHODCALLTYPE *Init)(
-        IDMOWrapperFilter* This,
+        IDMOWrapperFilter *This,
         REFCLSID clsidDMO,
         REFCLSID catDMO);
 
     END_INTERFACE
 } IDMOWrapperFilterVtbl;
+
 interface IDMOWrapperFilter {
     CONST_VTBL IDMOWrapperFilterVtbl* lpVtbl;
 };
@@ -106,15 +110,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDMOWrapperFilter_Init_Proxy(
-    IDMOWrapperFilter* This,
-    REFCLSID clsidDMO,
-    REFCLSID catDMO);
-void __RPC_STUB IDMOWrapperFilter_Init_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDMOWrapperFilter_INTERFACE_DEFINED__ */
 
diff --git a/mingw-w64-headers/direct-x/include/dxgi.h b/mingw-w64-headers/direct-x/include/dxgi.h
index 75e3ec2..30d9eea 100644
--- a/mingw-w64-headers/direct-x/include/dxgi.h
+++ b/mingw-w64-headers/direct-x/include/dxgi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/dxgi.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/dxgi1_2.h b/mingw-w64-headers/direct-x/include/dxgi1_2.h
index 1bad164..89e01e4 100644
--- a/mingw-w64-headers/direct-x/include/dxgi1_2.h
+++ b/mingw-w64-headers/direct-x/include/dxgi1_2.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi1_2.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/dxgi1_2.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/dxgi1_3.h b/mingw-w64-headers/direct-x/include/dxgi1_3.h
index 8af0bd8..8d31138 100644
--- a/mingw-w64-headers/direct-x/include/dxgi1_3.h
+++ b/mingw-w64-headers/direct-x/include/dxgi1_3.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi1_3.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/dxgi1_3.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/dxgi1_4.h b/mingw-w64-headers/direct-x/include/dxgi1_4.h
index 6fdc566..cb37bf8 100644
--- a/mingw-w64-headers/direct-x/include/dxgi1_4.h
+++ b/mingw-w64-headers/direct-x/include/dxgi1_4.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi1_4.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/dxgi1_4.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/dxgi1_5.h b/mingw-w64-headers/direct-x/include/dxgi1_5.h
index f570f53..0bdb9fc 100644
--- a/mingw-w64-headers/direct-x/include/dxgi1_5.h
+++ b/mingw-w64-headers/direct-x/include/dxgi1_5.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi1_5.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/dxgi1_5.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/dxgi1_6.h b/mingw-w64-headers/direct-x/include/dxgi1_6.h
index b872782..3460d29 100644
--- a/mingw-w64-headers/direct-x/include/dxgi1_6.h
+++ b/mingw-w64-headers/direct-x/include/dxgi1_6.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi1_6.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/dxgi1_6.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/dxgicommon.h b/mingw-w64-headers/direct-x/include/dxgicommon.h
index 58ef4c3..8b71c57 100644
--- a/mingw-w64-headers/direct-x/include/dxgicommon.h
+++ b/mingw-w64-headers/direct-x/include/dxgicommon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/dxgicommon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/dxgicommon.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/dxgiformat.h b/mingw-w64-headers/direct-x/include/dxgiformat.h
index e278ff1..d084670 100644
--- a/mingw-w64-headers/direct-x/include/dxgiformat.h
+++ b/mingw-w64-headers/direct-x/include/dxgiformat.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/dxgiformat.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/dxgiformat.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/dxgitype.h b/mingw-w64-headers/direct-x/include/dxgitype.h
index 4b3424a..ecce033 100644
--- a/mingw-w64-headers/direct-x/include/dxgitype.h
+++ b/mingw-w64-headers/direct-x/include/dxgitype.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/dxgitype.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/dxgitype.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/mediaobj.h b/mingw-w64-headers/direct-x/include/mediaobj.h
index c406c22..9cad287 100644
--- a/mingw-w64-headers/direct-x/include/mediaobj.h
+++ b/mingw-w64-headers/direct-x/include/mediaobj.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/mediaobj.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/mediaobj.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/medparam.h b/mingw-w64-headers/direct-x/include/medparam.h
index 01a7753..e1c22e2 100644
--- a/mingw-w64-headers/direct-x/include/medparam.h
+++ b/mingw-w64-headers/direct-x/include/medparam.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from direct-x/include/medparam.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/medparam.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
@@ -20,11 +20,17 @@
 #ifndef __IMediaParams_FWD_DEFINED__
 #define __IMediaParams_FWD_DEFINED__
 typedef interface IMediaParams IMediaParams;
+#ifdef __cplusplus
+interface IMediaParams;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMediaParamInfo_FWD_DEFINED__
 #define __IMediaParamInfo_FWD_DEFINED__
 typedef interface IMediaParamInfo IMediaParamInfo;
+#ifdef __cplusplus
+interface IMediaParamInfo;
+#endif /* __cplusplus */
 #endif
 
 /* Headers for imported files */
@@ -124,46 +130,47 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMediaParams* This,
+        IMediaParams *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMediaParams* This);
+        IMediaParams *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMediaParams* This);
+        IMediaParams *This);
 
     /*** IMediaParams methods ***/
     HRESULT (STDMETHODCALLTYPE *AddEnvelope)(
-        IMediaParams* This,
+        IMediaParams *This,
         DWORD dwParamIndex,
         DWORD cPoints,
         MP_ENVELOPE_SEGMENT *pEnvelope);
 
     HRESULT (STDMETHODCALLTYPE *FlushEnvelope)(
-        IMediaParams* This,
+        IMediaParams *This,
         DWORD dwParamIndex,
         REFERENCE_TIME refTimeStart,
         REFERENCE_TIME refTimeEnd);
 
     HRESULT (STDMETHODCALLTYPE *GetParam)(
-        IMediaParams* This,
+        IMediaParams *This,
         DWORD dwParamIndex,
         MP_DATA *pValue);
 
     HRESULT (STDMETHODCALLTYPE *SetParam)(
-        IMediaParams* This,
+        IMediaParams *This,
         DWORD dwParamIndex,
         MP_DATA value);
 
     HRESULT (STDMETHODCALLTYPE *SetTimeFormat)(
-        IMediaParams* This,
+        IMediaParams *This,
         GUID guidTimeFormat,
         MP_TIMEDATA mpTimeData);
 
     END_INTERFACE
 } IMediaParamsVtbl;
+
 interface IMediaParams {
     CONST_VTBL IMediaParamsVtbl* lpVtbl;
 };
@@ -212,53 +219,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IMediaParams_AddEnvelope_Proxy(
-    IMediaParams* This,
-    DWORD dwParamIndex,
-    DWORD cPoints,
-    MP_ENVELOPE_SEGMENT *pEnvelope);
-void __RPC_STUB IMediaParams_AddEnvelope_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMediaParams_FlushEnvelope_Proxy(
-    IMediaParams* This,
-    DWORD dwParamIndex,
-    REFERENCE_TIME refTimeStart,
-    REFERENCE_TIME refTimeEnd);
-void __RPC_STUB IMediaParams_FlushEnvelope_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMediaParams_GetParam_Proxy(
-    IMediaParams* This,
-    DWORD dwParamIndex,
-    MP_DATA *pValue);
-void __RPC_STUB IMediaParams_GetParam_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMediaParams_SetParam_Proxy(
-    IMediaParams* This,
-    DWORD dwParamIndex,
-    MP_DATA value);
-void __RPC_STUB IMediaParams_SetParam_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMediaParams_SetTimeFormat_Proxy(
-    IMediaParams* This,
-    GUID guidTimeFormat,
-    MP_TIMEDATA mpTimeData);
-void __RPC_STUB IMediaParams_SetTimeFormat_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMediaParams_INTERFACE_DEFINED__ */
 
@@ -305,47 +265,48 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMediaParamInfo* This,
+        IMediaParamInfo *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMediaParamInfo* This);
+        IMediaParamInfo *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMediaParamInfo* This);
+        IMediaParamInfo *This);
 
     /*** IMediaParamInfo methods ***/
     HRESULT (STDMETHODCALLTYPE *GetParamCount)(
-        IMediaParamInfo* This,
+        IMediaParamInfo *This,
         DWORD *pdwParams);
 
     HRESULT (STDMETHODCALLTYPE *GetParamInfo)(
-        IMediaParamInfo* This,
+        IMediaParamInfo *This,
         DWORD dwParamIndex,
         MP_PARAMINFO *pInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetParamText)(
-        IMediaParamInfo* This,
+        IMediaParamInfo *This,
         DWORD dwParamIndex,
         WCHAR **ppwchText);
 
     HRESULT (STDMETHODCALLTYPE *GetNumTimeFormats)(
-        IMediaParamInfo* This,
+        IMediaParamInfo *This,
         DWORD *pdwNumTimeFormats);
 
     HRESULT (STDMETHODCALLTYPE *GetSupportedTimeFormat)(
-        IMediaParamInfo* This,
+        IMediaParamInfo *This,
         DWORD dwFormatIndex,
         GUID *pguidTimeFormat);
 
     HRESULT (STDMETHODCALLTYPE *GetCurrentTimeFormat)(
-        IMediaParamInfo* This,
+        IMediaParamInfo *This,
         GUID *pguidTimeFormat,
         MP_TIMEDATA *pTimeData);
 
     END_INTERFACE
 } IMediaParamInfoVtbl;
+
 interface IMediaParamInfo {
     CONST_VTBL IMediaParamInfoVtbl* lpVtbl;
 };
@@ -398,58 +359,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetParamCount_Proxy(
-    IMediaParamInfo* This,
-    DWORD *pdwParams);
-void __RPC_STUB IMediaParamInfo_GetParamCount_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetParamInfo_Proxy(
-    IMediaParamInfo* This,
-    DWORD dwParamIndex,
-    MP_PARAMINFO *pInfo);
-void __RPC_STUB IMediaParamInfo_GetParamInfo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetParamText_Proxy(
-    IMediaParamInfo* This,
-    DWORD dwParamIndex,
-    WCHAR **ppwchText);
-void __RPC_STUB IMediaParamInfo_GetParamText_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetNumTimeFormats_Proxy(
-    IMediaParamInfo* This,
-    DWORD *pdwNumTimeFormats);
-void __RPC_STUB IMediaParamInfo_GetNumTimeFormats_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetSupportedTimeFormat_Proxy(
-    IMediaParamInfo* This,
-    DWORD dwFormatIndex,
-    GUID *pguidTimeFormat);
-void __RPC_STUB IMediaParamInfo_GetSupportedTimeFormat_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetCurrentTimeFormat_Proxy(
-    IMediaParamInfo* This,
-    GUID *pguidTimeFormat,
-    MP_TIMEDATA *pTimeData);
-void __RPC_STUB IMediaParamInfo_GetCurrentTimeFormat_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMediaParamInfo_INTERFACE_DEFINED__ */
 
diff --git a/mingw-w64-headers/direct-x/include/mmstream.h b/mingw-w64-headers/direct-x/include/mmstream.h
index 3bd1e18..549c15a 100644
--- a/mingw-w64-headers/direct-x/include/mmstream.h
+++ b/mingw-w64-headers/direct-x/include/mmstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/mmstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/mmstream.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/qedit.h b/mingw-w64-headers/direct-x/include/qedit.h
index 84ba0ce..27e5d74 100644
--- a/mingw-w64-headers/direct-x/include/qedit.h
+++ b/mingw-w64-headers/direct-x/include/qedit.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 3.19 from direct-x/include/qedit.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/qedit.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
diff --git a/mingw-w64-headers/direct-x/include/qnetwork.h b/mingw-w64-headers/direct-x/include/qnetwork.h
index 710bcef..70b48d0 100644
--- a/mingw-w64-headers/direct-x/include/qnetwork.h
+++ b/mingw-w64-headers/direct-x/include/qnetwork.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from direct-x/include/qnetwork.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/qnetwork.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
@@ -20,11 +20,17 @@
 #ifndef __IAMMediaContent_FWD_DEFINED__
 #define __IAMMediaContent_FWD_DEFINED__
 typedef interface IAMMediaContent IAMMediaContent;
+#ifdef __cplusplus
+interface IAMMediaContent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAMNetworkStatus_FWD_DEFINED__
 #define __IAMNetworkStatus_FWD_DEFINED__
 typedef interface IAMNetworkStatus IAMNetworkStatus;
+#ifdef __cplusplus
+interface IAMNetworkStatus;
+#endif /* __cplusplus */
 #endif
 
 /* Headers for imported files */
@@ -97,29 +103,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAMMediaContent* This);
+        IAMMediaContent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAMMediaContent* This);
+        IAMMediaContent *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -127,7 +133,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -139,59 +145,60 @@
 
     /*** IAMMediaContent methods ***/
     HRESULT (STDMETHODCALLTYPE *get_AuthorName)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrAuthorName);
 
     HRESULT (STDMETHODCALLTYPE *get_Title)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrTitle);
 
     HRESULT (STDMETHODCALLTYPE *get_Rating)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrRating);
 
     HRESULT (STDMETHODCALLTYPE *get_Description)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrDescription);
 
     HRESULT (STDMETHODCALLTYPE *get_Copyright)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrCopyright);
 
     HRESULT (STDMETHODCALLTYPE *get_BaseURL)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrBaseURL);
 
     HRESULT (STDMETHODCALLTYPE *get_LogoURL)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrLogoURL);
 
     HRESULT (STDMETHODCALLTYPE *get_LogoIconURL)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrLogoURL);
 
     HRESULT (STDMETHODCALLTYPE *get_WatermarkURL)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrWatermarkURL);
 
     HRESULT (STDMETHODCALLTYPE *get_MoreInfoURL)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrMoreInfoURL);
 
     HRESULT (STDMETHODCALLTYPE *get_MoreInfoBannerImage)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrMoreInfoBannerImage);
 
     HRESULT (STDMETHODCALLTYPE *get_MoreInfoBannerURL)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrMoreInfoBannerURL);
 
     HRESULT (STDMETHODCALLTYPE *get_MoreInfoText)(
-        IAMMediaContent* This,
+        IAMMediaContent *This,
         BSTR *pbstrMoreInfoText);
 
     END_INTERFACE
 } IAMMediaContentVtbl;
+
 interface IAMMediaContent {
     CONST_VTBL IAMMediaContentVtbl* lpVtbl;
 };
@@ -290,110 +297,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_AuthorName_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrAuthorName);
-void __RPC_STUB IAMMediaContent_get_AuthorName_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_Title_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrTitle);
-void __RPC_STUB IAMMediaContent_get_Title_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_Rating_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrRating);
-void __RPC_STUB IAMMediaContent_get_Rating_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_Description_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrDescription);
-void __RPC_STUB IAMMediaContent_get_Description_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_Copyright_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrCopyright);
-void __RPC_STUB IAMMediaContent_get_Copyright_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_BaseURL_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrBaseURL);
-void __RPC_STUB IAMMediaContent_get_BaseURL_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_LogoURL_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrLogoURL);
-void __RPC_STUB IAMMediaContent_get_LogoURL_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_LogoIconURL_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrLogoURL);
-void __RPC_STUB IAMMediaContent_get_LogoIconURL_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_WatermarkURL_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrWatermarkURL);
-void __RPC_STUB IAMMediaContent_get_WatermarkURL_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_MoreInfoURL_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrMoreInfoURL);
-void __RPC_STUB IAMMediaContent_get_MoreInfoURL_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_MoreInfoBannerImage_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrMoreInfoBannerImage);
-void __RPC_STUB IAMMediaContent_get_MoreInfoBannerImage_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_MoreInfoBannerURL_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrMoreInfoBannerURL);
-void __RPC_STUB IAMMediaContent_get_MoreInfoBannerURL_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMMediaContent_get_MoreInfoText_Proxy(
-    IAMMediaContent* This,
-    BSTR *pbstrMoreInfoText);
-void __RPC_STUB IAMMediaContent_get_MoreInfoText_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAMMediaContent_INTERFACE_DEFINED__ */
 
@@ -439,29 +342,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAMNetworkStatus* This);
+        IAMNetworkStatus *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAMNetworkStatus* This);
+        IAMNetworkStatus *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -469,7 +372,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -481,35 +384,36 @@
 
     /*** IAMNetworkStatus methods ***/
     HRESULT (STDMETHODCALLTYPE *get_ReceivedPackets)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         LONG *pReceivedPackets);
 
     HRESULT (STDMETHODCALLTYPE *get_RecoveredPackets)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         LONG *pRecoveredPackets);
 
     HRESULT (STDMETHODCALLTYPE *get_LostPackets)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         LONG *pLostPackets);
 
     HRESULT (STDMETHODCALLTYPE *get_ReceptionQuality)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         LONG *pReceptionQuality);
 
     HRESULT (STDMETHODCALLTYPE *get_BufferingCount)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         LONG *pBufferingCount);
 
     HRESULT (STDMETHODCALLTYPE *get_IsBroadcast)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         VARIANT_BOOL *pIsBroadcast);
 
     HRESULT (STDMETHODCALLTYPE *get_BufferingProgress)(
-        IAMNetworkStatus* This,
+        IAMNetworkStatus *This,
         LONG *pBufferingProgress);
 
     END_INTERFACE
 } IAMNetworkStatusVtbl;
+
 interface IAMNetworkStatus {
     CONST_VTBL IAMNetworkStatusVtbl* lpVtbl;
 };
@@ -584,62 +488,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAMNetworkStatus_get_ReceivedPackets_Proxy(
-    IAMNetworkStatus* This,
-    LONG *pReceivedPackets);
-void __RPC_STUB IAMNetworkStatus_get_ReceivedPackets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMNetworkStatus_get_RecoveredPackets_Proxy(
-    IAMNetworkStatus* This,
-    LONG *pRecoveredPackets);
-void __RPC_STUB IAMNetworkStatus_get_RecoveredPackets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMNetworkStatus_get_LostPackets_Proxy(
-    IAMNetworkStatus* This,
-    LONG *pLostPackets);
-void __RPC_STUB IAMNetworkStatus_get_LostPackets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMNetworkStatus_get_ReceptionQuality_Proxy(
-    IAMNetworkStatus* This,
-    LONG *pReceptionQuality);
-void __RPC_STUB IAMNetworkStatus_get_ReceptionQuality_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMNetworkStatus_get_BufferingCount_Proxy(
-    IAMNetworkStatus* This,
-    LONG *pBufferingCount);
-void __RPC_STUB IAMNetworkStatus_get_BufferingCount_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMNetworkStatus_get_IsBroadcast_Proxy(
-    IAMNetworkStatus* This,
-    VARIANT_BOOL *pIsBroadcast);
-void __RPC_STUB IAMNetworkStatus_get_IsBroadcast_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAMNetworkStatus_get_BufferingProgress_Proxy(
-    IAMNetworkStatus* This,
-    LONG *pBufferingProgress);
-void __RPC_STUB IAMNetworkStatus_get_BufferingProgress_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAMNetworkStatus_INTERFACE_DEFINED__ */
 
diff --git a/mingw-w64-headers/direct-x/include/vmr9.h b/mingw-w64-headers/direct-x/include/vmr9.h
index e444851..02c0065 100644
--- a/mingw-w64-headers/direct-x/include/vmr9.h
+++ b/mingw-w64-headers/direct-x/include/vmr9.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from direct-x/include/vmr9.idl - Do not edit ***/
+/*** Autogenerated by WIDL 3.20 from direct-x/include/vmr9.idl - Do not edit ***/
 
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
@@ -20,76 +20,121 @@
 #ifndef __IVMRImagePresenter9_FWD_DEFINED__
 #define __IVMRImagePresenter9_FWD_DEFINED__
 typedef interface IVMRImagePresenter9 IVMRImagePresenter9;
+#ifdef __cplusplus
+interface IVMRImagePresenter9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRSurfaceAllocator9_FWD_DEFINED__
 #define __IVMRSurfaceAllocator9_FWD_DEFINED__
 typedef interface IVMRSurfaceAllocator9 IVMRSurfaceAllocator9;
+#ifdef __cplusplus
+interface IVMRSurfaceAllocator9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
 #define __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
 typedef interface IVMRSurfaceAllocatorEx9 IVMRSurfaceAllocatorEx9;
+#ifdef __cplusplus
+interface IVMRSurfaceAllocatorEx9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
 #define __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
 typedef interface IVMRSurfaceAllocatorNotify9 IVMRSurfaceAllocatorNotify9;
+#ifdef __cplusplus
+interface IVMRSurfaceAllocatorNotify9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRWindowlessControl9_FWD_DEFINED__
 #define __IVMRWindowlessControl9_FWD_DEFINED__
 typedef interface IVMRWindowlessControl9 IVMRWindowlessControl9;
+#ifdef __cplusplus
+interface IVMRWindowlessControl9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRMixerControl9_FWD_DEFINED__
 #define __IVMRMixerControl9_FWD_DEFINED__
 typedef interface IVMRMixerControl9 IVMRMixerControl9;
+#ifdef __cplusplus
+interface IVMRMixerControl9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRMixerBitmap9_FWD_DEFINED__
 #define __IVMRMixerBitmap9_FWD_DEFINED__
 typedef interface IVMRMixerBitmap9 IVMRMixerBitmap9;
+#ifdef __cplusplus
+interface IVMRMixerBitmap9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRSurface9_FWD_DEFINED__
 #define __IVMRSurface9_FWD_DEFINED__
 typedef interface IVMRSurface9 IVMRSurface9;
+#ifdef __cplusplus
+interface IVMRSurface9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRImagePresenterConfig9_FWD_DEFINED__
 #define __IVMRImagePresenterConfig9_FWD_DEFINED__
 typedef interface IVMRImagePresenterConfig9 IVMRImagePresenterConfig9;
+#ifdef __cplusplus
+interface IVMRImagePresenterConfig9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRVideoStreamControl9_FWD_DEFINED__
 #define __IVMRVideoStreamControl9_FWD_DEFINED__
 typedef interface IVMRVideoStreamControl9 IVMRVideoStreamControl9;
+#ifdef __cplusplus
+interface IVMRVideoStreamControl9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRFilterConfig9_FWD_DEFINED__
 #define __IVMRFilterConfig9_FWD_DEFINED__
 typedef interface IVMRFilterConfig9 IVMRFilterConfig9;
+#ifdef __cplusplus
+interface IVMRFilterConfig9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRAspectRatioControl9_FWD_DEFINED__
 #define __IVMRAspectRatioControl9_FWD_DEFINED__
 typedef interface IVMRAspectRatioControl9 IVMRAspectRatioControl9;
+#ifdef __cplusplus
+interface IVMRAspectRatioControl9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRMonitorConfig9_FWD_DEFINED__
 #define __IVMRMonitorConfig9_FWD_DEFINED__
 typedef interface IVMRMonitorConfig9 IVMRMonitorConfig9;
+#ifdef __cplusplus
+interface IVMRMonitorConfig9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRDeinterlaceControl9_FWD_DEFINED__
 #define __IVMRDeinterlaceControl9_FWD_DEFINED__
 typedef interface IVMRDeinterlaceControl9 IVMRDeinterlaceControl9;
+#ifdef __cplusplus
+interface IVMRDeinterlaceControl9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRImageCompositor9_FWD_DEFINED__
 #define __IVMRImageCompositor9_FWD_DEFINED__
 typedef interface IVMRImageCompositor9 IVMRImageCompositor9;
+#ifdef __cplusplus
+interface IVMRImageCompositor9;
+#endif /* __cplusplus */
 #endif
 
 /* Headers for imported files */
@@ -104,11 +149,17 @@
 #ifndef __IDirect3DSurface9_FWD_DEFINED__
 #define __IDirect3DSurface9_FWD_DEFINED__
 typedef interface IDirect3DSurface9 IDirect3DSurface9;
+#ifdef __cplusplus
+interface IDirect3DSurface9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDirect3DDevice9_FWD_DEFINED__
 #define __IDirect3DDevice9_FWD_DEFINED__
 typedef interface IDirect3DDevice9 IDirect3DDevice9;
+#ifdef __cplusplus
+interface IDirect3DDevice9;
+#endif /* __cplusplus */
 #endif
 
 typedef LONGLONG REFERENCE_TIME;
@@ -125,71 +176,113 @@
 #ifndef __IVMRSurface9_FWD_DEFINED__
 #define __IVMRSurface9_FWD_DEFINED__
 typedef interface IVMRSurface9 IVMRSurface9;
+#ifdef __cplusplus
+interface IVMRSurface9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRSurfaceAllocator9_FWD_DEFINED__
 #define __IVMRSurfaceAllocator9_FWD_DEFINED__
 typedef interface IVMRSurfaceAllocator9 IVMRSurfaceAllocator9;
+#ifdef __cplusplus
+interface IVMRSurfaceAllocator9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
 #define __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
 typedef interface IVMRSurfaceAllocatorEx9 IVMRSurfaceAllocatorEx9;
+#ifdef __cplusplus
+interface IVMRSurfaceAllocatorEx9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
 #define __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
 typedef interface IVMRSurfaceAllocatorNotify9 IVMRSurfaceAllocatorNotify9;
+#ifdef __cplusplus
+interface IVMRSurfaceAllocatorNotify9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRImagePresenter9_FWD_DEFINED__
 #define __IVMRImagePresenter9_FWD_DEFINED__
 typedef interface IVMRImagePresenter9 IVMRImagePresenter9;
+#ifdef __cplusplus
+interface IVMRImagePresenter9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRImagePresenterConfig9_FWD_DEFINED__
 #define __IVMRImagePresenterConfig9_FWD_DEFINED__
 typedef interface IVMRImagePresenterConfig9 IVMRImagePresenterConfig9;
+#ifdef __cplusplus
+interface IVMRImagePresenterConfig9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRMonitorConfig9_FWD_DEFINED__
 #define __IVMRMonitorConfig9_FWD_DEFINED__
 typedef interface IVMRMonitorConfig9 IVMRMonitorConfig9;
+#ifdef __cplusplus
+interface IVMRMonitorConfig9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRWindowlessControl9_FWD_DEFINED__
 #define __IVMRWindowlessControl9_FWD_DEFINED__
 typedef interface IVMRWindowlessControl9 IVMRWindowlessControl9;
+#ifdef __cplusplus
+interface IVMRWindowlessControl9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRMixerControl9_FWD_DEFINED__
 #define __IVMRMixerControl9_FWD_DEFINED__
 typedef interface IVMRMixerControl9 IVMRMixerControl9;
+#ifdef __cplusplus
+interface IVMRMixerControl9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRImageCompositor9_FWD_DEFINED__
 #define __IVMRImageCompositor9_FWD_DEFINED__
 typedef interface IVMRImageCompositor9 IVMRImageCompositor9;
+#ifdef __cplusplus
+interface IVMRImageCompositor9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRMixerBitmap9_FWD_DEFINED__
 #define __IVMRMixerBitmap9_FWD_DEFINED__
 typedef interface IVMRMixerBitmap9 IVMRMixerBitmap9;
+#ifdef __cplusplus
+interface IVMRMixerBitmap9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRFilterConfig9_FWD_DEFINED__
 #define __IVMRFilterConfig9_FWD_DEFINED__
 typedef interface IVMRFilterConfig9 IVMRFilterConfig9;
+#ifdef __cplusplus
+interface IVMRFilterConfig9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRAspectRatioControl9_FWD_DEFINED__
 #define __IVMRAspectRatioControl9_FWD_DEFINED__
 typedef interface IVMRAspectRatioControl9 IVMRAspectRatioControl9;
+#ifdef __cplusplus
+interface IVMRAspectRatioControl9;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IVMRVideoStreamControl9_FWD_DEFINED__
 #define __IVMRVideoStreamControl9_FWD_DEFINED__
 typedef interface IVMRVideoStreamControl9 IVMRVideoStreamControl9;
+#ifdef __cplusplus
+interface IVMRVideoStreamControl9;
+#endif /* __cplusplus */
 #endif
 
 typedef enum _VMR9PresentationFlags {
@@ -241,32 +334,33 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRImagePresenter9* This,
+        IVMRImagePresenter9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRImagePresenter9* This);
+        IVMRImagePresenter9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRImagePresenter9* This);
+        IVMRImagePresenter9 *This);
 
     /*** IVMRImagePresenter9 methods ***/
     HRESULT (STDMETHODCALLTYPE *StartPresenting)(
-        IVMRImagePresenter9* This,
+        IVMRImagePresenter9 *This,
         DWORD_PTR id);
 
     HRESULT (STDMETHODCALLTYPE *StopPresenting)(
-        IVMRImagePresenter9* This,
+        IVMRImagePresenter9 *This,
         DWORD_PTR id);
 
     HRESULT (STDMETHODCALLTYPE *PresentImage)(
-        IVMRImagePresenter9* This,
+        IVMRImagePresenter9 *This,
         DWORD_PTR id,
         VMR9PresentationInfo *info);
 
     END_INTERFACE
 } IVMRImagePresenter9Vtbl;
+
 interface IVMRImagePresenter9 {
     CONST_VTBL IVMRImagePresenter9Vtbl* lpVtbl;
 };
@@ -307,31 +401,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRImagePresenter9_StartPresenting_Proxy(
-    IVMRImagePresenter9* This,
-    DWORD_PTR id);
-void __RPC_STUB IVMRImagePresenter9_StartPresenting_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRImagePresenter9_StopPresenting_Proxy(
-    IVMRImagePresenter9* This,
-    DWORD_PTR id);
-void __RPC_STUB IVMRImagePresenter9_StopPresenting_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRImagePresenter9_PresentImage_Proxy(
-    IVMRImagePresenter9* This,
-    DWORD_PTR id,
-    VMR9PresentationInfo *info);
-void __RPC_STUB IVMRImagePresenter9_PresentImage_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRImagePresenter9_INTERFACE_DEFINED__ */
 
@@ -392,40 +461,41 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRSurfaceAllocator9* This,
+        IVMRSurfaceAllocator9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRSurfaceAllocator9* This);
+        IVMRSurfaceAllocator9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRSurfaceAllocator9* This);
+        IVMRSurfaceAllocator9 *This);
 
     /*** IVMRSurfaceAllocator9 methods ***/
     HRESULT (STDMETHODCALLTYPE *InitializeDevice)(
-        IVMRSurfaceAllocator9* This,
+        IVMRSurfaceAllocator9 *This,
         DWORD_PTR id,
         VMR9AllocationInfo *allocinfo,
         DWORD *numbuffers);
 
     HRESULT (STDMETHODCALLTYPE *TerminateDevice)(
-        IVMRSurfaceAllocator9* This,
+        IVMRSurfaceAllocator9 *This,
         DWORD_PTR id);
 
     HRESULT (STDMETHODCALLTYPE *GetSurface)(
-        IVMRSurfaceAllocator9* This,
+        IVMRSurfaceAllocator9 *This,
         DWORD_PTR id,
         DWORD surfaceindex,
         DWORD flags,
         IDirect3DSurface9 **surface);
 
     HRESULT (STDMETHODCALLTYPE *AdviseNotify)(
-        IVMRSurfaceAllocator9* This,
+        IVMRSurfaceAllocator9 *This,
         IVMRSurfaceAllocatorNotify9 *allocnotify);
 
     END_INTERFACE
 } IVMRSurfaceAllocator9Vtbl;
+
 interface IVMRSurfaceAllocator9 {
     CONST_VTBL IVMRSurfaceAllocator9Vtbl* lpVtbl;
 };
@@ -470,43 +540,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_InitializeDevice_Proxy(
-    IVMRSurfaceAllocator9* This,
-    DWORD_PTR id,
-    VMR9AllocationInfo *allocinfo,
-    DWORD *numbuffers);
-void __RPC_STUB IVMRSurfaceAllocator9_InitializeDevice_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_TerminateDevice_Proxy(
-    IVMRSurfaceAllocator9* This,
-    DWORD_PTR id);
-void __RPC_STUB IVMRSurfaceAllocator9_TerminateDevice_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_GetSurface_Proxy(
-    IVMRSurfaceAllocator9* This,
-    DWORD_PTR id,
-    DWORD surfaceindex,
-    DWORD flags,
-    IDirect3DSurface9 **surface);
-void __RPC_STUB IVMRSurfaceAllocator9_GetSurface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_AdviseNotify_Proxy(
-    IVMRSurfaceAllocator9* This,
-    IVMRSurfaceAllocatorNotify9 *allocnotify);
-void __RPC_STUB IVMRSurfaceAllocator9_AdviseNotify_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRSurfaceAllocator9_INTERFACE_DEFINED__ */
 
@@ -538,41 +571,41 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRSurfaceAllocatorEx9* This,
+        IVMRSurfaceAllocatorEx9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRSurfaceAllocatorEx9* This);
+        IVMRSurfaceAllocatorEx9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRSurfaceAllocatorEx9* This);
+        IVMRSurfaceAllocatorEx9 *This);
 
     /*** IVMRSurfaceAllocator9 methods ***/
     HRESULT (STDMETHODCALLTYPE *InitializeDevice)(
-        IVMRSurfaceAllocatorEx9* This,
+        IVMRSurfaceAllocatorEx9 *This,
         DWORD_PTR id,
         VMR9AllocationInfo *allocinfo,
         DWORD *numbuffers);
 
     HRESULT (STDMETHODCALLTYPE *TerminateDevice)(
-        IVMRSurfaceAllocatorEx9* This,
+        IVMRSurfaceAllocatorEx9 *This,
         DWORD_PTR id);
 
     HRESULT (STDMETHODCALLTYPE *GetSurface)(
-        IVMRSurfaceAllocatorEx9* This,
+        IVMRSurfaceAllocatorEx9 *This,
         DWORD_PTR id,
         DWORD surfaceindex,
         DWORD flags,
         IDirect3DSurface9 **surface);
 
     HRESULT (STDMETHODCALLTYPE *AdviseNotify)(
-        IVMRSurfaceAllocatorEx9* This,
+        IVMRSurfaceAllocatorEx9 *This,
         IVMRSurfaceAllocatorNotify9 *allocnotify);
 
     /*** IVMRSurfaceAllocatorEx9 methods ***/
     HRESULT (STDMETHODCALLTYPE *GetSurfaceEx)(
-        IVMRSurfaceAllocatorEx9* This,
+        IVMRSurfaceAllocatorEx9 *This,
         DWORD_PTR id,
         DWORD surfaceindex,
         DWORD flags,
@@ -581,6 +614,7 @@
 
     END_INTERFACE
 } IVMRSurfaceAllocatorEx9Vtbl;
+
 interface IVMRSurfaceAllocatorEx9 {
     CONST_VTBL IVMRSurfaceAllocatorEx9Vtbl* lpVtbl;
 };
@@ -631,18 +665,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorEx9_GetSurfaceEx_Proxy(
-    IVMRSurfaceAllocatorEx9* This,
-    DWORD_PTR id,
-    DWORD surfaceindex,
-    DWORD flags,
-    IDirect3DSurface9 **surface,
-    RECT *dest);
-void __RPC_STUB IVMRSurfaceAllocatorEx9_GetSurfaceEx_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRSurfaceAllocatorEx9_INTERFACE_DEFINED__ */
 
@@ -689,46 +711,47 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRSurfaceAllocatorNotify9* This,
+        IVMRSurfaceAllocatorNotify9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRSurfaceAllocatorNotify9* This);
+        IVMRSurfaceAllocatorNotify9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRSurfaceAllocatorNotify9* This);
+        IVMRSurfaceAllocatorNotify9 *This);
 
     /*** IVMRSurfaceAllocatorNotify9 methods ***/
     HRESULT (STDMETHODCALLTYPE *AdviseSurfaceAllocator)(
-        IVMRSurfaceAllocatorNotify9* This,
+        IVMRSurfaceAllocatorNotify9 *This,
         DWORD_PTR id,
         IVMRSurfaceAllocator9 *alloc);
 
     HRESULT (STDMETHODCALLTYPE *SetD3DDevice)(
-        IVMRSurfaceAllocatorNotify9* This,
+        IVMRSurfaceAllocatorNotify9 *This,
         IDirect3DDevice9 *device,
         HMONITOR monitor);
 
     HRESULT (STDMETHODCALLTYPE *ChangeD3DDevice)(
-        IVMRSurfaceAllocatorNotify9* This,
+        IVMRSurfaceAllocatorNotify9 *This,
         IDirect3DDevice9 *device,
         HMONITOR monitor);
 
     HRESULT (STDMETHODCALLTYPE *AllocateSurfaceHelper)(
-        IVMRSurfaceAllocatorNotify9* This,
+        IVMRSurfaceAllocatorNotify9 *This,
         VMR9AllocationInfo *allocinfo,
         DWORD *numbuffers,
         IDirect3DSurface9 **surface);
 
     HRESULT (STDMETHODCALLTYPE *NotifyEvent)(
-        IVMRSurfaceAllocatorNotify9* This,
+        IVMRSurfaceAllocatorNotify9 *This,
         LONG code,
         LONG_PTR param1,
         LONG_PTR param2);
 
     END_INTERFACE
 } IVMRSurfaceAllocatorNotify9Vtbl;
+
 interface IVMRSurfaceAllocatorNotify9 {
     CONST_VTBL IVMRSurfaceAllocatorNotify9Vtbl* lpVtbl;
 };
@@ -777,53 +800,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator_Proxy(
-    IVMRSurfaceAllocatorNotify9* This,
-    DWORD_PTR id,
-    IVMRSurfaceAllocator9 *alloc);
-void __RPC_STUB IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_SetD3DDevice_Proxy(
-    IVMRSurfaceAllocatorNotify9* This,
-    IDirect3DDevice9 *device,
-    HMONITOR monitor);
-void __RPC_STUB IVMRSurfaceAllocatorNotify9_SetD3DDevice_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_ChangeD3DDevice_Proxy(
-    IVMRSurfaceAllocatorNotify9* This,
-    IDirect3DDevice9 *device,
-    HMONITOR monitor);
-void __RPC_STUB IVMRSurfaceAllocatorNotify9_ChangeD3DDevice_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper_Proxy(
-    IVMRSurfaceAllocatorNotify9* This,
-    VMR9AllocationInfo *allocinfo,
-    DWORD *numbuffers,
-    IDirect3DSurface9 **surface);
-void __RPC_STUB IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_NotifyEvent_Proxy(
-    IVMRSurfaceAllocatorNotify9* This,
-    LONG code,
-    LONG_PTR param1,
-    LONG_PTR param2);
-void __RPC_STUB IVMRSurfaceAllocatorNotify9_NotifyEvent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRSurfaceAllocatorNotify9_INTERFACE_DEFINED__ */
 
@@ -899,78 +875,79 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRWindowlessControl9* This);
+        IVMRWindowlessControl9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRWindowlessControl9* This);
+        IVMRWindowlessControl9 *This);
 
     /*** IVMRWindowlessControl9 methods ***/
     HRESULT (STDMETHODCALLTYPE *GetNativeVideoSize)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         LONG *width,
         LONG *height,
         LONG *arwidth,
         LONG *arheight);
 
     HRESULT (STDMETHODCALLTYPE *GetMinIdealVideoSize)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         LONG *width,
         LONG *height);
 
     HRESULT (STDMETHODCALLTYPE *GetMaxIdealVideoSize)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         LONG *width,
         LONG *height);
 
     HRESULT (STDMETHODCALLTYPE *SetVideoPosition)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         const RECT *source,
         const RECT *dest);
 
     HRESULT (STDMETHODCALLTYPE *GetVideoPosition)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         RECT *source,
         RECT *dest);
 
     HRESULT (STDMETHODCALLTYPE *GetAspectRatioMode)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         DWORD *mode);
 
     HRESULT (STDMETHODCALLTYPE *SetAspectRatioMode)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         DWORD mode);
 
     HRESULT (STDMETHODCALLTYPE *SetVideoClippingWindow)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         HWND hwnd);
 
     HRESULT (STDMETHODCALLTYPE *RepaintVideo)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         HWND hwnd,
         HDC hdc);
 
     HRESULT (STDMETHODCALLTYPE *DisplayModeChanged)(
-        IVMRWindowlessControl9* This);
+        IVMRWindowlessControl9 *This);
 
     HRESULT (STDMETHODCALLTYPE *GetCurrentImage)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         BYTE **dib);
 
     HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         COLORREF color);
 
     HRESULT (STDMETHODCALLTYPE *GetBorderColor)(
-        IVMRWindowlessControl9* This,
+        IVMRWindowlessControl9 *This,
         COLORREF *color);
 
     END_INTERFACE
 } IVMRWindowlessControl9Vtbl;
+
 interface IVMRWindowlessControl9 {
     CONST_VTBL IVMRWindowlessControl9Vtbl* lpVtbl;
 };
@@ -1051,117 +1028,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetNativeVideoSize_Proxy(
-    IVMRWindowlessControl9* This,
-    LONG *width,
-    LONG *height,
-    LONG *arwidth,
-    LONG *arheight);
-void __RPC_STUB IVMRWindowlessControl9_GetNativeVideoSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetMinIdealVideoSize_Proxy(
-    IVMRWindowlessControl9* This,
-    LONG *width,
-    LONG *height);
-void __RPC_STUB IVMRWindowlessControl9_GetMinIdealVideoSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetMaxIdealVideoSize_Proxy(
-    IVMRWindowlessControl9* This,
-    LONG *width,
-    LONG *height);
-void __RPC_STUB IVMRWindowlessControl9_GetMaxIdealVideoSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetVideoPosition_Proxy(
-    IVMRWindowlessControl9* This,
-    const RECT *source,
-    const RECT *dest);
-void __RPC_STUB IVMRWindowlessControl9_SetVideoPosition_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetVideoPosition_Proxy(
-    IVMRWindowlessControl9* This,
-    RECT *source,
-    RECT *dest);
-void __RPC_STUB IVMRWindowlessControl9_GetVideoPosition_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetAspectRatioMode_Proxy(
-    IVMRWindowlessControl9* This,
-    DWORD *mode);
-void __RPC_STUB IVMRWindowlessControl9_GetAspectRatioMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetAspectRatioMode_Proxy(
-    IVMRWindowlessControl9* This,
-    DWORD mode);
-void __RPC_STUB IVMRWindowlessControl9_SetAspectRatioMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetVideoClippingWindow_Proxy(
-    IVMRWindowlessControl9* This,
-    HWND hwnd);
-void __RPC_STUB IVMRWindowlessControl9_SetVideoClippingWindow_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_RepaintVideo_Proxy(
-    IVMRWindowlessControl9* This,
-    HWND hwnd,
-    HDC hdc);
-void __RPC_STUB IVMRWindowlessControl9_RepaintVideo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_DisplayModeChanged_Proxy(
-    IVMRWindowlessControl9* This);
-void __RPC_STUB IVMRWindowlessControl9_DisplayModeChanged_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetCurrentImage_Proxy(
-    IVMRWindowlessControl9* This,
-    BYTE **dib);
-void __RPC_STUB IVMRWindowlessControl9_GetCurrentImage_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetBorderColor_Proxy(
-    IVMRWindowlessControl9* This,
-    COLORREF color);
-void __RPC_STUB IVMRWindowlessControl9_SetBorderColor_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetBorderColor_Proxy(
-    IVMRWindowlessControl9* This,
-    COLORREF *color);
-void __RPC_STUB IVMRWindowlessControl9_GetBorderColor_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRWindowlessControl9_INTERFACE_DEFINED__ */
 
@@ -1284,80 +1150,81 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRMixerControl9* This);
+        IVMRMixerControl9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRMixerControl9* This);
+        IVMRMixerControl9 *This);
 
     /*** IVMRMixerControl9 methods ***/
     HRESULT (STDMETHODCALLTYPE *SetAlpha)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD streamid,
         FLOAT alpha);
 
     HRESULT (STDMETHODCALLTYPE *GetAlpha)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD streamid,
         FLOAT *alpha);
 
     HRESULT (STDMETHODCALLTYPE *SetZOrder)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD streamid,
         DWORD zorder);
 
     HRESULT (STDMETHODCALLTYPE *GetZOrder)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD streamid,
         DWORD *zorder);
 
     HRESULT (STDMETHODCALLTYPE *SetOutputRect)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD streamid,
         const VMR9NormalizedRect *rect);
 
     HRESULT (STDMETHODCALLTYPE *GetOutputRect)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD streamid,
         VMR9NormalizedRect *rect);
 
     HRESULT (STDMETHODCALLTYPE *SetBackgroundClr)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         COLORREF back);
 
     HRESULT (STDMETHODCALLTYPE *GetBackgroundClr)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         COLORREF *back);
 
     HRESULT (STDMETHODCALLTYPE *SetMixingPrefs)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD mixingprefs);
 
     HRESULT (STDMETHODCALLTYPE *GetMixingPrefs)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD *mixingprefs);
 
     HRESULT (STDMETHODCALLTYPE *SetProcAmpControl)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD streamid,
         VMR9ProcAmpControl *control);
 
     HRESULT (STDMETHODCALLTYPE *GetProcAmpControl)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD streamid,
         VMR9ProcAmpControl *control);
 
     HRESULT (STDMETHODCALLTYPE *GetProcAmpControlRange)(
-        IVMRMixerControl9* This,
+        IVMRMixerControl9 *This,
         DWORD streamid,
         VMR9ProcAmpControlRange *controlrange);
 
     END_INTERFACE
 } IVMRMixerControl9Vtbl;
+
 interface IVMRMixerControl9 {
     CONST_VTBL IVMRMixerControl9Vtbl* lpVtbl;
 };
@@ -1438,119 +1305,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetAlpha_Proxy(
-    IVMRMixerControl9* This,
-    DWORD streamid,
-    FLOAT alpha);
-void __RPC_STUB IVMRMixerControl9_SetAlpha_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetAlpha_Proxy(
-    IVMRMixerControl9* This,
-    DWORD streamid,
-    FLOAT *alpha);
-void __RPC_STUB IVMRMixerControl9_GetAlpha_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetZOrder_Proxy(
-    IVMRMixerControl9* This,
-    DWORD streamid,
-    DWORD zorder);
-void __RPC_STUB IVMRMixerControl9_SetZOrder_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetZOrder_Proxy(
-    IVMRMixerControl9* This,
-    DWORD streamid,
-    DWORD *zorder);
-void __RPC_STUB IVMRMixerControl9_GetZOrder_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetOutputRect_Proxy(
-    IVMRMixerControl9* This,
-    DWORD streamid,
-    const VMR9NormalizedRect *rect);
-void __RPC_STUB IVMRMixerControl9_SetOutputRect_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetOutputRect_Proxy(
-    IVMRMixerControl9* This,
-    DWORD streamid,
-    VMR9NormalizedRect *rect);
-void __RPC_STUB IVMRMixerControl9_GetOutputRect_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetBackgroundClr_Proxy(
-    IVMRMixerControl9* This,
-    COLORREF back);
-void __RPC_STUB IVMRMixerControl9_SetBackgroundClr_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetBackgroundClr_Proxy(
-    IVMRMixerControl9* This,
-    COLORREF *back);
-void __RPC_STUB IVMRMixerControl9_GetBackgroundClr_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetMixingPrefs_Proxy(
-    IVMRMixerControl9* This,
-    DWORD mixingprefs);
-void __RPC_STUB IVMRMixerControl9_SetMixingPrefs_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetMixingPrefs_Proxy(
-    IVMRMixerControl9* This,
-    DWORD *mixingprefs);
-void __RPC_STUB IVMRMixerControl9_GetMixingPrefs_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetProcAmpControl_Proxy(
-    IVMRMixerControl9* This,
-    DWORD streamid,
-    VMR9ProcAmpControl *control);
-void __RPC_STUB IVMRMixerControl9_SetProcAmpControl_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetProcAmpControl_Proxy(
-    IVMRMixerControl9* This,
-    DWORD streamid,
-    VMR9ProcAmpControl *control);
-void __RPC_STUB IVMRMixerControl9_GetProcAmpControl_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetProcAmpControlRange_Proxy(
-    IVMRMixerControl9* This,
-    DWORD streamid,
-    VMR9ProcAmpControlRange *controlrange);
-void __RPC_STUB IVMRMixerControl9_GetProcAmpControlRange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRMixerControl9_INTERFACE_DEFINED__ */
 
@@ -1602,31 +1356,32 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRMixerBitmap9* This,
+        IVMRMixerBitmap9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRMixerBitmap9* This);
+        IVMRMixerBitmap9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRMixerBitmap9* This);
+        IVMRMixerBitmap9 *This);
 
     /*** IVMRMixerBitmap9 methods ***/
     HRESULT (STDMETHODCALLTYPE *SetAlphaBitmap)(
-        IVMRMixerBitmap9* This,
+        IVMRMixerBitmap9 *This,
         const VMR9AlphaBitmap *bitmap);
 
     HRESULT (STDMETHODCALLTYPE *UpdateAlphaBitmapParameters)(
-        IVMRMixerBitmap9* This,
+        IVMRMixerBitmap9 *This,
         const VMR9AlphaBitmap *bitmap);
 
     HRESULT (STDMETHODCALLTYPE *GetAlphaBitmapParameters)(
-        IVMRMixerBitmap9* This,
+        IVMRMixerBitmap9 *This,
         VMR9AlphaBitmap *bitmap);
 
     END_INTERFACE
 } IVMRMixerBitmap9Vtbl;
+
 interface IVMRMixerBitmap9 {
     CONST_VTBL IVMRMixerBitmap9Vtbl* lpVtbl;
 };
@@ -1667,30 +1422,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRMixerBitmap9_SetAlphaBitmap_Proxy(
-    IVMRMixerBitmap9* This,
-    const VMR9AlphaBitmap *bitmap);
-void __RPC_STUB IVMRMixerBitmap9_SetAlphaBitmap_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerBitmap9_UpdateAlphaBitmapParameters_Proxy(
-    IVMRMixerBitmap9* This,
-    const VMR9AlphaBitmap *bitmap);
-void __RPC_STUB IVMRMixerBitmap9_UpdateAlphaBitmapParameters_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMixerBitmap9_GetAlphaBitmapParameters_Proxy(
-    IVMRMixerBitmap9* This,
-    VMR9AlphaBitmap *bitmap);
-void __RPC_STUB IVMRMixerBitmap9_GetAlphaBitmapParameters_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRMixerBitmap9_INTERFACE_DEFINED__ */
 
@@ -1727,33 +1458,34 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRSurface9* This,
+        IVMRSurface9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRSurface9* This);
+        IVMRSurface9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRSurface9* This);
+        IVMRSurface9 *This);
 
     /*** IVMRSurface9 methods ***/
     HRESULT (STDMETHODCALLTYPE *IsSurfaceLocked)(
-        IVMRSurface9* This);
+        IVMRSurface9 *This);
 
     HRESULT (STDMETHODCALLTYPE *LockSurface)(
-        IVMRSurface9* This,
+        IVMRSurface9 *This,
         BYTE **surface);
 
     HRESULT (STDMETHODCALLTYPE *UnlockSurface)(
-        IVMRSurface9* This);
+        IVMRSurface9 *This);
 
     HRESULT (STDMETHODCALLTYPE *GetSurface)(
-        IVMRSurface9* This,
+        IVMRSurface9 *This,
         IDirect3DSurface9 **surface);
 
     END_INTERFACE
 } IVMRSurface9Vtbl;
+
 interface IVMRSurface9 {
     CONST_VTBL IVMRSurface9Vtbl* lpVtbl;
 };
@@ -1798,36 +1530,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRSurface9_IsSurfaceLocked_Proxy(
-    IVMRSurface9* This);
-void __RPC_STUB IVMRSurface9_IsSurfaceLocked_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRSurface9_LockSurface_Proxy(
-    IVMRSurface9* This,
-    BYTE **surface);
-void __RPC_STUB IVMRSurface9_LockSurface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRSurface9_UnlockSurface_Proxy(
-    IVMRSurface9* This);
-void __RPC_STUB IVMRSurface9_UnlockSurface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRSurface9_GetSurface_Proxy(
-    IVMRSurface9* This,
-    IDirect3DSurface9 **surface);
-void __RPC_STUB IVMRSurface9_GetSurface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRSurface9_INTERFACE_DEFINED__ */
 
@@ -1862,27 +1564,28 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRImagePresenterConfig9* This,
+        IVMRImagePresenterConfig9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRImagePresenterConfig9* This);
+        IVMRImagePresenterConfig9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRImagePresenterConfig9* This);
+        IVMRImagePresenterConfig9 *This);
 
     /*** IVMRImagePresenterConfig9 methods ***/
     HRESULT (STDMETHODCALLTYPE *SetRenderingPrefs)(
-        IVMRImagePresenterConfig9* This,
+        IVMRImagePresenterConfig9 *This,
         DWORD renderflags);
 
     HRESULT (STDMETHODCALLTYPE *GetRenderingPrefs)(
-        IVMRImagePresenterConfig9* This,
+        IVMRImagePresenterConfig9 *This,
         DWORD *renderflags);
 
     END_INTERFACE
 } IVMRImagePresenterConfig9Vtbl;
+
 interface IVMRImagePresenterConfig9 {
     CONST_VTBL IVMRImagePresenterConfig9Vtbl* lpVtbl;
 };
@@ -1919,22 +1622,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig9_SetRenderingPrefs_Proxy(
-    IVMRImagePresenterConfig9* This,
-    DWORD renderflags);
-void __RPC_STUB IVMRImagePresenterConfig9_SetRenderingPrefs_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig9_GetRenderingPrefs_Proxy(
-    IVMRImagePresenterConfig9* This,
-    DWORD *renderflags);
-void __RPC_STUB IVMRImagePresenterConfig9_GetRenderingPrefs_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRImagePresenterConfig9_INTERFACE_DEFINED__ */
 
@@ -1965,27 +1652,28 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRVideoStreamControl9* This,
+        IVMRVideoStreamControl9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRVideoStreamControl9* This);
+        IVMRVideoStreamControl9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRVideoStreamControl9* This);
+        IVMRVideoStreamControl9 *This);
 
     /*** IVMRVideoStreamControl9 methods ***/
     HRESULT (STDMETHODCALLTYPE *SetStreamActiveState)(
-        IVMRVideoStreamControl9* This,
+        IVMRVideoStreamControl9 *This,
         WINBOOL active);
 
     HRESULT (STDMETHODCALLTYPE *GetStreamActiveState)(
-        IVMRVideoStreamControl9* This,
+        IVMRVideoStreamControl9 *This,
         WINBOOL *active);
 
     END_INTERFACE
 } IVMRVideoStreamControl9Vtbl;
+
 interface IVMRVideoStreamControl9 {
     CONST_VTBL IVMRVideoStreamControl9Vtbl* lpVtbl;
 };
@@ -2022,22 +1710,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl9_SetStreamActiveState_Proxy(
-    IVMRVideoStreamControl9* This,
-    WINBOOL active);
-void __RPC_STUB IVMRVideoStreamControl9_SetStreamActiveState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl9_GetStreamActiveState_Proxy(
-    IVMRVideoStreamControl9* This,
-    WINBOOL *active);
-void __RPC_STUB IVMRVideoStreamControl9_GetStreamActiveState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRVideoStreamControl9_INTERFACE_DEFINED__ */
 
@@ -2089,47 +1761,48 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRFilterConfig9* This,
+        IVMRFilterConfig9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRFilterConfig9* This);
+        IVMRFilterConfig9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRFilterConfig9* This);
+        IVMRFilterConfig9 *This);
 
     /*** IVMRFilterConfig9 methods ***/
     HRESULT (STDMETHODCALLTYPE *SetImageCompositor)(
-        IVMRFilterConfig9* This,
+        IVMRFilterConfig9 *This,
         IVMRImageCompositor9 *compositor);
 
     HRESULT (STDMETHODCALLTYPE *SetNumberOfStreams)(
-        IVMRFilterConfig9* This,
+        IVMRFilterConfig9 *This,
         DWORD max);
 
     HRESULT (STDMETHODCALLTYPE *GetNumberOfStreams)(
-        IVMRFilterConfig9* This,
+        IVMRFilterConfig9 *This,
         DWORD *max);
 
     HRESULT (STDMETHODCALLTYPE *SetRenderingPrefs)(
-        IVMRFilterConfig9* This,
+        IVMRFilterConfig9 *This,
         DWORD renderflags);
 
     HRESULT (STDMETHODCALLTYPE *GetRenderingPrefs)(
-        IVMRFilterConfig9* This,
+        IVMRFilterConfig9 *This,
         DWORD *renderflags);
 
     HRESULT (STDMETHODCALLTYPE *SetRenderingMode)(
-        IVMRFilterConfig9* This,
+        IVMRFilterConfig9 *This,
         DWORD mode);
 
     HRESULT (STDMETHODCALLTYPE *GetRenderingMode)(
-        IVMRFilterConfig9* This,
+        IVMRFilterConfig9 *This,
         DWORD *mode);
 
     END_INTERFACE
 } IVMRFilterConfig9Vtbl;
+
 interface IVMRFilterConfig9 {
     CONST_VTBL IVMRFilterConfig9Vtbl* lpVtbl;
 };
@@ -2186,62 +1859,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetImageCompositor_Proxy(
-    IVMRFilterConfig9* This,
-    IVMRImageCompositor9 *compositor);
-void __RPC_STUB IVMRFilterConfig9_SetImageCompositor_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetNumberOfStreams_Proxy(
-    IVMRFilterConfig9* This,
-    DWORD max);
-void __RPC_STUB IVMRFilterConfig9_SetNumberOfStreams_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_GetNumberOfStreams_Proxy(
-    IVMRFilterConfig9* This,
-    DWORD *max);
-void __RPC_STUB IVMRFilterConfig9_GetNumberOfStreams_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetRenderingPrefs_Proxy(
-    IVMRFilterConfig9* This,
-    DWORD renderflags);
-void __RPC_STUB IVMRFilterConfig9_SetRenderingPrefs_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_GetRenderingPrefs_Proxy(
-    IVMRFilterConfig9* This,
-    DWORD *renderflags);
-void __RPC_STUB IVMRFilterConfig9_GetRenderingPrefs_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetRenderingMode_Proxy(
-    IVMRFilterConfig9* This,
-    DWORD mode);
-void __RPC_STUB IVMRFilterConfig9_SetRenderingMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_GetRenderingMode_Proxy(
-    IVMRFilterConfig9* This,
-    DWORD *mode);
-void __RPC_STUB IVMRFilterConfig9_GetRenderingMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRFilterConfig9_INTERFACE_DEFINED__ */
 
@@ -2272,27 +1889,28 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRAspectRatioControl9* This,
+        IVMRAspectRatioControl9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRAspectRatioControl9* This);
+        IVMRAspectRatioControl9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRAspectRatioControl9* This);
+        IVMRAspectRatioControl9 *This);
 
     /*** IVMRAspectRatioControl9 methods ***/
     HRESULT (STDMETHODCALLTYPE *GetAspectRatioMode)(
-        IVMRAspectRatioControl9* This,
+        IVMRAspectRatioControl9 *This,
         DWORD *mode);
 
     HRESULT (STDMETHODCALLTYPE *SetAspectRatioMode)(
-        IVMRAspectRatioControl9* This,
+        IVMRAspectRatioControl9 *This,
         DWORD mode);
 
     END_INTERFACE
 } IVMRAspectRatioControl9Vtbl;
+
 interface IVMRAspectRatioControl9 {
     CONST_VTBL IVMRAspectRatioControl9Vtbl* lpVtbl;
 };
@@ -2329,22 +1947,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRAspectRatioControl9_GetAspectRatioMode_Proxy(
-    IVMRAspectRatioControl9* This,
-    DWORD *mode);
-void __RPC_STUB IVMRAspectRatioControl9_GetAspectRatioMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRAspectRatioControl9_SetAspectRatioMode_Proxy(
-    IVMRAspectRatioControl9* This,
-    DWORD mode);
-void __RPC_STUB IVMRAspectRatioControl9_SetAspectRatioMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRAspectRatioControl9_INTERFACE_DEFINED__ */
 
@@ -2399,41 +2001,42 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRMonitorConfig9* This,
+        IVMRMonitorConfig9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRMonitorConfig9* This);
+        IVMRMonitorConfig9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRMonitorConfig9* This);
+        IVMRMonitorConfig9 *This);
 
     /*** IVMRMonitorConfig9 methods ***/
     HRESULT (STDMETHODCALLTYPE *SetMonitor)(
-        IVMRMonitorConfig9* This,
+        IVMRMonitorConfig9 *This,
         UINT uDev);
 
     HRESULT (STDMETHODCALLTYPE *GetMonitor)(
-        IVMRMonitorConfig9* This,
+        IVMRMonitorConfig9 *This,
         UINT *uDev);
 
     HRESULT (STDMETHODCALLTYPE *SetDefaultMonitor)(
-        IVMRMonitorConfig9* This,
+        IVMRMonitorConfig9 *This,
         UINT uDev);
 
     HRESULT (STDMETHODCALLTYPE *GetDefaultMonitor)(
-        IVMRMonitorConfig9* This,
+        IVMRMonitorConfig9 *This,
         UINT *uDev);
 
     HRESULT (STDMETHODCALLTYPE *GetAvailableMonitors)(
-        IVMRMonitorConfig9* This,
+        IVMRMonitorConfig9 *This,
         VMR9MonitorInfo *info,
         DWORD arraysize,
         DWORD *numdev);
 
     END_INTERFACE
 } IVMRMonitorConfig9Vtbl;
+
 interface IVMRMonitorConfig9 {
     CONST_VTBL IVMRMonitorConfig9Vtbl* lpVtbl;
 };
@@ -2482,48 +2085,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_SetMonitor_Proxy(
-    IVMRMonitorConfig9* This,
-    UINT uDev);
-void __RPC_STUB IVMRMonitorConfig9_SetMonitor_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_GetMonitor_Proxy(
-    IVMRMonitorConfig9* This,
-    UINT *uDev);
-void __RPC_STUB IVMRMonitorConfig9_GetMonitor_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_SetDefaultMonitor_Proxy(
-    IVMRMonitorConfig9* This,
-    UINT uDev);
-void __RPC_STUB IVMRMonitorConfig9_SetDefaultMonitor_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_GetDefaultMonitor_Proxy(
-    IVMRMonitorConfig9* This,
-    UINT *uDev);
-void __RPC_STUB IVMRMonitorConfig9_GetDefaultMonitor_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_GetAvailableMonitors_Proxy(
-    IVMRMonitorConfig9* This,
-    VMR9MonitorInfo *info,
-    DWORD arraysize,
-    DWORD *numdev);
-void __RPC_STUB IVMRMonitorConfig9_GetAvailableMonitors_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRMonitorConfig9_INTERFACE_DEFINED__ */
 
@@ -2620,54 +2181,55 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRDeinterlaceControl9* This,
+        IVMRDeinterlaceControl9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRDeinterlaceControl9* This);
+        IVMRDeinterlaceControl9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRDeinterlaceControl9* This);
+        IVMRDeinterlaceControl9 *This);
 
     /*** IVMRDeinterlaceControl9 methods ***/
     HRESULT (STDMETHODCALLTYPE *GetNumberOfDeinterlaceModes)(
-        IVMRDeinterlaceControl9* This,
+        IVMRDeinterlaceControl9 *This,
         VMR9VideoDesc *desc,
         DWORD *nummodes,
         GUID *modes);
 
     HRESULT (STDMETHODCALLTYPE *GetDeinterlaceModeCaps)(
-        IVMRDeinterlaceControl9* This,
+        IVMRDeinterlaceControl9 *This,
         GUID *mode,
         VMR9VideoDesc *desc,
         VMR9DeinterlaceCaps *caps);
 
     HRESULT (STDMETHODCALLTYPE *GetDeinterlaceMode)(
-        IVMRDeinterlaceControl9* This,
+        IVMRDeinterlaceControl9 *This,
         DWORD streamid,
         GUID *mode);
 
     HRESULT (STDMETHODCALLTYPE *SetDeinterlaceMode)(
-        IVMRDeinterlaceControl9* This,
+        IVMRDeinterlaceControl9 *This,
         DWORD streamid,
         GUID *mode);
 
     HRESULT (STDMETHODCALLTYPE *GetDeinterlacePrefs)(
-        IVMRDeinterlaceControl9* This,
+        IVMRDeinterlaceControl9 *This,
         DWORD *prefs);
 
     HRESULT (STDMETHODCALLTYPE *SetDeinterlacePrefs)(
-        IVMRDeinterlaceControl9* This,
+        IVMRDeinterlaceControl9 *This,
         DWORD prefs);
 
     HRESULT (STDMETHODCALLTYPE *GetActualDeinterlaceMode)(
-        IVMRDeinterlaceControl9* This,
+        IVMRDeinterlaceControl9 *This,
         DWORD streamid,
         GUID *mode);
 
     END_INTERFACE
 } IVMRDeinterlaceControl9Vtbl;
+
 interface IVMRDeinterlaceControl9 {
     CONST_VTBL IVMRDeinterlaceControl9Vtbl* lpVtbl;
 };
@@ -2724,69 +2286,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes_Proxy(
-    IVMRDeinterlaceControl9* This,
-    VMR9VideoDesc *desc,
-    DWORD *nummodes,
-    GUID *modes);
-void __RPC_STUB IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetDeinterlaceModeCaps_Proxy(
-    IVMRDeinterlaceControl9* This,
-    GUID *mode,
-    VMR9VideoDesc *desc,
-    VMR9DeinterlaceCaps *caps);
-void __RPC_STUB IVMRDeinterlaceControl9_GetDeinterlaceModeCaps_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetDeinterlaceMode_Proxy(
-    IVMRDeinterlaceControl9* This,
-    DWORD streamid,
-    GUID *mode);
-void __RPC_STUB IVMRDeinterlaceControl9_GetDeinterlaceMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_SetDeinterlaceMode_Proxy(
-    IVMRDeinterlaceControl9* This,
-    DWORD streamid,
-    GUID *mode);
-void __RPC_STUB IVMRDeinterlaceControl9_SetDeinterlaceMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetDeinterlacePrefs_Proxy(
-    IVMRDeinterlaceControl9* This,
-    DWORD *prefs);
-void __RPC_STUB IVMRDeinterlaceControl9_GetDeinterlacePrefs_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_SetDeinterlacePrefs_Proxy(
-    IVMRDeinterlaceControl9* This,
-    DWORD prefs);
-void __RPC_STUB IVMRDeinterlaceControl9_SetDeinterlacePrefs_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetActualDeinterlaceMode_Proxy(
-    IVMRDeinterlaceControl9* This,
-    DWORD streamid,
-    GUID *mode);
-void __RPC_STUB IVMRDeinterlaceControl9_GetActualDeinterlaceMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRDeinterlaceControl9_INTERFACE_DEFINED__ */
 
@@ -2838,27 +2337,27 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IVMRImageCompositor9* This,
+        IVMRImageCompositor9 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IVMRImageCompositor9* This);
+        IVMRImageCompositor9 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IVMRImageCompositor9* This);
+        IVMRImageCompositor9 *This);
 
     /*** IVMRImageCompositor9 methods ***/
     HRESULT (STDMETHODCALLTYPE *InitCompositionDevice)(
-        IVMRImageCompositor9* This,
+        IVMRImageCompositor9 *This,
         IUnknown *d3ddev);
 
     HRESULT (STDMETHODCALLTYPE *TermCompositionDevice)(
-        IVMRImageCompositor9* This,
+        IVMRImageCompositor9 *This,
         IUnknown *d3ddev);
 
     HRESULT (STDMETHODCALLTYPE *CompositeImage)(
-        IVMRImageCompositor9* This,
+        IVMRImageCompositor9 *This,
         IUnknown *d3ddev,
         IDirect3DSurface9 *d3dtarget,
         AM_MEDIA_TYPE *mttarget,
@@ -2870,6 +2369,7 @@
 
     END_INTERFACE
 } IVMRImageCompositor9Vtbl;
+
 interface IVMRImageCompositor9 {
     CONST_VTBL IVMRImageCompositor9Vtbl* lpVtbl;
 };
@@ -2910,37 +2410,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_InitCompositionDevice_Proxy(
-    IVMRImageCompositor9* This,
-    IUnknown *d3ddev);
-void __RPC_STUB IVMRImageCompositor9_InitCompositionDevice_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_TermCompositionDevice_Proxy(
-    IVMRImageCompositor9* This,
-    IUnknown *d3ddev);
-void __RPC_STUB IVMRImageCompositor9_TermCompositionDevice_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_CompositeImage_Proxy(
-    IVMRImageCompositor9* This,
-    IUnknown *d3ddev,
-    IDirect3DSurface9 *d3dtarget,
-    AM_MEDIA_TYPE *mttarget,
-    REFERENCE_TIME start,
-    REFERENCE_TIME stop,
-    D3DCOLOR back,
-    VMR9VideoStreamInfo *info,
-    UINT streams);
-void __RPC_STUB IVMRImageCompositor9_CompositeImage_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IVMRImageCompositor9_INTERFACE_DEFINED__ */
 
