zig

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

mfobjects.h (248391B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/mfobjects.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 __mfobjects_h__
     17 #define __mfobjects_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IMFAttributes_FWD_DEFINED__
     22 #define __IMFAttributes_FWD_DEFINED__
     23 typedef interface IMFAttributes IMFAttributes;
     24 #ifdef __cplusplus
     25 interface IMFAttributes;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IMFMediaBuffer_FWD_DEFINED__
     30 #define __IMFMediaBuffer_FWD_DEFINED__
     31 typedef interface IMFMediaBuffer IMFMediaBuffer;
     32 #ifdef __cplusplus
     33 interface IMFMediaBuffer;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IMFSample_FWD_DEFINED__
     38 #define __IMFSample_FWD_DEFINED__
     39 typedef interface IMFSample IMFSample;
     40 #ifdef __cplusplus
     41 interface IMFSample;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IMF2DBuffer_FWD_DEFINED__
     46 #define __IMF2DBuffer_FWD_DEFINED__
     47 typedef interface IMF2DBuffer IMF2DBuffer;
     48 #ifdef __cplusplus
     49 interface IMF2DBuffer;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IMF2DBuffer2_FWD_DEFINED__
     54 #define __IMF2DBuffer2_FWD_DEFINED__
     55 typedef interface IMF2DBuffer2 IMF2DBuffer2;
     56 #ifdef __cplusplus
     57 interface IMF2DBuffer2;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IMFDXGIBuffer_FWD_DEFINED__
     62 #define __IMFDXGIBuffer_FWD_DEFINED__
     63 typedef interface IMFDXGIBuffer IMFDXGIBuffer;
     64 #ifdef __cplusplus
     65 interface IMFDXGIBuffer;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IMFMediaType_FWD_DEFINED__
     70 #define __IMFMediaType_FWD_DEFINED__
     71 typedef interface IMFMediaType IMFMediaType;
     72 #ifdef __cplusplus
     73 interface IMFMediaType;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IMFAudioMediaType_FWD_DEFINED__
     78 #define __IMFAudioMediaType_FWD_DEFINED__
     79 typedef interface IMFAudioMediaType IMFAudioMediaType;
     80 #ifdef __cplusplus
     81 interface IMFAudioMediaType;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IMFVideoMediaType_FWD_DEFINED__
     86 #define __IMFVideoMediaType_FWD_DEFINED__
     87 typedef interface IMFVideoMediaType IMFVideoMediaType;
     88 #ifdef __cplusplus
     89 interface IMFVideoMediaType;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IMFAsyncResult_FWD_DEFINED__
     94 #define __IMFAsyncResult_FWD_DEFINED__
     95 typedef interface IMFAsyncResult IMFAsyncResult;
     96 #ifdef __cplusplus
     97 interface IMFAsyncResult;
     98 #endif /* __cplusplus */
     99 #endif
    100 
    101 #ifndef __IMFAsyncCallback_FWD_DEFINED__
    102 #define __IMFAsyncCallback_FWD_DEFINED__
    103 typedef interface IMFAsyncCallback IMFAsyncCallback;
    104 #ifdef __cplusplus
    105 interface IMFAsyncCallback;
    106 #endif /* __cplusplus */
    107 #endif
    108 
    109 #ifndef __IMFAsyncCallbackLogging_FWD_DEFINED__
    110 #define __IMFAsyncCallbackLogging_FWD_DEFINED__
    111 typedef interface IMFAsyncCallbackLogging IMFAsyncCallbackLogging;
    112 #ifdef __cplusplus
    113 interface IMFAsyncCallbackLogging;
    114 #endif /* __cplusplus */
    115 #endif
    116 
    117 #ifndef __IMFMediaEvent_FWD_DEFINED__
    118 #define __IMFMediaEvent_FWD_DEFINED__
    119 typedef interface IMFMediaEvent IMFMediaEvent;
    120 #ifdef __cplusplus
    121 interface IMFMediaEvent;
    122 #endif /* __cplusplus */
    123 #endif
    124 
    125 #ifndef __IMFMediaEventGenerator_FWD_DEFINED__
    126 #define __IMFMediaEventGenerator_FWD_DEFINED__
    127 typedef interface IMFMediaEventGenerator IMFMediaEventGenerator;
    128 #ifdef __cplusplus
    129 interface IMFMediaEventGenerator;
    130 #endif /* __cplusplus */
    131 #endif
    132 
    133 #ifndef __IMFRemoteAsyncCallback_FWD_DEFINED__
    134 #define __IMFRemoteAsyncCallback_FWD_DEFINED__
    135 typedef interface IMFRemoteAsyncCallback IMFRemoteAsyncCallback;
    136 #ifdef __cplusplus
    137 interface IMFRemoteAsyncCallback;
    138 #endif /* __cplusplus */
    139 #endif
    140 
    141 #ifndef __IMFByteStream_FWD_DEFINED__
    142 #define __IMFByteStream_FWD_DEFINED__
    143 typedef interface IMFByteStream IMFByteStream;
    144 #ifdef __cplusplus
    145 interface IMFByteStream;
    146 #endif /* __cplusplus */
    147 #endif
    148 
    149 #ifndef __IMFByteStreamProxyClassFactory_FWD_DEFINED__
    150 #define __IMFByteStreamProxyClassFactory_FWD_DEFINED__
    151 typedef interface IMFByteStreamProxyClassFactory IMFByteStreamProxyClassFactory;
    152 #ifdef __cplusplus
    153 interface IMFByteStreamProxyClassFactory;
    154 #endif /* __cplusplus */
    155 #endif
    156 
    157 #ifndef __IMFSampleOutputStream_FWD_DEFINED__
    158 #define __IMFSampleOutputStream_FWD_DEFINED__
    159 typedef interface IMFSampleOutputStream IMFSampleOutputStream;
    160 #ifdef __cplusplus
    161 interface IMFSampleOutputStream;
    162 #endif /* __cplusplus */
    163 #endif
    164 
    165 #ifndef __IMFCollection_FWD_DEFINED__
    166 #define __IMFCollection_FWD_DEFINED__
    167 typedef interface IMFCollection IMFCollection;
    168 #ifdef __cplusplus
    169 interface IMFCollection;
    170 #endif /* __cplusplus */
    171 #endif
    172 
    173 #ifndef __IMFMediaEventQueue_FWD_DEFINED__
    174 #define __IMFMediaEventQueue_FWD_DEFINED__
    175 typedef interface IMFMediaEventQueue IMFMediaEventQueue;
    176 #ifdef __cplusplus
    177 interface IMFMediaEventQueue;
    178 #endif /* __cplusplus */
    179 #endif
    180 
    181 #ifndef __IMFActivate_FWD_DEFINED__
    182 #define __IMFActivate_FWD_DEFINED__
    183 typedef interface IMFActivate IMFActivate;
    184 #ifdef __cplusplus
    185 interface IMFActivate;
    186 #endif /* __cplusplus */
    187 #endif
    188 
    189 #ifndef __IMFPluginControl_FWD_DEFINED__
    190 #define __IMFPluginControl_FWD_DEFINED__
    191 typedef interface IMFPluginControl IMFPluginControl;
    192 #ifdef __cplusplus
    193 interface IMFPluginControl;
    194 #endif /* __cplusplus */
    195 #endif
    196 
    197 #ifndef __IMFPluginControl2_FWD_DEFINED__
    198 #define __IMFPluginControl2_FWD_DEFINED__
    199 typedef interface IMFPluginControl2 IMFPluginControl2;
    200 #ifdef __cplusplus
    201 interface IMFPluginControl2;
    202 #endif /* __cplusplus */
    203 #endif
    204 
    205 #ifndef __IMFDXGIDeviceManager_FWD_DEFINED__
    206 #define __IMFDXGIDeviceManager_FWD_DEFINED__
    207 typedef interface IMFDXGIDeviceManager IMFDXGIDeviceManager;
    208 #ifdef __cplusplus
    209 interface IMFDXGIDeviceManager;
    210 #endif /* __cplusplus */
    211 #endif
    212 
    213 #ifndef __IMFMuxStreamAttributesManager_FWD_DEFINED__
    214 #define __IMFMuxStreamAttributesManager_FWD_DEFINED__
    215 typedef interface IMFMuxStreamAttributesManager IMFMuxStreamAttributesManager;
    216 #ifdef __cplusplus
    217 interface IMFMuxStreamAttributesManager;
    218 #endif /* __cplusplus */
    219 #endif
    220 
    221 #ifndef __IMFMuxStreamMediaTypeManager_FWD_DEFINED__
    222 #define __IMFMuxStreamMediaTypeManager_FWD_DEFINED__
    223 typedef interface IMFMuxStreamMediaTypeManager IMFMuxStreamMediaTypeManager;
    224 #ifdef __cplusplus
    225 interface IMFMuxStreamMediaTypeManager;
    226 #endif /* __cplusplus */
    227 #endif
    228 
    229 #ifndef __IMFMuxStreamSampleManager_FWD_DEFINED__
    230 #define __IMFMuxStreamSampleManager_FWD_DEFINED__
    231 typedef interface IMFMuxStreamSampleManager IMFMuxStreamSampleManager;
    232 #ifdef __cplusplus
    233 interface IMFMuxStreamSampleManager;
    234 #endif /* __cplusplus */
    235 #endif
    236 
    237 /* Headers for imported files */
    238 
    239 #include <unknwn.h>
    240 #include <propsys.h>
    241 #include <mediaobj.h>
    242 
    243 #ifdef __cplusplus
    244 extern "C" {
    245 #endif
    246 
    247 /**
    248  * This file is part of the mingw-w64 runtime package.
    249  * No warranty is given; refer to the file DISCLAIMER within this package.
    250  */
    251 
    252 #include <winapifamily.h>
    253 
    254 
    255 typedef ULONGLONG QWORD;
    256 
    257 #include <mmreg.h>
    258 #if 0
    259 typedef struct tWAVEFORMATEX {
    260     WORD wFormatTag;
    261     WORD nChannels;
    262     DWORD nSamplesPerSec;
    263     DWORD nAvgBytesPerSec;
    264     WORD nBlockAlign;
    265     WORD wBitsPerSample;
    266     WORD cbSize;
    267     BYTE pExtraBytes[1];
    268 } WAVEFORMATEX;
    269 typedef struct tWAVEFORMATEX *PWAVEFORMATEX;
    270 typedef struct tWAVEFORMATEX *NPWAVEFORMATEX;
    271 typedef struct tWAVEFORMATEX *LPWAVEFORMATEX;
    272 typedef struct __WIDL_mfobjects_generated_name_00000020 {
    273     WORD wFormatTag;
    274     WORD nChannels;
    275     DWORD nSamplesPerSec;
    276     DWORD nAvgBytesPerSec;
    277     WORD nBlockAlign;
    278     WORD wBitsPerSample;
    279     WORD cbSize;
    280     WORD wValidBitsPerSample;
    281     DWORD dwChannelMask;
    282     GUID SubFormat;
    283 } WAVEFORMATEXTENSIBLE;
    284 typedef struct __WIDL_mfobjects_generated_name_00000020 *PWAVEFORMATEXTENSIBLE;
    285 #endif
    286 
    287 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    288 typedef enum _MF_ATTRIBUTE_TYPE {
    289     MF_ATTRIBUTE_UINT32 = VT_UI4,
    290     MF_ATTRIBUTE_UINT64 = VT_UI8,
    291     MF_ATTRIBUTE_DOUBLE = VT_R8,
    292     MF_ATTRIBUTE_GUID = VT_CLSID,
    293     MF_ATTRIBUTE_STRING = VT_LPWSTR,
    294     MF_ATTRIBUTE_BLOB = VT_VECTOR | VT_UI1,
    295     MF_ATTRIBUTE_IUNKNOWN = VT_UNKNOWN
    296 } MF_ATTRIBUTE_TYPE;
    297 
    298 typedef enum _MF_ATTRIBUTES_MATCH_TYPE {
    299     MF_ATTRIBUTES_MATCH_OUR_ITEMS = 0,
    300     MF_ATTRIBUTES_MATCH_THEIR_ITEMS = 1,
    301     MF_ATTRIBUTES_MATCH_ALL_ITEMS = 2,
    302     MF_ATTRIBUTES_MATCH_INTERSECTION = 3,
    303     MF_ATTRIBUTES_MATCH_SMALLER = 4
    304 } MF_ATTRIBUTES_MATCH_TYPE;
    305 
    306 /*****************************************************************************
    307  * IMFAttributes interface
    308  */
    309 #ifndef __IMFAttributes_INTERFACE_DEFINED__
    310 #define __IMFAttributes_INTERFACE_DEFINED__
    311 
    312 DEFINE_GUID(IID_IMFAttributes, 0x2cd2d921, 0xc447, 0x44a7, 0xa1,0x3c, 0x4a,0xda,0xbf,0xc2,0x47,0xe3);
    313 #if defined(__cplusplus) && !defined(CINTERFACE)
    314 MIDL_INTERFACE("2cd2d921-c447-44a7-a13c-4adabfc247e3")
    315 IMFAttributes : public IUnknown
    316 {
    317     virtual HRESULT STDMETHODCALLTYPE GetItem(
    318         REFGUID guidKey,
    319         PROPVARIANT *pValue) = 0;
    320 
    321     virtual HRESULT STDMETHODCALLTYPE GetItemType(
    322         REFGUID guidKey,
    323         MF_ATTRIBUTE_TYPE *pType) = 0;
    324 
    325     virtual HRESULT STDMETHODCALLTYPE CompareItem(
    326         REFGUID guidKey,
    327         REFPROPVARIANT Value,
    328         WINBOOL *pbResult) = 0;
    329 
    330     virtual HRESULT STDMETHODCALLTYPE Compare(
    331         IMFAttributes *pTheirs,
    332         MF_ATTRIBUTES_MATCH_TYPE MatchType,
    333         WINBOOL *pbResult) = 0;
    334 
    335     virtual HRESULT STDMETHODCALLTYPE GetUINT32(
    336         REFGUID guidKey,
    337         UINT32 *punValue) = 0;
    338 
    339     virtual HRESULT STDMETHODCALLTYPE GetUINT64(
    340         REFGUID guidKey,
    341         UINT64 *punValue) = 0;
    342 
    343     virtual HRESULT STDMETHODCALLTYPE GetDouble(
    344         REFGUID guidKey,
    345         double *pfValue) = 0;
    346 
    347     virtual HRESULT STDMETHODCALLTYPE GetGUID(
    348         REFGUID guidKey,
    349         GUID *pguidValue) = 0;
    350 
    351     virtual HRESULT STDMETHODCALLTYPE GetStringLength(
    352         REFGUID guidKey,
    353         UINT32 *pcchLength) = 0;
    354 
    355     virtual HRESULT STDMETHODCALLTYPE GetString(
    356         REFGUID guidKey,
    357         LPWSTR pwszValue,
    358         UINT32 cchBufSize,
    359         UINT32 *pcchLength) = 0;
    360 
    361     virtual HRESULT STDMETHODCALLTYPE GetAllocatedString(
    362         REFGUID guidKey,
    363         LPWSTR *ppwszValue,
    364         UINT32 *pcchLength) = 0;
    365 
    366     virtual HRESULT STDMETHODCALLTYPE GetBlobSize(
    367         REFGUID guidKey,
    368         UINT32 *pcbBlobSize) = 0;
    369 
    370     virtual HRESULT STDMETHODCALLTYPE GetBlob(
    371         REFGUID guidKey,
    372         UINT8 *pBuf,
    373         UINT32 cbBufSize,
    374         UINT32 *pcbBlobSize) = 0;
    375 
    376     virtual HRESULT STDMETHODCALLTYPE GetAllocatedBlob(
    377         REFGUID guidKey,
    378         UINT8 **ppBuf,
    379         UINT32 *pcbSize) = 0;
    380 
    381     virtual HRESULT STDMETHODCALLTYPE GetUnknown(
    382         REFGUID guidKey,
    383         REFIID riid,
    384         LPVOID *ppv) = 0;
    385 
    386     virtual HRESULT STDMETHODCALLTYPE SetItem(
    387         REFGUID guidKey,
    388         REFPROPVARIANT Value) = 0;
    389 
    390     virtual HRESULT STDMETHODCALLTYPE DeleteItem(
    391         REFGUID guidKey) = 0;
    392 
    393     virtual HRESULT STDMETHODCALLTYPE DeleteAllItems(
    394         ) = 0;
    395 
    396     virtual HRESULT STDMETHODCALLTYPE SetUINT32(
    397         REFGUID guidKey,
    398         UINT32 unValue) = 0;
    399 
    400     virtual HRESULT STDMETHODCALLTYPE SetUINT64(
    401         REFGUID guidKey,
    402         UINT64 unValue) = 0;
    403 
    404     virtual HRESULT STDMETHODCALLTYPE SetDouble(
    405         REFGUID guidKey,
    406         double fValue) = 0;
    407 
    408     virtual HRESULT STDMETHODCALLTYPE SetGUID(
    409         REFGUID guidKey,
    410         REFGUID guidValue) = 0;
    411 
    412     virtual HRESULT STDMETHODCALLTYPE SetString(
    413         REFGUID guidKey,
    414         LPCWSTR wszValue) = 0;
    415 
    416     virtual HRESULT STDMETHODCALLTYPE SetBlob(
    417         REFGUID guidKey,
    418         const UINT8 *pBuf,
    419         UINT32 cbBufSize) = 0;
    420 
    421     virtual HRESULT STDMETHODCALLTYPE SetUnknown(
    422         REFGUID guidKey,
    423         IUnknown *pUnknown) = 0;
    424 
    425     virtual HRESULT STDMETHODCALLTYPE LockStore(
    426         ) = 0;
    427 
    428     virtual HRESULT STDMETHODCALLTYPE UnlockStore(
    429         ) = 0;
    430 
    431     virtual HRESULT STDMETHODCALLTYPE GetCount(
    432         UINT32 *pcItems) = 0;
    433 
    434     virtual HRESULT STDMETHODCALLTYPE GetItemByIndex(
    435         UINT32 unIndex,
    436         GUID *pguidKey,
    437         PROPVARIANT *pValue) = 0;
    438 
    439     virtual HRESULT STDMETHODCALLTYPE CopyAllItems(
    440         IMFAttributes *pDest) = 0;
    441 
    442 };
    443 #ifdef __CRT_UUID_DECL
    444 __CRT_UUID_DECL(IMFAttributes, 0x2cd2d921, 0xc447, 0x44a7, 0xa1,0x3c, 0x4a,0xda,0xbf,0xc2,0x47,0xe3)
    445 #endif
    446 #else
    447 typedef struct IMFAttributesVtbl {
    448     BEGIN_INTERFACE
    449 
    450     /*** IUnknown methods ***/
    451     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    452         IMFAttributes *This,
    453         REFIID riid,
    454         void **ppvObject);
    455 
    456     ULONG (STDMETHODCALLTYPE *AddRef)(
    457         IMFAttributes *This);
    458 
    459     ULONG (STDMETHODCALLTYPE *Release)(
    460         IMFAttributes *This);
    461 
    462     /*** IMFAttributes methods ***/
    463     HRESULT (STDMETHODCALLTYPE *GetItem)(
    464         IMFAttributes *This,
    465         REFGUID guidKey,
    466         PROPVARIANT *pValue);
    467 
    468     HRESULT (STDMETHODCALLTYPE *GetItemType)(
    469         IMFAttributes *This,
    470         REFGUID guidKey,
    471         MF_ATTRIBUTE_TYPE *pType);
    472 
    473     HRESULT (STDMETHODCALLTYPE *CompareItem)(
    474         IMFAttributes *This,
    475         REFGUID guidKey,
    476         REFPROPVARIANT Value,
    477         WINBOOL *pbResult);
    478 
    479     HRESULT (STDMETHODCALLTYPE *Compare)(
    480         IMFAttributes *This,
    481         IMFAttributes *pTheirs,
    482         MF_ATTRIBUTES_MATCH_TYPE MatchType,
    483         WINBOOL *pbResult);
    484 
    485     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
    486         IMFAttributes *This,
    487         REFGUID guidKey,
    488         UINT32 *punValue);
    489 
    490     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
    491         IMFAttributes *This,
    492         REFGUID guidKey,
    493         UINT64 *punValue);
    494 
    495     HRESULT (STDMETHODCALLTYPE *GetDouble)(
    496         IMFAttributes *This,
    497         REFGUID guidKey,
    498         double *pfValue);
    499 
    500     HRESULT (STDMETHODCALLTYPE *GetGUID)(
    501         IMFAttributes *This,
    502         REFGUID guidKey,
    503         GUID *pguidValue);
    504 
    505     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
    506         IMFAttributes *This,
    507         REFGUID guidKey,
    508         UINT32 *pcchLength);
    509 
    510     HRESULT (STDMETHODCALLTYPE *GetString)(
    511         IMFAttributes *This,
    512         REFGUID guidKey,
    513         LPWSTR pwszValue,
    514         UINT32 cchBufSize,
    515         UINT32 *pcchLength);
    516 
    517     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
    518         IMFAttributes *This,
    519         REFGUID guidKey,
    520         LPWSTR *ppwszValue,
    521         UINT32 *pcchLength);
    522 
    523     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
    524         IMFAttributes *This,
    525         REFGUID guidKey,
    526         UINT32 *pcbBlobSize);
    527 
    528     HRESULT (STDMETHODCALLTYPE *GetBlob)(
    529         IMFAttributes *This,
    530         REFGUID guidKey,
    531         UINT8 *pBuf,
    532         UINT32 cbBufSize,
    533         UINT32 *pcbBlobSize);
    534 
    535     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
    536         IMFAttributes *This,
    537         REFGUID guidKey,
    538         UINT8 **ppBuf,
    539         UINT32 *pcbSize);
    540 
    541     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
    542         IMFAttributes *This,
    543         REFGUID guidKey,
    544         REFIID riid,
    545         LPVOID *ppv);
    546 
    547     HRESULT (STDMETHODCALLTYPE *SetItem)(
    548         IMFAttributes *This,
    549         REFGUID guidKey,
    550         REFPROPVARIANT Value);
    551 
    552     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
    553         IMFAttributes *This,
    554         REFGUID guidKey);
    555 
    556     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
    557         IMFAttributes *This);
    558 
    559     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
    560         IMFAttributes *This,
    561         REFGUID guidKey,
    562         UINT32 unValue);
    563 
    564     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
    565         IMFAttributes *This,
    566         REFGUID guidKey,
    567         UINT64 unValue);
    568 
    569     HRESULT (STDMETHODCALLTYPE *SetDouble)(
    570         IMFAttributes *This,
    571         REFGUID guidKey,
    572         double fValue);
    573 
    574     HRESULT (STDMETHODCALLTYPE *SetGUID)(
    575         IMFAttributes *This,
    576         REFGUID guidKey,
    577         REFGUID guidValue);
    578 
    579     HRESULT (STDMETHODCALLTYPE *SetString)(
    580         IMFAttributes *This,
    581         REFGUID guidKey,
    582         LPCWSTR wszValue);
    583 
    584     HRESULT (STDMETHODCALLTYPE *SetBlob)(
    585         IMFAttributes *This,
    586         REFGUID guidKey,
    587         const UINT8 *pBuf,
    588         UINT32 cbBufSize);
    589 
    590     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
    591         IMFAttributes *This,
    592         REFGUID guidKey,
    593         IUnknown *pUnknown);
    594 
    595     HRESULT (STDMETHODCALLTYPE *LockStore)(
    596         IMFAttributes *This);
    597 
    598     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
    599         IMFAttributes *This);
    600 
    601     HRESULT (STDMETHODCALLTYPE *GetCount)(
    602         IMFAttributes *This,
    603         UINT32 *pcItems);
    604 
    605     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
    606         IMFAttributes *This,
    607         UINT32 unIndex,
    608         GUID *pguidKey,
    609         PROPVARIANT *pValue);
    610 
    611     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
    612         IMFAttributes *This,
    613         IMFAttributes *pDest);
    614 
    615     END_INTERFACE
    616 } IMFAttributesVtbl;
    617 
    618 interface IMFAttributes {
    619     CONST_VTBL IMFAttributesVtbl* lpVtbl;
    620 };
    621 
    622 #ifdef COBJMACROS
    623 #ifndef WIDL_C_INLINE_WRAPPERS
    624 /*** IUnknown methods ***/
    625 #define IMFAttributes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    626 #define IMFAttributes_AddRef(This) (This)->lpVtbl->AddRef(This)
    627 #define IMFAttributes_Release(This) (This)->lpVtbl->Release(This)
    628 /*** IMFAttributes methods ***/
    629 #define IMFAttributes_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
    630 #define IMFAttributes_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
    631 #define IMFAttributes_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
    632 #define IMFAttributes_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
    633 #define IMFAttributes_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
    634 #define IMFAttributes_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
    635 #define IMFAttributes_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
    636 #define IMFAttributes_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
    637 #define IMFAttributes_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
    638 #define IMFAttributes_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
    639 #define IMFAttributes_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
    640 #define IMFAttributes_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
    641 #define IMFAttributes_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
    642 #define IMFAttributes_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
    643 #define IMFAttributes_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
    644 #define IMFAttributes_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
    645 #define IMFAttributes_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
    646 #define IMFAttributes_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
    647 #define IMFAttributes_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
    648 #define IMFAttributes_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
    649 #define IMFAttributes_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
    650 #define IMFAttributes_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
    651 #define IMFAttributes_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
    652 #define IMFAttributes_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
    653 #define IMFAttributes_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
    654 #define IMFAttributes_LockStore(This) (This)->lpVtbl->LockStore(This)
    655 #define IMFAttributes_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
    656 #define IMFAttributes_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
    657 #define IMFAttributes_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
    658 #define IMFAttributes_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
    659 #else
    660 /*** IUnknown methods ***/
    661 static inline HRESULT IMFAttributes_QueryInterface(IMFAttributes* This,REFIID riid,void **ppvObject) {
    662     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    663 }
    664 static inline ULONG IMFAttributes_AddRef(IMFAttributes* This) {
    665     return This->lpVtbl->AddRef(This);
    666 }
    667 static inline ULONG IMFAttributes_Release(IMFAttributes* This) {
    668     return This->lpVtbl->Release(This);
    669 }
    670 /*** IMFAttributes methods ***/
    671 static inline HRESULT IMFAttributes_GetItem(IMFAttributes* This,REFGUID guidKey,PROPVARIANT *pValue) {
    672     return This->lpVtbl->GetItem(This,guidKey,pValue);
    673 }
    674 static inline HRESULT IMFAttributes_GetItemType(IMFAttributes* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
    675     return This->lpVtbl->GetItemType(This,guidKey,pType);
    676 }
    677 static inline HRESULT IMFAttributes_CompareItem(IMFAttributes* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
    678     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
    679 }
    680 static inline HRESULT IMFAttributes_Compare(IMFAttributes* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
    681     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
    682 }
    683 static inline HRESULT IMFAttributes_GetUINT32(IMFAttributes* This,REFGUID guidKey,UINT32 *punValue) {
    684     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
    685 }
    686 static inline HRESULT IMFAttributes_GetUINT64(IMFAttributes* This,REFGUID guidKey,UINT64 *punValue) {
    687     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
    688 }
    689 static inline HRESULT IMFAttributes_GetDouble(IMFAttributes* This,REFGUID guidKey,double *pfValue) {
    690     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
    691 }
    692 static inline HRESULT IMFAttributes_GetGUID(IMFAttributes* This,REFGUID guidKey,GUID *pguidValue) {
    693     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
    694 }
    695 static inline HRESULT IMFAttributes_GetStringLength(IMFAttributes* This,REFGUID guidKey,UINT32 *pcchLength) {
    696     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
    697 }
    698 static inline HRESULT IMFAttributes_GetString(IMFAttributes* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
    699     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
    700 }
    701 static inline HRESULT IMFAttributes_GetAllocatedString(IMFAttributes* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
    702     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
    703 }
    704 static inline HRESULT IMFAttributes_GetBlobSize(IMFAttributes* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
    705     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
    706 }
    707 static inline HRESULT IMFAttributes_GetBlob(IMFAttributes* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
    708     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
    709 }
    710 static inline HRESULT IMFAttributes_GetAllocatedBlob(IMFAttributes* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
    711     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
    712 }
    713 static inline HRESULT IMFAttributes_GetUnknown(IMFAttributes* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
    714     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
    715 }
    716 static inline HRESULT IMFAttributes_SetItem(IMFAttributes* This,REFGUID guidKey,REFPROPVARIANT Value) {
    717     return This->lpVtbl->SetItem(This,guidKey,Value);
    718 }
    719 static inline HRESULT IMFAttributes_DeleteItem(IMFAttributes* This,REFGUID guidKey) {
    720     return This->lpVtbl->DeleteItem(This,guidKey);
    721 }
    722 static inline HRESULT IMFAttributes_DeleteAllItems(IMFAttributes* This) {
    723     return This->lpVtbl->DeleteAllItems(This);
    724 }
    725 static inline HRESULT IMFAttributes_SetUINT32(IMFAttributes* This,REFGUID guidKey,UINT32 unValue) {
    726     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
    727 }
    728 static inline HRESULT IMFAttributes_SetUINT64(IMFAttributes* This,REFGUID guidKey,UINT64 unValue) {
    729     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
    730 }
    731 static inline HRESULT IMFAttributes_SetDouble(IMFAttributes* This,REFGUID guidKey,double fValue) {
    732     return This->lpVtbl->SetDouble(This,guidKey,fValue);
    733 }
    734 static inline HRESULT IMFAttributes_SetGUID(IMFAttributes* This,REFGUID guidKey,REFGUID guidValue) {
    735     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
    736 }
    737 static inline HRESULT IMFAttributes_SetString(IMFAttributes* This,REFGUID guidKey,LPCWSTR wszValue) {
    738     return This->lpVtbl->SetString(This,guidKey,wszValue);
    739 }
    740 static inline HRESULT IMFAttributes_SetBlob(IMFAttributes* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
    741     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
    742 }
    743 static inline HRESULT IMFAttributes_SetUnknown(IMFAttributes* This,REFGUID guidKey,IUnknown *pUnknown) {
    744     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
    745 }
    746 static inline HRESULT IMFAttributes_LockStore(IMFAttributes* This) {
    747     return This->lpVtbl->LockStore(This);
    748 }
    749 static inline HRESULT IMFAttributes_UnlockStore(IMFAttributes* This) {
    750     return This->lpVtbl->UnlockStore(This);
    751 }
    752 static inline HRESULT IMFAttributes_GetCount(IMFAttributes* This,UINT32 *pcItems) {
    753     return This->lpVtbl->GetCount(This,pcItems);
    754 }
    755 static inline HRESULT IMFAttributes_GetItemByIndex(IMFAttributes* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
    756     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
    757 }
    758 static inline HRESULT IMFAttributes_CopyAllItems(IMFAttributes* This,IMFAttributes *pDest) {
    759     return This->lpVtbl->CopyAllItems(This,pDest);
    760 }
    761 #endif
    762 #endif
    763 
    764 #endif
    765 
    766 
    767 #endif  /* __IMFAttributes_INTERFACE_DEFINED__ */
    768 
    769 
    770 enum MF_ATTRIBUTE_SERIALIZE_OPTIONS {
    771     MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF = 0x1
    772 };
    773 
    774 STDAPI MFSerializeAttributesToStream(IMFAttributes *pAttr, DWORD dwOptions, IStream *pStm);
    775 STDAPI MFDeserializeAttributesFromStream(IMFAttributes *pAttr, DWORD dwOptions, IStream *pStm);
    776 
    777 /*****************************************************************************
    778  * IMFMediaBuffer interface
    779  */
    780 #ifndef __IMFMediaBuffer_INTERFACE_DEFINED__
    781 #define __IMFMediaBuffer_INTERFACE_DEFINED__
    782 
    783 DEFINE_GUID(IID_IMFMediaBuffer, 0x045fa593, 0x8799, 0x42b8, 0xbc,0x8d, 0x89,0x68,0xc6,0x45,0x35,0x07);
    784 #if defined(__cplusplus) && !defined(CINTERFACE)
    785 MIDL_INTERFACE("045fa593-8799-42b8-bc8d-8968c6453507")
    786 IMFMediaBuffer : public IUnknown
    787 {
    788     virtual HRESULT STDMETHODCALLTYPE Lock(
    789         BYTE **ppbBuffer,
    790         DWORD *pcbMaxLength,
    791         DWORD *pcbCurrentLength) = 0;
    792 
    793     virtual HRESULT STDMETHODCALLTYPE Unlock(
    794         ) = 0;
    795 
    796     virtual HRESULT STDMETHODCALLTYPE GetCurrentLength(
    797         DWORD *pcbCurrentLength) = 0;
    798 
    799     virtual HRESULT STDMETHODCALLTYPE SetCurrentLength(
    800         DWORD cbCurrentLength) = 0;
    801 
    802     virtual HRESULT STDMETHODCALLTYPE GetMaxLength(
    803         DWORD *pcbMaxLength) = 0;
    804 
    805 };
    806 #ifdef __CRT_UUID_DECL
    807 __CRT_UUID_DECL(IMFMediaBuffer, 0x045fa593, 0x8799, 0x42b8, 0xbc,0x8d, 0x89,0x68,0xc6,0x45,0x35,0x07)
    808 #endif
    809 #else
    810 typedef struct IMFMediaBufferVtbl {
    811     BEGIN_INTERFACE
    812 
    813     /*** IUnknown methods ***/
    814     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    815         IMFMediaBuffer *This,
    816         REFIID riid,
    817         void **ppvObject);
    818 
    819     ULONG (STDMETHODCALLTYPE *AddRef)(
    820         IMFMediaBuffer *This);
    821 
    822     ULONG (STDMETHODCALLTYPE *Release)(
    823         IMFMediaBuffer *This);
    824 
    825     /*** IMFMediaBuffer methods ***/
    826     HRESULT (STDMETHODCALLTYPE *Lock)(
    827         IMFMediaBuffer *This,
    828         BYTE **ppbBuffer,
    829         DWORD *pcbMaxLength,
    830         DWORD *pcbCurrentLength);
    831 
    832     HRESULT (STDMETHODCALLTYPE *Unlock)(
    833         IMFMediaBuffer *This);
    834 
    835     HRESULT (STDMETHODCALLTYPE *GetCurrentLength)(
    836         IMFMediaBuffer *This,
    837         DWORD *pcbCurrentLength);
    838 
    839     HRESULT (STDMETHODCALLTYPE *SetCurrentLength)(
    840         IMFMediaBuffer *This,
    841         DWORD cbCurrentLength);
    842 
    843     HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
    844         IMFMediaBuffer *This,
    845         DWORD *pcbMaxLength);
    846 
    847     END_INTERFACE
    848 } IMFMediaBufferVtbl;
    849 
    850 interface IMFMediaBuffer {
    851     CONST_VTBL IMFMediaBufferVtbl* lpVtbl;
    852 };
    853 
    854 #ifdef COBJMACROS
    855 #ifndef WIDL_C_INLINE_WRAPPERS
    856 /*** IUnknown methods ***/
    857 #define IMFMediaBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    858 #define IMFMediaBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
    859 #define IMFMediaBuffer_Release(This) (This)->lpVtbl->Release(This)
    860 /*** IMFMediaBuffer methods ***/
    861 #define IMFMediaBuffer_Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength) (This)->lpVtbl->Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength)
    862 #define IMFMediaBuffer_Unlock(This) (This)->lpVtbl->Unlock(This)
    863 #define IMFMediaBuffer_GetCurrentLength(This,pcbCurrentLength) (This)->lpVtbl->GetCurrentLength(This,pcbCurrentLength)
    864 #define IMFMediaBuffer_SetCurrentLength(This,cbCurrentLength) (This)->lpVtbl->SetCurrentLength(This,cbCurrentLength)
    865 #define IMFMediaBuffer_GetMaxLength(This,pcbMaxLength) (This)->lpVtbl->GetMaxLength(This,pcbMaxLength)
    866 #else
    867 /*** IUnknown methods ***/
    868 static inline HRESULT IMFMediaBuffer_QueryInterface(IMFMediaBuffer* This,REFIID riid,void **ppvObject) {
    869     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    870 }
    871 static inline ULONG IMFMediaBuffer_AddRef(IMFMediaBuffer* This) {
    872     return This->lpVtbl->AddRef(This);
    873 }
    874 static inline ULONG IMFMediaBuffer_Release(IMFMediaBuffer* This) {
    875     return This->lpVtbl->Release(This);
    876 }
    877 /*** IMFMediaBuffer methods ***/
    878 static inline HRESULT IMFMediaBuffer_Lock(IMFMediaBuffer* This,BYTE **ppbBuffer,DWORD *pcbMaxLength,DWORD *pcbCurrentLength) {
    879     return This->lpVtbl->Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength);
    880 }
    881 static inline HRESULT IMFMediaBuffer_Unlock(IMFMediaBuffer* This) {
    882     return This->lpVtbl->Unlock(This);
    883 }
    884 static inline HRESULT IMFMediaBuffer_GetCurrentLength(IMFMediaBuffer* This,DWORD *pcbCurrentLength) {
    885     return This->lpVtbl->GetCurrentLength(This,pcbCurrentLength);
    886 }
    887 static inline HRESULT IMFMediaBuffer_SetCurrentLength(IMFMediaBuffer* This,DWORD cbCurrentLength) {
    888     return This->lpVtbl->SetCurrentLength(This,cbCurrentLength);
    889 }
    890 static inline HRESULT IMFMediaBuffer_GetMaxLength(IMFMediaBuffer* This,DWORD *pcbMaxLength) {
    891     return This->lpVtbl->GetMaxLength(This,pcbMaxLength);
    892 }
    893 #endif
    894 #endif
    895 
    896 #endif
    897 
    898 
    899 #endif  /* __IMFMediaBuffer_INTERFACE_DEFINED__ */
    900 
    901 
    902 /*****************************************************************************
    903  * IMFSample interface
    904  */
    905 #ifndef __IMFSample_INTERFACE_DEFINED__
    906 #define __IMFSample_INTERFACE_DEFINED__
    907 
    908 DEFINE_GUID(IID_IMFSample, 0xc40a00f2, 0xb93a, 0x4d80, 0xae,0x8c, 0x5a,0x1c,0x63,0x4f,0x58,0xe4);
    909 #if defined(__cplusplus) && !defined(CINTERFACE)
    910 MIDL_INTERFACE("c40a00f2-b93a-4d80-ae8c-5a1c634f58e4")
    911 IMFSample : public IMFAttributes
    912 {
    913     virtual HRESULT STDMETHODCALLTYPE GetSampleFlags(
    914         DWORD *pdwSampleFlags) = 0;
    915 
    916     virtual HRESULT STDMETHODCALLTYPE SetSampleFlags(
    917         DWORD dwSampleFlags) = 0;
    918 
    919     virtual HRESULT STDMETHODCALLTYPE GetSampleTime(
    920         LONGLONG *phnsSampleTime) = 0;
    921 
    922     virtual HRESULT STDMETHODCALLTYPE SetSampleTime(
    923         LONGLONG hnsSampleTime) = 0;
    924 
    925     virtual HRESULT STDMETHODCALLTYPE GetSampleDuration(
    926         LONGLONG *phnsSampleDuration) = 0;
    927 
    928     virtual HRESULT STDMETHODCALLTYPE SetSampleDuration(
    929         LONGLONG hnsSampleDuration) = 0;
    930 
    931     virtual HRESULT STDMETHODCALLTYPE GetBufferCount(
    932         DWORD *pdwBufferCount) = 0;
    933 
    934     virtual HRESULT STDMETHODCALLTYPE GetBufferByIndex(
    935         DWORD dwIndex,
    936         IMFMediaBuffer **ppBuffer) = 0;
    937 
    938     virtual HRESULT STDMETHODCALLTYPE ConvertToContiguousBuffer(
    939         IMFMediaBuffer **ppBuffer) = 0;
    940 
    941     virtual HRESULT STDMETHODCALLTYPE AddBuffer(
    942         IMFMediaBuffer *pBuffer) = 0;
    943 
    944     virtual HRESULT STDMETHODCALLTYPE RemoveBufferByIndex(
    945         DWORD dwIndex) = 0;
    946 
    947     virtual HRESULT STDMETHODCALLTYPE RemoveAllBuffers(
    948         ) = 0;
    949 
    950     virtual HRESULT STDMETHODCALLTYPE GetTotalLength(
    951         DWORD *pcbTotalLength) = 0;
    952 
    953     virtual HRESULT STDMETHODCALLTYPE CopyToBuffer(
    954         IMFMediaBuffer *pBuffer) = 0;
    955 
    956 };
    957 #ifdef __CRT_UUID_DECL
    958 __CRT_UUID_DECL(IMFSample, 0xc40a00f2, 0xb93a, 0x4d80, 0xae,0x8c, 0x5a,0x1c,0x63,0x4f,0x58,0xe4)
    959 #endif
    960 #else
    961 typedef struct IMFSampleVtbl {
    962     BEGIN_INTERFACE
    963 
    964     /*** IUnknown methods ***/
    965     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    966         IMFSample *This,
    967         REFIID riid,
    968         void **ppvObject);
    969 
    970     ULONG (STDMETHODCALLTYPE *AddRef)(
    971         IMFSample *This);
    972 
    973     ULONG (STDMETHODCALLTYPE *Release)(
    974         IMFSample *This);
    975 
    976     /*** IMFAttributes methods ***/
    977     HRESULT (STDMETHODCALLTYPE *GetItem)(
    978         IMFSample *This,
    979         REFGUID guidKey,
    980         PROPVARIANT *pValue);
    981 
    982     HRESULT (STDMETHODCALLTYPE *GetItemType)(
    983         IMFSample *This,
    984         REFGUID guidKey,
    985         MF_ATTRIBUTE_TYPE *pType);
    986 
    987     HRESULT (STDMETHODCALLTYPE *CompareItem)(
    988         IMFSample *This,
    989         REFGUID guidKey,
    990         REFPROPVARIANT Value,
    991         WINBOOL *pbResult);
    992 
    993     HRESULT (STDMETHODCALLTYPE *Compare)(
    994         IMFSample *This,
    995         IMFAttributes *pTheirs,
    996         MF_ATTRIBUTES_MATCH_TYPE MatchType,
    997         WINBOOL *pbResult);
    998 
    999     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   1000         IMFSample *This,
   1001         REFGUID guidKey,
   1002         UINT32 *punValue);
   1003 
   1004     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   1005         IMFSample *This,
   1006         REFGUID guidKey,
   1007         UINT64 *punValue);
   1008 
   1009     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   1010         IMFSample *This,
   1011         REFGUID guidKey,
   1012         double *pfValue);
   1013 
   1014     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   1015         IMFSample *This,
   1016         REFGUID guidKey,
   1017         GUID *pguidValue);
   1018 
   1019     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   1020         IMFSample *This,
   1021         REFGUID guidKey,
   1022         UINT32 *pcchLength);
   1023 
   1024     HRESULT (STDMETHODCALLTYPE *GetString)(
   1025         IMFSample *This,
   1026         REFGUID guidKey,
   1027         LPWSTR pwszValue,
   1028         UINT32 cchBufSize,
   1029         UINT32 *pcchLength);
   1030 
   1031     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   1032         IMFSample *This,
   1033         REFGUID guidKey,
   1034         LPWSTR *ppwszValue,
   1035         UINT32 *pcchLength);
   1036 
   1037     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   1038         IMFSample *This,
   1039         REFGUID guidKey,
   1040         UINT32 *pcbBlobSize);
   1041 
   1042     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   1043         IMFSample *This,
   1044         REFGUID guidKey,
   1045         UINT8 *pBuf,
   1046         UINT32 cbBufSize,
   1047         UINT32 *pcbBlobSize);
   1048 
   1049     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   1050         IMFSample *This,
   1051         REFGUID guidKey,
   1052         UINT8 **ppBuf,
   1053         UINT32 *pcbSize);
   1054 
   1055     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   1056         IMFSample *This,
   1057         REFGUID guidKey,
   1058         REFIID riid,
   1059         LPVOID *ppv);
   1060 
   1061     HRESULT (STDMETHODCALLTYPE *SetItem)(
   1062         IMFSample *This,
   1063         REFGUID guidKey,
   1064         REFPROPVARIANT Value);
   1065 
   1066     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   1067         IMFSample *This,
   1068         REFGUID guidKey);
   1069 
   1070     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   1071         IMFSample *This);
   1072 
   1073     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   1074         IMFSample *This,
   1075         REFGUID guidKey,
   1076         UINT32 unValue);
   1077 
   1078     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   1079         IMFSample *This,
   1080         REFGUID guidKey,
   1081         UINT64 unValue);
   1082 
   1083     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   1084         IMFSample *This,
   1085         REFGUID guidKey,
   1086         double fValue);
   1087 
   1088     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   1089         IMFSample *This,
   1090         REFGUID guidKey,
   1091         REFGUID guidValue);
   1092 
   1093     HRESULT (STDMETHODCALLTYPE *SetString)(
   1094         IMFSample *This,
   1095         REFGUID guidKey,
   1096         LPCWSTR wszValue);
   1097 
   1098     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   1099         IMFSample *This,
   1100         REFGUID guidKey,
   1101         const UINT8 *pBuf,
   1102         UINT32 cbBufSize);
   1103 
   1104     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   1105         IMFSample *This,
   1106         REFGUID guidKey,
   1107         IUnknown *pUnknown);
   1108 
   1109     HRESULT (STDMETHODCALLTYPE *LockStore)(
   1110         IMFSample *This);
   1111 
   1112     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   1113         IMFSample *This);
   1114 
   1115     HRESULT (STDMETHODCALLTYPE *GetCount)(
   1116         IMFSample *This,
   1117         UINT32 *pcItems);
   1118 
   1119     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   1120         IMFSample *This,
   1121         UINT32 unIndex,
   1122         GUID *pguidKey,
   1123         PROPVARIANT *pValue);
   1124 
   1125     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   1126         IMFSample *This,
   1127         IMFAttributes *pDest);
   1128 
   1129     /*** IMFSample methods ***/
   1130     HRESULT (STDMETHODCALLTYPE *GetSampleFlags)(
   1131         IMFSample *This,
   1132         DWORD *pdwSampleFlags);
   1133 
   1134     HRESULT (STDMETHODCALLTYPE *SetSampleFlags)(
   1135         IMFSample *This,
   1136         DWORD dwSampleFlags);
   1137 
   1138     HRESULT (STDMETHODCALLTYPE *GetSampleTime)(
   1139         IMFSample *This,
   1140         LONGLONG *phnsSampleTime);
   1141 
   1142     HRESULT (STDMETHODCALLTYPE *SetSampleTime)(
   1143         IMFSample *This,
   1144         LONGLONG hnsSampleTime);
   1145 
   1146     HRESULT (STDMETHODCALLTYPE *GetSampleDuration)(
   1147         IMFSample *This,
   1148         LONGLONG *phnsSampleDuration);
   1149 
   1150     HRESULT (STDMETHODCALLTYPE *SetSampleDuration)(
   1151         IMFSample *This,
   1152         LONGLONG hnsSampleDuration);
   1153 
   1154     HRESULT (STDMETHODCALLTYPE *GetBufferCount)(
   1155         IMFSample *This,
   1156         DWORD *pdwBufferCount);
   1157 
   1158     HRESULT (STDMETHODCALLTYPE *GetBufferByIndex)(
   1159         IMFSample *This,
   1160         DWORD dwIndex,
   1161         IMFMediaBuffer **ppBuffer);
   1162 
   1163     HRESULT (STDMETHODCALLTYPE *ConvertToContiguousBuffer)(
   1164         IMFSample *This,
   1165         IMFMediaBuffer **ppBuffer);
   1166 
   1167     HRESULT (STDMETHODCALLTYPE *AddBuffer)(
   1168         IMFSample *This,
   1169         IMFMediaBuffer *pBuffer);
   1170 
   1171     HRESULT (STDMETHODCALLTYPE *RemoveBufferByIndex)(
   1172         IMFSample *This,
   1173         DWORD dwIndex);
   1174 
   1175     HRESULT (STDMETHODCALLTYPE *RemoveAllBuffers)(
   1176         IMFSample *This);
   1177 
   1178     HRESULT (STDMETHODCALLTYPE *GetTotalLength)(
   1179         IMFSample *This,
   1180         DWORD *pcbTotalLength);
   1181 
   1182     HRESULT (STDMETHODCALLTYPE *CopyToBuffer)(
   1183         IMFSample *This,
   1184         IMFMediaBuffer *pBuffer);
   1185 
   1186     END_INTERFACE
   1187 } IMFSampleVtbl;
   1188 
   1189 interface IMFSample {
   1190     CONST_VTBL IMFSampleVtbl* lpVtbl;
   1191 };
   1192 
   1193 #ifdef COBJMACROS
   1194 #ifndef WIDL_C_INLINE_WRAPPERS
   1195 /*** IUnknown methods ***/
   1196 #define IMFSample_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1197 #define IMFSample_AddRef(This) (This)->lpVtbl->AddRef(This)
   1198 #define IMFSample_Release(This) (This)->lpVtbl->Release(This)
   1199 /*** IMFAttributes methods ***/
   1200 #define IMFSample_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   1201 #define IMFSample_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   1202 #define IMFSample_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   1203 #define IMFSample_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   1204 #define IMFSample_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   1205 #define IMFSample_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   1206 #define IMFSample_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   1207 #define IMFSample_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   1208 #define IMFSample_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   1209 #define IMFSample_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   1210 #define IMFSample_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   1211 #define IMFSample_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   1212 #define IMFSample_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   1213 #define IMFSample_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   1214 #define IMFSample_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   1215 #define IMFSample_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   1216 #define IMFSample_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   1217 #define IMFSample_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   1218 #define IMFSample_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   1219 #define IMFSample_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   1220 #define IMFSample_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   1221 #define IMFSample_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   1222 #define IMFSample_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   1223 #define IMFSample_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   1224 #define IMFSample_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   1225 #define IMFSample_LockStore(This) (This)->lpVtbl->LockStore(This)
   1226 #define IMFSample_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   1227 #define IMFSample_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   1228 #define IMFSample_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   1229 #define IMFSample_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   1230 /*** IMFSample methods ***/
   1231 #define IMFSample_GetSampleFlags(This,pdwSampleFlags) (This)->lpVtbl->GetSampleFlags(This,pdwSampleFlags)
   1232 #define IMFSample_SetSampleFlags(This,dwSampleFlags) (This)->lpVtbl->SetSampleFlags(This,dwSampleFlags)
   1233 #define IMFSample_GetSampleTime(This,phnsSampleTime) (This)->lpVtbl->GetSampleTime(This,phnsSampleTime)
   1234 #define IMFSample_SetSampleTime(This,hnsSampleTime) (This)->lpVtbl->SetSampleTime(This,hnsSampleTime)
   1235 #define IMFSample_GetSampleDuration(This,phnsSampleDuration) (This)->lpVtbl->GetSampleDuration(This,phnsSampleDuration)
   1236 #define IMFSample_SetSampleDuration(This,hnsSampleDuration) (This)->lpVtbl->SetSampleDuration(This,hnsSampleDuration)
   1237 #define IMFSample_GetBufferCount(This,pdwBufferCount) (This)->lpVtbl->GetBufferCount(This,pdwBufferCount)
   1238 #define IMFSample_GetBufferByIndex(This,dwIndex,ppBuffer) (This)->lpVtbl->GetBufferByIndex(This,dwIndex,ppBuffer)
   1239 #define IMFSample_ConvertToContiguousBuffer(This,ppBuffer) (This)->lpVtbl->ConvertToContiguousBuffer(This,ppBuffer)
   1240 #define IMFSample_AddBuffer(This,pBuffer) (This)->lpVtbl->AddBuffer(This,pBuffer)
   1241 #define IMFSample_RemoveBufferByIndex(This,dwIndex) (This)->lpVtbl->RemoveBufferByIndex(This,dwIndex)
   1242 #define IMFSample_RemoveAllBuffers(This) (This)->lpVtbl->RemoveAllBuffers(This)
   1243 #define IMFSample_GetTotalLength(This,pcbTotalLength) (This)->lpVtbl->GetTotalLength(This,pcbTotalLength)
   1244 #define IMFSample_CopyToBuffer(This,pBuffer) (This)->lpVtbl->CopyToBuffer(This,pBuffer)
   1245 #else
   1246 /*** IUnknown methods ***/
   1247 static inline HRESULT IMFSample_QueryInterface(IMFSample* This,REFIID riid,void **ppvObject) {
   1248     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1249 }
   1250 static inline ULONG IMFSample_AddRef(IMFSample* This) {
   1251     return This->lpVtbl->AddRef(This);
   1252 }
   1253 static inline ULONG IMFSample_Release(IMFSample* This) {
   1254     return This->lpVtbl->Release(This);
   1255 }
   1256 /*** IMFAttributes methods ***/
   1257 static inline HRESULT IMFSample_GetItem(IMFSample* This,REFGUID guidKey,PROPVARIANT *pValue) {
   1258     return This->lpVtbl->GetItem(This,guidKey,pValue);
   1259 }
   1260 static inline HRESULT IMFSample_GetItemType(IMFSample* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   1261     return This->lpVtbl->GetItemType(This,guidKey,pType);
   1262 }
   1263 static inline HRESULT IMFSample_CompareItem(IMFSample* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   1264     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   1265 }
   1266 static inline HRESULT IMFSample_Compare(IMFSample* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   1267     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   1268 }
   1269 static inline HRESULT IMFSample_GetUINT32(IMFSample* This,REFGUID guidKey,UINT32 *punValue) {
   1270     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   1271 }
   1272 static inline HRESULT IMFSample_GetUINT64(IMFSample* This,REFGUID guidKey,UINT64 *punValue) {
   1273     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   1274 }
   1275 static inline HRESULT IMFSample_GetDouble(IMFSample* This,REFGUID guidKey,double *pfValue) {
   1276     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   1277 }
   1278 static inline HRESULT IMFSample_GetGUID(IMFSample* This,REFGUID guidKey,GUID *pguidValue) {
   1279     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   1280 }
   1281 static inline HRESULT IMFSample_GetStringLength(IMFSample* This,REFGUID guidKey,UINT32 *pcchLength) {
   1282     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   1283 }
   1284 static inline HRESULT IMFSample_GetString(IMFSample* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   1285     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   1286 }
   1287 static inline HRESULT IMFSample_GetAllocatedString(IMFSample* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   1288     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   1289 }
   1290 static inline HRESULT IMFSample_GetBlobSize(IMFSample* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   1291     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   1292 }
   1293 static inline HRESULT IMFSample_GetBlob(IMFSample* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   1294     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   1295 }
   1296 static inline HRESULT IMFSample_GetAllocatedBlob(IMFSample* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   1297     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   1298 }
   1299 static inline HRESULT IMFSample_GetUnknown(IMFSample* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   1300     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   1301 }
   1302 static inline HRESULT IMFSample_SetItem(IMFSample* This,REFGUID guidKey,REFPROPVARIANT Value) {
   1303     return This->lpVtbl->SetItem(This,guidKey,Value);
   1304 }
   1305 static inline HRESULT IMFSample_DeleteItem(IMFSample* This,REFGUID guidKey) {
   1306     return This->lpVtbl->DeleteItem(This,guidKey);
   1307 }
   1308 static inline HRESULT IMFSample_DeleteAllItems(IMFSample* This) {
   1309     return This->lpVtbl->DeleteAllItems(This);
   1310 }
   1311 static inline HRESULT IMFSample_SetUINT32(IMFSample* This,REFGUID guidKey,UINT32 unValue) {
   1312     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   1313 }
   1314 static inline HRESULT IMFSample_SetUINT64(IMFSample* This,REFGUID guidKey,UINT64 unValue) {
   1315     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   1316 }
   1317 static inline HRESULT IMFSample_SetDouble(IMFSample* This,REFGUID guidKey,double fValue) {
   1318     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   1319 }
   1320 static inline HRESULT IMFSample_SetGUID(IMFSample* This,REFGUID guidKey,REFGUID guidValue) {
   1321     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   1322 }
   1323 static inline HRESULT IMFSample_SetString(IMFSample* This,REFGUID guidKey,LPCWSTR wszValue) {
   1324     return This->lpVtbl->SetString(This,guidKey,wszValue);
   1325 }
   1326 static inline HRESULT IMFSample_SetBlob(IMFSample* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   1327     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   1328 }
   1329 static inline HRESULT IMFSample_SetUnknown(IMFSample* This,REFGUID guidKey,IUnknown *pUnknown) {
   1330     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   1331 }
   1332 static inline HRESULT IMFSample_LockStore(IMFSample* This) {
   1333     return This->lpVtbl->LockStore(This);
   1334 }
   1335 static inline HRESULT IMFSample_UnlockStore(IMFSample* This) {
   1336     return This->lpVtbl->UnlockStore(This);
   1337 }
   1338 static inline HRESULT IMFSample_GetCount(IMFSample* This,UINT32 *pcItems) {
   1339     return This->lpVtbl->GetCount(This,pcItems);
   1340 }
   1341 static inline HRESULT IMFSample_GetItemByIndex(IMFSample* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   1342     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   1343 }
   1344 static inline HRESULT IMFSample_CopyAllItems(IMFSample* This,IMFAttributes *pDest) {
   1345     return This->lpVtbl->CopyAllItems(This,pDest);
   1346 }
   1347 /*** IMFSample methods ***/
   1348 static inline HRESULT IMFSample_GetSampleFlags(IMFSample* This,DWORD *pdwSampleFlags) {
   1349     return This->lpVtbl->GetSampleFlags(This,pdwSampleFlags);
   1350 }
   1351 static inline HRESULT IMFSample_SetSampleFlags(IMFSample* This,DWORD dwSampleFlags) {
   1352     return This->lpVtbl->SetSampleFlags(This,dwSampleFlags);
   1353 }
   1354 static inline HRESULT IMFSample_GetSampleTime(IMFSample* This,LONGLONG *phnsSampleTime) {
   1355     return This->lpVtbl->GetSampleTime(This,phnsSampleTime);
   1356 }
   1357 static inline HRESULT IMFSample_SetSampleTime(IMFSample* This,LONGLONG hnsSampleTime) {
   1358     return This->lpVtbl->SetSampleTime(This,hnsSampleTime);
   1359 }
   1360 static inline HRESULT IMFSample_GetSampleDuration(IMFSample* This,LONGLONG *phnsSampleDuration) {
   1361     return This->lpVtbl->GetSampleDuration(This,phnsSampleDuration);
   1362 }
   1363 static inline HRESULT IMFSample_SetSampleDuration(IMFSample* This,LONGLONG hnsSampleDuration) {
   1364     return This->lpVtbl->SetSampleDuration(This,hnsSampleDuration);
   1365 }
   1366 static inline HRESULT IMFSample_GetBufferCount(IMFSample* This,DWORD *pdwBufferCount) {
   1367     return This->lpVtbl->GetBufferCount(This,pdwBufferCount);
   1368 }
   1369 static inline HRESULT IMFSample_GetBufferByIndex(IMFSample* This,DWORD dwIndex,IMFMediaBuffer **ppBuffer) {
   1370     return This->lpVtbl->GetBufferByIndex(This,dwIndex,ppBuffer);
   1371 }
   1372 static inline HRESULT IMFSample_ConvertToContiguousBuffer(IMFSample* This,IMFMediaBuffer **ppBuffer) {
   1373     return This->lpVtbl->ConvertToContiguousBuffer(This,ppBuffer);
   1374 }
   1375 static inline HRESULT IMFSample_AddBuffer(IMFSample* This,IMFMediaBuffer *pBuffer) {
   1376     return This->lpVtbl->AddBuffer(This,pBuffer);
   1377 }
   1378 static inline HRESULT IMFSample_RemoveBufferByIndex(IMFSample* This,DWORD dwIndex) {
   1379     return This->lpVtbl->RemoveBufferByIndex(This,dwIndex);
   1380 }
   1381 static inline HRESULT IMFSample_RemoveAllBuffers(IMFSample* This) {
   1382     return This->lpVtbl->RemoveAllBuffers(This);
   1383 }
   1384 static inline HRESULT IMFSample_GetTotalLength(IMFSample* This,DWORD *pcbTotalLength) {
   1385     return This->lpVtbl->GetTotalLength(This,pcbTotalLength);
   1386 }
   1387 static inline HRESULT IMFSample_CopyToBuffer(IMFSample* This,IMFMediaBuffer *pBuffer) {
   1388     return This->lpVtbl->CopyToBuffer(This,pBuffer);
   1389 }
   1390 #endif
   1391 #endif
   1392 
   1393 #endif
   1394 
   1395 
   1396 #endif  /* __IMFSample_INTERFACE_DEFINED__ */
   1397 
   1398 
   1399 /*****************************************************************************
   1400  * IMF2DBuffer interface
   1401  */
   1402 #ifndef __IMF2DBuffer_INTERFACE_DEFINED__
   1403 #define __IMF2DBuffer_INTERFACE_DEFINED__
   1404 
   1405 DEFINE_GUID(IID_IMF2DBuffer, 0x7dc9d5f9, 0x9ed9, 0x44ec, 0x9b,0xbf, 0x06,0x00,0xbb,0x58,0x9f,0xbb);
   1406 #if defined(__cplusplus) && !defined(CINTERFACE)
   1407 MIDL_INTERFACE("7dc9d5f9-9ed9-44ec-9bbf-0600bb589fbb")
   1408 IMF2DBuffer : public IUnknown
   1409 {
   1410     virtual HRESULT STDMETHODCALLTYPE Lock2D(
   1411         BYTE **ppbScanline0,
   1412         LONG *plPitch) = 0;
   1413 
   1414     virtual HRESULT STDMETHODCALLTYPE Unlock2D(
   1415         ) = 0;
   1416 
   1417     virtual HRESULT STDMETHODCALLTYPE GetScanline0AndPitch(
   1418         BYTE **pbScanline0,
   1419         LONG *plPitch) = 0;
   1420 
   1421     virtual HRESULT STDMETHODCALLTYPE IsContiguousFormat(
   1422         WINBOOL *pfIsContiguous) = 0;
   1423 
   1424     virtual HRESULT STDMETHODCALLTYPE GetContiguousLength(
   1425         DWORD *pcbLength) = 0;
   1426 
   1427     virtual HRESULT STDMETHODCALLTYPE ContiguousCopyTo(
   1428         BYTE *pbDestBuffer,
   1429         DWORD cbDestBuffer) = 0;
   1430 
   1431     virtual HRESULT STDMETHODCALLTYPE ContiguousCopyFrom(
   1432         const BYTE *pbSrcBuffer,
   1433         DWORD cbSrcBuffer) = 0;
   1434 
   1435 };
   1436 #ifdef __CRT_UUID_DECL
   1437 __CRT_UUID_DECL(IMF2DBuffer, 0x7dc9d5f9, 0x9ed9, 0x44ec, 0x9b,0xbf, 0x06,0x00,0xbb,0x58,0x9f,0xbb)
   1438 #endif
   1439 #else
   1440 typedef struct IMF2DBufferVtbl {
   1441     BEGIN_INTERFACE
   1442 
   1443     /*** IUnknown methods ***/
   1444     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1445         IMF2DBuffer *This,
   1446         REFIID riid,
   1447         void **ppvObject);
   1448 
   1449     ULONG (STDMETHODCALLTYPE *AddRef)(
   1450         IMF2DBuffer *This);
   1451 
   1452     ULONG (STDMETHODCALLTYPE *Release)(
   1453         IMF2DBuffer *This);
   1454 
   1455     /*** IMF2DBuffer methods ***/
   1456     HRESULT (STDMETHODCALLTYPE *Lock2D)(
   1457         IMF2DBuffer *This,
   1458         BYTE **ppbScanline0,
   1459         LONG *plPitch);
   1460 
   1461     HRESULT (STDMETHODCALLTYPE *Unlock2D)(
   1462         IMF2DBuffer *This);
   1463 
   1464     HRESULT (STDMETHODCALLTYPE *GetScanline0AndPitch)(
   1465         IMF2DBuffer *This,
   1466         BYTE **pbScanline0,
   1467         LONG *plPitch);
   1468 
   1469     HRESULT (STDMETHODCALLTYPE *IsContiguousFormat)(
   1470         IMF2DBuffer *This,
   1471         WINBOOL *pfIsContiguous);
   1472 
   1473     HRESULT (STDMETHODCALLTYPE *GetContiguousLength)(
   1474         IMF2DBuffer *This,
   1475         DWORD *pcbLength);
   1476 
   1477     HRESULT (STDMETHODCALLTYPE *ContiguousCopyTo)(
   1478         IMF2DBuffer *This,
   1479         BYTE *pbDestBuffer,
   1480         DWORD cbDestBuffer);
   1481 
   1482     HRESULT (STDMETHODCALLTYPE *ContiguousCopyFrom)(
   1483         IMF2DBuffer *This,
   1484         const BYTE *pbSrcBuffer,
   1485         DWORD cbSrcBuffer);
   1486 
   1487     END_INTERFACE
   1488 } IMF2DBufferVtbl;
   1489 
   1490 interface IMF2DBuffer {
   1491     CONST_VTBL IMF2DBufferVtbl* lpVtbl;
   1492 };
   1493 
   1494 #ifdef COBJMACROS
   1495 #ifndef WIDL_C_INLINE_WRAPPERS
   1496 /*** IUnknown methods ***/
   1497 #define IMF2DBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1498 #define IMF2DBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
   1499 #define IMF2DBuffer_Release(This) (This)->lpVtbl->Release(This)
   1500 /*** IMF2DBuffer methods ***/
   1501 #define IMF2DBuffer_Lock2D(This,ppbScanline0,plPitch) (This)->lpVtbl->Lock2D(This,ppbScanline0,plPitch)
   1502 #define IMF2DBuffer_Unlock2D(This) (This)->lpVtbl->Unlock2D(This)
   1503 #define IMF2DBuffer_GetScanline0AndPitch(This,pbScanline0,plPitch) (This)->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch)
   1504 #define IMF2DBuffer_IsContiguousFormat(This,pfIsContiguous) (This)->lpVtbl->IsContiguousFormat(This,pfIsContiguous)
   1505 #define IMF2DBuffer_GetContiguousLength(This,pcbLength) (This)->lpVtbl->GetContiguousLength(This,pcbLength)
   1506 #define IMF2DBuffer_ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer) (This)->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer)
   1507 #define IMF2DBuffer_ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer) (This)->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer)
   1508 #else
   1509 /*** IUnknown methods ***/
   1510 static inline HRESULT IMF2DBuffer_QueryInterface(IMF2DBuffer* This,REFIID riid,void **ppvObject) {
   1511     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1512 }
   1513 static inline ULONG IMF2DBuffer_AddRef(IMF2DBuffer* This) {
   1514     return This->lpVtbl->AddRef(This);
   1515 }
   1516 static inline ULONG IMF2DBuffer_Release(IMF2DBuffer* This) {
   1517     return This->lpVtbl->Release(This);
   1518 }
   1519 /*** IMF2DBuffer methods ***/
   1520 static inline HRESULT IMF2DBuffer_Lock2D(IMF2DBuffer* This,BYTE **ppbScanline0,LONG *plPitch) {
   1521     return This->lpVtbl->Lock2D(This,ppbScanline0,plPitch);
   1522 }
   1523 static inline HRESULT IMF2DBuffer_Unlock2D(IMF2DBuffer* This) {
   1524     return This->lpVtbl->Unlock2D(This);
   1525 }
   1526 static inline HRESULT IMF2DBuffer_GetScanline0AndPitch(IMF2DBuffer* This,BYTE **pbScanline0,LONG *plPitch) {
   1527     return This->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch);
   1528 }
   1529 static inline HRESULT IMF2DBuffer_IsContiguousFormat(IMF2DBuffer* This,WINBOOL *pfIsContiguous) {
   1530     return This->lpVtbl->IsContiguousFormat(This,pfIsContiguous);
   1531 }
   1532 static inline HRESULT IMF2DBuffer_GetContiguousLength(IMF2DBuffer* This,DWORD *pcbLength) {
   1533     return This->lpVtbl->GetContiguousLength(This,pcbLength);
   1534 }
   1535 static inline HRESULT IMF2DBuffer_ContiguousCopyTo(IMF2DBuffer* This,BYTE *pbDestBuffer,DWORD cbDestBuffer) {
   1536     return This->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer);
   1537 }
   1538 static inline HRESULT IMF2DBuffer_ContiguousCopyFrom(IMF2DBuffer* This,const BYTE *pbSrcBuffer,DWORD cbSrcBuffer) {
   1539     return This->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer);
   1540 }
   1541 #endif
   1542 #endif
   1543 
   1544 #endif
   1545 
   1546 
   1547 #endif  /* __IMF2DBuffer_INTERFACE_DEFINED__ */
   1548 
   1549 
   1550 typedef enum _MF2DBuffer_LockFlags {
   1551     MF2DBuffer_LockFlags_LockTypeMask = (0x1 | 0x2) | 0x3,
   1552     MF2DBuffer_LockFlags_Read = 0x1,
   1553     MF2DBuffer_LockFlags_Write = 0x2,
   1554     MF2DBuffer_LockFlags_ReadWrite = 0x3,
   1555     MF2DBuffer_LockFlags_ForceDWORD = 0x7fffffff
   1556 } MF2DBuffer_LockFlags;
   1557 
   1558 /*****************************************************************************
   1559  * IMF2DBuffer2 interface
   1560  */
   1561 #ifndef __IMF2DBuffer2_INTERFACE_DEFINED__
   1562 #define __IMF2DBuffer2_INTERFACE_DEFINED__
   1563 
   1564 DEFINE_GUID(IID_IMF2DBuffer2, 0x33ae5ea6, 0x4316, 0x436f, 0x8d,0xdd, 0xd7,0x3d,0x22,0xf8,0x29,0xec);
   1565 #if defined(__cplusplus) && !defined(CINTERFACE)
   1566 MIDL_INTERFACE("33ae5ea6-4316-436f-8ddd-d73d22f829ec")
   1567 IMF2DBuffer2 : public IMF2DBuffer
   1568 {
   1569     virtual HRESULT STDMETHODCALLTYPE Lock2DSize(
   1570         MF2DBuffer_LockFlags lockFlags,
   1571         BYTE **ppbScanline0,
   1572         LONG *plPitch,
   1573         BYTE **ppbBufferStart,
   1574         DWORD *pcbBufferLength) = 0;
   1575 
   1576     virtual HRESULT STDMETHODCALLTYPE Copy2DTo(
   1577         IMF2DBuffer2 *pDestBuffer) = 0;
   1578 
   1579 };
   1580 #ifdef __CRT_UUID_DECL
   1581 __CRT_UUID_DECL(IMF2DBuffer2, 0x33ae5ea6, 0x4316, 0x436f, 0x8d,0xdd, 0xd7,0x3d,0x22,0xf8,0x29,0xec)
   1582 #endif
   1583 #else
   1584 typedef struct IMF2DBuffer2Vtbl {
   1585     BEGIN_INTERFACE
   1586 
   1587     /*** IUnknown methods ***/
   1588     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1589         IMF2DBuffer2 *This,
   1590         REFIID riid,
   1591         void **ppvObject);
   1592 
   1593     ULONG (STDMETHODCALLTYPE *AddRef)(
   1594         IMF2DBuffer2 *This);
   1595 
   1596     ULONG (STDMETHODCALLTYPE *Release)(
   1597         IMF2DBuffer2 *This);
   1598 
   1599     /*** IMF2DBuffer methods ***/
   1600     HRESULT (STDMETHODCALLTYPE *Lock2D)(
   1601         IMF2DBuffer2 *This,
   1602         BYTE **ppbScanline0,
   1603         LONG *plPitch);
   1604 
   1605     HRESULT (STDMETHODCALLTYPE *Unlock2D)(
   1606         IMF2DBuffer2 *This);
   1607 
   1608     HRESULT (STDMETHODCALLTYPE *GetScanline0AndPitch)(
   1609         IMF2DBuffer2 *This,
   1610         BYTE **pbScanline0,
   1611         LONG *plPitch);
   1612 
   1613     HRESULT (STDMETHODCALLTYPE *IsContiguousFormat)(
   1614         IMF2DBuffer2 *This,
   1615         WINBOOL *pfIsContiguous);
   1616 
   1617     HRESULT (STDMETHODCALLTYPE *GetContiguousLength)(
   1618         IMF2DBuffer2 *This,
   1619         DWORD *pcbLength);
   1620 
   1621     HRESULT (STDMETHODCALLTYPE *ContiguousCopyTo)(
   1622         IMF2DBuffer2 *This,
   1623         BYTE *pbDestBuffer,
   1624         DWORD cbDestBuffer);
   1625 
   1626     HRESULT (STDMETHODCALLTYPE *ContiguousCopyFrom)(
   1627         IMF2DBuffer2 *This,
   1628         const BYTE *pbSrcBuffer,
   1629         DWORD cbSrcBuffer);
   1630 
   1631     /*** IMF2DBuffer2 methods ***/
   1632     HRESULT (STDMETHODCALLTYPE *Lock2DSize)(
   1633         IMF2DBuffer2 *This,
   1634         MF2DBuffer_LockFlags lockFlags,
   1635         BYTE **ppbScanline0,
   1636         LONG *plPitch,
   1637         BYTE **ppbBufferStart,
   1638         DWORD *pcbBufferLength);
   1639 
   1640     HRESULT (STDMETHODCALLTYPE *Copy2DTo)(
   1641         IMF2DBuffer2 *This,
   1642         IMF2DBuffer2 *pDestBuffer);
   1643 
   1644     END_INTERFACE
   1645 } IMF2DBuffer2Vtbl;
   1646 
   1647 interface IMF2DBuffer2 {
   1648     CONST_VTBL IMF2DBuffer2Vtbl* lpVtbl;
   1649 };
   1650 
   1651 #ifdef COBJMACROS
   1652 #ifndef WIDL_C_INLINE_WRAPPERS
   1653 /*** IUnknown methods ***/
   1654 #define IMF2DBuffer2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1655 #define IMF2DBuffer2_AddRef(This) (This)->lpVtbl->AddRef(This)
   1656 #define IMF2DBuffer2_Release(This) (This)->lpVtbl->Release(This)
   1657 /*** IMF2DBuffer methods ***/
   1658 #define IMF2DBuffer2_Lock2D(This,ppbScanline0,plPitch) (This)->lpVtbl->Lock2D(This,ppbScanline0,plPitch)
   1659 #define IMF2DBuffer2_Unlock2D(This) (This)->lpVtbl->Unlock2D(This)
   1660 #define IMF2DBuffer2_GetScanline0AndPitch(This,pbScanline0,plPitch) (This)->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch)
   1661 #define IMF2DBuffer2_IsContiguousFormat(This,pfIsContiguous) (This)->lpVtbl->IsContiguousFormat(This,pfIsContiguous)
   1662 #define IMF2DBuffer2_GetContiguousLength(This,pcbLength) (This)->lpVtbl->GetContiguousLength(This,pcbLength)
   1663 #define IMF2DBuffer2_ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer) (This)->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer)
   1664 #define IMF2DBuffer2_ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer) (This)->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer)
   1665 /*** IMF2DBuffer2 methods ***/
   1666 #define IMF2DBuffer2_Lock2DSize(This,lockFlags,ppbScanline0,plPitch,ppbBufferStart,pcbBufferLength) (This)->lpVtbl->Lock2DSize(This,lockFlags,ppbScanline0,plPitch,ppbBufferStart,pcbBufferLength)
   1667 #define IMF2DBuffer2_Copy2DTo(This,pDestBuffer) (This)->lpVtbl->Copy2DTo(This,pDestBuffer)
   1668 #else
   1669 /*** IUnknown methods ***/
   1670 static inline HRESULT IMF2DBuffer2_QueryInterface(IMF2DBuffer2* This,REFIID riid,void **ppvObject) {
   1671     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1672 }
   1673 static inline ULONG IMF2DBuffer2_AddRef(IMF2DBuffer2* This) {
   1674     return This->lpVtbl->AddRef(This);
   1675 }
   1676 static inline ULONG IMF2DBuffer2_Release(IMF2DBuffer2* This) {
   1677     return This->lpVtbl->Release(This);
   1678 }
   1679 /*** IMF2DBuffer methods ***/
   1680 static inline HRESULT IMF2DBuffer2_Lock2D(IMF2DBuffer2* This,BYTE **ppbScanline0,LONG *plPitch) {
   1681     return This->lpVtbl->Lock2D(This,ppbScanline0,plPitch);
   1682 }
   1683 static inline HRESULT IMF2DBuffer2_Unlock2D(IMF2DBuffer2* This) {
   1684     return This->lpVtbl->Unlock2D(This);
   1685 }
   1686 static inline HRESULT IMF2DBuffer2_GetScanline0AndPitch(IMF2DBuffer2* This,BYTE **pbScanline0,LONG *plPitch) {
   1687     return This->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch);
   1688 }
   1689 static inline HRESULT IMF2DBuffer2_IsContiguousFormat(IMF2DBuffer2* This,WINBOOL *pfIsContiguous) {
   1690     return This->lpVtbl->IsContiguousFormat(This,pfIsContiguous);
   1691 }
   1692 static inline HRESULT IMF2DBuffer2_GetContiguousLength(IMF2DBuffer2* This,DWORD *pcbLength) {
   1693     return This->lpVtbl->GetContiguousLength(This,pcbLength);
   1694 }
   1695 static inline HRESULT IMF2DBuffer2_ContiguousCopyTo(IMF2DBuffer2* This,BYTE *pbDestBuffer,DWORD cbDestBuffer) {
   1696     return This->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer);
   1697 }
   1698 static inline HRESULT IMF2DBuffer2_ContiguousCopyFrom(IMF2DBuffer2* This,const BYTE *pbSrcBuffer,DWORD cbSrcBuffer) {
   1699     return This->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer);
   1700 }
   1701 /*** IMF2DBuffer2 methods ***/
   1702 static inline HRESULT IMF2DBuffer2_Lock2DSize(IMF2DBuffer2* This,MF2DBuffer_LockFlags lockFlags,BYTE **ppbScanline0,LONG *plPitch,BYTE **ppbBufferStart,DWORD *pcbBufferLength) {
   1703     return This->lpVtbl->Lock2DSize(This,lockFlags,ppbScanline0,plPitch,ppbBufferStart,pcbBufferLength);
   1704 }
   1705 static inline HRESULT IMF2DBuffer2_Copy2DTo(IMF2DBuffer2* This,IMF2DBuffer2 *pDestBuffer) {
   1706     return This->lpVtbl->Copy2DTo(This,pDestBuffer);
   1707 }
   1708 #endif
   1709 #endif
   1710 
   1711 #endif
   1712 
   1713 
   1714 #endif  /* __IMF2DBuffer2_INTERFACE_DEFINED__ */
   1715 
   1716 
   1717 /*****************************************************************************
   1718  * IMFDXGIBuffer interface
   1719  */
   1720 #ifndef __IMFDXGIBuffer_INTERFACE_DEFINED__
   1721 #define __IMFDXGIBuffer_INTERFACE_DEFINED__
   1722 
   1723 DEFINE_GUID(IID_IMFDXGIBuffer, 0xe7174cfa, 0x1c9e, 0x48b1, 0x88,0x66, 0x62,0x62,0x26,0xbf,0xc2,0x58);
   1724 #if defined(__cplusplus) && !defined(CINTERFACE)
   1725 MIDL_INTERFACE("e7174cfa-1c9e-48b1-8866-626226bfc258")
   1726 IMFDXGIBuffer : public IUnknown
   1727 {
   1728     virtual HRESULT STDMETHODCALLTYPE GetResource(
   1729         REFIID riid,
   1730         LPVOID *ppvObject) = 0;
   1731 
   1732     virtual HRESULT STDMETHODCALLTYPE GetSubresourceIndex(
   1733         UINT *puSubresource) = 0;
   1734 
   1735     virtual HRESULT STDMETHODCALLTYPE GetUnknown(
   1736         REFIID guid,
   1737         REFIID riid,
   1738         LPVOID *ppvObject) = 0;
   1739 
   1740     virtual HRESULT STDMETHODCALLTYPE SetUnknown(
   1741         REFIID guid,
   1742         IUnknown *pUnkData) = 0;
   1743 
   1744 };
   1745 #ifdef __CRT_UUID_DECL
   1746 __CRT_UUID_DECL(IMFDXGIBuffer, 0xe7174cfa, 0x1c9e, 0x48b1, 0x88,0x66, 0x62,0x62,0x26,0xbf,0xc2,0x58)
   1747 #endif
   1748 #else
   1749 typedef struct IMFDXGIBufferVtbl {
   1750     BEGIN_INTERFACE
   1751 
   1752     /*** IUnknown methods ***/
   1753     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1754         IMFDXGIBuffer *This,
   1755         REFIID riid,
   1756         void **ppvObject);
   1757 
   1758     ULONG (STDMETHODCALLTYPE *AddRef)(
   1759         IMFDXGIBuffer *This);
   1760 
   1761     ULONG (STDMETHODCALLTYPE *Release)(
   1762         IMFDXGIBuffer *This);
   1763 
   1764     /*** IMFDXGIBuffer methods ***/
   1765     HRESULT (STDMETHODCALLTYPE *GetResource)(
   1766         IMFDXGIBuffer *This,
   1767         REFIID riid,
   1768         LPVOID *ppvObject);
   1769 
   1770     HRESULT (STDMETHODCALLTYPE *GetSubresourceIndex)(
   1771         IMFDXGIBuffer *This,
   1772         UINT *puSubresource);
   1773 
   1774     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   1775         IMFDXGIBuffer *This,
   1776         REFIID guid,
   1777         REFIID riid,
   1778         LPVOID *ppvObject);
   1779 
   1780     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   1781         IMFDXGIBuffer *This,
   1782         REFIID guid,
   1783         IUnknown *pUnkData);
   1784 
   1785     END_INTERFACE
   1786 } IMFDXGIBufferVtbl;
   1787 
   1788 interface IMFDXGIBuffer {
   1789     CONST_VTBL IMFDXGIBufferVtbl* lpVtbl;
   1790 };
   1791 
   1792 #ifdef COBJMACROS
   1793 #ifndef WIDL_C_INLINE_WRAPPERS
   1794 /*** IUnknown methods ***/
   1795 #define IMFDXGIBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1796 #define IMFDXGIBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
   1797 #define IMFDXGIBuffer_Release(This) (This)->lpVtbl->Release(This)
   1798 /*** IMFDXGIBuffer methods ***/
   1799 #define IMFDXGIBuffer_GetResource(This,riid,ppvObject) (This)->lpVtbl->GetResource(This,riid,ppvObject)
   1800 #define IMFDXGIBuffer_GetSubresourceIndex(This,puSubresource) (This)->lpVtbl->GetSubresourceIndex(This,puSubresource)
   1801 #define IMFDXGIBuffer_GetUnknown(This,guid,riid,ppvObject) (This)->lpVtbl->GetUnknown(This,guid,riid,ppvObject)
   1802 #define IMFDXGIBuffer_SetUnknown(This,guid,pUnkData) (This)->lpVtbl->SetUnknown(This,guid,pUnkData)
   1803 #else
   1804 /*** IUnknown methods ***/
   1805 static inline HRESULT IMFDXGIBuffer_QueryInterface(IMFDXGIBuffer* This,REFIID riid,void **ppvObject) {
   1806     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1807 }
   1808 static inline ULONG IMFDXGIBuffer_AddRef(IMFDXGIBuffer* This) {
   1809     return This->lpVtbl->AddRef(This);
   1810 }
   1811 static inline ULONG IMFDXGIBuffer_Release(IMFDXGIBuffer* This) {
   1812     return This->lpVtbl->Release(This);
   1813 }
   1814 /*** IMFDXGIBuffer methods ***/
   1815 static inline HRESULT IMFDXGIBuffer_GetResource(IMFDXGIBuffer* This,REFIID riid,LPVOID *ppvObject) {
   1816     return This->lpVtbl->GetResource(This,riid,ppvObject);
   1817 }
   1818 static inline HRESULT IMFDXGIBuffer_GetSubresourceIndex(IMFDXGIBuffer* This,UINT *puSubresource) {
   1819     return This->lpVtbl->GetSubresourceIndex(This,puSubresource);
   1820 }
   1821 static inline HRESULT IMFDXGIBuffer_GetUnknown(IMFDXGIBuffer* This,REFIID guid,REFIID riid,LPVOID *ppvObject) {
   1822     return This->lpVtbl->GetUnknown(This,guid,riid,ppvObject);
   1823 }
   1824 static inline HRESULT IMFDXGIBuffer_SetUnknown(IMFDXGIBuffer* This,REFIID guid,IUnknown *pUnkData) {
   1825     return This->lpVtbl->SetUnknown(This,guid,pUnkData);
   1826 }
   1827 #endif
   1828 #endif
   1829 
   1830 #endif
   1831 
   1832 
   1833 #endif  /* __IMFDXGIBuffer_INTERFACE_DEFINED__ */
   1834 
   1835 
   1836 /*****************************************************************************
   1837  * IMFMediaType interface
   1838  */
   1839 #ifndef __IMFMediaType_INTERFACE_DEFINED__
   1840 #define __IMFMediaType_INTERFACE_DEFINED__
   1841 
   1842 DEFINE_GUID(IID_IMFMediaType, 0x44ae0fa8, 0xea31, 0x4109, 0x8d,0x2e, 0x4c,0xae,0x49,0x97,0xc5,0x55);
   1843 #if defined(__cplusplus) && !defined(CINTERFACE)
   1844 MIDL_INTERFACE("44ae0fa8-ea31-4109-8d2e-4cae4997c555")
   1845 IMFMediaType : public IMFAttributes
   1846 {
   1847     virtual HRESULT STDMETHODCALLTYPE GetMajorType(
   1848         GUID *pguidMajorType) = 0;
   1849 
   1850     virtual HRESULT STDMETHODCALLTYPE IsCompressedFormat(
   1851         WINBOOL *pfCompressed) = 0;
   1852 
   1853     virtual HRESULT STDMETHODCALLTYPE IsEqual(
   1854         IMFMediaType *pIMediaType,
   1855         DWORD *pdwFlags) = 0;
   1856 
   1857     virtual HRESULT STDMETHODCALLTYPE GetRepresentation(
   1858         GUID guidRepresentation,
   1859         LPVOID *ppvRepresentation) = 0;
   1860 
   1861     virtual HRESULT STDMETHODCALLTYPE FreeRepresentation(
   1862         GUID guidRepresentation,
   1863         LPVOID pvRepresentation) = 0;
   1864 
   1865 };
   1866 #ifdef __CRT_UUID_DECL
   1867 __CRT_UUID_DECL(IMFMediaType, 0x44ae0fa8, 0xea31, 0x4109, 0x8d,0x2e, 0x4c,0xae,0x49,0x97,0xc5,0x55)
   1868 #endif
   1869 #else
   1870 typedef struct IMFMediaTypeVtbl {
   1871     BEGIN_INTERFACE
   1872 
   1873     /*** IUnknown methods ***/
   1874     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1875         IMFMediaType *This,
   1876         REFIID riid,
   1877         void **ppvObject);
   1878 
   1879     ULONG (STDMETHODCALLTYPE *AddRef)(
   1880         IMFMediaType *This);
   1881 
   1882     ULONG (STDMETHODCALLTYPE *Release)(
   1883         IMFMediaType *This);
   1884 
   1885     /*** IMFAttributes methods ***/
   1886     HRESULT (STDMETHODCALLTYPE *GetItem)(
   1887         IMFMediaType *This,
   1888         REFGUID guidKey,
   1889         PROPVARIANT *pValue);
   1890 
   1891     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   1892         IMFMediaType *This,
   1893         REFGUID guidKey,
   1894         MF_ATTRIBUTE_TYPE *pType);
   1895 
   1896     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   1897         IMFMediaType *This,
   1898         REFGUID guidKey,
   1899         REFPROPVARIANT Value,
   1900         WINBOOL *pbResult);
   1901 
   1902     HRESULT (STDMETHODCALLTYPE *Compare)(
   1903         IMFMediaType *This,
   1904         IMFAttributes *pTheirs,
   1905         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   1906         WINBOOL *pbResult);
   1907 
   1908     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   1909         IMFMediaType *This,
   1910         REFGUID guidKey,
   1911         UINT32 *punValue);
   1912 
   1913     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   1914         IMFMediaType *This,
   1915         REFGUID guidKey,
   1916         UINT64 *punValue);
   1917 
   1918     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   1919         IMFMediaType *This,
   1920         REFGUID guidKey,
   1921         double *pfValue);
   1922 
   1923     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   1924         IMFMediaType *This,
   1925         REFGUID guidKey,
   1926         GUID *pguidValue);
   1927 
   1928     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   1929         IMFMediaType *This,
   1930         REFGUID guidKey,
   1931         UINT32 *pcchLength);
   1932 
   1933     HRESULT (STDMETHODCALLTYPE *GetString)(
   1934         IMFMediaType *This,
   1935         REFGUID guidKey,
   1936         LPWSTR pwszValue,
   1937         UINT32 cchBufSize,
   1938         UINT32 *pcchLength);
   1939 
   1940     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   1941         IMFMediaType *This,
   1942         REFGUID guidKey,
   1943         LPWSTR *ppwszValue,
   1944         UINT32 *pcchLength);
   1945 
   1946     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   1947         IMFMediaType *This,
   1948         REFGUID guidKey,
   1949         UINT32 *pcbBlobSize);
   1950 
   1951     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   1952         IMFMediaType *This,
   1953         REFGUID guidKey,
   1954         UINT8 *pBuf,
   1955         UINT32 cbBufSize,
   1956         UINT32 *pcbBlobSize);
   1957 
   1958     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   1959         IMFMediaType *This,
   1960         REFGUID guidKey,
   1961         UINT8 **ppBuf,
   1962         UINT32 *pcbSize);
   1963 
   1964     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   1965         IMFMediaType *This,
   1966         REFGUID guidKey,
   1967         REFIID riid,
   1968         LPVOID *ppv);
   1969 
   1970     HRESULT (STDMETHODCALLTYPE *SetItem)(
   1971         IMFMediaType *This,
   1972         REFGUID guidKey,
   1973         REFPROPVARIANT Value);
   1974 
   1975     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   1976         IMFMediaType *This,
   1977         REFGUID guidKey);
   1978 
   1979     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   1980         IMFMediaType *This);
   1981 
   1982     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   1983         IMFMediaType *This,
   1984         REFGUID guidKey,
   1985         UINT32 unValue);
   1986 
   1987     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   1988         IMFMediaType *This,
   1989         REFGUID guidKey,
   1990         UINT64 unValue);
   1991 
   1992     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   1993         IMFMediaType *This,
   1994         REFGUID guidKey,
   1995         double fValue);
   1996 
   1997     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   1998         IMFMediaType *This,
   1999         REFGUID guidKey,
   2000         REFGUID guidValue);
   2001 
   2002     HRESULT (STDMETHODCALLTYPE *SetString)(
   2003         IMFMediaType *This,
   2004         REFGUID guidKey,
   2005         LPCWSTR wszValue);
   2006 
   2007     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   2008         IMFMediaType *This,
   2009         REFGUID guidKey,
   2010         const UINT8 *pBuf,
   2011         UINT32 cbBufSize);
   2012 
   2013     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   2014         IMFMediaType *This,
   2015         REFGUID guidKey,
   2016         IUnknown *pUnknown);
   2017 
   2018     HRESULT (STDMETHODCALLTYPE *LockStore)(
   2019         IMFMediaType *This);
   2020 
   2021     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   2022         IMFMediaType *This);
   2023 
   2024     HRESULT (STDMETHODCALLTYPE *GetCount)(
   2025         IMFMediaType *This,
   2026         UINT32 *pcItems);
   2027 
   2028     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   2029         IMFMediaType *This,
   2030         UINT32 unIndex,
   2031         GUID *pguidKey,
   2032         PROPVARIANT *pValue);
   2033 
   2034     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   2035         IMFMediaType *This,
   2036         IMFAttributes *pDest);
   2037 
   2038     /*** IMFMediaType methods ***/
   2039     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
   2040         IMFMediaType *This,
   2041         GUID *pguidMajorType);
   2042 
   2043     HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
   2044         IMFMediaType *This,
   2045         WINBOOL *pfCompressed);
   2046 
   2047     HRESULT (STDMETHODCALLTYPE *IsEqual)(
   2048         IMFMediaType *This,
   2049         IMFMediaType *pIMediaType,
   2050         DWORD *pdwFlags);
   2051 
   2052     HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
   2053         IMFMediaType *This,
   2054         GUID guidRepresentation,
   2055         LPVOID *ppvRepresentation);
   2056 
   2057     HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
   2058         IMFMediaType *This,
   2059         GUID guidRepresentation,
   2060         LPVOID pvRepresentation);
   2061 
   2062     END_INTERFACE
   2063 } IMFMediaTypeVtbl;
   2064 
   2065 interface IMFMediaType {
   2066     CONST_VTBL IMFMediaTypeVtbl* lpVtbl;
   2067 };
   2068 
   2069 #ifdef COBJMACROS
   2070 #ifndef WIDL_C_INLINE_WRAPPERS
   2071 /*** IUnknown methods ***/
   2072 #define IMFMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2073 #define IMFMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
   2074 #define IMFMediaType_Release(This) (This)->lpVtbl->Release(This)
   2075 /*** IMFAttributes methods ***/
   2076 #define IMFMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   2077 #define IMFMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   2078 #define IMFMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   2079 #define IMFMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   2080 #define IMFMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   2081 #define IMFMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   2082 #define IMFMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   2083 #define IMFMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   2084 #define IMFMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   2085 #define IMFMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   2086 #define IMFMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   2087 #define IMFMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   2088 #define IMFMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   2089 #define IMFMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   2090 #define IMFMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   2091 #define IMFMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   2092 #define IMFMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   2093 #define IMFMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   2094 #define IMFMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   2095 #define IMFMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   2096 #define IMFMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   2097 #define IMFMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   2098 #define IMFMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   2099 #define IMFMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   2100 #define IMFMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   2101 #define IMFMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
   2102 #define IMFMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   2103 #define IMFMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   2104 #define IMFMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   2105 #define IMFMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   2106 /*** IMFMediaType methods ***/
   2107 #define IMFMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
   2108 #define IMFMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
   2109 #define IMFMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
   2110 #define IMFMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
   2111 #define IMFMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
   2112 #else
   2113 /*** IUnknown methods ***/
   2114 static inline HRESULT IMFMediaType_QueryInterface(IMFMediaType* This,REFIID riid,void **ppvObject) {
   2115     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2116 }
   2117 static inline ULONG IMFMediaType_AddRef(IMFMediaType* This) {
   2118     return This->lpVtbl->AddRef(This);
   2119 }
   2120 static inline ULONG IMFMediaType_Release(IMFMediaType* This) {
   2121     return This->lpVtbl->Release(This);
   2122 }
   2123 /*** IMFAttributes methods ***/
   2124 static inline HRESULT IMFMediaType_GetItem(IMFMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
   2125     return This->lpVtbl->GetItem(This,guidKey,pValue);
   2126 }
   2127 static inline HRESULT IMFMediaType_GetItemType(IMFMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   2128     return This->lpVtbl->GetItemType(This,guidKey,pType);
   2129 }
   2130 static inline HRESULT IMFMediaType_CompareItem(IMFMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   2131     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   2132 }
   2133 static inline HRESULT IMFMediaType_Compare(IMFMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   2134     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   2135 }
   2136 static inline HRESULT IMFMediaType_GetUINT32(IMFMediaType* This,REFGUID guidKey,UINT32 *punValue) {
   2137     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   2138 }
   2139 static inline HRESULT IMFMediaType_GetUINT64(IMFMediaType* This,REFGUID guidKey,UINT64 *punValue) {
   2140     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   2141 }
   2142 static inline HRESULT IMFMediaType_GetDouble(IMFMediaType* This,REFGUID guidKey,double *pfValue) {
   2143     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   2144 }
   2145 static inline HRESULT IMFMediaType_GetGUID(IMFMediaType* This,REFGUID guidKey,GUID *pguidValue) {
   2146     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   2147 }
   2148 static inline HRESULT IMFMediaType_GetStringLength(IMFMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
   2149     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   2150 }
   2151 static inline HRESULT IMFMediaType_GetString(IMFMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   2152     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   2153 }
   2154 static inline HRESULT IMFMediaType_GetAllocatedString(IMFMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   2155     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   2156 }
   2157 static inline HRESULT IMFMediaType_GetBlobSize(IMFMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   2158     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   2159 }
   2160 static inline HRESULT IMFMediaType_GetBlob(IMFMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   2161     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   2162 }
   2163 static inline HRESULT IMFMediaType_GetAllocatedBlob(IMFMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   2164     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   2165 }
   2166 static inline HRESULT IMFMediaType_GetUnknown(IMFMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   2167     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   2168 }
   2169 static inline HRESULT IMFMediaType_SetItem(IMFMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
   2170     return This->lpVtbl->SetItem(This,guidKey,Value);
   2171 }
   2172 static inline HRESULT IMFMediaType_DeleteItem(IMFMediaType* This,REFGUID guidKey) {
   2173     return This->lpVtbl->DeleteItem(This,guidKey);
   2174 }
   2175 static inline HRESULT IMFMediaType_DeleteAllItems(IMFMediaType* This) {
   2176     return This->lpVtbl->DeleteAllItems(This);
   2177 }
   2178 static inline HRESULT IMFMediaType_SetUINT32(IMFMediaType* This,REFGUID guidKey,UINT32 unValue) {
   2179     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   2180 }
   2181 static inline HRESULT IMFMediaType_SetUINT64(IMFMediaType* This,REFGUID guidKey,UINT64 unValue) {
   2182     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   2183 }
   2184 static inline HRESULT IMFMediaType_SetDouble(IMFMediaType* This,REFGUID guidKey,double fValue) {
   2185     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   2186 }
   2187 static inline HRESULT IMFMediaType_SetGUID(IMFMediaType* This,REFGUID guidKey,REFGUID guidValue) {
   2188     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   2189 }
   2190 static inline HRESULT IMFMediaType_SetString(IMFMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
   2191     return This->lpVtbl->SetString(This,guidKey,wszValue);
   2192 }
   2193 static inline HRESULT IMFMediaType_SetBlob(IMFMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   2194     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   2195 }
   2196 static inline HRESULT IMFMediaType_SetUnknown(IMFMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
   2197     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   2198 }
   2199 static inline HRESULT IMFMediaType_LockStore(IMFMediaType* This) {
   2200     return This->lpVtbl->LockStore(This);
   2201 }
   2202 static inline HRESULT IMFMediaType_UnlockStore(IMFMediaType* This) {
   2203     return This->lpVtbl->UnlockStore(This);
   2204 }
   2205 static inline HRESULT IMFMediaType_GetCount(IMFMediaType* This,UINT32 *pcItems) {
   2206     return This->lpVtbl->GetCount(This,pcItems);
   2207 }
   2208 static inline HRESULT IMFMediaType_GetItemByIndex(IMFMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   2209     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   2210 }
   2211 static inline HRESULT IMFMediaType_CopyAllItems(IMFMediaType* This,IMFAttributes *pDest) {
   2212     return This->lpVtbl->CopyAllItems(This,pDest);
   2213 }
   2214 /*** IMFMediaType methods ***/
   2215 static inline HRESULT IMFMediaType_GetMajorType(IMFMediaType* This,GUID *pguidMajorType) {
   2216     return This->lpVtbl->GetMajorType(This,pguidMajorType);
   2217 }
   2218 static inline HRESULT IMFMediaType_IsCompressedFormat(IMFMediaType* This,WINBOOL *pfCompressed) {
   2219     return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
   2220 }
   2221 static inline HRESULT IMFMediaType_IsEqual(IMFMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
   2222     return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
   2223 }
   2224 static inline HRESULT IMFMediaType_GetRepresentation(IMFMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
   2225     return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
   2226 }
   2227 static inline HRESULT IMFMediaType_FreeRepresentation(IMFMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
   2228     return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
   2229 }
   2230 #endif
   2231 #endif
   2232 
   2233 #endif
   2234 
   2235 
   2236 #endif  /* __IMFMediaType_INTERFACE_DEFINED__ */
   2237 
   2238 
   2239 #define MF_MEDIATYPE_EQUAL_MAJOR_TYPES 0x00000001
   2240 #define MF_MEDIATYPE_EQUAL_FORMAT_TYPES 0x00000002
   2241 #define MF_MEDIATYPE_EQUAL_FORMAT_DATA 0x00000004
   2242 #define MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA 0x00000008
   2243 #endif
   2244 
   2245 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   2246 /*****************************************************************************
   2247  * IMFAudioMediaType interface
   2248  */
   2249 #ifndef __IMFAudioMediaType_INTERFACE_DEFINED__
   2250 #define __IMFAudioMediaType_INTERFACE_DEFINED__
   2251 
   2252 DEFINE_GUID(IID_IMFAudioMediaType, 0x26a0adc3, 0xce26, 0x4672, 0x93,0x04, 0x69,0x55,0x2e,0xdd,0x3f,0xaf);
   2253 #if defined(__cplusplus) && !defined(CINTERFACE)
   2254 MIDL_INTERFACE("26a0adc3-ce26-4672-9304-69552edd3faf")
   2255 IMFAudioMediaType : public IMFMediaType
   2256 {
   2257     virtual const WAVEFORMATEX * STDMETHODCALLTYPE GetAudioFormat(
   2258         ) = 0;
   2259 
   2260 };
   2261 #ifdef __CRT_UUID_DECL
   2262 __CRT_UUID_DECL(IMFAudioMediaType, 0x26a0adc3, 0xce26, 0x4672, 0x93,0x04, 0x69,0x55,0x2e,0xdd,0x3f,0xaf)
   2263 #endif
   2264 #else
   2265 typedef struct IMFAudioMediaTypeVtbl {
   2266     BEGIN_INTERFACE
   2267 
   2268     /*** IUnknown methods ***/
   2269     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2270         IMFAudioMediaType *This,
   2271         REFIID riid,
   2272         void **ppvObject);
   2273 
   2274     ULONG (STDMETHODCALLTYPE *AddRef)(
   2275         IMFAudioMediaType *This);
   2276 
   2277     ULONG (STDMETHODCALLTYPE *Release)(
   2278         IMFAudioMediaType *This);
   2279 
   2280     /*** IMFAttributes methods ***/
   2281     HRESULT (STDMETHODCALLTYPE *GetItem)(
   2282         IMFAudioMediaType *This,
   2283         REFGUID guidKey,
   2284         PROPVARIANT *pValue);
   2285 
   2286     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   2287         IMFAudioMediaType *This,
   2288         REFGUID guidKey,
   2289         MF_ATTRIBUTE_TYPE *pType);
   2290 
   2291     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   2292         IMFAudioMediaType *This,
   2293         REFGUID guidKey,
   2294         REFPROPVARIANT Value,
   2295         WINBOOL *pbResult);
   2296 
   2297     HRESULT (STDMETHODCALLTYPE *Compare)(
   2298         IMFAudioMediaType *This,
   2299         IMFAttributes *pTheirs,
   2300         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   2301         WINBOOL *pbResult);
   2302 
   2303     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   2304         IMFAudioMediaType *This,
   2305         REFGUID guidKey,
   2306         UINT32 *punValue);
   2307 
   2308     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   2309         IMFAudioMediaType *This,
   2310         REFGUID guidKey,
   2311         UINT64 *punValue);
   2312 
   2313     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   2314         IMFAudioMediaType *This,
   2315         REFGUID guidKey,
   2316         double *pfValue);
   2317 
   2318     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   2319         IMFAudioMediaType *This,
   2320         REFGUID guidKey,
   2321         GUID *pguidValue);
   2322 
   2323     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   2324         IMFAudioMediaType *This,
   2325         REFGUID guidKey,
   2326         UINT32 *pcchLength);
   2327 
   2328     HRESULT (STDMETHODCALLTYPE *GetString)(
   2329         IMFAudioMediaType *This,
   2330         REFGUID guidKey,
   2331         LPWSTR pwszValue,
   2332         UINT32 cchBufSize,
   2333         UINT32 *pcchLength);
   2334 
   2335     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   2336         IMFAudioMediaType *This,
   2337         REFGUID guidKey,
   2338         LPWSTR *ppwszValue,
   2339         UINT32 *pcchLength);
   2340 
   2341     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   2342         IMFAudioMediaType *This,
   2343         REFGUID guidKey,
   2344         UINT32 *pcbBlobSize);
   2345 
   2346     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   2347         IMFAudioMediaType *This,
   2348         REFGUID guidKey,
   2349         UINT8 *pBuf,
   2350         UINT32 cbBufSize,
   2351         UINT32 *pcbBlobSize);
   2352 
   2353     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   2354         IMFAudioMediaType *This,
   2355         REFGUID guidKey,
   2356         UINT8 **ppBuf,
   2357         UINT32 *pcbSize);
   2358 
   2359     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   2360         IMFAudioMediaType *This,
   2361         REFGUID guidKey,
   2362         REFIID riid,
   2363         LPVOID *ppv);
   2364 
   2365     HRESULT (STDMETHODCALLTYPE *SetItem)(
   2366         IMFAudioMediaType *This,
   2367         REFGUID guidKey,
   2368         REFPROPVARIANT Value);
   2369 
   2370     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   2371         IMFAudioMediaType *This,
   2372         REFGUID guidKey);
   2373 
   2374     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   2375         IMFAudioMediaType *This);
   2376 
   2377     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   2378         IMFAudioMediaType *This,
   2379         REFGUID guidKey,
   2380         UINT32 unValue);
   2381 
   2382     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   2383         IMFAudioMediaType *This,
   2384         REFGUID guidKey,
   2385         UINT64 unValue);
   2386 
   2387     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   2388         IMFAudioMediaType *This,
   2389         REFGUID guidKey,
   2390         double fValue);
   2391 
   2392     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   2393         IMFAudioMediaType *This,
   2394         REFGUID guidKey,
   2395         REFGUID guidValue);
   2396 
   2397     HRESULT (STDMETHODCALLTYPE *SetString)(
   2398         IMFAudioMediaType *This,
   2399         REFGUID guidKey,
   2400         LPCWSTR wszValue);
   2401 
   2402     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   2403         IMFAudioMediaType *This,
   2404         REFGUID guidKey,
   2405         const UINT8 *pBuf,
   2406         UINT32 cbBufSize);
   2407 
   2408     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   2409         IMFAudioMediaType *This,
   2410         REFGUID guidKey,
   2411         IUnknown *pUnknown);
   2412 
   2413     HRESULT (STDMETHODCALLTYPE *LockStore)(
   2414         IMFAudioMediaType *This);
   2415 
   2416     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   2417         IMFAudioMediaType *This);
   2418 
   2419     HRESULT (STDMETHODCALLTYPE *GetCount)(
   2420         IMFAudioMediaType *This,
   2421         UINT32 *pcItems);
   2422 
   2423     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   2424         IMFAudioMediaType *This,
   2425         UINT32 unIndex,
   2426         GUID *pguidKey,
   2427         PROPVARIANT *pValue);
   2428 
   2429     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   2430         IMFAudioMediaType *This,
   2431         IMFAttributes *pDest);
   2432 
   2433     /*** IMFMediaType methods ***/
   2434     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
   2435         IMFAudioMediaType *This,
   2436         GUID *pguidMajorType);
   2437 
   2438     HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
   2439         IMFAudioMediaType *This,
   2440         WINBOOL *pfCompressed);
   2441 
   2442     HRESULT (STDMETHODCALLTYPE *IsEqual)(
   2443         IMFAudioMediaType *This,
   2444         IMFMediaType *pIMediaType,
   2445         DWORD *pdwFlags);
   2446 
   2447     HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
   2448         IMFAudioMediaType *This,
   2449         GUID guidRepresentation,
   2450         LPVOID *ppvRepresentation);
   2451 
   2452     HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
   2453         IMFAudioMediaType *This,
   2454         GUID guidRepresentation,
   2455         LPVOID pvRepresentation);
   2456 
   2457     /*** IMFAudioMediaType methods ***/
   2458     const WAVEFORMATEX * (STDMETHODCALLTYPE *GetAudioFormat)(
   2459         IMFAudioMediaType *This);
   2460 
   2461     END_INTERFACE
   2462 } IMFAudioMediaTypeVtbl;
   2463 
   2464 interface IMFAudioMediaType {
   2465     CONST_VTBL IMFAudioMediaTypeVtbl* lpVtbl;
   2466 };
   2467 
   2468 #ifdef COBJMACROS
   2469 #ifndef WIDL_C_INLINE_WRAPPERS
   2470 /*** IUnknown methods ***/
   2471 #define IMFAudioMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2472 #define IMFAudioMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
   2473 #define IMFAudioMediaType_Release(This) (This)->lpVtbl->Release(This)
   2474 /*** IMFAttributes methods ***/
   2475 #define IMFAudioMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   2476 #define IMFAudioMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   2477 #define IMFAudioMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   2478 #define IMFAudioMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   2479 #define IMFAudioMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   2480 #define IMFAudioMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   2481 #define IMFAudioMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   2482 #define IMFAudioMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   2483 #define IMFAudioMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   2484 #define IMFAudioMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   2485 #define IMFAudioMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   2486 #define IMFAudioMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   2487 #define IMFAudioMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   2488 #define IMFAudioMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   2489 #define IMFAudioMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   2490 #define IMFAudioMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   2491 #define IMFAudioMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   2492 #define IMFAudioMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   2493 #define IMFAudioMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   2494 #define IMFAudioMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   2495 #define IMFAudioMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   2496 #define IMFAudioMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   2497 #define IMFAudioMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   2498 #define IMFAudioMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   2499 #define IMFAudioMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   2500 #define IMFAudioMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
   2501 #define IMFAudioMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   2502 #define IMFAudioMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   2503 #define IMFAudioMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   2504 #define IMFAudioMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   2505 /*** IMFMediaType methods ***/
   2506 #define IMFAudioMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
   2507 #define IMFAudioMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
   2508 #define IMFAudioMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
   2509 #define IMFAudioMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
   2510 #define IMFAudioMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
   2511 /*** IMFAudioMediaType methods ***/
   2512 #define IMFAudioMediaType_GetAudioFormat(This) (This)->lpVtbl->GetAudioFormat(This)
   2513 #else
   2514 /*** IUnknown methods ***/
   2515 static inline HRESULT IMFAudioMediaType_QueryInterface(IMFAudioMediaType* This,REFIID riid,void **ppvObject) {
   2516     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2517 }
   2518 static inline ULONG IMFAudioMediaType_AddRef(IMFAudioMediaType* This) {
   2519     return This->lpVtbl->AddRef(This);
   2520 }
   2521 static inline ULONG IMFAudioMediaType_Release(IMFAudioMediaType* This) {
   2522     return This->lpVtbl->Release(This);
   2523 }
   2524 /*** IMFAttributes methods ***/
   2525 static inline HRESULT IMFAudioMediaType_GetItem(IMFAudioMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
   2526     return This->lpVtbl->GetItem(This,guidKey,pValue);
   2527 }
   2528 static inline HRESULT IMFAudioMediaType_GetItemType(IMFAudioMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   2529     return This->lpVtbl->GetItemType(This,guidKey,pType);
   2530 }
   2531 static inline HRESULT IMFAudioMediaType_CompareItem(IMFAudioMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   2532     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   2533 }
   2534 static inline HRESULT IMFAudioMediaType_Compare(IMFAudioMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   2535     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   2536 }
   2537 static inline HRESULT IMFAudioMediaType_GetUINT32(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *punValue) {
   2538     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   2539 }
   2540 static inline HRESULT IMFAudioMediaType_GetUINT64(IMFAudioMediaType* This,REFGUID guidKey,UINT64 *punValue) {
   2541     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   2542 }
   2543 static inline HRESULT IMFAudioMediaType_GetDouble(IMFAudioMediaType* This,REFGUID guidKey,double *pfValue) {
   2544     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   2545 }
   2546 static inline HRESULT IMFAudioMediaType_GetGUID(IMFAudioMediaType* This,REFGUID guidKey,GUID *pguidValue) {
   2547     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   2548 }
   2549 static inline HRESULT IMFAudioMediaType_GetStringLength(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
   2550     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   2551 }
   2552 static inline HRESULT IMFAudioMediaType_GetString(IMFAudioMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   2553     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   2554 }
   2555 static inline HRESULT IMFAudioMediaType_GetAllocatedString(IMFAudioMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   2556     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   2557 }
   2558 static inline HRESULT IMFAudioMediaType_GetBlobSize(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   2559     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   2560 }
   2561 static inline HRESULT IMFAudioMediaType_GetBlob(IMFAudioMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   2562     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   2563 }
   2564 static inline HRESULT IMFAudioMediaType_GetAllocatedBlob(IMFAudioMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   2565     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   2566 }
   2567 static inline HRESULT IMFAudioMediaType_GetUnknown(IMFAudioMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   2568     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   2569 }
   2570 static inline HRESULT IMFAudioMediaType_SetItem(IMFAudioMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
   2571     return This->lpVtbl->SetItem(This,guidKey,Value);
   2572 }
   2573 static inline HRESULT IMFAudioMediaType_DeleteItem(IMFAudioMediaType* This,REFGUID guidKey) {
   2574     return This->lpVtbl->DeleteItem(This,guidKey);
   2575 }
   2576 static inline HRESULT IMFAudioMediaType_DeleteAllItems(IMFAudioMediaType* This) {
   2577     return This->lpVtbl->DeleteAllItems(This);
   2578 }
   2579 static inline HRESULT IMFAudioMediaType_SetUINT32(IMFAudioMediaType* This,REFGUID guidKey,UINT32 unValue) {
   2580     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   2581 }
   2582 static inline HRESULT IMFAudioMediaType_SetUINT64(IMFAudioMediaType* This,REFGUID guidKey,UINT64 unValue) {
   2583     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   2584 }
   2585 static inline HRESULT IMFAudioMediaType_SetDouble(IMFAudioMediaType* This,REFGUID guidKey,double fValue) {
   2586     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   2587 }
   2588 static inline HRESULT IMFAudioMediaType_SetGUID(IMFAudioMediaType* This,REFGUID guidKey,REFGUID guidValue) {
   2589     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   2590 }
   2591 static inline HRESULT IMFAudioMediaType_SetString(IMFAudioMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
   2592     return This->lpVtbl->SetString(This,guidKey,wszValue);
   2593 }
   2594 static inline HRESULT IMFAudioMediaType_SetBlob(IMFAudioMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   2595     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   2596 }
   2597 static inline HRESULT IMFAudioMediaType_SetUnknown(IMFAudioMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
   2598     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   2599 }
   2600 static inline HRESULT IMFAudioMediaType_LockStore(IMFAudioMediaType* This) {
   2601     return This->lpVtbl->LockStore(This);
   2602 }
   2603 static inline HRESULT IMFAudioMediaType_UnlockStore(IMFAudioMediaType* This) {
   2604     return This->lpVtbl->UnlockStore(This);
   2605 }
   2606 static inline HRESULT IMFAudioMediaType_GetCount(IMFAudioMediaType* This,UINT32 *pcItems) {
   2607     return This->lpVtbl->GetCount(This,pcItems);
   2608 }
   2609 static inline HRESULT IMFAudioMediaType_GetItemByIndex(IMFAudioMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   2610     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   2611 }
   2612 static inline HRESULT IMFAudioMediaType_CopyAllItems(IMFAudioMediaType* This,IMFAttributes *pDest) {
   2613     return This->lpVtbl->CopyAllItems(This,pDest);
   2614 }
   2615 /*** IMFMediaType methods ***/
   2616 static inline HRESULT IMFAudioMediaType_GetMajorType(IMFAudioMediaType* This,GUID *pguidMajorType) {
   2617     return This->lpVtbl->GetMajorType(This,pguidMajorType);
   2618 }
   2619 static inline HRESULT IMFAudioMediaType_IsCompressedFormat(IMFAudioMediaType* This,WINBOOL *pfCompressed) {
   2620     return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
   2621 }
   2622 static inline HRESULT IMFAudioMediaType_IsEqual(IMFAudioMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
   2623     return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
   2624 }
   2625 static inline HRESULT IMFAudioMediaType_GetRepresentation(IMFAudioMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
   2626     return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
   2627 }
   2628 static inline HRESULT IMFAudioMediaType_FreeRepresentation(IMFAudioMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
   2629     return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
   2630 }
   2631 /*** IMFAudioMediaType methods ***/
   2632 static inline const WAVEFORMATEX * IMFAudioMediaType_GetAudioFormat(IMFAudioMediaType* This) {
   2633     return This->lpVtbl->GetAudioFormat(This);
   2634 }
   2635 #endif
   2636 #endif
   2637 
   2638 #endif
   2639 
   2640 
   2641 #endif  /* __IMFAudioMediaType_INTERFACE_DEFINED__ */
   2642 
   2643 
   2644 #ifndef _WINGDI_
   2645 typedef DWORD RGBQUAD;
   2646 
   2647 typedef struct __WIDL_mfobjects_generated_name_00000021 {
   2648     DWORD biSize;
   2649     LONG biWidth;
   2650     LONG biHeight;
   2651     WORD biPlanes;
   2652     WORD biBitCount;
   2653     DWORD biCompression;
   2654     DWORD biSizeImage;
   2655     LONG biXPelsPerMeter;
   2656     LONG biYPelsPerMeter;
   2657     DWORD biClrUsed;
   2658     DWORD biClrImportant;
   2659 } BITMAPINFOHEADER;
   2660 
   2661 typedef struct __WIDL_mfobjects_generated_name_00000022 {
   2662     BITMAPINFOHEADER bmiHeader;
   2663     RGBQUAD bmiColors[1];
   2664 } BITMAPINFO;
   2665 #endif
   2666 
   2667 typedef struct __WIDL_mfobjects_generated_name_00000023 {
   2668     GUID guidMajorType;
   2669     GUID guidSubtype;
   2670 } MFT_REGISTER_TYPE_INFO;
   2671 #endif
   2672 #ifndef _MFVIDEOFORMAT_
   2673 #define _MFVIDEOFORMAT_
   2674 
   2675 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   2676 typedef enum _MFVideoInterlaceMode {
   2677     MFVideoInterlace_Unknown = 0,
   2678     MFVideoInterlace_Progressive = 2,
   2679     MFVideoInterlace_FieldInterleavedUpperFirst = 3,
   2680     MFVideoInterlace_FieldInterleavedLowerFirst = 4,
   2681     MFVideoInterlace_FieldSingleUpper = 5,
   2682     MFVideoInterlace_FieldSingleLower = 6,
   2683     MFVideoInterlace_MixedInterlaceOrProgressive = 7,
   2684     MFVideoInterlace_Last = 8,
   2685     MFVideoInterlace_ForceDWORD = 0x7fffffff
   2686 } MFVideoInterlaceMode;
   2687 
   2688 #define MFVideoInterlace_FieldSingleUpperFirst MFVideoInterlace_FieldSingleUpper
   2689 #define MFVideoInterlace_FieldSingleLowerFirst MFVideoInterlace_FieldSingleLower
   2690 
   2691 typedef enum _MFVideoTransferFunction {
   2692     MFVideoTransFunc_Unknown = 0,
   2693     MFVideoTransFunc_10 = 1,
   2694     MFVideoTransFunc_18 = 2,
   2695     MFVideoTransFunc_20 = 3,
   2696     MFVideoTransFunc_22 = 4,
   2697     MFVideoTransFunc_709 = 5,
   2698     MFVideoTransFunc_240M = 6,
   2699     MFVideoTransFunc_sRGB = 7,
   2700     MFVideoTransFunc_28 = 8,
   2701     MFVideoTransFunc_Log_100 = 9,
   2702     MFVideoTransFunc_Log_316 = 10,
   2703     MFVideoTransFunc_709_sym = 11,
   2704     MFVideoTransFunc_2020_const = 12,
   2705     MFVideoTransFunc_2020 = 13,
   2706     MFVideoTransFunc_26 = 14,
   2707     MFVideoTransFunc_2084 = 15,
   2708     MFVideoTransFunc_HLG = 16,
   2709     MFVideoTransFunc_10_rel = 17,
   2710     MFVideoTransFunc_Last = 18,
   2711     MFVideoTransFunc_ForceDWORD = 0x7fffffff
   2712 } MFVideoTransferFunction;
   2713 
   2714 typedef enum _MFVideoPrimaries {
   2715     MFVideoPrimaries_Unknown = 0,
   2716     MFVideoPrimaries_reserved = 1,
   2717     MFVideoPrimaries_BT709 = 2,
   2718     MFVideoPrimaries_BT470_2_SysM = 3,
   2719     MFVideoPrimaries_BT470_2_SysBG = 4,
   2720     MFVideoPrimaries_SMPTE170M = 5,
   2721     MFVideoPrimaries_SMPTE240M = 6,
   2722     MFVideoPrimaries_EBU3213 = 7,
   2723     MFVideoPrimaries_SMPTE_C = 8,
   2724     MFVideoPrimaries_BT2020 = 9,
   2725     MFVideoPrimaries_XYZ = 10,
   2726     MFVideoPrimaries_DCI_P3 = 11,
   2727     MFVideoPrimaries_ACES = 12,
   2728     MFVideoPrimaries_Last = 13,
   2729     MFVideoPrimaries_ForceDWORD = 0x7fffffff
   2730 } MFVideoPrimaries;
   2731 
   2732 typedef enum _MFVideoLighting {
   2733     MFVideoLighting_Unknown = 0,
   2734     MFVideoLighting_bright = 1,
   2735     MFVideoLighting_office = 2,
   2736     MFVideoLighting_dim = 3,
   2737     MFVideoLighting_dark = 4,
   2738     MFVideoLighting_Last = 5,
   2739     MFVideoLighting_ForceDWORD = 0x7fffffff
   2740 } MFVideoLighting;
   2741 
   2742 typedef enum _MFVideoTransferMatrix {
   2743     MFVideoTransferMatrix_Unknown = 0,
   2744     MFVideoTransferMatrix_BT709 = 1,
   2745     MFVideoTransferMatrix_BT601 = 2,
   2746     MFVideoTransferMatrix_SMPTE240M = 3,
   2747     MFVideoTransferMatrix_BT2020_10 = 4,
   2748     MFVideoTransferMatrix_BT2020_12 = 5,
   2749     MFVideoTransferMatrix_Last = 6,
   2750     MFVideoTransferMatrix_ForceDWORD = 0x7fffffff
   2751 } MFVideoTransferMatrix;
   2752 
   2753 typedef enum _MFVideoChromaSubsampling {
   2754     MFVideoChromaSubsampling_Unknown = 0,
   2755     MFVideoChromaSubsampling_ProgressiveChroma = 0x8,
   2756     MFVideoChromaSubsampling_Horizontally_Cosited = 0x4,
   2757     MFVideoChromaSubsampling_Vertically_Cosited = 0x2,
   2758     MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes = 0x1,
   2759     MFVideoChromaSubsampling_MPEG2 = MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
   2760     MFVideoChromaSubsampling_MPEG1 = MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
   2761     MFVideoChromaSubsampling_DV_PAL = MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_Cosited,
   2762     MFVideoChromaSubsampling_Cosited = (MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_Cosited) | MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
   2763     MFVideoChromaSubsampling_Last = MFVideoChromaSubsampling_Cosited + 1,
   2764     MFVideoChromaSubsampling_ForceDWORD = 0x7fffffff
   2765 } MFVideoChromaSubsampling;
   2766 
   2767 typedef enum _MFNominalRange {
   2768     MFNominalRange_Unknown = 0,
   2769     MFNominalRange_Normal = 1,
   2770     MFNominalRange_Wide = 2,
   2771     MFNominalRange_0_255 = 1,
   2772     MFNominalRange_16_235 = 2,
   2773     MFNominalRange_48_208 = 3,
   2774     MFNominalRange_64_127 = 4,
   2775     MFNominalRange_Last = 5,
   2776     MFNominalRange_ForceDWORD = 0x7fffffff
   2777 } MFNominalRange;
   2778 #endif
   2779 
   2780 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   2781 typedef enum _MFVideoFlags {
   2782     MFVideoFlag_PAD_TO_Mask = 0x1 | 0x2,
   2783     MFVideoFlag_PAD_TO_None = 0 * 0x1,
   2784     MFVideoFlag_PAD_TO_4x3 = 1 * 0x1,
   2785     MFVideoFlag_PAD_TO_16x9 = 2 * 0x1,
   2786     MFVideoFlag_SrcContentHintMask = (0x4 | 0x8) | 0x10,
   2787     MFVideoFlag_SrcContentHintNone = 0 * 0x4,
   2788     MFVideoFlag_SrcContentHint16x9 = 1 * 0x4,
   2789     MFVideoFlag_SrcContentHint235_1 = 2 * 0x4,
   2790     MFVideoFlag_AnalogProtected = 0x20,
   2791     MFVideoFlag_DigitallyProtected = 0x40,
   2792     MFVideoFlag_ProgressiveContent = 0x80,
   2793     MFVideoFlag_FieldRepeatCountMask = (0x100 | 0x200) | 0x400,
   2794     MFVideoFlag_FieldRepeatCountShift = 8,
   2795     MFVideoFlag_ProgressiveSeqReset = 0x800,
   2796     MFVideoFlag_PanScanEnabled = 0x20000,
   2797     MFVideoFlag_LowerFieldFirst = 0x40000,
   2798     MFVideoFlag_BottomUpLinearRep = 0x80000,
   2799     MFVideoFlags_DXVASurface = 0x100000,
   2800     MFVideoFlags_RenderTargetSurface = 0x400000,
   2801     MFVideoFlags_ForceQWORD = 0x7fffffff
   2802 } MFVideoFlags;
   2803 #endif
   2804 
   2805 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   2806 typedef struct _MFRatio {
   2807     DWORD Numerator;
   2808     DWORD Denominator;
   2809 } MFRatio;
   2810 
   2811 typedef struct _MFOffset {
   2812     WORD fract;
   2813     short value;
   2814 } MFOffset;
   2815 typedef struct _MFVideoArea {
   2816     MFOffset OffsetX;
   2817     MFOffset OffsetY;
   2818     SIZE Area;
   2819 } MFVideoArea;
   2820 #endif
   2821 
   2822 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   2823 typedef struct _MFVideoInfo {
   2824     DWORD dwWidth;
   2825     DWORD dwHeight;
   2826     MFRatio PixelAspectRatio;
   2827     MFVideoChromaSubsampling SourceChromaSubsampling;
   2828     MFVideoInterlaceMode InterlaceMode;
   2829     MFVideoTransferFunction TransferFunction;
   2830     MFVideoPrimaries ColorPrimaries;
   2831     MFVideoTransferMatrix TransferMatrix;
   2832     MFVideoLighting SourceLighting;
   2833     MFRatio FramesPerSecond;
   2834     MFNominalRange NominalRange;
   2835     MFVideoArea GeometricAperture;
   2836     MFVideoArea MinimumDisplayAperture;
   2837     MFVideoArea PanScanAperture;
   2838     UINT64 VideoFlags;
   2839 } MFVideoInfo;
   2840 #endif
   2841 
   2842 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   2843 typedef struct __MFAYUVSample {
   2844     BYTE bCrValue;
   2845     BYTE bCbValue;
   2846     BYTE bYValue;
   2847     BYTE bSampleAlpha8;
   2848 } MFAYUVSample;
   2849 
   2850 typedef struct _MFARGB {
   2851     BYTE rgbBlue;
   2852     BYTE rgbGreen;
   2853     BYTE rgbRed;
   2854     BYTE rgbAlpha;
   2855 } MFARGB;
   2856 
   2857 typedef union _MFPaletteEntry {
   2858     MFARGB ARGB;
   2859     MFAYUVSample AYCbCr;
   2860 } MFPaletteEntry;
   2861 #endif
   2862 
   2863 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   2864 typedef struct _MFVideoSurfaceInfo {
   2865     DWORD Format;
   2866     DWORD PaletteEntries;
   2867     MFPaletteEntry Palette[1];
   2868 } MFVideoSurfaceInfo;
   2869 
   2870 typedef struct _MFVideoCompressedInfo {
   2871     LONGLONG AvgBitrate;
   2872     LONGLONG AvgBitErrorRate;
   2873     DWORD MaxKeyFrameSpacing;
   2874 } MFVideoCompressedInfo;
   2875 
   2876 typedef struct _MFVIDEOFORMAT {
   2877     DWORD dwSize;
   2878     MFVideoInfo videoInfo;
   2879     GUID guidFormat;
   2880     MFVideoCompressedInfo compressedInfo;
   2881     MFVideoSurfaceInfo surfaceInfo;
   2882 } MFVIDEOFORMAT;
   2883 
   2884 typedef enum _MFStandardVideoFormat {
   2885     MFStdVideoFormat_reserved = 0,
   2886     MFStdVideoFormat_NTSC = 1,
   2887     MFStdVideoFormat_PAL = 2,
   2888     MFStdVideoFormat_DVD_NTSC = 3,
   2889     MFStdVideoFormat_DVD_PAL = 4,
   2890     MFStdVideoFormat_DV_PAL = 5,
   2891     MFStdVideoFormat_DV_NTSC = 6,
   2892     MFStdVideoFormat_ATSC_SD480i = 7,
   2893     MFStdVideoFormat_ATSC_HD1080i = 8,
   2894     MFStdVideoFormat_ATSC_HD720p = 9
   2895 } MFStandardVideoFormat;
   2896 #endif
   2897 #endif
   2898 
   2899 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   2900 /*****************************************************************************
   2901  * IMFVideoMediaType interface
   2902  */
   2903 #ifndef __IMFVideoMediaType_INTERFACE_DEFINED__
   2904 #define __IMFVideoMediaType_INTERFACE_DEFINED__
   2905 
   2906 DEFINE_GUID(IID_IMFVideoMediaType, 0xb99f381f, 0xa8f9, 0x47a2, 0xa5,0xaf, 0xca,0x3a,0x22,0x5a,0x38,0x90);
   2907 #if defined(__cplusplus) && !defined(CINTERFACE)
   2908 MIDL_INTERFACE("b99f381f-a8f9-47a2-a5af-ca3a225a3890")
   2909 IMFVideoMediaType : public IMFMediaType
   2910 {
   2911     virtual const MFVIDEOFORMAT * STDMETHODCALLTYPE GetVideoFormat(
   2912         ) = 0;
   2913 
   2914     virtual HRESULT STDMETHODCALLTYPE GetVideoRepresentation(
   2915         GUID guidRepresentation,
   2916         LPVOID *ppvRepresentation,
   2917         LONG lStride) = 0;
   2918 
   2919 };
   2920 #ifdef __CRT_UUID_DECL
   2921 __CRT_UUID_DECL(IMFVideoMediaType, 0xb99f381f, 0xa8f9, 0x47a2, 0xa5,0xaf, 0xca,0x3a,0x22,0x5a,0x38,0x90)
   2922 #endif
   2923 #else
   2924 typedef struct IMFVideoMediaTypeVtbl {
   2925     BEGIN_INTERFACE
   2926 
   2927     /*** IUnknown methods ***/
   2928     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2929         IMFVideoMediaType *This,
   2930         REFIID riid,
   2931         void **ppvObject);
   2932 
   2933     ULONG (STDMETHODCALLTYPE *AddRef)(
   2934         IMFVideoMediaType *This);
   2935 
   2936     ULONG (STDMETHODCALLTYPE *Release)(
   2937         IMFVideoMediaType *This);
   2938 
   2939     /*** IMFAttributes methods ***/
   2940     HRESULT (STDMETHODCALLTYPE *GetItem)(
   2941         IMFVideoMediaType *This,
   2942         REFGUID guidKey,
   2943         PROPVARIANT *pValue);
   2944 
   2945     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   2946         IMFVideoMediaType *This,
   2947         REFGUID guidKey,
   2948         MF_ATTRIBUTE_TYPE *pType);
   2949 
   2950     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   2951         IMFVideoMediaType *This,
   2952         REFGUID guidKey,
   2953         REFPROPVARIANT Value,
   2954         WINBOOL *pbResult);
   2955 
   2956     HRESULT (STDMETHODCALLTYPE *Compare)(
   2957         IMFVideoMediaType *This,
   2958         IMFAttributes *pTheirs,
   2959         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   2960         WINBOOL *pbResult);
   2961 
   2962     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   2963         IMFVideoMediaType *This,
   2964         REFGUID guidKey,
   2965         UINT32 *punValue);
   2966 
   2967     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   2968         IMFVideoMediaType *This,
   2969         REFGUID guidKey,
   2970         UINT64 *punValue);
   2971 
   2972     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   2973         IMFVideoMediaType *This,
   2974         REFGUID guidKey,
   2975         double *pfValue);
   2976 
   2977     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   2978         IMFVideoMediaType *This,
   2979         REFGUID guidKey,
   2980         GUID *pguidValue);
   2981 
   2982     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   2983         IMFVideoMediaType *This,
   2984         REFGUID guidKey,
   2985         UINT32 *pcchLength);
   2986 
   2987     HRESULT (STDMETHODCALLTYPE *GetString)(
   2988         IMFVideoMediaType *This,
   2989         REFGUID guidKey,
   2990         LPWSTR pwszValue,
   2991         UINT32 cchBufSize,
   2992         UINT32 *pcchLength);
   2993 
   2994     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   2995         IMFVideoMediaType *This,
   2996         REFGUID guidKey,
   2997         LPWSTR *ppwszValue,
   2998         UINT32 *pcchLength);
   2999 
   3000     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   3001         IMFVideoMediaType *This,
   3002         REFGUID guidKey,
   3003         UINT32 *pcbBlobSize);
   3004 
   3005     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   3006         IMFVideoMediaType *This,
   3007         REFGUID guidKey,
   3008         UINT8 *pBuf,
   3009         UINT32 cbBufSize,
   3010         UINT32 *pcbBlobSize);
   3011 
   3012     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   3013         IMFVideoMediaType *This,
   3014         REFGUID guidKey,
   3015         UINT8 **ppBuf,
   3016         UINT32 *pcbSize);
   3017 
   3018     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   3019         IMFVideoMediaType *This,
   3020         REFGUID guidKey,
   3021         REFIID riid,
   3022         LPVOID *ppv);
   3023 
   3024     HRESULT (STDMETHODCALLTYPE *SetItem)(
   3025         IMFVideoMediaType *This,
   3026         REFGUID guidKey,
   3027         REFPROPVARIANT Value);
   3028 
   3029     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   3030         IMFVideoMediaType *This,
   3031         REFGUID guidKey);
   3032 
   3033     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   3034         IMFVideoMediaType *This);
   3035 
   3036     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   3037         IMFVideoMediaType *This,
   3038         REFGUID guidKey,
   3039         UINT32 unValue);
   3040 
   3041     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   3042         IMFVideoMediaType *This,
   3043         REFGUID guidKey,
   3044         UINT64 unValue);
   3045 
   3046     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   3047         IMFVideoMediaType *This,
   3048         REFGUID guidKey,
   3049         double fValue);
   3050 
   3051     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   3052         IMFVideoMediaType *This,
   3053         REFGUID guidKey,
   3054         REFGUID guidValue);
   3055 
   3056     HRESULT (STDMETHODCALLTYPE *SetString)(
   3057         IMFVideoMediaType *This,
   3058         REFGUID guidKey,
   3059         LPCWSTR wszValue);
   3060 
   3061     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   3062         IMFVideoMediaType *This,
   3063         REFGUID guidKey,
   3064         const UINT8 *pBuf,
   3065         UINT32 cbBufSize);
   3066 
   3067     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   3068         IMFVideoMediaType *This,
   3069         REFGUID guidKey,
   3070         IUnknown *pUnknown);
   3071 
   3072     HRESULT (STDMETHODCALLTYPE *LockStore)(
   3073         IMFVideoMediaType *This);
   3074 
   3075     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   3076         IMFVideoMediaType *This);
   3077 
   3078     HRESULT (STDMETHODCALLTYPE *GetCount)(
   3079         IMFVideoMediaType *This,
   3080         UINT32 *pcItems);
   3081 
   3082     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   3083         IMFVideoMediaType *This,
   3084         UINT32 unIndex,
   3085         GUID *pguidKey,
   3086         PROPVARIANT *pValue);
   3087 
   3088     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   3089         IMFVideoMediaType *This,
   3090         IMFAttributes *pDest);
   3091 
   3092     /*** IMFMediaType methods ***/
   3093     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
   3094         IMFVideoMediaType *This,
   3095         GUID *pguidMajorType);
   3096 
   3097     HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
   3098         IMFVideoMediaType *This,
   3099         WINBOOL *pfCompressed);
   3100 
   3101     HRESULT (STDMETHODCALLTYPE *IsEqual)(
   3102         IMFVideoMediaType *This,
   3103         IMFMediaType *pIMediaType,
   3104         DWORD *pdwFlags);
   3105 
   3106     HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
   3107         IMFVideoMediaType *This,
   3108         GUID guidRepresentation,
   3109         LPVOID *ppvRepresentation);
   3110 
   3111     HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
   3112         IMFVideoMediaType *This,
   3113         GUID guidRepresentation,
   3114         LPVOID pvRepresentation);
   3115 
   3116     /*** IMFVideoMediaType methods ***/
   3117     const MFVIDEOFORMAT * (STDMETHODCALLTYPE *GetVideoFormat)(
   3118         IMFVideoMediaType *This);
   3119 
   3120     HRESULT (STDMETHODCALLTYPE *GetVideoRepresentation)(
   3121         IMFVideoMediaType *This,
   3122         GUID guidRepresentation,
   3123         LPVOID *ppvRepresentation,
   3124         LONG lStride);
   3125 
   3126     END_INTERFACE
   3127 } IMFVideoMediaTypeVtbl;
   3128 
   3129 interface IMFVideoMediaType {
   3130     CONST_VTBL IMFVideoMediaTypeVtbl* lpVtbl;
   3131 };
   3132 
   3133 #ifdef COBJMACROS
   3134 #ifndef WIDL_C_INLINE_WRAPPERS
   3135 /*** IUnknown methods ***/
   3136 #define IMFVideoMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3137 #define IMFVideoMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
   3138 #define IMFVideoMediaType_Release(This) (This)->lpVtbl->Release(This)
   3139 /*** IMFAttributes methods ***/
   3140 #define IMFVideoMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   3141 #define IMFVideoMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   3142 #define IMFVideoMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   3143 #define IMFVideoMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   3144 #define IMFVideoMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   3145 #define IMFVideoMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   3146 #define IMFVideoMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   3147 #define IMFVideoMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   3148 #define IMFVideoMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   3149 #define IMFVideoMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   3150 #define IMFVideoMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   3151 #define IMFVideoMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   3152 #define IMFVideoMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   3153 #define IMFVideoMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   3154 #define IMFVideoMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   3155 #define IMFVideoMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   3156 #define IMFVideoMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   3157 #define IMFVideoMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   3158 #define IMFVideoMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   3159 #define IMFVideoMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   3160 #define IMFVideoMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   3161 #define IMFVideoMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   3162 #define IMFVideoMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   3163 #define IMFVideoMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   3164 #define IMFVideoMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   3165 #define IMFVideoMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
   3166 #define IMFVideoMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   3167 #define IMFVideoMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   3168 #define IMFVideoMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   3169 #define IMFVideoMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   3170 /*** IMFMediaType methods ***/
   3171 #define IMFVideoMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
   3172 #define IMFVideoMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
   3173 #define IMFVideoMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
   3174 #define IMFVideoMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
   3175 #define IMFVideoMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
   3176 /*** IMFVideoMediaType methods ***/
   3177 #define IMFVideoMediaType_GetVideoFormat(This) (This)->lpVtbl->GetVideoFormat(This)
   3178 #define IMFVideoMediaType_GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride) (This)->lpVtbl->GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride)
   3179 #else
   3180 /*** IUnknown methods ***/
   3181 static inline HRESULT IMFVideoMediaType_QueryInterface(IMFVideoMediaType* This,REFIID riid,void **ppvObject) {
   3182     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3183 }
   3184 static inline ULONG IMFVideoMediaType_AddRef(IMFVideoMediaType* This) {
   3185     return This->lpVtbl->AddRef(This);
   3186 }
   3187 static inline ULONG IMFVideoMediaType_Release(IMFVideoMediaType* This) {
   3188     return This->lpVtbl->Release(This);
   3189 }
   3190 /*** IMFAttributes methods ***/
   3191 static inline HRESULT IMFVideoMediaType_GetItem(IMFVideoMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
   3192     return This->lpVtbl->GetItem(This,guidKey,pValue);
   3193 }
   3194 static inline HRESULT IMFVideoMediaType_GetItemType(IMFVideoMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   3195     return This->lpVtbl->GetItemType(This,guidKey,pType);
   3196 }
   3197 static inline HRESULT IMFVideoMediaType_CompareItem(IMFVideoMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   3198     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   3199 }
   3200 static inline HRESULT IMFVideoMediaType_Compare(IMFVideoMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   3201     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   3202 }
   3203 static inline HRESULT IMFVideoMediaType_GetUINT32(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *punValue) {
   3204     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   3205 }
   3206 static inline HRESULT IMFVideoMediaType_GetUINT64(IMFVideoMediaType* This,REFGUID guidKey,UINT64 *punValue) {
   3207     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   3208 }
   3209 static inline HRESULT IMFVideoMediaType_GetDouble(IMFVideoMediaType* This,REFGUID guidKey,double *pfValue) {
   3210     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   3211 }
   3212 static inline HRESULT IMFVideoMediaType_GetGUID(IMFVideoMediaType* This,REFGUID guidKey,GUID *pguidValue) {
   3213     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   3214 }
   3215 static inline HRESULT IMFVideoMediaType_GetStringLength(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
   3216     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   3217 }
   3218 static inline HRESULT IMFVideoMediaType_GetString(IMFVideoMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   3219     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   3220 }
   3221 static inline HRESULT IMFVideoMediaType_GetAllocatedString(IMFVideoMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   3222     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   3223 }
   3224 static inline HRESULT IMFVideoMediaType_GetBlobSize(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   3225     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   3226 }
   3227 static inline HRESULT IMFVideoMediaType_GetBlob(IMFVideoMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   3228     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   3229 }
   3230 static inline HRESULT IMFVideoMediaType_GetAllocatedBlob(IMFVideoMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   3231     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   3232 }
   3233 static inline HRESULT IMFVideoMediaType_GetUnknown(IMFVideoMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   3234     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   3235 }
   3236 static inline HRESULT IMFVideoMediaType_SetItem(IMFVideoMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
   3237     return This->lpVtbl->SetItem(This,guidKey,Value);
   3238 }
   3239 static inline HRESULT IMFVideoMediaType_DeleteItem(IMFVideoMediaType* This,REFGUID guidKey) {
   3240     return This->lpVtbl->DeleteItem(This,guidKey);
   3241 }
   3242 static inline HRESULT IMFVideoMediaType_DeleteAllItems(IMFVideoMediaType* This) {
   3243     return This->lpVtbl->DeleteAllItems(This);
   3244 }
   3245 static inline HRESULT IMFVideoMediaType_SetUINT32(IMFVideoMediaType* This,REFGUID guidKey,UINT32 unValue) {
   3246     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   3247 }
   3248 static inline HRESULT IMFVideoMediaType_SetUINT64(IMFVideoMediaType* This,REFGUID guidKey,UINT64 unValue) {
   3249     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   3250 }
   3251 static inline HRESULT IMFVideoMediaType_SetDouble(IMFVideoMediaType* This,REFGUID guidKey,double fValue) {
   3252     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   3253 }
   3254 static inline HRESULT IMFVideoMediaType_SetGUID(IMFVideoMediaType* This,REFGUID guidKey,REFGUID guidValue) {
   3255     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   3256 }
   3257 static inline HRESULT IMFVideoMediaType_SetString(IMFVideoMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
   3258     return This->lpVtbl->SetString(This,guidKey,wszValue);
   3259 }
   3260 static inline HRESULT IMFVideoMediaType_SetBlob(IMFVideoMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   3261     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   3262 }
   3263 static inline HRESULT IMFVideoMediaType_SetUnknown(IMFVideoMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
   3264     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   3265 }
   3266 static inline HRESULT IMFVideoMediaType_LockStore(IMFVideoMediaType* This) {
   3267     return This->lpVtbl->LockStore(This);
   3268 }
   3269 static inline HRESULT IMFVideoMediaType_UnlockStore(IMFVideoMediaType* This) {
   3270     return This->lpVtbl->UnlockStore(This);
   3271 }
   3272 static inline HRESULT IMFVideoMediaType_GetCount(IMFVideoMediaType* This,UINT32 *pcItems) {
   3273     return This->lpVtbl->GetCount(This,pcItems);
   3274 }
   3275 static inline HRESULT IMFVideoMediaType_GetItemByIndex(IMFVideoMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   3276     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   3277 }
   3278 static inline HRESULT IMFVideoMediaType_CopyAllItems(IMFVideoMediaType* This,IMFAttributes *pDest) {
   3279     return This->lpVtbl->CopyAllItems(This,pDest);
   3280 }
   3281 /*** IMFMediaType methods ***/
   3282 static inline HRESULT IMFVideoMediaType_GetMajorType(IMFVideoMediaType* This,GUID *pguidMajorType) {
   3283     return This->lpVtbl->GetMajorType(This,pguidMajorType);
   3284 }
   3285 static inline HRESULT IMFVideoMediaType_IsCompressedFormat(IMFVideoMediaType* This,WINBOOL *pfCompressed) {
   3286     return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
   3287 }
   3288 static inline HRESULT IMFVideoMediaType_IsEqual(IMFVideoMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
   3289     return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
   3290 }
   3291 static inline HRESULT IMFVideoMediaType_GetRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
   3292     return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
   3293 }
   3294 static inline HRESULT IMFVideoMediaType_FreeRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
   3295     return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
   3296 }
   3297 /*** IMFVideoMediaType methods ***/
   3298 static inline const MFVIDEOFORMAT * IMFVideoMediaType_GetVideoFormat(IMFVideoMediaType* This) {
   3299     return This->lpVtbl->GetVideoFormat(This);
   3300 }
   3301 static inline HRESULT IMFVideoMediaType_GetVideoRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation,LONG lStride) {
   3302     return This->lpVtbl->GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride);
   3303 }
   3304 #endif
   3305 #endif
   3306 
   3307 #endif
   3308 
   3309 
   3310 #endif  /* __IMFVideoMediaType_INTERFACE_DEFINED__ */
   3311 
   3312 #endif
   3313 
   3314 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   3315 /*****************************************************************************
   3316  * IMFAsyncResult interface
   3317  */
   3318 #ifndef __IMFAsyncResult_INTERFACE_DEFINED__
   3319 #define __IMFAsyncResult_INTERFACE_DEFINED__
   3320 
   3321 DEFINE_GUID(IID_IMFAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6);
   3322 #if defined(__cplusplus) && !defined(CINTERFACE)
   3323 MIDL_INTERFACE("ac6b7889-0740-4d51-8619-905994a55cc6")
   3324 IMFAsyncResult : public IUnknown
   3325 {
   3326     virtual HRESULT STDMETHODCALLTYPE GetState(
   3327         IUnknown **ppunkState) = 0;
   3328 
   3329     virtual HRESULT STDMETHODCALLTYPE GetStatus(
   3330         ) = 0;
   3331 
   3332     virtual HRESULT STDMETHODCALLTYPE SetStatus(
   3333         HRESULT hrStatus) = 0;
   3334 
   3335     virtual HRESULT STDMETHODCALLTYPE GetObject(
   3336         IUnknown **ppObject) = 0;
   3337 
   3338     virtual IUnknown * STDMETHODCALLTYPE GetStateNoAddRef(
   3339         ) = 0;
   3340 
   3341 };
   3342 #ifdef __CRT_UUID_DECL
   3343 __CRT_UUID_DECL(IMFAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6)
   3344 #endif
   3345 #else
   3346 typedef struct IMFAsyncResultVtbl {
   3347     BEGIN_INTERFACE
   3348 
   3349     /*** IUnknown methods ***/
   3350     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3351         IMFAsyncResult *This,
   3352         REFIID riid,
   3353         void **ppvObject);
   3354 
   3355     ULONG (STDMETHODCALLTYPE *AddRef)(
   3356         IMFAsyncResult *This);
   3357 
   3358     ULONG (STDMETHODCALLTYPE *Release)(
   3359         IMFAsyncResult *This);
   3360 
   3361     /*** IMFAsyncResult methods ***/
   3362     HRESULT (STDMETHODCALLTYPE *GetState)(
   3363         IMFAsyncResult *This,
   3364         IUnknown **ppunkState);
   3365 
   3366     HRESULT (STDMETHODCALLTYPE *GetStatus)(
   3367         IMFAsyncResult *This);
   3368 
   3369     HRESULT (STDMETHODCALLTYPE *SetStatus)(
   3370         IMFAsyncResult *This,
   3371         HRESULT hrStatus);
   3372 
   3373     HRESULT (STDMETHODCALLTYPE *GetObject)(
   3374         IMFAsyncResult *This,
   3375         IUnknown **ppObject);
   3376 
   3377     IUnknown * (STDMETHODCALLTYPE *GetStateNoAddRef)(
   3378         IMFAsyncResult *This);
   3379 
   3380     END_INTERFACE
   3381 } IMFAsyncResultVtbl;
   3382 
   3383 interface IMFAsyncResult {
   3384     CONST_VTBL IMFAsyncResultVtbl* lpVtbl;
   3385 };
   3386 
   3387 #ifdef COBJMACROS
   3388 #ifndef WIDL_C_INLINE_WRAPPERS
   3389 /*** IUnknown methods ***/
   3390 #define IMFAsyncResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3391 #define IMFAsyncResult_AddRef(This) (This)->lpVtbl->AddRef(This)
   3392 #define IMFAsyncResult_Release(This) (This)->lpVtbl->Release(This)
   3393 /*** IMFAsyncResult methods ***/
   3394 #define IMFAsyncResult_GetState(This,ppunkState) (This)->lpVtbl->GetState(This,ppunkState)
   3395 #define IMFAsyncResult_GetStatus(This) (This)->lpVtbl->GetStatus(This)
   3396 #define IMFAsyncResult_SetStatus(This,hrStatus) (This)->lpVtbl->SetStatus(This,hrStatus)
   3397 #define IMFAsyncResult_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
   3398 #define IMFAsyncResult_GetStateNoAddRef(This) (This)->lpVtbl->GetStateNoAddRef(This)
   3399 #else
   3400 /*** IUnknown methods ***/
   3401 static inline HRESULT IMFAsyncResult_QueryInterface(IMFAsyncResult* This,REFIID riid,void **ppvObject) {
   3402     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3403 }
   3404 static inline ULONG IMFAsyncResult_AddRef(IMFAsyncResult* This) {
   3405     return This->lpVtbl->AddRef(This);
   3406 }
   3407 static inline ULONG IMFAsyncResult_Release(IMFAsyncResult* This) {
   3408     return This->lpVtbl->Release(This);
   3409 }
   3410 /*** IMFAsyncResult methods ***/
   3411 static inline HRESULT IMFAsyncResult_GetState(IMFAsyncResult* This,IUnknown **ppunkState) {
   3412     return This->lpVtbl->GetState(This,ppunkState);
   3413 }
   3414 static inline HRESULT IMFAsyncResult_GetStatus(IMFAsyncResult* This) {
   3415     return This->lpVtbl->GetStatus(This);
   3416 }
   3417 static inline HRESULT IMFAsyncResult_SetStatus(IMFAsyncResult* This,HRESULT hrStatus) {
   3418     return This->lpVtbl->SetStatus(This,hrStatus);
   3419 }
   3420 static inline HRESULT IMFAsyncResult_GetObject(IMFAsyncResult* This,IUnknown **ppObject) {
   3421     return This->lpVtbl->GetObject(This,ppObject);
   3422 }
   3423 static inline IUnknown * IMFAsyncResult_GetStateNoAddRef(IMFAsyncResult* This) {
   3424     return This->lpVtbl->GetStateNoAddRef(This);
   3425 }
   3426 #endif
   3427 #endif
   3428 
   3429 #endif
   3430 
   3431 
   3432 #endif  /* __IMFAsyncResult_INTERFACE_DEFINED__ */
   3433 
   3434 
   3435 /*****************************************************************************
   3436  * IMFAsyncCallback interface
   3437  */
   3438 #ifndef __IMFAsyncCallback_INTERFACE_DEFINED__
   3439 #define __IMFAsyncCallback_INTERFACE_DEFINED__
   3440 
   3441 DEFINE_GUID(IID_IMFAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e);
   3442 #if defined(__cplusplus) && !defined(CINTERFACE)
   3443 MIDL_INTERFACE("a27003cf-2354-4f2a-8d6a-ab7cff15437e")
   3444 IMFAsyncCallback : public IUnknown
   3445 {
   3446     virtual HRESULT STDMETHODCALLTYPE GetParameters(
   3447         DWORD *pdwFlags,
   3448         DWORD *pdwQueue) = 0;
   3449 
   3450     virtual HRESULT STDMETHODCALLTYPE Invoke(
   3451         IMFAsyncResult *pAsyncResult) = 0;
   3452 
   3453 };
   3454 #ifdef __CRT_UUID_DECL
   3455 __CRT_UUID_DECL(IMFAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e)
   3456 #endif
   3457 #else
   3458 typedef struct IMFAsyncCallbackVtbl {
   3459     BEGIN_INTERFACE
   3460 
   3461     /*** IUnknown methods ***/
   3462     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3463         IMFAsyncCallback *This,
   3464         REFIID riid,
   3465         void **ppvObject);
   3466 
   3467     ULONG (STDMETHODCALLTYPE *AddRef)(
   3468         IMFAsyncCallback *This);
   3469 
   3470     ULONG (STDMETHODCALLTYPE *Release)(
   3471         IMFAsyncCallback *This);
   3472 
   3473     /*** IMFAsyncCallback methods ***/
   3474     HRESULT (STDMETHODCALLTYPE *GetParameters)(
   3475         IMFAsyncCallback *This,
   3476         DWORD *pdwFlags,
   3477         DWORD *pdwQueue);
   3478 
   3479     HRESULT (STDMETHODCALLTYPE *Invoke)(
   3480         IMFAsyncCallback *This,
   3481         IMFAsyncResult *pAsyncResult);
   3482 
   3483     END_INTERFACE
   3484 } IMFAsyncCallbackVtbl;
   3485 
   3486 interface IMFAsyncCallback {
   3487     CONST_VTBL IMFAsyncCallbackVtbl* lpVtbl;
   3488 };
   3489 
   3490 #ifdef COBJMACROS
   3491 #ifndef WIDL_C_INLINE_WRAPPERS
   3492 /*** IUnknown methods ***/
   3493 #define IMFAsyncCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3494 #define IMFAsyncCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
   3495 #define IMFAsyncCallback_Release(This) (This)->lpVtbl->Release(This)
   3496 /*** IMFAsyncCallback methods ***/
   3497 #define IMFAsyncCallback_GetParameters(This,pdwFlags,pdwQueue) (This)->lpVtbl->GetParameters(This,pdwFlags,pdwQueue)
   3498 #define IMFAsyncCallback_Invoke(This,pAsyncResult) (This)->lpVtbl->Invoke(This,pAsyncResult)
   3499 #else
   3500 /*** IUnknown methods ***/
   3501 static inline HRESULT IMFAsyncCallback_QueryInterface(IMFAsyncCallback* This,REFIID riid,void **ppvObject) {
   3502     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3503 }
   3504 static inline ULONG IMFAsyncCallback_AddRef(IMFAsyncCallback* This) {
   3505     return This->lpVtbl->AddRef(This);
   3506 }
   3507 static inline ULONG IMFAsyncCallback_Release(IMFAsyncCallback* This) {
   3508     return This->lpVtbl->Release(This);
   3509 }
   3510 /*** IMFAsyncCallback methods ***/
   3511 static inline HRESULT IMFAsyncCallback_GetParameters(IMFAsyncCallback* This,DWORD *pdwFlags,DWORD *pdwQueue) {
   3512     return This->lpVtbl->GetParameters(This,pdwFlags,pdwQueue);
   3513 }
   3514 static inline HRESULT IMFAsyncCallback_Invoke(IMFAsyncCallback* This,IMFAsyncResult *pAsyncResult) {
   3515     return This->lpVtbl->Invoke(This,pAsyncResult);
   3516 }
   3517 #endif
   3518 #endif
   3519 
   3520 #endif
   3521 
   3522 
   3523 #endif  /* __IMFAsyncCallback_INTERFACE_DEFINED__ */
   3524 
   3525 #endif
   3526 
   3527 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   3528 /*****************************************************************************
   3529  * IMFAsyncCallbackLogging interface
   3530  */
   3531 #ifndef __IMFAsyncCallbackLogging_INTERFACE_DEFINED__
   3532 #define __IMFAsyncCallbackLogging_INTERFACE_DEFINED__
   3533 
   3534 DEFINE_GUID(IID_IMFAsyncCallbackLogging, 0xc7a4dca1, 0xf5f0, 0x47b6, 0xb9,0x2b, 0xbf,0x01,0x06,0xd2,0x57,0x91);
   3535 #if defined(__cplusplus) && !defined(CINTERFACE)
   3536 MIDL_INTERFACE("c7a4dca1-f5f0-47b6-b92b-bf0106d25791")
   3537 IMFAsyncCallbackLogging : public IMFAsyncCallback
   3538 {
   3539     virtual void * STDMETHODCALLTYPE GetObjectPointer(
   3540         ) = 0;
   3541 
   3542     virtual DWORD STDMETHODCALLTYPE GetObjectTag(
   3543         ) = 0;
   3544 
   3545 };
   3546 #ifdef __CRT_UUID_DECL
   3547 __CRT_UUID_DECL(IMFAsyncCallbackLogging, 0xc7a4dca1, 0xf5f0, 0x47b6, 0xb9,0x2b, 0xbf,0x01,0x06,0xd2,0x57,0x91)
   3548 #endif
   3549 #else
   3550 typedef struct IMFAsyncCallbackLoggingVtbl {
   3551     BEGIN_INTERFACE
   3552 
   3553     /*** IUnknown methods ***/
   3554     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3555         IMFAsyncCallbackLogging *This,
   3556         REFIID riid,
   3557         void **ppvObject);
   3558 
   3559     ULONG (STDMETHODCALLTYPE *AddRef)(
   3560         IMFAsyncCallbackLogging *This);
   3561 
   3562     ULONG (STDMETHODCALLTYPE *Release)(
   3563         IMFAsyncCallbackLogging *This);
   3564 
   3565     /*** IMFAsyncCallback methods ***/
   3566     HRESULT (STDMETHODCALLTYPE *GetParameters)(
   3567         IMFAsyncCallbackLogging *This,
   3568         DWORD *pdwFlags,
   3569         DWORD *pdwQueue);
   3570 
   3571     HRESULT (STDMETHODCALLTYPE *Invoke)(
   3572         IMFAsyncCallbackLogging *This,
   3573         IMFAsyncResult *pAsyncResult);
   3574 
   3575     /*** IMFAsyncCallbackLogging methods ***/
   3576     void * (STDMETHODCALLTYPE *GetObjectPointer)(
   3577         IMFAsyncCallbackLogging *This);
   3578 
   3579     DWORD (STDMETHODCALLTYPE *GetObjectTag)(
   3580         IMFAsyncCallbackLogging *This);
   3581 
   3582     END_INTERFACE
   3583 } IMFAsyncCallbackLoggingVtbl;
   3584 
   3585 interface IMFAsyncCallbackLogging {
   3586     CONST_VTBL IMFAsyncCallbackLoggingVtbl* lpVtbl;
   3587 };
   3588 
   3589 #ifdef COBJMACROS
   3590 #ifndef WIDL_C_INLINE_WRAPPERS
   3591 /*** IUnknown methods ***/
   3592 #define IMFAsyncCallbackLogging_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3593 #define IMFAsyncCallbackLogging_AddRef(This) (This)->lpVtbl->AddRef(This)
   3594 #define IMFAsyncCallbackLogging_Release(This) (This)->lpVtbl->Release(This)
   3595 /*** IMFAsyncCallback methods ***/
   3596 #define IMFAsyncCallbackLogging_GetParameters(This,pdwFlags,pdwQueue) (This)->lpVtbl->GetParameters(This,pdwFlags,pdwQueue)
   3597 #define IMFAsyncCallbackLogging_Invoke(This,pAsyncResult) (This)->lpVtbl->Invoke(This,pAsyncResult)
   3598 /*** IMFAsyncCallbackLogging methods ***/
   3599 #define IMFAsyncCallbackLogging_GetObjectPointer(This) (This)->lpVtbl->GetObjectPointer(This)
   3600 #define IMFAsyncCallbackLogging_GetObjectTag(This) (This)->lpVtbl->GetObjectTag(This)
   3601 #else
   3602 /*** IUnknown methods ***/
   3603 static inline HRESULT IMFAsyncCallbackLogging_QueryInterface(IMFAsyncCallbackLogging* This,REFIID riid,void **ppvObject) {
   3604     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3605 }
   3606 static inline ULONG IMFAsyncCallbackLogging_AddRef(IMFAsyncCallbackLogging* This) {
   3607     return This->lpVtbl->AddRef(This);
   3608 }
   3609 static inline ULONG IMFAsyncCallbackLogging_Release(IMFAsyncCallbackLogging* This) {
   3610     return This->lpVtbl->Release(This);
   3611 }
   3612 /*** IMFAsyncCallback methods ***/
   3613 static inline HRESULT IMFAsyncCallbackLogging_GetParameters(IMFAsyncCallbackLogging* This,DWORD *pdwFlags,DWORD *pdwQueue) {
   3614     return This->lpVtbl->GetParameters(This,pdwFlags,pdwQueue);
   3615 }
   3616 static inline HRESULT IMFAsyncCallbackLogging_Invoke(IMFAsyncCallbackLogging* This,IMFAsyncResult *pAsyncResult) {
   3617     return This->lpVtbl->Invoke(This,pAsyncResult);
   3618 }
   3619 /*** IMFAsyncCallbackLogging methods ***/
   3620 static inline void * IMFAsyncCallbackLogging_GetObjectPointer(IMFAsyncCallbackLogging* This) {
   3621     return This->lpVtbl->GetObjectPointer(This);
   3622 }
   3623 static inline DWORD IMFAsyncCallbackLogging_GetObjectTag(IMFAsyncCallbackLogging* This) {
   3624     return This->lpVtbl->GetObjectTag(This);
   3625 }
   3626 #endif
   3627 #endif
   3628 
   3629 #endif
   3630 
   3631 
   3632 #endif  /* __IMFAsyncCallbackLogging_INTERFACE_DEFINED__ */
   3633 
   3634 #endif
   3635 
   3636 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   3637 #define MFASYNC_FAST_IO_PROCESSING_CALLBACK 0x00000001
   3638 #define MFASYNC_SIGNAL_CALLBACK 0x00000002
   3639 #define MFASYNC_BLOCKING_CALLBACK 0x00000004
   3640 #define MFASYNC_REPLY_CALLBACK 0x00000008
   3641 #define MFASYNC_LOCALIZE_REMOTE_CALLBACK 0x00000010
   3642 
   3643 #define MFASYNC_CALLBACK_QUEUE_UNDEFINED 0x00000000
   3644 #define MFASYNC_CALLBACK_QUEUE_STANDARD 0x00000001
   3645 #define MFASYNC_CALLBACK_QUEUE_RT 0x00000002
   3646 #define MFASYNC_CALLBACK_QUEUE_IO 0x00000003
   3647 #define MFASYNC_CALLBACK_QUEUE_TIMER 0x00000004
   3648 #define MFASYNC_CALLBACK_QUEUE_MULTITHREADED 0x00000005
   3649 #define MFASYNC_CALLBACK_QUEUE_LONG_FUNCTION 0x00000007
   3650 #define MFASYNC_CALLBACK_QUEUE_PRIVATE_MASK 0xFFFF0000
   3651 #define MFASYNC_CALLBACK_QUEUE_ALL 0xFFFFFFFF
   3652 
   3653 enum {
   3654     MEUnknown = 0,
   3655     MEError = 1,
   3656     MEExtendedType = 2,
   3657     MENonFatalError = 3,
   3658     MEGenericV1Anchor = MENonFatalError,
   3659     MESessionUnknown = 100,
   3660     MESessionTopologySet = 101,
   3661     MESessionTopologiesCleared = 102,
   3662     MESessionStarted = 103,
   3663     MESessionPaused = 104,
   3664     MESessionStopped = 105,
   3665     MESessionClosed = 106,
   3666     MESessionEnded = 107,
   3667     MESessionRateChanged = 108,
   3668     MESessionScrubSampleComplete = 109,
   3669     MESessionCapabilitiesChanged = 110,
   3670     MESessionTopologyStatus = 111,
   3671     MESessionNotifyPresentationTime = 112,
   3672     MENewPresentation = 113,
   3673     MELicenseAcquisitionStart = 114,
   3674     MELicenseAcquisitionCompleted = 115,
   3675     MEIndividualizationStart = 116,
   3676     MEIndividualizationCompleted = 117,
   3677     MEEnablerProgress = 118,
   3678     MEEnablerCompleted = 119,
   3679     MEPolicyError = 120,
   3680     MEPolicyReport = 121,
   3681     MEBufferingStarted = 122,
   3682     MEBufferingStopped = 123,
   3683     MEConnectStart = 124,
   3684     MEConnectEnd = 125,
   3685     MEReconnectStart = 126,
   3686     MEReconnectEnd = 127,
   3687     MERendererEvent = 128,
   3688     MESessionStreamSinkFormatChanged = 129,
   3689     MESessionV1Anchor = MESessionStreamSinkFormatChanged,
   3690     MESourceUnknown = 200,
   3691     MESourceStarted = 201,
   3692     MEStreamStarted = 202,
   3693     MESourceSeeked = 203,
   3694     MEStreamSeeked = 204,
   3695     MENewStream = 205,
   3696     MEUpdatedStream = 206,
   3697     MESourceStopped = 207,
   3698     MEStreamStopped = 208,
   3699     MESourcePaused = 209,
   3700     MEStreamPaused = 210,
   3701     MEEndOfPresentation = 211,
   3702     MEEndOfStream = 212,
   3703     MEMediaSample = 213,
   3704     MEStreamTick = 214,
   3705     MEStreamThinMode = 215,
   3706     MEStreamFormatChanged = 216,
   3707     MESourceRateChanged = 217,
   3708     MEEndOfPresentationSegment = 218,
   3709     MESourceCharacteristicsChanged = 219,
   3710     MESourceRateChangeRequested = 220,
   3711     MESourceMetadataChanged = 221,
   3712     MESequencerSourceTopologyUpdated = 222,
   3713     MESourceV1Anchor = MESequencerSourceTopologyUpdated,
   3714     MESinkUnknown = 300,
   3715     MEStreamSinkStarted = 301,
   3716     MEStreamSinkStopped = 302,
   3717     MEStreamSinkPaused = 303,
   3718     MEStreamSinkRateChanged = 304,
   3719     MEStreamSinkRequestSample = 305,
   3720     MEStreamSinkMarker = 306,
   3721     MEStreamSinkPrerolled = 307,
   3722     MEStreamSinkScrubSampleComplete = 308,
   3723     MEStreamSinkFormatChanged = 309,
   3724     MEStreamSinkDeviceChanged = 310,
   3725     MEQualityNotify = 311,
   3726     MESinkInvalidated = 312,
   3727     MEAudioSessionNameChanged = 313,
   3728     MEAudioSessionVolumeChanged = 314,
   3729     MEAudioSessionDeviceRemoved = 315,
   3730     MEAudioSessionServerShutdown = 316,
   3731     MEAudioSessionGroupingParamChanged = 317,
   3732     MEAudioSessionIconChanged = 318,
   3733     MEAudioSessionFormatChanged = 319,
   3734     MEAudioSessionDisconnected = 320,
   3735     MEAudioSessionExclusiveModeOverride = 321,
   3736     MESinkV1Anchor = MEAudioSessionExclusiveModeOverride,
   3737     MECaptureAudioSessionVolumeChanged = 322,
   3738     MECaptureAudioSessionDeviceRemoved = 323,
   3739     MECaptureAudioSessionFormatChanged = 324,
   3740     MECaptureAudioSessionDisconnected = 325,
   3741     MECaptureAudioSessionExclusiveModeOverride = 326,
   3742     MECaptureAudioSessionServerShutdown = 327,
   3743     MESinkV2Anchor = MECaptureAudioSessionServerShutdown,
   3744     METrustUnknown = 400,
   3745     MEPolicyChanged = 401,
   3746     MEContentProtectionMessage = 402,
   3747     MEPolicySet = 403,
   3748     METrustV1Anchor = MEPolicySet,
   3749     MEWMDRMLicenseBackupCompleted = 500,
   3750     MEWMDRMLicenseBackupProgress = 501,
   3751     MEWMDRMLicenseRestoreCompleted = 502,
   3752     MEWMDRMLicenseRestoreProgress = 503,
   3753     MEWMDRMLicenseAcquisitionCompleted = 506,
   3754     MEWMDRMIndividualizationCompleted = 508,
   3755     MEWMDRMIndividualizationProgress = 513,
   3756     MEWMDRMProximityCompleted = 514,
   3757     MEWMDRMLicenseStoreCleaned = 515,
   3758     MEWMDRMRevocationDownloadCompleted = 516,
   3759     MEWMDRMV1Anchor = MEWMDRMRevocationDownloadCompleted,
   3760     METransformUnknown = 600,
   3761     METransformNeedInput = 601,
   3762     METransformHaveOutput = 602,
   3763     METransformDrainComplete = 603,
   3764     METransformMarker = 604,
   3765     METransformInputStreamStateChanged = 605,
   3766     MEByteStreamCharacteristicsChanged = 700,
   3767     MEVideoCaptureDeviceRemoved = 800,
   3768     MEVideoCaptureDevicePreempted = 801,
   3769     MEStreamSinkFormatInvalidated = 802,
   3770     MEEncodingParameters = 803,
   3771     MEContentProtectionMetadata = 900,
   3772     MEDeviceThermalStateChanged = 950,
   3773     MEReservedMax = 10000
   3774 };
   3775 
   3776 typedef DWORD MediaEventType;
   3777 
   3778 /*****************************************************************************
   3779  * IMFMediaEvent interface
   3780  */
   3781 #ifndef __IMFMediaEvent_INTERFACE_DEFINED__
   3782 #define __IMFMediaEvent_INTERFACE_DEFINED__
   3783 
   3784 DEFINE_GUID(IID_IMFMediaEvent, 0xdf598932, 0xf10c, 0x4e39, 0xbb,0xa2, 0xc3,0x08,0xf1,0x01,0xda,0xa3);
   3785 #if defined(__cplusplus) && !defined(CINTERFACE)
   3786 MIDL_INTERFACE("df598932-f10c-4e39-bba2-c308f101daa3")
   3787 IMFMediaEvent : public IMFAttributes
   3788 {
   3789     virtual HRESULT STDMETHODCALLTYPE GetType(
   3790         MediaEventType *pmet) = 0;
   3791 
   3792     virtual HRESULT STDMETHODCALLTYPE GetExtendedType(
   3793         GUID *pguidExtendedType) = 0;
   3794 
   3795     virtual HRESULT STDMETHODCALLTYPE GetStatus(
   3796         HRESULT *phrStatus) = 0;
   3797 
   3798     virtual HRESULT STDMETHODCALLTYPE GetValue(
   3799         PROPVARIANT *pvValue) = 0;
   3800 
   3801 };
   3802 #ifdef __CRT_UUID_DECL
   3803 __CRT_UUID_DECL(IMFMediaEvent, 0xdf598932, 0xf10c, 0x4e39, 0xbb,0xa2, 0xc3,0x08,0xf1,0x01,0xda,0xa3)
   3804 #endif
   3805 #else
   3806 typedef struct IMFMediaEventVtbl {
   3807     BEGIN_INTERFACE
   3808 
   3809     /*** IUnknown methods ***/
   3810     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3811         IMFMediaEvent *This,
   3812         REFIID riid,
   3813         void **ppvObject);
   3814 
   3815     ULONG (STDMETHODCALLTYPE *AddRef)(
   3816         IMFMediaEvent *This);
   3817 
   3818     ULONG (STDMETHODCALLTYPE *Release)(
   3819         IMFMediaEvent *This);
   3820 
   3821     /*** IMFAttributes methods ***/
   3822     HRESULT (STDMETHODCALLTYPE *GetItem)(
   3823         IMFMediaEvent *This,
   3824         REFGUID guidKey,
   3825         PROPVARIANT *pValue);
   3826 
   3827     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   3828         IMFMediaEvent *This,
   3829         REFGUID guidKey,
   3830         MF_ATTRIBUTE_TYPE *pType);
   3831 
   3832     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   3833         IMFMediaEvent *This,
   3834         REFGUID guidKey,
   3835         REFPROPVARIANT Value,
   3836         WINBOOL *pbResult);
   3837 
   3838     HRESULT (STDMETHODCALLTYPE *Compare)(
   3839         IMFMediaEvent *This,
   3840         IMFAttributes *pTheirs,
   3841         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   3842         WINBOOL *pbResult);
   3843 
   3844     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   3845         IMFMediaEvent *This,
   3846         REFGUID guidKey,
   3847         UINT32 *punValue);
   3848 
   3849     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   3850         IMFMediaEvent *This,
   3851         REFGUID guidKey,
   3852         UINT64 *punValue);
   3853 
   3854     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   3855         IMFMediaEvent *This,
   3856         REFGUID guidKey,
   3857         double *pfValue);
   3858 
   3859     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   3860         IMFMediaEvent *This,
   3861         REFGUID guidKey,
   3862         GUID *pguidValue);
   3863 
   3864     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   3865         IMFMediaEvent *This,
   3866         REFGUID guidKey,
   3867         UINT32 *pcchLength);
   3868 
   3869     HRESULT (STDMETHODCALLTYPE *GetString)(
   3870         IMFMediaEvent *This,
   3871         REFGUID guidKey,
   3872         LPWSTR pwszValue,
   3873         UINT32 cchBufSize,
   3874         UINT32 *pcchLength);
   3875 
   3876     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   3877         IMFMediaEvent *This,
   3878         REFGUID guidKey,
   3879         LPWSTR *ppwszValue,
   3880         UINT32 *pcchLength);
   3881 
   3882     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   3883         IMFMediaEvent *This,
   3884         REFGUID guidKey,
   3885         UINT32 *pcbBlobSize);
   3886 
   3887     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   3888         IMFMediaEvent *This,
   3889         REFGUID guidKey,
   3890         UINT8 *pBuf,
   3891         UINT32 cbBufSize,
   3892         UINT32 *pcbBlobSize);
   3893 
   3894     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   3895         IMFMediaEvent *This,
   3896         REFGUID guidKey,
   3897         UINT8 **ppBuf,
   3898         UINT32 *pcbSize);
   3899 
   3900     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   3901         IMFMediaEvent *This,
   3902         REFGUID guidKey,
   3903         REFIID riid,
   3904         LPVOID *ppv);
   3905 
   3906     HRESULT (STDMETHODCALLTYPE *SetItem)(
   3907         IMFMediaEvent *This,
   3908         REFGUID guidKey,
   3909         REFPROPVARIANT Value);
   3910 
   3911     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   3912         IMFMediaEvent *This,
   3913         REFGUID guidKey);
   3914 
   3915     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   3916         IMFMediaEvent *This);
   3917 
   3918     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   3919         IMFMediaEvent *This,
   3920         REFGUID guidKey,
   3921         UINT32 unValue);
   3922 
   3923     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   3924         IMFMediaEvent *This,
   3925         REFGUID guidKey,
   3926         UINT64 unValue);
   3927 
   3928     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   3929         IMFMediaEvent *This,
   3930         REFGUID guidKey,
   3931         double fValue);
   3932 
   3933     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   3934         IMFMediaEvent *This,
   3935         REFGUID guidKey,
   3936         REFGUID guidValue);
   3937 
   3938     HRESULT (STDMETHODCALLTYPE *SetString)(
   3939         IMFMediaEvent *This,
   3940         REFGUID guidKey,
   3941         LPCWSTR wszValue);
   3942 
   3943     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   3944         IMFMediaEvent *This,
   3945         REFGUID guidKey,
   3946         const UINT8 *pBuf,
   3947         UINT32 cbBufSize);
   3948 
   3949     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   3950         IMFMediaEvent *This,
   3951         REFGUID guidKey,
   3952         IUnknown *pUnknown);
   3953 
   3954     HRESULT (STDMETHODCALLTYPE *LockStore)(
   3955         IMFMediaEvent *This);
   3956 
   3957     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   3958         IMFMediaEvent *This);
   3959 
   3960     HRESULT (STDMETHODCALLTYPE *GetCount)(
   3961         IMFMediaEvent *This,
   3962         UINT32 *pcItems);
   3963 
   3964     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   3965         IMFMediaEvent *This,
   3966         UINT32 unIndex,
   3967         GUID *pguidKey,
   3968         PROPVARIANT *pValue);
   3969 
   3970     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   3971         IMFMediaEvent *This,
   3972         IMFAttributes *pDest);
   3973 
   3974     /*** IMFMediaEvent methods ***/
   3975     HRESULT (STDMETHODCALLTYPE *GetType)(
   3976         IMFMediaEvent *This,
   3977         MediaEventType *pmet);
   3978 
   3979     HRESULT (STDMETHODCALLTYPE *GetExtendedType)(
   3980         IMFMediaEvent *This,
   3981         GUID *pguidExtendedType);
   3982 
   3983     HRESULT (STDMETHODCALLTYPE *GetStatus)(
   3984         IMFMediaEvent *This,
   3985         HRESULT *phrStatus);
   3986 
   3987     HRESULT (STDMETHODCALLTYPE *GetValue)(
   3988         IMFMediaEvent *This,
   3989         PROPVARIANT *pvValue);
   3990 
   3991     END_INTERFACE
   3992 } IMFMediaEventVtbl;
   3993 
   3994 interface IMFMediaEvent {
   3995     CONST_VTBL IMFMediaEventVtbl* lpVtbl;
   3996 };
   3997 
   3998 #ifdef COBJMACROS
   3999 #ifndef WIDL_C_INLINE_WRAPPERS
   4000 /*** IUnknown methods ***/
   4001 #define IMFMediaEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4002 #define IMFMediaEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
   4003 #define IMFMediaEvent_Release(This) (This)->lpVtbl->Release(This)
   4004 /*** IMFAttributes methods ***/
   4005 #define IMFMediaEvent_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   4006 #define IMFMediaEvent_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   4007 #define IMFMediaEvent_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   4008 #define IMFMediaEvent_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   4009 #define IMFMediaEvent_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   4010 #define IMFMediaEvent_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   4011 #define IMFMediaEvent_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   4012 #define IMFMediaEvent_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   4013 #define IMFMediaEvent_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   4014 #define IMFMediaEvent_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   4015 #define IMFMediaEvent_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   4016 #define IMFMediaEvent_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   4017 #define IMFMediaEvent_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   4018 #define IMFMediaEvent_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   4019 #define IMFMediaEvent_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   4020 #define IMFMediaEvent_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   4021 #define IMFMediaEvent_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   4022 #define IMFMediaEvent_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   4023 #define IMFMediaEvent_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   4024 #define IMFMediaEvent_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   4025 #define IMFMediaEvent_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   4026 #define IMFMediaEvent_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   4027 #define IMFMediaEvent_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   4028 #define IMFMediaEvent_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   4029 #define IMFMediaEvent_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   4030 #define IMFMediaEvent_LockStore(This) (This)->lpVtbl->LockStore(This)
   4031 #define IMFMediaEvent_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   4032 #define IMFMediaEvent_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   4033 #define IMFMediaEvent_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   4034 #define IMFMediaEvent_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   4035 /*** IMFMediaEvent methods ***/
   4036 #define IMFMediaEvent_GetType(This,pmet) (This)->lpVtbl->GetType(This,pmet)
   4037 #define IMFMediaEvent_GetExtendedType(This,pguidExtendedType) (This)->lpVtbl->GetExtendedType(This,pguidExtendedType)
   4038 #define IMFMediaEvent_GetStatus(This,phrStatus) (This)->lpVtbl->GetStatus(This,phrStatus)
   4039 #define IMFMediaEvent_GetValue(This,pvValue) (This)->lpVtbl->GetValue(This,pvValue)
   4040 #else
   4041 /*** IUnknown methods ***/
   4042 static inline HRESULT IMFMediaEvent_QueryInterface(IMFMediaEvent* This,REFIID riid,void **ppvObject) {
   4043     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4044 }
   4045 static inline ULONG IMFMediaEvent_AddRef(IMFMediaEvent* This) {
   4046     return This->lpVtbl->AddRef(This);
   4047 }
   4048 static inline ULONG IMFMediaEvent_Release(IMFMediaEvent* This) {
   4049     return This->lpVtbl->Release(This);
   4050 }
   4051 /*** IMFAttributes methods ***/
   4052 static inline HRESULT IMFMediaEvent_GetItem(IMFMediaEvent* This,REFGUID guidKey,PROPVARIANT *pValue) {
   4053     return This->lpVtbl->GetItem(This,guidKey,pValue);
   4054 }
   4055 static inline HRESULT IMFMediaEvent_GetItemType(IMFMediaEvent* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   4056     return This->lpVtbl->GetItemType(This,guidKey,pType);
   4057 }
   4058 static inline HRESULT IMFMediaEvent_CompareItem(IMFMediaEvent* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   4059     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   4060 }
   4061 static inline HRESULT IMFMediaEvent_Compare(IMFMediaEvent* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   4062     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   4063 }
   4064 static inline HRESULT IMFMediaEvent_GetUINT32(IMFMediaEvent* This,REFGUID guidKey,UINT32 *punValue) {
   4065     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   4066 }
   4067 static inline HRESULT IMFMediaEvent_GetUINT64(IMFMediaEvent* This,REFGUID guidKey,UINT64 *punValue) {
   4068     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   4069 }
   4070 static inline HRESULT IMFMediaEvent_GetDouble(IMFMediaEvent* This,REFGUID guidKey,double *pfValue) {
   4071     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   4072 }
   4073 static inline HRESULT IMFMediaEvent_GetGUID(IMFMediaEvent* This,REFGUID guidKey,GUID *pguidValue) {
   4074     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   4075 }
   4076 static inline HRESULT IMFMediaEvent_GetStringLength(IMFMediaEvent* This,REFGUID guidKey,UINT32 *pcchLength) {
   4077     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   4078 }
   4079 static inline HRESULT IMFMediaEvent_GetString(IMFMediaEvent* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   4080     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   4081 }
   4082 static inline HRESULT IMFMediaEvent_GetAllocatedString(IMFMediaEvent* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   4083     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   4084 }
   4085 static inline HRESULT IMFMediaEvent_GetBlobSize(IMFMediaEvent* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   4086     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   4087 }
   4088 static inline HRESULT IMFMediaEvent_GetBlob(IMFMediaEvent* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   4089     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   4090 }
   4091 static inline HRESULT IMFMediaEvent_GetAllocatedBlob(IMFMediaEvent* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   4092     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   4093 }
   4094 static inline HRESULT IMFMediaEvent_GetUnknown(IMFMediaEvent* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   4095     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   4096 }
   4097 static inline HRESULT IMFMediaEvent_SetItem(IMFMediaEvent* This,REFGUID guidKey,REFPROPVARIANT Value) {
   4098     return This->lpVtbl->SetItem(This,guidKey,Value);
   4099 }
   4100 static inline HRESULT IMFMediaEvent_DeleteItem(IMFMediaEvent* This,REFGUID guidKey) {
   4101     return This->lpVtbl->DeleteItem(This,guidKey);
   4102 }
   4103 static inline HRESULT IMFMediaEvent_DeleteAllItems(IMFMediaEvent* This) {
   4104     return This->lpVtbl->DeleteAllItems(This);
   4105 }
   4106 static inline HRESULT IMFMediaEvent_SetUINT32(IMFMediaEvent* This,REFGUID guidKey,UINT32 unValue) {
   4107     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   4108 }
   4109 static inline HRESULT IMFMediaEvent_SetUINT64(IMFMediaEvent* This,REFGUID guidKey,UINT64 unValue) {
   4110     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   4111 }
   4112 static inline HRESULT IMFMediaEvent_SetDouble(IMFMediaEvent* This,REFGUID guidKey,double fValue) {
   4113     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   4114 }
   4115 static inline HRESULT IMFMediaEvent_SetGUID(IMFMediaEvent* This,REFGUID guidKey,REFGUID guidValue) {
   4116     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   4117 }
   4118 static inline HRESULT IMFMediaEvent_SetString(IMFMediaEvent* This,REFGUID guidKey,LPCWSTR wszValue) {
   4119     return This->lpVtbl->SetString(This,guidKey,wszValue);
   4120 }
   4121 static inline HRESULT IMFMediaEvent_SetBlob(IMFMediaEvent* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   4122     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   4123 }
   4124 static inline HRESULT IMFMediaEvent_SetUnknown(IMFMediaEvent* This,REFGUID guidKey,IUnknown *pUnknown) {
   4125     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   4126 }
   4127 static inline HRESULT IMFMediaEvent_LockStore(IMFMediaEvent* This) {
   4128     return This->lpVtbl->LockStore(This);
   4129 }
   4130 static inline HRESULT IMFMediaEvent_UnlockStore(IMFMediaEvent* This) {
   4131     return This->lpVtbl->UnlockStore(This);
   4132 }
   4133 static inline HRESULT IMFMediaEvent_GetCount(IMFMediaEvent* This,UINT32 *pcItems) {
   4134     return This->lpVtbl->GetCount(This,pcItems);
   4135 }
   4136 static inline HRESULT IMFMediaEvent_GetItemByIndex(IMFMediaEvent* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   4137     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   4138 }
   4139 static inline HRESULT IMFMediaEvent_CopyAllItems(IMFMediaEvent* This,IMFAttributes *pDest) {
   4140     return This->lpVtbl->CopyAllItems(This,pDest);
   4141 }
   4142 /*** IMFMediaEvent methods ***/
   4143 static inline HRESULT IMFMediaEvent_GetType(IMFMediaEvent* This,MediaEventType *pmet) {
   4144     return This->lpVtbl->GetType(This,pmet);
   4145 }
   4146 static inline HRESULT IMFMediaEvent_GetExtendedType(IMFMediaEvent* This,GUID *pguidExtendedType) {
   4147     return This->lpVtbl->GetExtendedType(This,pguidExtendedType);
   4148 }
   4149 static inline HRESULT IMFMediaEvent_GetStatus(IMFMediaEvent* This,HRESULT *phrStatus) {
   4150     return This->lpVtbl->GetStatus(This,phrStatus);
   4151 }
   4152 static inline HRESULT IMFMediaEvent_GetValue(IMFMediaEvent* This,PROPVARIANT *pvValue) {
   4153     return This->lpVtbl->GetValue(This,pvValue);
   4154 }
   4155 #endif
   4156 #endif
   4157 
   4158 #endif
   4159 
   4160 
   4161 #endif  /* __IMFMediaEvent_INTERFACE_DEFINED__ */
   4162 
   4163 
   4164 #define MF_EVENT_FLAG_NO_WAIT 0x00000001
   4165 
   4166 #ifndef __IMFRemoteAsyncCallback_FWD_DEFINED__
   4167 #define __IMFRemoteAsyncCallback_FWD_DEFINED__
   4168 typedef interface IMFRemoteAsyncCallback IMFRemoteAsyncCallback;
   4169 #ifdef __cplusplus
   4170 interface IMFRemoteAsyncCallback;
   4171 #endif /* __cplusplus */
   4172 #endif
   4173 
   4174 
   4175 /*****************************************************************************
   4176  * IMFMediaEventGenerator interface
   4177  */
   4178 #ifndef __IMFMediaEventGenerator_INTERFACE_DEFINED__
   4179 #define __IMFMediaEventGenerator_INTERFACE_DEFINED__
   4180 
   4181 DEFINE_GUID(IID_IMFMediaEventGenerator, 0x2cd0bd52, 0xbcd5, 0x4b89, 0xb6,0x2c, 0xea,0xdc,0x0c,0x03,0x1e,0x7d);
   4182 #if defined(__cplusplus) && !defined(CINTERFACE)
   4183 MIDL_INTERFACE("2cd0bd52-bcd5-4b89-b62c-eadc0c031e7d")
   4184 IMFMediaEventGenerator : public IUnknown
   4185 {
   4186     virtual HRESULT STDMETHODCALLTYPE GetEvent(
   4187         DWORD dwFlags,
   4188         IMFMediaEvent **ppEvent) = 0;
   4189 
   4190     virtual HRESULT STDMETHODCALLTYPE BeginGetEvent(
   4191         IMFAsyncCallback *pCallback,
   4192         IUnknown *punkState) = 0;
   4193 
   4194     virtual HRESULT STDMETHODCALLTYPE EndGetEvent(
   4195         IMFAsyncResult *pResult,
   4196         IMFMediaEvent **ppEvent) = 0;
   4197 
   4198     virtual HRESULT STDMETHODCALLTYPE QueueEvent(
   4199         MediaEventType met,
   4200         REFGUID guidExtendedType,
   4201         HRESULT hrStatus,
   4202         const PROPVARIANT *pvValue) = 0;
   4203 
   4204 };
   4205 #ifdef __CRT_UUID_DECL
   4206 __CRT_UUID_DECL(IMFMediaEventGenerator, 0x2cd0bd52, 0xbcd5, 0x4b89, 0xb6,0x2c, 0xea,0xdc,0x0c,0x03,0x1e,0x7d)
   4207 #endif
   4208 #else
   4209 typedef struct IMFMediaEventGeneratorVtbl {
   4210     BEGIN_INTERFACE
   4211 
   4212     /*** IUnknown methods ***/
   4213     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4214         IMFMediaEventGenerator *This,
   4215         REFIID riid,
   4216         void **ppvObject);
   4217 
   4218     ULONG (STDMETHODCALLTYPE *AddRef)(
   4219         IMFMediaEventGenerator *This);
   4220 
   4221     ULONG (STDMETHODCALLTYPE *Release)(
   4222         IMFMediaEventGenerator *This);
   4223 
   4224     /*** IMFMediaEventGenerator methods ***/
   4225     HRESULT (STDMETHODCALLTYPE *GetEvent)(
   4226         IMFMediaEventGenerator *This,
   4227         DWORD dwFlags,
   4228         IMFMediaEvent **ppEvent);
   4229 
   4230     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
   4231         IMFMediaEventGenerator *This,
   4232         IMFAsyncCallback *pCallback,
   4233         IUnknown *punkState);
   4234 
   4235     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
   4236         IMFMediaEventGenerator *This,
   4237         IMFAsyncResult *pResult,
   4238         IMFMediaEvent **ppEvent);
   4239 
   4240     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
   4241         IMFMediaEventGenerator *This,
   4242         MediaEventType met,
   4243         REFGUID guidExtendedType,
   4244         HRESULT hrStatus,
   4245         const PROPVARIANT *pvValue);
   4246 
   4247     END_INTERFACE
   4248 } IMFMediaEventGeneratorVtbl;
   4249 
   4250 interface IMFMediaEventGenerator {
   4251     CONST_VTBL IMFMediaEventGeneratorVtbl* lpVtbl;
   4252 };
   4253 
   4254 #ifdef COBJMACROS
   4255 #ifndef WIDL_C_INLINE_WRAPPERS
   4256 /*** IUnknown methods ***/
   4257 #define IMFMediaEventGenerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4258 #define IMFMediaEventGenerator_AddRef(This) (This)->lpVtbl->AddRef(This)
   4259 #define IMFMediaEventGenerator_Release(This) (This)->lpVtbl->Release(This)
   4260 /*** IMFMediaEventGenerator methods ***/
   4261 #define IMFMediaEventGenerator_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
   4262 #define IMFMediaEventGenerator_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
   4263 #define IMFMediaEventGenerator_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
   4264 #define IMFMediaEventGenerator_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
   4265 #else
   4266 /*** IUnknown methods ***/
   4267 static inline HRESULT IMFMediaEventGenerator_QueryInterface(IMFMediaEventGenerator* This,REFIID riid,void **ppvObject) {
   4268     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4269 }
   4270 static inline ULONG IMFMediaEventGenerator_AddRef(IMFMediaEventGenerator* This) {
   4271     return This->lpVtbl->AddRef(This);
   4272 }
   4273 static inline ULONG IMFMediaEventGenerator_Release(IMFMediaEventGenerator* This) {
   4274     return This->lpVtbl->Release(This);
   4275 }
   4276 /*** IMFMediaEventGenerator methods ***/
   4277 static inline HRESULT IMFMediaEventGenerator_GetEvent(IMFMediaEventGenerator* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
   4278     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
   4279 }
   4280 static inline HRESULT IMFMediaEventGenerator_BeginGetEvent(IMFMediaEventGenerator* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
   4281     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
   4282 }
   4283 static inline HRESULT IMFMediaEventGenerator_EndGetEvent(IMFMediaEventGenerator* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
   4284     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
   4285 }
   4286 static inline HRESULT IMFMediaEventGenerator_QueueEvent(IMFMediaEventGenerator* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
   4287     return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
   4288 }
   4289 #endif
   4290 #endif
   4291 
   4292 #endif
   4293 
   4294 HRESULT STDMETHODCALLTYPE IMFMediaEventGenerator_RemoteBeginGetEvent_Proxy(
   4295     IMFMediaEventGenerator* This,
   4296     IMFRemoteAsyncCallback *pCallback);
   4297 void __RPC_STUB IMFMediaEventGenerator_RemoteBeginGetEvent_Stub(
   4298     IRpcStubBuffer* This,
   4299     IRpcChannelBuffer* pRpcChannelBuffer,
   4300     PRPC_MESSAGE pRpcMessage,
   4301     DWORD* pdwStubPhase);
   4302 HRESULT STDMETHODCALLTYPE IMFMediaEventGenerator_RemoteEndGetEvent_Proxy(
   4303     IMFMediaEventGenerator* This,
   4304     IUnknown *pResult,
   4305     DWORD *pcbEvent,
   4306     BYTE **ppbEvent);
   4307 void __RPC_STUB IMFMediaEventGenerator_RemoteEndGetEvent_Stub(
   4308     IRpcStubBuffer* This,
   4309     IRpcChannelBuffer* pRpcChannelBuffer,
   4310     PRPC_MESSAGE pRpcMessage,
   4311     DWORD* pdwStubPhase);
   4312 HRESULT CALLBACK IMFMediaEventGenerator_BeginGetEvent_Proxy(
   4313     IMFMediaEventGenerator* This,
   4314     IMFAsyncCallback *pCallback,
   4315     IUnknown *punkState);
   4316 HRESULT __RPC_STUB IMFMediaEventGenerator_BeginGetEvent_Stub(
   4317     IMFMediaEventGenerator* This,
   4318     IMFRemoteAsyncCallback *pCallback);
   4319 HRESULT CALLBACK IMFMediaEventGenerator_EndGetEvent_Proxy(
   4320     IMFMediaEventGenerator* This,
   4321     IMFAsyncResult *pResult,
   4322     IMFMediaEvent **ppEvent);
   4323 HRESULT __RPC_STUB IMFMediaEventGenerator_EndGetEvent_Stub(
   4324     IMFMediaEventGenerator* This,
   4325     IUnknown *pResult,
   4326     DWORD *pcbEvent,
   4327     BYTE **ppbEvent);
   4328 
   4329 #endif  /* __IMFMediaEventGenerator_INTERFACE_DEFINED__ */
   4330 
   4331 #endif
   4332 
   4333 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   4334 /*****************************************************************************
   4335  * IMFRemoteAsyncCallback interface
   4336  */
   4337 #ifndef __IMFRemoteAsyncCallback_INTERFACE_DEFINED__
   4338 #define __IMFRemoteAsyncCallback_INTERFACE_DEFINED__
   4339 
   4340 DEFINE_GUID(IID_IMFRemoteAsyncCallback, 0xa27003d0, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e);
   4341 #if defined(__cplusplus) && !defined(CINTERFACE)
   4342 MIDL_INTERFACE("a27003d0-2354-4f2a-8d6a-ab7cff15437e")
   4343 IMFRemoteAsyncCallback : public IUnknown
   4344 {
   4345     virtual HRESULT STDMETHODCALLTYPE Invoke(
   4346         HRESULT hr,
   4347         IUnknown *pRemoteResult) = 0;
   4348 
   4349 };
   4350 #ifdef __CRT_UUID_DECL
   4351 __CRT_UUID_DECL(IMFRemoteAsyncCallback, 0xa27003d0, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e)
   4352 #endif
   4353 #else
   4354 typedef struct IMFRemoteAsyncCallbackVtbl {
   4355     BEGIN_INTERFACE
   4356 
   4357     /*** IUnknown methods ***/
   4358     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4359         IMFRemoteAsyncCallback *This,
   4360         REFIID riid,
   4361         void **ppvObject);
   4362 
   4363     ULONG (STDMETHODCALLTYPE *AddRef)(
   4364         IMFRemoteAsyncCallback *This);
   4365 
   4366     ULONG (STDMETHODCALLTYPE *Release)(
   4367         IMFRemoteAsyncCallback *This);
   4368 
   4369     /*** IMFRemoteAsyncCallback methods ***/
   4370     HRESULT (STDMETHODCALLTYPE *Invoke)(
   4371         IMFRemoteAsyncCallback *This,
   4372         HRESULT hr,
   4373         IUnknown *pRemoteResult);
   4374 
   4375     END_INTERFACE
   4376 } IMFRemoteAsyncCallbackVtbl;
   4377 
   4378 interface IMFRemoteAsyncCallback {
   4379     CONST_VTBL IMFRemoteAsyncCallbackVtbl* lpVtbl;
   4380 };
   4381 
   4382 #ifdef COBJMACROS
   4383 #ifndef WIDL_C_INLINE_WRAPPERS
   4384 /*** IUnknown methods ***/
   4385 #define IMFRemoteAsyncCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4386 #define IMFRemoteAsyncCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
   4387 #define IMFRemoteAsyncCallback_Release(This) (This)->lpVtbl->Release(This)
   4388 /*** IMFRemoteAsyncCallback methods ***/
   4389 #define IMFRemoteAsyncCallback_Invoke(This,hr,pRemoteResult) (This)->lpVtbl->Invoke(This,hr,pRemoteResult)
   4390 #else
   4391 /*** IUnknown methods ***/
   4392 static inline HRESULT IMFRemoteAsyncCallback_QueryInterface(IMFRemoteAsyncCallback* This,REFIID riid,void **ppvObject) {
   4393     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4394 }
   4395 static inline ULONG IMFRemoteAsyncCallback_AddRef(IMFRemoteAsyncCallback* This) {
   4396     return This->lpVtbl->AddRef(This);
   4397 }
   4398 static inline ULONG IMFRemoteAsyncCallback_Release(IMFRemoteAsyncCallback* This) {
   4399     return This->lpVtbl->Release(This);
   4400 }
   4401 /*** IMFRemoteAsyncCallback methods ***/
   4402 static inline HRESULT IMFRemoteAsyncCallback_Invoke(IMFRemoteAsyncCallback* This,HRESULT hr,IUnknown *pRemoteResult) {
   4403     return This->lpVtbl->Invoke(This,hr,pRemoteResult);
   4404 }
   4405 #endif
   4406 #endif
   4407 
   4408 #endif
   4409 
   4410 
   4411 #endif  /* __IMFRemoteAsyncCallback_INTERFACE_DEFINED__ */
   4412 
   4413 #endif
   4414 
   4415 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   4416 
   4417 typedef enum _MFBYTESTREAM_SEEK_ORIGIN {
   4418     msoBegin = 0,
   4419     msoCurrent = 1
   4420 } MFBYTESTREAM_SEEK_ORIGIN;
   4421 
   4422 /*****************************************************************************
   4423  * IMFByteStream interface
   4424  */
   4425 #ifndef __IMFByteStream_INTERFACE_DEFINED__
   4426 #define __IMFByteStream_INTERFACE_DEFINED__
   4427 
   4428 DEFINE_GUID(IID_IMFByteStream, 0xad4c1b00, 0x4bf7, 0x422f, 0x91,0x75, 0x75,0x66,0x93,0xd9,0x13,0x0d);
   4429 #if defined(__cplusplus) && !defined(CINTERFACE)
   4430 MIDL_INTERFACE("ad4c1b00-4bf7-422f-9175-756693d9130d")
   4431 IMFByteStream : public IUnknown
   4432 {
   4433     virtual HRESULT STDMETHODCALLTYPE GetCapabilities(
   4434         DWORD *pdwCapabilities) = 0;
   4435 
   4436     virtual HRESULT STDMETHODCALLTYPE GetLength(
   4437         QWORD *pqwLength) = 0;
   4438 
   4439     virtual HRESULT STDMETHODCALLTYPE SetLength(
   4440         QWORD qwLength) = 0;
   4441 
   4442     virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition(
   4443         QWORD *pqwPosition) = 0;
   4444 
   4445     virtual HRESULT STDMETHODCALLTYPE SetCurrentPosition(
   4446         QWORD qwPosition) = 0;
   4447 
   4448     virtual HRESULT STDMETHODCALLTYPE IsEndOfStream(
   4449         WINBOOL *pfEndOfStream) = 0;
   4450 
   4451     virtual HRESULT STDMETHODCALLTYPE Read(
   4452         BYTE *pb,
   4453         ULONG cb,
   4454         ULONG *pcbRead) = 0;
   4455 
   4456     virtual HRESULT STDMETHODCALLTYPE BeginRead(
   4457         BYTE *pb,
   4458         ULONG cb,
   4459         IMFAsyncCallback *pCallback,
   4460         IUnknown *punkState) = 0;
   4461 
   4462     virtual HRESULT STDMETHODCALLTYPE EndRead(
   4463         IMFAsyncResult *pResult,
   4464         ULONG *pcbRead) = 0;
   4465 
   4466     virtual HRESULT STDMETHODCALLTYPE Write(
   4467         const BYTE *pb,
   4468         ULONG cb,
   4469         ULONG *pcbWritten) = 0;
   4470 
   4471     virtual HRESULT STDMETHODCALLTYPE BeginWrite(
   4472         const BYTE *pb,
   4473         ULONG cb,
   4474         IMFAsyncCallback *pCallback,
   4475         IUnknown *punkState) = 0;
   4476 
   4477     virtual HRESULT STDMETHODCALLTYPE EndWrite(
   4478         IMFAsyncResult *pResult,
   4479         ULONG *pcbWritten) = 0;
   4480 
   4481     virtual HRESULT STDMETHODCALLTYPE Seek(
   4482         MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,
   4483         LONGLONG llSeekOffset,
   4484         DWORD dwSeekFlags,
   4485         QWORD *pqwCurrentPosition) = 0;
   4486 
   4487     virtual HRESULT STDMETHODCALLTYPE Flush(
   4488         ) = 0;
   4489 
   4490     virtual HRESULT STDMETHODCALLTYPE Close(
   4491         ) = 0;
   4492 
   4493 };
   4494 #ifdef __CRT_UUID_DECL
   4495 __CRT_UUID_DECL(IMFByteStream, 0xad4c1b00, 0x4bf7, 0x422f, 0x91,0x75, 0x75,0x66,0x93,0xd9,0x13,0x0d)
   4496 #endif
   4497 #else
   4498 typedef struct IMFByteStreamVtbl {
   4499     BEGIN_INTERFACE
   4500 
   4501     /*** IUnknown methods ***/
   4502     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4503         IMFByteStream *This,
   4504         REFIID riid,
   4505         void **ppvObject);
   4506 
   4507     ULONG (STDMETHODCALLTYPE *AddRef)(
   4508         IMFByteStream *This);
   4509 
   4510     ULONG (STDMETHODCALLTYPE *Release)(
   4511         IMFByteStream *This);
   4512 
   4513     /*** IMFByteStream methods ***/
   4514     HRESULT (STDMETHODCALLTYPE *GetCapabilities)(
   4515         IMFByteStream *This,
   4516         DWORD *pdwCapabilities);
   4517 
   4518     HRESULT (STDMETHODCALLTYPE *GetLength)(
   4519         IMFByteStream *This,
   4520         QWORD *pqwLength);
   4521 
   4522     HRESULT (STDMETHODCALLTYPE *SetLength)(
   4523         IMFByteStream *This,
   4524         QWORD qwLength);
   4525 
   4526     HRESULT (STDMETHODCALLTYPE *GetCurrentPosition)(
   4527         IMFByteStream *This,
   4528         QWORD *pqwPosition);
   4529 
   4530     HRESULT (STDMETHODCALLTYPE *SetCurrentPosition)(
   4531         IMFByteStream *This,
   4532         QWORD qwPosition);
   4533 
   4534     HRESULT (STDMETHODCALLTYPE *IsEndOfStream)(
   4535         IMFByteStream *This,
   4536         WINBOOL *pfEndOfStream);
   4537 
   4538     HRESULT (STDMETHODCALLTYPE *Read)(
   4539         IMFByteStream *This,
   4540         BYTE *pb,
   4541         ULONG cb,
   4542         ULONG *pcbRead);
   4543 
   4544     HRESULT (STDMETHODCALLTYPE *BeginRead)(
   4545         IMFByteStream *This,
   4546         BYTE *pb,
   4547         ULONG cb,
   4548         IMFAsyncCallback *pCallback,
   4549         IUnknown *punkState);
   4550 
   4551     HRESULT (STDMETHODCALLTYPE *EndRead)(
   4552         IMFByteStream *This,
   4553         IMFAsyncResult *pResult,
   4554         ULONG *pcbRead);
   4555 
   4556     HRESULT (STDMETHODCALLTYPE *Write)(
   4557         IMFByteStream *This,
   4558         const BYTE *pb,
   4559         ULONG cb,
   4560         ULONG *pcbWritten);
   4561 
   4562     HRESULT (STDMETHODCALLTYPE *BeginWrite)(
   4563         IMFByteStream *This,
   4564         const BYTE *pb,
   4565         ULONG cb,
   4566         IMFAsyncCallback *pCallback,
   4567         IUnknown *punkState);
   4568 
   4569     HRESULT (STDMETHODCALLTYPE *EndWrite)(
   4570         IMFByteStream *This,
   4571         IMFAsyncResult *pResult,
   4572         ULONG *pcbWritten);
   4573 
   4574     HRESULT (STDMETHODCALLTYPE *Seek)(
   4575         IMFByteStream *This,
   4576         MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,
   4577         LONGLONG llSeekOffset,
   4578         DWORD dwSeekFlags,
   4579         QWORD *pqwCurrentPosition);
   4580 
   4581     HRESULT (STDMETHODCALLTYPE *Flush)(
   4582         IMFByteStream *This);
   4583 
   4584     HRESULT (STDMETHODCALLTYPE *Close)(
   4585         IMFByteStream *This);
   4586 
   4587     END_INTERFACE
   4588 } IMFByteStreamVtbl;
   4589 
   4590 interface IMFByteStream {
   4591     CONST_VTBL IMFByteStreamVtbl* lpVtbl;
   4592 };
   4593 
   4594 #ifdef COBJMACROS
   4595 #ifndef WIDL_C_INLINE_WRAPPERS
   4596 /*** IUnknown methods ***/
   4597 #define IMFByteStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4598 #define IMFByteStream_AddRef(This) (This)->lpVtbl->AddRef(This)
   4599 #define IMFByteStream_Release(This) (This)->lpVtbl->Release(This)
   4600 /*** IMFByteStream methods ***/
   4601 #define IMFByteStream_GetCapabilities(This,pdwCapabilities) (This)->lpVtbl->GetCapabilities(This,pdwCapabilities)
   4602 #define IMFByteStream_GetLength(This,pqwLength) (This)->lpVtbl->GetLength(This,pqwLength)
   4603 #define IMFByteStream_SetLength(This,qwLength) (This)->lpVtbl->SetLength(This,qwLength)
   4604 #define IMFByteStream_GetCurrentPosition(This,pqwPosition) (This)->lpVtbl->GetCurrentPosition(This,pqwPosition)
   4605 #define IMFByteStream_SetCurrentPosition(This,qwPosition) (This)->lpVtbl->SetCurrentPosition(This,qwPosition)
   4606 #define IMFByteStream_IsEndOfStream(This,pfEndOfStream) (This)->lpVtbl->IsEndOfStream(This,pfEndOfStream)
   4607 #define IMFByteStream_Read(This,pb,cb,pcbRead) (This)->lpVtbl->Read(This,pb,cb,pcbRead)
   4608 #define IMFByteStream_BeginRead(This,pb,cb,pCallback,punkState) (This)->lpVtbl->BeginRead(This,pb,cb,pCallback,punkState)
   4609 #define IMFByteStream_EndRead(This,pResult,pcbRead) (This)->lpVtbl->EndRead(This,pResult,pcbRead)
   4610 #define IMFByteStream_Write(This,pb,cb,pcbWritten) (This)->lpVtbl->Write(This,pb,cb,pcbWritten)
   4611 #define IMFByteStream_BeginWrite(This,pb,cb,pCallback,punkState) (This)->lpVtbl->BeginWrite(This,pb,cb,pCallback,punkState)
   4612 #define IMFByteStream_EndWrite(This,pResult,pcbWritten) (This)->lpVtbl->EndWrite(This,pResult,pcbWritten)
   4613 #define IMFByteStream_Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition) (This)->lpVtbl->Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition)
   4614 #define IMFByteStream_Flush(This) (This)->lpVtbl->Flush(This)
   4615 #define IMFByteStream_Close(This) (This)->lpVtbl->Close(This)
   4616 #else
   4617 /*** IUnknown methods ***/
   4618 static inline HRESULT IMFByteStream_QueryInterface(IMFByteStream* This,REFIID riid,void **ppvObject) {
   4619     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4620 }
   4621 static inline ULONG IMFByteStream_AddRef(IMFByteStream* This) {
   4622     return This->lpVtbl->AddRef(This);
   4623 }
   4624 static inline ULONG IMFByteStream_Release(IMFByteStream* This) {
   4625     return This->lpVtbl->Release(This);
   4626 }
   4627 /*** IMFByteStream methods ***/
   4628 static inline HRESULT IMFByteStream_GetCapabilities(IMFByteStream* This,DWORD *pdwCapabilities) {
   4629     return This->lpVtbl->GetCapabilities(This,pdwCapabilities);
   4630 }
   4631 static inline HRESULT IMFByteStream_GetLength(IMFByteStream* This,QWORD *pqwLength) {
   4632     return This->lpVtbl->GetLength(This,pqwLength);
   4633 }
   4634 static inline HRESULT IMFByteStream_SetLength(IMFByteStream* This,QWORD qwLength) {
   4635     return This->lpVtbl->SetLength(This,qwLength);
   4636 }
   4637 static inline HRESULT IMFByteStream_GetCurrentPosition(IMFByteStream* This,QWORD *pqwPosition) {
   4638     return This->lpVtbl->GetCurrentPosition(This,pqwPosition);
   4639 }
   4640 static inline HRESULT IMFByteStream_SetCurrentPosition(IMFByteStream* This,QWORD qwPosition) {
   4641     return This->lpVtbl->SetCurrentPosition(This,qwPosition);
   4642 }
   4643 static inline HRESULT IMFByteStream_IsEndOfStream(IMFByteStream* This,WINBOOL *pfEndOfStream) {
   4644     return This->lpVtbl->IsEndOfStream(This,pfEndOfStream);
   4645 }
   4646 static inline HRESULT IMFByteStream_Read(IMFByteStream* This,BYTE *pb,ULONG cb,ULONG *pcbRead) {
   4647     return This->lpVtbl->Read(This,pb,cb,pcbRead);
   4648 }
   4649 static inline HRESULT IMFByteStream_BeginRead(IMFByteStream* This,BYTE *pb,ULONG cb,IMFAsyncCallback *pCallback,IUnknown *punkState) {
   4650     return This->lpVtbl->BeginRead(This,pb,cb,pCallback,punkState);
   4651 }
   4652 static inline HRESULT IMFByteStream_EndRead(IMFByteStream* This,IMFAsyncResult *pResult,ULONG *pcbRead) {
   4653     return This->lpVtbl->EndRead(This,pResult,pcbRead);
   4654 }
   4655 static inline HRESULT IMFByteStream_Write(IMFByteStream* This,const BYTE *pb,ULONG cb,ULONG *pcbWritten) {
   4656     return This->lpVtbl->Write(This,pb,cb,pcbWritten);
   4657 }
   4658 static inline HRESULT IMFByteStream_BeginWrite(IMFByteStream* This,const BYTE *pb,ULONG cb,IMFAsyncCallback *pCallback,IUnknown *punkState) {
   4659     return This->lpVtbl->BeginWrite(This,pb,cb,pCallback,punkState);
   4660 }
   4661 static inline HRESULT IMFByteStream_EndWrite(IMFByteStream* This,IMFAsyncResult *pResult,ULONG *pcbWritten) {
   4662     return This->lpVtbl->EndWrite(This,pResult,pcbWritten);
   4663 }
   4664 static inline HRESULT IMFByteStream_Seek(IMFByteStream* This,MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,LONGLONG llSeekOffset,DWORD dwSeekFlags,QWORD *pqwCurrentPosition) {
   4665     return This->lpVtbl->Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition);
   4666 }
   4667 static inline HRESULT IMFByteStream_Flush(IMFByteStream* This) {
   4668     return This->lpVtbl->Flush(This);
   4669 }
   4670 static inline HRESULT IMFByteStream_Close(IMFByteStream* This) {
   4671     return This->lpVtbl->Close(This);
   4672 }
   4673 #endif
   4674 #endif
   4675 
   4676 #endif
   4677 
   4678 HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteBeginRead_Proxy(
   4679     IMFByteStream* This,
   4680     ULONG cb,
   4681     IMFRemoteAsyncCallback *pCallback);
   4682 void __RPC_STUB IMFByteStream_RemoteBeginRead_Stub(
   4683     IRpcStubBuffer* This,
   4684     IRpcChannelBuffer* pRpcChannelBuffer,
   4685     PRPC_MESSAGE pRpcMessage,
   4686     DWORD* pdwStubPhase);
   4687 HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteEndRead_Proxy(
   4688     IMFByteStream* This,
   4689     IUnknown *punkResult,
   4690     BYTE *pb,
   4691     ULONG cb,
   4692     ULONG *pcbRead);
   4693 void __RPC_STUB IMFByteStream_RemoteEndRead_Stub(
   4694     IRpcStubBuffer* This,
   4695     IRpcChannelBuffer* pRpcChannelBuffer,
   4696     PRPC_MESSAGE pRpcMessage,
   4697     DWORD* pdwStubPhase);
   4698 HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteBeginWrite_Proxy(
   4699     IMFByteStream* This,
   4700     const BYTE *pb,
   4701     ULONG cb,
   4702     IMFRemoteAsyncCallback *pCallback);
   4703 void __RPC_STUB IMFByteStream_RemoteBeginWrite_Stub(
   4704     IRpcStubBuffer* This,
   4705     IRpcChannelBuffer* pRpcChannelBuffer,
   4706     PRPC_MESSAGE pRpcMessage,
   4707     DWORD* pdwStubPhase);
   4708 HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteEndWrite_Proxy(
   4709     IMFByteStream* This,
   4710     IUnknown *punkResult,
   4711     ULONG *pcbWritten);
   4712 void __RPC_STUB IMFByteStream_RemoteEndWrite_Stub(
   4713     IRpcStubBuffer* This,
   4714     IRpcChannelBuffer* pRpcChannelBuffer,
   4715     PRPC_MESSAGE pRpcMessage,
   4716     DWORD* pdwStubPhase);
   4717 HRESULT CALLBACK IMFByteStream_BeginRead_Proxy(
   4718     IMFByteStream* This,
   4719     BYTE *pb,
   4720     ULONG cb,
   4721     IMFAsyncCallback *pCallback,
   4722     IUnknown *punkState);
   4723 HRESULT __RPC_STUB IMFByteStream_BeginRead_Stub(
   4724     IMFByteStream* This,
   4725     ULONG cb,
   4726     IMFRemoteAsyncCallback *pCallback);
   4727 HRESULT CALLBACK IMFByteStream_EndRead_Proxy(
   4728     IMFByteStream* This,
   4729     IMFAsyncResult *pResult,
   4730     ULONG *pcbRead);
   4731 HRESULT __RPC_STUB IMFByteStream_EndRead_Stub(
   4732     IMFByteStream* This,
   4733     IUnknown *punkResult,
   4734     BYTE *pb,
   4735     ULONG cb,
   4736     ULONG *pcbRead);
   4737 HRESULT CALLBACK IMFByteStream_BeginWrite_Proxy(
   4738     IMFByteStream* This,
   4739     const BYTE *pb,
   4740     ULONG cb,
   4741     IMFAsyncCallback *pCallback,
   4742     IUnknown *punkState);
   4743 HRESULT __RPC_STUB IMFByteStream_BeginWrite_Stub(
   4744     IMFByteStream* This,
   4745     const BYTE *pb,
   4746     ULONG cb,
   4747     IMFRemoteAsyncCallback *pCallback);
   4748 HRESULT CALLBACK IMFByteStream_EndWrite_Proxy(
   4749     IMFByteStream* This,
   4750     IMFAsyncResult *pResult,
   4751     ULONG *pcbWritten);
   4752 HRESULT __RPC_STUB IMFByteStream_EndWrite_Stub(
   4753     IMFByteStream* This,
   4754     IUnknown *punkResult,
   4755     ULONG *pcbWritten);
   4756 
   4757 #endif  /* __IMFByteStream_INTERFACE_DEFINED__ */
   4758 
   4759 
   4760 #define MFBYTESTREAM_IS_READABLE 0x00000001
   4761 #define MFBYTESTREAM_IS_WRITABLE 0x00000002
   4762 #define MFBYTESTREAM_IS_SEEKABLE 0x00000004
   4763 #define MFBYTESTREAM_IS_REMOTE 0x00000008
   4764 #define MFBYTESTREAM_IS_DIRECTORY 0x00000080
   4765 #define MFBYTESTREAM_HAS_SLOW_SEEK 0x00000100
   4766 #define MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED 0x00000200
   4767 #if WINVER >= _WIN32_WINNT_WIN7
   4768 #define MFBYTESTREAM_SHARE_WRITE 0x00000400
   4769 #endif
   4770 #if WINVER >= _WIN32_WINNT_WIN8
   4771 #define MFBYTESTREAM_DOES_NOT_USE_NETWORK 0x00000800
   4772 #endif
   4773 
   4774 #define MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO 0x00000001
   4775 
   4776 EXTERN_GUID( MF_BYTESTREAM_ORIGIN_NAME, 0xfc358288, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
   4777 EXTERN_GUID( MF_BYTESTREAM_CONTENT_TYPE, 0xfc358289, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
   4778 EXTERN_GUID( MF_BYTESTREAM_DURATION, 0xfc35828a, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
   4779 EXTERN_GUID( MF_BYTESTREAM_LAST_MODIFIED_TIME, 0xfc35828b, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
   4780 #if (WINVER >= _WIN32_WINNT_WIN7)
   4781 EXTERN_GUID( MF_BYTESTREAM_IFO_FILE_URI, 0xfc35828c, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
   4782 EXTERN_GUID( MF_BYTESTREAM_DLNA_PROFILE_ID, 0xfc35828d, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
   4783 EXTERN_GUID( MF_BYTESTREAM_EFFECTIVE_URL, 0x9afa0209, 0x89d1, 0x42af, 0x84, 0x56, 0x1d, 0xe6, 0xb5, 0x62, 0xd6, 0x91);
   4784 EXTERN_GUID( MF_BYTESTREAM_TRANSCODED, 0xb6c5c282, 0x4dc9, 0x4db9, 0xab, 0x48, 0xcf, 0x3b, 0x6d, 0x8b, 0xc5, 0xe0 );
   4785 #endif
   4786 #endif
   4787 
   4788 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   4789 EXTERN_GUID(CLSID_MFByteStreamProxyClassFactory, 0x770e8e77, 0x4916, 0x441c, 0xa9, 0xa7, 0xb3, 0x42, 0xd0, 0xee, 0xbc, 0x71 );
   4790 
   4791 /*****************************************************************************
   4792  * IMFByteStreamProxyClassFactory interface
   4793  */
   4794 #ifndef __IMFByteStreamProxyClassFactory_INTERFACE_DEFINED__
   4795 #define __IMFByteStreamProxyClassFactory_INTERFACE_DEFINED__
   4796 
   4797 DEFINE_GUID(IID_IMFByteStreamProxyClassFactory, 0xa6b43f84, 0x5c0a, 0x42e8, 0xa4,0x4d, 0xb1,0x85,0x7a,0x76,0x99,0x2f);
   4798 #if defined(__cplusplus) && !defined(CINTERFACE)
   4799 MIDL_INTERFACE("a6b43f84-5c0a-42e8-a44d-b1857a76992f")
   4800 IMFByteStreamProxyClassFactory : public IUnknown
   4801 {
   4802     virtual HRESULT STDMETHODCALLTYPE CreateByteStreamProxy(
   4803         IMFByteStream *pByteStream,
   4804         IMFAttributes *pAttributes,
   4805         REFIID riid,
   4806         LPVOID *ppvObject) = 0;
   4807 
   4808 };
   4809 #ifdef __CRT_UUID_DECL
   4810 __CRT_UUID_DECL(IMFByteStreamProxyClassFactory, 0xa6b43f84, 0x5c0a, 0x42e8, 0xa4,0x4d, 0xb1,0x85,0x7a,0x76,0x99,0x2f)
   4811 #endif
   4812 #else
   4813 typedef struct IMFByteStreamProxyClassFactoryVtbl {
   4814     BEGIN_INTERFACE
   4815 
   4816     /*** IUnknown methods ***/
   4817     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4818         IMFByteStreamProxyClassFactory *This,
   4819         REFIID riid,
   4820         void **ppvObject);
   4821 
   4822     ULONG (STDMETHODCALLTYPE *AddRef)(
   4823         IMFByteStreamProxyClassFactory *This);
   4824 
   4825     ULONG (STDMETHODCALLTYPE *Release)(
   4826         IMFByteStreamProxyClassFactory *This);
   4827 
   4828     /*** IMFByteStreamProxyClassFactory methods ***/
   4829     HRESULT (STDMETHODCALLTYPE *CreateByteStreamProxy)(
   4830         IMFByteStreamProxyClassFactory *This,
   4831         IMFByteStream *pByteStream,
   4832         IMFAttributes *pAttributes,
   4833         REFIID riid,
   4834         LPVOID *ppvObject);
   4835 
   4836     END_INTERFACE
   4837 } IMFByteStreamProxyClassFactoryVtbl;
   4838 
   4839 interface IMFByteStreamProxyClassFactory {
   4840     CONST_VTBL IMFByteStreamProxyClassFactoryVtbl* lpVtbl;
   4841 };
   4842 
   4843 #ifdef COBJMACROS
   4844 #ifndef WIDL_C_INLINE_WRAPPERS
   4845 /*** IUnknown methods ***/
   4846 #define IMFByteStreamProxyClassFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4847 #define IMFByteStreamProxyClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
   4848 #define IMFByteStreamProxyClassFactory_Release(This) (This)->lpVtbl->Release(This)
   4849 /*** IMFByteStreamProxyClassFactory methods ***/
   4850 #define IMFByteStreamProxyClassFactory_CreateByteStreamProxy(This,pByteStream,pAttributes,riid,ppvObject) (This)->lpVtbl->CreateByteStreamProxy(This,pByteStream,pAttributes,riid,ppvObject)
   4851 #else
   4852 /*** IUnknown methods ***/
   4853 static inline HRESULT IMFByteStreamProxyClassFactory_QueryInterface(IMFByteStreamProxyClassFactory* This,REFIID riid,void **ppvObject) {
   4854     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4855 }
   4856 static inline ULONG IMFByteStreamProxyClassFactory_AddRef(IMFByteStreamProxyClassFactory* This) {
   4857     return This->lpVtbl->AddRef(This);
   4858 }
   4859 static inline ULONG IMFByteStreamProxyClassFactory_Release(IMFByteStreamProxyClassFactory* This) {
   4860     return This->lpVtbl->Release(This);
   4861 }
   4862 /*** IMFByteStreamProxyClassFactory methods ***/
   4863 static inline HRESULT IMFByteStreamProxyClassFactory_CreateByteStreamProxy(IMFByteStreamProxyClassFactory* This,IMFByteStream *pByteStream,IMFAttributes *pAttributes,REFIID riid,LPVOID *ppvObject) {
   4864     return This->lpVtbl->CreateByteStreamProxy(This,pByteStream,pAttributes,riid,ppvObject);
   4865 }
   4866 #endif
   4867 #endif
   4868 
   4869 #endif
   4870 
   4871 
   4872 #endif  /* __IMFByteStreamProxyClassFactory_INTERFACE_DEFINED__ */
   4873 
   4874 
   4875 typedef enum __WIDL_mfobjects_generated_name_00000024 {
   4876     MF_ACCESSMODE_READ = 1,
   4877     MF_ACCESSMODE_WRITE = 2,
   4878     MF_ACCESSMODE_READWRITE = 3
   4879 } MF_FILE_ACCESSMODE;
   4880 
   4881 typedef enum __WIDL_mfobjects_generated_name_00000025 {
   4882     MF_OPENMODE_FAIL_IF_NOT_EXIST = 0,
   4883     MF_OPENMODE_FAIL_IF_EXIST = 1,
   4884     MF_OPENMODE_RESET_IF_EXIST = 2,
   4885     MF_OPENMODE_APPEND_IF_EXIST = 3,
   4886     MF_OPENMODE_DELETE_IF_EXIST = 4
   4887 } MF_FILE_OPENMODE;
   4888 
   4889 typedef enum __WIDL_mfobjects_generated_name_00000026 {
   4890     MF_FILEFLAGS_NONE = 0x0,
   4891     MF_FILEFLAGS_NOBUFFERING = 0x1,
   4892     MF_FILEFLAGS_ALLOW_WRITE_SHARING = 0x2
   4893 } MF_FILE_FLAGS;
   4894 #endif
   4895 
   4896 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   4897 /*****************************************************************************
   4898  * IMFSampleOutputStream interface
   4899  */
   4900 #ifndef __IMFSampleOutputStream_INTERFACE_DEFINED__
   4901 #define __IMFSampleOutputStream_INTERFACE_DEFINED__
   4902 
   4903 DEFINE_GUID(IID_IMFSampleOutputStream, 0x8feed468, 0x6f7e, 0x440d, 0x86,0x9a, 0x49,0xbd,0xd2,0x83,0xad,0x0d);
   4904 #if defined(__cplusplus) && !defined(CINTERFACE)
   4905 MIDL_INTERFACE("8feed468-6f7e-440d-869a-49bdd283ad0d")
   4906 IMFSampleOutputStream : public IUnknown
   4907 {
   4908     virtual HRESULT STDMETHODCALLTYPE BeginWriteSample(
   4909         IMFSample *pSample,
   4910         IMFAsyncCallback *pCallback,
   4911         IUnknown *punkState) = 0;
   4912 
   4913     virtual HRESULT STDMETHODCALLTYPE EndWriteSample(
   4914         IMFAsyncResult *pResult) = 0;
   4915 
   4916     virtual HRESULT STDMETHODCALLTYPE Close(
   4917         ) = 0;
   4918 
   4919 };
   4920 #ifdef __CRT_UUID_DECL
   4921 __CRT_UUID_DECL(IMFSampleOutputStream, 0x8feed468, 0x6f7e, 0x440d, 0x86,0x9a, 0x49,0xbd,0xd2,0x83,0xad,0x0d)
   4922 #endif
   4923 #else
   4924 typedef struct IMFSampleOutputStreamVtbl {
   4925     BEGIN_INTERFACE
   4926 
   4927     /*** IUnknown methods ***/
   4928     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4929         IMFSampleOutputStream *This,
   4930         REFIID riid,
   4931         void **ppvObject);
   4932 
   4933     ULONG (STDMETHODCALLTYPE *AddRef)(
   4934         IMFSampleOutputStream *This);
   4935 
   4936     ULONG (STDMETHODCALLTYPE *Release)(
   4937         IMFSampleOutputStream *This);
   4938 
   4939     /*** IMFSampleOutputStream methods ***/
   4940     HRESULT (STDMETHODCALLTYPE *BeginWriteSample)(
   4941         IMFSampleOutputStream *This,
   4942         IMFSample *pSample,
   4943         IMFAsyncCallback *pCallback,
   4944         IUnknown *punkState);
   4945 
   4946     HRESULT (STDMETHODCALLTYPE *EndWriteSample)(
   4947         IMFSampleOutputStream *This,
   4948         IMFAsyncResult *pResult);
   4949 
   4950     HRESULT (STDMETHODCALLTYPE *Close)(
   4951         IMFSampleOutputStream *This);
   4952 
   4953     END_INTERFACE
   4954 } IMFSampleOutputStreamVtbl;
   4955 
   4956 interface IMFSampleOutputStream {
   4957     CONST_VTBL IMFSampleOutputStreamVtbl* lpVtbl;
   4958 };
   4959 
   4960 #ifdef COBJMACROS
   4961 #ifndef WIDL_C_INLINE_WRAPPERS
   4962 /*** IUnknown methods ***/
   4963 #define IMFSampleOutputStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4964 #define IMFSampleOutputStream_AddRef(This) (This)->lpVtbl->AddRef(This)
   4965 #define IMFSampleOutputStream_Release(This) (This)->lpVtbl->Release(This)
   4966 /*** IMFSampleOutputStream methods ***/
   4967 #define IMFSampleOutputStream_BeginWriteSample(This,pSample,pCallback,punkState) (This)->lpVtbl->BeginWriteSample(This,pSample,pCallback,punkState)
   4968 #define IMFSampleOutputStream_EndWriteSample(This,pResult) (This)->lpVtbl->EndWriteSample(This,pResult)
   4969 #define IMFSampleOutputStream_Close(This) (This)->lpVtbl->Close(This)
   4970 #else
   4971 /*** IUnknown methods ***/
   4972 static inline HRESULT IMFSampleOutputStream_QueryInterface(IMFSampleOutputStream* This,REFIID riid,void **ppvObject) {
   4973     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4974 }
   4975 static inline ULONG IMFSampleOutputStream_AddRef(IMFSampleOutputStream* This) {
   4976     return This->lpVtbl->AddRef(This);
   4977 }
   4978 static inline ULONG IMFSampleOutputStream_Release(IMFSampleOutputStream* This) {
   4979     return This->lpVtbl->Release(This);
   4980 }
   4981 /*** IMFSampleOutputStream methods ***/
   4982 static inline HRESULT IMFSampleOutputStream_BeginWriteSample(IMFSampleOutputStream* This,IMFSample *pSample,IMFAsyncCallback *pCallback,IUnknown *punkState) {
   4983     return This->lpVtbl->BeginWriteSample(This,pSample,pCallback,punkState);
   4984 }
   4985 static inline HRESULT IMFSampleOutputStream_EndWriteSample(IMFSampleOutputStream* This,IMFAsyncResult *pResult) {
   4986     return This->lpVtbl->EndWriteSample(This,pResult);
   4987 }
   4988 static inline HRESULT IMFSampleOutputStream_Close(IMFSampleOutputStream* This) {
   4989     return This->lpVtbl->Close(This);
   4990 }
   4991 #endif
   4992 #endif
   4993 
   4994 #endif
   4995 
   4996 
   4997 #endif  /* __IMFSampleOutputStream_INTERFACE_DEFINED__ */
   4998 
   4999 
   5000 /*****************************************************************************
   5001  * IMFCollection interface
   5002  */
   5003 #ifndef __IMFCollection_INTERFACE_DEFINED__
   5004 #define __IMFCollection_INTERFACE_DEFINED__
   5005 
   5006 DEFINE_GUID(IID_IMFCollection, 0x5bc8a76b, 0x869a, 0x46a3, 0x9b,0x03, 0xfa,0x21,0x8a,0x66,0xae,0xbe);
   5007 #if defined(__cplusplus) && !defined(CINTERFACE)
   5008 MIDL_INTERFACE("5bc8a76b-869a-46a3-9b03-fa218a66aebe")
   5009 IMFCollection : public IUnknown
   5010 {
   5011     virtual HRESULT STDMETHODCALLTYPE GetElementCount(
   5012         DWORD *pcElements) = 0;
   5013 
   5014     virtual HRESULT STDMETHODCALLTYPE GetElement(
   5015         DWORD dwElementIndex,
   5016         IUnknown **ppUnkElement) = 0;
   5017 
   5018     virtual HRESULT STDMETHODCALLTYPE AddElement(
   5019         IUnknown *pUnkElement) = 0;
   5020 
   5021     virtual HRESULT STDMETHODCALLTYPE RemoveElement(
   5022         DWORD dwElementIndex,
   5023         IUnknown **ppUnkElement) = 0;
   5024 
   5025     virtual HRESULT STDMETHODCALLTYPE InsertElementAt(
   5026         DWORD dwIndex,
   5027         IUnknown *pUnknown) = 0;
   5028 
   5029     virtual HRESULT STDMETHODCALLTYPE RemoveAllElements(
   5030         ) = 0;
   5031 
   5032 };
   5033 #ifdef __CRT_UUID_DECL
   5034 __CRT_UUID_DECL(IMFCollection, 0x5bc8a76b, 0x869a, 0x46a3, 0x9b,0x03, 0xfa,0x21,0x8a,0x66,0xae,0xbe)
   5035 #endif
   5036 #else
   5037 typedef struct IMFCollectionVtbl {
   5038     BEGIN_INTERFACE
   5039 
   5040     /*** IUnknown methods ***/
   5041     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5042         IMFCollection *This,
   5043         REFIID riid,
   5044         void **ppvObject);
   5045 
   5046     ULONG (STDMETHODCALLTYPE *AddRef)(
   5047         IMFCollection *This);
   5048 
   5049     ULONG (STDMETHODCALLTYPE *Release)(
   5050         IMFCollection *This);
   5051 
   5052     /*** IMFCollection methods ***/
   5053     HRESULT (STDMETHODCALLTYPE *GetElementCount)(
   5054         IMFCollection *This,
   5055         DWORD *pcElements);
   5056 
   5057     HRESULT (STDMETHODCALLTYPE *GetElement)(
   5058         IMFCollection *This,
   5059         DWORD dwElementIndex,
   5060         IUnknown **ppUnkElement);
   5061 
   5062     HRESULT (STDMETHODCALLTYPE *AddElement)(
   5063         IMFCollection *This,
   5064         IUnknown *pUnkElement);
   5065 
   5066     HRESULT (STDMETHODCALLTYPE *RemoveElement)(
   5067         IMFCollection *This,
   5068         DWORD dwElementIndex,
   5069         IUnknown **ppUnkElement);
   5070 
   5071     HRESULT (STDMETHODCALLTYPE *InsertElementAt)(
   5072         IMFCollection *This,
   5073         DWORD dwIndex,
   5074         IUnknown *pUnknown);
   5075 
   5076     HRESULT (STDMETHODCALLTYPE *RemoveAllElements)(
   5077         IMFCollection *This);
   5078 
   5079     END_INTERFACE
   5080 } IMFCollectionVtbl;
   5081 
   5082 interface IMFCollection {
   5083     CONST_VTBL IMFCollectionVtbl* lpVtbl;
   5084 };
   5085 
   5086 #ifdef COBJMACROS
   5087 #ifndef WIDL_C_INLINE_WRAPPERS
   5088 /*** IUnknown methods ***/
   5089 #define IMFCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5090 #define IMFCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
   5091 #define IMFCollection_Release(This) (This)->lpVtbl->Release(This)
   5092 /*** IMFCollection methods ***/
   5093 #define IMFCollection_GetElementCount(This,pcElements) (This)->lpVtbl->GetElementCount(This,pcElements)
   5094 #define IMFCollection_GetElement(This,dwElementIndex,ppUnkElement) (This)->lpVtbl->GetElement(This,dwElementIndex,ppUnkElement)
   5095 #define IMFCollection_AddElement(This,pUnkElement) (This)->lpVtbl->AddElement(This,pUnkElement)
   5096 #define IMFCollection_RemoveElement(This,dwElementIndex,ppUnkElement) (This)->lpVtbl->RemoveElement(This,dwElementIndex,ppUnkElement)
   5097 #define IMFCollection_InsertElementAt(This,dwIndex,pUnknown) (This)->lpVtbl->InsertElementAt(This,dwIndex,pUnknown)
   5098 #define IMFCollection_RemoveAllElements(This) (This)->lpVtbl->RemoveAllElements(This)
   5099 #else
   5100 /*** IUnknown methods ***/
   5101 static inline HRESULT IMFCollection_QueryInterface(IMFCollection* This,REFIID riid,void **ppvObject) {
   5102     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5103 }
   5104 static inline ULONG IMFCollection_AddRef(IMFCollection* This) {
   5105     return This->lpVtbl->AddRef(This);
   5106 }
   5107 static inline ULONG IMFCollection_Release(IMFCollection* This) {
   5108     return This->lpVtbl->Release(This);
   5109 }
   5110 /*** IMFCollection methods ***/
   5111 static inline HRESULT IMFCollection_GetElementCount(IMFCollection* This,DWORD *pcElements) {
   5112     return This->lpVtbl->GetElementCount(This,pcElements);
   5113 }
   5114 static inline HRESULT IMFCollection_GetElement(IMFCollection* This,DWORD dwElementIndex,IUnknown **ppUnkElement) {
   5115     return This->lpVtbl->GetElement(This,dwElementIndex,ppUnkElement);
   5116 }
   5117 static inline HRESULT IMFCollection_AddElement(IMFCollection* This,IUnknown *pUnkElement) {
   5118     return This->lpVtbl->AddElement(This,pUnkElement);
   5119 }
   5120 static inline HRESULT IMFCollection_RemoveElement(IMFCollection* This,DWORD dwElementIndex,IUnknown **ppUnkElement) {
   5121     return This->lpVtbl->RemoveElement(This,dwElementIndex,ppUnkElement);
   5122 }
   5123 static inline HRESULT IMFCollection_InsertElementAt(IMFCollection* This,DWORD dwIndex,IUnknown *pUnknown) {
   5124     return This->lpVtbl->InsertElementAt(This,dwIndex,pUnknown);
   5125 }
   5126 static inline HRESULT IMFCollection_RemoveAllElements(IMFCollection* This) {
   5127     return This->lpVtbl->RemoveAllElements(This);
   5128 }
   5129 #endif
   5130 #endif
   5131 
   5132 #endif
   5133 
   5134 
   5135 #endif  /* __IMFCollection_INTERFACE_DEFINED__ */
   5136 
   5137 
   5138 /*****************************************************************************
   5139  * IMFMediaEventQueue interface
   5140  */
   5141 #ifndef __IMFMediaEventQueue_INTERFACE_DEFINED__
   5142 #define __IMFMediaEventQueue_INTERFACE_DEFINED__
   5143 
   5144 DEFINE_GUID(IID_IMFMediaEventQueue, 0x36f846fc, 0x2256, 0x48b6, 0xb5,0x8e, 0xe2,0xb6,0x38,0x31,0x65,0x81);
   5145 #if defined(__cplusplus) && !defined(CINTERFACE)
   5146 MIDL_INTERFACE("36f846fc-2256-48b6-b58e-e2b638316581")
   5147 IMFMediaEventQueue : public IUnknown
   5148 {
   5149     virtual HRESULT STDMETHODCALLTYPE GetEvent(
   5150         DWORD dwFlags,
   5151         IMFMediaEvent **ppEvent) = 0;
   5152 
   5153     virtual HRESULT STDMETHODCALLTYPE BeginGetEvent(
   5154         IMFAsyncCallback *pCallback,
   5155         IUnknown *punkState) = 0;
   5156 
   5157     virtual HRESULT STDMETHODCALLTYPE EndGetEvent(
   5158         IMFAsyncResult *pResult,
   5159         IMFMediaEvent **ppEvent) = 0;
   5160 
   5161     virtual HRESULT STDMETHODCALLTYPE QueueEvent(
   5162         IMFMediaEvent *pEvent) = 0;
   5163 
   5164     virtual HRESULT STDMETHODCALLTYPE QueueEventParamVar(
   5165         MediaEventType met,
   5166         REFGUID guidExtendedType,
   5167         HRESULT hrStatus,
   5168         const PROPVARIANT *pvValue) = 0;
   5169 
   5170     virtual HRESULT STDMETHODCALLTYPE QueueEventParamUnk(
   5171         MediaEventType met,
   5172         REFGUID guidExtendedType,
   5173         HRESULT hrStatus,
   5174         IUnknown *pUnk) = 0;
   5175 
   5176     virtual HRESULT STDMETHODCALLTYPE Shutdown(
   5177         ) = 0;
   5178 
   5179 };
   5180 #ifdef __CRT_UUID_DECL
   5181 __CRT_UUID_DECL(IMFMediaEventQueue, 0x36f846fc, 0x2256, 0x48b6, 0xb5,0x8e, 0xe2,0xb6,0x38,0x31,0x65,0x81)
   5182 #endif
   5183 #else
   5184 typedef struct IMFMediaEventQueueVtbl {
   5185     BEGIN_INTERFACE
   5186 
   5187     /*** IUnknown methods ***/
   5188     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5189         IMFMediaEventQueue *This,
   5190         REFIID riid,
   5191         void **ppvObject);
   5192 
   5193     ULONG (STDMETHODCALLTYPE *AddRef)(
   5194         IMFMediaEventQueue *This);
   5195 
   5196     ULONG (STDMETHODCALLTYPE *Release)(
   5197         IMFMediaEventQueue *This);
   5198 
   5199     /*** IMFMediaEventQueue methods ***/
   5200     HRESULT (STDMETHODCALLTYPE *GetEvent)(
   5201         IMFMediaEventQueue *This,
   5202         DWORD dwFlags,
   5203         IMFMediaEvent **ppEvent);
   5204 
   5205     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
   5206         IMFMediaEventQueue *This,
   5207         IMFAsyncCallback *pCallback,
   5208         IUnknown *punkState);
   5209 
   5210     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
   5211         IMFMediaEventQueue *This,
   5212         IMFAsyncResult *pResult,
   5213         IMFMediaEvent **ppEvent);
   5214 
   5215     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
   5216         IMFMediaEventQueue *This,
   5217         IMFMediaEvent *pEvent);
   5218 
   5219     HRESULT (STDMETHODCALLTYPE *QueueEventParamVar)(
   5220         IMFMediaEventQueue *This,
   5221         MediaEventType met,
   5222         REFGUID guidExtendedType,
   5223         HRESULT hrStatus,
   5224         const PROPVARIANT *pvValue);
   5225 
   5226     HRESULT (STDMETHODCALLTYPE *QueueEventParamUnk)(
   5227         IMFMediaEventQueue *This,
   5228         MediaEventType met,
   5229         REFGUID guidExtendedType,
   5230         HRESULT hrStatus,
   5231         IUnknown *pUnk);
   5232 
   5233     HRESULT (STDMETHODCALLTYPE *Shutdown)(
   5234         IMFMediaEventQueue *This);
   5235 
   5236     END_INTERFACE
   5237 } IMFMediaEventQueueVtbl;
   5238 
   5239 interface IMFMediaEventQueue {
   5240     CONST_VTBL IMFMediaEventQueueVtbl* lpVtbl;
   5241 };
   5242 
   5243 #ifdef COBJMACROS
   5244 #ifndef WIDL_C_INLINE_WRAPPERS
   5245 /*** IUnknown methods ***/
   5246 #define IMFMediaEventQueue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5247 #define IMFMediaEventQueue_AddRef(This) (This)->lpVtbl->AddRef(This)
   5248 #define IMFMediaEventQueue_Release(This) (This)->lpVtbl->Release(This)
   5249 /*** IMFMediaEventQueue methods ***/
   5250 #define IMFMediaEventQueue_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
   5251 #define IMFMediaEventQueue_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
   5252 #define IMFMediaEventQueue_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
   5253 #define IMFMediaEventQueue_QueueEvent(This,pEvent) (This)->lpVtbl->QueueEvent(This,pEvent)
   5254 #define IMFMediaEventQueue_QueueEventParamVar(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEventParamVar(This,met,guidExtendedType,hrStatus,pvValue)
   5255 #define IMFMediaEventQueue_QueueEventParamUnk(This,met,guidExtendedType,hrStatus,pUnk) (This)->lpVtbl->QueueEventParamUnk(This,met,guidExtendedType,hrStatus,pUnk)
   5256 #define IMFMediaEventQueue_Shutdown(This) (This)->lpVtbl->Shutdown(This)
   5257 #else
   5258 /*** IUnknown methods ***/
   5259 static inline HRESULT IMFMediaEventQueue_QueryInterface(IMFMediaEventQueue* This,REFIID riid,void **ppvObject) {
   5260     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5261 }
   5262 static inline ULONG IMFMediaEventQueue_AddRef(IMFMediaEventQueue* This) {
   5263     return This->lpVtbl->AddRef(This);
   5264 }
   5265 static inline ULONG IMFMediaEventQueue_Release(IMFMediaEventQueue* This) {
   5266     return This->lpVtbl->Release(This);
   5267 }
   5268 /*** IMFMediaEventQueue methods ***/
   5269 static inline HRESULT IMFMediaEventQueue_GetEvent(IMFMediaEventQueue* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
   5270     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
   5271 }
   5272 static inline HRESULT IMFMediaEventQueue_BeginGetEvent(IMFMediaEventQueue* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
   5273     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
   5274 }
   5275 static inline HRESULT IMFMediaEventQueue_EndGetEvent(IMFMediaEventQueue* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
   5276     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
   5277 }
   5278 static inline HRESULT IMFMediaEventQueue_QueueEvent(IMFMediaEventQueue* This,IMFMediaEvent *pEvent) {
   5279     return This->lpVtbl->QueueEvent(This,pEvent);
   5280 }
   5281 static inline HRESULT IMFMediaEventQueue_QueueEventParamVar(IMFMediaEventQueue* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
   5282     return This->lpVtbl->QueueEventParamVar(This,met,guidExtendedType,hrStatus,pvValue);
   5283 }
   5284 static inline HRESULT IMFMediaEventQueue_QueueEventParamUnk(IMFMediaEventQueue* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,IUnknown *pUnk) {
   5285     return This->lpVtbl->QueueEventParamUnk(This,met,guidExtendedType,hrStatus,pUnk);
   5286 }
   5287 static inline HRESULT IMFMediaEventQueue_Shutdown(IMFMediaEventQueue* This) {
   5288     return This->lpVtbl->Shutdown(This);
   5289 }
   5290 #endif
   5291 #endif
   5292 
   5293 #endif
   5294 
   5295 
   5296 #endif  /* __IMFMediaEventQueue_INTERFACE_DEFINED__ */
   5297 
   5298 
   5299 /*****************************************************************************
   5300  * IMFActivate interface
   5301  */
   5302 #ifndef __IMFActivate_INTERFACE_DEFINED__
   5303 #define __IMFActivate_INTERFACE_DEFINED__
   5304 
   5305 DEFINE_GUID(IID_IMFActivate, 0x7fee9e9a, 0x4a89, 0x47a6, 0x89,0x9c, 0xb6,0xa5,0x3a,0x70,0xfb,0x67);
   5306 #if defined(__cplusplus) && !defined(CINTERFACE)
   5307 MIDL_INTERFACE("7fee9e9a-4a89-47a6-899c-b6a53a70fb67")
   5308 IMFActivate : public IMFAttributes
   5309 {
   5310     virtual HRESULT STDMETHODCALLTYPE ActivateObject(
   5311         REFIID riid,
   5312         void **ppv) = 0;
   5313 
   5314     virtual HRESULT STDMETHODCALLTYPE ShutdownObject(
   5315         ) = 0;
   5316 
   5317     virtual HRESULT STDMETHODCALLTYPE DetachObject(
   5318         ) = 0;
   5319 
   5320 };
   5321 #ifdef __CRT_UUID_DECL
   5322 __CRT_UUID_DECL(IMFActivate, 0x7fee9e9a, 0x4a89, 0x47a6, 0x89,0x9c, 0xb6,0xa5,0x3a,0x70,0xfb,0x67)
   5323 #endif
   5324 #else
   5325 typedef struct IMFActivateVtbl {
   5326     BEGIN_INTERFACE
   5327 
   5328     /*** IUnknown methods ***/
   5329     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5330         IMFActivate *This,
   5331         REFIID riid,
   5332         void **ppvObject);
   5333 
   5334     ULONG (STDMETHODCALLTYPE *AddRef)(
   5335         IMFActivate *This);
   5336 
   5337     ULONG (STDMETHODCALLTYPE *Release)(
   5338         IMFActivate *This);
   5339 
   5340     /*** IMFAttributes methods ***/
   5341     HRESULT (STDMETHODCALLTYPE *GetItem)(
   5342         IMFActivate *This,
   5343         REFGUID guidKey,
   5344         PROPVARIANT *pValue);
   5345 
   5346     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   5347         IMFActivate *This,
   5348         REFGUID guidKey,
   5349         MF_ATTRIBUTE_TYPE *pType);
   5350 
   5351     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   5352         IMFActivate *This,
   5353         REFGUID guidKey,
   5354         REFPROPVARIANT Value,
   5355         WINBOOL *pbResult);
   5356 
   5357     HRESULT (STDMETHODCALLTYPE *Compare)(
   5358         IMFActivate *This,
   5359         IMFAttributes *pTheirs,
   5360         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   5361         WINBOOL *pbResult);
   5362 
   5363     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   5364         IMFActivate *This,
   5365         REFGUID guidKey,
   5366         UINT32 *punValue);
   5367 
   5368     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   5369         IMFActivate *This,
   5370         REFGUID guidKey,
   5371         UINT64 *punValue);
   5372 
   5373     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   5374         IMFActivate *This,
   5375         REFGUID guidKey,
   5376         double *pfValue);
   5377 
   5378     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   5379         IMFActivate *This,
   5380         REFGUID guidKey,
   5381         GUID *pguidValue);
   5382 
   5383     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   5384         IMFActivate *This,
   5385         REFGUID guidKey,
   5386         UINT32 *pcchLength);
   5387 
   5388     HRESULT (STDMETHODCALLTYPE *GetString)(
   5389         IMFActivate *This,
   5390         REFGUID guidKey,
   5391         LPWSTR pwszValue,
   5392         UINT32 cchBufSize,
   5393         UINT32 *pcchLength);
   5394 
   5395     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   5396         IMFActivate *This,
   5397         REFGUID guidKey,
   5398         LPWSTR *ppwszValue,
   5399         UINT32 *pcchLength);
   5400 
   5401     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   5402         IMFActivate *This,
   5403         REFGUID guidKey,
   5404         UINT32 *pcbBlobSize);
   5405 
   5406     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   5407         IMFActivate *This,
   5408         REFGUID guidKey,
   5409         UINT8 *pBuf,
   5410         UINT32 cbBufSize,
   5411         UINT32 *pcbBlobSize);
   5412 
   5413     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   5414         IMFActivate *This,
   5415         REFGUID guidKey,
   5416         UINT8 **ppBuf,
   5417         UINT32 *pcbSize);
   5418 
   5419     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   5420         IMFActivate *This,
   5421         REFGUID guidKey,
   5422         REFIID riid,
   5423         LPVOID *ppv);
   5424 
   5425     HRESULT (STDMETHODCALLTYPE *SetItem)(
   5426         IMFActivate *This,
   5427         REFGUID guidKey,
   5428         REFPROPVARIANT Value);
   5429 
   5430     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   5431         IMFActivate *This,
   5432         REFGUID guidKey);
   5433 
   5434     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   5435         IMFActivate *This);
   5436 
   5437     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   5438         IMFActivate *This,
   5439         REFGUID guidKey,
   5440         UINT32 unValue);
   5441 
   5442     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   5443         IMFActivate *This,
   5444         REFGUID guidKey,
   5445         UINT64 unValue);
   5446 
   5447     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   5448         IMFActivate *This,
   5449         REFGUID guidKey,
   5450         double fValue);
   5451 
   5452     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   5453         IMFActivate *This,
   5454         REFGUID guidKey,
   5455         REFGUID guidValue);
   5456 
   5457     HRESULT (STDMETHODCALLTYPE *SetString)(
   5458         IMFActivate *This,
   5459         REFGUID guidKey,
   5460         LPCWSTR wszValue);
   5461 
   5462     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   5463         IMFActivate *This,
   5464         REFGUID guidKey,
   5465         const UINT8 *pBuf,
   5466         UINT32 cbBufSize);
   5467 
   5468     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   5469         IMFActivate *This,
   5470         REFGUID guidKey,
   5471         IUnknown *pUnknown);
   5472 
   5473     HRESULT (STDMETHODCALLTYPE *LockStore)(
   5474         IMFActivate *This);
   5475 
   5476     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   5477         IMFActivate *This);
   5478 
   5479     HRESULT (STDMETHODCALLTYPE *GetCount)(
   5480         IMFActivate *This,
   5481         UINT32 *pcItems);
   5482 
   5483     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   5484         IMFActivate *This,
   5485         UINT32 unIndex,
   5486         GUID *pguidKey,
   5487         PROPVARIANT *pValue);
   5488 
   5489     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   5490         IMFActivate *This,
   5491         IMFAttributes *pDest);
   5492 
   5493     /*** IMFActivate methods ***/
   5494     HRESULT (STDMETHODCALLTYPE *ActivateObject)(
   5495         IMFActivate *This,
   5496         REFIID riid,
   5497         void **ppv);
   5498 
   5499     HRESULT (STDMETHODCALLTYPE *ShutdownObject)(
   5500         IMFActivate *This);
   5501 
   5502     HRESULT (STDMETHODCALLTYPE *DetachObject)(
   5503         IMFActivate *This);
   5504 
   5505     END_INTERFACE
   5506 } IMFActivateVtbl;
   5507 
   5508 interface IMFActivate {
   5509     CONST_VTBL IMFActivateVtbl* lpVtbl;
   5510 };
   5511 
   5512 #ifdef COBJMACROS
   5513 #ifndef WIDL_C_INLINE_WRAPPERS
   5514 /*** IUnknown methods ***/
   5515 #define IMFActivate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5516 #define IMFActivate_AddRef(This) (This)->lpVtbl->AddRef(This)
   5517 #define IMFActivate_Release(This) (This)->lpVtbl->Release(This)
   5518 /*** IMFAttributes methods ***/
   5519 #define IMFActivate_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   5520 #define IMFActivate_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   5521 #define IMFActivate_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   5522 #define IMFActivate_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   5523 #define IMFActivate_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   5524 #define IMFActivate_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   5525 #define IMFActivate_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   5526 #define IMFActivate_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   5527 #define IMFActivate_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   5528 #define IMFActivate_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   5529 #define IMFActivate_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   5530 #define IMFActivate_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   5531 #define IMFActivate_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   5532 #define IMFActivate_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   5533 #define IMFActivate_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   5534 #define IMFActivate_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   5535 #define IMFActivate_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   5536 #define IMFActivate_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   5537 #define IMFActivate_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   5538 #define IMFActivate_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   5539 #define IMFActivate_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   5540 #define IMFActivate_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   5541 #define IMFActivate_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   5542 #define IMFActivate_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   5543 #define IMFActivate_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   5544 #define IMFActivate_LockStore(This) (This)->lpVtbl->LockStore(This)
   5545 #define IMFActivate_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   5546 #define IMFActivate_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   5547 #define IMFActivate_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   5548 #define IMFActivate_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   5549 /*** IMFActivate methods ***/
   5550 #define IMFActivate_ActivateObject(This,riid,ppv) (This)->lpVtbl->ActivateObject(This,riid,ppv)
   5551 #define IMFActivate_ShutdownObject(This) (This)->lpVtbl->ShutdownObject(This)
   5552 #define IMFActivate_DetachObject(This) (This)->lpVtbl->DetachObject(This)
   5553 #else
   5554 /*** IUnknown methods ***/
   5555 static inline HRESULT IMFActivate_QueryInterface(IMFActivate* This,REFIID riid,void **ppvObject) {
   5556     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5557 }
   5558 static inline ULONG IMFActivate_AddRef(IMFActivate* This) {
   5559     return This->lpVtbl->AddRef(This);
   5560 }
   5561 static inline ULONG IMFActivate_Release(IMFActivate* This) {
   5562     return This->lpVtbl->Release(This);
   5563 }
   5564 /*** IMFAttributes methods ***/
   5565 static inline HRESULT IMFActivate_GetItem(IMFActivate* This,REFGUID guidKey,PROPVARIANT *pValue) {
   5566     return This->lpVtbl->GetItem(This,guidKey,pValue);
   5567 }
   5568 static inline HRESULT IMFActivate_GetItemType(IMFActivate* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   5569     return This->lpVtbl->GetItemType(This,guidKey,pType);
   5570 }
   5571 static inline HRESULT IMFActivate_CompareItem(IMFActivate* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   5572     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   5573 }
   5574 static inline HRESULT IMFActivate_Compare(IMFActivate* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   5575     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   5576 }
   5577 static inline HRESULT IMFActivate_GetUINT32(IMFActivate* This,REFGUID guidKey,UINT32 *punValue) {
   5578     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   5579 }
   5580 static inline HRESULT IMFActivate_GetUINT64(IMFActivate* This,REFGUID guidKey,UINT64 *punValue) {
   5581     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   5582 }
   5583 static inline HRESULT IMFActivate_GetDouble(IMFActivate* This,REFGUID guidKey,double *pfValue) {
   5584     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   5585 }
   5586 static inline HRESULT IMFActivate_GetGUID(IMFActivate* This,REFGUID guidKey,GUID *pguidValue) {
   5587     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   5588 }
   5589 static inline HRESULT IMFActivate_GetStringLength(IMFActivate* This,REFGUID guidKey,UINT32 *pcchLength) {
   5590     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   5591 }
   5592 static inline HRESULT IMFActivate_GetString(IMFActivate* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   5593     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   5594 }
   5595 static inline HRESULT IMFActivate_GetAllocatedString(IMFActivate* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   5596     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   5597 }
   5598 static inline HRESULT IMFActivate_GetBlobSize(IMFActivate* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   5599     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   5600 }
   5601 static inline HRESULT IMFActivate_GetBlob(IMFActivate* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   5602     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   5603 }
   5604 static inline HRESULT IMFActivate_GetAllocatedBlob(IMFActivate* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   5605     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   5606 }
   5607 static inline HRESULT IMFActivate_GetUnknown(IMFActivate* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   5608     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   5609 }
   5610 static inline HRESULT IMFActivate_SetItem(IMFActivate* This,REFGUID guidKey,REFPROPVARIANT Value) {
   5611     return This->lpVtbl->SetItem(This,guidKey,Value);
   5612 }
   5613 static inline HRESULT IMFActivate_DeleteItem(IMFActivate* This,REFGUID guidKey) {
   5614     return This->lpVtbl->DeleteItem(This,guidKey);
   5615 }
   5616 static inline HRESULT IMFActivate_DeleteAllItems(IMFActivate* This) {
   5617     return This->lpVtbl->DeleteAllItems(This);
   5618 }
   5619 static inline HRESULT IMFActivate_SetUINT32(IMFActivate* This,REFGUID guidKey,UINT32 unValue) {
   5620     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   5621 }
   5622 static inline HRESULT IMFActivate_SetUINT64(IMFActivate* This,REFGUID guidKey,UINT64 unValue) {
   5623     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   5624 }
   5625 static inline HRESULT IMFActivate_SetDouble(IMFActivate* This,REFGUID guidKey,double fValue) {
   5626     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   5627 }
   5628 static inline HRESULT IMFActivate_SetGUID(IMFActivate* This,REFGUID guidKey,REFGUID guidValue) {
   5629     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   5630 }
   5631 static inline HRESULT IMFActivate_SetString(IMFActivate* This,REFGUID guidKey,LPCWSTR wszValue) {
   5632     return This->lpVtbl->SetString(This,guidKey,wszValue);
   5633 }
   5634 static inline HRESULT IMFActivate_SetBlob(IMFActivate* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   5635     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   5636 }
   5637 static inline HRESULT IMFActivate_SetUnknown(IMFActivate* This,REFGUID guidKey,IUnknown *pUnknown) {
   5638     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   5639 }
   5640 static inline HRESULT IMFActivate_LockStore(IMFActivate* This) {
   5641     return This->lpVtbl->LockStore(This);
   5642 }
   5643 static inline HRESULT IMFActivate_UnlockStore(IMFActivate* This) {
   5644     return This->lpVtbl->UnlockStore(This);
   5645 }
   5646 static inline HRESULT IMFActivate_GetCount(IMFActivate* This,UINT32 *pcItems) {
   5647     return This->lpVtbl->GetCount(This,pcItems);
   5648 }
   5649 static inline HRESULT IMFActivate_GetItemByIndex(IMFActivate* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   5650     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   5651 }
   5652 static inline HRESULT IMFActivate_CopyAllItems(IMFActivate* This,IMFAttributes *pDest) {
   5653     return This->lpVtbl->CopyAllItems(This,pDest);
   5654 }
   5655 /*** IMFActivate methods ***/
   5656 static inline HRESULT IMFActivate_ActivateObject(IMFActivate* This,REFIID riid,void **ppv) {
   5657     return This->lpVtbl->ActivateObject(This,riid,ppv);
   5658 }
   5659 static inline HRESULT IMFActivate_ShutdownObject(IMFActivate* This) {
   5660     return This->lpVtbl->ShutdownObject(This);
   5661 }
   5662 static inline HRESULT IMFActivate_DetachObject(IMFActivate* This) {
   5663     return This->lpVtbl->DetachObject(This);
   5664 }
   5665 #endif
   5666 #endif
   5667 
   5668 #endif
   5669 
   5670 
   5671 #endif  /* __IMFActivate_INTERFACE_DEFINED__ */
   5672 
   5673 #endif
   5674 
   5675 #if WINVER >= _WIN32_WINNT_WIN7
   5676 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   5677 typedef enum _MF_Plugin_Type {
   5678     MF_Plugin_Type_MFT = 0,
   5679     MF_Plugin_Type_MediaSource = 1,
   5680     MF_Plugin_Type_MFT_MatchOutputType = 2,
   5681     MF_Plugin_Type_Other = (DWORD)-1
   5682 } MF_Plugin_Type;
   5683 
   5684 /*****************************************************************************
   5685  * IMFPluginControl interface
   5686  */
   5687 #ifndef __IMFPluginControl_INTERFACE_DEFINED__
   5688 #define __IMFPluginControl_INTERFACE_DEFINED__
   5689 
   5690 DEFINE_GUID(IID_IMFPluginControl, 0x5c6c44bf, 0x1db6, 0x435b, 0x92,0x49, 0xe8,0xcd,0x10,0xfd,0xec,0x96);
   5691 #if defined(__cplusplus) && !defined(CINTERFACE)
   5692 MIDL_INTERFACE("5c6c44bf-1db6-435b-9249-e8cd10fdec96")
   5693 IMFPluginControl : public IUnknown
   5694 {
   5695     virtual HRESULT STDMETHODCALLTYPE GetPreferredClsid(
   5696         DWORD pluginType,
   5697         LPCWSTR selector,
   5698         CLSID *clsid) = 0;
   5699 
   5700     virtual HRESULT STDMETHODCALLTYPE GetPreferredClsidByIndex(
   5701         DWORD pluginType,
   5702         DWORD index,
   5703         LPWSTR *selector,
   5704         CLSID *clsid) = 0;
   5705 
   5706     virtual HRESULT STDMETHODCALLTYPE SetPreferredClsid(
   5707         DWORD pluginType,
   5708         LPCWSTR selector,
   5709         const CLSID *clsid) = 0;
   5710 
   5711     virtual HRESULT STDMETHODCALLTYPE IsDisabled(
   5712         DWORD pluginType,
   5713         REFCLSID clsid) = 0;
   5714 
   5715     virtual HRESULT STDMETHODCALLTYPE GetDisabledByIndex(
   5716         DWORD pluginType,
   5717         DWORD index,
   5718         CLSID *clsid) = 0;
   5719 
   5720     virtual HRESULT STDMETHODCALLTYPE SetDisabled(
   5721         DWORD pluginType,
   5722         REFCLSID clsid,
   5723         WINBOOL disabled) = 0;
   5724 
   5725 };
   5726 #ifdef __CRT_UUID_DECL
   5727 __CRT_UUID_DECL(IMFPluginControl, 0x5c6c44bf, 0x1db6, 0x435b, 0x92,0x49, 0xe8,0xcd,0x10,0xfd,0xec,0x96)
   5728 #endif
   5729 #else
   5730 typedef struct IMFPluginControlVtbl {
   5731     BEGIN_INTERFACE
   5732 
   5733     /*** IUnknown methods ***/
   5734     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5735         IMFPluginControl *This,
   5736         REFIID riid,
   5737         void **ppvObject);
   5738 
   5739     ULONG (STDMETHODCALLTYPE *AddRef)(
   5740         IMFPluginControl *This);
   5741 
   5742     ULONG (STDMETHODCALLTYPE *Release)(
   5743         IMFPluginControl *This);
   5744 
   5745     /*** IMFPluginControl methods ***/
   5746     HRESULT (STDMETHODCALLTYPE *GetPreferredClsid)(
   5747         IMFPluginControl *This,
   5748         DWORD pluginType,
   5749         LPCWSTR selector,
   5750         CLSID *clsid);
   5751 
   5752     HRESULT (STDMETHODCALLTYPE *GetPreferredClsidByIndex)(
   5753         IMFPluginControl *This,
   5754         DWORD pluginType,
   5755         DWORD index,
   5756         LPWSTR *selector,
   5757         CLSID *clsid);
   5758 
   5759     HRESULT (STDMETHODCALLTYPE *SetPreferredClsid)(
   5760         IMFPluginControl *This,
   5761         DWORD pluginType,
   5762         LPCWSTR selector,
   5763         const CLSID *clsid);
   5764 
   5765     HRESULT (STDMETHODCALLTYPE *IsDisabled)(
   5766         IMFPluginControl *This,
   5767         DWORD pluginType,
   5768         REFCLSID clsid);
   5769 
   5770     HRESULT (STDMETHODCALLTYPE *GetDisabledByIndex)(
   5771         IMFPluginControl *This,
   5772         DWORD pluginType,
   5773         DWORD index,
   5774         CLSID *clsid);
   5775 
   5776     HRESULT (STDMETHODCALLTYPE *SetDisabled)(
   5777         IMFPluginControl *This,
   5778         DWORD pluginType,
   5779         REFCLSID clsid,
   5780         WINBOOL disabled);
   5781 
   5782     END_INTERFACE
   5783 } IMFPluginControlVtbl;
   5784 
   5785 interface IMFPluginControl {
   5786     CONST_VTBL IMFPluginControlVtbl* lpVtbl;
   5787 };
   5788 
   5789 #ifdef COBJMACROS
   5790 #ifndef WIDL_C_INLINE_WRAPPERS
   5791 /*** IUnknown methods ***/
   5792 #define IMFPluginControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5793 #define IMFPluginControl_AddRef(This) (This)->lpVtbl->AddRef(This)
   5794 #define IMFPluginControl_Release(This) (This)->lpVtbl->Release(This)
   5795 /*** IMFPluginControl methods ***/
   5796 #define IMFPluginControl_GetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid)
   5797 #define IMFPluginControl_GetPreferredClsidByIndex(This,pluginType,index,selector,clsid) (This)->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid)
   5798 #define IMFPluginControl_SetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid)
   5799 #define IMFPluginControl_IsDisabled(This,pluginType,clsid) (This)->lpVtbl->IsDisabled(This,pluginType,clsid)
   5800 #define IMFPluginControl_GetDisabledByIndex(This,pluginType,index,clsid) (This)->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid)
   5801 #define IMFPluginControl_SetDisabled(This,pluginType,clsid,disabled) (This)->lpVtbl->SetDisabled(This,pluginType,clsid,disabled)
   5802 #else
   5803 /*** IUnknown methods ***/
   5804 static inline HRESULT IMFPluginControl_QueryInterface(IMFPluginControl* This,REFIID riid,void **ppvObject) {
   5805     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5806 }
   5807 static inline ULONG IMFPluginControl_AddRef(IMFPluginControl* This) {
   5808     return This->lpVtbl->AddRef(This);
   5809 }
   5810 static inline ULONG IMFPluginControl_Release(IMFPluginControl* This) {
   5811     return This->lpVtbl->Release(This);
   5812 }
   5813 /*** IMFPluginControl methods ***/
   5814 static inline HRESULT IMFPluginControl_GetPreferredClsid(IMFPluginControl* This,DWORD pluginType,LPCWSTR selector,CLSID *clsid) {
   5815     return This->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid);
   5816 }
   5817 static inline HRESULT IMFPluginControl_GetPreferredClsidByIndex(IMFPluginControl* This,DWORD pluginType,DWORD index,LPWSTR *selector,CLSID *clsid) {
   5818     return This->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid);
   5819 }
   5820 static inline HRESULT IMFPluginControl_SetPreferredClsid(IMFPluginControl* This,DWORD pluginType,LPCWSTR selector,const CLSID *clsid) {
   5821     return This->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid);
   5822 }
   5823 static inline HRESULT IMFPluginControl_IsDisabled(IMFPluginControl* This,DWORD pluginType,REFCLSID clsid) {
   5824     return This->lpVtbl->IsDisabled(This,pluginType,clsid);
   5825 }
   5826 static inline HRESULT IMFPluginControl_GetDisabledByIndex(IMFPluginControl* This,DWORD pluginType,DWORD index,CLSID *clsid) {
   5827     return This->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid);
   5828 }
   5829 static inline HRESULT IMFPluginControl_SetDisabled(IMFPluginControl* This,DWORD pluginType,REFCLSID clsid,WINBOOL disabled) {
   5830     return This->lpVtbl->SetDisabled(This,pluginType,clsid,disabled);
   5831 }
   5832 #endif
   5833 #endif
   5834 
   5835 #endif
   5836 
   5837 
   5838 #endif  /* __IMFPluginControl_INTERFACE_DEFINED__ */
   5839 
   5840 
   5841 typedef enum MF_PLUGIN_CONTROL_POLICY {
   5842     MF_PLUGIN_CONTROL_POLICY_USE_ALL_PLUGINS = 0,
   5843     MF_PLUGIN_CONTROL_POLICY_USE_APPROVED_PLUGINS = 1,
   5844     MF_PLUGIN_CONTROL_POLICY_USE_WEB_PLUGINS = 2,
   5845     MF_PLUGIN_CONTROL_POLICY_USE_WEB_PLUGINS_EDGEMODE = 3
   5846 } MF_PLUGIN_CONTROL_POLICY;
   5847 
   5848 /*****************************************************************************
   5849  * IMFPluginControl2 interface
   5850  */
   5851 #ifndef __IMFPluginControl2_INTERFACE_DEFINED__
   5852 #define __IMFPluginControl2_INTERFACE_DEFINED__
   5853 
   5854 DEFINE_GUID(IID_IMFPluginControl2, 0xc6982083, 0x3ddc, 0x45cb, 0xaf,0x5e, 0x0f,0x7a,0x8c,0xe4,0xde,0x77);
   5855 #if defined(__cplusplus) && !defined(CINTERFACE)
   5856 MIDL_INTERFACE("c6982083-3ddc-45cb-af5e-0f7a8ce4de77")
   5857 IMFPluginControl2 : public IMFPluginControl
   5858 {
   5859     virtual HRESULT STDMETHODCALLTYPE SetPolicy(
   5860         MF_PLUGIN_CONTROL_POLICY policy) = 0;
   5861 
   5862 };
   5863 #ifdef __CRT_UUID_DECL
   5864 __CRT_UUID_DECL(IMFPluginControl2, 0xc6982083, 0x3ddc, 0x45cb, 0xaf,0x5e, 0x0f,0x7a,0x8c,0xe4,0xde,0x77)
   5865 #endif
   5866 #else
   5867 typedef struct IMFPluginControl2Vtbl {
   5868     BEGIN_INTERFACE
   5869 
   5870     /*** IUnknown methods ***/
   5871     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5872         IMFPluginControl2 *This,
   5873         REFIID riid,
   5874         void **ppvObject);
   5875 
   5876     ULONG (STDMETHODCALLTYPE *AddRef)(
   5877         IMFPluginControl2 *This);
   5878 
   5879     ULONG (STDMETHODCALLTYPE *Release)(
   5880         IMFPluginControl2 *This);
   5881 
   5882     /*** IMFPluginControl methods ***/
   5883     HRESULT (STDMETHODCALLTYPE *GetPreferredClsid)(
   5884         IMFPluginControl2 *This,
   5885         DWORD pluginType,
   5886         LPCWSTR selector,
   5887         CLSID *clsid);
   5888 
   5889     HRESULT (STDMETHODCALLTYPE *GetPreferredClsidByIndex)(
   5890         IMFPluginControl2 *This,
   5891         DWORD pluginType,
   5892         DWORD index,
   5893         LPWSTR *selector,
   5894         CLSID *clsid);
   5895 
   5896     HRESULT (STDMETHODCALLTYPE *SetPreferredClsid)(
   5897         IMFPluginControl2 *This,
   5898         DWORD pluginType,
   5899         LPCWSTR selector,
   5900         const CLSID *clsid);
   5901 
   5902     HRESULT (STDMETHODCALLTYPE *IsDisabled)(
   5903         IMFPluginControl2 *This,
   5904         DWORD pluginType,
   5905         REFCLSID clsid);
   5906 
   5907     HRESULT (STDMETHODCALLTYPE *GetDisabledByIndex)(
   5908         IMFPluginControl2 *This,
   5909         DWORD pluginType,
   5910         DWORD index,
   5911         CLSID *clsid);
   5912 
   5913     HRESULT (STDMETHODCALLTYPE *SetDisabled)(
   5914         IMFPluginControl2 *This,
   5915         DWORD pluginType,
   5916         REFCLSID clsid,
   5917         WINBOOL disabled);
   5918 
   5919     /*** IMFPluginControl2 methods ***/
   5920     HRESULT (STDMETHODCALLTYPE *SetPolicy)(
   5921         IMFPluginControl2 *This,
   5922         MF_PLUGIN_CONTROL_POLICY policy);
   5923 
   5924     END_INTERFACE
   5925 } IMFPluginControl2Vtbl;
   5926 
   5927 interface IMFPluginControl2 {
   5928     CONST_VTBL IMFPluginControl2Vtbl* lpVtbl;
   5929 };
   5930 
   5931 #ifdef COBJMACROS
   5932 #ifndef WIDL_C_INLINE_WRAPPERS
   5933 /*** IUnknown methods ***/
   5934 #define IMFPluginControl2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5935 #define IMFPluginControl2_AddRef(This) (This)->lpVtbl->AddRef(This)
   5936 #define IMFPluginControl2_Release(This) (This)->lpVtbl->Release(This)
   5937 /*** IMFPluginControl methods ***/
   5938 #define IMFPluginControl2_GetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid)
   5939 #define IMFPluginControl2_GetPreferredClsidByIndex(This,pluginType,index,selector,clsid) (This)->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid)
   5940 #define IMFPluginControl2_SetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid)
   5941 #define IMFPluginControl2_IsDisabled(This,pluginType,clsid) (This)->lpVtbl->IsDisabled(This,pluginType,clsid)
   5942 #define IMFPluginControl2_GetDisabledByIndex(This,pluginType,index,clsid) (This)->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid)
   5943 #define IMFPluginControl2_SetDisabled(This,pluginType,clsid,disabled) (This)->lpVtbl->SetDisabled(This,pluginType,clsid,disabled)
   5944 /*** IMFPluginControl2 methods ***/
   5945 #define IMFPluginControl2_SetPolicy(This,policy) (This)->lpVtbl->SetPolicy(This,policy)
   5946 #else
   5947 /*** IUnknown methods ***/
   5948 static inline HRESULT IMFPluginControl2_QueryInterface(IMFPluginControl2* This,REFIID riid,void **ppvObject) {
   5949     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5950 }
   5951 static inline ULONG IMFPluginControl2_AddRef(IMFPluginControl2* This) {
   5952     return This->lpVtbl->AddRef(This);
   5953 }
   5954 static inline ULONG IMFPluginControl2_Release(IMFPluginControl2* This) {
   5955     return This->lpVtbl->Release(This);
   5956 }
   5957 /*** IMFPluginControl methods ***/
   5958 static inline HRESULT IMFPluginControl2_GetPreferredClsid(IMFPluginControl2* This,DWORD pluginType,LPCWSTR selector,CLSID *clsid) {
   5959     return This->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid);
   5960 }
   5961 static inline HRESULT IMFPluginControl2_GetPreferredClsidByIndex(IMFPluginControl2* This,DWORD pluginType,DWORD index,LPWSTR *selector,CLSID *clsid) {
   5962     return This->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid);
   5963 }
   5964 static inline HRESULT IMFPluginControl2_SetPreferredClsid(IMFPluginControl2* This,DWORD pluginType,LPCWSTR selector,const CLSID *clsid) {
   5965     return This->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid);
   5966 }
   5967 static inline HRESULT IMFPluginControl2_IsDisabled(IMFPluginControl2* This,DWORD pluginType,REFCLSID clsid) {
   5968     return This->lpVtbl->IsDisabled(This,pluginType,clsid);
   5969 }
   5970 static inline HRESULT IMFPluginControl2_GetDisabledByIndex(IMFPluginControl2* This,DWORD pluginType,DWORD index,CLSID *clsid) {
   5971     return This->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid);
   5972 }
   5973 static inline HRESULT IMFPluginControl2_SetDisabled(IMFPluginControl2* This,DWORD pluginType,REFCLSID clsid,WINBOOL disabled) {
   5974     return This->lpVtbl->SetDisabled(This,pluginType,clsid,disabled);
   5975 }
   5976 /*** IMFPluginControl2 methods ***/
   5977 static inline HRESULT IMFPluginControl2_SetPolicy(IMFPluginControl2* This,MF_PLUGIN_CONTROL_POLICY policy) {
   5978     return This->lpVtbl->SetPolicy(This,policy);
   5979 }
   5980 #endif
   5981 #endif
   5982 
   5983 #endif
   5984 
   5985 
   5986 #endif  /* __IMFPluginControl2_INTERFACE_DEFINED__ */
   5987 
   5988 #endif
   5989 
   5990 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   5991 /*****************************************************************************
   5992  * IMFDXGIDeviceManager interface
   5993  */
   5994 #ifndef __IMFDXGIDeviceManager_INTERFACE_DEFINED__
   5995 #define __IMFDXGIDeviceManager_INTERFACE_DEFINED__
   5996 
   5997 DEFINE_GUID(IID_IMFDXGIDeviceManager, 0xeb533d5d, 0x2db6, 0x40f8, 0x97,0xa9, 0x49,0x46,0x92,0x01,0x4f,0x07);
   5998 #if defined(__cplusplus) && !defined(CINTERFACE)
   5999 MIDL_INTERFACE("eb533d5d-2db6-40f8-97a9-494692014f07")
   6000 IMFDXGIDeviceManager : public IUnknown
   6001 {
   6002     virtual HRESULT STDMETHODCALLTYPE CloseDeviceHandle(
   6003         HANDLE hDevice) = 0;
   6004 
   6005     virtual HRESULT STDMETHODCALLTYPE GetVideoService(
   6006         HANDLE hDevice,
   6007         REFIID riid,
   6008         void **ppService) = 0;
   6009 
   6010     virtual HRESULT STDMETHODCALLTYPE LockDevice(
   6011         HANDLE hDevice,
   6012         REFIID riid,
   6013         void **ppUnkDevice,
   6014         WINBOOL fBlock) = 0;
   6015 
   6016     virtual HRESULT STDMETHODCALLTYPE OpenDeviceHandle(
   6017         HANDLE *phDevice) = 0;
   6018 
   6019     virtual HRESULT STDMETHODCALLTYPE ResetDevice(
   6020         IUnknown *pUnkDevice,
   6021         UINT resetToken) = 0;
   6022 
   6023     virtual HRESULT STDMETHODCALLTYPE TestDevice(
   6024         HANDLE hDevice) = 0;
   6025 
   6026     virtual HRESULT STDMETHODCALLTYPE UnlockDevice(
   6027         HANDLE hDevice,
   6028         WINBOOL fSaveState) = 0;
   6029 
   6030 };
   6031 #ifdef __CRT_UUID_DECL
   6032 __CRT_UUID_DECL(IMFDXGIDeviceManager, 0xeb533d5d, 0x2db6, 0x40f8, 0x97,0xa9, 0x49,0x46,0x92,0x01,0x4f,0x07)
   6033 #endif
   6034 #else
   6035 typedef struct IMFDXGIDeviceManagerVtbl {
   6036     BEGIN_INTERFACE
   6037 
   6038     /*** IUnknown methods ***/
   6039     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6040         IMFDXGIDeviceManager *This,
   6041         REFIID riid,
   6042         void **ppvObject);
   6043 
   6044     ULONG (STDMETHODCALLTYPE *AddRef)(
   6045         IMFDXGIDeviceManager *This);
   6046 
   6047     ULONG (STDMETHODCALLTYPE *Release)(
   6048         IMFDXGIDeviceManager *This);
   6049 
   6050     /*** IMFDXGIDeviceManager methods ***/
   6051     HRESULT (STDMETHODCALLTYPE *CloseDeviceHandle)(
   6052         IMFDXGIDeviceManager *This,
   6053         HANDLE hDevice);
   6054 
   6055     HRESULT (STDMETHODCALLTYPE *GetVideoService)(
   6056         IMFDXGIDeviceManager *This,
   6057         HANDLE hDevice,
   6058         REFIID riid,
   6059         void **ppService);
   6060 
   6061     HRESULT (STDMETHODCALLTYPE *LockDevice)(
   6062         IMFDXGIDeviceManager *This,
   6063         HANDLE hDevice,
   6064         REFIID riid,
   6065         void **ppUnkDevice,
   6066         WINBOOL fBlock);
   6067 
   6068     HRESULT (STDMETHODCALLTYPE *OpenDeviceHandle)(
   6069         IMFDXGIDeviceManager *This,
   6070         HANDLE *phDevice);
   6071 
   6072     HRESULT (STDMETHODCALLTYPE *ResetDevice)(
   6073         IMFDXGIDeviceManager *This,
   6074         IUnknown *pUnkDevice,
   6075         UINT resetToken);
   6076 
   6077     HRESULT (STDMETHODCALLTYPE *TestDevice)(
   6078         IMFDXGIDeviceManager *This,
   6079         HANDLE hDevice);
   6080 
   6081     HRESULT (STDMETHODCALLTYPE *UnlockDevice)(
   6082         IMFDXGIDeviceManager *This,
   6083         HANDLE hDevice,
   6084         WINBOOL fSaveState);
   6085 
   6086     END_INTERFACE
   6087 } IMFDXGIDeviceManagerVtbl;
   6088 
   6089 interface IMFDXGIDeviceManager {
   6090     CONST_VTBL IMFDXGIDeviceManagerVtbl* lpVtbl;
   6091 };
   6092 
   6093 #ifdef COBJMACROS
   6094 #ifndef WIDL_C_INLINE_WRAPPERS
   6095 /*** IUnknown methods ***/
   6096 #define IMFDXGIDeviceManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6097 #define IMFDXGIDeviceManager_AddRef(This) (This)->lpVtbl->AddRef(This)
   6098 #define IMFDXGIDeviceManager_Release(This) (This)->lpVtbl->Release(This)
   6099 /*** IMFDXGIDeviceManager methods ***/
   6100 #define IMFDXGIDeviceManager_CloseDeviceHandle(This,hDevice) (This)->lpVtbl->CloseDeviceHandle(This,hDevice)
   6101 #define IMFDXGIDeviceManager_GetVideoService(This,hDevice,riid,ppService) (This)->lpVtbl->GetVideoService(This,hDevice,riid,ppService)
   6102 #define IMFDXGIDeviceManager_LockDevice(This,hDevice,riid,ppUnkDevice,fBlock) (This)->lpVtbl->LockDevice(This,hDevice,riid,ppUnkDevice,fBlock)
   6103 #define IMFDXGIDeviceManager_OpenDeviceHandle(This,phDevice) (This)->lpVtbl->OpenDeviceHandle(This,phDevice)
   6104 #define IMFDXGIDeviceManager_ResetDevice(This,pUnkDevice,resetToken) (This)->lpVtbl->ResetDevice(This,pUnkDevice,resetToken)
   6105 #define IMFDXGIDeviceManager_TestDevice(This,hDevice) (This)->lpVtbl->TestDevice(This,hDevice)
   6106 #define IMFDXGIDeviceManager_UnlockDevice(This,hDevice,fSaveState) (This)->lpVtbl->UnlockDevice(This,hDevice,fSaveState)
   6107 #else
   6108 /*** IUnknown methods ***/
   6109 static inline HRESULT IMFDXGIDeviceManager_QueryInterface(IMFDXGIDeviceManager* This,REFIID riid,void **ppvObject) {
   6110     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6111 }
   6112 static inline ULONG IMFDXGIDeviceManager_AddRef(IMFDXGIDeviceManager* This) {
   6113     return This->lpVtbl->AddRef(This);
   6114 }
   6115 static inline ULONG IMFDXGIDeviceManager_Release(IMFDXGIDeviceManager* This) {
   6116     return This->lpVtbl->Release(This);
   6117 }
   6118 /*** IMFDXGIDeviceManager methods ***/
   6119 static inline HRESULT IMFDXGIDeviceManager_CloseDeviceHandle(IMFDXGIDeviceManager* This,HANDLE hDevice) {
   6120     return This->lpVtbl->CloseDeviceHandle(This,hDevice);
   6121 }
   6122 static inline HRESULT IMFDXGIDeviceManager_GetVideoService(IMFDXGIDeviceManager* This,HANDLE hDevice,REFIID riid,void **ppService) {
   6123     return This->lpVtbl->GetVideoService(This,hDevice,riid,ppService);
   6124 }
   6125 static inline HRESULT IMFDXGIDeviceManager_LockDevice(IMFDXGIDeviceManager* This,HANDLE hDevice,REFIID riid,void **ppUnkDevice,WINBOOL fBlock) {
   6126     return This->lpVtbl->LockDevice(This,hDevice,riid,ppUnkDevice,fBlock);
   6127 }
   6128 static inline HRESULT IMFDXGIDeviceManager_OpenDeviceHandle(IMFDXGIDeviceManager* This,HANDLE *phDevice) {
   6129     return This->lpVtbl->OpenDeviceHandle(This,phDevice);
   6130 }
   6131 static inline HRESULT IMFDXGIDeviceManager_ResetDevice(IMFDXGIDeviceManager* This,IUnknown *pUnkDevice,UINT resetToken) {
   6132     return This->lpVtbl->ResetDevice(This,pUnkDevice,resetToken);
   6133 }
   6134 static inline HRESULT IMFDXGIDeviceManager_TestDevice(IMFDXGIDeviceManager* This,HANDLE hDevice) {
   6135     return This->lpVtbl->TestDevice(This,hDevice);
   6136 }
   6137 static inline HRESULT IMFDXGIDeviceManager_UnlockDevice(IMFDXGIDeviceManager* This,HANDLE hDevice,WINBOOL fSaveState) {
   6138     return This->lpVtbl->UnlockDevice(This,hDevice,fSaveState);
   6139 }
   6140 #endif
   6141 #endif
   6142 
   6143 #endif
   6144 
   6145 
   6146 #endif  /* __IMFDXGIDeviceManager_INTERFACE_DEFINED__ */
   6147 
   6148 
   6149 typedef enum _MF_STREAM_STATE {
   6150     MF_STREAM_STATE_STOPPED = 0,
   6151     MF_STREAM_STATE_PAUSED = 1,
   6152     MF_STREAM_STATE_RUNNING = 2
   6153 } MF_STREAM_STATE;
   6154 #endif
   6155 
   6156 #endif
   6157 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   6158 #if NTDDI_VERSION >= NTDDI_WIN10_RS2
   6159 
   6160 /*****************************************************************************
   6161  * IMFMuxStreamAttributesManager interface
   6162  */
   6163 #ifndef __IMFMuxStreamAttributesManager_INTERFACE_DEFINED__
   6164 #define __IMFMuxStreamAttributesManager_INTERFACE_DEFINED__
   6165 
   6166 DEFINE_GUID(IID_IMFMuxStreamAttributesManager, 0xce8bd576, 0xe440, 0x43b3, 0xbe,0x34, 0x1e,0x53,0xf5,0x65,0xf7,0xe8);
   6167 #if defined(__cplusplus) && !defined(CINTERFACE)
   6168 MIDL_INTERFACE("ce8bd576-e440-43b3-be34-1e53f565f7e8")
   6169 IMFMuxStreamAttributesManager : public IUnknown
   6170 {
   6171     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
   6172         DWORD *pdwMuxStreamCount) = 0;
   6173 
   6174     virtual HRESULT STDMETHODCALLTYPE GetAttributes(
   6175         DWORD dwMuxStreamIndex,
   6176         IMFAttributes **ppStreamAttributes) = 0;
   6177 
   6178 };
   6179 #ifdef __CRT_UUID_DECL
   6180 __CRT_UUID_DECL(IMFMuxStreamAttributesManager, 0xce8bd576, 0xe440, 0x43b3, 0xbe,0x34, 0x1e,0x53,0xf5,0x65,0xf7,0xe8)
   6181 #endif
   6182 #else
   6183 typedef struct IMFMuxStreamAttributesManagerVtbl {
   6184     BEGIN_INTERFACE
   6185 
   6186     /*** IUnknown methods ***/
   6187     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6188         IMFMuxStreamAttributesManager *This,
   6189         REFIID riid,
   6190         void **ppvObject);
   6191 
   6192     ULONG (STDMETHODCALLTYPE *AddRef)(
   6193         IMFMuxStreamAttributesManager *This);
   6194 
   6195     ULONG (STDMETHODCALLTYPE *Release)(
   6196         IMFMuxStreamAttributesManager *This);
   6197 
   6198     /*** IMFMuxStreamAttributesManager methods ***/
   6199     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
   6200         IMFMuxStreamAttributesManager *This,
   6201         DWORD *pdwMuxStreamCount);
   6202 
   6203     HRESULT (STDMETHODCALLTYPE *GetAttributes)(
   6204         IMFMuxStreamAttributesManager *This,
   6205         DWORD dwMuxStreamIndex,
   6206         IMFAttributes **ppStreamAttributes);
   6207 
   6208     END_INTERFACE
   6209 } IMFMuxStreamAttributesManagerVtbl;
   6210 
   6211 interface IMFMuxStreamAttributesManager {
   6212     CONST_VTBL IMFMuxStreamAttributesManagerVtbl* lpVtbl;
   6213 };
   6214 
   6215 #ifdef COBJMACROS
   6216 #ifndef WIDL_C_INLINE_WRAPPERS
   6217 /*** IUnknown methods ***/
   6218 #define IMFMuxStreamAttributesManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6219 #define IMFMuxStreamAttributesManager_AddRef(This) (This)->lpVtbl->AddRef(This)
   6220 #define IMFMuxStreamAttributesManager_Release(This) (This)->lpVtbl->Release(This)
   6221 /*** IMFMuxStreamAttributesManager methods ***/
   6222 #define IMFMuxStreamAttributesManager_GetStreamCount(This,pdwMuxStreamCount) (This)->lpVtbl->GetStreamCount(This,pdwMuxStreamCount)
   6223 #define IMFMuxStreamAttributesManager_GetAttributes(This,dwMuxStreamIndex,ppStreamAttributes) (This)->lpVtbl->GetAttributes(This,dwMuxStreamIndex,ppStreamAttributes)
   6224 #else
   6225 /*** IUnknown methods ***/
   6226 static inline HRESULT IMFMuxStreamAttributesManager_QueryInterface(IMFMuxStreamAttributesManager* This,REFIID riid,void **ppvObject) {
   6227     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6228 }
   6229 static inline ULONG IMFMuxStreamAttributesManager_AddRef(IMFMuxStreamAttributesManager* This) {
   6230     return This->lpVtbl->AddRef(This);
   6231 }
   6232 static inline ULONG IMFMuxStreamAttributesManager_Release(IMFMuxStreamAttributesManager* This) {
   6233     return This->lpVtbl->Release(This);
   6234 }
   6235 /*** IMFMuxStreamAttributesManager methods ***/
   6236 static inline HRESULT IMFMuxStreamAttributesManager_GetStreamCount(IMFMuxStreamAttributesManager* This,DWORD *pdwMuxStreamCount) {
   6237     return This->lpVtbl->GetStreamCount(This,pdwMuxStreamCount);
   6238 }
   6239 static inline HRESULT IMFMuxStreamAttributesManager_GetAttributes(IMFMuxStreamAttributesManager* This,DWORD dwMuxStreamIndex,IMFAttributes **ppStreamAttributes) {
   6240     return This->lpVtbl->GetAttributes(This,dwMuxStreamIndex,ppStreamAttributes);
   6241 }
   6242 #endif
   6243 #endif
   6244 
   6245 #endif
   6246 
   6247 
   6248 #endif  /* __IMFMuxStreamAttributesManager_INTERFACE_DEFINED__ */
   6249 
   6250 
   6251 /*****************************************************************************
   6252  * IMFMuxStreamMediaTypeManager interface
   6253  */
   6254 #ifndef __IMFMuxStreamMediaTypeManager_INTERFACE_DEFINED__
   6255 #define __IMFMuxStreamMediaTypeManager_INTERFACE_DEFINED__
   6256 
   6257 DEFINE_GUID(IID_IMFMuxStreamMediaTypeManager, 0x505a2c72, 0x42f7, 0x4690, 0xae,0xab, 0x8f,0x51,0x3d,0x0f,0xfd,0xb8);
   6258 #if defined(__cplusplus) && !defined(CINTERFACE)
   6259 MIDL_INTERFACE("505a2c72-42f7-4690-aeab-8f513d0ffdb8")
   6260 IMFMuxStreamMediaTypeManager : public IUnknown
   6261 {
   6262     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
   6263         DWORD *pdwMuxStreamCount) = 0;
   6264 
   6265     virtual HRESULT STDMETHODCALLTYPE GetMediaType(
   6266         DWORD dwMuxStreamIndex,
   6267         IMFMediaType **ppMediaType) = 0;
   6268 
   6269     virtual HRESULT STDMETHODCALLTYPE GetStreamConfigurationCount(
   6270         DWORD *pdwCount) = 0;
   6271 
   6272     virtual HRESULT STDMETHODCALLTYPE AddStreamConfiguration(
   6273         ULONGLONG ullStreamMask) = 0;
   6274 
   6275     virtual HRESULT STDMETHODCALLTYPE RemoveStreamConfiguration(
   6276         ULONGLONG ullStreamMask) = 0;
   6277 
   6278     virtual HRESULT STDMETHODCALLTYPE GetStreamConfiguration(
   6279         DWORD ulIndex,
   6280         ULONGLONG *pullStreamMask) = 0;
   6281 
   6282 };
   6283 #ifdef __CRT_UUID_DECL
   6284 __CRT_UUID_DECL(IMFMuxStreamMediaTypeManager, 0x505a2c72, 0x42f7, 0x4690, 0xae,0xab, 0x8f,0x51,0x3d,0x0f,0xfd,0xb8)
   6285 #endif
   6286 #else
   6287 typedef struct IMFMuxStreamMediaTypeManagerVtbl {
   6288     BEGIN_INTERFACE
   6289 
   6290     /*** IUnknown methods ***/
   6291     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6292         IMFMuxStreamMediaTypeManager *This,
   6293         REFIID riid,
   6294         void **ppvObject);
   6295 
   6296     ULONG (STDMETHODCALLTYPE *AddRef)(
   6297         IMFMuxStreamMediaTypeManager *This);
   6298 
   6299     ULONG (STDMETHODCALLTYPE *Release)(
   6300         IMFMuxStreamMediaTypeManager *This);
   6301 
   6302     /*** IMFMuxStreamMediaTypeManager methods ***/
   6303     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
   6304         IMFMuxStreamMediaTypeManager *This,
   6305         DWORD *pdwMuxStreamCount);
   6306 
   6307     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
   6308         IMFMuxStreamMediaTypeManager *This,
   6309         DWORD dwMuxStreamIndex,
   6310         IMFMediaType **ppMediaType);
   6311 
   6312     HRESULT (STDMETHODCALLTYPE *GetStreamConfigurationCount)(
   6313         IMFMuxStreamMediaTypeManager *This,
   6314         DWORD *pdwCount);
   6315 
   6316     HRESULT (STDMETHODCALLTYPE *AddStreamConfiguration)(
   6317         IMFMuxStreamMediaTypeManager *This,
   6318         ULONGLONG ullStreamMask);
   6319 
   6320     HRESULT (STDMETHODCALLTYPE *RemoveStreamConfiguration)(
   6321         IMFMuxStreamMediaTypeManager *This,
   6322         ULONGLONG ullStreamMask);
   6323 
   6324     HRESULT (STDMETHODCALLTYPE *GetStreamConfiguration)(
   6325         IMFMuxStreamMediaTypeManager *This,
   6326         DWORD ulIndex,
   6327         ULONGLONG *pullStreamMask);
   6328 
   6329     END_INTERFACE
   6330 } IMFMuxStreamMediaTypeManagerVtbl;
   6331 
   6332 interface IMFMuxStreamMediaTypeManager {
   6333     CONST_VTBL IMFMuxStreamMediaTypeManagerVtbl* lpVtbl;
   6334 };
   6335 
   6336 #ifdef COBJMACROS
   6337 #ifndef WIDL_C_INLINE_WRAPPERS
   6338 /*** IUnknown methods ***/
   6339 #define IMFMuxStreamMediaTypeManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6340 #define IMFMuxStreamMediaTypeManager_AddRef(This) (This)->lpVtbl->AddRef(This)
   6341 #define IMFMuxStreamMediaTypeManager_Release(This) (This)->lpVtbl->Release(This)
   6342 /*** IMFMuxStreamMediaTypeManager methods ***/
   6343 #define IMFMuxStreamMediaTypeManager_GetStreamCount(This,pdwMuxStreamCount) (This)->lpVtbl->GetStreamCount(This,pdwMuxStreamCount)
   6344 #define IMFMuxStreamMediaTypeManager_GetMediaType(This,dwMuxStreamIndex,ppMediaType) (This)->lpVtbl->GetMediaType(This,dwMuxStreamIndex,ppMediaType)
   6345 #define IMFMuxStreamMediaTypeManager_GetStreamConfigurationCount(This,pdwCount) (This)->lpVtbl->GetStreamConfigurationCount(This,pdwCount)
   6346 #define IMFMuxStreamMediaTypeManager_AddStreamConfiguration(This,ullStreamMask) (This)->lpVtbl->AddStreamConfiguration(This,ullStreamMask)
   6347 #define IMFMuxStreamMediaTypeManager_RemoveStreamConfiguration(This,ullStreamMask) (This)->lpVtbl->RemoveStreamConfiguration(This,ullStreamMask)
   6348 #define IMFMuxStreamMediaTypeManager_GetStreamConfiguration(This,ulIndex,pullStreamMask) (This)->lpVtbl->GetStreamConfiguration(This,ulIndex,pullStreamMask)
   6349 #else
   6350 /*** IUnknown methods ***/
   6351 static inline HRESULT IMFMuxStreamMediaTypeManager_QueryInterface(IMFMuxStreamMediaTypeManager* This,REFIID riid,void **ppvObject) {
   6352     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6353 }
   6354 static inline ULONG IMFMuxStreamMediaTypeManager_AddRef(IMFMuxStreamMediaTypeManager* This) {
   6355     return This->lpVtbl->AddRef(This);
   6356 }
   6357 static inline ULONG IMFMuxStreamMediaTypeManager_Release(IMFMuxStreamMediaTypeManager* This) {
   6358     return This->lpVtbl->Release(This);
   6359 }
   6360 /*** IMFMuxStreamMediaTypeManager methods ***/
   6361 static inline HRESULT IMFMuxStreamMediaTypeManager_GetStreamCount(IMFMuxStreamMediaTypeManager* This,DWORD *pdwMuxStreamCount) {
   6362     return This->lpVtbl->GetStreamCount(This,pdwMuxStreamCount);
   6363 }
   6364 static inline HRESULT IMFMuxStreamMediaTypeManager_GetMediaType(IMFMuxStreamMediaTypeManager* This,DWORD dwMuxStreamIndex,IMFMediaType **ppMediaType) {
   6365     return This->lpVtbl->GetMediaType(This,dwMuxStreamIndex,ppMediaType);
   6366 }
   6367 static inline HRESULT IMFMuxStreamMediaTypeManager_GetStreamConfigurationCount(IMFMuxStreamMediaTypeManager* This,DWORD *pdwCount) {
   6368     return This->lpVtbl->GetStreamConfigurationCount(This,pdwCount);
   6369 }
   6370 static inline HRESULT IMFMuxStreamMediaTypeManager_AddStreamConfiguration(IMFMuxStreamMediaTypeManager* This,ULONGLONG ullStreamMask) {
   6371     return This->lpVtbl->AddStreamConfiguration(This,ullStreamMask);
   6372 }
   6373 static inline HRESULT IMFMuxStreamMediaTypeManager_RemoveStreamConfiguration(IMFMuxStreamMediaTypeManager* This,ULONGLONG ullStreamMask) {
   6374     return This->lpVtbl->RemoveStreamConfiguration(This,ullStreamMask);
   6375 }
   6376 static inline HRESULT IMFMuxStreamMediaTypeManager_GetStreamConfiguration(IMFMuxStreamMediaTypeManager* This,DWORD ulIndex,ULONGLONG *pullStreamMask) {
   6377     return This->lpVtbl->GetStreamConfiguration(This,ulIndex,pullStreamMask);
   6378 }
   6379 #endif
   6380 #endif
   6381 
   6382 #endif
   6383 
   6384 
   6385 #endif  /* __IMFMuxStreamMediaTypeManager_INTERFACE_DEFINED__ */
   6386 
   6387 
   6388 /*****************************************************************************
   6389  * IMFMuxStreamSampleManager interface
   6390  */
   6391 #ifndef __IMFMuxStreamSampleManager_INTERFACE_DEFINED__
   6392 #define __IMFMuxStreamSampleManager_INTERFACE_DEFINED__
   6393 
   6394 DEFINE_GUID(IID_IMFMuxStreamSampleManager, 0x74abbc19, 0xb1cc, 0x4e41, 0xbb,0x8b, 0x9d,0x9b,0x86,0xa8,0xf6,0xca);
   6395 #if defined(__cplusplus) && !defined(CINTERFACE)
   6396 MIDL_INTERFACE("74abbc19-b1cc-4e41-bb8b-9d9b86a8f6ca")
   6397 IMFMuxStreamSampleManager : public IUnknown
   6398 {
   6399     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
   6400         DWORD *pdwMuxStreamCount) = 0;
   6401 
   6402     virtual HRESULT STDMETHODCALLTYPE GetSample(
   6403         DWORD dwMuxStreamIndex,
   6404         IMFSample **ppSample) = 0;
   6405 
   6406     virtual ULONGLONG STDMETHODCALLTYPE GetStreamConfiguration(
   6407         ) = 0;
   6408 
   6409 };
   6410 #ifdef __CRT_UUID_DECL
   6411 __CRT_UUID_DECL(IMFMuxStreamSampleManager, 0x74abbc19, 0xb1cc, 0x4e41, 0xbb,0x8b, 0x9d,0x9b,0x86,0xa8,0xf6,0xca)
   6412 #endif
   6413 #else
   6414 typedef struct IMFMuxStreamSampleManagerVtbl {
   6415     BEGIN_INTERFACE
   6416 
   6417     /*** IUnknown methods ***/
   6418     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6419         IMFMuxStreamSampleManager *This,
   6420         REFIID riid,
   6421         void **ppvObject);
   6422 
   6423     ULONG (STDMETHODCALLTYPE *AddRef)(
   6424         IMFMuxStreamSampleManager *This);
   6425 
   6426     ULONG (STDMETHODCALLTYPE *Release)(
   6427         IMFMuxStreamSampleManager *This);
   6428 
   6429     /*** IMFMuxStreamSampleManager methods ***/
   6430     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
   6431         IMFMuxStreamSampleManager *This,
   6432         DWORD *pdwMuxStreamCount);
   6433 
   6434     HRESULT (STDMETHODCALLTYPE *GetSample)(
   6435         IMFMuxStreamSampleManager *This,
   6436         DWORD dwMuxStreamIndex,
   6437         IMFSample **ppSample);
   6438 
   6439     ULONGLONG (STDMETHODCALLTYPE *GetStreamConfiguration)(
   6440         IMFMuxStreamSampleManager *This);
   6441 
   6442     END_INTERFACE
   6443 } IMFMuxStreamSampleManagerVtbl;
   6444 
   6445 interface IMFMuxStreamSampleManager {
   6446     CONST_VTBL IMFMuxStreamSampleManagerVtbl* lpVtbl;
   6447 };
   6448 
   6449 #ifdef COBJMACROS
   6450 #ifndef WIDL_C_INLINE_WRAPPERS
   6451 /*** IUnknown methods ***/
   6452 #define IMFMuxStreamSampleManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6453 #define IMFMuxStreamSampleManager_AddRef(This) (This)->lpVtbl->AddRef(This)
   6454 #define IMFMuxStreamSampleManager_Release(This) (This)->lpVtbl->Release(This)
   6455 /*** IMFMuxStreamSampleManager methods ***/
   6456 #define IMFMuxStreamSampleManager_GetStreamCount(This,pdwMuxStreamCount) (This)->lpVtbl->GetStreamCount(This,pdwMuxStreamCount)
   6457 #define IMFMuxStreamSampleManager_GetSample(This,dwMuxStreamIndex,ppSample) (This)->lpVtbl->GetSample(This,dwMuxStreamIndex,ppSample)
   6458 #define IMFMuxStreamSampleManager_GetStreamConfiguration(This) (This)->lpVtbl->GetStreamConfiguration(This)
   6459 #else
   6460 /*** IUnknown methods ***/
   6461 static inline HRESULT IMFMuxStreamSampleManager_QueryInterface(IMFMuxStreamSampleManager* This,REFIID riid,void **ppvObject) {
   6462     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6463 }
   6464 static inline ULONG IMFMuxStreamSampleManager_AddRef(IMFMuxStreamSampleManager* This) {
   6465     return This->lpVtbl->AddRef(This);
   6466 }
   6467 static inline ULONG IMFMuxStreamSampleManager_Release(IMFMuxStreamSampleManager* This) {
   6468     return This->lpVtbl->Release(This);
   6469 }
   6470 /*** IMFMuxStreamSampleManager methods ***/
   6471 static inline HRESULT IMFMuxStreamSampleManager_GetStreamCount(IMFMuxStreamSampleManager* This,DWORD *pdwMuxStreamCount) {
   6472     return This->lpVtbl->GetStreamCount(This,pdwMuxStreamCount);
   6473 }
   6474 static inline HRESULT IMFMuxStreamSampleManager_GetSample(IMFMuxStreamSampleManager* This,DWORD dwMuxStreamIndex,IMFSample **ppSample) {
   6475     return This->lpVtbl->GetSample(This,dwMuxStreamIndex,ppSample);
   6476 }
   6477 static inline ULONGLONG IMFMuxStreamSampleManager_GetStreamConfiguration(IMFMuxStreamSampleManager* This) {
   6478     return This->lpVtbl->GetStreamConfiguration(This);
   6479 }
   6480 #endif
   6481 #endif
   6482 
   6483 #endif
   6484 
   6485 
   6486 #endif  /* __IMFMuxStreamSampleManager_INTERFACE_DEFINED__ */
   6487 
   6488 #endif
   6489 #endif
   6490 /* Begin additional prototypes for all interfaces */
   6491 
   6492 ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
   6493 unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
   6494 unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
   6495 void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
   6496 ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
   6497 unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
   6498 unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
   6499 void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
   6500 
   6501 /* End additional prototypes */
   6502 
   6503 #ifdef __cplusplus
   6504 }
   6505 #endif
   6506 
   6507 #endif /* __mfobjects_h__ */