Added some dshow headers.

diff --git a/include/Makefile.in b/include/Makefile.in
index 68270bf..6da0fa1 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -5,6 +5,8 @@
 MODULE	  = none
 
 INSTALLED_INCLUDES = \
+	amaudio.h \
+	amvideo.h \
 	basetsd.h \
 	cderr.h \
 	cguid.h \
@@ -12,6 +14,7 @@
 	commctrl.h \
 	commdlg.h \
 	compobj.h \
+	control.h \
 	cpl.h \
 	d3d.h \
 	d3dcaps.h \
@@ -98,6 +101,7 @@
 	sqlext.h \
 	sqltypes.h \
 	storage.h \
+	strmif.h \
 	tapi.h \
 	tlhelp32.h \
 	unknwn.h \
diff --git a/include/amaudio.h b/include/amaudio.h
new file mode 100644
index 0000000..f0488d7
--- /dev/null
+++ b/include/amaudio.h
@@ -0,0 +1,49 @@
+#ifndef __WINE_AMAUDIO_H_
+#define __WINE_AMAUDIO_H_
+
+#include "ole2.h"
+#include "mmsystem.h"
+#include "dsound.h"
+
+typedef struct IAMDirectSound IAMDirectSound;
+
+
+/**************************************************************************
+ *
+ * IAMDirectSound interface
+ *
+ */
+
+#define ICOM_INTERFACE IAMDirectSound
+#define IAMDirectSound_METHODS \
+    ICOM_METHOD1(HRESULT,GetDirectSoundInterface,LPDIRECTSOUND*,a1) \
+    ICOM_METHOD1(HRESULT,GetPrimaryBufferInterface,LPDIRECTSOUNDBUFFER*,a1) \
+    ICOM_METHOD1(HRESULT,GetSecondaryBufferInterface,LPDIRECTSOUNDBUFFER*,a1) \
+    ICOM_METHOD1(HRESULT,ReleaseDirectSoundInterface,LPDIRECTSOUND,a1) \
+    ICOM_METHOD1(HRESULT,ReleasePrimaryBufferInterface,LPDIRECTSOUNDBUFFER,a1) \
+    ICOM_METHOD1(HRESULT,ReleaseSecondaryBufferInterface,LPDIRECTSOUNDBUFFER,a1) \
+    ICOM_METHOD2(HRESULT,SetFocusWindow,HWND,a1,BOOL,a2) \
+    ICOM_METHOD2(HRESULT,GetFocusWindow,HWND*,a1,BOOL*,a2)
+
+#define IAMDirectSound_IMETHODS \
+    IUnknown_IMETHODS \
+    IAMDirectSound_METHODS
+
+ICOM_DEFINE(IAMDirectSound,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IAMDirectSound_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IAMDirectSound_AddRef(p) ICOM_CALL (AddRef,p)
+#define IAMDirectSound_Release(p) ICOM_CALL (Release,p)
+    /*** IAMDirectSound methods ***/
+#define IAMDirectSound_GetDirectSoundInterface(p,a1) ICOM_CALL1(GetDirectSoundInterface,p,a1)
+#define IAMDirectSound_GetPrimaryBufferInterface(p,a1) ICOM_CALL1(GetPrimaryBufferInterface,p,a1)
+#define IAMDirectSound_GetSecondaryBufferInterface(p,a1) ICOM_CALL1(GetSecondaryBufferInterface,p,a1)
+#define IAMDirectSound_ReleaseDirectSoundInterface(p,a1) ICOM_CALL1(ReleaseDirectSoundInterface,p,a1)
+#define IAMDirectSound_ReleasePrimaryBufferInterface(p,a1) ICOM_CALL1(ReleasePrimaryBufferInterface,p,a1)
+#define IAMDirectSound_ReleaseSecondaryBufferInterface(p,a1) ICOM_CALL1(ReleaseSecondaryBufferInterface,p,a1)
+#define IAMDirectSound_SetFocusWindow(p,a1,a2) ICOM_CALL2(SetFocusWindow,p,a1,a2)
+#define IAMDirectSound_GetFocusWindow(p,a1,a2) ICOM_CALL2(GetFocusWindow,p,a1,a2)
+
+#endif  /* __WINE_AMAUDIO_H_ */
diff --git a/include/amvideo.h b/include/amvideo.h
new file mode 100644
index 0000000..20fd693
--- /dev/null
+++ b/include/amvideo.h
@@ -0,0 +1,242 @@
+#ifndef __WINE_AMVIDEO_H_
+#define __WINE_AMVIDEO_H_
+
+#include "ole2.h"
+#include "ddraw.h"
+
+typedef struct IBaseVideoMixer IBaseVideoMixer;
+typedef struct IDirectDrawVideo IDirectDrawVideo;
+typedef struct IFullScreenVideo IFullScreenVideo;
+typedef struct IFullScreenVideoEx IFullScreenVideoEx;
+typedef struct IQualProp IQualProp;
+
+/**************************************************************************
+ *
+ * IBaseVideoMixer interface
+ *
+ */
+
+#define ICOM_INTERFACE IBaseVideoMixer
+#define IBaseVideoMixer_METHODS \
+    ICOM_METHOD1(HRESULT,SetLeadPin,int,a1) \
+    ICOM_METHOD1(HRESULT,GetLeadPin,int*,a1) \
+    ICOM_METHOD1(HRESULT,GetInputPinCount,int*,a1) \
+    ICOM_METHOD1(HRESULT,IsUsingClock,int*,a1) \
+    ICOM_METHOD1(HRESULT,SetUsingClock,int,a1) \
+    ICOM_METHOD1(HRESULT,GetClockPeriod,int*,a1) \
+    ICOM_METHOD1(HRESULT,SetClockPeriod,int,a1)
+
+#define IBaseVideoMixer_IMETHODS \
+    IUnknown_IMETHODS \
+    IBaseVideoMixer_METHODS
+
+ICOM_DEFINE(IBaseVideoMixer,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IBaseVideoMixer_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IBaseVideoMixer_AddRef(p) ICOM_CALL (AddRef,p)
+#define IBaseVideoMixer_Release(p) ICOM_CALL (Release,p)
+    /*** IBaseVideoMixer methods ***/
+#define IBaseVideoMixer_SetLeadPin(p,a1) ICOM_CALL1(SetLeadPin,p,a1)
+#define IBaseVideoMixer_GetLeadPin(p,a1) ICOM_CALL1(GetLeadPin,p,a1)
+#define IBaseVideoMixer_GetInputPinCount(p,a1) ICOM_CALL1(GetInputPinCount,p,a1)
+#define IBaseVideoMixer_IsUsingClock(p,a1) ICOM_CALL1(IsUsingClock,p,a1)
+#define IBaseVideoMixer_SetUsingClock(p,a1) ICOM_CALL1(SetUsingClock,p,a1)
+#define IBaseVideoMixer_GetClockPeriod(p,a1) ICOM_CALL1(GetClockPeriod,p,a1)
+#define IBaseVideoMixer_SetClockPeriod(p,a1) ICOM_CALL1(SetClockPeriod,p,a1)
+
+/**************************************************************************
+ *
+ * IDirectDrawVideo interface
+ *
+ */
+
+#define ICOM_INTERFACE IDirectDrawVideo
+#define IDirectDrawVideo_METHODS \
+    ICOM_METHOD1(HRESULT,GetSwitches,DWORD*,a1) \
+    ICOM_METHOD1(HRESULT,SetSwitches,DWORD,a1) \
+    ICOM_METHOD1(HRESULT,GetCaps,DDCAPS*,a1) \
+    ICOM_METHOD1(HRESULT,GetEmulatedCaps,DDCAPS*,a1) \
+    ICOM_METHOD1(HRESULT,GetSurfaceDesc,DDSURFACEDESC*,a1) \
+    ICOM_METHOD2(HRESULT,GetFourCCCodes,DWORD*,a1,DWORD*,a2) \
+    ICOM_METHOD1(HRESULT,SetDirectDraw,LPDIRECTDRAW,a1) \
+    ICOM_METHOD1(HRESULT,GetDirectDraw,LPDIRECTDRAW*,a1) \
+    ICOM_METHOD1(HRESULT,GetSurfaceType,DWORD*,a1) \
+    ICOM_METHOD(HRESULT,SetDefault) \
+    ICOM_METHOD1(HRESULT,UseScanLine,long,a1) \
+    ICOM_METHOD1(HRESULT,CanUseScanLine,long*,a1) \
+    ICOM_METHOD1(HRESULT,UseOverlayStretch,long,a1) \
+    ICOM_METHOD1(HRESULT,CanUseOverlayStretch,long*,a1) \
+    ICOM_METHOD1(HRESULT,UseWhenFullScreen,long,a1) \
+    ICOM_METHOD1(HRESULT,WillUseFullScreen,long*,a1)
+
+#define IDirectDrawVideo_IMETHODS \
+    IUnknown_IMETHODS \
+    IDirectDrawVideo_METHODS
+
+ICOM_DEFINE(IDirectDrawVideo,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IDirectDrawVideo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IDirectDrawVideo_AddRef(p) ICOM_CALL (AddRef,p)
+#define IDirectDrawVideo_Release(p) ICOM_CALL (Release,p)
+    /*** IDirectDrawVideo methods ***/
+#define IDirectDrawVideo_GetSwitches(p,a1) ICOM_CALL1(GetSwitches,p,a1)
+#define IDirectDrawVideo_SetSwitches(p,a1) ICOM_CALL1(SetSwitches,p,a1)
+#define IDirectDrawVideo_GetCaps(p,a1) ICOM_CALL1(GetCaps,p,a1)
+#define IDirectDrawVideo_GetEmulatedCaps(p,a1) ICOM_CALL1(GetEmulatedCaps,p,a1)
+#define IDirectDrawVideo_GetSurfaceDesc(p,a1) ICOM_CALL1(GetSurfaceDesc,p,a1)
+#define IDirectDrawVideo_GetFourCCCodes(p,a1,a2) ICOM_CALL2(GetFourCCCodes,p,a1,a2)
+#define IDirectDrawVideo_SetDirectDraw(p,a1) ICOM_CALL1(SetDirectDraw,p,a1)
+#define IDirectDrawVideo_GetDirectDraw(p,a1) ICOM_CALL1(GetDirectDraw,p,a1)
+#define IDirectDrawVideo_GetSurfaceType(p,a1) ICOM_CALL1(GetSurfaceType,p,a1)
+#define IDirectDrawVideo_SetDefault(p) ICOM_CALL (SetDefault,p)
+#define IDirectDrawVideo_UseScanLine(p,a1) ICOM_CALL1(UseScanLine,p,a1)
+#define IDirectDrawVideo_CanUseScanLine(p,a1) ICOM_CALL1(CanUseScanLine,p,a1)
+#define IDirectDrawVideo_UseOverlayStretch(p,a1) ICOM_CALL1(UseOverlayStretch,p,a1)
+#define IDirectDrawVideo_CanUseOverlayStretch(p,a1) ICOM_CALL1(CanUseOverlayStretch,p,a1)
+#define IDirectDrawVideo_UseWhenFullScreen(p,a1) ICOM_CALL1(UseWhenFullScreen,p,a1)
+#define IDirectDrawVideo_WillUseFullScreen(p,a1) ICOM_CALL1(WillUseFullScreen,p,a1)
+
+/**************************************************************************
+ *
+ * IFullScreenVideo interface
+ *
+ */
+
+#define ICOM_INTERFACE IFullScreenVideo
+#define IFullScreenVideo_METHODS \
+    ICOM_METHOD1(HRESULT,CountModes,long*,a1) \
+    ICOM_METHOD4(HRESULT,GetModeInfo,long,a1,long*,a2,long*,a3,long*,a4) \
+    ICOM_METHOD1(HRESULT,GetCurrentMode,long*,a1) \
+    ICOM_METHOD1(HRESULT,IsModeAvailable,long,a1) \
+    ICOM_METHOD1(HRESULT,IsModeEnabled,long,a1) \
+    ICOM_METHOD2(HRESULT,SetEnabled,long,a1,long,a2) \
+    ICOM_METHOD1(HRESULT,GetClipFactor,long*,a1) \
+    ICOM_METHOD1(HRESULT,SetClipFactor,long,a1) \
+    ICOM_METHOD1(HRESULT,SetMessageDrain,HWND,a1) \
+    ICOM_METHOD1(HRESULT,GetMessageDrain,HWND*,a1) \
+    ICOM_METHOD1(HRESULT,SetMonitor,long,a1) \
+    ICOM_METHOD1(HRESULT,GetMonitor,long*,a1) \
+    ICOM_METHOD1(HRESULT,HideOnDeactivate,long,a1) \
+    ICOM_METHOD(HRESULT,IsHideOnDeactivate) \
+    ICOM_METHOD1(HRESULT,SetCaption,BSTR,a1) \
+    ICOM_METHOD1(HRESULT,GetCaption,BSTR*,a1) \
+    ICOM_METHOD(HRESULT,SetDefault)
+
+#define IFullScreenVideo_IMETHODS \
+    IUnknown_IMETHODS \
+    IFullScreenVideo_METHODS
+
+ICOM_DEFINE(IFullScreenVideo,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IFullScreenVideo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IFullScreenVideo_AddRef(p) ICOM_CALL (AddRef,p)
+#define IFullScreenVideo_Release(p) ICOM_CALL (Release,p)
+    /*** IFullScreenVideo methods ***/
+#define IFullScreenVideo_CountModes(p,a1) ICOM_CALL1(CountModes,p,a1)
+#define IFullScreenVideo_GetModeInfo(p,a1,a2,a3,a4) ICOM_CALL4(GetModeInfo,p,a1,a2,a3,a4)
+#define IFullScreenVideo_GetCurrentMode(p,a1) ICOM_CALL1(GetCurrentMode,p,a1)
+#define IFullScreenVideo_IsModeAvailable(p,a1) ICOM_CALL1(IsModeAvailable,p,a1)
+#define IFullScreenVideo_IsModeEnabled(p,a1) ICOM_CALL1(IsModeEnabled,p,a1)
+#define IFullScreenVideo_SetEnabled(p,a1,a2) ICOM_CALL2(SetEnabled,p,a1,a2)
+#define IFullScreenVideo_GetClipFactor(p,a1) ICOM_CALL1(GetClipFactor,p,a1)
+#define IFullScreenVideo_SetClipFactor(p,a1) ICOM_CALL1(SetClipFactor,p,a1)
+#define IFullScreenVideo_SetMessageDrain(p,a1) ICOM_CALL1(SetMessageDrain,p,a1)
+#define IFullScreenVideo_GetMessageDrain(p,a1) ICOM_CALL1(GetMessageDrain,p,a1)
+#define IFullScreenVideo_SetMonitor(p,a1) ICOM_CALL1(SetMonitor,p,a1)
+#define IFullScreenVideo_GetMonitor(p,a1) ICOM_CALL1(GetMonitor,p,a1)
+#define IFullScreenVideo_HideOnDeactivate(p,a1) ICOM_CALL1(HideOnDeactivate,p,a1)
+#define IFullScreenVideo_IsHideOnDeactivate(p) ICOM_CALL (IsHideOnDeactivate,p)
+#define IFullScreenVideo_SetCaption(p,a1) ICOM_CALL1(SetCaption,p,a1)
+#define IFullScreenVideo_GetCaption(p,a1) ICOM_CALL1(GetCaption,p,a1)
+#define IFullScreenVideo_SetDefault(p) ICOM_CALL (SetDefault,p)
+
+/**************************************************************************
+ *
+ * IFullScreenVideoEx interface
+ *
+ */
+
+#define ICOM_INTERFACE IFullScreenVideoEx
+#define IFullScreenVideoEx_METHODS \
+    ICOM_METHOD2(HRESULT,SetAcceleratorTable,HWND,a1,HACCEL,a2) \
+    ICOM_METHOD2(HRESULT,GetAcceleratorTable,HWND*,a1,HACCEL*,a2) \
+    ICOM_METHOD1(HRESULT,KeepPixelAspectRatio,long,a1) \
+    ICOM_METHOD1(HRESULT,IsKeepPixelAspectRatio,long*,a1)
+
+#define IFullScreenVideoEx_IMETHODS \
+    IFullScreenVideo_IMETHODS \
+    IFullScreenVideoEx_METHODS
+
+ICOM_DEFINE(IFullScreenVideoEx,IFullScreenVideo)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IFullScreenVideoEx_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IFullScreenVideoEx_AddRef(p) ICOM_CALL (AddRef,p)
+#define IFullScreenVideoEx_Release(p) ICOM_CALL (Release,p)
+    /*** IFullScreenVideo methods ***/
+#define IFullScreenVideoEx_CountModes(p,a1) ICOM_CALL1(CountModes,p,a1)
+#define IFullScreenVideoEx_GetModeInfo(p,a1,a2,a3,a4) ICOM_CALL4(GetModeInfo,p,a1,a2,a3,a4)
+#define IFullScreenVideoEx_GetCurrentMode(p,a1) ICOM_CALL1(GetCurrentMode,p,a1)
+#define IFullScreenVideoEx_IsModeAvailable(p,a1) ICOM_CALL1(IsModeAvailable,p,a1)
+#define IFullScreenVideoEx_IsModeEnabled(p,a1) ICOM_CALL1(IsModeEnabled,p,a1)
+#define IFullScreenVideoEx_SetEnabled(p,a1,a2) ICOM_CALL2(SetEnabled,p,a1,a2)
+#define IFullScreenVideoEx_GetClipFactor(p,a1) ICOM_CALL1(GetClipFactor,p,a1)
+#define IFullScreenVideoEx_SetClipFactor(p,a1) ICOM_CALL1(SetClipFactor,p,a1)
+#define IFullScreenVideoEx_SetMessageDrain(p,a1) ICOM_CALL1(SetMessageDrain,p,a1)
+#define IFullScreenVideoEx_GetMessageDrain(p,a1) ICOM_CALL1(GetMessageDrain,p,a1)
+#define IFullScreenVideoEx_SetMonitor(p,a1) ICOM_CALL1(SetMonitor,p,a1)
+#define IFullScreenVideoEx_GetMonitor(p,a1) ICOM_CALL1(GetMonitor,p,a1)
+#define IFullScreenVideoEx_HideOnDeactivate(p,a1) ICOM_CALL1(HideOnDeactivate,p,a1)
+#define IFullScreenVideoEx_IsHideOnDeactivate(p) ICOM_CALL (IsHideOnDeactivate,p)
+#define IFullScreenVideoEx_SetCaption(p,a1) ICOM_CALL1(SetCaption,p,a1)
+#define IFullScreenVideoEx_GetCaption(p,a1) ICOM_CALL1(GetCaption,p,a1)
+#define IFullScreenVideoEx_SetDefault(p) ICOM_CALL (SetDefault,p)
+    /*** IFullScreenVideoEx methods ***/
+#define IFullScreenVideoEx_SetAcceleratorTable(p,a1,a2) ICOM_CALL2(SetAcceleratorTable,p,a1,a2)
+#define IFullScreenVideoEx_GetAcceleratorTable(p,a1,a2) ICOM_CALL2(GetAcceleratorTable,p,a1,a2)
+#define IFullScreenVideoEx_KeepPixelAspectRatio(p,a1) ICOM_CALL1(KeepPixelAspectRatio,p,a1)
+#define IFullScreenVideoEx_IsKeepPixelAspectRatio(p,a1) ICOM_CALL1(IsKeepPixelAspectRatio,p,a1)
+
+/**************************************************************************
+ *
+ * IQualProp interface
+ *
+ */
+
+#define ICOM_INTERFACE IQualProp
+#define IQualProp_METHODS \
+    ICOM_METHOD1(HRESULT,get_FramesDroppedInRenderer,int*,a1) \
+    ICOM_METHOD1(HRESULT,get_FramesDrawn,int*,a1) \
+    ICOM_METHOD1(HRESULT,get_AvgFrameRate,int*,a1) \
+    ICOM_METHOD1(HRESULT,get_Jitter,int*,a1) \
+    ICOM_METHOD1(HRESULT,get_AvgSyncOffset,int*,a1) \
+    ICOM_METHOD1(HRESULT,get_DevSyncOffset,int*,a1)
+
+#define IQualProp_IMETHODS \
+    IUnknown_IMETHODS \
+    IQualProp_METHODS
+
+ICOM_DEFINE(IQualProp,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IQualProp_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IQualProp_AddRef(p) ICOM_CALL (AddRef,p)
+#define IQualProp_Release(p) ICOM_CALL (Release,p)
+    /*** IQualProp methods ***/
+#define IQualProp_get_FramesDroppedInRenderer(p,a1) ICOM_CALL1(get_FramesDroppedInRenderer,p,a1)
+#define IQualProp_get_FramesDrawn(p,a1) ICOM_CALL1(get_FramesDrawn,p,a1)
+#define IQualProp_get_AvgFrameRate(p,a1) ICOM_CALL1(get_AvgFrameRate,p,a1)
+#define IQualProp_get_Jitter(p,a1) ICOM_CALL1(get_Jitter,p,a1)
+#define IQualProp_get_AvgSyncOffset(p,a1) ICOM_CALL1(get_AvgSyncOffset,p,a1)
+#define IQualProp_get_DevSyncOffset(p,a1) ICOM_CALL1(get_DevSyncOffset,p,a1)
+
+
+#endif  /* __WINE_AMVIDEO_H_ */
diff --git a/include/control.h b/include/control.h
new file mode 100644
index 0000000..774ba2b
--- /dev/null
+++ b/include/control.h
@@ -0,0 +1,789 @@
+#ifndef __WINE_CONTROL_H_
+#define __WINE_CONTROL_H_
+
+#include "ole2.h"
+
+/* forward decls. */
+
+typedef struct IAMCollection IAMCollection;
+typedef struct IAMStats IAMStats;
+typedef struct IBasicAudio IBasicAudio;
+typedef struct IBasicVideo IBasicVideo;
+typedef struct IBasicVideo2 IBasicVideo2;
+typedef struct IDeferredCommand IDeferredCommand;
+typedef struct IFilterInfo IFilterInfo;
+typedef struct IMediaControl IMediaControl;
+typedef struct IMediaEvent IMediaEvent;
+typedef struct IMediaEventEx IMediaEventEx;
+typedef struct IMediaPosition IMediaPosition;
+typedef struct IMediaTypeInfo IMediaTypeInfo;
+typedef struct IPinInfo IPinInfo;
+typedef struct IQueueCommand IQueueCommand;
+typedef struct IRegFilterInfo IRegFilterInfo;
+typedef struct IVideoWindow IVideoWindow;
+
+
+#ifndef __WINE_REFTIME_DEFINED_
+#define __WINE_REFTIME_DEFINED_
+typedef double REFTIME;
+#endif  /* __WINE_REFTIME_DEFINED_ */
+
+typedef LONG_PTR OAEVENT;
+typedef LONG_PTR OAHWND;
+typedef long OAFilterState;
+
+
+
+/**************************************************************************
+ *
+ * IAMCollection interface
+ *
+ */
+
+#define ICOM_INTERFACE IAMCollection
+#define IAMCollection_METHODS \
+    ICOM_METHOD1(HRESULT,get_Count,LONG*,a1) \
+    ICOM_METHOD2(HRESULT,Item,long,a1,IUnknown**,a2) \
+    ICOM_METHOD1(HRESULT,get__NewEnum,IUnknown**,a1)
+
+#define IAMCollection_IMETHODS \
+    IDispatch_IMETHODS \
+    IAMCollection_METHODS
+
+ICOM_DEFINE(IAMCollection,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IAMCollection_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IAMCollection_AddRef(p) ICOM_CALL (AddRef,p)
+#define IAMCollection_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IAMCollection_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IAMCollection_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IAMCollection_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IAMCollection_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IAMCollection methods ***/
+#define IAMCollection_get_Count(p,a1) ICOM_CALL1(get_Count,p,a1)
+#define IAMCollection_Item(p,a1,a2) ICOM_CALL2(Item,p,a1,a2)
+#define IAMCollection_get__NewEnum(p,a1) ICOM_CALL1(get__NewEnum,p,a1)
+
+/**************************************************************************
+ *
+ * IAMStats interface
+ *
+ */
+
+#define ICOM_INTERFACE IAMStats
+#define IAMStats_METHODS \
+    ICOM_METHOD (HRESULT,Reset) \
+    ICOM_METHOD1(HRESULT,get_Count,LONG*,a1) \
+    ICOM_METHOD8(HRESULT,GetValueByIndex,long,a1,BSTR*,a2,long*,a3,double*,a4,double*,a5,double*,a6,double*,a7,double*,a8) \
+    ICOM_METHOD8(HRESULT,GetValueByName,BSTR,a1,long*,a2,long*,a3,double*,a4,double*,a5,double*,a6,double*,a7,double*,a8) \
+    ICOM_METHOD3(HRESULT,GetIndex,BSTR,a1,long,a2,long*,a3) \
+    ICOM_METHOD2(HRESULT,AddValue,long,a1,double,a2)
+
+#define IAMStats_IMETHODS \
+    IDispatch_IMETHODS \
+    IAMStats_METHODS
+
+ICOM_DEFINE(IAMStats,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IAMStats_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IAMStats_AddRef(p) ICOM_CALL (AddRef,p)
+#define IAMStats_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IAMStats_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IAMStats_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IAMStats_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IAMStats_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IAMStats methods ***/
+#define IAMStats_Reset(p) ICOM_CALL (Reset,p)
+#define IAMStats_get_Count(p,a1) ICOM_CALL1(get_Count,p,a1)
+#define IAMStats_GetValueByIndex(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(GetValueByIndex,p,a1,a2,a3,a4,a5,a6,a7,a8)
+#define IAMStats_GetValueByName(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(GetValueByName,p,a1,a2,a3,a4,a5,a6,a7,a8)
+#define IAMStats_GetIndex(p,a1,a2,a3) ICOM_CALL3(GetIndex,p,a1,a2,a3)
+#define IAMStats_AddValue(p,a1,a2) ICOM_CALL2(AddValue,p,a1,a2)
+
+/**************************************************************************
+ *
+ * IBasicAudio interface
+ *
+ */
+
+#define ICOM_INTERFACE IBasicAudio
+#define IBasicAudio_METHODS \
+    ICOM_METHOD1(HRESULT,put_Volume,long,a1) \
+    ICOM_METHOD1(HRESULT,get_Volume,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_Balance,long,a1) \
+    ICOM_METHOD1(HRESULT,get_Balance,long*,a1)
+
+#define IBasicAudio_IMETHODS \
+    IDispatch_IMETHODS \
+    IBasicAudio_METHODS
+
+ICOM_DEFINE(IBasicAudio,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IBasicAudio_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IBasicAudio_AddRef(p) ICOM_CALL (AddRef,p)
+#define IBasicAudio_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IBasicAudio_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IBasicAudio_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IBasicAudio_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IBasicAudio_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IBasicAudio methods ***/
+#define IBasicAudio_put_Volume(p,a1) ICOM_CALL1(put_Volume,p,a1)
+#define IBasicAudio_get_Volume(p,a1) ICOM_CALL1(get_Volume,p,a1)
+#define IBasicAudio_put_Balance(p,a1) ICOM_CALL1(put_Balance,p,a1)
+#define IBasicAudio_get_Balance(p,a1) ICOM_CALL1(get_Balance,p,a1)
+
+/**************************************************************************
+ *
+ * IBasicVideo interface
+ *
+ */
+
+#define ICOM_INTERFACE IBasicVideo
+#define IBasicVideo_METHODS \
+    ICOM_METHOD1(HRESULT,get_AvgTimePerFrame,REFTIME*,a1) \
+    ICOM_METHOD1(HRESULT,get_BitRate,long*,a1) \
+    ICOM_METHOD1(HRESULT,get_BitErrorRate,long*,a1) \
+    ICOM_METHOD1(HRESULT,get_VideoWidth,long*,a1) \
+    ICOM_METHOD1(HRESULT,get_VideoHeight,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_SourceLeft,long,a1) \
+    ICOM_METHOD1(HRESULT,get_SourceLeft,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_SourceWidth,long,a1) \
+    ICOM_METHOD1(HRESULT,get_SourceWidth,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_SourceTop,long,a1) \
+    ICOM_METHOD1(HRESULT,get_SourceTop,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_SourceHeight,long,a1) \
+    ICOM_METHOD1(HRESULT,get_SourceHeight,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_DestinationLeft,long,a1) \
+    ICOM_METHOD1(HRESULT,get_DestinationLeft,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_DestinationWidth,long,a1) \
+    ICOM_METHOD1(HRESULT,get_DestinationWidth,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_DestinationTop,long,a1) \
+    ICOM_METHOD1(HRESULT,get_DestinationTop,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_DestinationHeight,long,a1) \
+    ICOM_METHOD1(HRESULT,get_DestinationHeight,long*,a1) \
+    ICOM_METHOD4(HRESULT,SetSourcePosition,long,a1,long,a2,long,a3,long,a4) \
+    ICOM_METHOD4(HRESULT,GetSourcePosition,long*,a1,long*,a2,long*,a3,long*,a4) \
+    ICOM_METHOD (HRESULT,SetDefaultSourcePosition) \
+    ICOM_METHOD4(HRESULT,SetDestinationPosition,long,a1,long,a2,long,a3,long,a4) \
+    ICOM_METHOD4(HRESULT,GetDestinationPosition,long*,a1,long*,a2,long*,a3,long*,a4) \
+    ICOM_METHOD (HRESULT,SetDefaultDestinationPosition) \
+    ICOM_METHOD2(HRESULT,GetVideoSize,long*,a1,long*,a2) \
+    ICOM_METHOD4(HRESULT,GetVideoPaletteEntries,long,a1,long,a2,long*,a3,long*,a4) \
+    ICOM_METHOD2(HRESULT,GetCurrentImage,long*,a1,long*,a2) \
+    ICOM_METHOD (HRESULT,IsUsingDefaultSource) \
+    ICOM_METHOD (HRESULT,IsUsingDefaultDestination)
+
+#define IBasicVideo_IMETHODS \
+    IDispatch_IMETHODS \
+    IBasicVideo_METHODS
+
+ICOM_DEFINE(IBasicVideo,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IBasicVideo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IBasicVideo_AddRef(p) ICOM_CALL (AddRef,p)
+#define IBasicVideo_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IBasicVideo_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IBasicVideo_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IBasicVideo_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IBasicVideo_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IBasicVideo methods ***/
+#define IBasicVideo_get_AvgTimePerFrame(p,a1) ICOM_CALL1(get_AvgTimePerFrame,p,a1)
+#define IBasicVideo_get_BitRate(p,a1) ICOM_CALL1(get_BitRate,p,a1)
+#define IBasicVideo_get_BitErrorRate(p,a1) ICOM_CALL1(get_BitErrorRate,p,a1)
+#define IBasicVideo_get_VideoWidth(p,a1) ICOM_CALL1(get_VideoWidth,p,a1)
+#define IBasicVideo_get_VideoHeight(p,a1) ICOM_CALL1(get_VideoHeight,p,a1)
+#define IBasicVideo_put_SourceLeft(p,a1) ICOM_CALL1(put_SourceLeft,p,a1)
+#define IBasicVideo_get_SourceLeft(p,a1) ICOM_CALL1(get_SourceLeft,p,a1)
+#define IBasicVideo_put_SourceWidth(p,a1) ICOM_CALL1(put_SourceWidth,p,a1)
+#define IBasicVideo_get_SourceWidth(p,a1) ICOM_CALL1(get_SourceWidth,p,a1)
+#define IBasicVideo_put_SourceTop(p,a1) ICOM_CALL1(put_SourceTop,p,a1)
+#define IBasicVideo_get_SourceTop(p,a1) ICOM_CALL1(get_SourceTop,p,a1)
+#define IBasicVideo_put_SourceHeight(p,a1) ICOM_CALL1(put_SourceHeight,p,a1)
+#define IBasicVideo_get_SourceHeight(p,a1) ICOM_CALL1(get_SourceHeight,p,a1)
+#define IBasicVideo_put_DestinationLeft(p,a1) ICOM_CALL1(put_DestinationLeft,p,a1)
+#define IBasicVideo_get_DestinationLeft(p,a1) ICOM_CALL1(get_DestinationLeft,p,a1)
+#define IBasicVideo_put_DestinationWidth(p,a1) ICOM_CALL1(put_DestinationWidth,p,a1)
+#define IBasicVideo_get_DestinationWidth(p,a1) ICOM_CALL1(get_DestinationWidth,p,a1)
+#define IBasicVideo_put_DestinationTop(p,a1) ICOM_CALL1(put_DestinationTop,p,a1)
+#define IBasicVideo_get_DestinationTop(p,a1) ICOM_CALL1(get_DestinationTop,p,a1)
+#define IBasicVideo_put_DestinationHeight(p,a1) ICOM_CALL1(put_DestinationHeight,p,a1)
+#define IBasicVideo_get_DestinationHeight(p,a1) ICOM_CALL1(get_DestinationHeight,p,a1)
+#define IBasicVideo_SetSourcePosition(p,a1,a2,a3,a4) ICOM_CALL4(SetSourcePosition,p,a1,a2,a3,a4)
+#define IBasicVideo_GetSourcePosition(p,a1,a2,a3,a4) ICOM_CALL4(GetSourcePosition,p,a1,a2,a3,a4)
+#define IBasicVideo_SetDefaultSourcePosition(p) ICOM_CALL (SetDefaultSourcePosition,p)
+#define IBasicVideo_SetDestinationPosition(p,a1,a2,a3,a4) ICOM_CALL4(SetDestinationPosition,p,a1,a2,a3,a4)
+#define IBasicVideo_GetDestinationPosition(p,a1,a2,a3,a4) ICOM_CALL4(GetDestinationPosition,p,a1,a2,a3,a4)
+#define IBasicVideo_SetDefaultDestinationPosition(p) ICOM_CALL (SetDefaultDestinationPosition,p)
+#define IBasicVideo_GetVideoSize(p,a1,a2) ICOM_CALL2(GetVideoSize,p,a1,a2)
+#define IBasicVideo_GetVideoPaletteEntries(p,a1,a2,a3,a4) ICOM_CALL4(GetVideoPaletteEntries,p,a1,a2,a3,a4)
+#define IBasicVideo_GetCurrentImage(p,a1,a2) ICOM_CALL2(GetCurrentImage,p,a1,a2)
+#define IBasicVideo_IsUsingDefaultSource(p) ICOM_CALL (IsUsingDefaultSource,p)
+#define IBasicVideo_IsUsingDefaultDestination(p) ICOM_CALL (IsUsingDefaultDestination,p)
+
+/**************************************************************************
+ *
+ * IBasicVideo2 interface
+ *
+ */
+
+#define ICOM_INTERFACE IBasicVideo2
+#define IBasicVideo2_METHODS \
+    ICOM_METHOD2(HRESULT,GetPreferredAspectRatio,long*,a1,long*,a2)
+
+#define IBasicVideo2_IMETHODS \
+    IBasicVideo_IMETHODS \
+    IBasicVideo2_METHODS
+
+ICOM_DEFINE(IBasicVideo2,IBasicVideo)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IBasicVideo2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IBasicVideo2_AddRef(p) ICOM_CALL (AddRef,p)
+#define IBasicVideo2_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IBasicVideo2_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IBasicVideo2_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IBasicVideo2_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IBasicVideo2_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IBasicVideo methods ***/
+#define IBasicVideo2_get_AvgTimePerFrame(p,a1) ICOM_CALL1(get_AvgTimePerFrame,p,a1)
+#define IBasicVideo2_get_BitRate(p,a1) ICOM_CALL1(get_BitRate,p,a1)
+#define IBasicVideo2_get_BitErrorRate(p,a1) ICOM_CALL1(get_BitErrorRate,p,a1)
+#define IBasicVideo2_get_VideoWidth(p,a1) ICOM_CALL1(get_VideoWidth,p,a1)
+#define IBasicVideo2_get_VideoHeight(p,a1) ICOM_CALL1(get_VideoHeight,p,a1)
+#define IBasicVideo2_put_SourceLeft(p,a1) ICOM_CALL1(put_SourceLeft,p,a1)
+#define IBasicVideo2_get_SourceLeft(p,a1) ICOM_CALL1(get_SourceLeft,p,a1)
+#define IBasicVideo2_put_SourceWidth(p,a1) ICOM_CALL1(put_SourceWidth,p,a1)
+#define IBasicVideo2_get_SourceWidth(p,a1) ICOM_CALL1(get_SourceWidth,p,a1)
+#define IBasicVideo2_put_SourceTop(p,a1) ICOM_CALL1(put_SourceTop,p,a1)
+#define IBasicVideo2_get_SourceTop(p,a1) ICOM_CALL1(get_SourceTop,p,a1)
+#define IBasicVideo2_put_SourceHeight(p,a1) ICOM_CALL1(put_SourceHeight,p,a1)
+#define IBasicVideo2_get_SourceHeight(p,a1) ICOM_CALL1(get_SourceHeight,p,a1)
+#define IBasicVideo2_put_DestinationLeft(p,a1) ICOM_CALL1(put_DestinationLeft,p,a1)
+#define IBasicVideo2_get_DestinationLeft(p,a1) ICOM_CALL1(get_DestinationLeft,p,a1)
+#define IBasicVideo2_put_DestinationWidth(p,a1) ICOM_CALL1(put_DestinationWidth,p,a1)
+#define IBasicVideo2_get_DestinationWidth(p,a1) ICOM_CALL1(get_DestinationWidth,p,a1)
+#define IBasicVideo2_put_DestinationTop(p,a1) ICOM_CALL1(put_DestinationTop,p,a1)
+#define IBasicVideo2_get_DestinationTop(p,a1) ICOM_CALL1(get_DestinationTop,p,a1)
+#define IBasicVideo2_put_DestinationHeight(p,a1) ICOM_CALL1(put_DestinationHeight,p,a1)
+#define IBasicVideo2_get_DestinationHeight(p,a1) ICOM_CALL1(get_DestinationHeight,p,a1)
+#define IBasicVideo2_SetSourcePosition(p,a1,a2,a3,a4) ICOM_CALL4(SetSourcePosition,p,a1,a2,a3,a4)
+#define IBasicVideo2_GetSourcePosition(p,a1,a2,a3,a4) ICOM_CALL4(GetSourcePosition,p,a1,a2,a3,a4)
+#define IBasicVideo2_SetDefaultSourcePosition(p,a1) ICOM_CALL1(SetDefaultSourcePosition,p,a1)
+#define IBasicVideo2_SetDestinationPosition(p,a1,a2,a3,a4) ICOM_CALL4(SetDestinationPosition,p,a1,a2,a3,a4)
+#define IBasicVideo2_GetDestinationPosition(p,a1,a2,a3,a4) ICOM_CALL4(GetDestinationPosition,p,a1,a2,a3,a4)
+#define IBasicVideo2_SetDefaultDestinationPosition(p,a1) ICOM_CALL1(SetDefaultDestinationPosition,p,a1)
+#define IBasicVideo2_GetVideoSize(p,a1,a2) ICOM_CALL2(GetVideoSize,p,a1,a2)
+#define IBasicVideo2_GetVideoPaletteEntries(p,a1,a2,a3,a4) ICOM_CALL4(GetVideoPaletteEntries,p,a1,a2,a3,a4)
+#define IBasicVideo2_GetCurrentImage(p,a1,a2) ICOM_CALL2(GetCurrentImage,p,a1,a2)
+#define IBasicVideo2_IsUsingDefaultSource(p,a1) ICOM_CALL1(IsUsingDefaultSource,p,a1)
+#define IBasicVideo2_IsUsingDefaultDestination(p,a1) ICOM_CALL1(IsUsingDefaultDestination,p,a1)
+    /*** IBasicVideo2 methods ***/
+#define IBasicVideo2_GetPreferredAspectRatio(p,a1,a2) ICOM_CALL2(GetPreferredAspectRatio,p,a1,a2)
+
+/**************************************************************************
+ *
+ * IDeferredCommand interface
+ *
+ */
+
+#define ICOM_INTERFACE IDeferredCommand
+#define IDeferredCommand_METHODS \
+    ICOM_METHOD (HRESULT,Cancel) \
+    ICOM_METHOD1(HRESULT,Confidence,LONG*,a1) \
+    ICOM_METHOD1(HRESULT,Postpone,REFTIME,a1) \
+    ICOM_METHOD1(HRESULT,GetHResult,HRESULT*,a1)
+
+#define IDeferredCommand_IMETHODS \
+    IUnknown_IMETHODS \
+    IDeferredCommand_METHODS
+
+ICOM_DEFINE(IDeferredCommand,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IDeferredCommand_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IDeferredCommand_AddRef(p) ICOM_CALL (AddRef,p)
+#define IDeferredCommand_Release(p) ICOM_CALL (Release,p)
+    /*** IDeferredCommand methods ***/
+#define IDeferredCommand_Cancel(p) ICOM_CALL1(Cancel,p)
+#define IDeferredCommand_Confidence(p,a1) ICOM_CALL1(Confidence,p,a1)
+#define IDeferredCommand_Postpone(p,a1) ICOM_CALL1(Postpone,p,a1)
+#define IDeferredCommand_GetHResult(p,a1) ICOM_CALL1(GetHResult,p,a1)
+
+/**************************************************************************
+ *
+ * IFilterInfo interface
+ *
+ */
+
+#define ICOM_INTERFACE IFilterInfo
+#define IFilterInfo_METHODS \
+    ICOM_METHOD2(HRESULT,FindPin,BSTR,a1,IDispatch**,a2) \
+    ICOM_METHOD1(HRESULT,get_Name,BSTR*,a1) \
+    ICOM_METHOD1(HRESULT,get_VendorInfo,BSTR*,a1) \
+    ICOM_METHOD1(HRESULT,get_Filter,IUnknown**,a1) \
+    ICOM_METHOD1(HRESULT,get_Pins,IDispatch**,a1) \
+    ICOM_METHOD1(HRESULT,get_IsFileSource,LONG*,a1) \
+    ICOM_METHOD1(HRESULT,get_Filename,BSTR*,a1) \
+    ICOM_METHOD1(HRESULT,put_Filename,BSTR,a1)
+
+#define IFilterInfo_IMETHODS \
+    IDispatch_IMETHODS \
+    IFilterInfo_METHODS
+
+ICOM_DEFINE(IFilterInfo,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IFilterInfo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IFilterInfo_AddRef(p) ICOM_CALL (AddRef,p)
+#define IFilterInfo_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IFilterInfo_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IFilterInfo_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IFilterInfo_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IFilterInfo_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IFilterInfo methods ***/
+#define IFilterInfo_FindPin(p,a1,a2) ICOM_CALL2(FindPin,p,a1,a2)
+#define IFilterInfo_get_Name(p,a1) ICOM_CALL1(get_Name,p,a1)
+#define IFilterInfo_get_VendorInfo(p,a1) ICOM_CALL1(get_VendorInfo,p,a1)
+#define IFilterInfo_get_Filter(p,a1) ICOM_CALL1(get_Filter,p,a1)
+#define IFilterInfo_get_Pins(p,a1) ICOM_CALL1(get_Pins,p,a1)
+#define IFilterInfo_get_IsFileSource(p,a1) ICOM_CALL1(get_IsFileSource,p,a1)
+#define IFilterInfo_get_Filename(p,a1) ICOM_CALL1(get_Filename,p,a1)
+#define IFilterInfo_put_Filename(p,a1) ICOM_CALL1(put_Filename,p,a1)
+
+/**************************************************************************
+ *
+ * IMediaControl interface
+ *
+ */
+
+#define ICOM_INTERFACE IMediaControl
+#define IMediaControl_METHODS \
+    ICOM_METHOD (HRESULT,Run) \
+    ICOM_METHOD (HRESULT,Pause) \
+    ICOM_METHOD (HRESULT,Stop) \
+    ICOM_METHOD2(HRESULT,GetState,LONG,a1,OAFilterState*,a2) \
+    ICOM_METHOD1(HRESULT,RenderFile,BSTR,a1) \
+    ICOM_METHOD2(HRESULT,AddSourceFilter,BSTR,a1,IDispatch**,a2) \
+    ICOM_METHOD1(HRESULT,get_FilterCollection,IDispatch**,a1) \
+    ICOM_METHOD1(HRESULT,get_RegFilterCollection,IDispatch**,a1) \
+    ICOM_METHOD (HRESULT,StopWhenReady)
+
+#define IMediaControl_IMETHODS \
+    IDispatch_IMETHODS \
+    IMediaControl_METHODS
+
+ICOM_DEFINE(IMediaControl,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMediaControl_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMediaControl_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMediaControl_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IMediaControl_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IMediaControl_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IMediaControl_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IMediaControl_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IMediaControl methods ***/
+#define IMediaControl_Run(p) ICOM_CALL (Run,p)
+#define IMediaControl_Pause(p) ICOM_CALL (Pause,p)
+#define IMediaControl_Stop(p) ICOM_CALL (Stop,p)
+#define IMediaControl_GetState(p,a1,a2) ICOM_CALL2(GetState,p,a1,a2)
+#define IMediaControl_RenderFile(p,a1) ICOM_CALL1(RenderFile,p,a1)
+#define IMediaControl_AddSourceFilter(p,a1,a2) ICOM_CALL2(AddSourceFilter,p,a1,a2)
+#define IMediaControl_get_FilterCollection(p,a1) ICOM_CALL1(get_FilterCollection,p,a1)
+#define IMediaControl_get_RegFilterCollection(p,a1) ICOM_CALL1(get_RegFilterCollection,p,a1)
+#define IMediaControl_StopWhenReady(p) ICOM_CALL (StopWhenReady,p)
+
+/**************************************************************************
+ *
+ * IMediaEvent interface
+ *
+ */
+
+#define ICOM_INTERFACE IMediaEvent
+#define IMediaEvent_METHODS \
+    ICOM_METHOD1(HRESULT,GetEventHandle,OAEVENT*,a1) \
+    ICOM_METHOD4(HRESULT,GetEvent,long*,a1,LONG_PTR*,a2,LONG_PTR*,a3,long,a4) \
+    ICOM_METHOD2(HRESULT,WaitForCompletion,long,a1,long*,a2) \
+    ICOM_METHOD1(HRESULT,CancelDefaultHandling,long,a1) \
+    ICOM_METHOD1(HRESULT,RestoreDefaultHandling,long,a1) \
+    ICOM_METHOD3(HRESULT,FreeEventParams,long,a1,LONG_PTR,a2,LONG_PTR,a3)
+
+#define IMediaEvent_IMETHODS \
+    IDispatch_IMETHODS \
+    IMediaEvent_METHODS
+
+ICOM_DEFINE(IMediaEvent,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMediaEvent_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMediaEvent_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMediaEvent_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IMediaEvent_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IMediaEvent_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IMediaEvent_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IMediaEvent_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IMediaEvent methods ***/
+#define IMediaEvent_GetEventHandle(p,a1) ICOM_CALL1(GetEventHandle,p,a1)
+#define IMediaEvent_GetEvent(p,a1,a2,a3,a4) ICOM_CALL4(GetEvent,p,a1,a2,a3,a4)
+#define IMediaEvent_WaitForCompletion(p,a1,a2) ICOM_CALL2(WaitForCompletion,p,a1,a2)
+#define IMediaEvent_CancelDefaultHandling(p,a1) ICOM_CALL1(CancelDefaultHandling,p,a1)
+#define IMediaEvent_RestoreDefaultHandling(p,a1) ICOM_CALL1(RestoreDefaultHandling,p,a1)
+#define IMediaEvent_FreeEventParams(p,a1,a2,a3) ICOM_CALL3(FreeEventParams,p,a1,a2,a3)
+
+/**************************************************************************
+ *
+ * IMediaEventEx interface
+ *
+ */
+
+#define ICOM_INTERFACE IMediaEventEx
+#define IMediaEventEx_METHODS \
+    ICOM_METHOD3(HRESULT,SetNotifyWindow,OAHWND,a1,long,a2,LONG_PTR,a3) \
+    ICOM_METHOD1(HRESULT,SetNotifyFlags,long,a1) \
+    ICOM_METHOD1(HRESULT,GetNotifyFlags,long*,a1)
+
+#define IMediaEventEx_IMETHODS \
+    IMediaEvent_IMETHODS \
+    IMediaEventEx_METHODS
+
+ICOM_DEFINE(IMediaEventEx,IMediaEvent)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMediaEventEx_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMediaEventEx_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMediaEventEx_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IMediaEventEx_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IMediaEventEx_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IMediaEventEx_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IMediaEventEx_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IMediaEvent methods ***/
+#define IMediaEventEx_GetEventHandle(p,a1) ICOM_CALL1(GetEventHandle,p,a1)
+#define IMediaEventEx_GetEvent(p,a1,a2,a3,a4) ICOM_CALL4(GetEvent,p,a1,a2,a3,a4)
+#define IMediaEventEx_WaitForCompletion(p,a1,a2) ICOM_CALL2(WaitForCompletion,p,a1,a2)
+#define IMediaEventEx_CancelDefaultHandling(p,a1) ICOM_CALL1(CancelDefaultHandling,p,a1)
+#define IMediaEventEx_RestoreDefaultHandling(p,a1) ICOM_CALL1(RestoreDefaultHandling,p,a1)
+#define IMediaEventEx_FreeEventParams(p,a1,a2,a3) ICOM_CALL3(FreeEventParams,p,a1,a2,a3)
+    /*** IMediaEventEx methods ***/
+#define IMediaEventEx_SetNotifyWindow(p,a1,a2,a3) ICOM_CALL3(SetNotifyWindow,p,a1,a2,a3)
+#define IMediaEventEx_SetNotifyFlags(p,a1) ICOM_CALL1(SetNotifyFlags,p,a1)
+#define IMediaEventEx_GetNotifyFlags(p,a1) ICOM_CALL1(GetNotifyFlags,p,a1)
+
+/**************************************************************************
+ *
+ * IMediaPosition interface
+ *
+ */
+
+#define ICOM_INTERFACE IMediaPosition
+#define IMediaPosition_METHODS \
+    ICOM_METHOD1(HRESULT,get_Duration,REFTIME*,a1) \
+    ICOM_METHOD1(HRESULT,put_CurrentPosition,REFTIME,a1) \
+    ICOM_METHOD1(HRESULT,get_CurrentPosition,REFTIME*,a1) \
+    ICOM_METHOD1(HRESULT,get_StopTime,REFTIME*,a1) \
+    ICOM_METHOD1(HRESULT,put_StopTime,REFTIME,a1) \
+    ICOM_METHOD1(HRESULT,get_PrerollTime,REFTIME*,a1) \
+    ICOM_METHOD1(HRESULT,put_PrerollTime,REFTIME,a1) \
+    ICOM_METHOD1(HRESULT,put_Rate,double,a1) \
+    ICOM_METHOD1(HRESULT,get_Rate,double*,a1) \
+    ICOM_METHOD1(HRESULT,CanSeekForward,LONG*,a1) \
+    ICOM_METHOD1(HRESULT,CanSeekBackward,LONG*,a1)
+
+#define IMediaPosition_IMETHODS \
+    IDispatch_IMETHODS \
+    IMediaPosition_METHODS
+
+ICOM_DEFINE(IMediaPosition,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMediaPosition_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMediaPosition_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMediaPosition_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IMediaPosition_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IMediaPosition_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IMediaPosition_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IMediaPosition_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IMediaPosition methods ***/
+#define IMediaPosition_get_Duration(p,a1) ICOM_CALL1(get_Duration,p,a1)
+#define IMediaPosition_put_CurrentPosition(p,a1) ICOM_CALL1(put_CurrentPosition,p,a1)
+#define IMediaPosition_get_CurrentPosition(p,a1) ICOM_CALL1(get_CurrentPosition,p,a1)
+#define IMediaPosition_get_StopTime(p,a1) ICOM_CALL1(get_StopTime,p,a1)
+#define IMediaPosition_put_StopTime(p,a1) ICOM_CALL1(put_StopTime,p,a1)
+#define IMediaPosition_get_PrerollTime(p,a1) ICOM_CALL1(get_PrerollTime,p,a1)
+#define IMediaPosition_put_PrerollTime(p,a1) ICOM_CALL1(put_PrerollTime,p,a1)
+#define IMediaPosition_put_Rate(p,a1) ICOM_CALL1(put_Rate,p,a1)
+#define IMediaPosition_get_Rate(p,a1) ICOM_CALL1(get_Rate,p,a1)
+#define IMediaPosition_CanSeekForward(p,a1) ICOM_CALL1(CanSeekForward,p,a1)
+#define IMediaPosition_CanSeekBackward(p,a1) ICOM_CALL1(CanSeekBackward,p,a1)
+
+/**************************************************************************
+ *
+ * IMediaTypeInfo interface
+ *
+ */
+
+#define ICOM_INTERFACE IMediaTypeInfo
+#define IMediaTypeInfo_METHODS \
+    ICOM_METHOD1(HRESULT,get_Type,BSTR*,a1) \
+    ICOM_METHOD1(HRESULT,get_Subtype,BSTR*,a1)
+
+#define IMediaTypeInfo_IMETHODS \
+    IDispatch_IMETHODS \
+    IMediaTypeInfo_METHODS
+
+ICOM_DEFINE(IMediaTypeInfo,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMediaTypeInfo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMediaTypeInfo_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMediaTypeInfo_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IMediaTypeInfo_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IMediaTypeInfo_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IMediaTypeInfo_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IMediaTypeInfo_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IMediaTypeInfo methods ***/
+#define IMediaTypeInfo_get_Type(p,a1) ICOM_CALL1(get_Type,p,a1)
+#define IMediaTypeInfo_get_Subtype(p,a1) ICOM_CALL1(get_Subtype,p,a1)
+
+/**************************************************************************
+ *
+ * IPinInfo interface
+ *
+ */
+
+#define ICOM_INTERFACE IPinInfo
+#define IPinInfo_METHODS \
+    ICOM_METHOD1(HRESULT,get_Pin,IUnknown**,a1) \
+    ICOM_METHOD1(HRESULT,get_ConnectedTo,IDispatch**,a1) \
+    ICOM_METHOD1(HRESULT,get_ConnectionMediaType,IDispatch**,a1) \
+    ICOM_METHOD1(HRESULT,get_FilterInfo,IDispatch**,a1) \
+    ICOM_METHOD1(HRESULT,get_Name,BSTR*,a1) \
+    ICOM_METHOD1(HRESULT,get_Direction,LONG*,a1) \
+    ICOM_METHOD1(HRESULT,get_PinID,BSTR*,a1) \
+    ICOM_METHOD1(HRESULT,get_MediaTypes,IDispatch**,a1) \
+    ICOM_METHOD1(HRESULT,Connect,IUnknown*,a1) \
+    ICOM_METHOD1(HRESULT,ConnectDirect,IUnknown*,a1) \
+    ICOM_METHOD2(HRESULT,ConnectWithType,IUnknown*,a1,IDispatch*,a2) \
+    ICOM_METHOD (HRESULT,Disconnect) \
+    ICOM_METHOD (HRESULT,Render)
+
+#define IPinInfo_IMETHODS \
+    IDispatch_IMETHODS \
+    IPinInfo_METHODS
+
+ICOM_DEFINE(IPinInfo,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IPinInfo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IPinInfo_AddRef(p) ICOM_CALL (AddRef,p)
+#define IPinInfo_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IPinInfo_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IPinInfo_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IPinInfo_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IPinInfo_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IPinInfo methods ***/
+#define IPinInfo_get_Pin(p,a1) ICOM_CALL1(get_Pin,p,a1)
+#define IPinInfo_get_ConnectedTo(p,a1) ICOM_CALL1(get_ConnectedTo,p,a1)
+#define IPinInfo_get_ConnectionMediaType(p,a1) ICOM_CALL1(get_ConnectionMediaType,p,a1)
+#define IPinInfo_get_FilterInfo(p,a1) ICOM_CALL1(get_FilterInfo,p,a1)
+#define IPinInfo_get_Name(p,a1) ICOM_CALL1(get_Name,p,a1)
+#define IPinInfo_get_Direction(p,a1) ICOM_CALL1(get_Direction,p,a1)
+#define IPinInfo_get_PinID(p,a1) ICOM_CALL1(get_PinID,p,a1)
+#define IPinInfo_get_MediaTypes(p,a1) ICOM_CALL1(get_MediaTypes,p,a1)
+#define IPinInfo_Connect(p,a1) ICOM_CALL1(Connect,p,a1)
+#define IPinInfo_ConnectDirect(p,a1) ICOM_CALL1(ConnectDirect,p,a1)
+#define IPinInfo_ConnectWithType(p,a1,a2) ICOM_CALL2(ConnectWithType,p,a1,a2)
+#define IPinInfo_Disconnect(p) ICOM_CALL (Disconnect,p)
+#define IPinInfo_Render(p) ICOM_CALL (Render,p)
+
+/**************************************************************************
+ *
+ * IQueueCommand interface
+ *
+ */
+
+#define ICOM_INTERFACE IQueueCommand
+#define IQueueCommand_METHODS \
+    ICOM_METHOD9(HRESULT,InvokeAtStreamTime,IDeferredCommand**,a1,REFTIME,a2,GUID*,a3,long,a4,short,a5,long,a6,VARIANT*,a7,VARIANT*,a8,short*,a9) \
+    ICOM_METHOD9(HRESULT,InvokeAtPresentationTime,IDeferredCommand**,a1,REFTIME,a2,GUID*,a3,long,a4,short,a5,long,a6,VARIANT*,a7,VARIANT*,a8,short*,a9)
+
+#define IQueueCommand_IMETHODS \
+    IUnknown_IMETHODS \
+    IQueueCommand_METHODS
+
+ICOM_DEFINE(IQueueCommand,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IQueueCommand_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IQueueCommand_AddRef(p) ICOM_CALL (AddRef,p)
+#define IQueueCommand_Release(p) ICOM_CALL (Release,p)
+    /*** IQueueCommand methods ***/
+#define IQueueCommand_InvokeAtStreamTime(p,a1,a2,a3,a4,a5,a6,a7,a8,a9) ICOM_CALL9(InvokeAtStreamTime,p,a1,a2,a3,a4,a5,a6,a7,a8,a9)
+#define IQueueCommand_InvokeAtPresentationTime(p,a1,a2,a3,a4,a5,a6,a7,a8,a9) ICOM_CALL9(InvokeAtPresentationTime,p,a1,a2,a3,a4,a5,a6,a7,a8,a9)
+
+/**************************************************************************
+ *
+ * IRegFilterInfo interface
+ *
+ */
+
+#define ICOM_INTERFACE IRegFilterInfo
+#define IRegFilterInfo_METHODS \
+    ICOM_METHOD1(HRESULT,get_Name,BSTR*,a1) \
+    ICOM_METHOD1(HRESULT,Filter,IDispatch**,a1)
+
+#define IRegFilterInfo_IMETHODS \
+    IDispatch_IMETHODS \
+    IRegFilterInfo_METHODS
+
+ICOM_DEFINE(IRegFilterInfo,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IRegFilterInfo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IRegFilterInfo_AddRef(p) ICOM_CALL (AddRef,p)
+#define IRegFilterInfo_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IRegFilterInfo_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IRegFilterInfo_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IRegFilterInfo_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IRegFilterInfo_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IRegFilterInfo methods ***/
+#define IRegFilterInfo_get_Name(p,a1) ICOM_CALL1(get_Name,p,a1)
+#define IRegFilterInfo_Filter(p,a1) ICOM_CALL1(Filter,p,a1)
+
+/**************************************************************************
+ *
+ * IVideoWindow interface
+ *
+ */
+
+#define ICOM_INTERFACE IVideoWindow
+#define IVideoWindow_METHODS \
+    ICOM_METHOD1(HRESULT,put_Caption,BSTR,a1) \
+    ICOM_METHOD1(HRESULT,get_Caption,BSTR*,a1) \
+    ICOM_METHOD1(HRESULT,put_WindowStyle,long,a1) \
+    ICOM_METHOD1(HRESULT,get_WindowStyle,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_WindowStyleEx,long,a1) \
+    ICOM_METHOD1(HRESULT,get_WindowStyleEx,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_AutoShow,long,a1) \
+    ICOM_METHOD1(HRESULT,get_AutoShow,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_WindowState,long,a1) \
+    ICOM_METHOD1(HRESULT,get_WindowState,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_BackgroundPalette,long,a1) \
+    ICOM_METHOD1(HRESULT,get_BackgroundPalette,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_Visible,long,a1) \
+    ICOM_METHOD1(HRESULT,get_Visible,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_Left,long,a1) \
+    ICOM_METHOD1(HRESULT,get_Left,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_Width,long,a1) \
+    ICOM_METHOD1(HRESULT,get_Width,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_Top,long,a1) \
+    ICOM_METHOD1(HRESULT,get_Top,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_Height,long,a1) \
+    ICOM_METHOD1(HRESULT,get_Height,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_Owner,OAHWND,a1) \
+    ICOM_METHOD1(HRESULT,get_Owner,OAHWND*,a1) \
+    ICOM_METHOD1(HRESULT,put_MessageDrain,OAHWND,a1) \
+    ICOM_METHOD1(HRESULT,get_MessageDrain,OAHWND*,a1) \
+    ICOM_METHOD1(HRESULT,get_BorderColor,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_BorderColor,long,a1) \
+    ICOM_METHOD1(HRESULT,get_FullScreenMode,long*,a1) \
+    ICOM_METHOD1(HRESULT,put_FullScreenMode,long,a1) \
+    ICOM_METHOD1(HRESULT,SetWindowForeground,long,a1) \
+    ICOM_METHOD4(HRESULT,NotifyOwnerMessage,OAHWND,a1,long,a2,LONG_PTR,a3,LONG_PTR,a4) \
+    ICOM_METHOD4(HRESULT,SetWindowPosition,long,a1,long,a2,long,a3,long,a4) \
+    ICOM_METHOD4(HRESULT,GetWindowPosition,long*,a1,long*,a2,long*,a3,long*,a4) \
+    ICOM_METHOD2(HRESULT,GetMinIdealImageSize,long*,a1,long*,a2) \
+    ICOM_METHOD2(HRESULT,GetMaxIdealImageSize,long*,a1,long*,a2) \
+    ICOM_METHOD4(HRESULT,GetRestorePosition,long*,a1,long*,a2,long*,a3,long*,a4) \
+    ICOM_METHOD1(HRESULT,HideCursor,long,a1) \
+    ICOM_METHOD1(HRESULT,IsCursorHidden,long*,a1)
+
+#define IVideoWindow_IMETHODS \
+    IDispatch_IMETHODS \
+    IVideoWindow_METHODS
+
+ICOM_DEFINE(IVideoWindow,IDispatch)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IVideoWindow_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IVideoWindow_AddRef(p) ICOM_CALL (AddRef,p)
+#define IVideoWindow_Release(p) ICOM_CALL (Release,p)
+    /*** IDispatch methods ***/
+#define IVideoWindow_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
+#define IVideoWindow_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
+#define IVideoWindow_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
+#define IVideoWindow_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
+    /*** IVideoWindow methods ***/
+#define IVideoWindow_put_Caption(p,a1) ICOM_CALL1(put_Caption,p,a1)
+#define IVideoWindow_get_Caption(p,a1) ICOM_CALL1(get_Caption,p,a1)
+#define IVideoWindow_put_WindowStyle(p,a1) ICOM_CALL1(put_WindowStyle,p,a1)
+#define IVideoWindow_get_WindowStyle(p,a1) ICOM_CALL1(get_WindowStyle,p,a1)
+#define IVideoWindow_put_WindowStyleEx(p,a1) ICOM_CALL1(put_WindowStyleEx,p,a1)
+#define IVideoWindow_get_WindowStyleEx(p,a1) ICOM_CALL1(get_WindowStyleEx,p,a1)
+#define IVideoWindow_put_AutoShow(p,a1) ICOM_CALL1(put_AutoShow,p,a1)
+#define IVideoWindow_get_AutoShow(p,a1) ICOM_CALL1(get_AutoShow,p,a1)
+#define IVideoWindow_put_WindowState(p,a1) ICOM_CALL1(put_WindowState,p,a1)
+#define IVideoWindow_get_WindowState(p,a1) ICOM_CALL1(get_WindowState,p,a1)
+#define IVideoWindow_put_BackgroundPalette(p,a1) ICOM_CALL1(put_BackgroundPalette,p,a1)
+#define IVideoWindow_get_BackgroundPalette(p,a1) ICOM_CALL1(get_BackgroundPalette,p,a1)
+#define IVideoWindow_put_Visible(p,a1) ICOM_CALL1(put_Visible,p,a1)
+#define IVideoWindow_get_Visible(p,a1) ICOM_CALL1(get_Visible,p,a1)
+#define IVideoWindow_put_Left(p,a1) ICOM_CALL1(put_Left,p,a1)
+#define IVideoWindow_get_Left(p,a1) ICOM_CALL1(get_Left,p,a1)
+#define IVideoWindow_put_Width(p,a1) ICOM_CALL1(put_Width,p,a1)
+#define IVideoWindow_get_Width(p,a1) ICOM_CALL1(get_Width,p,a1)
+#define IVideoWindow_put_Top(p,a1) ICOM_CALL1(put_Top,p,a1)
+#define IVideoWindow_get_Top(p,a1) ICOM_CALL1(get_Top,p,a1)
+#define IVideoWindow_put_Height(p,a1) ICOM_CALL1(put_Height,p,a1)
+#define IVideoWindow_get_Height(p,a1) ICOM_CALL1(get_Height,p,a1)
+#define IVideoWindow_put_Owner(p,a1) ICOM_CALL1(put_Owner,p,a1)
+#define IVideoWindow_get_Owner(p,a1) ICOM_CALL1(get_Owner,p,a1)
+#define IVideoWindow_put_MessageDrain(p,a1) ICOM_CALL1(put_MessageDrain,p,a1)
+#define IVideoWindow_get_MessageDrain(p,a1) ICOM_CALL1(get_MessageDrain,p,a1)
+#define IVideoWindow_get_BorderColor(p,a1) ICOM_CALL1(get_BorderColor,p,a1)
+#define IVideoWindow_put_BorderColor(p,a1) ICOM_CALL1(put_BorderColor,p,a1)
+#define IVideoWindow_get_FullScreenMode(p,a1) ICOM_CALL1(get_FullScreenMode,p,a1)
+#define IVideoWindow_put_FullScreenMode(p,a1) ICOM_CALL1(put_FullScreenMode,p,a1)
+#define IVideoWindow_SetWindowForeground(p,a1) ICOM_CALL1(SetWindowForeground,p,a1)
+#define IVideoWindow_NotifyOwnerMessage(p,a1,a2,a3,a4) ICOM_CALL4(NotifyOwnerMessage,p,a1,a2,a3,a4)
+#define IVideoWindow_SetWindowPosition(p,a1,a2,a3,a4) ICOM_CALL4(SetWindowPosition,p,a1,a2,a3,a4)
+#define IVideoWindow_GetWindowPosition(p,a1,a2,a3,a4) ICOM_CALL4(GetWindowPosition,p,a1,a2,a3,a4)
+#define IVideoWindow_GetMinIdealImageSize(p,a1,a2) ICOM_CALL2(GetMinIdealImageSize,p,a1,a2)
+#define IVideoWindow_GetMaxIdealImageSize(p,a1,a2) ICOM_CALL2(GetMaxIdealImageSize,p,a1,a2)
+#define IVideoWindow_GetRestorePosition(p,a1,a2,a3,a4) ICOM_CALL4(GetRestorePosition,p,a1,a2,a3,a4)
+#define IVideoWindow_HideCursor(p,a1) ICOM_CALL1(HideCursor,p,a1)
+#define IVideoWindow_IsCursorHidden(p,a1) ICOM_CALL1(IsCursorHidden,p,a1)
+
+#endif  /* __WINE_CONTROL_H_ */
diff --git a/include/strmif.h b/include/strmif.h
new file mode 100644
index 0000000..6ebf0ff
--- /dev/null
+++ b/include/strmif.h
@@ -0,0 +1,771 @@
+#ifndef __WINE_STRMIF_H_
+#define __WINE_STRMIF_H_
+
+#include "ole2.h"
+
+/* FIXME - far from complete. */
+
+/* forward decls. */
+
+typedef struct IAMAnalogVideoDecoder IAMAnalogVideoDecoder;
+typedef struct IAMAnalogVideoEncoder IAMAnalogVideoEncoder;
+typedef struct IAMAudioInputMixer IAMAudioInputMixer;
+typedef struct IAMAudioRendererStats IAMAudioRendererStats;
+typedef struct IAMBufferNegotiation IAMBufferNegotiation;
+typedef struct IAMCameraControl IAMCameraControl;
+typedef struct IAMClockAdjust IAMClockAdjust;
+typedef struct IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress;
+typedef struct IAMCrossbar IAMCrossbar;
+typedef struct IAMDeviceRemoval IAMDeviceRemoval;
+typedef struct IAMDevMemoryAllocator IAMDevMemoryAllocator;
+typedef struct IAMDevMemoryControl IAMDevMemoryControl;
+typedef struct IAMDroppedFrames IAMDroppedFrames;
+typedef struct IAMExtDevice IAMExtDevice;
+typedef struct IAMExtTransport IAMExtTransport;
+typedef struct IAMFilterMiscFlags IAMFilterMiscFlags;
+typedef struct IAMGraphStreams IAMGraphStreams;
+typedef struct IAMLatency IAMLatency;
+typedef struct IAMOpenProgress IAMOpenProgress;
+typedef struct IAMOverlayFX IAMOverlayFX;
+typedef struct IAMovie IAMovie;
+typedef struct IAMovieSetup IAMovieSetup;
+typedef struct IAMPhysicalPinInfo IAMPhysicalPinInfo;
+typedef struct IAMPushSource IAMPushSource;
+typedef struct IAMResourceControl IAMResourceControl;
+typedef struct IAMStreamConfig IAMStreamConfig;
+typedef struct IAMStreamControl IAMStreamControl;
+typedef struct IAMStreamSelect IAMStreamSelect;
+typedef struct IAMTimecodeDisplay IAMTimecodeDisplay;
+typedef struct IAMTimecodeGenerator IAMTimecodeGenerator;
+typedef struct IAMTimecodeReader IAMTimecodeReader;
+typedef struct IAMTuner IAMTuner;
+typedef struct IAMTunerNotification IAMTunerNotification;
+typedef struct IAMTVAudio IAMTVAudio;
+typedef struct IAMTVAudioNotification IAMTVAudioNotification;
+typedef struct IAMTVTuner IAMTVTuner;
+typedef struct IAMVfwCaptureDialogs IAMVfwCaptureDialogs;
+typedef struct IAMVfwCompressDialogs IAMVfwCompressDialogs;
+typedef struct IAMVideoCompression IAMVideoCompression;
+typedef struct IAMVideoControl IAMVideoControl;
+typedef struct IAMVideoDecimationProperties IAMVideoDecimationProperties;
+typedef struct IAMVideoProcAmp IAMVideoProcAmp;
+typedef struct IAsyncReader IAsyncReader;
+typedef struct IMediaFilter IMediaFilter;
+typedef struct IBaseFilter IBaseFilter;
+typedef struct IBPCSatelliteTuner IBPCSatelliteTuner;
+typedef struct ICaptureGraphBuilder ICaptureGraphBuilder;
+typedef struct ICaptureGraphBuilder2 ICaptureGraphBuilder2;
+typedef struct IConfigAviMux IConfigAviMux;
+typedef struct IConfigInterleaving IConfigInterleaving;
+typedef struct ICreateDevEnum ICreateDevEnum;
+typedef struct IDDrawExclModeVideo IDDrawExclModeVideo;
+typedef struct IDDrawExclModeVideoCallback IDDrawExclModeVideoCallback;
+typedef struct IDecimateVideoImage IDecimateVideoImage;
+typedef struct IDistributorNotify IDistributorNotify;
+typedef struct IDrawVideoImage IDrawVideoImage;
+typedef struct IDvdCmd IDvdCmd;
+typedef struct IDvdControl IDvdControl;
+typedef struct IDvdControl2 IDvdControl2;
+typedef struct IDvdGraphBuilder IDvdGraphBuilder;
+typedef struct IDvdInfo IDvdInfo;
+typedef struct IDvdInfo2 IDvdInfo2;
+typedef struct IDvdState IDvdState;
+typedef struct IDVEnc IDVEnc;
+typedef struct IDVSplitter IDVSplitter;
+typedef struct IEnumFilters IEnumFilters;
+typedef struct IEnumMediaTypes IEnumMediaTypes;
+typedef struct IEnumPins IEnumPins;
+typedef struct IEnumRegFilters IEnumRegFilters;
+typedef struct IEnumStreamIdMap IEnumStreamIdMap;
+typedef struct IFileSinkFilter IFileSinkFilter;
+typedef struct IFileSinkFilter2 IFileSinkFilter2;
+typedef struct IFileSourceFilter IFileSourceFilter;
+typedef struct IFilterChain IFilterChain;
+typedef struct IFilterGraph IFilterGraph;
+typedef struct IFilterGraph2 IFilterGraph2;
+typedef struct IFilterMapper IFilterMapper;
+typedef struct IFilterMapper2 IFilterMapper2;
+typedef struct IFilterMapper3 IFilterMapper3;
+typedef struct IGraphBuilder IGraphBuilder;
+typedef struct IGraphConfig IGraphConfig;
+typedef struct IGraphConfigCallback IGraphConfigCallback;
+typedef struct IGraphVersion IGraphVersion;
+typedef struct IIPDVDec IIPDVDec;
+typedef struct IMediaEventSink IMediaEventSink;
+typedef struct IMediaPropertyBag IMediaPropertyBag;
+typedef struct IMediaSample IMediaSample;
+typedef struct IMediaSample2 IMediaSample2;
+typedef struct IMediaSeeking IMediaSeeking;
+typedef struct IMemAllocator IMemAllocator;
+typedef struct IMemAllocatorCallbackTemp IMemAllocatorCallbackTemp;
+typedef struct IMemAllocatorNotifyCallbackTemp IMemAllocatorNotifyCallbackTemp;
+typedef struct IMemInputPin IMemInputPin;
+typedef struct IMpeg2Demultiplexer IMpeg2Demultiplexer;
+typedef struct IMPEG2StreamIdMap IMPEG2StreamIdMap;
+typedef struct IOverlay IOverlay;
+typedef struct IOverlayNotify IOverlayNotify;
+typedef struct IOverlayNotify2 IOverlayNotify2;
+typedef struct IPersistMediaPropertyBag IPersistMediaPropertyBag;
+typedef struct IPin IPin;
+typedef struct IPinConnection IPinConnection;
+typedef struct IPinFlowControl IPinFlowControl;
+typedef struct IQualityControl IQualityControl;
+typedef struct IReferenceClock IReferenceClock;
+typedef struct IReferenceClock2 IReferenceClock2;
+typedef struct IResourceConsumer IResourceConsumer;
+typedef struct IResourceManager IResourceManager;
+typedef struct ISeekingPassThru ISeekingPassThru;
+typedef struct IStreamBuilder IStreamBuilder;
+typedef struct IVideoFrameStep IVideoFrameStep;
+
+#ifndef __WINE_REFTIME_DEFINED_
+#define __WINE_REFTIME_DEFINED_
+typedef double REFTIME;
+#endif /* __WINE_REFTIME_DEFINED_ */
+
+typedef LONGLONG	REFERENCE_TIME;
+typedef DWORD_PTR	HSEMAPHORE;
+typedef DWORD_PTR	HEVENT;
+
+/* enums. */
+
+typedef enum
+{
+	PINDIR_INPUT = 0,
+	PINDIR_OUTPUT = 1,
+} PIN_DIRECTION;
+
+typedef enum
+{
+	State_Stopped = 0,
+	State_Paused = 1,
+	State_Running = 2,
+} FILTER_STATE;
+
+/* structs. */
+
+typedef struct
+{
+	GUID	majortype;
+	GUID	subtype;
+	BOOL	bFixedSizeSamples;
+	BOOL	bTemporalCompression;
+	ULONG	lSampleSize;
+	GUID	formattype;
+	IUnknown*	pUnk;
+	ULONG	cbFormat;
+	BYTE*	pbFormat;
+} AM_MEDIA_TYPE;
+
+typedef struct
+{
+	long	cBuffers;
+	long	cbBuffer;
+	long	cbAlign;
+	long	cbPrefix;
+} ALLOCATOR_PROPERTIES;
+
+typedef struct
+{
+	IBaseFilter*	pFilter;
+	PIN_DIRECTION	dir;
+	WCHAR		achName[ 128 ];
+} PIN_INFO;
+
+typedef struct
+{
+	WCHAR		achName[ 128 ];
+	IFilterGraph*	pGraph;
+} FILTER_INFO;
+
+typedef struct
+{
+	REFERENCE_TIME	tStart;
+	REFERENCE_TIME	tStop;
+	DWORD		dwStartCookie;
+	DWORD		dwStopCookie;
+	DWORD		dwFlags;
+} AM_STREAM_INFO;
+
+typedef struct tagCOLORKEY
+{
+	DWORD		KeyType;
+	DWORD		PaletteIndex;
+	COLORREF	LowColorValue;
+	COLORREF	HighColorValue;
+} COLORKEY;
+
+
+
+/* defines. */
+
+#define CHARS_IN_GUID	39
+#define MAX_PIN_NAME	128
+#define MAX_FILTER_NAME	128
+
+
+/* interfaces. */
+
+/**************************************************************************
+ *
+ * IMediaFilter interface
+ *
+ */
+
+#define ICOM_INTERFACE IMediaFilter
+#define IMediaFilter_METHODS \
+    ICOM_METHOD (HRESULT,Stop) \
+    ICOM_METHOD (HRESULT,Pause) \
+    ICOM_METHOD1(HRESULT,Run,REFERENCE_TIME,a1) \
+    ICOM_METHOD2(HRESULT,GetState,DWORD,a1,FILTER_STATE*,a2) \
+    ICOM_METHOD1(HRESULT,SetSyncSource,IReferenceClock*,a1) \
+    ICOM_METHOD1(HRESULT,GetSyncSource,IReferenceClock**,a1)
+
+#define IMediaFilter_IMETHODS \
+    IPersist_IMETHODS \
+    IMediaFilter_METHODS
+
+ICOM_DEFINE(IMediaFilter,IPersist)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMediaFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMediaFilter_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMediaFilter_Release(p) ICOM_CALL (Release,p)
+    /*** IPersist methods ***/
+#define IMediaFilter_GetClassID(p,a1) ICOM_CALL1(GetClassID,p,a1)
+    /*** IMediaFilter methods ***/
+#define IMediaFilter_Stop(p) ICOM_CALL (Stop,p)
+#define IMediaFilter_Pause(p) ICOM_CALL (Pause,p)
+#define IMediaFilter_Run(p,a1) ICOM_CALL1(Run,p,a1)
+#define IMediaFilter_GetState(p,a1,a2) ICOM_CALL2(GetState,p,a1,a2)
+#define IMediaFilter_SetSyncSource(p,a1) ICOM_CALL1(SetSyncSource,p,a1)
+#define IMediaFilter_GetSyncSource(p,a1) ICOM_CALL1(GetSyncSource,p,a1)
+
+/**************************************************************************
+ *
+ * IBaseFilter interface
+ *
+ */
+
+#define ICOM_INTERFACE IBaseFilter
+#define IBaseFilter_METHODS \
+    ICOM_METHOD1(HRESULT,EnumPins,IEnumPins**,a1) \
+    ICOM_METHOD2(HRESULT,FindPin,LPCWSTR,a1,IPin**,a2) \
+    ICOM_METHOD1(HRESULT,QueryFilterInfo,FILTER_INFO*,a1) \
+    ICOM_METHOD2(HRESULT,JoinFilterGraph,IFilterGraph*,a1,LPCWSTR,a2) \
+    ICOM_METHOD1(HRESULT,QueryVendorInfo,LPWSTR*,a1)
+
+#define IBaseFilter_IMETHODS \
+    IMediaFilter_IMETHODS \
+    IBaseFilter_METHODS
+
+ICOM_DEFINE(IBaseFilter,IMediaFilter)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IBaseFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IBaseFilter_AddRef(p) ICOM_CALL (AddRef,p)
+#define IBaseFilter_Release(p) ICOM_CALL (Release,p)
+    /*** IPersist methods ***/
+#define IBaseFilter_GetClassID(p,a1) ICOM_CALL1(GetClassID,p,a1)
+    /*** IMediaFilter methods ***/
+#define IBaseFilter_Stop(p,a1) ICOM_CALL1(Stop,p,a1)
+#define IBaseFilter_Pause(p,a1) ICOM_CALL1(Pause,p,a1)
+#define IBaseFilter_Run(p,a1) ICOM_CALL1(Run,p,a1)
+#define IBaseFilter_GetState(p,a1,a2) ICOM_CALL2(GetState,p,a1,a2)
+#define IBaseFilter_SetSyncSource(p,a1) ICOM_CALL1(SetSyncSource,p,a1)
+#define IBaseFilter_GetSyncSource(p,a1) ICOM_CALL1(GetSyncSource,p,a1)
+    /*** IBaseFilter methods ***/
+#define IBaseFilter_EnumPins(p,a1) ICOM_CALL1(EnumPins,p,a1)
+#define IBaseFilter_FindPin(p,a1,a2) ICOM_CALL2(FindPin,p,a1,a2)
+#define IBaseFilter_QueryFilterInfo(p,a1) ICOM_CALL1(QueryFilterInfo,p,a1)
+#define IBaseFilter_JoinFilterGraph(p,a1,a2) ICOM_CALL2(JoinFilterGraph,p,a1,a2)
+#define IBaseFilter_QueryVendorInfo(p,a1) ICOM_CALL1(QueryVendorInfo,p,a1)
+
+/**************************************************************************
+ *
+ * IEnumFilters interface
+ *
+ */
+
+#define ICOM_INTERFACE IEnumFilters
+#define IEnumFilters_METHODS \
+    ICOM_METHOD3(HRESULT,Next,ULONG,a1,IBaseFilter**,a2,ULONG*,a3) \
+    ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
+    ICOM_METHOD (HRESULT,Reset) \
+    ICOM_METHOD1(HRESULT,Clone,IEnumFilters**,a1)
+
+#define IEnumFilters_IMETHODS \
+    IUnknown_IMETHODS \
+    IEnumFilters_METHODS
+
+ICOM_DEFINE(IEnumFilters,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IEnumFilters_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IEnumFilters_AddRef(p) ICOM_CALL (AddRef,p)
+#define IEnumFilters_Release(p) ICOM_CALL (Release,p)
+    /*** IEnumFilters methods ***/
+#define IEnumFilters_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
+#define IEnumFilters_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
+#define IEnumFilters_Reset(p) ICOM_CALL (Reset,p)
+#define IEnumFilters_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
+
+/**************************************************************************
+ *
+ * IEnumMediaTypes interface
+ *
+ */
+
+#define ICOM_INTERFACE IEnumMediaTypes
+#define IEnumMediaTypes_METHODS \
+    ICOM_METHOD3(HRESULT,Next,ULONG,a1,AM_MEDIA_TYPE**,a2,ULONG*,a3) \
+    ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
+    ICOM_METHOD (HRESULT,Reset) \
+    ICOM_METHOD1(HRESULT,Clone,IEnumMediaTypes**,a1)
+
+#define IEnumMediaTypes_IMETHODS \
+    IUnknown_IMETHODS \
+    IEnumMediaTypes_METHODS
+
+ICOM_DEFINE(IEnumMediaTypes,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IEnumMediaTypes_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IEnumMediaTypes_AddRef(p) ICOM_CALL (AddRef,p)
+#define IEnumMediaTypes_Release(p) ICOM_CALL (Release,p)
+    /*** IEnumMediaTypes methods ***/
+#define IEnumMediaTypes_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
+#define IEnumMediaTypes_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
+#define IEnumMediaTypes_Reset(p) ICOM_CALL (Reset,p)
+#define IEnumMediaTypes_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
+
+/**************************************************************************
+ *
+ * IEnumPins interface
+ *
+ */
+
+#define ICOM_INTERFACE IEnumPins
+#define IEnumPins_METHODS \
+    ICOM_METHOD3(HRESULT,Next,ULONG,a1,IPin**,a2,ULONG*,a3) \
+    ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
+    ICOM_METHOD (HRESULT,Reset) \
+    ICOM_METHOD1(HRESULT,Clone,IEnumPins**,a1)
+
+#define IEnumPins_IMETHODS \
+    IUnknown_IMETHODS \
+    IEnumPins_METHODS
+
+ICOM_DEFINE(IEnumPins,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IEnumPins_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IEnumPins_AddRef(p) ICOM_CALL (AddRef,p)
+#define IEnumPins_Release(p) ICOM_CALL (Release,p)
+    /*** IEnumPins methods ***/
+#define IEnumPins_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
+#define IEnumPins_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
+#define IEnumPins_Reset(p) ICOM_CALL (Reset,p)
+#define IEnumPins_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
+
+/**************************************************************************
+ *
+ * IFileSourceFilter interface
+ *
+ */
+
+#define ICOM_INTERFACE IFileSourceFilter
+#define IFileSourceFilter_METHODS \
+    ICOM_METHOD2(HRESULT,Load,LPCOLESTR,a1,const AM_MEDIA_TYPE*,a2) \
+    ICOM_METHOD2(HRESULT,GetCurFile,LPOLESTR*,a1,AM_MEDIA_TYPE*,a2)
+
+#define IFileSourceFilter_IMETHODS \
+    IUnknown_IMETHODS \
+    IFileSourceFilter_METHODS
+
+ICOM_DEFINE(IFileSourceFilter,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IFileSourceFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IFileSourceFilter_AddRef(p) ICOM_CALL (AddRef,p)
+#define IFileSourceFilter_Release(p) ICOM_CALL (Release,p)
+    /*** IFileSourceFilter methods ***/
+#define IFileSourceFilter_Load(p,a1,a2) ICOM_CALL2(Load,p,a1,a2)
+#define IFileSourceFilter_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
+
+/**************************************************************************
+ *
+ * IFilterGraph interface
+ *
+ */
+
+#define ICOM_INTERFACE IFilterGraph
+#define IFilterGraph_METHODS \
+    ICOM_METHOD2(HRESULT,AddFilter,IBaseFilter*,a1,LPCWSTR,a2) \
+    ICOM_METHOD1(HRESULT,RemoveFilter,IBaseFilter*,a1) \
+    ICOM_METHOD1(HRESULT,EnumFilters,IEnumFilters**,a1) \
+    ICOM_METHOD2(HRESULT,FindFilterByName,LPCWSTR,a1,IBaseFilter**,a2) \
+    ICOM_METHOD3(HRESULT,ConnectDirect,IPin*,a1,IPin*,a2,const AM_MEDIA_TYPE*,a3) \
+    ICOM_METHOD1(HRESULT,Reconnect,IPin*,a1) \
+    ICOM_METHOD1(HRESULT,Disconnect,IPin*,a1) \
+    ICOM_METHOD (HRESULT,SetDefaultSyncSource)
+
+#define IFilterGraph_IMETHODS \
+    IUnknown_IMETHODS \
+    IFilterGraph_METHODS
+
+ICOM_DEFINE(IFilterGraph,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IFilterGraph_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IFilterGraph_AddRef(p) ICOM_CALL (AddRef,p)
+#define IFilterGraph_Release(p) ICOM_CALL (Release,p)
+    /*** IFilterGraph methods ***/
+#define IFilterGraph_AddFilter(p,a1,a2) ICOM_CALL2(AddFilter,p,a1,a2)
+#define IFilterGraph_RemoveFilter(p,a1) ICOM_CALL1(RemoveFilter,p,a1)
+#define IFilterGraph_EnumFilters(p,a1) ICOM_CALL1(EnumFilters,p,a1)
+#define IFilterGraph_FindFilterByName(p,a1,a2) ICOM_CALL2(FindFilterByName,p,a1,a2)
+#define IFilterGraph_ConnectDirect(p,a1,a2,a3) ICOM_CALL3(ConnectDirect,p,a1,a2,a3)
+#define IFilterGraph_Reconnect(p,a1) ICOM_CALL1(Reconnect,p,a1)
+#define IFilterGraph_Disconnect(p,a1) ICOM_CALL1(Disconnect,p,a1)
+#define IFilterGraph_SetDefaultSyncSource(p) ICOM_CALL (SetDefaultSyncSource,p)
+
+/**************************************************************************
+ *
+ * IMediaSample interface
+ *
+ */
+
+#define ICOM_INTERFACE IMediaSample
+#define IMediaSample_METHODS \
+    ICOM_METHOD1(HRESULT,GetPointer,BYTE**,a1) \
+    ICOM_METHOD (long,GetSize) \
+    ICOM_METHOD2(HRESULT,GetTime,REFERENCE_TIME*,a1,REFERENCE_TIME*,a2) \
+    ICOM_METHOD2(HRESULT,SetTime,REFERENCE_TIME*,a1,REFERENCE_TIME*,a2) \
+    ICOM_METHOD (HRESULT,IsSyncPoint) \
+    ICOM_METHOD1(HRESULT,SetSyncPoint,BOOL,a1) \
+    ICOM_METHOD (HRESULT,IsPreroll) \
+    ICOM_METHOD1(HRESULT,SetPreroll,BOOL,a1) \
+    ICOM_METHOD (long,GetActualDataLength) \
+    ICOM_METHOD1(HRESULT,SetActualDataLength,long,a1) \
+    ICOM_METHOD1(HRESULT,GetMediaType,AM_MEDIA_TYPE**,a1) \
+    ICOM_METHOD1(HRESULT,SetMediaType,AM_MEDIA_TYPE*,a1) \
+    ICOM_METHOD (HRESULT,IsDiscontinuity) \
+    ICOM_METHOD1(HRESULT,SetDiscontinuity,BOOL,a1) \
+    ICOM_METHOD2(HRESULT,GetMediaTime,LONGLONG*,a1,LONGLONG*,a2) \
+    ICOM_METHOD2(HRESULT,SetMediaTime,LONGLONG*,a1,LONGLONG*,a2)
+
+#define IMediaSample_IMETHODS \
+    IUnknown_IMETHODS \
+    IMediaSample_METHODS
+
+ICOM_DEFINE(IMediaSample,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMediaSample_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMediaSample_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMediaSample_Release(p) ICOM_CALL (Release,p)
+    /*** IMediaSample methods ***/
+#define IMediaSample_GetPointer(p,a1) ICOM_CALL1(GetPointer,p,a1)
+#define IMediaSample_GetSize(p) ICOM_CALL (GetSize,p)
+#define IMediaSample_GetTime(p,a1,a2) ICOM_CALL2(GetTime,p,a1,a2)
+#define IMediaSample_SetTime(p,a1,a2) ICOM_CALL2(SetTime,p,a1,a2)
+#define IMediaSample_IsSyncPoint(p) ICOM_CALL (IsSyncPoint,p)
+#define IMediaSample_SetSyncPoint(p,a1) ICOM_CALL1(SetSyncPoint,p,a1)
+#define IMediaSample_IsPreroll(p) ICOM_CALL (IsPreroll,p)
+#define IMediaSample_SetPreroll(p,a1) ICOM_CALL1(SetPreroll,p,a1)
+#define IMediaSample_GetActualDataLength(p,a1) ICOM_CALL1(GetActualDataLength,p,a1)
+#define IMediaSample_SetActualDataLength(p,a1) ICOM_CALL1(SetActualDataLength,p,a1)
+#define IMediaSample_GetMediaType(p,a1) ICOM_CALL1(GetMediaType,p,a1)
+#define IMediaSample_SetMediaType(p,a1) ICOM_CALL1(SetMediaType,p,a1)
+#define IMediaSample_IsDiscontinuity(p) ICOM_CALL (IsDiscontinuity,p)
+#define IMediaSample_SetDiscontinuity(p,a1) ICOM_CALL1(SetDiscontinuity,p,a1)
+#define IMediaSample_GetMediaTime(p,a1,a2) ICOM_CALL2(GetMediaTime,p,a1,a2)
+#define IMediaSample_SetMediaTime(p,a1,a2) ICOM_CALL2(SetMediaTime,p,a1,a2)
+
+/**************************************************************************
+ *
+ * IMediaSample2 interface
+ *
+ */
+
+#define ICOM_INTERFACE IMediaSample2
+#define IMediaSample2_METHODS \
+    ICOM_METHOD2(HRESULT,GetProperties,DWORD,a1,BYTE*,a2) \
+    ICOM_METHOD2(HRESULT,SetProperties,DWORD,a1,const BYTE*,a2)
+
+#define IMediaSample2_IMETHODS \
+    IMediaSample_IMETHODS \
+    IMediaSample2_METHODS
+
+ICOM_DEFINE(IMediaSample2,IMediaSample)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMediaSample2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMediaSample2_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMediaSample2_Release(p) ICOM_CALL (Release,p)
+    /*** IMediaSample methods ***/
+#define IMediaSample2_GetPointer(p,a1) ICOM_CALL1(GetPointer,p,a1)
+#define IMediaSample2_GetSize(p,a1) ICOM_CALL1(GetSize,p,a1)
+#define IMediaSample2_GetTime(p,a1,a2) ICOM_CALL2(GetTime,p,a1,a2)
+#define IMediaSample2_SetTime(p,a1,a2) ICOM_CALL2(SetTime,p,a1,a2)
+#define IMediaSample2_IsSyncPoint(p,a1) ICOM_CALL1(IsSyncPoint,p,a1)
+#define IMediaSample2_SetSyncPoint(p,a1) ICOM_CALL1(SetSyncPoint,p,a1)
+#define IMediaSample2_IsPreroll(p,a1) ICOM_CALL1(IsPreroll,p,a1)
+#define IMediaSample2_SetPreroll(p,a1) ICOM_CALL1(SetPreroll,p,a1)
+#define IMediaSample2_GetActualDataLength(p,a1) ICOM_CALL1(GetActualDataLength,p,a1)
+#define IMediaSample2_SetActualDataLength(p,a1) ICOM_CALL1(SetActualDataLength,p,a1)
+#define IMediaSample2_GetMediaType(p,a1) ICOM_CALL1(GetMediaType,p,a1)
+#define IMediaSample2_SetMediaType(p,a1) ICOM_CALL1(SetMediaType,p,a1)
+#define IMediaSample2_IsDiscontinuity(p,a1) ICOM_CALL1(IsDiscontinuity,p,a1)
+#define IMediaSample2_SetDiscontinuity(p,a1) ICOM_CALL1(SetDiscontinuity,p,a1)
+#define IMediaSample2_GetMediaTime(p,a1,a2) ICOM_CALL2(GetMediaTime,p,a1,a2)
+#define IMediaSample2_SetMediaTime(p,a1,a2) ICOM_CALL2(SetMediaTime,p,a1,a2)
+    /*** IMediaSample2 methods ***/
+#define IMediaSample2_GetProperties(p,a1,a2) ICOM_CALL2(GetProperties,p,a1,a2)
+#define IMediaSample2_SetProperties(p,a1,a2) ICOM_CALL2(SetProperties,p,a1,a2)
+
+/**************************************************************************
+ *
+ * IMemAllocator interface
+ *
+ */
+
+#define ICOM_INTERFACE IMemAllocator
+#define IMemAllocator_METHODS \
+    ICOM_METHOD2(HRESULT,SetProperties,ALLOCATOR_PROPERTIES*,a1,ALLOCATOR_PROPERTIES*,a2) \
+    ICOM_METHOD1(HRESULT,GetProperties,ALLOCATOR_PROPERTIES*,a1) \
+    ICOM_METHOD (HRESULT,Commit) \
+    ICOM_METHOD (HRESULT,Decommit) \
+    ICOM_METHOD4(HRESULT,GetBuffer,IMediaSample**,a1,REFERENCE_TIME*,a2,REFERENCE_TIME*,a3,DWORD,a4) \
+    ICOM_METHOD1(HRESULT,ReleaseBuffer,IMediaSample*,a1)
+
+#define IMemAllocator_IMETHODS \
+    IUnknown_IMETHODS \
+    IMemAllocator_METHODS
+
+ICOM_DEFINE(IMemAllocator,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMemAllocator_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMemAllocator_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMemAllocator_Release(p) ICOM_CALL (Release,p)
+    /*** IMemAllocator methods ***/
+#define IMemAllocator_SetProperties(p,a1,a2) ICOM_CALL2(SetProperties,p,a1,a2)
+#define IMemAllocator_GetProperties(p,a1) ICOM_CALL1(GetProperties,p,a1)
+#define IMemAllocator_Commit(p) ICOM_CALL (Commit,p)
+#define IMemAllocator_Decommit(p) ICOM_CALL (Decommit,p)
+#define IMemAllocator_GetBuffer(p,a1,a2,a3,a4) ICOM_CALL4(GetBuffer,p,a1,a2,a3,a4)
+#define IMemAllocator_ReleaseBuffer(p,a1) ICOM_CALL1(ReleaseBuffer,p,a1)
+
+/**************************************************************************
+ *
+ * IMemAllocatorCallbackTemp interface
+ *
+ */
+
+#define ICOM_INTERFACE IMemAllocatorCallbackTemp
+#define IMemAllocatorCallbackTemp_METHODS \
+    ICOM_METHOD1(HRESULT,SetNotify,IMemAllocatorNotifyCallbackTemp*,a1) \
+    ICOM_METHOD1(HRESULT,GetFreeCount,LONG*,a1)
+
+#define IMemAllocatorCallbackTemp_IMETHODS \
+    IMemAllocator_IMETHODS \
+    IMemAllocatorCallbackTemp_METHODS
+
+ICOM_DEFINE(IMemAllocatorCallbackTemp,IMemAllocator)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMemAllocatorCallbackTemp_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMemAllocatorCallbackTemp_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMemAllocatorCallbackTemp_Release(p) ICOM_CALL (Release,p)
+    /*** IMemAllocator methods ***/
+#define IMemAllocatorCallbackTemp_SetProperties(p,a1,a2) ICOM_CALL2(SetProperties,p,a1,a2)
+#define IMemAllocatorCallbackTemp_GetProperties(p,a1) ICOM_CALL1(GetProperties,p,a1)
+#define IMemAllocatorCallbackTemp_Commit(p,a1) ICOM_CALL1(Commit,p,a1)
+#define IMemAllocatorCallbackTemp_Decommit(p,a1) ICOM_CALL1(Decommit,p,a1)
+#define IMemAllocatorCallbackTemp_GetBuffer(p,a1,a2,a3,a4) ICOM_CALL4(GetBuffer,p,a1,a2,a3,a4)
+#define IMemAllocatorCallbackTemp_ReleaseBuffer(p,a1) ICOM_CALL1(ReleaseBuffer,p,a1)
+    /*** IMemAllocatorCallbackTemp methods ***/
+#define IMemAllocatorCallbackTemp_SetNotify(p,a1) ICOM_CALL1(SetNotify,p,a1)
+#define IMemAllocatorCallbackTemp_GetFreeCount(p,a1) ICOM_CALL1(GetFreeCount,p,a1)
+
+/**************************************************************************
+ *
+ * IMemAllocatorNotifyCallbackTemp interface
+ *
+ */
+
+#define ICOM_INTERFACE IMemAllocatorNotifyCallbackTemp
+#define IMemAllocatorNotifyCallbackTemp_METHODS \
+    ICOM_METHOD (HRESULT,NotifyRelease)
+
+#define IMemAllocatorNotifyCallbackTemp_IMETHODS \
+    IUnknown_IMETHODS \
+    IMemAllocatorNotifyCallbackTemp_METHODS
+
+ICOM_DEFINE(IMemAllocatorNotifyCallbackTemp,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMemAllocatorNotifyCallbackTemp_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMemAllocatorNotifyCallbackTemp_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMemAllocatorNotifyCallbackTemp_Release(p) ICOM_CALL (Release,p)
+    /*** IMemAllocatorNotifyCallbackTemp methods ***/
+#define IMemAllocatorNotifyCallbackTemp_NotifyRelease(p) ICOM_CALL (NotifyRelease,p)
+
+/**************************************************************************
+ *
+ * IMemInputPin interface
+ *
+ */
+
+#define ICOM_INTERFACE IMemInputPin
+#define IMemInputPin_METHODS \
+    ICOM_METHOD1(HRESULT,GetAllocator,IMemAllocator**,a1) \
+    ICOM_METHOD2(HRESULT,NotifyAllocator,IMemAllocator*,a1,BOOL,a2) \
+    ICOM_METHOD1(HRESULT,GetAllocatorRequirements,ALLOCATOR_PROPERTIES*,a1) \
+    ICOM_METHOD1(HRESULT,Receive,IMediaSample*,a1) \
+    ICOM_METHOD3(HRESULT,ReceiveMultiple,IMediaSample**,a1,long,a2,long*,a3) \
+    ICOM_METHOD (HRESULT,ReceiveCanBlock)
+
+#define IMemInputPin_IMETHODS \
+    IUnknown_IMETHODS \
+    IMemInputPin_METHODS
+
+ICOM_DEFINE(IMemInputPin,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IMemInputPin_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IMemInputPin_AddRef(p) ICOM_CALL (AddRef,p)
+#define IMemInputPin_Release(p) ICOM_CALL (Release,p)
+    /*** IMemInputPin methods ***/
+#define IMemInputPin_GetAllocator(p,a1) ICOM_CALL1(GetAllocator,p,a1)
+#define IMemInputPin_NotifyAllocator(p,a1,a2) ICOM_CALL2(NotifyAllocator,p,a1,a2)
+#define IMemInputPin_GetAllocatorRequirements(p,a1) ICOM_CALL1(GetAllocatorRequirements,p,a1)
+#define IMemInputPin_Receive(p,a1) ICOM_CALL1(Receive,p,a1)
+#define IMemInputPin_ReceiveMultiple(p,a1,a2,a3) ICOM_CALL3(ReceiveMultiple,p,a1,a2,a3)
+#define IMemInputPin_ReceiveCanBlock(p) ICOM_CALL (ReceiveCanBlock,p)
+
+/**************************************************************************
+ *
+ * IPin interface
+ *
+ */
+
+#define ICOM_INTERFACE IPin
+#define IPin_METHODS \
+    ICOM_METHOD2(HRESULT,Connect,IPin*,a1,const AM_MEDIA_TYPE*,a2) \
+    ICOM_METHOD2(HRESULT,ReceiveConnection,IPin*,a1,const AM_MEDIA_TYPE*,a2) \
+    ICOM_METHOD (HRESULT,Disconnect) \
+    ICOM_METHOD1(HRESULT,ConnectedTo,IPin**,a1) \
+    ICOM_METHOD1(HRESULT,ConnectionMediaType,AM_MEDIA_TYPE*,a1) \
+    ICOM_METHOD1(HRESULT,QueryPinInfo,PIN_INFO*,a1) \
+    ICOM_METHOD1(HRESULT,QueryDirection,PIN_DIRECTION*,a1) \
+    ICOM_METHOD1(HRESULT,QueryId,LPWSTR*,a1) \
+    ICOM_METHOD1(HRESULT,QueryAccept,const AM_MEDIA_TYPE*,a1) \
+    ICOM_METHOD1(HRESULT,EnumMediaTypes,IEnumMediaTypes**,a1) \
+    ICOM_METHOD2(HRESULT,QueryInternalConnections,IPin**,a1,ULONG*,a2) \
+    ICOM_METHOD (HRESULT,EndOfStream) \
+    ICOM_METHOD (HRESULT,BeginFlush) \
+    ICOM_METHOD (HRESULT,EndFlush) \
+    ICOM_METHOD3(HRESULT,NewSegment,REFERENCE_TIME,a1,REFERENCE_TIME,a2,double,a3)
+
+#define IPin_IMETHODS \
+    IUnknown_IMETHODS \
+    IPin_METHODS
+
+ICOM_DEFINE(IPin,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IPin_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IPin_AddRef(p) ICOM_CALL (AddRef,p)
+#define IPin_Release(p) ICOM_CALL (Release,p)
+    /*** IPin methods ***/
+#define IPin_Connect(p,a1,a2) ICOM_CALL2(Connect,p,a1,a2)
+#define IPin_ReceiveConnection(p,a1,a2) ICOM_CALL2(ReceiveConnection,p,a1,a2)
+#define IPin_Disconnect(p) ICOM_CALL (Disconnect,p)
+#define IPin_ConnectedTo(p,a1) ICOM_CALL1(ConnectedTo,p,a1)
+#define IPin_ConnectionMediaType(p,a1) ICOM_CALL1(ConnectionMediaType,p,a1)
+#define IPin_QueryPinInfo(p,a1) ICOM_CALL1(QueryPinInfo,p,a1)
+#define IPin_QueryDirection(p,a1) ICOM_CALL1(QueryDirection,p,a1)
+#define IPin_QueryId(p,a1) ICOM_CALL1(QueryId,p,a1)
+#define IPin_QueryAccept(p,a1) ICOM_CALL1(QueryAccept,p,a1)
+#define IPin_EnumMediaTypes(p,a1) ICOM_CALL1(EnumMediaTypes,p,a1)
+#define IPin_QueryInternalConnections(p,a1,a2) ICOM_CALL2(QueryInternalConnections,p,a1,a2)
+#define IPin_EndOfStream(p) ICOM_CALL (EndOfStream,p)
+#define IPin_BeginFlush(p) ICOM_CALL (BeginFlush,p)
+#define IPin_EndFlush(p) ICOM_CALL (EndFlush,p)
+#define IPin_NewSegment(p,a1,a2,a3) ICOM_CALL3(NewSegment,p,a1,a2,a3)
+
+/**************************************************************************
+ *
+ * IReferenceClock interface
+ *
+ */
+
+#define ICOM_INTERFACE IReferenceClock
+#define IReferenceClock_METHODS \
+    ICOM_METHOD1(HRESULT,GetTime,REFERENCE_TIME*,a1) \
+    ICOM_METHOD4(HRESULT,AdviseTime,REFERENCE_TIME,a1,REFERENCE_TIME,a2,HEVENT,a3,DWORD_PTR*,a4) \
+    ICOM_METHOD4(HRESULT,AdvisePeriodic,REFERENCE_TIME,a1,REFERENCE_TIME,a2,HSEMAPHORE,a3,DWORD_PTR*,a4) \
+    ICOM_METHOD1(HRESULT,Unadvise,DWORD_PTR,a1)
+
+#define IReferenceClock_IMETHODS \
+    IUnknown_IMETHODS \
+    IReferenceClock_METHODS
+
+ICOM_DEFINE(IReferenceClock,IUnknown)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IReferenceClock_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IReferenceClock_AddRef(p) ICOM_CALL (AddRef,p)
+#define IReferenceClock_Release(p) ICOM_CALL (Release,p)
+    /*** IReferenceClock methods ***/
+#define IReferenceClock_GetTime(p,a1) ICOM_CALL1(GetTime,p,a1)
+#define IReferenceClock_AdviseTime(p,a1,a2,a3,a4) ICOM_CALL4(AdviseTime,p,a1,a2,a3,a4)
+#define IReferenceClock_AdvisePeriodic(p,a1,a2,a3,a4) ICOM_CALL4(AdvisePeriodic,p,a1,a2,a3,a4)
+#define IReferenceClock_Unadvise(p,a1) ICOM_CALL1(Unadvise,p,a1)
+
+/**************************************************************************
+ *
+ * IReferenceClock2 interface
+ *
+ */
+
+#define ICOM_INTERFACE IReferenceClock2
+#define IReferenceClock2_METHODS
+
+#define IReferenceClock2_IMETHODS \
+    IReferenceClock_IMETHODS \
+    IReferenceClock2_METHODS
+
+ICOM_DEFINE(IReferenceClock2,IReferenceClock)
+#undef ICOM_INTERFACE
+
+    /*** IUnknown methods ***/
+#define IReferenceClock2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
+#define IReferenceClock2_AddRef(p) ICOM_CALL (AddRef,p)
+#define IReferenceClock2_Release(p) ICOM_CALL (Release,p)
+    /*** IReferenceClock methods ***/
+#define IReferenceClock2_GetTime(p,a1) ICOM_CALL1(GetTime,p,a1)
+#define IReferenceClock2_AdviseTime(p,a1,a2,a3,a4) ICOM_CALL4(AdviseTime,p,a1,a2,a3,a4)
+#define IReferenceClock2_AdvisePeriodic(p,a1,a2,a3,a4) ICOM_CALL4(AdvisePeriodic,p,a1,a2,a3,a4)
+#define IReferenceClock2_Unadvise(p,a1) ICOM_CALL1(Unadvise,p,a1)
+    /*** IReferenceClock2 methods ***/
+
+#endif  /* __WINE_STRMIF_H_ */