Home | History | Annotate | Download | only in include
      1 /*** Autogenerated by WIDL 1.6 from include/mediaobj.idl - Do not edit ***/
      2 
      3 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      4 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      5 #endif
      6 
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 
     10 #ifndef COM_NO_WINDOWS_H
     11 #include <windows.h>
     12 #include <ole2.h>
     13 #endif
     14 
     15 #ifndef __mediaobj_h__
     16 #define __mediaobj_h__
     17 
     18 /* Forward declarations */
     19 
     20 #ifndef __IMediaBuffer_FWD_DEFINED__
     21 #define __IMediaBuffer_FWD_DEFINED__
     22 typedef interface IMediaBuffer IMediaBuffer;
     23 #endif
     24 
     25 #ifndef __IMediaObject_FWD_DEFINED__
     26 #define __IMediaObject_FWD_DEFINED__
     27 typedef interface IMediaObject IMediaObject;
     28 #endif
     29 
     30 #ifndef __IEnumDMO_FWD_DEFINED__
     31 #define __IEnumDMO_FWD_DEFINED__
     32 typedef interface IEnumDMO IEnumDMO;
     33 #endif
     34 
     35 #ifndef __IMediaObjectInPlace_FWD_DEFINED__
     36 #define __IMediaObjectInPlace_FWD_DEFINED__
     37 typedef interface IMediaObjectInPlace IMediaObjectInPlace;
     38 #endif
     39 
     40 #ifndef __IDMOQualityControl_FWD_DEFINED__
     41 #define __IDMOQualityControl_FWD_DEFINED__
     42 typedef interface IDMOQualityControl IDMOQualityControl;
     43 #endif
     44 
     45 #ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__
     46 #define __IDMOVideoOutputOptimizations_FWD_DEFINED__
     47 typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations;
     48 #endif
     49 
     50 /* Headers for imported files */
     51 
     52 #include <unknwn.h>
     53 #include <objidl.h>
     54 
     55 #ifdef __cplusplus
     56 extern "C" {
     57 #endif
     58 
     59 /**
     60  * This file is part of the mingw-w64 runtime package.
     61  * No warranty is given; refer to the file DISCLAIMER within this package.
     62  */
     63 
     64 #include <winapifamily.h>
     65 
     66 
     67 #ifdef __strmif_h__
     68 typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE;
     69 #else
     70 typedef struct _DMOMediaType {
     71     GUID majortype;
     72     GUID subtype;
     73     WINBOOL bFixedSizeSamples;
     74     WINBOOL bTemporalCompression;
     75     ULONG lSampleSize;
     76     GUID formattype;
     77     IUnknown *pUnk;
     78     ULONG cbFormat;
     79     BYTE *pbFormat;
     80 } DMO_MEDIA_TYPE;
     81 
     82 typedef LONGLONG REFERENCE_TIME;
     83 #endif
     84 
     85 enum _DMO_INPUT_DATA_BUFFER_FLAGS {
     86     DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
     87     DMO_INPUT_DATA_BUFFERF_TIME = 0x2,
     88     DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x4,
     89     DMO_INPUT_DATA_BUFFERF_DISCONTINUITY = 0x8
     90 };
     91 
     92 
     93 enum _DMO_OUTPUT_DATA_BUFFER_FLAGS {
     94     DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
     95     DMO_OUTPUT_DATA_BUFFERF_TIME = 0x2,
     96     DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x4,
     97     DMO_OUTPUT_DATA_BUFFERF_DISCONTINUITY = 0x8,
     98     DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x1000000
     99 };
    100 
    101 
    102 enum _DMO_INPUT_STATUS_FLAGS {
    103     DMO_INPUT_STATUSF_ACCEPT_DATA = 0x1
    104 };
    105 
    106 
    107 enum _DMO_INPUT_STREAM_INFO_FLAGS {
    108     DMO_INPUT_STREAMF_WHOLE_SAMPLES = 0x1,
    109     DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x2,
    110     DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x4,
    111     DMO_INPUT_STREAMF_HOLDS_BUFFERS = 0x8
    112 };
    113 
    114 
    115 enum _DMO_OUTPUT_STREAM_INFO_FLAGS {
    116     DMO_OUTPUT_STREAMF_WHOLE_SAMPLES = 0x1,
    117     DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x2,
    118     DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x4,
    119     DMO_OUTPUT_STREAMF_DISCARDABLE = 0x8,
    120     DMO_OUTPUT_STREAMF_OPTIONAL = 0x10
    121 };
    122 
    123 
    124 enum _DMO_SET_TYPE_FLAGS {
    125     DMO_SET_TYPEF_TEST_ONLY = 0x1,
    126     DMO_SET_TYPEF_CLEAR = 0x2
    127 };
    128 
    129 
    130 enum _DMO_PROCESS_OUTPUT_FLAGS {
    131     DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x1
    132 };
    133 
    134 
    135 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    136 enum _DMO_INPLACE_PROCESS_FLAGS {
    137     DMO_INPLACE_NORMAL = 0x0,
    138     DMO_INPLACE_ZERO = 0x1
    139 };
    140 
    141 
    142 enum _DMO_QUALITY_STATUS_FLAGS {
    143     DMO_QUALITY_STATUS_ENABLED = 0x1
    144 };
    145 
    146 
    147 enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS {
    148     DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x1
    149 };
    150 
    151 
    152 /*****************************************************************************
    153  * IMediaBuffer interface
    154  */
    155 #ifndef __IMediaBuffer_INTERFACE_DEFINED__
    156 #define __IMediaBuffer_INTERFACE_DEFINED__
    157 
    158 DEFINE_GUID(IID_IMediaBuffer, 0x59eff8b9, 0x938c, 0x4a26, 0x82,0xf2, 0x95,0xcb,0x84,0xcd,0xc8,0x37);
    159 #if defined(__cplusplus) && !defined(CINTERFACE)
    160 MIDL_INTERFACE("59eff8b9-938c-4a26-82f2-95cb84cdc837")
    161 IMediaBuffer : public IUnknown
    162 {
    163     virtual HRESULT STDMETHODCALLTYPE SetLength(
    164         DWORD cbLength) = 0;
    165 
    166     virtual HRESULT STDMETHODCALLTYPE GetMaxLength(
    167         DWORD *pcbMaxLength) = 0;
    168 
    169     virtual HRESULT STDMETHODCALLTYPE GetBufferAndLength(
    170         BYTE **ppBuffer,
    171         DWORD *pcbLength) = 0;
    172 
    173 };
    174 #ifdef __CRT_UUID_DECL
    175 __CRT_UUID_DECL(IMediaBuffer, 0x59eff8b9, 0x938c, 0x4a26, 0x82,0xf2, 0x95,0xcb,0x84,0xcd,0xc8,0x37)
    176 #endif
    177 #else
    178 typedef struct IMediaBufferVtbl {
    179     BEGIN_INTERFACE
    180 
    181     /*** IUnknown methods ***/
    182     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    183         IMediaBuffer* This,
    184         REFIID riid,
    185         void **ppvObject);
    186 
    187     ULONG (STDMETHODCALLTYPE *AddRef)(
    188         IMediaBuffer* This);
    189 
    190     ULONG (STDMETHODCALLTYPE *Release)(
    191         IMediaBuffer* This);
    192 
    193     /*** IMediaBuffer methods ***/
    194     HRESULT (STDMETHODCALLTYPE *SetLength)(
    195         IMediaBuffer* This,
    196         DWORD cbLength);
    197 
    198     HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
    199         IMediaBuffer* This,
    200         DWORD *pcbMaxLength);
    201 
    202     HRESULT (STDMETHODCALLTYPE *GetBufferAndLength)(
    203         IMediaBuffer* This,
    204         BYTE **ppBuffer,
    205         DWORD *pcbLength);
    206 
    207     END_INTERFACE
    208 } IMediaBufferVtbl;
    209 interface IMediaBuffer {
    210     CONST_VTBL IMediaBufferVtbl* lpVtbl;
    211 };
    212 
    213 #ifdef COBJMACROS
    214 #ifndef WIDL_C_INLINE_WRAPPERS
    215 /*** IUnknown methods ***/
    216 #define IMediaBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    217 #define IMediaBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
    218 #define IMediaBuffer_Release(This) (This)->lpVtbl->Release(This)
    219 /*** IMediaBuffer methods ***/
    220 #define IMediaBuffer_SetLength(This,cbLength) (This)->lpVtbl->SetLength(This,cbLength)
    221 #define IMediaBuffer_GetMaxLength(This,pcbMaxLength) (This)->lpVtbl->GetMaxLength(This,pcbMaxLength)
    222 #define IMediaBuffer_GetBufferAndLength(This,ppBuffer,pcbLength) (This)->lpVtbl->GetBufferAndLength(This,ppBuffer,pcbLength)
    223 #else
    224 /*** IUnknown methods ***/
    225 static FORCEINLINE HRESULT IMediaBuffer_QueryInterface(IMediaBuffer* This,REFIID riid,void **ppvObject) {
    226     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    227 }
    228 static FORCEINLINE ULONG IMediaBuffer_AddRef(IMediaBuffer* This) {
    229     return This->lpVtbl->AddRef(This);
    230 }
    231 static FORCEINLINE ULONG IMediaBuffer_Release(IMediaBuffer* This) {
    232     return This->lpVtbl->Release(This);
    233 }
    234 /*** IMediaBuffer methods ***/
    235 static FORCEINLINE HRESULT IMediaBuffer_SetLength(IMediaBuffer* This,DWORD cbLength) {
    236     return This->lpVtbl->SetLength(This,cbLength);
    237 }
    238 static FORCEINLINE HRESULT IMediaBuffer_GetMaxLength(IMediaBuffer* This,DWORD *pcbMaxLength) {
    239     return This->lpVtbl->GetMaxLength(This,pcbMaxLength);
    240 }
    241 static FORCEINLINE HRESULT IMediaBuffer_GetBufferAndLength(IMediaBuffer* This,BYTE **ppBuffer,DWORD *pcbLength) {
    242     return This->lpVtbl->GetBufferAndLength(This,ppBuffer,pcbLength);
    243 }
    244 #endif
    245 #endif
    246 
    247 #endif
    248 
    249 HRESULT STDMETHODCALLTYPE IMediaBuffer_SetLength_Proxy(
    250     IMediaBuffer* This,
    251     DWORD cbLength);
    252 void __RPC_STUB IMediaBuffer_SetLength_Stub(
    253     IRpcStubBuffer* This,
    254     IRpcChannelBuffer* pRpcChannelBuffer,
    255     PRPC_MESSAGE pRpcMessage,
    256     DWORD* pdwStubPhase);
    257 HRESULT STDMETHODCALLTYPE IMediaBuffer_GetMaxLength_Proxy(
    258     IMediaBuffer* This,
    259     DWORD *pcbMaxLength);
    260 void __RPC_STUB IMediaBuffer_GetMaxLength_Stub(
    261     IRpcStubBuffer* This,
    262     IRpcChannelBuffer* pRpcChannelBuffer,
    263     PRPC_MESSAGE pRpcMessage,
    264     DWORD* pdwStubPhase);
    265 HRESULT STDMETHODCALLTYPE IMediaBuffer_GetBufferAndLength_Proxy(
    266     IMediaBuffer* This,
    267     BYTE **ppBuffer,
    268     DWORD *pcbLength);
    269 void __RPC_STUB IMediaBuffer_GetBufferAndLength_Stub(
    270     IRpcStubBuffer* This,
    271     IRpcChannelBuffer* pRpcChannelBuffer,
    272     PRPC_MESSAGE pRpcMessage,
    273     DWORD* pdwStubPhase);
    274 
    275 #endif  /* __IMediaBuffer_INTERFACE_DEFINED__ */
    276 
    277 
    278 typedef struct _DMO_OUTPUT_DATA_BUFFER {
    279     IMediaBuffer *pBuffer;
    280     DWORD dwStatus;
    281     REFERENCE_TIME rtTimestamp;
    282     REFERENCE_TIME rtTimelength;
    283 } DMO_OUTPUT_DATA_BUFFER;
    284 typedef struct _DMO_OUTPUT_DATA_BUFFER *PDMO_OUTPUT_DATA_BUFFER;
    285 
    286 /*****************************************************************************
    287  * IMediaObject interface
    288  */
    289 #ifndef __IMediaObject_INTERFACE_DEFINED__
    290 #define __IMediaObject_INTERFACE_DEFINED__
    291 
    292 DEFINE_GUID(IID_IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4);
    293 #if defined(__cplusplus) && !defined(CINTERFACE)
    294 MIDL_INTERFACE("d8ad0f58-5494-4102-97c5-ec798e59bcf4")
    295 IMediaObject : public IUnknown
    296 {
    297     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
    298         DWORD *pcInputStreams,
    299         DWORD *pcOutputStreams) = 0;
    300 
    301     virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo(
    302         DWORD dwInputStreamIndex,
    303         DWORD *pdwFlags) = 0;
    304 
    305     virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo(
    306         DWORD dwOutputStreamIndex,
    307         DWORD *pdwFlags) = 0;
    308 
    309     virtual HRESULT STDMETHODCALLTYPE GetInputType(
    310         DWORD dwInputStreamIndex,
    311         DWORD dwTypeIndex,
    312         DMO_MEDIA_TYPE *pmt) = 0;
    313 
    314     virtual HRESULT STDMETHODCALLTYPE GetOutputType(
    315         DWORD dwOutputStreamIndex,
    316         DWORD dwTypeIndex,
    317         DMO_MEDIA_TYPE *pmt) = 0;
    318 
    319     virtual HRESULT STDMETHODCALLTYPE SetInputType(
    320         DWORD dwInputStreamIndex,
    321         const DMO_MEDIA_TYPE *pmt,
    322         DWORD dwFlags) = 0;
    323 
    324     virtual HRESULT STDMETHODCALLTYPE SetOutputType(
    325         DWORD dwOutputStreamIndex,
    326         const DMO_MEDIA_TYPE *pmt,
    327         DWORD dwFlags) = 0;
    328 
    329     virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType(
    330         DWORD dwInputStreamIndex,
    331         DMO_MEDIA_TYPE *pmt) = 0;
    332 
    333     virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType(
    334         DWORD dwOutputStreamIndex,
    335         DMO_MEDIA_TYPE *pmt) = 0;
    336 
    337     virtual HRESULT STDMETHODCALLTYPE GetInputSizeInfo(
    338         DWORD dwInputStreamIndex,
    339         DWORD *pcbSize,
    340         DWORD *pcbMaxLookahead,
    341         DWORD *pcbAlignment) = 0;
    342 
    343     virtual HRESULT STDMETHODCALLTYPE GetOutputSizeInfo(
    344         DWORD dwOutputStreamIndex,
    345         DWORD *pcbSize,
    346         DWORD *pcbAlignment) = 0;
    347 
    348     virtual HRESULT STDMETHODCALLTYPE GetInputMaxLatency(
    349         DWORD dwInputStreamIndex,
    350         REFERENCE_TIME *prtMaxLatency) = 0;
    351 
    352     virtual HRESULT STDMETHODCALLTYPE SetInputMaxLatency(
    353         DWORD dwInputStreamIndex,
    354         REFERENCE_TIME rtMaxLatency) = 0;
    355 
    356     virtual HRESULT STDMETHODCALLTYPE Flush(
    357         ) = 0;
    358 
    359     virtual HRESULT STDMETHODCALLTYPE Discontinuity(
    360         DWORD dwInputStreamIndex) = 0;
    361 
    362     virtual HRESULT STDMETHODCALLTYPE AllocateStreamingResources(
    363         ) = 0;
    364 
    365     virtual HRESULT STDMETHODCALLTYPE FreeStreamingResources(
    366         ) = 0;
    367 
    368     virtual HRESULT STDMETHODCALLTYPE GetInputStatus(
    369         DWORD dwInputStreamIndex,
    370         DWORD *dwFlags) = 0;
    371 
    372     virtual HRESULT STDMETHODCALLTYPE ProcessInput(
    373         DWORD dwInputStreamIndex,
    374         IMediaBuffer *pBuffer,
    375         DWORD dwFlags,
    376         REFERENCE_TIME rtTimestamp,
    377         REFERENCE_TIME rtTimelength) = 0;
    378 
    379     virtual HRESULT STDMETHODCALLTYPE ProcessOutput(
    380         DWORD dwFlags,
    381         DWORD cOutputBufferCount,
    382         DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
    383         DWORD *pdwStatus) = 0;
    384 
    385     virtual HRESULT STDMETHODCALLTYPE Lock(
    386         LONG bLock) = 0;
    387 
    388 };
    389 #ifdef __CRT_UUID_DECL
    390 __CRT_UUID_DECL(IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4)
    391 #endif
    392 #else
    393 typedef struct IMediaObjectVtbl {
    394     BEGIN_INTERFACE
    395 
    396     /*** IUnknown methods ***/
    397     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    398         IMediaObject* This,
    399         REFIID riid,
    400         void **ppvObject);
    401 
    402     ULONG (STDMETHODCALLTYPE *AddRef)(
    403         IMediaObject* This);
    404 
    405     ULONG (STDMETHODCALLTYPE *Release)(
    406         IMediaObject* This);
    407 
    408     /*** IMediaObject methods ***/
    409     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
    410         IMediaObject* This,
    411         DWORD *pcInputStreams,
    412         DWORD *pcOutputStreams);
    413 
    414     HRESULT (STDMETHODCALLTYPE *GetInputStreamInfo)(
    415         IMediaObject* This,
    416         DWORD dwInputStreamIndex,
    417         DWORD *pdwFlags);
    418 
    419     HRESULT (STDMETHODCALLTYPE *GetOutputStreamInfo)(
    420         IMediaObject* This,
    421         DWORD dwOutputStreamIndex,
    422         DWORD *pdwFlags);
    423 
    424     HRESULT (STDMETHODCALLTYPE *GetInputType)(
    425         IMediaObject* This,
    426         DWORD dwInputStreamIndex,
    427         DWORD dwTypeIndex,
    428         DMO_MEDIA_TYPE *pmt);
    429 
    430     HRESULT (STDMETHODCALLTYPE *GetOutputType)(
    431         IMediaObject* This,
    432         DWORD dwOutputStreamIndex,
    433         DWORD dwTypeIndex,
    434         DMO_MEDIA_TYPE *pmt);
    435 
    436     HRESULT (STDMETHODCALLTYPE *SetInputType)(
    437         IMediaObject* This,
    438         DWORD dwInputStreamIndex,
    439         const DMO_MEDIA_TYPE *pmt,
    440         DWORD dwFlags);
    441 
    442     HRESULT (STDMETHODCALLTYPE *SetOutputType)(
    443         IMediaObject* This,
    444         DWORD dwOutputStreamIndex,
    445         const DMO_MEDIA_TYPE *pmt,
    446         DWORD dwFlags);
    447 
    448     HRESULT (STDMETHODCALLTYPE *GetInputCurrentType)(
    449         IMediaObject* This,
    450         DWORD dwInputStreamIndex,
    451         DMO_MEDIA_TYPE *pmt);
    452 
    453     HRESULT (STDMETHODCALLTYPE *GetOutputCurrentType)(
    454         IMediaObject* This,
    455         DWORD dwOutputStreamIndex,
    456         DMO_MEDIA_TYPE *pmt);
    457 
    458     HRESULT (STDMETHODCALLTYPE *GetInputSizeInfo)(
    459         IMediaObject* This,
    460         DWORD dwInputStreamIndex,
    461         DWORD *pcbSize,
    462         DWORD *pcbMaxLookahead,
    463         DWORD *pcbAlignment);
    464 
    465     HRESULT (STDMETHODCALLTYPE *GetOutputSizeInfo)(
    466         IMediaObject* This,
    467         DWORD dwOutputStreamIndex,
    468         DWORD *pcbSize,
    469         DWORD *pcbAlignment);
    470 
    471     HRESULT (STDMETHODCALLTYPE *GetInputMaxLatency)(
    472         IMediaObject* This,
    473         DWORD dwInputStreamIndex,
    474         REFERENCE_TIME *prtMaxLatency);
    475 
    476     HRESULT (STDMETHODCALLTYPE *SetInputMaxLatency)(
    477         IMediaObject* This,
    478         DWORD dwInputStreamIndex,
    479         REFERENCE_TIME rtMaxLatency);
    480 
    481     HRESULT (STDMETHODCALLTYPE *Flush)(
    482         IMediaObject* This);
    483 
    484     HRESULT (STDMETHODCALLTYPE *Discontinuity)(
    485         IMediaObject* This,
    486         DWORD dwInputStreamIndex);
    487 
    488     HRESULT (STDMETHODCALLTYPE *AllocateStreamingResources)(
    489         IMediaObject* This);
    490 
    491     HRESULT (STDMETHODCALLTYPE *FreeStreamingResources)(
    492         IMediaObject* This);
    493 
    494     HRESULT (STDMETHODCALLTYPE *GetInputStatus)(
    495         IMediaObject* This,
    496         DWORD dwInputStreamIndex,
    497         DWORD *dwFlags);
    498 
    499     HRESULT (STDMETHODCALLTYPE *ProcessInput)(
    500         IMediaObject* This,
    501         DWORD dwInputStreamIndex,
    502         IMediaBuffer *pBuffer,
    503         DWORD dwFlags,
    504         REFERENCE_TIME rtTimestamp,
    505         REFERENCE_TIME rtTimelength);
    506 
    507     HRESULT (STDMETHODCALLTYPE *ProcessOutput)(
    508         IMediaObject* This,
    509         DWORD dwFlags,
    510         DWORD cOutputBufferCount,
    511         DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
    512         DWORD *pdwStatus);
    513 
    514     HRESULT (STDMETHODCALLTYPE *Lock)(
    515         IMediaObject* This,
    516         LONG bLock);
    517 
    518     END_INTERFACE
    519 } IMediaObjectVtbl;
    520 interface IMediaObject {
    521     CONST_VTBL IMediaObjectVtbl* lpVtbl;
    522 };
    523 
    524 #ifdef COBJMACROS
    525 #ifndef WIDL_C_INLINE_WRAPPERS
    526 /*** IUnknown methods ***/
    527 #define IMediaObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    528 #define IMediaObject_AddRef(This) (This)->lpVtbl->AddRef(This)
    529 #define IMediaObject_Release(This) (This)->lpVtbl->Release(This)
    530 /*** IMediaObject methods ***/
    531 #define IMediaObject_GetStreamCount(This,pcInputStreams,pcOutputStreams) (This)->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams)
    532 #define IMediaObject_GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) (This)->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags)
    533 #define IMediaObject_GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) (This)->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags)
    534 #define IMediaObject_GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt)
    535 #define IMediaObject_GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt)
    536 #define IMediaObject_SetInputType(This,dwInputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags)
    537 #define IMediaObject_SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags)
    538 #define IMediaObject_GetInputCurrentType(This,dwInputStreamIndex,pmt) (This)->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt)
    539 #define IMediaObject_GetOutputCurrentType(This,dwOutputStreamIndex,pmt) (This)->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt)
    540 #define IMediaObject_GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) (This)->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment)
    541 #define IMediaObject_GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) (This)->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment)
    542 #define IMediaObject_GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) (This)->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency)
    543 #define IMediaObject_SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) (This)->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency)
    544 #define IMediaObject_Flush(This) (This)->lpVtbl->Flush(This)
    545 #define IMediaObject_Discontinuity(This,dwInputStreamIndex) (This)->lpVtbl->Discontinuity(This,dwInputStreamIndex)
    546 #define IMediaObject_AllocateStreamingResources(This) (This)->lpVtbl->AllocateStreamingResources(This)
    547 #define IMediaObject_FreeStreamingResources(This) (This)->lpVtbl->FreeStreamingResources(This)
    548 #define IMediaObject_GetInputStatus(This,dwInputStreamIndex,dwFlags) (This)->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags)
    549 #define IMediaObject_ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) (This)->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength)
    550 #define IMediaObject_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) (This)->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus)
    551 #define IMediaObject_Lock(This,bLock) (This)->lpVtbl->Lock(This,bLock)
    552 #else
    553 /*** IUnknown methods ***/
    554 static FORCEINLINE HRESULT IMediaObject_QueryInterface(IMediaObject* This,REFIID riid,void **ppvObject) {
    555     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    556 }
    557 static FORCEINLINE ULONG IMediaObject_AddRef(IMediaObject* This) {
    558     return This->lpVtbl->AddRef(This);
    559 }
    560 static FORCEINLINE ULONG IMediaObject_Release(IMediaObject* This) {
    561     return This->lpVtbl->Release(This);
    562 }
    563 /*** IMediaObject methods ***/
    564 static FORCEINLINE HRESULT IMediaObject_GetStreamCount(IMediaObject* This,DWORD *pcInputStreams,DWORD *pcOutputStreams) {
    565     return This->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams);
    566 }
    567 static FORCEINLINE HRESULT IMediaObject_GetInputStreamInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pdwFlags) {
    568     return This->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags);
    569 }
    570 static FORCEINLINE HRESULT IMediaObject_GetOutputStreamInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pdwFlags) {
    571     return This->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags);
    572 }
    573 static FORCEINLINE HRESULT IMediaObject_GetInputType(IMediaObject* This,DWORD dwInputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) {
    574     return This->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt);
    575 }
    576 static FORCEINLINE HRESULT IMediaObject_GetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) {
    577     return This->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt);
    578 }
    579 static FORCEINLINE HRESULT IMediaObject_SetInputType(IMediaObject* This,DWORD dwInputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) {
    580     return This->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags);
    581 }
    582 static FORCEINLINE HRESULT IMediaObject_SetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) {
    583     return This->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags);
    584 }
    585 static FORCEINLINE HRESULT IMediaObject_GetInputCurrentType(IMediaObject* This,DWORD dwInputStreamIndex,DMO_MEDIA_TYPE *pmt) {
    586     return This->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt);
    587 }
    588 static FORCEINLINE HRESULT IMediaObject_GetOutputCurrentType(IMediaObject* This,DWORD dwOutputStreamIndex,DMO_MEDIA_TYPE *pmt) {
    589     return This->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt);
    590 }
    591 static FORCEINLINE HRESULT IMediaObject_GetInputSizeInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pcbSize,DWORD *pcbMaxLookahead,DWORD *pcbAlignment) {
    592     return This->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment);
    593 }
    594 static FORCEINLINE HRESULT IMediaObject_GetOutputSizeInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pcbSize,DWORD *pcbAlignment) {
    595     return This->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment);
    596 }
    597 static FORCEINLINE HRESULT IMediaObject_GetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME *prtMaxLatency) {
    598     return This->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency);
    599 }
    600 static FORCEINLINE HRESULT IMediaObject_SetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME rtMaxLatency) {
    601     return This->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency);
    602 }
    603 static FORCEINLINE HRESULT IMediaObject_Flush(IMediaObject* This) {
    604     return This->lpVtbl->Flush(This);
    605 }
    606 static FORCEINLINE HRESULT IMediaObject_Discontinuity(IMediaObject* This,DWORD dwInputStreamIndex) {
    607     return This->lpVtbl->Discontinuity(This,dwInputStreamIndex);
    608 }
    609 static FORCEINLINE HRESULT IMediaObject_AllocateStreamingResources(IMediaObject* This) {
    610     return This->lpVtbl->AllocateStreamingResources(This);
    611 }
    612 static FORCEINLINE HRESULT IMediaObject_FreeStreamingResources(IMediaObject* This) {
    613     return This->lpVtbl->FreeStreamingResources(This);
    614 }
    615 static FORCEINLINE HRESULT IMediaObject_GetInputStatus(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *dwFlags) {
    616     return This->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags);
    617 }
    618 static FORCEINLINE HRESULT IMediaObject_ProcessInput(IMediaObject* This,DWORD dwInputStreamIndex,IMediaBuffer *pBuffer,DWORD dwFlags,REFERENCE_TIME rtTimestamp,REFERENCE_TIME rtTimelength) {
    619     return This->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength);
    620 }
    621 static FORCEINLINE HRESULT IMediaObject_ProcessOutput(IMediaObject* This,DWORD dwFlags,DWORD cOutputBufferCount,DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,DWORD *pdwStatus) {
    622     return This->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus);
    623 }
    624 static FORCEINLINE HRESULT IMediaObject_Lock(IMediaObject* This,LONG bLock) {
    625     return This->lpVtbl->Lock(This,bLock);
    626 }
    627 #endif
    628 #endif
    629 
    630 #endif
    631 
    632 HRESULT STDMETHODCALLTYPE IMediaObject_GetStreamCount_Proxy(
    633     IMediaObject* This,
    634     DWORD *pcInputStreams,
    635     DWORD *pcOutputStreams);
    636 void __RPC_STUB IMediaObject_GetStreamCount_Stub(
    637     IRpcStubBuffer* This,
    638     IRpcChannelBuffer* pRpcChannelBuffer,
    639     PRPC_MESSAGE pRpcMessage,
    640     DWORD* pdwStubPhase);
    641 HRESULT STDMETHODCALLTYPE IMediaObject_GetInputStreamInfo_Proxy(
    642     IMediaObject* This,
    643     DWORD dwInputStreamIndex,
    644     DWORD *pdwFlags);
    645 void __RPC_STUB IMediaObject_GetInputStreamInfo_Stub(
    646     IRpcStubBuffer* This,
    647     IRpcChannelBuffer* pRpcChannelBuffer,
    648     PRPC_MESSAGE pRpcMessage,
    649     DWORD* pdwStubPhase);
    650 HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputStreamInfo_Proxy(
    651     IMediaObject* This,
    652     DWORD dwOutputStreamIndex,
    653     DWORD *pdwFlags);
    654 void __RPC_STUB IMediaObject_GetOutputStreamInfo_Stub(
    655     IRpcStubBuffer* This,
    656     IRpcChannelBuffer* pRpcChannelBuffer,
    657     PRPC_MESSAGE pRpcMessage,
    658     DWORD* pdwStubPhase);
    659 HRESULT STDMETHODCALLTYPE IMediaObject_GetInputType_Proxy(
    660     IMediaObject* This,
    661     DWORD dwInputStreamIndex,
    662     DWORD dwTypeIndex,
    663     DMO_MEDIA_TYPE *pmt);
    664 void __RPC_STUB IMediaObject_GetInputType_Stub(
    665     IRpcStubBuffer* This,
    666     IRpcChannelBuffer* pRpcChannelBuffer,
    667     PRPC_MESSAGE pRpcMessage,
    668     DWORD* pdwStubPhase);
    669 HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputType_Proxy(
    670     IMediaObject* This,
    671     DWORD dwOutputStreamIndex,
    672     DWORD dwTypeIndex,
    673     DMO_MEDIA_TYPE *pmt);
    674 void __RPC_STUB IMediaObject_GetOutputType_Stub(
    675     IRpcStubBuffer* This,
    676     IRpcChannelBuffer* pRpcChannelBuffer,
    677     PRPC_MESSAGE pRpcMessage,
    678     DWORD* pdwStubPhase);
    679 HRESULT STDMETHODCALLTYPE IMediaObject_SetInputType_Proxy(
    680     IMediaObject* This,
    681     DWORD dwInputStreamIndex,
    682     const DMO_MEDIA_TYPE *pmt,
    683     DWORD dwFlags);
    684 void __RPC_STUB IMediaObject_SetInputType_Stub(
    685     IRpcStubBuffer* This,
    686     IRpcChannelBuffer* pRpcChannelBuffer,
    687     PRPC_MESSAGE pRpcMessage,
    688     DWORD* pdwStubPhase);
    689 HRESULT STDMETHODCALLTYPE IMediaObject_SetOutputType_Proxy(
    690     IMediaObject* This,
    691     DWORD dwOutputStreamIndex,
    692     const DMO_MEDIA_TYPE *pmt,
    693     DWORD dwFlags);
    694 void __RPC_STUB IMediaObject_SetOutputType_Stub(
    695     IRpcStubBuffer* This,
    696     IRpcChannelBuffer* pRpcChannelBuffer,
    697     PRPC_MESSAGE pRpcMessage,
    698     DWORD* pdwStubPhase);
    699 HRESULT STDMETHODCALLTYPE IMediaObject_GetInputCurrentType_Proxy(
    700     IMediaObject* This,
    701     DWORD dwInputStreamIndex,
    702     DMO_MEDIA_TYPE *pmt);
    703 void __RPC_STUB IMediaObject_GetInputCurrentType_Stub(
    704     IRpcStubBuffer* This,
    705     IRpcChannelBuffer* pRpcChannelBuffer,
    706     PRPC_MESSAGE pRpcMessage,
    707     DWORD* pdwStubPhase);
    708 HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputCurrentType_Proxy(
    709     IMediaObject* This,
    710     DWORD dwOutputStreamIndex,
    711     DMO_MEDIA_TYPE *pmt);
    712 void __RPC_STUB IMediaObject_GetOutputCurrentType_Stub(
    713     IRpcStubBuffer* This,
    714     IRpcChannelBuffer* pRpcChannelBuffer,
    715     PRPC_MESSAGE pRpcMessage,
    716     DWORD* pdwStubPhase);
    717 HRESULT STDMETHODCALLTYPE IMediaObject_GetInputSizeInfo_Proxy(
    718     IMediaObject* This,
    719     DWORD dwInputStreamIndex,
    720     DWORD *pcbSize,
    721     DWORD *pcbMaxLookahead,
    722     DWORD *pcbAlignment);
    723 void __RPC_STUB IMediaObject_GetInputSizeInfo_Stub(
    724     IRpcStubBuffer* This,
    725     IRpcChannelBuffer* pRpcChannelBuffer,
    726     PRPC_MESSAGE pRpcMessage,
    727     DWORD* pdwStubPhase);
    728 HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputSizeInfo_Proxy(
    729     IMediaObject* This,
    730     DWORD dwOutputStreamIndex,
    731     DWORD *pcbSize,
    732     DWORD *pcbAlignment);
    733 void __RPC_STUB IMediaObject_GetOutputSizeInfo_Stub(
    734     IRpcStubBuffer* This,
    735     IRpcChannelBuffer* pRpcChannelBuffer,
    736     PRPC_MESSAGE pRpcMessage,
    737     DWORD* pdwStubPhase);
    738 HRESULT STDMETHODCALLTYPE IMediaObject_GetInputMaxLatency_Proxy(
    739     IMediaObject* This,
    740     DWORD dwInputStreamIndex,
    741     REFERENCE_TIME *prtMaxLatency);
    742 void __RPC_STUB IMediaObject_GetInputMaxLatency_Stub(
    743     IRpcStubBuffer* This,
    744     IRpcChannelBuffer* pRpcChannelBuffer,
    745     PRPC_MESSAGE pRpcMessage,
    746     DWORD* pdwStubPhase);
    747 HRESULT STDMETHODCALLTYPE IMediaObject_SetInputMaxLatency_Proxy(
    748     IMediaObject* This,
    749     DWORD dwInputStreamIndex,
    750     REFERENCE_TIME rtMaxLatency);
    751 void __RPC_STUB IMediaObject_SetInputMaxLatency_Stub(
    752     IRpcStubBuffer* This,
    753     IRpcChannelBuffer* pRpcChannelBuffer,
    754     PRPC_MESSAGE pRpcMessage,
    755     DWORD* pdwStubPhase);
    756 HRESULT STDMETHODCALLTYPE IMediaObject_Flush_Proxy(
    757     IMediaObject* This);
    758 void __RPC_STUB IMediaObject_Flush_Stub(
    759     IRpcStubBuffer* This,
    760     IRpcChannelBuffer* pRpcChannelBuffer,
    761     PRPC_MESSAGE pRpcMessage,
    762     DWORD* pdwStubPhase);
    763 HRESULT STDMETHODCALLTYPE IMediaObject_Discontinuity_Proxy(
    764     IMediaObject* This,
    765     DWORD dwInputStreamIndex);
    766 void __RPC_STUB IMediaObject_Discontinuity_Stub(
    767     IRpcStubBuffer* This,
    768     IRpcChannelBuffer* pRpcChannelBuffer,
    769     PRPC_MESSAGE pRpcMessage,
    770     DWORD* pdwStubPhase);
    771 HRESULT STDMETHODCALLTYPE IMediaObject_AllocateStreamingResources_Proxy(
    772     IMediaObject* This);
    773 void __RPC_STUB IMediaObject_AllocateStreamingResources_Stub(
    774     IRpcStubBuffer* This,
    775     IRpcChannelBuffer* pRpcChannelBuffer,
    776     PRPC_MESSAGE pRpcMessage,
    777     DWORD* pdwStubPhase);
    778 HRESULT STDMETHODCALLTYPE IMediaObject_FreeStreamingResources_Proxy(
    779     IMediaObject* This);
    780 void __RPC_STUB IMediaObject_FreeStreamingResources_Stub(
    781     IRpcStubBuffer* This,
    782     IRpcChannelBuffer* pRpcChannelBuffer,
    783     PRPC_MESSAGE pRpcMessage,
    784     DWORD* pdwStubPhase);
    785 HRESULT STDMETHODCALLTYPE IMediaObject_GetInputStatus_Proxy(
    786     IMediaObject* This,
    787     DWORD dwInputStreamIndex,
    788     DWORD *dwFlags);
    789 void __RPC_STUB IMediaObject_GetInputStatus_Stub(
    790     IRpcStubBuffer* This,
    791     IRpcChannelBuffer* pRpcChannelBuffer,
    792     PRPC_MESSAGE pRpcMessage,
    793     DWORD* pdwStubPhase);
    794 HRESULT STDMETHODCALLTYPE IMediaObject_ProcessInput_Proxy(
    795     IMediaObject* This,
    796     DWORD dwInputStreamIndex,
    797     IMediaBuffer *pBuffer,
    798     DWORD dwFlags,
    799     REFERENCE_TIME rtTimestamp,
    800     REFERENCE_TIME rtTimelength);
    801 void __RPC_STUB IMediaObject_ProcessInput_Stub(
    802     IRpcStubBuffer* This,
    803     IRpcChannelBuffer* pRpcChannelBuffer,
    804     PRPC_MESSAGE pRpcMessage,
    805     DWORD* pdwStubPhase);
    806 HRESULT STDMETHODCALLTYPE IMediaObject_ProcessOutput_Proxy(
    807     IMediaObject* This,
    808     DWORD dwFlags,
    809     DWORD cOutputBufferCount,
    810     DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
    811     DWORD *pdwStatus);
    812 void __RPC_STUB IMediaObject_ProcessOutput_Stub(
    813     IRpcStubBuffer* This,
    814     IRpcChannelBuffer* pRpcChannelBuffer,
    815     PRPC_MESSAGE pRpcMessage,
    816     DWORD* pdwStubPhase);
    817 HRESULT STDMETHODCALLTYPE IMediaObject_Lock_Proxy(
    818     IMediaObject* This,
    819     LONG bLock);
    820 void __RPC_STUB IMediaObject_Lock_Stub(
    821     IRpcStubBuffer* This,
    822     IRpcChannelBuffer* pRpcChannelBuffer,
    823     PRPC_MESSAGE pRpcMessage,
    824     DWORD* pdwStubPhase);
    825 
    826 #endif  /* __IMediaObject_INTERFACE_DEFINED__ */
    827 
    828 
    829 /*****************************************************************************
    830  * IEnumDMO interface
    831  */
    832 #ifndef __IEnumDMO_INTERFACE_DEFINED__
    833 #define __IEnumDMO_INTERFACE_DEFINED__
    834 
    835 DEFINE_GUID(IID_IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f);
    836 #if defined(__cplusplus) && !defined(CINTERFACE)
    837 MIDL_INTERFACE("2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f")
    838 IEnumDMO : public IUnknown
    839 {
    840     virtual HRESULT STDMETHODCALLTYPE Next(
    841         DWORD cItemsToFetch,
    842         CLSID *pCLSID,
    843         LPWSTR *Names,
    844         DWORD *pcItemsFetched) = 0;
    845 
    846     virtual HRESULT STDMETHODCALLTYPE Skip(
    847         DWORD cItemsToSkip) = 0;
    848 
    849     virtual HRESULT STDMETHODCALLTYPE Reset(
    850         ) = 0;
    851 
    852     virtual HRESULT STDMETHODCALLTYPE Clone(
    853         IEnumDMO **ppEnum) = 0;
    854 
    855 };
    856 #ifdef __CRT_UUID_DECL
    857 __CRT_UUID_DECL(IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f)
    858 #endif
    859 #else
    860 typedef struct IEnumDMOVtbl {
    861     BEGIN_INTERFACE
    862 
    863     /*** IUnknown methods ***/
    864     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    865         IEnumDMO* This,
    866         REFIID riid,
    867         void **ppvObject);
    868 
    869     ULONG (STDMETHODCALLTYPE *AddRef)(
    870         IEnumDMO* This);
    871 
    872     ULONG (STDMETHODCALLTYPE *Release)(
    873         IEnumDMO* This);
    874 
    875     /*** IEnumDMO methods ***/
    876     HRESULT (STDMETHODCALLTYPE *Next)(
    877         IEnumDMO* This,
    878         DWORD cItemsToFetch,
    879         CLSID *pCLSID,
    880         LPWSTR *Names,
    881         DWORD *pcItemsFetched);
    882 
    883     HRESULT (STDMETHODCALLTYPE *Skip)(
    884         IEnumDMO* This,
    885         DWORD cItemsToSkip);
    886 
    887     HRESULT (STDMETHODCALLTYPE *Reset)(
    888         IEnumDMO* This);
    889 
    890     HRESULT (STDMETHODCALLTYPE *Clone)(
    891         IEnumDMO* This,
    892         IEnumDMO **ppEnum);
    893 
    894     END_INTERFACE
    895 } IEnumDMOVtbl;
    896 interface IEnumDMO {
    897     CONST_VTBL IEnumDMOVtbl* lpVtbl;
    898 };
    899 
    900 #ifdef COBJMACROS
    901 #ifndef WIDL_C_INLINE_WRAPPERS
    902 /*** IUnknown methods ***/
    903 #define IEnumDMO_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    904 #define IEnumDMO_AddRef(This) (This)->lpVtbl->AddRef(This)
    905 #define IEnumDMO_Release(This) (This)->lpVtbl->Release(This)
    906 /*** IEnumDMO methods ***/
    907 #define IEnumDMO_Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched) (This)->lpVtbl->Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched)
    908 #define IEnumDMO_Skip(This,cItemsToSkip) (This)->lpVtbl->Skip(This,cItemsToSkip)
    909 #define IEnumDMO_Reset(This) (This)->lpVtbl->Reset(This)
    910 #define IEnumDMO_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
    911 #else
    912 /*** IUnknown methods ***/
    913 static FORCEINLINE HRESULT IEnumDMO_QueryInterface(IEnumDMO* This,REFIID riid,void **ppvObject) {
    914     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    915 }
    916 static FORCEINLINE ULONG IEnumDMO_AddRef(IEnumDMO* This) {
    917     return This->lpVtbl->AddRef(This);
    918 }
    919 static FORCEINLINE ULONG IEnumDMO_Release(IEnumDMO* This) {
    920     return This->lpVtbl->Release(This);
    921 }
    922 /*** IEnumDMO methods ***/
    923 static FORCEINLINE HRESULT IEnumDMO_Next(IEnumDMO* This,DWORD cItemsToFetch,CLSID *pCLSID,LPWSTR *Names,DWORD *pcItemsFetched) {
    924     return This->lpVtbl->Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched);
    925 }
    926 static FORCEINLINE HRESULT IEnumDMO_Skip(IEnumDMO* This,DWORD cItemsToSkip) {
    927     return This->lpVtbl->Skip(This,cItemsToSkip);
    928 }
    929 static FORCEINLINE HRESULT IEnumDMO_Reset(IEnumDMO* This) {
    930     return This->lpVtbl->Reset(This);
    931 }
    932 static FORCEINLINE HRESULT IEnumDMO_Clone(IEnumDMO* This,IEnumDMO **ppEnum) {
    933     return This->lpVtbl->Clone(This,ppEnum);
    934 }
    935 #endif
    936 #endif
    937 
    938 #endif
    939 
    940 HRESULT STDMETHODCALLTYPE IEnumDMO_Next_Proxy(
    941     IEnumDMO* This,
    942     DWORD cItemsToFetch,
    943     CLSID *pCLSID,
    944     LPWSTR *Names,
    945     DWORD *pcItemsFetched);
    946 void __RPC_STUB IEnumDMO_Next_Stub(
    947     IRpcStubBuffer* This,
    948     IRpcChannelBuffer* pRpcChannelBuffer,
    949     PRPC_MESSAGE pRpcMessage,
    950     DWORD* pdwStubPhase);
    951 HRESULT STDMETHODCALLTYPE IEnumDMO_Skip_Proxy(
    952     IEnumDMO* This,
    953     DWORD cItemsToSkip);
    954 void __RPC_STUB IEnumDMO_Skip_Stub(
    955     IRpcStubBuffer* This,
    956     IRpcChannelBuffer* pRpcChannelBuffer,
    957     PRPC_MESSAGE pRpcMessage,
    958     DWORD* pdwStubPhase);
    959 HRESULT STDMETHODCALLTYPE IEnumDMO_Reset_Proxy(
    960     IEnumDMO* This);
    961 void __RPC_STUB IEnumDMO_Reset_Stub(
    962     IRpcStubBuffer* This,
    963     IRpcChannelBuffer* pRpcChannelBuffer,
    964     PRPC_MESSAGE pRpcMessage,
    965     DWORD* pdwStubPhase);
    966 HRESULT STDMETHODCALLTYPE IEnumDMO_Clone_Proxy(
    967     IEnumDMO* This,
    968     IEnumDMO **ppEnum);
    969 void __RPC_STUB IEnumDMO_Clone_Stub(
    970     IRpcStubBuffer* This,
    971     IRpcChannelBuffer* pRpcChannelBuffer,
    972     PRPC_MESSAGE pRpcMessage,
    973     DWORD* pdwStubPhase);
    974 
    975 #endif  /* __IEnumDMO_INTERFACE_DEFINED__ */
    976 
    977 
    978 /*****************************************************************************
    979  * IMediaObjectInPlace interface
    980  */
    981 #ifndef __IMediaObjectInPlace_INTERFACE_DEFINED__
    982 #define __IMediaObjectInPlace_INTERFACE_DEFINED__
    983 
    984 DEFINE_GUID(IID_IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41);
    985 #if defined(__cplusplus) && !defined(CINTERFACE)
    986 MIDL_INTERFACE("651b9ad0-0fc7-4aa9-9538-d89931010741")
    987 IMediaObjectInPlace : public IUnknown
    988 {
    989     virtual HRESULT STDMETHODCALLTYPE Process(
    990         ULONG ulSize,
    991         BYTE *pData,
    992         REFERENCE_TIME refTimeStart,
    993         DWORD dwFlags) = 0;
    994 
    995     virtual HRESULT STDMETHODCALLTYPE Clone(
    996         IMediaObjectInPlace **ppMediaObject) = 0;
    997 
    998     virtual HRESULT STDMETHODCALLTYPE GetLatency(
    999         REFERENCE_TIME *pLatencyTime) = 0;
   1000 
   1001 };
   1002 #ifdef __CRT_UUID_DECL
   1003 __CRT_UUID_DECL(IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41)
   1004 #endif
   1005 #else
   1006 typedef struct IMediaObjectInPlaceVtbl {
   1007     BEGIN_INTERFACE
   1008 
   1009     /*** IUnknown methods ***/
   1010     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1011         IMediaObjectInPlace* This,
   1012         REFIID riid,
   1013         void **ppvObject);
   1014 
   1015     ULONG (STDMETHODCALLTYPE *AddRef)(
   1016         IMediaObjectInPlace* This);
   1017 
   1018     ULONG (STDMETHODCALLTYPE *Release)(
   1019         IMediaObjectInPlace* This);
   1020 
   1021     /*** IMediaObjectInPlace methods ***/
   1022     HRESULT (STDMETHODCALLTYPE *Process)(
   1023         IMediaObjectInPlace* This,
   1024         ULONG ulSize,
   1025         BYTE *pData,
   1026         REFERENCE_TIME refTimeStart,
   1027         DWORD dwFlags);
   1028 
   1029     HRESULT (STDMETHODCALLTYPE *Clone)(
   1030         IMediaObjectInPlace* This,
   1031         IMediaObjectInPlace **ppMediaObject);
   1032 
   1033     HRESULT (STDMETHODCALLTYPE *GetLatency)(
   1034         IMediaObjectInPlace* This,
   1035         REFERENCE_TIME *pLatencyTime);
   1036 
   1037     END_INTERFACE
   1038 } IMediaObjectInPlaceVtbl;
   1039 interface IMediaObjectInPlace {
   1040     CONST_VTBL IMediaObjectInPlaceVtbl* lpVtbl;
   1041 };
   1042 
   1043 #ifdef COBJMACROS
   1044 #ifndef WIDL_C_INLINE_WRAPPERS
   1045 /*** IUnknown methods ***/
   1046 #define IMediaObjectInPlace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1047 #define IMediaObjectInPlace_AddRef(This) (This)->lpVtbl->AddRef(This)
   1048 #define IMediaObjectInPlace_Release(This) (This)->lpVtbl->Release(This)
   1049 /*** IMediaObjectInPlace methods ***/
   1050 #define IMediaObjectInPlace_Process(This,ulSize,pData,refTimeStart,dwFlags) (This)->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags)
   1051 #define IMediaObjectInPlace_Clone(This,ppMediaObject) (This)->lpVtbl->Clone(This,ppMediaObject)
   1052 #define IMediaObjectInPlace_GetLatency(This,pLatencyTime) (This)->lpVtbl->GetLatency(This,pLatencyTime)
   1053 #else
   1054 /*** IUnknown methods ***/
   1055 static FORCEINLINE HRESULT IMediaObjectInPlace_QueryInterface(IMediaObjectInPlace* This,REFIID riid,void **ppvObject) {
   1056     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1057 }
   1058 static FORCEINLINE ULONG IMediaObjectInPlace_AddRef(IMediaObjectInPlace* This) {
   1059     return This->lpVtbl->AddRef(This);
   1060 }
   1061 static FORCEINLINE ULONG IMediaObjectInPlace_Release(IMediaObjectInPlace* This) {
   1062     return This->lpVtbl->Release(This);
   1063 }
   1064 /*** IMediaObjectInPlace methods ***/
   1065 static FORCEINLINE HRESULT IMediaObjectInPlace_Process(IMediaObjectInPlace* This,ULONG ulSize,BYTE *pData,REFERENCE_TIME refTimeStart,DWORD dwFlags) {
   1066     return This->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags);
   1067 }
   1068 static FORCEINLINE HRESULT IMediaObjectInPlace_Clone(IMediaObjectInPlace* This,IMediaObjectInPlace **ppMediaObject) {
   1069     return This->lpVtbl->Clone(This,ppMediaObject);
   1070 }
   1071 static FORCEINLINE HRESULT IMediaObjectInPlace_GetLatency(IMediaObjectInPlace* This,REFERENCE_TIME *pLatencyTime) {
   1072     return This->lpVtbl->GetLatency(This,pLatencyTime);
   1073 }
   1074 #endif
   1075 #endif
   1076 
   1077 #endif
   1078 
   1079 HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_Process_Proxy(
   1080     IMediaObjectInPlace* This,
   1081     ULONG ulSize,
   1082     BYTE *pData,
   1083     REFERENCE_TIME refTimeStart,
   1084     DWORD dwFlags);
   1085 void __RPC_STUB IMediaObjectInPlace_Process_Stub(
   1086     IRpcStubBuffer* This,
   1087     IRpcChannelBuffer* pRpcChannelBuffer,
   1088     PRPC_MESSAGE pRpcMessage,
   1089     DWORD* pdwStubPhase);
   1090 HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_Clone_Proxy(
   1091     IMediaObjectInPlace* This,
   1092     IMediaObjectInPlace **ppMediaObject);
   1093 void __RPC_STUB IMediaObjectInPlace_Clone_Stub(
   1094     IRpcStubBuffer* This,
   1095     IRpcChannelBuffer* pRpcChannelBuffer,
   1096     PRPC_MESSAGE pRpcMessage,
   1097     DWORD* pdwStubPhase);
   1098 HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_GetLatency_Proxy(
   1099     IMediaObjectInPlace* This,
   1100     REFERENCE_TIME *pLatencyTime);
   1101 void __RPC_STUB IMediaObjectInPlace_GetLatency_Stub(
   1102     IRpcStubBuffer* This,
   1103     IRpcChannelBuffer* pRpcChannelBuffer,
   1104     PRPC_MESSAGE pRpcMessage,
   1105     DWORD* pdwStubPhase);
   1106 
   1107 #endif  /* __IMediaObjectInPlace_INTERFACE_DEFINED__ */
   1108 
   1109 
   1110 /*****************************************************************************
   1111  * IDMOQualityControl interface
   1112  */
   1113 #ifndef __IDMOQualityControl_INTERFACE_DEFINED__
   1114 #define __IDMOQualityControl_INTERFACE_DEFINED__
   1115 
   1116 DEFINE_GUID(IID_IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60);
   1117 #if defined(__cplusplus) && !defined(CINTERFACE)
   1118 MIDL_INTERFACE("65abea96-cf36-453f-af8a-705e98f16260")
   1119 IDMOQualityControl : public IUnknown
   1120 {
   1121     virtual HRESULT STDMETHODCALLTYPE SetNow(
   1122         REFERENCE_TIME rtNow) = 0;
   1123 
   1124     virtual HRESULT STDMETHODCALLTYPE SetStatus(
   1125         DWORD dwFlags) = 0;
   1126 
   1127     virtual HRESULT STDMETHODCALLTYPE GetStatus(
   1128         DWORD *pdwFlags) = 0;
   1129 
   1130 };
   1131 #ifdef __CRT_UUID_DECL
   1132 __CRT_UUID_DECL(IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60)
   1133 #endif
   1134 #else
   1135 typedef struct IDMOQualityControlVtbl {
   1136     BEGIN_INTERFACE
   1137 
   1138     /*** IUnknown methods ***/
   1139     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1140         IDMOQualityControl* This,
   1141         REFIID riid,
   1142         void **ppvObject);
   1143 
   1144     ULONG (STDMETHODCALLTYPE *AddRef)(
   1145         IDMOQualityControl* This);
   1146 
   1147     ULONG (STDMETHODCALLTYPE *Release)(
   1148         IDMOQualityControl* This);
   1149 
   1150     /*** IDMOQualityControl methods ***/
   1151     HRESULT (STDMETHODCALLTYPE *SetNow)(
   1152         IDMOQualityControl* This,
   1153         REFERENCE_TIME rtNow);
   1154 
   1155     HRESULT (STDMETHODCALLTYPE *SetStatus)(
   1156         IDMOQualityControl* This,
   1157         DWORD dwFlags);
   1158 
   1159     HRESULT (STDMETHODCALLTYPE *GetStatus)(
   1160         IDMOQualityControl* This,
   1161         DWORD *pdwFlags);
   1162 
   1163     END_INTERFACE
   1164 } IDMOQualityControlVtbl;
   1165 interface IDMOQualityControl {
   1166     CONST_VTBL IDMOQualityControlVtbl* lpVtbl;
   1167 };
   1168 
   1169 #ifdef COBJMACROS
   1170 #ifndef WIDL_C_INLINE_WRAPPERS
   1171 /*** IUnknown methods ***/
   1172 #define IDMOQualityControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1173 #define IDMOQualityControl_AddRef(This) (This)->lpVtbl->AddRef(This)
   1174 #define IDMOQualityControl_Release(This) (This)->lpVtbl->Release(This)
   1175 /*** IDMOQualityControl methods ***/
   1176 #define IDMOQualityControl_SetNow(This,rtNow) (This)->lpVtbl->SetNow(This,rtNow)
   1177 #define IDMOQualityControl_SetStatus(This,dwFlags) (This)->lpVtbl->SetStatus(This,dwFlags)
   1178 #define IDMOQualityControl_GetStatus(This,pdwFlags) (This)->lpVtbl->GetStatus(This,pdwFlags)
   1179 #else
   1180 /*** IUnknown methods ***/
   1181 static FORCEINLINE HRESULT IDMOQualityControl_QueryInterface(IDMOQualityControl* This,REFIID riid,void **ppvObject) {
   1182     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1183 }
   1184 static FORCEINLINE ULONG IDMOQualityControl_AddRef(IDMOQualityControl* This) {
   1185     return This->lpVtbl->AddRef(This);
   1186 }
   1187 static FORCEINLINE ULONG IDMOQualityControl_Release(IDMOQualityControl* This) {
   1188     return This->lpVtbl->Release(This);
   1189 }
   1190 /*** IDMOQualityControl methods ***/
   1191 static FORCEINLINE HRESULT IDMOQualityControl_SetNow(IDMOQualityControl* This,REFERENCE_TIME rtNow) {
   1192     return This->lpVtbl->SetNow(This,rtNow);
   1193 }
   1194 static FORCEINLINE HRESULT IDMOQualityControl_SetStatus(IDMOQualityControl* This,DWORD dwFlags) {
   1195     return This->lpVtbl->SetStatus(This,dwFlags);
   1196 }
   1197 static FORCEINLINE HRESULT IDMOQualityControl_GetStatus(IDMOQualityControl* This,DWORD *pdwFlags) {
   1198     return This->lpVtbl->GetStatus(This,pdwFlags);
   1199 }
   1200 #endif
   1201 #endif
   1202 
   1203 #endif
   1204 
   1205 HRESULT STDMETHODCALLTYPE IDMOQualityControl_SetNow_Proxy(
   1206     IDMOQualityControl* This,
   1207     REFERENCE_TIME rtNow);
   1208 void __RPC_STUB IDMOQualityControl_SetNow_Stub(
   1209     IRpcStubBuffer* This,
   1210     IRpcChannelBuffer* pRpcChannelBuffer,
   1211     PRPC_MESSAGE pRpcMessage,
   1212     DWORD* pdwStubPhase);
   1213 HRESULT STDMETHODCALLTYPE IDMOQualityControl_SetStatus_Proxy(
   1214     IDMOQualityControl* This,
   1215     DWORD dwFlags);
   1216 void __RPC_STUB IDMOQualityControl_SetStatus_Stub(
   1217     IRpcStubBuffer* This,
   1218     IRpcChannelBuffer* pRpcChannelBuffer,
   1219     PRPC_MESSAGE pRpcMessage,
   1220     DWORD* pdwStubPhase);
   1221 HRESULT STDMETHODCALLTYPE IDMOQualityControl_GetStatus_Proxy(
   1222     IDMOQualityControl* This,
   1223     DWORD *pdwFlags);
   1224 void __RPC_STUB IDMOQualityControl_GetStatus_Stub(
   1225     IRpcStubBuffer* This,
   1226     IRpcChannelBuffer* pRpcChannelBuffer,
   1227     PRPC_MESSAGE pRpcMessage,
   1228     DWORD* pdwStubPhase);
   1229 
   1230 #endif  /* __IDMOQualityControl_INTERFACE_DEFINED__ */
   1231 
   1232 
   1233 /*****************************************************************************
   1234  * IDMOVideoOutputOptimizations interface
   1235  */
   1236 #ifndef __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
   1237 #define __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
   1238 
   1239 DEFINE_GUID(IID_IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac);
   1240 #if defined(__cplusplus) && !defined(CINTERFACE)
   1241 MIDL_INTERFACE("be8f4f4e-5b16-4d29-b350-7f6b5d9298ac")
   1242 IDMOVideoOutputOptimizations : public IUnknown
   1243 {
   1244     virtual HRESULT STDMETHODCALLTYPE QueryOperationModePreferences(
   1245         ULONG ulOutputStreamIndex,
   1246         DWORD *pdwRequestedCapabilities) = 0;
   1247 
   1248     virtual HRESULT STDMETHODCALLTYPE SetOperationMode(
   1249         ULONG ulOutputStreamIndex,
   1250         DWORD dwEnabledFeatures) = 0;
   1251 
   1252     virtual HRESULT STDMETHODCALLTYPE GetCurrentOperationMode(
   1253         ULONG ulOutputStreamIndex,
   1254         DWORD *pdwEnabledFeatures) = 0;
   1255 
   1256     virtual HRESULT STDMETHODCALLTYPE GetCurrentSampleRequirements(
   1257         ULONG ulOutputStreamIndex,
   1258         DWORD *pdwRequestedFeatures) = 0;
   1259 
   1260 };
   1261 #ifdef __CRT_UUID_DECL
   1262 __CRT_UUID_DECL(IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac)
   1263 #endif
   1264 #else
   1265 typedef struct IDMOVideoOutputOptimizationsVtbl {
   1266     BEGIN_INTERFACE
   1267 
   1268     /*** IUnknown methods ***/
   1269     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1270         IDMOVideoOutputOptimizations* This,
   1271         REFIID riid,
   1272         void **ppvObject);
   1273 
   1274     ULONG (STDMETHODCALLTYPE *AddRef)(
   1275         IDMOVideoOutputOptimizations* This);
   1276 
   1277     ULONG (STDMETHODCALLTYPE *Release)(
   1278         IDMOVideoOutputOptimizations* This);
   1279 
   1280     /*** IDMOVideoOutputOptimizations methods ***/
   1281     HRESULT (STDMETHODCALLTYPE *QueryOperationModePreferences)(
   1282         IDMOVideoOutputOptimizations* This,
   1283         ULONG ulOutputStreamIndex,
   1284         DWORD *pdwRequestedCapabilities);
   1285 
   1286     HRESULT (STDMETHODCALLTYPE *SetOperationMode)(
   1287         IDMOVideoOutputOptimizations* This,
   1288         ULONG ulOutputStreamIndex,
   1289         DWORD dwEnabledFeatures);
   1290 
   1291     HRESULT (STDMETHODCALLTYPE *GetCurrentOperationMode)(
   1292         IDMOVideoOutputOptimizations* This,
   1293         ULONG ulOutputStreamIndex,
   1294         DWORD *pdwEnabledFeatures);
   1295 
   1296     HRESULT (STDMETHODCALLTYPE *GetCurrentSampleRequirements)(
   1297         IDMOVideoOutputOptimizations* This,
   1298         ULONG ulOutputStreamIndex,
   1299         DWORD *pdwRequestedFeatures);
   1300 
   1301     END_INTERFACE
   1302 } IDMOVideoOutputOptimizationsVtbl;
   1303 interface IDMOVideoOutputOptimizations {
   1304     CONST_VTBL IDMOVideoOutputOptimizationsVtbl* lpVtbl;
   1305 };
   1306 
   1307 #ifdef COBJMACROS
   1308 #ifndef WIDL_C_INLINE_WRAPPERS
   1309 /*** IUnknown methods ***/
   1310 #define IDMOVideoOutputOptimizations_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1311 #define IDMOVideoOutputOptimizations_AddRef(This) (This)->lpVtbl->AddRef(This)
   1312 #define IDMOVideoOutputOptimizations_Release(This) (This)->lpVtbl->Release(This)
   1313 /*** IDMOVideoOutputOptimizations methods ***/
   1314 #define IDMOVideoOutputOptimizations_QueryOperationModePreferences(This,ulOutputStreamIndex,pdwRequestedCapabilities) (This)->lpVtbl->QueryOperationModePreferences(This,ulOutputStreamIndex,pdwRequestedCapabilities)
   1315 #define IDMOVideoOutputOptimizations_SetOperationMode(This,ulOutputStreamIndex,dwEnabledFeatures) (This)->lpVtbl->SetOperationMode(This,ulOutputStreamIndex,dwEnabledFeatures)
   1316 #define IDMOVideoOutputOptimizations_GetCurrentOperationMode(This,ulOutputStreamIndex,pdwEnabledFeatures) (This)->lpVtbl->GetCurrentOperationMode(This,ulOutputStreamIndex,pdwEnabledFeatures)
   1317 #define IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(This,ulOutputStreamIndex,pdwRequestedFeatures) (This)->lpVtbl->GetCurrentSampleRequirements(This,ulOutputStreamIndex,pdwRequestedFeatures)
   1318 #else
   1319 /*** IUnknown methods ***/
   1320 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_QueryInterface(IDMOVideoOutputOptimizations* This,REFIID riid,void **ppvObject) {
   1321     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1322 }
   1323 static FORCEINLINE ULONG IDMOVideoOutputOptimizations_AddRef(IDMOVideoOutputOptimizations* This) {
   1324     return This->lpVtbl->AddRef(This);
   1325 }
   1326 static FORCEINLINE ULONG IDMOVideoOutputOptimizations_Release(IDMOVideoOutputOptimizations* This) {
   1327     return This->lpVtbl->Release(This);
   1328 }
   1329 /*** IDMOVideoOutputOptimizations methods ***/
   1330 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_QueryOperationModePreferences(IDMOVideoOutputOptimizations* This,ULONG ulOutputStreamIndex,DWORD *pdwRequestedCapabilities) {
   1331     return This->lpVtbl->QueryOperationModePreferences(This,ulOutputStreamIndex,pdwRequestedCapabilities);
   1332 }
   1333 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_SetOperationMode(IDMOVideoOutputOptimizations* This,ULONG ulOutputStreamIndex,DWORD dwEnabledFeatures) {
   1334     return This->lpVtbl->SetOperationMode(This,ulOutputStreamIndex,dwEnabledFeatures);
   1335 }
   1336 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_GetCurrentOperationMode(IDMOVideoOutputOptimizations* This,ULONG ulOutputStreamIndex,DWORD *pdwEnabledFeatures) {
   1337     return This->lpVtbl->GetCurrentOperationMode(This,ulOutputStreamIndex,pdwEnabledFeatures);
   1338 }
   1339 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(IDMOVideoOutputOptimizations* This,ULONG ulOutputStreamIndex,DWORD *pdwRequestedFeatures) {
   1340     return This->lpVtbl->GetCurrentSampleRequirements(This,ulOutputStreamIndex,pdwRequestedFeatures);
   1341 }
   1342 #endif
   1343 #endif
   1344 
   1345 #endif
   1346 
   1347 HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_QueryOperationModePreferences_Proxy(
   1348     IDMOVideoOutputOptimizations* This,
   1349     ULONG ulOutputStreamIndex,
   1350     DWORD *pdwRequestedCapabilities);
   1351 void __RPC_STUB IDMOVideoOutputOptimizations_QueryOperationModePreferences_Stub(
   1352     IRpcStubBuffer* This,
   1353     IRpcChannelBuffer* pRpcChannelBuffer,
   1354     PRPC_MESSAGE pRpcMessage,
   1355     DWORD* pdwStubPhase);
   1356 HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_SetOperationMode_Proxy(
   1357     IDMOVideoOutputOptimizations* This,
   1358     ULONG ulOutputStreamIndex,
   1359     DWORD dwEnabledFeatures);
   1360 void __RPC_STUB IDMOVideoOutputOptimizations_SetOperationMode_Stub(
   1361     IRpcStubBuffer* This,
   1362     IRpcChannelBuffer* pRpcChannelBuffer,
   1363     PRPC_MESSAGE pRpcMessage,
   1364     DWORD* pdwStubPhase);
   1365 HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_GetCurrentOperationMode_Proxy(
   1366     IDMOVideoOutputOptimizations* This,
   1367     ULONG ulOutputStreamIndex,
   1368     DWORD *pdwEnabledFeatures);
   1369 void __RPC_STUB IDMOVideoOutputOptimizations_GetCurrentOperationMode_Stub(
   1370     IRpcStubBuffer* This,
   1371     IRpcChannelBuffer* pRpcChannelBuffer,
   1372     PRPC_MESSAGE pRpcMessage,
   1373     DWORD* pdwStubPhase);
   1374 HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_GetCurrentSampleRequirements_Proxy(
   1375     IDMOVideoOutputOptimizations* This,
   1376     ULONG ulOutputStreamIndex,
   1377     DWORD *pdwRequestedFeatures);
   1378 void __RPC_STUB IDMOVideoOutputOptimizations_GetCurrentSampleRequirements_Stub(
   1379     IRpcStubBuffer* This,
   1380     IRpcChannelBuffer* pRpcChannelBuffer,
   1381     PRPC_MESSAGE pRpcMessage,
   1382     DWORD* pdwStubPhase);
   1383 
   1384 #endif  /* __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ */
   1385 
   1386 #endif
   1387 /* Begin additional prototypes for all interfaces */
   1388 
   1389 
   1390 /* End additional prototypes */
   1391 
   1392 #ifdef __cplusplus
   1393 }
   1394 #endif
   1395 
   1396 #endif /* __mediaobj_h__ */
   1397