diff --git a/mingw-w64-headers/include/axextend.idl b/mingw-w64-headers/include/axextend.idl
index 79e8369..6981b97 100644
--- a/mingw-w64-headers/include/axextend.idl
+++ b/mingw-w64-headers/include/axextend.idl
@@ -188,7 +188,7 @@
          [in]  CLSID clsInMaj,
          [in]  CLSID clsInSub,
          [in]  BOOL  bRender,
-         [in]  BOOL  bOututNeeded,
+         [in]  BOOL  bOutputNeeded,
          [in]  CLSID clsOutMaj,
          [in]  CLSID clsOutSub
        );
@@ -1163,6 +1163,12 @@
 cpp_quote("#define KSPROPERTY_SUPPORT_GET  1")
 cpp_quote("#define KSPROPERTY_SUPPORT_SET  2")
 
+typedef enum AMPROPERTY_PIN
+{
+    AMPROPERTY_PIN_CATEGORY,
+    AMPROPERTY_PIN_MEDIUM,
+} AMPROPERTY_PIN;
+
 [
     object,
     uuid(31efac30-515c-11d0-a9aa-00aa0061be93),
@@ -1256,7 +1262,7 @@
 interface IAMFilterMiscFlags : IUnknown
 {
     ULONG GetMiscFlags();
-};
+}
 
 [
     local,
@@ -1271,7 +1277,7 @@
 
     HRESULT CreatedFilter(
         [in] IBaseFilter *pFil);
-};
+}
 
 [
     local,
@@ -1291,7 +1297,215 @@
             [in] int msg,
             [in] long data1,
             [in] long data2);
-};
+}
+
+[
+    local,
+    object,
+    uuid(c6e13370-30ac-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMCameraControl : IUnknown
+{
+    HRESULT GetRange([in] long property, [out] long *min, [out] long *max,
+        [out] long *stepping_delta, [out] long *default_value, [out] long *flags);
+    HRESULT Set([in] long property, [in] long property_value, [in] long flags);
+    HRESULT Get([in] long property, [out] long *property_value, [out] long *flags);
+}
+
+[
+    local,
+    object,
+    uuid(6a2e0670-28e4-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMVideoControl : IUnknown
+{
+    HRESULT GetCaps([in] IPin *pin, [out] long *flags);
+    HRESULT SetMode([in] IPin *pin, long mode);
+    HRESULT GetMode([in] IPin *pin, [out] long *mode);
+    HRESULT GetCurrentActualFrameRate([in] IPin *pin, [out] LONGLONG *frame_rate);
+    HRESULT GetMaxAvailableFrameRate([in] IPin *pin, [in] long index,
+            [in] SIZE dimensions, [out] LONGLONG *frame_rate);
+    HRESULT GetFrameRateList([in] IPin *pin, [in] long index, [in] SIZE dimensions,
+            [out] long *list_size, [out] LONGLONG **frame_rate);
+}
+
+[
+    local,
+    object,
+    uuid(56ed71a0-af5f-11d0-b3f0-00aa003761c5),
+    pointer_default(unique)
+]
+interface IAMBufferNegotiation : IUnknown
+{
+    HRESULT SuggestAllocatorProperties([in] const ALLOCATOR_PROPERTIES *prop);
+    HRESULT GetAllocatorProperties([out] ALLOCATOR_PROPERTIES *prop);
+}
+
+[
+    local,
+    object,
+    uuid(c6e13344-30ac-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMDroppedFrames : IUnknown
+{
+    HRESULT GetNumDropped([out] long *number);
+    HRESULT GetNumNotDropped([out] long *number);
+    HRESULT GetDroppedInfo([in] long size, [out] long *array, [out] long *copied);
+    HRESULT GetAverageFrameSize([out] long *size);
+}
+
+[
+    local,
+    object,
+    uuid(62ea93ba-ec62-11d2-b770-00c04fb6bd3d),
+    pointer_default(unique)
+]
+interface IAMLatency : IUnknown
+{
+    HRESULT GetLatency([in, out] REFERENCE_TIME *latency);
+}
+
+[
+    local,
+    object,
+    uuid(f185fe76-e64e-11d2-b76e-00c04fb6bd3d),
+    pointer_default(unique)
+]
+interface IAMPushSource : IAMLatency
+{
+    HRESULT GetPushSourceFlags([out] ULONG *flags);
+    HRESULT SetPushSourceFlags([in] ULONG flags);
+    HRESULT SetStreamOffset([in] REFERENCE_TIME offset);
+    HRESULT GetStreamOffset([out] REFERENCE_TIME *offset);
+    HRESULT GetMaxStreamOffset([out] REFERENCE_TIME *offset);
+    HRESULT SetMaxStreamOffset([in] REFERENCE_TIME offset);
+}
+
+[
+    local,
+    object,
+    uuid(c6e13343-30ac-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMVideoCompression : IUnknown
+{
+    HRESULT put_KeyFrameRate([in] long frame_rate);
+    HRESULT get_KeyFrameRate([out] long *frame_rate);
+    HRESULT put_PFramesPerKeyFrame([in] long frame);
+    HRESULT get_PFramesPerKeyFrame([out] long *frame);
+    HRESULT put_Quality([in] double quality);
+    HRESULT get_Quality([out] double *quality);
+    HRESULT put_WindowSize([in] DWORDLONG size);
+    HRESULT get_WindowSize([out] DWORDLONG *size);
+    HRESULT GetInfo([out, size_is(*version_size)] LPWSTR version, [in, out] int *version_size,
+            [out, size_is(*description_size)] LPWSTR description, [in, out] int *description_size,
+            [out] long *frame_rate, [out] long *key, [out] double *quality, [out] long *capabilities);
+    HRESULT OverrideKeyFrame([in] long number);
+    HRESULT OverrideFrameSize([in] long number, [in] long size);
+}
+
+[
+    local,
+    object,
+    uuid(c6e13380-30ac-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMCrossbar : IUnknown
+{
+    HRESULT get_PinCounts([out] long *output, [out] long *intput);
+    HRESULT CanRoute([in] long output, [in] long input);
+    HRESULT Route([in] long output, [in] long input);
+    HRESULT get_IsRoutedTo([in] long output, [out] long *input);
+    HRESULT get_CrossbarPinInfo([in] BOOL is_input, [in] long index,
+            [out] long *related, [out] long *type);
+}
+
+typedef enum tagAMTunerEventType
+{
+    AMTUNER_EVENT_CHANGED = 0x0001,
+} AMTunerEventType;
+
+[
+    local,
+    object,
+    uuid(211a8760-03ac-11d1-8d13-00aa00bd8339),
+    pointer_default(unique)
+]
+interface IAMTunerNotification : IUnknown
+{
+    HRESULT OnEvent([in] AMTunerEventType event);
+}
+
+typedef enum tagAMTunerModeType
+{
+    AMTUNER_MODE_DEFAULT  = 0x0000,
+    AMTUNER_MODE_TV       = 0x0001,
+    AMTUNER_MODE_FM_RADIO = 0x0002,
+    AMTUNER_MODE_AM_RADIO = 0x0004,
+    AMTUNER_MODE_DSS      = 0x0008,
+} AMTunerModeType;
+
+[
+    local,
+    object,
+    uuid(211a8761-03ac-11d1-8d13-00aa00bd8339),
+    pointer_default(unique)
+]
+interface IAMTuner : IUnknown
+{
+    HRESULT put_Channel([in] long channel, [in] long video, [in] long audio);
+    HRESULT get_Channel([out] long *channel, [out] long *video, [out] long *audio);
+    HRESULT ChannelMinMax([out] long *min, [out] long *max);
+    HRESULT put_CountryCode([in] long country);
+    HRESULT get_CountryCode([out] long *country);
+    HRESULT put_TuningSpace([in] long tuning_space);
+    HRESULT get_TuningSpace([out] long *tuning_space);
+    [local] HRESULT Logon([in] HANDLE user);
+    HRESULT Logout();
+    HRESULT SignalPresent([out] long *signal_strength);
+    HRESULT put_Mode([in] AMTunerModeType mode);
+    HRESULT get_Mode([out] AMTunerModeType *mode);
+    HRESULT GetAvailableModes([out] long *modes);
+    HRESULT RegisterNotificationCallBack([in] IAMTunerNotification *notify, [in] long events);
+    HRESULT UnRegisterNotificationCallBack([in] IAMTunerNotification *notify);
+}
+
+[
+    local,
+    object,
+    uuid(211a8766-03ac-11d1-8d13-00aa00bd8339),
+    pointer_default(unique)
+]
+interface IAMTVTuner : IAMTuner
+{
+    HRESULT get_AvailableTVFormats([out] long *standard);
+    HRESULT get_TVFormat([out] long *standard);
+    HRESULT AutoTune([in] long channel, [out] long *signal);
+    HRESULT StoreAutoTune();
+    HRESULT get_NumInputConnections([out] long *number);
+    HRESULT put_InputType([in] long index, [in] TunerInputType type);
+    HRESULT get_InputType([in] long index, [out] TunerInputType *type);
+    HRESULT put_ConnectInput([in] long index);
+    HRESULT get_ConnectInput([out] long *index);
+    HRESULT get_VideoFrequency([out] long *freq);
+    HRESULT get_AudioFrequency([out] long *freq);
+}
+
+[
+    local,
+    object,
+    uuid(e46a9787-2b71-444d-a4b5-1fab7b708d6a),
+    pointer_default(unique),
+]
+interface IVideoFrameStep : IUnknown
+{
+    HRESULT Step(DWORD frame_count, [in] IUnknown *filter);
+    HRESULT CanStep(long multiple, [in] IUnknown *filter);
+    HRESULT CancelStep();
+}
 
 cpp_quote("#if (_WIN32_WINNT >= 0x0601)")
 [
@@ -1306,7 +1520,7 @@
             [out] BOOL *pfRaw);
     HRESULT SetTimestampMode(
             [in] BOOL fRaw);
-};
+}
 
 [
     local,
diff --git a/mingw-w64-headers/include/strmif.idl b/mingw-w64-headers/include/strmif.idl
index fed29b6..0e250d1 100644
--- a/mingw-w64-headers/include/strmif.idl
+++ b/mingw-w64-headers/include/strmif.idl
@@ -20,66 +20,21 @@
 cpp_quote("typedef struct IDistributorNotify IDistributorNotify;")
 cpp_quote("#endif")
 cpp_quote("")
-cpp_quote("#ifndef __IAMVideoCompression_FWD_DEFINED__")
-cpp_quote("#define __IAMVideoCompression_FWD_DEFINED__")
-cpp_quote("typedef struct IAMVideoCompression IAMVideoCompression;")
-cpp_quote("#endif")
-cpp_quote("")
 cpp_quote("#ifndef __IAMVfwCompressDialogs_FWD_DEFINED__")
 cpp_quote("#define __IAMVfwCompressDialogs_FWD_DEFINED__")
 cpp_quote("typedef struct IAMVfwCompressDialogs IAMVfwCompressDialogs;")
 cpp_quote("#endif")
 cpp_quote("")
-cpp_quote("#ifndef __IAMDroppedFrames_FWD_DEFINED__")
-cpp_quote("#define __IAMDroppedFrames_FWD_DEFINED__")
-cpp_quote("typedef struct IAMDroppedFrames IAMDroppedFrames;")
-cpp_quote("#endif")
-cpp_quote("")
 cpp_quote("#ifndef __IAMAudioInputMixer_FWD_DEFINED__")
 cpp_quote("#define __IAMAudioInputMixer_FWD_DEFINED__")
 cpp_quote("typedef struct IAMAudioInputMixer IAMAudioInputMixer;")
 cpp_quote("#endif")
 cpp_quote("")
-cpp_quote("#ifndef __IAMBufferNegotiation_FWD_DEFINED__")
-cpp_quote("#define __IAMBufferNegotiation_FWD_DEFINED__")
-cpp_quote("typedef struct IAMBufferNegotiation IAMBufferNegotiation;")
-cpp_quote("#endif")
-cpp_quote("")
 cpp_quote("#ifndef __IAMAnalogVideoDecoder_FWD_DEFINED__")
 cpp_quote("#define __IAMAnalogVideoDecoder_FWD_DEFINED__")
 cpp_quote("typedef struct IAMAnalogVideoDecoder IAMAnalogVideoDecoder;")
 cpp_quote("#endif")
 cpp_quote("")
-cpp_quote("#ifndef __IAMCameraControl_FWD_DEFINED__")
-cpp_quote("#define __IAMCameraControl_FWD_DEFINED__")
-cpp_quote("typedef struct IAMCameraControl IAMCameraControl;")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMVideoControl_FWD_DEFINED__")
-cpp_quote("#define __IAMVideoControl_FWD_DEFINED__")
-cpp_quote("typedef struct IAMVideoControl IAMVideoControl;")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMCrossbar_FWD_DEFINED__")
-cpp_quote("#define __IAMCrossbar_FWD_DEFINED__")
-cpp_quote("typedef struct IAMCrossbar IAMCrossbar;")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMTuner_FWD_DEFINED__")
-cpp_quote("#define __IAMTuner_FWD_DEFINED__")
-cpp_quote("typedef struct IAMTuner IAMTuner;")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMTunerNotification_FWD_DEFINED__")
-cpp_quote("#define __IAMTunerNotification_FWD_DEFINED__")
-cpp_quote("typedef struct IAMTunerNotification IAMTunerNotification;")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMTVTuner_FWD_DEFINED__")
-cpp_quote("#define __IAMTVTuner_FWD_DEFINED__")
-cpp_quote("typedef struct IAMTVTuner IAMTVTuner;")
-cpp_quote("#endif")
-cpp_quote("")
 cpp_quote("#ifndef __IBPCSatelliteTuner_FWD_DEFINED__")
 cpp_quote("#define __IBPCSatelliteTuner_FWD_DEFINED__")
 cpp_quote("typedef struct IBPCSatelliteTuner IBPCSatelliteTuner;")
@@ -170,21 +125,6 @@
 cpp_quote("typedef struct IAMVideoDecimationProperties IAMVideoDecimationProperties;")
 cpp_quote("#endif")
 cpp_quote("")
-cpp_quote("#ifndef __IVideoFrameStep_FWD_DEFINED__")
-cpp_quote("#define __IVideoFrameStep_FWD_DEFINED__")
-cpp_quote("typedef struct IVideoFrameStep IVideoFrameStep;")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMLatency_FWD_DEFINED__")
-cpp_quote("#define __IAMLatency_FWD_DEFINED__")
-cpp_quote("typedef struct IAMLatency IAMLatency;")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMPushSource_FWD_DEFINED__")
-cpp_quote("#define __IAMPushSource_FWD_DEFINED__")
-cpp_quote("typedef struct IAMPushSource IAMPushSource;")
-cpp_quote("#endif")
-cpp_quote("")
 cpp_quote("#ifndef __IAMDeviceRemoval_FWD_DEFINED__")
 cpp_quote("#define __IAMDeviceRemoval_FWD_DEFINED__")
 cpp_quote("typedef struct IAMDeviceRemoval IAMDeviceRemoval;")
@@ -532,86 +472,6 @@
 cpp_quote("")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0167_v0_0_c_ifspec;")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0167_v0_0_s_ifspec;")
-cpp_quote("#ifndef __IAMVideoCompression_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMVideoCompression_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMVideoCompression;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMVideoCompression : public IUnknown {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI put_KeyFrameRate(LONG KeyFrameRate) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_KeyFrameRate(LONG *pKeyFrameRate) = 0;")
-cpp_quote("    virtual HRESULT WINAPI put_PFramesPerKeyFrame(LONG PFramesPerKeyFrame) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_PFramesPerKeyFrame(LONG *pPFramesPerKeyFrame) = 0;")
-cpp_quote("    virtual HRESULT WINAPI put_Quality(double Quality) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_Quality(double *pQuality) = 0;")
-cpp_quote("    virtual HRESULT WINAPI put_WindowSize(DWORDLONG WindowSize) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_WindowSize(DWORDLONG *pWindowSize) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetInfo(WCHAR *pszVersion,int *pcbVersion,LPWSTR pszDescription,int *pcbDescription,LONG *pDefaultKeyFrameRate,LONG *pDefaultPFramesPerKey,double *pDefaultQuality,LONG *pCapabilities) = 0;")
-cpp_quote("    virtual HRESULT WINAPI OverrideKeyFrame(LONG FrameNumber) = 0;")
-cpp_quote("    virtual HRESULT WINAPI OverrideFrameSize(LONG FrameNumber,LONG Size) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMVideoCompressionVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMVideoCompression *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMVideoCompression *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMVideoCompression *This);")
-cpp_quote("      HRESULT (WINAPI *put_KeyFrameRate)(IAMVideoCompression *This,LONG KeyFrameRate);")
-cpp_quote("      HRESULT (WINAPI *get_KeyFrameRate)(IAMVideoCompression *This,LONG *pKeyFrameRate);")
-cpp_quote("      HRESULT (WINAPI *put_PFramesPerKeyFrame)(IAMVideoCompression *This,LONG PFramesPerKeyFrame);")
-cpp_quote("      HRESULT (WINAPI *get_PFramesPerKeyFrame)(IAMVideoCompression *This,LONG *pPFramesPerKeyFrame);")
-cpp_quote("      HRESULT (WINAPI *put_Quality)(IAMVideoCompression *This,double Quality);")
-cpp_quote("      HRESULT (WINAPI *get_Quality)(IAMVideoCompression *This,double *pQuality);")
-cpp_quote("      HRESULT (WINAPI *put_WindowSize)(IAMVideoCompression *This,DWORDLONG WindowSize);")
-cpp_quote("      HRESULT (WINAPI *get_WindowSize)(IAMVideoCompression *This,DWORDLONG *pWindowSize);")
-cpp_quote("      HRESULT (WINAPI *GetInfo)(IAMVideoCompression *This,WCHAR *pszVersion,int *pcbVersion,LPWSTR pszDescription,int *pcbDescription,LONG *pDefaultKeyFrameRate,LONG *pDefaultPFramesPerKey,double *pDefaultQuality,LONG *pCapabilities);")
-cpp_quote("      HRESULT (WINAPI *OverrideKeyFrame)(IAMVideoCompression *This,LONG FrameNumber);")
-cpp_quote("      HRESULT (WINAPI *OverrideFrameSize)(IAMVideoCompression *This,LONG FrameNumber,LONG Size);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMVideoCompressionVtbl;")
-cpp_quote("  struct IAMVideoCompression {")
-cpp_quote("    CONST_VTBL struct IAMVideoCompressionVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMVideoCompression_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMVideoCompression_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMVideoCompression_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMVideoCompression_put_KeyFrameRate(This,KeyFrameRate) (This)->lpVtbl->put_KeyFrameRate(This,KeyFrameRate)")
-cpp_quote("#define IAMVideoCompression_get_KeyFrameRate(This,pKeyFrameRate) (This)->lpVtbl->get_KeyFrameRate(This,pKeyFrameRate)")
-cpp_quote("#define IAMVideoCompression_put_PFramesPerKeyFrame(This,PFramesPerKeyFrame) (This)->lpVtbl->put_PFramesPerKeyFrame(This,PFramesPerKeyFrame)")
-cpp_quote("#define IAMVideoCompression_get_PFramesPerKeyFrame(This,pPFramesPerKeyFrame) (This)->lpVtbl->get_PFramesPerKeyFrame(This,pPFramesPerKeyFrame)")
-cpp_quote("#define IAMVideoCompression_put_Quality(This,Quality) (This)->lpVtbl->put_Quality(This,Quality)")
-cpp_quote("#define IAMVideoCompression_get_Quality(This,pQuality) (This)->lpVtbl->get_Quality(This,pQuality)")
-cpp_quote("#define IAMVideoCompression_put_WindowSize(This,WindowSize) (This)->lpVtbl->put_WindowSize(This,WindowSize)")
-cpp_quote("#define IAMVideoCompression_get_WindowSize(This,pWindowSize) (This)->lpVtbl->get_WindowSize(This,pWindowSize)")
-cpp_quote("#define IAMVideoCompression_GetInfo(This,pszVersion,pcbVersion,pszDescription,pcbDescription,pDefaultKeyFrameRate,pDefaultPFramesPerKey,pDefaultQuality,pCapabilities) (This)->lpVtbl->GetInfo(This,pszVersion,pcbVersion,pszDescription,pcbDescription,pDefaultKeyFrameRate,pDefaultPFramesPerKey,pDefaultQuality,pCapabilities)")
-cpp_quote("#define IAMVideoCompression_OverrideKeyFrame(This,FrameNumber) (This)->lpVtbl->OverrideKeyFrame(This,FrameNumber)")
-cpp_quote("#define IAMVideoCompression_OverrideFrameSize(This,FrameNumber,Size) (This)->lpVtbl->OverrideFrameSize(This,FrameNumber,Size)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_put_KeyFrameRate_Proxy(IAMVideoCompression *This,LONG KeyFrameRate);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_put_KeyFrameRate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_get_KeyFrameRate_Proxy(IAMVideoCompression *This,LONG *pKeyFrameRate);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_get_KeyFrameRate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_put_PFramesPerKeyFrame_Proxy(IAMVideoCompression *This,LONG PFramesPerKeyFrame);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_put_PFramesPerKeyFrame_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_get_PFramesPerKeyFrame_Proxy(IAMVideoCompression *This,LONG *pPFramesPerKeyFrame);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_get_PFramesPerKeyFrame_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_put_Quality_Proxy(IAMVideoCompression *This,double Quality);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_put_Quality_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_get_Quality_Proxy(IAMVideoCompression *This,double *pQuality);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_get_Quality_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_put_WindowSize_Proxy(IAMVideoCompression *This,DWORDLONG WindowSize);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_put_WindowSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_get_WindowSize_Proxy(IAMVideoCompression *This,DWORDLONG *pWindowSize);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_get_WindowSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_GetInfo_Proxy(IAMVideoCompression *This,WCHAR *pszVersion,int *pcbVersion,LPWSTR pszDescription,int *pcbDescription,LONG *pDefaultKeyFrameRate,LONG *pDefaultPFramesPerKey,double *pDefaultQuality,LONG *pCapabilities);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_GetInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_OverrideKeyFrame_Proxy(IAMVideoCompression *This,LONG FrameNumber);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_OverrideKeyFrame_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoCompression_OverrideFrameSize_Proxy(IAMVideoCompression *This,LONG FrameNumber,LONG Size);")
-cpp_quote("  void __RPC_STUB IAMVideoCompression_OverrideFrameSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
 cpp_quote("")
 cpp_quote("  typedef enum __MIDL___MIDL_itf_strmif_0168_0001 {")
 cpp_quote("    VfwCaptureDialog_Source = 0x1,VfwCaptureDialog_Format = 0x2,VfwCaptureDialog_Display = 0x4")
@@ -667,52 +527,6 @@
 cpp_quote("  void __RPC_STUB IAMVfwCompressDialogs_SendDriverMessage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
 cpp_quote("#endif")
 cpp_quote("")
-cpp_quote("#ifndef __IAMDroppedFrames_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMDroppedFrames_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMDroppedFrames;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMDroppedFrames : public IUnknown {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI GetNumDropped(LONG *plDropped) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetNumNotDropped(LONG *plNotDropped) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetDroppedInfo(LONG lSize,LONG *plArray,LONG *plNumCopied) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetAverageFrameSize(LONG *plAverageSize) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMDroppedFramesVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMDroppedFrames *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMDroppedFrames *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMDroppedFrames *This);")
-cpp_quote("      HRESULT (WINAPI *GetNumDropped)(IAMDroppedFrames *This,LONG *plDropped);")
-cpp_quote("      HRESULT (WINAPI *GetNumNotDropped)(IAMDroppedFrames *This,LONG *plNotDropped);")
-cpp_quote("      HRESULT (WINAPI *GetDroppedInfo)(IAMDroppedFrames *This,LONG lSize,LONG *plArray,LONG *plNumCopied);")
-cpp_quote("      HRESULT (WINAPI *GetAverageFrameSize)(IAMDroppedFrames *This,LONG *plAverageSize);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMDroppedFramesVtbl;")
-cpp_quote("  struct IAMDroppedFrames {")
-cpp_quote("    CONST_VTBL struct IAMDroppedFramesVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMDroppedFrames_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMDroppedFrames_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMDroppedFrames_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMDroppedFrames_GetNumDropped(This,plDropped) (This)->lpVtbl->GetNumDropped(This,plDropped)")
-cpp_quote("#define IAMDroppedFrames_GetNumNotDropped(This,plNotDropped) (This)->lpVtbl->GetNumNotDropped(This,plNotDropped)")
-cpp_quote("#define IAMDroppedFrames_GetDroppedInfo(This,lSize,plArray,plNumCopied) (This)->lpVtbl->GetDroppedInfo(This,lSize,plArray,plNumCopied)")
-cpp_quote("#define IAMDroppedFrames_GetAverageFrameSize(This,plAverageSize) (This)->lpVtbl->GetAverageFrameSize(This,plAverageSize)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMDroppedFrames_GetNumDropped_Proxy(IAMDroppedFrames *This,LONG *plDropped);")
-cpp_quote("  void __RPC_STUB IAMDroppedFrames_GetNumDropped_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMDroppedFrames_GetNumNotDropped_Proxy(IAMDroppedFrames *This,LONG *plNotDropped);")
-cpp_quote("  void __RPC_STUB IAMDroppedFrames_GetNumNotDropped_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMDroppedFrames_GetDroppedInfo_Proxy(IAMDroppedFrames *This,LONG lSize,LONG *plArray,LONG *plNumCopied);")
-cpp_quote("  void __RPC_STUB IAMDroppedFrames_GetDroppedInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMDroppedFrames_GetAverageFrameSize_Proxy(IAMDroppedFrames *This,LONG *plAverageSize);")
-cpp_quote("  void __RPC_STUB IAMDroppedFrames_GetAverageFrameSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
-cpp_quote("")
 cpp_quote("#define AMF_AUTOMATICGAIN -1.0")
 cpp_quote("")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0171_v0_0_c_ifspec;")
@@ -823,42 +637,6 @@
 cpp_quote("  void __RPC_STUB IAMAudioInputMixer_get_BassRange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
 cpp_quote("#endif")
 cpp_quote("")
-cpp_quote("#ifndef __IAMBufferNegotiation_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMBufferNegotiation_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMBufferNegotiation;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMBufferNegotiation : public IUnknown {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI SuggestAllocatorProperties(const ALLOCATOR_PROPERTIES *pprop) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetAllocatorProperties(ALLOCATOR_PROPERTIES *pprop) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMBufferNegotiationVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMBufferNegotiation *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMBufferNegotiation *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMBufferNegotiation *This);")
-cpp_quote("      HRESULT (WINAPI *SuggestAllocatorProperties)(IAMBufferNegotiation *This,const ALLOCATOR_PROPERTIES *pprop);")
-cpp_quote("      HRESULT (WINAPI *GetAllocatorProperties)(IAMBufferNegotiation *This,ALLOCATOR_PROPERTIES *pprop);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMBufferNegotiationVtbl;")
-cpp_quote("  struct IAMBufferNegotiation {")
-cpp_quote("    CONST_VTBL struct IAMBufferNegotiationVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMBufferNegotiation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMBufferNegotiation_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMBufferNegotiation_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMBufferNegotiation_SuggestAllocatorProperties(This,pprop) (This)->lpVtbl->SuggestAllocatorProperties(This,pprop)")
-cpp_quote("#define IAMBufferNegotiation_GetAllocatorProperties(This,pprop) (This)->lpVtbl->GetAllocatorProperties(This,pprop)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMBufferNegotiation_SuggestAllocatorProperties_Proxy(IAMBufferNegotiation *This,const ALLOCATOR_PROPERTIES *pprop);")
-cpp_quote("  void __RPC_STUB IAMBufferNegotiation_SuggestAllocatorProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMBufferNegotiation_GetAllocatorProperties_Proxy(IAMBufferNegotiation *This,ALLOCATOR_PROPERTIES *pprop);")
-cpp_quote("  void __RPC_STUB IAMBufferNegotiation_GetAllocatorProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
-cpp_quote("")
 cpp_quote("#define AnalogVideo_NTSC_Mask 0x00000007")
 cpp_quote("#define AnalogVideo_PAL_Mask 0x00100FF0")
 cpp_quote("#define AnalogVideo_SECAM_Mask 0x000FF000")
@@ -964,46 +742,6 @@
 cpp_quote("")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0175_v0_0_c_ifspec;")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0175_v0_0_s_ifspec;")
-cpp_quote("#ifndef __IAMCameraControl_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMCameraControl_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMCameraControl;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMCameraControl : public IUnknown {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI GetRange(LONG Property,LONG *pMin,LONG *pMax,LONG *pSteppingDelta,LONG *pDefault,LONG *pCapsFlags) = 0;")
-cpp_quote("    virtual HRESULT WINAPI Set(LONG Property,LONG lValue,LONG Flags) = 0;")
-cpp_quote("    virtual HRESULT WINAPI Get(LONG Property,LONG *lValue,LONG *Flags) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMCameraControlVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMCameraControl *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMCameraControl *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMCameraControl *This);")
-cpp_quote("      HRESULT (WINAPI *GetRange)(IAMCameraControl *This,LONG Property,LONG *pMin,LONG *pMax,LONG *pSteppingDelta,LONG *pDefault,LONG *pCapsFlags);")
-cpp_quote("      HRESULT (WINAPI *Set)(IAMCameraControl *This,LONG Property,LONG lValue,LONG Flags);")
-cpp_quote("      HRESULT (WINAPI *Get)(IAMCameraControl *This,LONG Property,LONG *lValue,LONG *Flags);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMCameraControlVtbl;")
-cpp_quote("  struct IAMCameraControl {")
-cpp_quote("    CONST_VTBL struct IAMCameraControlVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMCameraControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMCameraControl_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMCameraControl_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMCameraControl_GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags) (This)->lpVtbl->GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags)")
-cpp_quote("#define IAMCameraControl_Set(This,Property,lValue,Flags) (This)->lpVtbl->Set(This,Property,lValue,Flags)")
-cpp_quote("#define IAMCameraControl_Get(This,Property,lValue,Flags) (This)->lpVtbl->Get(This,Property,lValue,Flags)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMCameraControl_GetRange_Proxy(IAMCameraControl *This,LONG Property,LONG *pMin,LONG *pMax,LONG *pSteppingDelta,LONG *pDefault,LONG *pCapsFlags);")
-cpp_quote("  void __RPC_STUB IAMCameraControl_GetRange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMCameraControl_Set_Proxy(IAMCameraControl *This,LONG Property,LONG lValue,LONG Flags);")
-cpp_quote("  void __RPC_STUB IAMCameraControl_Set_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMCameraControl_Get_Proxy(IAMCameraControl *This,LONG Property,LONG *lValue,LONG *Flags);")
-cpp_quote("  void __RPC_STUB IAMCameraControl_Get_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
 cpp_quote("")
 cpp_quote("  typedef enum tagVideoControlFlags {")
 cpp_quote("    VideoControlFlag_FlipHorizontal = 0x1,VideoControlFlag_FlipVertical = 0x2,VideoControlFlag_ExternalTriggerEnable = 0x4,VideoControlFlag_Trigger = 0x8")
@@ -1011,116 +749,6 @@
 cpp_quote("")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0176_v0_0_c_ifspec;")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0176_v0_0_s_ifspec;")
-cpp_quote("#ifndef __IAMVideoControl_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMVideoControl_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMVideoControl;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMVideoControl : public IUnknown {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI GetCaps(IPin *pPin,LONG *pCapsFlags) = 0;")
-cpp_quote("    virtual HRESULT WINAPI SetMode(IPin *pPin,LONG Mode) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetMode(IPin *pPin,LONG *Mode) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetCurrentActualFrameRate(IPin *pPin,LONGLONG *ActualFrameRate) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetMaxAvailableFrameRate(IPin *pPin,LONG iIndex,SIZE Dimensions,LONGLONG *MaxAvailableFrameRate) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetFrameRateList(IPin *pPin,LONG iIndex,SIZE Dimensions,LONG *ListSize,LONGLONG **FrameRates) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMVideoControlVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMVideoControl *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMVideoControl *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMVideoControl *This);")
-cpp_quote("      HRESULT (WINAPI *GetCaps)(IAMVideoControl *This,IPin *pPin,LONG *pCapsFlags);")
-cpp_quote("      HRESULT (WINAPI *SetMode)(IAMVideoControl *This,IPin *pPin,LONG Mode);")
-cpp_quote("      HRESULT (WINAPI *GetMode)(IAMVideoControl *This,IPin *pPin,LONG *Mode);")
-cpp_quote("      HRESULT (WINAPI *GetCurrentActualFrameRate)(IAMVideoControl *This,IPin *pPin,LONGLONG *ActualFrameRate);")
-cpp_quote("      HRESULT (WINAPI *GetMaxAvailableFrameRate)(IAMVideoControl *This,IPin *pPin,LONG iIndex,SIZE Dimensions,LONGLONG *MaxAvailableFrameRate);")
-cpp_quote("      HRESULT (WINAPI *GetFrameRateList)(IAMVideoControl *This,IPin *pPin,LONG iIndex,SIZE Dimensions,LONG *ListSize,LONGLONG **FrameRates);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMVideoControlVtbl;")
-cpp_quote("  struct IAMVideoControl {")
-cpp_quote("    CONST_VTBL struct IAMVideoControlVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMVideoControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMVideoControl_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMVideoControl_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMVideoControl_GetCaps(This,pPin,pCapsFlags) (This)->lpVtbl->GetCaps(This,pPin,pCapsFlags)")
-cpp_quote("#define IAMVideoControl_SetMode(This,pPin,Mode) (This)->lpVtbl->SetMode(This,pPin,Mode)")
-cpp_quote("#define IAMVideoControl_GetMode(This,pPin,Mode) (This)->lpVtbl->GetMode(This,pPin,Mode)")
-cpp_quote("#define IAMVideoControl_GetCurrentActualFrameRate(This,pPin,ActualFrameRate) (This)->lpVtbl->GetCurrentActualFrameRate(This,pPin,ActualFrameRate)")
-cpp_quote("#define IAMVideoControl_GetMaxAvailableFrameRate(This,pPin,iIndex,Dimensions,MaxAvailableFrameRate) (This)->lpVtbl->GetMaxAvailableFrameRate(This,pPin,iIndex,Dimensions,MaxAvailableFrameRate)")
-cpp_quote("#define IAMVideoControl_GetFrameRateList(This,pPin,iIndex,Dimensions,ListSize,FrameRates) (This)->lpVtbl->GetFrameRateList(This,pPin,iIndex,Dimensions,ListSize,FrameRates)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMVideoControl_GetCaps_Proxy(IAMVideoControl *This,IPin *pPin,LONG *pCapsFlags);")
-cpp_quote("  void __RPC_STUB IAMVideoControl_GetCaps_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoControl_SetMode_Proxy(IAMVideoControl *This,IPin *pPin,LONG Mode);")
-cpp_quote("  void __RPC_STUB IAMVideoControl_SetMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoControl_GetMode_Proxy(IAMVideoControl *This,IPin *pPin,LONG *Mode);")
-cpp_quote("  void __RPC_STUB IAMVideoControl_GetMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoControl_GetCurrentActualFrameRate_Proxy(IAMVideoControl *This,IPin *pPin,LONGLONG *ActualFrameRate);")
-cpp_quote("  void __RPC_STUB IAMVideoControl_GetCurrentActualFrameRate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoControl_GetMaxAvailableFrameRate_Proxy(IAMVideoControl *This,IPin *pPin,LONG iIndex,SIZE Dimensions,LONGLONG *MaxAvailableFrameRate);")
-cpp_quote("  void __RPC_STUB IAMVideoControl_GetMaxAvailableFrameRate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMVideoControl_GetFrameRateList_Proxy(IAMVideoControl *This,IPin *pPin,LONG iIndex,SIZE Dimensions,LONG *ListSize,LONGLONG **FrameRates);")
-cpp_quote("  void __RPC_STUB IAMVideoControl_GetFrameRateList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifdef __CRT_UUID_DECL")
-cpp_quote("__CRT_UUID_DECL(IAMCrossbar,0xc6e13380,0x30ac,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56);")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMCrossbar_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMCrossbar_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMCrossbar;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMCrossbar : public IUnknown {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI get_PinCounts(LONG *OutputPinCount,LONG *InputPinCount) = 0;")
-cpp_quote("    virtual HRESULT WINAPI CanRoute(LONG OutputPinIndex,LONG InputPinIndex) = 0;")
-cpp_quote("    virtual HRESULT WINAPI Route(LONG OutputPinIndex,LONG InputPinIndex) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_IsRoutedTo(LONG OutputPinIndex,LONG *InputPinIndex) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_CrossbarPinInfo(WINBOOL IsInputPin,LONG PinIndex,LONG *PinIndexRelated,LONG *PhysicalType) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMCrossbarVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMCrossbar *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMCrossbar *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMCrossbar *This);")
-cpp_quote("      HRESULT (WINAPI *get_PinCounts)(IAMCrossbar *This,LONG *OutputPinCount,LONG *InputPinCount);")
-cpp_quote("      HRESULT (WINAPI *CanRoute)(IAMCrossbar *This,LONG OutputPinIndex,LONG InputPinIndex);")
-cpp_quote("      HRESULT (WINAPI *Route)(IAMCrossbar *This,LONG OutputPinIndex,LONG InputPinIndex);")
-cpp_quote("      HRESULT (WINAPI *get_IsRoutedTo)(IAMCrossbar *This,LONG OutputPinIndex,LONG *InputPinIndex);")
-cpp_quote("      HRESULT (WINAPI *get_CrossbarPinInfo)(IAMCrossbar *This,WINBOOL IsInputPin,LONG PinIndex,LONG *PinIndexRelated,LONG *PhysicalType);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMCrossbarVtbl;")
-cpp_quote("  struct IAMCrossbar {")
-cpp_quote("    CONST_VTBL struct IAMCrossbarVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMCrossbar_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMCrossbar_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMCrossbar_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMCrossbar_get_PinCounts(This,OutputPinCount,InputPinCount) (This)->lpVtbl->get_PinCounts(This,OutputPinCount,InputPinCount)")
-cpp_quote("#define IAMCrossbar_CanRoute(This,OutputPinIndex,InputPinIndex) (This)->lpVtbl->CanRoute(This,OutputPinIndex,InputPinIndex)")
-cpp_quote("#define IAMCrossbar_Route(This,OutputPinIndex,InputPinIndex) (This)->lpVtbl->Route(This,OutputPinIndex,InputPinIndex)")
-cpp_quote("#define IAMCrossbar_get_IsRoutedTo(This,OutputPinIndex,InputPinIndex) (This)->lpVtbl->get_IsRoutedTo(This,OutputPinIndex,InputPinIndex)")
-cpp_quote("#define IAMCrossbar_get_CrossbarPinInfo(This,IsInputPin,PinIndex,PinIndexRelated,PhysicalType) (This)->lpVtbl->get_CrossbarPinInfo(This,IsInputPin,PinIndex,PinIndexRelated,PhysicalType)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMCrossbar_get_PinCounts_Proxy(IAMCrossbar *This,LONG *OutputPinCount,LONG *InputPinCount);")
-cpp_quote("  void __RPC_STUB IAMCrossbar_get_PinCounts_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMCrossbar_CanRoute_Proxy(IAMCrossbar *This,LONG OutputPinIndex,LONG InputPinIndex);")
-cpp_quote("  void __RPC_STUB IAMCrossbar_CanRoute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMCrossbar_Route_Proxy(IAMCrossbar *This,LONG OutputPinIndex,LONG InputPinIndex);")
-cpp_quote("  void __RPC_STUB IAMCrossbar_Route_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMCrossbar_get_IsRoutedTo_Proxy(IAMCrossbar *This,LONG OutputPinIndex,LONG *InputPinIndex);")
-cpp_quote("  void __RPC_STUB IAMCrossbar_get_IsRoutedTo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMCrossbar_get_CrossbarPinInfo_Proxy(IAMCrossbar *This,WINBOOL IsInputPin,LONG PinIndex,LONG *PinIndexRelated,LONG *PhysicalType);")
-cpp_quote("  void __RPC_STUB IAMCrossbar_get_CrossbarPinInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
 cpp_quote("")
 cpp_quote("  typedef enum tagAMTunerSubChannel {")
 cpp_quote("    AMTUNER_SUBCHAN_NO_TUNE = -2,AMTUNER_SUBCHAN_DEFAULT = -1")
@@ -1130,258 +758,8 @@
 cpp_quote("    AMTUNER_HASNOSIGNALSTRENGTH = -1,AMTUNER_NOSIGNAL = 0,AMTUNER_SIGNALPRESENT = 1")
 cpp_quote("  } AMTunerSignalStrength;")
 cpp_quote("")
-cpp_quote("  typedef enum tagAMTunerModeType {")
-cpp_quote("    AMTUNER_MODE_DEFAULT = 0,AMTUNER_MODE_TV = 0x1,AMTUNER_MODE_FM_RADIO = 0x2,AMTUNER_MODE_AM_RADIO = 0x4,AMTUNER_MODE_DSS = 0x8")
-cpp_quote("  } AMTunerModeType;")
-cpp_quote("")
-cpp_quote("  typedef enum tagAMTunerEventType {")
-cpp_quote("    AMTUNER_EVENT_CHANGED = 0x1")
-cpp_quote("  } AMTunerEventType;")
-cpp_quote("")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0178_v0_0_c_ifspec;")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0178_v0_0_s_ifspec;")
-cpp_quote("#ifndef __IAMTuner_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMTuner_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMTuner;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMTuner : public IUnknown {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI put_Channel(LONG lChannel,LONG lVideoSubChannel,LONG lAudioSubChannel) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_Channel(LONG *plChannel,LONG *plVideoSubChannel,LONG *plAudioSubChannel) = 0;")
-cpp_quote("    virtual HRESULT WINAPI ChannelMinMax(LONG *lChannelMin,LONG *lChannelMax) = 0;")
-cpp_quote("    virtual HRESULT WINAPI put_CountryCode(LONG lCountryCode) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_CountryCode(LONG *plCountryCode) = 0;")
-cpp_quote("    virtual HRESULT WINAPI put_TuningSpace(LONG lTuningSpace) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_TuningSpace(LONG *plTuningSpace) = 0;")
-cpp_quote("    virtual HRESULT WINAPI Logon(HANDLE hCurrentUser) = 0;")
-cpp_quote("    virtual HRESULT WINAPI Logout(void) = 0;")
-cpp_quote("    virtual HRESULT WINAPI SignalPresent(LONG *plSignalStrength) = 0;")
-cpp_quote("    virtual HRESULT WINAPI put_Mode(AMTunerModeType lMode) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_Mode(AMTunerModeType *plMode) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetAvailableModes(LONG *plModes) = 0;")
-cpp_quote("    virtual HRESULT WINAPI RegisterNotificationCallBack(IAMTunerNotification *pNotify,LONG lEvents) = 0;")
-cpp_quote("    virtual HRESULT WINAPI UnRegisterNotificationCallBack(IAMTunerNotification *pNotify) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMTunerVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMTuner *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMTuner *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMTuner *This);")
-cpp_quote("      HRESULT (WINAPI *put_Channel)(IAMTuner *This,LONG lChannel,LONG lVideoSubChannel,LONG lAudioSubChannel);")
-cpp_quote("      HRESULT (WINAPI *get_Channel)(IAMTuner *This,LONG *plChannel,LONG *plVideoSubChannel,LONG *plAudioSubChannel);")
-cpp_quote("      HRESULT (WINAPI *ChannelMinMax)(IAMTuner *This,LONG *lChannelMin,LONG *lChannelMax);")
-cpp_quote("      HRESULT (WINAPI *put_CountryCode)(IAMTuner *This,LONG lCountryCode);")
-cpp_quote("      HRESULT (WINAPI *get_CountryCode)(IAMTuner *This,LONG *plCountryCode);")
-cpp_quote("      HRESULT (WINAPI *put_TuningSpace)(IAMTuner *This,LONG lTuningSpace);")
-cpp_quote("      HRESULT (WINAPI *get_TuningSpace)(IAMTuner *This,LONG *plTuningSpace);")
-cpp_quote("      HRESULT (WINAPI *Logon)(IAMTuner *This,HANDLE hCurrentUser);")
-cpp_quote("      HRESULT (WINAPI *Logout)(IAMTuner *This);")
-cpp_quote("      HRESULT (WINAPI *SignalPresent)(IAMTuner *This,LONG *plSignalStrength);")
-cpp_quote("      HRESULT (WINAPI *put_Mode)(IAMTuner *This,AMTunerModeType lMode);")
-cpp_quote("      HRESULT (WINAPI *get_Mode)(IAMTuner *This,AMTunerModeType *plMode);")
-cpp_quote("      HRESULT (WINAPI *GetAvailableModes)(IAMTuner *This,LONG *plModes);")
-cpp_quote("      HRESULT (WINAPI *RegisterNotificationCallBack)(IAMTuner *This,IAMTunerNotification *pNotify,LONG lEvents);")
-cpp_quote("      HRESULT (WINAPI *UnRegisterNotificationCallBack)(IAMTuner *This,IAMTunerNotification *pNotify);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMTunerVtbl;")
-cpp_quote("  struct IAMTuner {")
-cpp_quote("    CONST_VTBL struct IAMTunerVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMTuner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMTuner_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMTuner_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMTuner_put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) (This)->lpVtbl->put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel)")
-cpp_quote("#define IAMTuner_get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) (This)->lpVtbl->get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel)")
-cpp_quote("#define IAMTuner_ChannelMinMax(This,lChannelMin,lChannelMax) (This)->lpVtbl->ChannelMinMax(This,lChannelMin,lChannelMax)")
-cpp_quote("#define IAMTuner_put_CountryCode(This,lCountryCode) (This)->lpVtbl->put_CountryCode(This,lCountryCode)")
-cpp_quote("#define IAMTuner_get_CountryCode(This,plCountryCode) (This)->lpVtbl->get_CountryCode(This,plCountryCode)")
-cpp_quote("#define IAMTuner_put_TuningSpace(This,lTuningSpace) (This)->lpVtbl->put_TuningSpace(This,lTuningSpace)")
-cpp_quote("#define IAMTuner_get_TuningSpace(This,plTuningSpace) (This)->lpVtbl->get_TuningSpace(This,plTuningSpace)")
-cpp_quote("#define IAMTuner_Logon(This,hCurrentUser) (This)->lpVtbl->Logon(This,hCurrentUser)")
-cpp_quote("#define IAMTuner_Logout(This) (This)->lpVtbl->Logout(This)")
-cpp_quote("#define IAMTuner_SignalPresent(This,plSignalStrength) (This)->lpVtbl->SignalPresent(This,plSignalStrength)")
-cpp_quote("#define IAMTuner_put_Mode(This,lMode) (This)->lpVtbl->put_Mode(This,lMode)")
-cpp_quote("#define IAMTuner_get_Mode(This,plMode) (This)->lpVtbl->get_Mode(This,plMode)")
-cpp_quote("#define IAMTuner_GetAvailableModes(This,plModes) (This)->lpVtbl->GetAvailableModes(This,plModes)")
-cpp_quote("#define IAMTuner_RegisterNotificationCallBack(This,pNotify,lEvents) (This)->lpVtbl->RegisterNotificationCallBack(This,pNotify,lEvents)")
-cpp_quote("#define IAMTuner_UnRegisterNotificationCallBack(This,pNotify) (This)->lpVtbl->UnRegisterNotificationCallBack(This,pNotify)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMTuner_put_Channel_Proxy(IAMTuner *This,LONG lChannel,LONG lVideoSubChannel,LONG lAudioSubChannel);")
-cpp_quote("  void __RPC_STUB IAMTuner_put_Channel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_get_Channel_Proxy(IAMTuner *This,LONG *plChannel,LONG *plVideoSubChannel,LONG *plAudioSubChannel);")
-cpp_quote("  void __RPC_STUB IAMTuner_get_Channel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_ChannelMinMax_Proxy(IAMTuner *This,LONG *lChannelMin,LONG *lChannelMax);")
-cpp_quote("  void __RPC_STUB IAMTuner_ChannelMinMax_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_put_CountryCode_Proxy(IAMTuner *This,LONG lCountryCode);")
-cpp_quote("  void __RPC_STUB IAMTuner_put_CountryCode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_get_CountryCode_Proxy(IAMTuner *This,LONG *plCountryCode);")
-cpp_quote("  void __RPC_STUB IAMTuner_get_CountryCode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_put_TuningSpace_Proxy(IAMTuner *This,LONG lTuningSpace);")
-cpp_quote("  void __RPC_STUB IAMTuner_put_TuningSpace_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_get_TuningSpace_Proxy(IAMTuner *This,LONG *plTuningSpace);")
-cpp_quote("  void __RPC_STUB IAMTuner_get_TuningSpace_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_Logon_Proxy(IAMTuner *This,HANDLE hCurrentUser);")
-cpp_quote("  void __RPC_STUB IAMTuner_Logon_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_Logout_Proxy(IAMTuner *This);")
-cpp_quote("  void __RPC_STUB IAMTuner_Logout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_SignalPresent_Proxy(IAMTuner *This,LONG *plSignalStrength);")
-cpp_quote("  void __RPC_STUB IAMTuner_SignalPresent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_put_Mode_Proxy(IAMTuner *This,AMTunerModeType lMode);")
-cpp_quote("  void __RPC_STUB IAMTuner_put_Mode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_get_Mode_Proxy(IAMTuner *This,AMTunerModeType *plMode);")
-cpp_quote("  void __RPC_STUB IAMTuner_get_Mode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_GetAvailableModes_Proxy(IAMTuner *This,LONG *plModes);")
-cpp_quote("  void __RPC_STUB IAMTuner_GetAvailableModes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_RegisterNotificationCallBack_Proxy(IAMTuner *This,IAMTunerNotification *pNotify,LONG lEvents);")
-cpp_quote("  void __RPC_STUB IAMTuner_RegisterNotificationCallBack_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTuner_UnRegisterNotificationCallBack_Proxy(IAMTuner *This,IAMTunerNotification *pNotify);")
-cpp_quote("  void __RPC_STUB IAMTuner_UnRegisterNotificationCallBack_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMTunerNotification_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMTunerNotification_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMTunerNotification;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMTunerNotification : public IUnknown {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI OnEvent(AMTunerEventType Event) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMTunerNotificationVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMTunerNotification *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMTunerNotification *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMTunerNotification *This);")
-cpp_quote("      HRESULT (WINAPI *OnEvent)(IAMTunerNotification *This,AMTunerEventType Event);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMTunerNotificationVtbl;")
-cpp_quote("  struct IAMTunerNotification {")
-cpp_quote("    CONST_VTBL struct IAMTunerNotificationVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMTunerNotification_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMTunerNotification_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMTunerNotification_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMTunerNotification_OnEvent(This,Event) (This)->lpVtbl->OnEvent(This,Event)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMTunerNotification_OnEvent_Proxy(IAMTunerNotification *This,AMTunerEventType Event);")
-cpp_quote("  void __RPC_STUB IAMTunerNotification_OnEvent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMTVTuner_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMTVTuner_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMTVTuner;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMTVTuner : public IAMTuner {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI get_AvailableTVFormats(LONG *lAnalogVideoStandard) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_TVFormat(LONG *plAnalogVideoStandard) = 0;")
-cpp_quote("    virtual HRESULT WINAPI AutoTune(LONG lChannel,LONG *plFoundSignal) = 0;")
-cpp_quote("    virtual HRESULT WINAPI StoreAutoTune(void) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_NumInputConnections(LONG *plNumInputConnections) = 0;")
-cpp_quote("    virtual HRESULT WINAPI put_InputType(LONG lIndex,TunerInputType InputType) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_InputType(LONG lIndex,TunerInputType *pInputType) = 0;")
-cpp_quote("    virtual HRESULT WINAPI put_ConnectInput(LONG lIndex) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_ConnectInput(LONG *plIndex) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_VideoFrequency(LONG *lFreq) = 0;")
-cpp_quote("    virtual HRESULT WINAPI get_AudioFrequency(LONG *lFreq) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMTVTunerVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMTVTuner *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMTVTuner *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMTVTuner *This);")
-cpp_quote("      HRESULT (WINAPI *put_Channel)(IAMTVTuner *This,LONG lChannel,LONG lVideoSubChannel,LONG lAudioSubChannel);")
-cpp_quote("      HRESULT (WINAPI *get_Channel)(IAMTVTuner *This,LONG *plChannel,LONG *plVideoSubChannel,LONG *plAudioSubChannel);")
-cpp_quote("      HRESULT (WINAPI *ChannelMinMax)(IAMTVTuner *This,LONG *lChannelMin,LONG *lChannelMax);")
-cpp_quote("      HRESULT (WINAPI *put_CountryCode)(IAMTVTuner *This,LONG lCountryCode);")
-cpp_quote("      HRESULT (WINAPI *get_CountryCode)(IAMTVTuner *This,LONG *plCountryCode);")
-cpp_quote("      HRESULT (WINAPI *put_TuningSpace)(IAMTVTuner *This,LONG lTuningSpace);")
-cpp_quote("      HRESULT (WINAPI *get_TuningSpace)(IAMTVTuner *This,LONG *plTuningSpace);")
-cpp_quote("      HRESULT (WINAPI *Logon)(IAMTVTuner *This,HANDLE hCurrentUser);")
-cpp_quote("      HRESULT (WINAPI *Logout)(IAMTVTuner *This);")
-cpp_quote("      HRESULT (WINAPI *SignalPresent)(IAMTVTuner *This,LONG *plSignalStrength);")
-cpp_quote("      HRESULT (WINAPI *put_Mode)(IAMTVTuner *This,AMTunerModeType lMode);")
-cpp_quote("      HRESULT (WINAPI *get_Mode)(IAMTVTuner *This,AMTunerModeType *plMode);")
-cpp_quote("      HRESULT (WINAPI *GetAvailableModes)(IAMTVTuner *This,LONG *plModes);")
-cpp_quote("      HRESULT (WINAPI *RegisterNotificationCallBack)(IAMTVTuner *This,IAMTunerNotification *pNotify,LONG lEvents);")
-cpp_quote("      HRESULT (WINAPI *UnRegisterNotificationCallBack)(IAMTVTuner *This,IAMTunerNotification *pNotify);")
-cpp_quote("      HRESULT (WINAPI *get_AvailableTVFormats)(IAMTVTuner *This,LONG *lAnalogVideoStandard);")
-cpp_quote("      HRESULT (WINAPI *get_TVFormat)(IAMTVTuner *This,LONG *plAnalogVideoStandard);")
-cpp_quote("      HRESULT (WINAPI *AutoTune)(IAMTVTuner *This,LONG lChannel,LONG *plFoundSignal);")
-cpp_quote("      HRESULT (WINAPI *StoreAutoTune)(IAMTVTuner *This);")
-cpp_quote("      HRESULT (WINAPI *get_NumInputConnections)(IAMTVTuner *This,LONG *plNumInputConnections);")
-cpp_quote("      HRESULT (WINAPI *put_InputType)(IAMTVTuner *This,LONG lIndex,TunerInputType InputType);")
-cpp_quote("      HRESULT (WINAPI *get_InputType)(IAMTVTuner *This,LONG lIndex,TunerInputType *pInputType);")
-cpp_quote("      HRESULT (WINAPI *put_ConnectInput)(IAMTVTuner *This,LONG lIndex);")
-cpp_quote("      HRESULT (WINAPI *get_ConnectInput)(IAMTVTuner *This,LONG *plIndex);")
-cpp_quote("      HRESULT (WINAPI *get_VideoFrequency)(IAMTVTuner *This,LONG *lFreq);")
-cpp_quote("      HRESULT (WINAPI *get_AudioFrequency)(IAMTVTuner *This,LONG *lFreq);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMTVTunerVtbl;")
-cpp_quote("  struct IAMTVTuner {")
-cpp_quote("    CONST_VTBL struct IAMTVTunerVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMTVTuner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMTVTuner_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMTVTuner_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMTVTuner_put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) (This)->lpVtbl->put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel)")
-cpp_quote("#define IAMTVTuner_get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) (This)->lpVtbl->get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel)")
-cpp_quote("#define IAMTVTuner_ChannelMinMax(This,lChannelMin,lChannelMax) (This)->lpVtbl->ChannelMinMax(This,lChannelMin,lChannelMax)")
-cpp_quote("#define IAMTVTuner_put_CountryCode(This,lCountryCode) (This)->lpVtbl->put_CountryCode(This,lCountryCode)")
-cpp_quote("#define IAMTVTuner_get_CountryCode(This,plCountryCode) (This)->lpVtbl->get_CountryCode(This,plCountryCode)")
-cpp_quote("#define IAMTVTuner_put_TuningSpace(This,lTuningSpace) (This)->lpVtbl->put_TuningSpace(This,lTuningSpace)")
-cpp_quote("#define IAMTVTuner_get_TuningSpace(This,plTuningSpace) (This)->lpVtbl->get_TuningSpace(This,plTuningSpace)")
-cpp_quote("#define IAMTVTuner_Logon(This,hCurrentUser) (This)->lpVtbl->Logon(This,hCurrentUser)")
-cpp_quote("#define IAMTVTuner_Logout(This) (This)->lpVtbl->Logout(This)")
-cpp_quote("#define IAMTVTuner_SignalPresent(This,plSignalStrength) (This)->lpVtbl->SignalPresent(This,plSignalStrength)")
-cpp_quote("#define IAMTVTuner_put_Mode(This,lMode) (This)->lpVtbl->put_Mode(This,lMode)")
-cpp_quote("#define IAMTVTuner_get_Mode(This,plMode) (This)->lpVtbl->get_Mode(This,plMode)")
-cpp_quote("#define IAMTVTuner_GetAvailableModes(This,plModes) (This)->lpVtbl->GetAvailableModes(This,plModes)")
-cpp_quote("#define IAMTVTuner_RegisterNotificationCallBack(This,pNotify,lEvents) (This)->lpVtbl->RegisterNotificationCallBack(This,pNotify,lEvents)")
-cpp_quote("#define IAMTVTuner_UnRegisterNotificationCallBack(This,pNotify) (This)->lpVtbl->UnRegisterNotificationCallBack(This,pNotify)")
-cpp_quote("#define IAMTVTuner_get_AvailableTVFormats(This,lAnalogVideoStandard) (This)->lpVtbl->get_AvailableTVFormats(This,lAnalogVideoStandard)")
-cpp_quote("#define IAMTVTuner_get_TVFormat(This,plAnalogVideoStandard) (This)->lpVtbl->get_TVFormat(This,plAnalogVideoStandard)")
-cpp_quote("#define IAMTVTuner_AutoTune(This,lChannel,plFoundSignal) (This)->lpVtbl->AutoTune(This,lChannel,plFoundSignal)")
-cpp_quote("#define IAMTVTuner_StoreAutoTune(This) (This)->lpVtbl->StoreAutoTune(This)")
-cpp_quote("#define IAMTVTuner_get_NumInputConnections(This,plNumInputConnections) (This)->lpVtbl->get_NumInputConnections(This,plNumInputConnections)")
-cpp_quote("#define IAMTVTuner_put_InputType(This,lIndex,InputType) (This)->lpVtbl->put_InputType(This,lIndex,InputType)")
-cpp_quote("#define IAMTVTuner_get_InputType(This,lIndex,pInputType) (This)->lpVtbl->get_InputType(This,lIndex,pInputType)")
-cpp_quote("#define IAMTVTuner_put_ConnectInput(This,lIndex) (This)->lpVtbl->put_ConnectInput(This,lIndex)")
-cpp_quote("#define IAMTVTuner_get_ConnectInput(This,plIndex) (This)->lpVtbl->get_ConnectInput(This,plIndex)")
-cpp_quote("#define IAMTVTuner_get_VideoFrequency(This,lFreq) (This)->lpVtbl->get_VideoFrequency(This,lFreq)")
-cpp_quote("#define IAMTVTuner_get_AudioFrequency(This,lFreq) (This)->lpVtbl->get_AudioFrequency(This,lFreq)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_get_AvailableTVFormats_Proxy(IAMTVTuner *This,LONG *lAnalogVideoStandard);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_get_AvailableTVFormats_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_get_TVFormat_Proxy(IAMTVTuner *This,LONG *plAnalogVideoStandard);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_get_TVFormat_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_AutoTune_Proxy(IAMTVTuner *This,LONG lChannel,LONG *plFoundSignal);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_AutoTune_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_StoreAutoTune_Proxy(IAMTVTuner *This);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_StoreAutoTune_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_get_NumInputConnections_Proxy(IAMTVTuner *This,LONG *plNumInputConnections);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_get_NumInputConnections_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_put_InputType_Proxy(IAMTVTuner *This,LONG lIndex,TunerInputType InputType);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_put_InputType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_get_InputType_Proxy(IAMTVTuner *This,LONG lIndex,TunerInputType *pInputType);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_get_InputType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_put_ConnectInput_Proxy(IAMTVTuner *This,LONG lIndex);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_put_ConnectInput_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_get_ConnectInput_Proxy(IAMTVTuner *This,LONG *plIndex);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_get_ConnectInput_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_get_VideoFrequency_Proxy(IAMTVTuner *This,LONG *lFreq);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_get_VideoFrequency_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMTVTuner_get_AudioFrequency_Proxy(IAMTVTuner *This,LONG *lFreq);")
-cpp_quote("  void __RPC_STUB IAMTVTuner_get_AudioFrequency_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
 cpp_quote("")
 cpp_quote("#ifndef __IBPCSatelliteTuner_INTERFACE_DEFINED__")
 cpp_quote("#define __IBPCSatelliteTuner_INTERFACE_DEFINED__")
@@ -1608,10 +986,6 @@
 cpp_quote("  void __RPC_STUB IAMAnalogVideoEncoder_get_CCEnable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
 cpp_quote("#endif")
 cpp_quote("")
-cpp_quote("  typedef enum __MIDL___MIDL_itf_strmif_0185_0001 {")
-cpp_quote("    AMPROPERTY_PIN_CATEGORY = 0,AMPROPERTY_PIN_MEDIUM = AMPROPERTY_PIN_CATEGORY + 1")
-cpp_quote("  } AMPROPERTY_PIN;")
-cpp_quote("")
 cpp_quote("#ifndef __IAMPhysicalPinInfo_INTERFACE_DEFINED__")
 cpp_quote("#define __IAMPhysicalPinInfo_INTERFACE_DEFINED__")
 cpp_quote("  EXTERN_C const IID IID_IAMPhysicalPinInfo;")
@@ -2415,47 +1789,6 @@
 cpp_quote("  void __RPC_STUB IAMVideoDecimationProperties_SetDecimationUsage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
 cpp_quote("#endif")
 cpp_quote("")
-cpp_quote("#ifndef __IVideoFrameStep_INTERFACE_DEFINED__")
-cpp_quote("#define __IVideoFrameStep_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IVideoFrameStep;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IVideoFrameStep : public IUnknown {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI Step(DWORD dwFrames,IUnknown *pStepObject) = 0;")
-cpp_quote("    virtual HRESULT WINAPI CanStep(LONG bMultiple,IUnknown *pStepObject) = 0;")
-cpp_quote("    virtual HRESULT WINAPI CancelStep(void) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IVideoFrameStepVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IVideoFrameStep *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IVideoFrameStep *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IVideoFrameStep *This);")
-cpp_quote("      HRESULT (WINAPI *Step)(IVideoFrameStep *This,DWORD dwFrames,IUnknown *pStepObject);")
-cpp_quote("      HRESULT (WINAPI *CanStep)(IVideoFrameStep *This,LONG bMultiple,IUnknown *pStepObject);")
-cpp_quote("      HRESULT (WINAPI *CancelStep)(IVideoFrameStep *This);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IVideoFrameStepVtbl;")
-cpp_quote("  struct IVideoFrameStep {")
-cpp_quote("    CONST_VTBL struct IVideoFrameStepVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IVideoFrameStep_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IVideoFrameStep_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IVideoFrameStep_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IVideoFrameStep_Step(This,dwFrames,pStepObject) (This)->lpVtbl->Step(This,dwFrames,pStepObject)")
-cpp_quote("#define IVideoFrameStep_CanStep(This,bMultiple,pStepObject) (This)->lpVtbl->CanStep(This,bMultiple,pStepObject)")
-cpp_quote("#define IVideoFrameStep_CancelStep(This) (This)->lpVtbl->CancelStep(This)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IVideoFrameStep_Step_Proxy(IVideoFrameStep *This,DWORD dwFrames,IUnknown *pStepObject);")
-cpp_quote("  void __RPC_STUB IVideoFrameStep_Step_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IVideoFrameStep_CanStep_Proxy(IVideoFrameStep *This,LONG bMultiple,IUnknown *pStepObject);")
-cpp_quote("  void __RPC_STUB IVideoFrameStep_CanStep_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IVideoFrameStep_CancelStep_Proxy(IVideoFrameStep *This);")
-cpp_quote("  void __RPC_STUB IVideoFrameStep_CancelStep_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
-cpp_quote("")
 cpp_quote("  enum _AM_PUSHSOURCE_FLAGS {")
 cpp_quote("    AM_PUSHSOURCECAPS_INTERNAL_RM = 0x1,AM_PUSHSOURCECAPS_NOT_LIVE = 0x2,AM_PUSHSOURCECAPS_PRIVATE_CLOCK = 0x4,")
 cpp_quote("    AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = 0x10000,AM_PUSHSOURCEREQS_USE_CLOCK_CHAIN = 0x20000")
@@ -2463,94 +1796,6 @@
 cpp_quote("")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0353_v0_0_c_ifspec;")
 cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_strmif_0353_v0_0_s_ifspec;")
-cpp_quote("#ifndef __IAMLatency_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMLatency_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMLatency;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMLatency : public IUnknown {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI GetLatency(REFERENCE_TIME *prtLatency) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMLatencyVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMLatency *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMLatency *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMLatency *This);")
-cpp_quote("      HRESULT (WINAPI *GetLatency)(IAMLatency *This,REFERENCE_TIME *prtLatency);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMLatencyVtbl;")
-cpp_quote("  struct IAMLatency {")
-cpp_quote("    CONST_VTBL struct IAMLatencyVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMLatency_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMLatency_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMLatency_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMLatency_GetLatency(This,prtLatency) (This)->lpVtbl->GetLatency(This,prtLatency)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMLatency_GetLatency_Proxy(IAMLatency *This,REFERENCE_TIME *prtLatency);")
-cpp_quote("  void __RPC_STUB IAMLatency_GetLatency_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
-cpp_quote("")
-cpp_quote("#ifndef __IAMPushSource_INTERFACE_DEFINED__")
-cpp_quote("#define __IAMPushSource_INTERFACE_DEFINED__")
-cpp_quote("  EXTERN_C const IID IID_IAMPushSource;")
-cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
-cpp_quote("  struct IAMPushSource : public IAMLatency {")
-cpp_quote("  public:")
-cpp_quote("    virtual HRESULT WINAPI GetPushSourceFlags(ULONG *pFlags) = 0;")
-cpp_quote("    virtual HRESULT WINAPI SetPushSourceFlags(ULONG Flags) = 0;")
-cpp_quote("    virtual HRESULT WINAPI SetStreamOffset(REFERENCE_TIME rtOffset) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetStreamOffset(REFERENCE_TIME *prtOffset) = 0;")
-cpp_quote("    virtual HRESULT WINAPI GetMaxStreamOffset(REFERENCE_TIME *prtMaxOffset) = 0;")
-cpp_quote("    virtual HRESULT WINAPI SetMaxStreamOffset(REFERENCE_TIME rtMaxOffset) = 0;")
-cpp_quote("  };")
-cpp_quote("#else")
-cpp_quote("  typedef struct IAMPushSourceVtbl {")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAMPushSource *This,REFIID riid,void **ppvObject);")
-cpp_quote("      ULONG (WINAPI *AddRef)(IAMPushSource *This);")
-cpp_quote("      ULONG (WINAPI *Release)(IAMPushSource *This);")
-cpp_quote("      HRESULT (WINAPI *GetLatency)(IAMPushSource *This,REFERENCE_TIME *prtLatency);")
-cpp_quote("      HRESULT (WINAPI *GetPushSourceFlags)(IAMPushSource *This,ULONG *pFlags);")
-cpp_quote("      HRESULT (WINAPI *SetPushSourceFlags)(IAMPushSource *This,ULONG Flags);")
-cpp_quote("      HRESULT (WINAPI *SetStreamOffset)(IAMPushSource *This,REFERENCE_TIME rtOffset);")
-cpp_quote("      HRESULT (WINAPI *GetStreamOffset)(IAMPushSource *This,REFERENCE_TIME *prtOffset);")
-cpp_quote("      HRESULT (WINAPI *GetMaxStreamOffset)(IAMPushSource *This,REFERENCE_TIME *prtMaxOffset);")
-cpp_quote("      HRESULT (WINAPI *SetMaxStreamOffset)(IAMPushSource *This,REFERENCE_TIME rtMaxOffset);")
-cpp_quote("    END_INTERFACE")
-cpp_quote("  } IAMPushSourceVtbl;")
-cpp_quote("  struct IAMPushSource {")
-cpp_quote("    CONST_VTBL struct IAMPushSourceVtbl *lpVtbl;")
-cpp_quote("  };")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IAMPushSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IAMPushSource_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IAMPushSource_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IAMPushSource_GetLatency(This,prtLatency) (This)->lpVtbl->GetLatency(This,prtLatency)")
-cpp_quote("#define IAMPushSource_GetPushSourceFlags(This,pFlags) (This)->lpVtbl->GetPushSourceFlags(This,pFlags)")
-cpp_quote("#define IAMPushSource_SetPushSourceFlags(This,Flags) (This)->lpVtbl->SetPushSourceFlags(This,Flags)")
-cpp_quote("#define IAMPushSource_SetStreamOffset(This,rtOffset) (This)->lpVtbl->SetStreamOffset(This,rtOffset)")
-cpp_quote("#define IAMPushSource_GetStreamOffset(This,prtOffset) (This)->lpVtbl->GetStreamOffset(This,prtOffset)")
-cpp_quote("#define IAMPushSource_GetMaxStreamOffset(This,prtMaxOffset) (This)->lpVtbl->GetMaxStreamOffset(This,prtMaxOffset)")
-cpp_quote("#define IAMPushSource_SetMaxStreamOffset(This,rtMaxOffset) (This)->lpVtbl->SetMaxStreamOffset(This,rtMaxOffset)")
-cpp_quote("#endif")
-cpp_quote("#endif")
-cpp_quote("  HRESULT WINAPI IAMPushSource_GetPushSourceFlags_Proxy(IAMPushSource *This,ULONG *pFlags);")
-cpp_quote("  void __RPC_STUB IAMPushSource_GetPushSourceFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMPushSource_SetPushSourceFlags_Proxy(IAMPushSource *This,ULONG Flags);")
-cpp_quote("  void __RPC_STUB IAMPushSource_SetPushSourceFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMPushSource_SetStreamOffset_Proxy(IAMPushSource *This,REFERENCE_TIME rtOffset);")
-cpp_quote("  void __RPC_STUB IAMPushSource_SetStreamOffset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMPushSource_GetStreamOffset_Proxy(IAMPushSource *This,REFERENCE_TIME *prtOffset);")
-cpp_quote("  void __RPC_STUB IAMPushSource_GetStreamOffset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMPushSource_GetMaxStreamOffset_Proxy(IAMPushSource *This,REFERENCE_TIME *prtMaxOffset);")
-cpp_quote("  void __RPC_STUB IAMPushSource_GetMaxStreamOffset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("  HRESULT WINAPI IAMPushSource_SetMaxStreamOffset_Proxy(IAMPushSource *This,REFERENCE_TIME rtMaxOffset);")
-cpp_quote("  void __RPC_STUB IAMPushSource_SetMaxStreamOffset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
-cpp_quote("#endif")
 cpp_quote("")
 cpp_quote("#ifndef __IAMDeviceRemoval_INTERFACE_DEFINED__")
 cpp_quote("#define __IAMDeviceRemoval_INTERFACE_DEFINED__")
