zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

mediaobj.h (36974B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/mediaobj.idl - Do not edit ***/
      2 
      3 #ifdef _WIN32
      4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      6 #endif
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 #endif
     10 
     11 #ifndef COM_NO_WINDOWS_H
     12 #include <windows.h>
     13 #include <ole2.h>
     14 #endif
     15 
     16 #ifndef __mediaobj_h__
     17 #define __mediaobj_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IEnumDMO_FWD_DEFINED__
     22 #define __IEnumDMO_FWD_DEFINED__
     23 typedef interface IEnumDMO IEnumDMO;
     24 #ifdef __cplusplus
     25 interface IEnumDMO;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IMediaBuffer_FWD_DEFINED__
     30 #define __IMediaBuffer_FWD_DEFINED__
     31 typedef interface IMediaBuffer IMediaBuffer;
     32 #ifdef __cplusplus
     33 interface IMediaBuffer;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IMediaObject_FWD_DEFINED__
     38 #define __IMediaObject_FWD_DEFINED__
     39 typedef interface IMediaObject IMediaObject;
     40 #ifdef __cplusplus
     41 interface IMediaObject;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IMediaObjectInPlace_FWD_DEFINED__
     46 #define __IMediaObjectInPlace_FWD_DEFINED__
     47 typedef interface IMediaObjectInPlace IMediaObjectInPlace;
     48 #ifdef __cplusplus
     49 interface IMediaObjectInPlace;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IDMOQualityControl_FWD_DEFINED__
     54 #define __IDMOQualityControl_FWD_DEFINED__
     55 typedef interface IDMOQualityControl IDMOQualityControl;
     56 #ifdef __cplusplus
     57 interface IDMOQualityControl;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__
     62 #define __IDMOVideoOutputOptimizations_FWD_DEFINED__
     63 typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations;
     64 #ifdef __cplusplus
     65 interface IDMOVideoOutputOptimizations;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 /* Headers for imported files */
     70 
     71 #include <unknwn.h>
     72 #include <objidl.h>
     73 
     74 #ifdef __cplusplus
     75 extern "C" {
     76 #endif
     77 
     78 #ifdef __strmif_h__
     79 typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE;
     80 #else
     81 typedef struct _DMOMediaType {
     82     GUID majortype;
     83     GUID subtype;
     84     WINBOOL bFixedSizeSamples;
     85     WINBOOL bTemporalCompression;
     86     ULONG lSampleSize;
     87     GUID formattype;
     88     IUnknown *pUnk;
     89     ULONG cbFormat;
     90     BYTE *pbFormat;
     91 } DMO_MEDIA_TYPE;
     92 typedef LONGLONG REFERENCE_TIME;
     93 #endif
     94 /*****************************************************************************
     95  * IEnumDMO interface
     96  */
     97 #ifndef __IEnumDMO_INTERFACE_DEFINED__
     98 #define __IEnumDMO_INTERFACE_DEFINED__
     99 
    100 DEFINE_GUID(IID_IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f);
    101 #if defined(__cplusplus) && !defined(CINTERFACE)
    102 MIDL_INTERFACE("2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f")
    103 IEnumDMO : public IUnknown
    104 {
    105     virtual HRESULT STDMETHODCALLTYPE Next(
    106         DWORD cItemsToFetch,
    107         CLSID *pCLSID,
    108         WCHAR **Names,
    109         DWORD *pcItemsFetched) = 0;
    110 
    111     virtual HRESULT STDMETHODCALLTYPE Skip(
    112         DWORD cItemsToSkip) = 0;
    113 
    114     virtual HRESULT STDMETHODCALLTYPE Reset(
    115         ) = 0;
    116 
    117     virtual HRESULT STDMETHODCALLTYPE Clone(
    118         IEnumDMO **ppEnum) = 0;
    119 
    120 };
    121 #ifdef __CRT_UUID_DECL
    122 __CRT_UUID_DECL(IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f)
    123 #endif
    124 #else
    125 typedef struct IEnumDMOVtbl {
    126     BEGIN_INTERFACE
    127 
    128     /*** IUnknown methods ***/
    129     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    130         IEnumDMO *This,
    131         REFIID riid,
    132         void **ppvObject);
    133 
    134     ULONG (STDMETHODCALLTYPE *AddRef)(
    135         IEnumDMO *This);
    136 
    137     ULONG (STDMETHODCALLTYPE *Release)(
    138         IEnumDMO *This);
    139 
    140     /*** IEnumDMO methods ***/
    141     HRESULT (STDMETHODCALLTYPE *Next)(
    142         IEnumDMO *This,
    143         DWORD cItemsToFetch,
    144         CLSID *pCLSID,
    145         WCHAR **Names,
    146         DWORD *pcItemsFetched);
    147 
    148     HRESULT (STDMETHODCALLTYPE *Skip)(
    149         IEnumDMO *This,
    150         DWORD cItemsToSkip);
    151 
    152     HRESULT (STDMETHODCALLTYPE *Reset)(
    153         IEnumDMO *This);
    154 
    155     HRESULT (STDMETHODCALLTYPE *Clone)(
    156         IEnumDMO *This,
    157         IEnumDMO **ppEnum);
    158 
    159     END_INTERFACE
    160 } IEnumDMOVtbl;
    161 
    162 interface IEnumDMO {
    163     CONST_VTBL IEnumDMOVtbl* lpVtbl;
    164 };
    165 
    166 #ifdef COBJMACROS
    167 #ifndef WIDL_C_INLINE_WRAPPERS
    168 /*** IUnknown methods ***/
    169 #define IEnumDMO_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    170 #define IEnumDMO_AddRef(This) (This)->lpVtbl->AddRef(This)
    171 #define IEnumDMO_Release(This) (This)->lpVtbl->Release(This)
    172 /*** IEnumDMO methods ***/
    173 #define IEnumDMO_Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched) (This)->lpVtbl->Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched)
    174 #define IEnumDMO_Skip(This,cItemsToSkip) (This)->lpVtbl->Skip(This,cItemsToSkip)
    175 #define IEnumDMO_Reset(This) (This)->lpVtbl->Reset(This)
    176 #define IEnumDMO_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
    177 #else
    178 /*** IUnknown methods ***/
    179 static inline HRESULT IEnumDMO_QueryInterface(IEnumDMO* This,REFIID riid,void **ppvObject) {
    180     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    181 }
    182 static inline ULONG IEnumDMO_AddRef(IEnumDMO* This) {
    183     return This->lpVtbl->AddRef(This);
    184 }
    185 static inline ULONG IEnumDMO_Release(IEnumDMO* This) {
    186     return This->lpVtbl->Release(This);
    187 }
    188 /*** IEnumDMO methods ***/
    189 static inline HRESULT IEnumDMO_Next(IEnumDMO* This,DWORD cItemsToFetch,CLSID *pCLSID,WCHAR **Names,DWORD *pcItemsFetched) {
    190     return This->lpVtbl->Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched);
    191 }
    192 static inline HRESULT IEnumDMO_Skip(IEnumDMO* This,DWORD cItemsToSkip) {
    193     return This->lpVtbl->Skip(This,cItemsToSkip);
    194 }
    195 static inline HRESULT IEnumDMO_Reset(IEnumDMO* This) {
    196     return This->lpVtbl->Reset(This);
    197 }
    198 static inline HRESULT IEnumDMO_Clone(IEnumDMO* This,IEnumDMO **ppEnum) {
    199     return This->lpVtbl->Clone(This,ppEnum);
    200 }
    201 #endif
    202 #endif
    203 
    204 #endif
    205 
    206 
    207 #endif  /* __IEnumDMO_INTERFACE_DEFINED__ */
    208 
    209 /*****************************************************************************
    210  * IMediaBuffer interface
    211  */
    212 #ifndef __IMediaBuffer_INTERFACE_DEFINED__
    213 #define __IMediaBuffer_INTERFACE_DEFINED__
    214 
    215 DEFINE_GUID(IID_IMediaBuffer, 0x59eff8b9, 0x938c, 0x4a26, 0x82,0xf2, 0x95,0xcb,0x84,0xcd,0xc8,0x37);
    216 #if defined(__cplusplus) && !defined(CINTERFACE)
    217 MIDL_INTERFACE("59eff8b9-938c-4a26-82f2-95cb84cdc837")
    218 IMediaBuffer : public IUnknown
    219 {
    220     virtual HRESULT STDMETHODCALLTYPE SetLength(
    221         DWORD cbLength) = 0;
    222 
    223     virtual HRESULT STDMETHODCALLTYPE GetMaxLength(
    224         DWORD *pcbMaxLength) = 0;
    225 
    226     virtual HRESULT STDMETHODCALLTYPE GetBufferAndLength(
    227         BYTE **ppBuffer,
    228         DWORD *pcbLength) = 0;
    229 
    230 };
    231 #ifdef __CRT_UUID_DECL
    232 __CRT_UUID_DECL(IMediaBuffer, 0x59eff8b9, 0x938c, 0x4a26, 0x82,0xf2, 0x95,0xcb,0x84,0xcd,0xc8,0x37)
    233 #endif
    234 #else
    235 typedef struct IMediaBufferVtbl {
    236     BEGIN_INTERFACE
    237 
    238     /*** IUnknown methods ***/
    239     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    240         IMediaBuffer *This,
    241         REFIID riid,
    242         void **ppvObject);
    243 
    244     ULONG (STDMETHODCALLTYPE *AddRef)(
    245         IMediaBuffer *This);
    246 
    247     ULONG (STDMETHODCALLTYPE *Release)(
    248         IMediaBuffer *This);
    249 
    250     /*** IMediaBuffer methods ***/
    251     HRESULT (STDMETHODCALLTYPE *SetLength)(
    252         IMediaBuffer *This,
    253         DWORD cbLength);
    254 
    255     HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
    256         IMediaBuffer *This,
    257         DWORD *pcbMaxLength);
    258 
    259     HRESULT (STDMETHODCALLTYPE *GetBufferAndLength)(
    260         IMediaBuffer *This,
    261         BYTE **ppBuffer,
    262         DWORD *pcbLength);
    263 
    264     END_INTERFACE
    265 } IMediaBufferVtbl;
    266 
    267 interface IMediaBuffer {
    268     CONST_VTBL IMediaBufferVtbl* lpVtbl;
    269 };
    270 
    271 #ifdef COBJMACROS
    272 #ifndef WIDL_C_INLINE_WRAPPERS
    273 /*** IUnknown methods ***/
    274 #define IMediaBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    275 #define IMediaBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
    276 #define IMediaBuffer_Release(This) (This)->lpVtbl->Release(This)
    277 /*** IMediaBuffer methods ***/
    278 #define IMediaBuffer_SetLength(This,cbLength) (This)->lpVtbl->SetLength(This,cbLength)
    279 #define IMediaBuffer_GetMaxLength(This,pcbMaxLength) (This)->lpVtbl->GetMaxLength(This,pcbMaxLength)
    280 #define IMediaBuffer_GetBufferAndLength(This,ppBuffer,pcbLength) (This)->lpVtbl->GetBufferAndLength(This,ppBuffer,pcbLength)
    281 #else
    282 /*** IUnknown methods ***/
    283 static inline HRESULT IMediaBuffer_QueryInterface(IMediaBuffer* This,REFIID riid,void **ppvObject) {
    284     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    285 }
    286 static inline ULONG IMediaBuffer_AddRef(IMediaBuffer* This) {
    287     return This->lpVtbl->AddRef(This);
    288 }
    289 static inline ULONG IMediaBuffer_Release(IMediaBuffer* This) {
    290     return This->lpVtbl->Release(This);
    291 }
    292 /*** IMediaBuffer methods ***/
    293 static inline HRESULT IMediaBuffer_SetLength(IMediaBuffer* This,DWORD cbLength) {
    294     return This->lpVtbl->SetLength(This,cbLength);
    295 }
    296 static inline HRESULT IMediaBuffer_GetMaxLength(IMediaBuffer* This,DWORD *pcbMaxLength) {
    297     return This->lpVtbl->GetMaxLength(This,pcbMaxLength);
    298 }
    299 static inline HRESULT IMediaBuffer_GetBufferAndLength(IMediaBuffer* This,BYTE **ppBuffer,DWORD *pcbLength) {
    300     return This->lpVtbl->GetBufferAndLength(This,ppBuffer,pcbLength);
    301 }
    302 #endif
    303 #endif
    304 
    305 #endif
    306 
    307 
    308 #endif  /* __IMediaBuffer_INTERFACE_DEFINED__ */
    309 
    310 enum _DMO_INPUT_STATUS_FLAGS {
    311     DMO_INPUT_STATUSF_ACCEPT_DATA = 0x1
    312 };
    313 enum _DMO_INPUT_DATA_BUFFER_FLAGS {
    314     DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
    315     DMO_INPUT_DATA_BUFFERF_TIME = 0x2,
    316     DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x4
    317 };
    318 enum _DMO_PROCESS_OUTPUT_FLAGS {
    319     DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x1
    320 };
    321 typedef struct _DMO_OUTPUT_DATA_BUFFER {
    322     IMediaBuffer *pBuffer;
    323     DWORD dwStatus;
    324     REFERENCE_TIME rtTimestamp;
    325     REFERENCE_TIME rtTimelength;
    326 } DMO_OUTPUT_DATA_BUFFER;
    327 typedef struct _DMO_OUTPUT_DATA_BUFFER *PDMO_OUTPUT_DATA_BUFFER;
    328 enum _DMO_INPLACE_PROCESS_FLAGS {
    329     DMO_INPLACE_NORMAL = 0x0,
    330     DMO_INPLACE_ZERO = 0x1
    331 };
    332 enum _DMO_SET_TYPE_FLAGS {
    333     DMO_SET_TYPEF_TEST_ONLY = 0x1,
    334     DMO_SET_TYPEF_CLEAR = 0x2
    335 };
    336 enum _DMO_OUTPUT_DATA_BUFFERF_FLAGS {
    337     DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
    338     DMO_OUTPUT_DATA_BUFFERF_TIME = 0x2,
    339     DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x4,
    340     DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x1000000
    341 };
    342 /*****************************************************************************
    343  * IMediaObject interface
    344  */
    345 #ifndef __IMediaObject_INTERFACE_DEFINED__
    346 #define __IMediaObject_INTERFACE_DEFINED__
    347 
    348 DEFINE_GUID(IID_IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4);
    349 #if defined(__cplusplus) && !defined(CINTERFACE)
    350 MIDL_INTERFACE("d8ad0f58-5494-4102-97c5-ec798e59bcf4")
    351 IMediaObject : public IUnknown
    352 {
    353     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
    354         DWORD *pcInputStreams,
    355         DWORD *pcOutputStreams) = 0;
    356 
    357     virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo(
    358         DWORD dwInputStreamIndex,
    359         DWORD *pdwFlags) = 0;
    360 
    361     virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo(
    362         DWORD dwOutputStreamIndex,
    363         DWORD *pdwFlags) = 0;
    364 
    365     virtual HRESULT STDMETHODCALLTYPE GetInputType(
    366         DWORD dwInputStreamIndex,
    367         DWORD dwTypeIndex,
    368         DMO_MEDIA_TYPE *pmt) = 0;
    369 
    370     virtual HRESULT STDMETHODCALLTYPE GetOutputType(
    371         DWORD dwOutputStreamIndex,
    372         DWORD dwTypeIndex,
    373         DMO_MEDIA_TYPE *pmt) = 0;
    374 
    375     virtual HRESULT STDMETHODCALLTYPE SetInputType(
    376         DWORD dwInputStreamIndex,
    377         const DMO_MEDIA_TYPE *pmt,
    378         DWORD dwFlags) = 0;
    379 
    380     virtual HRESULT STDMETHODCALLTYPE SetOutputType(
    381         DWORD dwOutputStreamIndex,
    382         const DMO_MEDIA_TYPE *pmt,
    383         DWORD dwFlags) = 0;
    384 
    385     virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType(
    386         DWORD dwInputStreamIndex,
    387         DMO_MEDIA_TYPE *pmt) = 0;
    388 
    389     virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType(
    390         DWORD dwOutputStreamIndex,
    391         DMO_MEDIA_TYPE *pmt) = 0;
    392 
    393     virtual HRESULT STDMETHODCALLTYPE GetInputSizeInfo(
    394         DWORD dwInputStreamIndex,
    395         DWORD *pcbSize,
    396         DWORD *pcbMaxLookahead,
    397         DWORD *pcbAlignment) = 0;
    398 
    399     virtual HRESULT STDMETHODCALLTYPE GetOutputSizeInfo(
    400         DWORD dwOutputStreamIndex,
    401         DWORD *pcbSize,
    402         DWORD *pcbAlignment) = 0;
    403 
    404     virtual HRESULT STDMETHODCALLTYPE GetInputMaxLatency(
    405         DWORD dwInputStreamIndex,
    406         REFERENCE_TIME *prtMaxLatency) = 0;
    407 
    408     virtual HRESULT STDMETHODCALLTYPE SetInputMaxLatency(
    409         DWORD dwInputStreamIndex,
    410         REFERENCE_TIME rtMaxLatency) = 0;
    411 
    412     virtual HRESULT STDMETHODCALLTYPE Flush(
    413         ) = 0;
    414 
    415     virtual HRESULT STDMETHODCALLTYPE Discontinuity(
    416         DWORD dwInputStreamIndex) = 0;
    417 
    418     virtual HRESULT STDMETHODCALLTYPE AllocateStreamingResources(
    419         ) = 0;
    420 
    421     virtual HRESULT STDMETHODCALLTYPE FreeStreamingResources(
    422         ) = 0;
    423 
    424     virtual HRESULT STDMETHODCALLTYPE GetInputStatus(
    425         DWORD dwInputStreamIndex,
    426         DWORD *dwFlags) = 0;
    427 
    428     virtual HRESULT STDMETHODCALLTYPE ProcessInput(
    429         DWORD dwInputStreamIndex,
    430         IMediaBuffer *pBuffer,
    431         DWORD dwFlags,
    432         REFERENCE_TIME rtTimestamp,
    433         REFERENCE_TIME rtTimelength) = 0;
    434 
    435     virtual HRESULT STDMETHODCALLTYPE ProcessOutput(
    436         DWORD dwFlags,
    437         DWORD cOutputBufferCount,
    438         DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
    439         DWORD *pdwStatus) = 0;
    440 
    441     virtual HRESULT STDMETHODCALLTYPE Lock(
    442         LONG bLock) = 0;
    443 
    444 };
    445 #ifdef __CRT_UUID_DECL
    446 __CRT_UUID_DECL(IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4)
    447 #endif
    448 #else
    449 typedef struct IMediaObjectVtbl {
    450     BEGIN_INTERFACE
    451 
    452     /*** IUnknown methods ***/
    453     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    454         IMediaObject *This,
    455         REFIID riid,
    456         void **ppvObject);
    457 
    458     ULONG (STDMETHODCALLTYPE *AddRef)(
    459         IMediaObject *This);
    460 
    461     ULONG (STDMETHODCALLTYPE *Release)(
    462         IMediaObject *This);
    463 
    464     /*** IMediaObject methods ***/
    465     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
    466         IMediaObject *This,
    467         DWORD *pcInputStreams,
    468         DWORD *pcOutputStreams);
    469 
    470     HRESULT (STDMETHODCALLTYPE *GetInputStreamInfo)(
    471         IMediaObject *This,
    472         DWORD dwInputStreamIndex,
    473         DWORD *pdwFlags);
    474 
    475     HRESULT (STDMETHODCALLTYPE *GetOutputStreamInfo)(
    476         IMediaObject *This,
    477         DWORD dwOutputStreamIndex,
    478         DWORD *pdwFlags);
    479 
    480     HRESULT (STDMETHODCALLTYPE *GetInputType)(
    481         IMediaObject *This,
    482         DWORD dwInputStreamIndex,
    483         DWORD dwTypeIndex,
    484         DMO_MEDIA_TYPE *pmt);
    485 
    486     HRESULT (STDMETHODCALLTYPE *GetOutputType)(
    487         IMediaObject *This,
    488         DWORD dwOutputStreamIndex,
    489         DWORD dwTypeIndex,
    490         DMO_MEDIA_TYPE *pmt);
    491 
    492     HRESULT (STDMETHODCALLTYPE *SetInputType)(
    493         IMediaObject *This,
    494         DWORD dwInputStreamIndex,
    495         const DMO_MEDIA_TYPE *pmt,
    496         DWORD dwFlags);
    497 
    498     HRESULT (STDMETHODCALLTYPE *SetOutputType)(
    499         IMediaObject *This,
    500         DWORD dwOutputStreamIndex,
    501         const DMO_MEDIA_TYPE *pmt,
    502         DWORD dwFlags);
    503 
    504     HRESULT (STDMETHODCALLTYPE *GetInputCurrentType)(
    505         IMediaObject *This,
    506         DWORD dwInputStreamIndex,
    507         DMO_MEDIA_TYPE *pmt);
    508 
    509     HRESULT (STDMETHODCALLTYPE *GetOutputCurrentType)(
    510         IMediaObject *This,
    511         DWORD dwOutputStreamIndex,
    512         DMO_MEDIA_TYPE *pmt);
    513 
    514     HRESULT (STDMETHODCALLTYPE *GetInputSizeInfo)(
    515         IMediaObject *This,
    516         DWORD dwInputStreamIndex,
    517         DWORD *pcbSize,
    518         DWORD *pcbMaxLookahead,
    519         DWORD *pcbAlignment);
    520 
    521     HRESULT (STDMETHODCALLTYPE *GetOutputSizeInfo)(
    522         IMediaObject *This,
    523         DWORD dwOutputStreamIndex,
    524         DWORD *pcbSize,
    525         DWORD *pcbAlignment);
    526 
    527     HRESULT (STDMETHODCALLTYPE *GetInputMaxLatency)(
    528         IMediaObject *This,
    529         DWORD dwInputStreamIndex,
    530         REFERENCE_TIME *prtMaxLatency);
    531 
    532     HRESULT (STDMETHODCALLTYPE *SetInputMaxLatency)(
    533         IMediaObject *This,
    534         DWORD dwInputStreamIndex,
    535         REFERENCE_TIME rtMaxLatency);
    536 
    537     HRESULT (STDMETHODCALLTYPE *Flush)(
    538         IMediaObject *This);
    539 
    540     HRESULT (STDMETHODCALLTYPE *Discontinuity)(
    541         IMediaObject *This,
    542         DWORD dwInputStreamIndex);
    543 
    544     HRESULT (STDMETHODCALLTYPE *AllocateStreamingResources)(
    545         IMediaObject *This);
    546 
    547     HRESULT (STDMETHODCALLTYPE *FreeStreamingResources)(
    548         IMediaObject *This);
    549 
    550     HRESULT (STDMETHODCALLTYPE *GetInputStatus)(
    551         IMediaObject *This,
    552         DWORD dwInputStreamIndex,
    553         DWORD *dwFlags);
    554 
    555     HRESULT (STDMETHODCALLTYPE *ProcessInput)(
    556         IMediaObject *This,
    557         DWORD dwInputStreamIndex,
    558         IMediaBuffer *pBuffer,
    559         DWORD dwFlags,
    560         REFERENCE_TIME rtTimestamp,
    561         REFERENCE_TIME rtTimelength);
    562 
    563     HRESULT (STDMETHODCALLTYPE *ProcessOutput)(
    564         IMediaObject *This,
    565         DWORD dwFlags,
    566         DWORD cOutputBufferCount,
    567         DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
    568         DWORD *pdwStatus);
    569 
    570     HRESULT (STDMETHODCALLTYPE *Lock)(
    571         IMediaObject *This,
    572         LONG bLock);
    573 
    574     END_INTERFACE
    575 } IMediaObjectVtbl;
    576 
    577 interface IMediaObject {
    578     CONST_VTBL IMediaObjectVtbl* lpVtbl;
    579 };
    580 
    581 #ifdef COBJMACROS
    582 #ifndef WIDL_C_INLINE_WRAPPERS
    583 /*** IUnknown methods ***/
    584 #define IMediaObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    585 #define IMediaObject_AddRef(This) (This)->lpVtbl->AddRef(This)
    586 #define IMediaObject_Release(This) (This)->lpVtbl->Release(This)
    587 /*** IMediaObject methods ***/
    588 #define IMediaObject_GetStreamCount(This,pcInputStreams,pcOutputStreams) (This)->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams)
    589 #define IMediaObject_GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) (This)->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags)
    590 #define IMediaObject_GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) (This)->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags)
    591 #define IMediaObject_GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt)
    592 #define IMediaObject_GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt)
    593 #define IMediaObject_SetInputType(This,dwInputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags)
    594 #define IMediaObject_SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags)
    595 #define IMediaObject_GetInputCurrentType(This,dwInputStreamIndex,pmt) (This)->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt)
    596 #define IMediaObject_GetOutputCurrentType(This,dwOutputStreamIndex,pmt) (This)->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt)
    597 #define IMediaObject_GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) (This)->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment)
    598 #define IMediaObject_GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) (This)->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment)
    599 #define IMediaObject_GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) (This)->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency)
    600 #define IMediaObject_SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) (This)->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency)
    601 #define IMediaObject_Flush(This) (This)->lpVtbl->Flush(This)
    602 #define IMediaObject_Discontinuity(This,dwInputStreamIndex) (This)->lpVtbl->Discontinuity(This,dwInputStreamIndex)
    603 #define IMediaObject_AllocateStreamingResources(This) (This)->lpVtbl->AllocateStreamingResources(This)
    604 #define IMediaObject_FreeStreamingResources(This) (This)->lpVtbl->FreeStreamingResources(This)
    605 #define IMediaObject_GetInputStatus(This,dwInputStreamIndex,dwFlags) (This)->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags)
    606 #define IMediaObject_ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) (This)->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength)
    607 #define IMediaObject_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) (This)->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus)
    608 #define IMediaObject_Lock(This,bLock) (This)->lpVtbl->Lock(This,bLock)
    609 #else
    610 /*** IUnknown methods ***/
    611 static inline HRESULT IMediaObject_QueryInterface(IMediaObject* This,REFIID riid,void **ppvObject) {
    612     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    613 }
    614 static inline ULONG IMediaObject_AddRef(IMediaObject* This) {
    615     return This->lpVtbl->AddRef(This);
    616 }
    617 static inline ULONG IMediaObject_Release(IMediaObject* This) {
    618     return This->lpVtbl->Release(This);
    619 }
    620 /*** IMediaObject methods ***/
    621 static inline HRESULT IMediaObject_GetStreamCount(IMediaObject* This,DWORD *pcInputStreams,DWORD *pcOutputStreams) {
    622     return This->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams);
    623 }
    624 static inline HRESULT IMediaObject_GetInputStreamInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pdwFlags) {
    625     return This->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags);
    626 }
    627 static inline HRESULT IMediaObject_GetOutputStreamInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pdwFlags) {
    628     return This->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags);
    629 }
    630 static inline HRESULT IMediaObject_GetInputType(IMediaObject* This,DWORD dwInputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) {
    631     return This->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt);
    632 }
    633 static inline HRESULT IMediaObject_GetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) {
    634     return This->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt);
    635 }
    636 static inline HRESULT IMediaObject_SetInputType(IMediaObject* This,DWORD dwInputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) {
    637     return This->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags);
    638 }
    639 static inline HRESULT IMediaObject_SetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) {
    640     return This->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags);
    641 }
    642 static inline HRESULT IMediaObject_GetInputCurrentType(IMediaObject* This,DWORD dwInputStreamIndex,DMO_MEDIA_TYPE *pmt) {
    643     return This->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt);
    644 }
    645 static inline HRESULT IMediaObject_GetOutputCurrentType(IMediaObject* This,DWORD dwOutputStreamIndex,DMO_MEDIA_TYPE *pmt) {
    646     return This->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt);
    647 }
    648 static inline HRESULT IMediaObject_GetInputSizeInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pcbSize,DWORD *pcbMaxLookahead,DWORD *pcbAlignment) {
    649     return This->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment);
    650 }
    651 static inline HRESULT IMediaObject_GetOutputSizeInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pcbSize,DWORD *pcbAlignment) {
    652     return This->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment);
    653 }
    654 static inline HRESULT IMediaObject_GetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME *prtMaxLatency) {
    655     return This->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency);
    656 }
    657 static inline HRESULT IMediaObject_SetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME rtMaxLatency) {
    658     return This->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency);
    659 }
    660 static inline HRESULT IMediaObject_Flush(IMediaObject* This) {
    661     return This->lpVtbl->Flush(This);
    662 }
    663 static inline HRESULT IMediaObject_Discontinuity(IMediaObject* This,DWORD dwInputStreamIndex) {
    664     return This->lpVtbl->Discontinuity(This,dwInputStreamIndex);
    665 }
    666 static inline HRESULT IMediaObject_AllocateStreamingResources(IMediaObject* This) {
    667     return This->lpVtbl->AllocateStreamingResources(This);
    668 }
    669 static inline HRESULT IMediaObject_FreeStreamingResources(IMediaObject* This) {
    670     return This->lpVtbl->FreeStreamingResources(This);
    671 }
    672 static inline HRESULT IMediaObject_GetInputStatus(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *dwFlags) {
    673     return This->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags);
    674 }
    675 static inline HRESULT IMediaObject_ProcessInput(IMediaObject* This,DWORD dwInputStreamIndex,IMediaBuffer *pBuffer,DWORD dwFlags,REFERENCE_TIME rtTimestamp,REFERENCE_TIME rtTimelength) {
    676     return This->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength);
    677 }
    678 static inline HRESULT IMediaObject_ProcessOutput(IMediaObject* This,DWORD dwFlags,DWORD cOutputBufferCount,DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,DWORD *pdwStatus) {
    679     return This->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus);
    680 }
    681 static inline HRESULT IMediaObject_Lock(IMediaObject* This,LONG bLock) {
    682     return This->lpVtbl->Lock(This,bLock);
    683 }
    684 #endif
    685 #endif
    686 
    687 #endif
    688 
    689 
    690 #endif  /* __IMediaObject_INTERFACE_DEFINED__ */
    691 
    692 /*****************************************************************************
    693  * IMediaObjectInPlace interface
    694  */
    695 #ifndef __IMediaObjectInPlace_INTERFACE_DEFINED__
    696 #define __IMediaObjectInPlace_INTERFACE_DEFINED__
    697 
    698 DEFINE_GUID(IID_IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41);
    699 #if defined(__cplusplus) && !defined(CINTERFACE)
    700 MIDL_INTERFACE("651b9ad0-0fc7-4aa9-9538-d89931010741")
    701 IMediaObjectInPlace : public IUnknown
    702 {
    703     virtual HRESULT STDMETHODCALLTYPE Process(
    704         ULONG ulSize,
    705         BYTE *pData,
    706         REFERENCE_TIME refTimeStart,
    707         DWORD dwFlags) = 0;
    708 
    709     virtual HRESULT STDMETHODCALLTYPE Clone(
    710         IMediaObjectInPlace **ppMediaObject) = 0;
    711 
    712     virtual HRESULT STDMETHODCALLTYPE GetLatency(
    713         REFERENCE_TIME *pLatencyTime) = 0;
    714 
    715 };
    716 #ifdef __CRT_UUID_DECL
    717 __CRT_UUID_DECL(IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41)
    718 #endif
    719 #else
    720 typedef struct IMediaObjectInPlaceVtbl {
    721     BEGIN_INTERFACE
    722 
    723     /*** IUnknown methods ***/
    724     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    725         IMediaObjectInPlace *This,
    726         REFIID riid,
    727         void **ppvObject);
    728 
    729     ULONG (STDMETHODCALLTYPE *AddRef)(
    730         IMediaObjectInPlace *This);
    731 
    732     ULONG (STDMETHODCALLTYPE *Release)(
    733         IMediaObjectInPlace *This);
    734 
    735     /*** IMediaObjectInPlace methods ***/
    736     HRESULT (STDMETHODCALLTYPE *Process)(
    737         IMediaObjectInPlace *This,
    738         ULONG ulSize,
    739         BYTE *pData,
    740         REFERENCE_TIME refTimeStart,
    741         DWORD dwFlags);
    742 
    743     HRESULT (STDMETHODCALLTYPE *Clone)(
    744         IMediaObjectInPlace *This,
    745         IMediaObjectInPlace **ppMediaObject);
    746 
    747     HRESULT (STDMETHODCALLTYPE *GetLatency)(
    748         IMediaObjectInPlace *This,
    749         REFERENCE_TIME *pLatencyTime);
    750 
    751     END_INTERFACE
    752 } IMediaObjectInPlaceVtbl;
    753 
    754 interface IMediaObjectInPlace {
    755     CONST_VTBL IMediaObjectInPlaceVtbl* lpVtbl;
    756 };
    757 
    758 #ifdef COBJMACROS
    759 #ifndef WIDL_C_INLINE_WRAPPERS
    760 /*** IUnknown methods ***/
    761 #define IMediaObjectInPlace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    762 #define IMediaObjectInPlace_AddRef(This) (This)->lpVtbl->AddRef(This)
    763 #define IMediaObjectInPlace_Release(This) (This)->lpVtbl->Release(This)
    764 /*** IMediaObjectInPlace methods ***/
    765 #define IMediaObjectInPlace_Process(This,ulSize,pData,refTimeStart,dwFlags) (This)->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags)
    766 #define IMediaObjectInPlace_Clone(This,ppMediaObject) (This)->lpVtbl->Clone(This,ppMediaObject)
    767 #define IMediaObjectInPlace_GetLatency(This,pLatencyTime) (This)->lpVtbl->GetLatency(This,pLatencyTime)
    768 #else
    769 /*** IUnknown methods ***/
    770 static inline HRESULT IMediaObjectInPlace_QueryInterface(IMediaObjectInPlace* This,REFIID riid,void **ppvObject) {
    771     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    772 }
    773 static inline ULONG IMediaObjectInPlace_AddRef(IMediaObjectInPlace* This) {
    774     return This->lpVtbl->AddRef(This);
    775 }
    776 static inline ULONG IMediaObjectInPlace_Release(IMediaObjectInPlace* This) {
    777     return This->lpVtbl->Release(This);
    778 }
    779 /*** IMediaObjectInPlace methods ***/
    780 static inline HRESULT IMediaObjectInPlace_Process(IMediaObjectInPlace* This,ULONG ulSize,BYTE *pData,REFERENCE_TIME refTimeStart,DWORD dwFlags) {
    781     return This->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags);
    782 }
    783 static inline HRESULT IMediaObjectInPlace_Clone(IMediaObjectInPlace* This,IMediaObjectInPlace **ppMediaObject) {
    784     return This->lpVtbl->Clone(This,ppMediaObject);
    785 }
    786 static inline HRESULT IMediaObjectInPlace_GetLatency(IMediaObjectInPlace* This,REFERENCE_TIME *pLatencyTime) {
    787     return This->lpVtbl->GetLatency(This,pLatencyTime);
    788 }
    789 #endif
    790 #endif
    791 
    792 #endif
    793 
    794 
    795 #endif  /* __IMediaObjectInPlace_INTERFACE_DEFINED__ */
    796 
    797 enum _DMO_QUALITY_STATUS_FLAGS {
    798     DMO_QUALITY_STATUS_ENABLED = 0x1
    799 };
    800 /*****************************************************************************
    801  * IDMOQualityControl interface
    802  */
    803 #ifndef __IDMOQualityControl_INTERFACE_DEFINED__
    804 #define __IDMOQualityControl_INTERFACE_DEFINED__
    805 
    806 DEFINE_GUID(IID_IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60);
    807 #if defined(__cplusplus) && !defined(CINTERFACE)
    808 MIDL_INTERFACE("65abea96-cf36-453f-af8a-705e98f16260")
    809 IDMOQualityControl : public IUnknown
    810 {
    811     virtual HRESULT STDMETHODCALLTYPE SetNow(
    812         REFERENCE_TIME now) = 0;
    813 
    814     virtual HRESULT STDMETHODCALLTYPE SetStatus(
    815         DWORD flags) = 0;
    816 
    817     virtual HRESULT STDMETHODCALLTYPE GetStatus(
    818         DWORD *flags) = 0;
    819 
    820 };
    821 #ifdef __CRT_UUID_DECL
    822 __CRT_UUID_DECL(IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60)
    823 #endif
    824 #else
    825 typedef struct IDMOQualityControlVtbl {
    826     BEGIN_INTERFACE
    827 
    828     /*** IUnknown methods ***/
    829     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    830         IDMOQualityControl *This,
    831         REFIID riid,
    832         void **ppvObject);
    833 
    834     ULONG (STDMETHODCALLTYPE *AddRef)(
    835         IDMOQualityControl *This);
    836 
    837     ULONG (STDMETHODCALLTYPE *Release)(
    838         IDMOQualityControl *This);
    839 
    840     /*** IDMOQualityControl methods ***/
    841     HRESULT (STDMETHODCALLTYPE *SetNow)(
    842         IDMOQualityControl *This,
    843         REFERENCE_TIME now);
    844 
    845     HRESULT (STDMETHODCALLTYPE *SetStatus)(
    846         IDMOQualityControl *This,
    847         DWORD flags);
    848 
    849     HRESULT (STDMETHODCALLTYPE *GetStatus)(
    850         IDMOQualityControl *This,
    851         DWORD *flags);
    852 
    853     END_INTERFACE
    854 } IDMOQualityControlVtbl;
    855 
    856 interface IDMOQualityControl {
    857     CONST_VTBL IDMOQualityControlVtbl* lpVtbl;
    858 };
    859 
    860 #ifdef COBJMACROS
    861 #ifndef WIDL_C_INLINE_WRAPPERS
    862 /*** IUnknown methods ***/
    863 #define IDMOQualityControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    864 #define IDMOQualityControl_AddRef(This) (This)->lpVtbl->AddRef(This)
    865 #define IDMOQualityControl_Release(This) (This)->lpVtbl->Release(This)
    866 /*** IDMOQualityControl methods ***/
    867 #define IDMOQualityControl_SetNow(This,now) (This)->lpVtbl->SetNow(This,now)
    868 #define IDMOQualityControl_SetStatus(This,flags) (This)->lpVtbl->SetStatus(This,flags)
    869 #define IDMOQualityControl_GetStatus(This,flags) (This)->lpVtbl->GetStatus(This,flags)
    870 #else
    871 /*** IUnknown methods ***/
    872 static inline HRESULT IDMOQualityControl_QueryInterface(IDMOQualityControl* This,REFIID riid,void **ppvObject) {
    873     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    874 }
    875 static inline ULONG IDMOQualityControl_AddRef(IDMOQualityControl* This) {
    876     return This->lpVtbl->AddRef(This);
    877 }
    878 static inline ULONG IDMOQualityControl_Release(IDMOQualityControl* This) {
    879     return This->lpVtbl->Release(This);
    880 }
    881 /*** IDMOQualityControl methods ***/
    882 static inline HRESULT IDMOQualityControl_SetNow(IDMOQualityControl* This,REFERENCE_TIME now) {
    883     return This->lpVtbl->SetNow(This,now);
    884 }
    885 static inline HRESULT IDMOQualityControl_SetStatus(IDMOQualityControl* This,DWORD flags) {
    886     return This->lpVtbl->SetStatus(This,flags);
    887 }
    888 static inline HRESULT IDMOQualityControl_GetStatus(IDMOQualityControl* This,DWORD *flags) {
    889     return This->lpVtbl->GetStatus(This,flags);
    890 }
    891 #endif
    892 #endif
    893 
    894 #endif
    895 
    896 
    897 #endif  /* __IDMOQualityControl_INTERFACE_DEFINED__ */
    898 
    899 enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS {
    900     DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x1
    901 };
    902 /*****************************************************************************
    903  * IDMOVideoOutputOptimizations interface
    904  */
    905 #ifndef __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
    906 #define __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
    907 
    908 DEFINE_GUID(IID_IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac);
    909 #if defined(__cplusplus) && !defined(CINTERFACE)
    910 MIDL_INTERFACE("be8f4f4e-5b16-4d29-b350-7f6b5d9298ac")
    911 IDMOVideoOutputOptimizations : public IUnknown
    912 {
    913     virtual HRESULT STDMETHODCALLTYPE QueryOperationModePreferences(
    914         ULONG index,
    915         DWORD *flags) = 0;
    916 
    917     virtual HRESULT STDMETHODCALLTYPE SetOperationMode(
    918         ULONG index,
    919         DWORD flags) = 0;
    920 
    921     virtual HRESULT STDMETHODCALLTYPE GetCurrentOperationMode(
    922         ULONG index,
    923         DWORD *flags) = 0;
    924 
    925     virtual HRESULT STDMETHODCALLTYPE GetCurrentSampleRequirements(
    926         ULONG index,
    927         DWORD *flags) = 0;
    928 
    929 };
    930 #ifdef __CRT_UUID_DECL
    931 __CRT_UUID_DECL(IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac)
    932 #endif
    933 #else
    934 typedef struct IDMOVideoOutputOptimizationsVtbl {
    935     BEGIN_INTERFACE
    936 
    937     /*** IUnknown methods ***/
    938     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    939         IDMOVideoOutputOptimizations *This,
    940         REFIID riid,
    941         void **ppvObject);
    942 
    943     ULONG (STDMETHODCALLTYPE *AddRef)(
    944         IDMOVideoOutputOptimizations *This);
    945 
    946     ULONG (STDMETHODCALLTYPE *Release)(
    947         IDMOVideoOutputOptimizations *This);
    948 
    949     /*** IDMOVideoOutputOptimizations methods ***/
    950     HRESULT (STDMETHODCALLTYPE *QueryOperationModePreferences)(
    951         IDMOVideoOutputOptimizations *This,
    952         ULONG index,
    953         DWORD *flags);
    954 
    955     HRESULT (STDMETHODCALLTYPE *SetOperationMode)(
    956         IDMOVideoOutputOptimizations *This,
    957         ULONG index,
    958         DWORD flags);
    959 
    960     HRESULT (STDMETHODCALLTYPE *GetCurrentOperationMode)(
    961         IDMOVideoOutputOptimizations *This,
    962         ULONG index,
    963         DWORD *flags);
    964 
    965     HRESULT (STDMETHODCALLTYPE *GetCurrentSampleRequirements)(
    966         IDMOVideoOutputOptimizations *This,
    967         ULONG index,
    968         DWORD *flags);
    969 
    970     END_INTERFACE
    971 } IDMOVideoOutputOptimizationsVtbl;
    972 
    973 interface IDMOVideoOutputOptimizations {
    974     CONST_VTBL IDMOVideoOutputOptimizationsVtbl* lpVtbl;
    975 };
    976 
    977 #ifdef COBJMACROS
    978 #ifndef WIDL_C_INLINE_WRAPPERS
    979 /*** IUnknown methods ***/
    980 #define IDMOVideoOutputOptimizations_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    981 #define IDMOVideoOutputOptimizations_AddRef(This) (This)->lpVtbl->AddRef(This)
    982 #define IDMOVideoOutputOptimizations_Release(This) (This)->lpVtbl->Release(This)
    983 /*** IDMOVideoOutputOptimizations methods ***/
    984 #define IDMOVideoOutputOptimizations_QueryOperationModePreferences(This,index,flags) (This)->lpVtbl->QueryOperationModePreferences(This,index,flags)
    985 #define IDMOVideoOutputOptimizations_SetOperationMode(This,index,flags) (This)->lpVtbl->SetOperationMode(This,index,flags)
    986 #define IDMOVideoOutputOptimizations_GetCurrentOperationMode(This,index,flags) (This)->lpVtbl->GetCurrentOperationMode(This,index,flags)
    987 #define IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(This,index,flags) (This)->lpVtbl->GetCurrentSampleRequirements(This,index,flags)
    988 #else
    989 /*** IUnknown methods ***/
    990 static inline HRESULT IDMOVideoOutputOptimizations_QueryInterface(IDMOVideoOutputOptimizations* This,REFIID riid,void **ppvObject) {
    991     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    992 }
    993 static inline ULONG IDMOVideoOutputOptimizations_AddRef(IDMOVideoOutputOptimizations* This) {
    994     return This->lpVtbl->AddRef(This);
    995 }
    996 static inline ULONG IDMOVideoOutputOptimizations_Release(IDMOVideoOutputOptimizations* This) {
    997     return This->lpVtbl->Release(This);
    998 }
    999 /*** IDMOVideoOutputOptimizations methods ***/
   1000 static inline HRESULT IDMOVideoOutputOptimizations_QueryOperationModePreferences(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
   1001     return This->lpVtbl->QueryOperationModePreferences(This,index,flags);
   1002 }
   1003 static inline HRESULT IDMOVideoOutputOptimizations_SetOperationMode(IDMOVideoOutputOptimizations* This,ULONG index,DWORD flags) {
   1004     return This->lpVtbl->SetOperationMode(This,index,flags);
   1005 }
   1006 static inline HRESULT IDMOVideoOutputOptimizations_GetCurrentOperationMode(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
   1007     return This->lpVtbl->GetCurrentOperationMode(This,index,flags);
   1008 }
   1009 static inline HRESULT IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
   1010     return This->lpVtbl->GetCurrentSampleRequirements(This,index,flags);
   1011 }
   1012 #endif
   1013 #endif
   1014 
   1015 #endif
   1016 
   1017 
   1018 #endif  /* __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ */
   1019 
   1020 /* Begin additional prototypes for all interfaces */
   1021 
   1022 
   1023 /* End additional prototypes */
   1024 
   1025 #ifdef __cplusplus
   1026 }
   1027 #endif
   1028 
   1029 #endif /* __mediaobj_h__ */