Home | History | Annotate | Download | only in include
      1 /*** Autogenerated by WIDL 1.5.29 from /tmp/build-mingw64-toolchain-digit/src/mingw-w64-svn-r5861/mingw-w64-headers/include/mfobjects.idl - Do not edit ***/
      2 
      3 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      4 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      5 #endif
      6 
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 
     10 #ifndef COM_NO_WINDOWS_H
     11 #include <windows.h>
     12 #include <ole2.h>
     13 #endif
     14 
     15 #ifndef __mfobjects_h__
     16 #define __mfobjects_h__
     17 
     18 /* Forward declarations */
     19 
     20 #ifndef __IMFAttributes_FWD_DEFINED__
     21 #define __IMFAttributes_FWD_DEFINED__
     22 typedef interface IMFAttributes IMFAttributes;
     23 #endif
     24 
     25 #ifndef __IMFMediaBuffer_FWD_DEFINED__
     26 #define __IMFMediaBuffer_FWD_DEFINED__
     27 typedef interface IMFMediaBuffer IMFMediaBuffer;
     28 #endif
     29 
     30 #ifndef __IMFSample_FWD_DEFINED__
     31 #define __IMFSample_FWD_DEFINED__
     32 typedef interface IMFSample IMFSample;
     33 #endif
     34 
     35 #ifndef __IMF2DBuffer_FWD_DEFINED__
     36 #define __IMF2DBuffer_FWD_DEFINED__
     37 typedef interface IMF2DBuffer IMF2DBuffer;
     38 #endif
     39 
     40 #ifndef __IMFMediaType_FWD_DEFINED__
     41 #define __IMFMediaType_FWD_DEFINED__
     42 typedef interface IMFMediaType IMFMediaType;
     43 #endif
     44 
     45 #ifndef __IMFAudioMediaType_FWD_DEFINED__
     46 #define __IMFAudioMediaType_FWD_DEFINED__
     47 typedef interface IMFAudioMediaType IMFAudioMediaType;
     48 #endif
     49 
     50 #ifndef __IMFVideoMediaType_FWD_DEFINED__
     51 #define __IMFVideoMediaType_FWD_DEFINED__
     52 typedef interface IMFVideoMediaType IMFVideoMediaType;
     53 #endif
     54 
     55 #ifndef __IMFAsyncResult_FWD_DEFINED__
     56 #define __IMFAsyncResult_FWD_DEFINED__
     57 typedef interface IMFAsyncResult IMFAsyncResult;
     58 #endif
     59 
     60 #ifndef __IMFAsyncCallback_FWD_DEFINED__
     61 #define __IMFAsyncCallback_FWD_DEFINED__
     62 typedef interface IMFAsyncCallback IMFAsyncCallback;
     63 #endif
     64 
     65 #ifndef __IMFRemoteAsyncCallback_FWD_DEFINED__
     66 #define __IMFRemoteAsyncCallback_FWD_DEFINED__
     67 typedef interface IMFRemoteAsyncCallback IMFRemoteAsyncCallback;
     68 #endif
     69 
     70 #ifndef __IMFMediaEvent_FWD_DEFINED__
     71 #define __IMFMediaEvent_FWD_DEFINED__
     72 typedef interface IMFMediaEvent IMFMediaEvent;
     73 #endif
     74 
     75 #ifndef __IMFMediaEventGenerator_FWD_DEFINED__
     76 #define __IMFMediaEventGenerator_FWD_DEFINED__
     77 typedef interface IMFMediaEventGenerator IMFMediaEventGenerator;
     78 #endif
     79 
     80 #ifndef __IMFByteStream_FWD_DEFINED__
     81 #define __IMFByteStream_FWD_DEFINED__
     82 typedef interface IMFByteStream IMFByteStream;
     83 #endif
     84 
     85 #ifndef __IMFCollection_FWD_DEFINED__
     86 #define __IMFCollection_FWD_DEFINED__
     87 typedef interface IMFCollection IMFCollection;
     88 #endif
     89 
     90 #ifndef __IMFActivate_FWD_DEFINED__
     91 #define __IMFActivate_FWD_DEFINED__
     92 typedef interface IMFActivate IMFActivate;
     93 #endif
     94 
     95 #ifndef __IMFPluginControl_FWD_DEFINED__
     96 #define __IMFPluginControl_FWD_DEFINED__
     97 typedef interface IMFPluginControl IMFPluginControl;
     98 #endif
     99 
    100 /* Headers for imported files */
    101 
    102 #include <unknwn.h>
    103 #include <propsys.h>
    104 #include <mediaobj.h>
    105 
    106 #ifdef __cplusplus
    107 extern "C" {
    108 #endif
    109 
    110 #include <mmreg.h>
    111 #if 0
    112 typedef struct tWAVEFORMATEX {
    113     WORD wFormatTag;
    114     WORD nChannels;
    115     DWORD nSamplesPerSec;
    116     DWORD nAvgBytesPerSec;
    117     WORD nBlockAlign;
    118     WORD wBitsPerSample;
    119     WORD cbSize;
    120     BYTE pExtraBytes[1];
    121 } WAVEFORMATEX;
    122 typedef struct tWAVEFORMATEX *PWAVEFORMATEX;
    123 typedef struct tWAVEFORMATEX *NPWAVEFORMATEX;
    124 typedef struct tWAVEFORMATEX *LPWAVEFORMATEX;
    125 typedef struct __WIDL_mmreg_h_generated_name_00000000 {
    126     WORD wFormatTag;
    127     WORD nChannels;
    128     DWORD nSamplesPerSec;
    129     DWORD nAvgBytesPerSec;
    130     WORD nBlockAlign;
    131     WORD wBitsPerSample;
    132     WORD cbSize;
    133     WORD wValidBitsPerSample;
    134     DWORD dwChannelMask;
    135     GUID SubFormat;
    136 } WAVEFORMATEXTENSIBLE;
    137 typedef struct __WIDL_mmreg_h_generated_name_00000000 *PWAVEFORMATEXTENSIBLE;
    138 #endif
    139 typedef ULONGLONG QWORD;
    140 typedef enum _MF_ATTRIBUTE_TYPE {
    141     MF_ATTRIBUTE_UINT32 = VT_UI4,
    142     MF_ATTRIBUTE_UINT64 = VT_UI8,
    143     MF_ATTRIBUTE_DOUBLE = VT_R8,
    144     MF_ATTRIBUTE_GUID = VT_CLSID,
    145     MF_ATTRIBUTE_STRING = VT_LPWSTR,
    146     MF_ATTRIBUTE_BLOB = VT_VECTOR | VT_UI1,
    147     MF_ATTRIBUTE_IUNKNOWN = VT_UNKNOWN
    148 } MF_ATTRIBUTE_TYPE;
    149 typedef enum _MF_ATTRIBUTES_MATCH_TYPE {
    150     MF_ATTRIBUTES_MATCH_OUR_ITEMS = 0,
    151     MF_ATTRIBUTES_MATCH_THEIR_ITEMS = 1,
    152     MF_ATTRIBUTES_MATCH_ALL_ITEMS = 2,
    153     MF_ATTRIBUTES_MATCH_INTERSECTION = 3,
    154     MF_ATTRIBUTES_MATCH_SMALLER = 4
    155 } MF_ATTRIBUTES_MATCH_TYPE;
    156 /*****************************************************************************
    157  * IMFAttributes interface
    158  */
    159 #ifndef __IMFAttributes_INTERFACE_DEFINED__
    160 #define __IMFAttributes_INTERFACE_DEFINED__
    161 
    162 DEFINE_GUID(IID_IMFAttributes, 0x2cd2d921, 0xc447, 0x44a7, 0xa1,0x3c, 0x4a,0xda,0xbf,0xc2,0x47,0xe3);
    163 #if defined(__cplusplus) && !defined(CINTERFACE)
    164 MIDL_INTERFACE("2cd2d921-c447-44a7-a13c-4adabfc247e3")
    165 IMFAttributes : public IUnknown
    166 {
    167     virtual HRESULT STDMETHODCALLTYPE GetItem(
    168         REFGUID guidKey,
    169         PROPVARIANT *pValue) = 0;
    170 
    171     virtual HRESULT STDMETHODCALLTYPE GetItemType(
    172         REFGUID guidKey,
    173         MF_ATTRIBUTE_TYPE *pType) = 0;
    174 
    175     virtual HRESULT STDMETHODCALLTYPE CompareItem(
    176         REFGUID guidKey,
    177         REFPROPVARIANT Value,
    178         WINBOOL *pbResult) = 0;
    179 
    180     virtual HRESULT STDMETHODCALLTYPE Compare(
    181         IMFAttributes *pTheirs,
    182         MF_ATTRIBUTES_MATCH_TYPE MatchType,
    183         WINBOOL *pbResult) = 0;
    184 
    185     virtual HRESULT STDMETHODCALLTYPE GetUINT32(
    186         REFGUID guidKey,
    187         UINT32 *punValue) = 0;
    188 
    189     virtual HRESULT STDMETHODCALLTYPE GetUINT64(
    190         REFGUID guidKey,
    191         UINT64 *punValue) = 0;
    192 
    193     virtual HRESULT STDMETHODCALLTYPE GetDouble(
    194         REFGUID guidKey,
    195         double *pfValue) = 0;
    196 
    197     virtual HRESULT STDMETHODCALLTYPE GetGUID(
    198         REFGUID guidKey,
    199         GUID *pguidValue) = 0;
    200 
    201     virtual HRESULT STDMETHODCALLTYPE GetStringLength(
    202         REFGUID guidKey,
    203         UINT32 *pcchLength) = 0;
    204 
    205     virtual HRESULT STDMETHODCALLTYPE GetString(
    206         REFGUID guidKey,
    207         LPWSTR pwszValue,
    208         UINT32 cchBufSize,
    209         UINT32 *pcchLength) = 0;
    210 
    211     virtual HRESULT STDMETHODCALLTYPE GetAllocatedString(
    212         REFGUID guidKey,
    213         LPWSTR *ppwszValue,
    214         UINT32 *pcchLength) = 0;
    215 
    216     virtual HRESULT STDMETHODCALLTYPE GetBlobSize(
    217         REFGUID guidKey,
    218         UINT32 *pcbBlobSize) = 0;
    219 
    220     virtual HRESULT STDMETHODCALLTYPE GetBlob(
    221         REFGUID guidKey,
    222         UINT8 *pBuf,
    223         UINT32 cbBufSize,
    224         UINT32 *pcbBlobSize) = 0;
    225 
    226     virtual HRESULT STDMETHODCALLTYPE GetAllocatedBlob(
    227         REFGUID guidKey,
    228         UINT8 **ppBuf,
    229         UINT32 *pcbSize) = 0;
    230 
    231     virtual HRESULT STDMETHODCALLTYPE GetUnknown(
    232         REFGUID guidKey,
    233         REFIID riid,
    234         LPVOID *ppv) = 0;
    235 
    236     virtual HRESULT STDMETHODCALLTYPE SetItem(
    237         REFGUID guidKey,
    238         REFPROPVARIANT Value) = 0;
    239 
    240     virtual HRESULT STDMETHODCALLTYPE DeleteItem(
    241         REFGUID guidKey) = 0;
    242 
    243     virtual HRESULT STDMETHODCALLTYPE DeleteAllItems(
    244         ) = 0;
    245 
    246     virtual HRESULT STDMETHODCALLTYPE SetUINT32(
    247         REFGUID guidKey,
    248         UINT32 unValue) = 0;
    249 
    250     virtual HRESULT STDMETHODCALLTYPE SetUINT64(
    251         REFGUID guidKey,
    252         UINT64 unValue) = 0;
    253 
    254     virtual HRESULT STDMETHODCALLTYPE SetDouble(
    255         REFGUID guidKey,
    256         double fValue) = 0;
    257 
    258     virtual HRESULT STDMETHODCALLTYPE SetGUID(
    259         REFGUID guidKey,
    260         REFGUID guidValue) = 0;
    261 
    262     virtual HRESULT STDMETHODCALLTYPE SetString(
    263         REFGUID guidKey,
    264         LPCWSTR wszValue) = 0;
    265 
    266     virtual HRESULT STDMETHODCALLTYPE SetBlob(
    267         REFGUID guidKey,
    268         const UINT8 *pBuf,
    269         UINT32 cbBufSize) = 0;
    270 
    271     virtual HRESULT STDMETHODCALLTYPE SetUnknown(
    272         REFGUID guidKey,
    273         IUnknown *pUnknown) = 0;
    274 
    275     virtual HRESULT STDMETHODCALLTYPE LockStore(
    276         ) = 0;
    277 
    278     virtual HRESULT STDMETHODCALLTYPE UnlockStore(
    279         ) = 0;
    280 
    281     virtual HRESULT STDMETHODCALLTYPE GetCount(
    282         UINT32 *pcItems) = 0;
    283 
    284     virtual HRESULT STDMETHODCALLTYPE GetItemByIndex(
    285         UINT32 unIndex,
    286         GUID *pguidKey,
    287         PROPVARIANT *pValue) = 0;
    288 
    289     virtual HRESULT STDMETHODCALLTYPE CopyAllItems(
    290         IMFAttributes *pDest) = 0;
    291 
    292 };
    293 #ifdef __CRT_UUID_DECL
    294 __CRT_UUID_DECL(IMFAttributes, 0x2cd2d921, 0xc447, 0x44a7, 0xa1,0x3c, 0x4a,0xda,0xbf,0xc2,0x47,0xe3)
    295 #endif
    296 #else
    297 typedef struct IMFAttributesVtbl {
    298     BEGIN_INTERFACE
    299 
    300     /*** IUnknown methods ***/
    301     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    302         IMFAttributes* This,
    303         REFIID riid,
    304         void **ppvObject);
    305 
    306     ULONG (STDMETHODCALLTYPE *AddRef)(
    307         IMFAttributes* This);
    308 
    309     ULONG (STDMETHODCALLTYPE *Release)(
    310         IMFAttributes* This);
    311 
    312     /*** IMFAttributes methods ***/
    313     HRESULT (STDMETHODCALLTYPE *GetItem)(
    314         IMFAttributes* This,
    315         REFGUID guidKey,
    316         PROPVARIANT *pValue);
    317 
    318     HRESULT (STDMETHODCALLTYPE *GetItemType)(
    319         IMFAttributes* This,
    320         REFGUID guidKey,
    321         MF_ATTRIBUTE_TYPE *pType);
    322 
    323     HRESULT (STDMETHODCALLTYPE *CompareItem)(
    324         IMFAttributes* This,
    325         REFGUID guidKey,
    326         REFPROPVARIANT Value,
    327         WINBOOL *pbResult);
    328 
    329     HRESULT (STDMETHODCALLTYPE *Compare)(
    330         IMFAttributes* This,
    331         IMFAttributes *pTheirs,
    332         MF_ATTRIBUTES_MATCH_TYPE MatchType,
    333         WINBOOL *pbResult);
    334 
    335     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
    336         IMFAttributes* This,
    337         REFGUID guidKey,
    338         UINT32 *punValue);
    339 
    340     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
    341         IMFAttributes* This,
    342         REFGUID guidKey,
    343         UINT64 *punValue);
    344 
    345     HRESULT (STDMETHODCALLTYPE *GetDouble)(
    346         IMFAttributes* This,
    347         REFGUID guidKey,
    348         double *pfValue);
    349 
    350     HRESULT (STDMETHODCALLTYPE *GetGUID)(
    351         IMFAttributes* This,
    352         REFGUID guidKey,
    353         GUID *pguidValue);
    354 
    355     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
    356         IMFAttributes* This,
    357         REFGUID guidKey,
    358         UINT32 *pcchLength);
    359 
    360     HRESULT (STDMETHODCALLTYPE *GetString)(
    361         IMFAttributes* This,
    362         REFGUID guidKey,
    363         LPWSTR pwszValue,
    364         UINT32 cchBufSize,
    365         UINT32 *pcchLength);
    366 
    367     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
    368         IMFAttributes* This,
    369         REFGUID guidKey,
    370         LPWSTR *ppwszValue,
    371         UINT32 *pcchLength);
    372 
    373     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
    374         IMFAttributes* This,
    375         REFGUID guidKey,
    376         UINT32 *pcbBlobSize);
    377 
    378     HRESULT (STDMETHODCALLTYPE *GetBlob)(
    379         IMFAttributes* This,
    380         REFGUID guidKey,
    381         UINT8 *pBuf,
    382         UINT32 cbBufSize,
    383         UINT32 *pcbBlobSize);
    384 
    385     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
    386         IMFAttributes* This,
    387         REFGUID guidKey,
    388         UINT8 **ppBuf,
    389         UINT32 *pcbSize);
    390 
    391     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
    392         IMFAttributes* This,
    393         REFGUID guidKey,
    394         REFIID riid,
    395         LPVOID *ppv);
    396 
    397     HRESULT (STDMETHODCALLTYPE *SetItem)(
    398         IMFAttributes* This,
    399         REFGUID guidKey,
    400         REFPROPVARIANT Value);
    401 
    402     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
    403         IMFAttributes* This,
    404         REFGUID guidKey);
    405 
    406     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
    407         IMFAttributes* This);
    408 
    409     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
    410         IMFAttributes* This,
    411         REFGUID guidKey,
    412         UINT32 unValue);
    413 
    414     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
    415         IMFAttributes* This,
    416         REFGUID guidKey,
    417         UINT64 unValue);
    418 
    419     HRESULT (STDMETHODCALLTYPE *SetDouble)(
    420         IMFAttributes* This,
    421         REFGUID guidKey,
    422         double fValue);
    423 
    424     HRESULT (STDMETHODCALLTYPE *SetGUID)(
    425         IMFAttributes* This,
    426         REFGUID guidKey,
    427         REFGUID guidValue);
    428 
    429     HRESULT (STDMETHODCALLTYPE *SetString)(
    430         IMFAttributes* This,
    431         REFGUID guidKey,
    432         LPCWSTR wszValue);
    433 
    434     HRESULT (STDMETHODCALLTYPE *SetBlob)(
    435         IMFAttributes* This,
    436         REFGUID guidKey,
    437         const UINT8 *pBuf,
    438         UINT32 cbBufSize);
    439 
    440     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
    441         IMFAttributes* This,
    442         REFGUID guidKey,
    443         IUnknown *pUnknown);
    444 
    445     HRESULT (STDMETHODCALLTYPE *LockStore)(
    446         IMFAttributes* This);
    447 
    448     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
    449         IMFAttributes* This);
    450 
    451     HRESULT (STDMETHODCALLTYPE *GetCount)(
    452         IMFAttributes* This,
    453         UINT32 *pcItems);
    454 
    455     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
    456         IMFAttributes* This,
    457         UINT32 unIndex,
    458         GUID *pguidKey,
    459         PROPVARIANT *pValue);
    460 
    461     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
    462         IMFAttributes* This,
    463         IMFAttributes *pDest);
    464 
    465     END_INTERFACE
    466 } IMFAttributesVtbl;
    467 interface IMFAttributes {
    468     CONST_VTBL IMFAttributesVtbl* lpVtbl;
    469 };
    470 
    471 #ifdef COBJMACROS
    472 #ifndef WIDL_C_INLINE_WRAPPERS
    473 /*** IUnknown methods ***/
    474 #define IMFAttributes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    475 #define IMFAttributes_AddRef(This) (This)->lpVtbl->AddRef(This)
    476 #define IMFAttributes_Release(This) (This)->lpVtbl->Release(This)
    477 /*** IMFAttributes methods ***/
    478 #define IMFAttributes_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
    479 #define IMFAttributes_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
    480 #define IMFAttributes_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
    481 #define IMFAttributes_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
    482 #define IMFAttributes_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
    483 #define IMFAttributes_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
    484 #define IMFAttributes_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
    485 #define IMFAttributes_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
    486 #define IMFAttributes_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
    487 #define IMFAttributes_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
    488 #define IMFAttributes_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
    489 #define IMFAttributes_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
    490 #define IMFAttributes_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
    491 #define IMFAttributes_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
    492 #define IMFAttributes_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
    493 #define IMFAttributes_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
    494 #define IMFAttributes_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
    495 #define IMFAttributes_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
    496 #define IMFAttributes_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
    497 #define IMFAttributes_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
    498 #define IMFAttributes_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
    499 #define IMFAttributes_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
    500 #define IMFAttributes_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
    501 #define IMFAttributes_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
    502 #define IMFAttributes_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
    503 #define IMFAttributes_LockStore(This) (This)->lpVtbl->LockStore(This)
    504 #define IMFAttributes_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
    505 #define IMFAttributes_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
    506 #define IMFAttributes_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
    507 #define IMFAttributes_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
    508 #else
    509 /*** IUnknown methods ***/
    510 static FORCEINLINE HRESULT IMFAttributes_QueryInterface(IMFAttributes* This,REFIID riid,void **ppvObject) {
    511     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    512 }
    513 static FORCEINLINE ULONG IMFAttributes_AddRef(IMFAttributes* This) {
    514     return This->lpVtbl->AddRef(This);
    515 }
    516 static FORCEINLINE ULONG IMFAttributes_Release(IMFAttributes* This) {
    517     return This->lpVtbl->Release(This);
    518 }
    519 /*** IMFAttributes methods ***/
    520 static FORCEINLINE HRESULT IMFAttributes_GetItem(IMFAttributes* This,REFGUID guidKey,PROPVARIANT *pValue) {
    521     return This->lpVtbl->GetItem(This,guidKey,pValue);
    522 }
    523 static FORCEINLINE HRESULT IMFAttributes_GetItemType(IMFAttributes* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
    524     return This->lpVtbl->GetItemType(This,guidKey,pType);
    525 }
    526 static FORCEINLINE HRESULT IMFAttributes_CompareItem(IMFAttributes* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
    527     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
    528 }
    529 static FORCEINLINE HRESULT IMFAttributes_Compare(IMFAttributes* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
    530     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
    531 }
    532 static FORCEINLINE HRESULT IMFAttributes_GetUINT32(IMFAttributes* This,REFGUID guidKey,UINT32 *punValue) {
    533     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
    534 }
    535 static FORCEINLINE HRESULT IMFAttributes_GetUINT64(IMFAttributes* This,REFGUID guidKey,UINT64 *punValue) {
    536     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
    537 }
    538 static FORCEINLINE HRESULT IMFAttributes_GetDouble(IMFAttributes* This,REFGUID guidKey,double *pfValue) {
    539     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
    540 }
    541 static FORCEINLINE HRESULT IMFAttributes_GetGUID(IMFAttributes* This,REFGUID guidKey,GUID *pguidValue) {
    542     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
    543 }
    544 static FORCEINLINE HRESULT IMFAttributes_GetStringLength(IMFAttributes* This,REFGUID guidKey,UINT32 *pcchLength) {
    545     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
    546 }
    547 static FORCEINLINE HRESULT IMFAttributes_GetString(IMFAttributes* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
    548     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
    549 }
    550 static FORCEINLINE HRESULT IMFAttributes_GetAllocatedString(IMFAttributes* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
    551     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
    552 }
    553 static FORCEINLINE HRESULT IMFAttributes_GetBlobSize(IMFAttributes* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
    554     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
    555 }
    556 static FORCEINLINE HRESULT IMFAttributes_GetBlob(IMFAttributes* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
    557     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
    558 }
    559 static FORCEINLINE HRESULT IMFAttributes_GetAllocatedBlob(IMFAttributes* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
    560     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
    561 }
    562 static FORCEINLINE HRESULT IMFAttributes_GetUnknown(IMFAttributes* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
    563     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
    564 }
    565 static FORCEINLINE HRESULT IMFAttributes_SetItem(IMFAttributes* This,REFGUID guidKey,REFPROPVARIANT Value) {
    566     return This->lpVtbl->SetItem(This,guidKey,Value);
    567 }
    568 static FORCEINLINE HRESULT IMFAttributes_DeleteItem(IMFAttributes* This,REFGUID guidKey) {
    569     return This->lpVtbl->DeleteItem(This,guidKey);
    570 }
    571 static FORCEINLINE HRESULT IMFAttributes_DeleteAllItems(IMFAttributes* This) {
    572     return This->lpVtbl->DeleteAllItems(This);
    573 }
    574 static FORCEINLINE HRESULT IMFAttributes_SetUINT32(IMFAttributes* This,REFGUID guidKey,UINT32 unValue) {
    575     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
    576 }
    577 static FORCEINLINE HRESULT IMFAttributes_SetUINT64(IMFAttributes* This,REFGUID guidKey,UINT64 unValue) {
    578     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
    579 }
    580 static FORCEINLINE HRESULT IMFAttributes_SetDouble(IMFAttributes* This,REFGUID guidKey,double fValue) {
    581     return This->lpVtbl->SetDouble(This,guidKey,fValue);
    582 }
    583 static FORCEINLINE HRESULT IMFAttributes_SetGUID(IMFAttributes* This,REFGUID guidKey,REFGUID guidValue) {
    584     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
    585 }
    586 static FORCEINLINE HRESULT IMFAttributes_SetString(IMFAttributes* This,REFGUID guidKey,LPCWSTR wszValue) {
    587     return This->lpVtbl->SetString(This,guidKey,wszValue);
    588 }
    589 static FORCEINLINE HRESULT IMFAttributes_SetBlob(IMFAttributes* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
    590     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
    591 }
    592 static FORCEINLINE HRESULT IMFAttributes_SetUnknown(IMFAttributes* This,REFGUID guidKey,IUnknown *pUnknown) {
    593     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
    594 }
    595 static FORCEINLINE HRESULT IMFAttributes_LockStore(IMFAttributes* This) {
    596     return This->lpVtbl->LockStore(This);
    597 }
    598 static FORCEINLINE HRESULT IMFAttributes_UnlockStore(IMFAttributes* This) {
    599     return This->lpVtbl->UnlockStore(This);
    600 }
    601 static FORCEINLINE HRESULT IMFAttributes_GetCount(IMFAttributes* This,UINT32 *pcItems) {
    602     return This->lpVtbl->GetCount(This,pcItems);
    603 }
    604 static FORCEINLINE HRESULT IMFAttributes_GetItemByIndex(IMFAttributes* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
    605     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
    606 }
    607 static FORCEINLINE HRESULT IMFAttributes_CopyAllItems(IMFAttributes* This,IMFAttributes *pDest) {
    608     return This->lpVtbl->CopyAllItems(This,pDest);
    609 }
    610 #endif
    611 #endif
    612 
    613 #endif
    614 
    615 HRESULT STDMETHODCALLTYPE IMFAttributes_GetItem_Proxy(
    616     IMFAttributes* This,
    617     REFGUID guidKey,
    618     PROPVARIANT *pValue);
    619 void __RPC_STUB IMFAttributes_GetItem_Stub(
    620     IRpcStubBuffer* This,
    621     IRpcChannelBuffer* pRpcChannelBuffer,
    622     PRPC_MESSAGE pRpcMessage,
    623     DWORD* pdwStubPhase);
    624 HRESULT STDMETHODCALLTYPE IMFAttributes_GetItemType_Proxy(
    625     IMFAttributes* This,
    626     REFGUID guidKey,
    627     MF_ATTRIBUTE_TYPE *pType);
    628 void __RPC_STUB IMFAttributes_GetItemType_Stub(
    629     IRpcStubBuffer* This,
    630     IRpcChannelBuffer* pRpcChannelBuffer,
    631     PRPC_MESSAGE pRpcMessage,
    632     DWORD* pdwStubPhase);
    633 HRESULT STDMETHODCALLTYPE IMFAttributes_CompareItem_Proxy(
    634     IMFAttributes* This,
    635     REFGUID guidKey,
    636     REFPROPVARIANT Value,
    637     WINBOOL *pbResult);
    638 void __RPC_STUB IMFAttributes_CompareItem_Stub(
    639     IRpcStubBuffer* This,
    640     IRpcChannelBuffer* pRpcChannelBuffer,
    641     PRPC_MESSAGE pRpcMessage,
    642     DWORD* pdwStubPhase);
    643 HRESULT STDMETHODCALLTYPE IMFAttributes_Compare_Proxy(
    644     IMFAttributes* This,
    645     IMFAttributes *pTheirs,
    646     MF_ATTRIBUTES_MATCH_TYPE MatchType,
    647     WINBOOL *pbResult);
    648 void __RPC_STUB IMFAttributes_Compare_Stub(
    649     IRpcStubBuffer* This,
    650     IRpcChannelBuffer* pRpcChannelBuffer,
    651     PRPC_MESSAGE pRpcMessage,
    652     DWORD* pdwStubPhase);
    653 HRESULT STDMETHODCALLTYPE IMFAttributes_GetUINT32_Proxy(
    654     IMFAttributes* This,
    655     REFGUID guidKey,
    656     UINT32 *punValue);
    657 void __RPC_STUB IMFAttributes_GetUINT32_Stub(
    658     IRpcStubBuffer* This,
    659     IRpcChannelBuffer* pRpcChannelBuffer,
    660     PRPC_MESSAGE pRpcMessage,
    661     DWORD* pdwStubPhase);
    662 HRESULT STDMETHODCALLTYPE IMFAttributes_GetUINT64_Proxy(
    663     IMFAttributes* This,
    664     REFGUID guidKey,
    665     UINT64 *punValue);
    666 void __RPC_STUB IMFAttributes_GetUINT64_Stub(
    667     IRpcStubBuffer* This,
    668     IRpcChannelBuffer* pRpcChannelBuffer,
    669     PRPC_MESSAGE pRpcMessage,
    670     DWORD* pdwStubPhase);
    671 HRESULT STDMETHODCALLTYPE IMFAttributes_GetDouble_Proxy(
    672     IMFAttributes* This,
    673     REFGUID guidKey,
    674     double *pfValue);
    675 void __RPC_STUB IMFAttributes_GetDouble_Stub(
    676     IRpcStubBuffer* This,
    677     IRpcChannelBuffer* pRpcChannelBuffer,
    678     PRPC_MESSAGE pRpcMessage,
    679     DWORD* pdwStubPhase);
    680 HRESULT STDMETHODCALLTYPE IMFAttributes_GetGUID_Proxy(
    681     IMFAttributes* This,
    682     REFGUID guidKey,
    683     GUID *pguidValue);
    684 void __RPC_STUB IMFAttributes_GetGUID_Stub(
    685     IRpcStubBuffer* This,
    686     IRpcChannelBuffer* pRpcChannelBuffer,
    687     PRPC_MESSAGE pRpcMessage,
    688     DWORD* pdwStubPhase);
    689 HRESULT STDMETHODCALLTYPE IMFAttributes_GetStringLength_Proxy(
    690     IMFAttributes* This,
    691     REFGUID guidKey,
    692     UINT32 *pcchLength);
    693 void __RPC_STUB IMFAttributes_GetStringLength_Stub(
    694     IRpcStubBuffer* This,
    695     IRpcChannelBuffer* pRpcChannelBuffer,
    696     PRPC_MESSAGE pRpcMessage,
    697     DWORD* pdwStubPhase);
    698 HRESULT STDMETHODCALLTYPE IMFAttributes_GetString_Proxy(
    699     IMFAttributes* This,
    700     REFGUID guidKey,
    701     LPWSTR pwszValue,
    702     UINT32 cchBufSize,
    703     UINT32 *pcchLength);
    704 void __RPC_STUB IMFAttributes_GetString_Stub(
    705     IRpcStubBuffer* This,
    706     IRpcChannelBuffer* pRpcChannelBuffer,
    707     PRPC_MESSAGE pRpcMessage,
    708     DWORD* pdwStubPhase);
    709 HRESULT STDMETHODCALLTYPE IMFAttributes_GetAllocatedString_Proxy(
    710     IMFAttributes* This,
    711     REFGUID guidKey,
    712     LPWSTR *ppwszValue,
    713     UINT32 *pcchLength);
    714 void __RPC_STUB IMFAttributes_GetAllocatedString_Stub(
    715     IRpcStubBuffer* This,
    716     IRpcChannelBuffer* pRpcChannelBuffer,
    717     PRPC_MESSAGE pRpcMessage,
    718     DWORD* pdwStubPhase);
    719 HRESULT STDMETHODCALLTYPE IMFAttributes_GetBlobSize_Proxy(
    720     IMFAttributes* This,
    721     REFGUID guidKey,
    722     UINT32 *pcbBlobSize);
    723 void __RPC_STUB IMFAttributes_GetBlobSize_Stub(
    724     IRpcStubBuffer* This,
    725     IRpcChannelBuffer* pRpcChannelBuffer,
    726     PRPC_MESSAGE pRpcMessage,
    727     DWORD* pdwStubPhase);
    728 HRESULT STDMETHODCALLTYPE IMFAttributes_GetBlob_Proxy(
    729     IMFAttributes* This,
    730     REFGUID guidKey,
    731     UINT8 *pBuf,
    732     UINT32 cbBufSize,
    733     UINT32 *pcbBlobSize);
    734 void __RPC_STUB IMFAttributes_GetBlob_Stub(
    735     IRpcStubBuffer* This,
    736     IRpcChannelBuffer* pRpcChannelBuffer,
    737     PRPC_MESSAGE pRpcMessage,
    738     DWORD* pdwStubPhase);
    739 HRESULT STDMETHODCALLTYPE IMFAttributes_GetAllocatedBlob_Proxy(
    740     IMFAttributes* This,
    741     REFGUID guidKey,
    742     UINT8 **ppBuf,
    743     UINT32 *pcbSize);
    744 void __RPC_STUB IMFAttributes_GetAllocatedBlob_Stub(
    745     IRpcStubBuffer* This,
    746     IRpcChannelBuffer* pRpcChannelBuffer,
    747     PRPC_MESSAGE pRpcMessage,
    748     DWORD* pdwStubPhase);
    749 HRESULT STDMETHODCALLTYPE IMFAttributes_GetUnknown_Proxy(
    750     IMFAttributes* This,
    751     REFGUID guidKey,
    752     REFIID riid,
    753     LPVOID *ppv);
    754 void __RPC_STUB IMFAttributes_GetUnknown_Stub(
    755     IRpcStubBuffer* This,
    756     IRpcChannelBuffer* pRpcChannelBuffer,
    757     PRPC_MESSAGE pRpcMessage,
    758     DWORD* pdwStubPhase);
    759 HRESULT STDMETHODCALLTYPE IMFAttributes_SetItem_Proxy(
    760     IMFAttributes* This,
    761     REFGUID guidKey,
    762     REFPROPVARIANT Value);
    763 void __RPC_STUB IMFAttributes_SetItem_Stub(
    764     IRpcStubBuffer* This,
    765     IRpcChannelBuffer* pRpcChannelBuffer,
    766     PRPC_MESSAGE pRpcMessage,
    767     DWORD* pdwStubPhase);
    768 HRESULT STDMETHODCALLTYPE IMFAttributes_DeleteItem_Proxy(
    769     IMFAttributes* This,
    770     REFGUID guidKey);
    771 void __RPC_STUB IMFAttributes_DeleteItem_Stub(
    772     IRpcStubBuffer* This,
    773     IRpcChannelBuffer* pRpcChannelBuffer,
    774     PRPC_MESSAGE pRpcMessage,
    775     DWORD* pdwStubPhase);
    776 HRESULT STDMETHODCALLTYPE IMFAttributes_DeleteAllItems_Proxy(
    777     IMFAttributes* This);
    778 void __RPC_STUB IMFAttributes_DeleteAllItems_Stub(
    779     IRpcStubBuffer* This,
    780     IRpcChannelBuffer* pRpcChannelBuffer,
    781     PRPC_MESSAGE pRpcMessage,
    782     DWORD* pdwStubPhase);
    783 HRESULT STDMETHODCALLTYPE IMFAttributes_SetUINT32_Proxy(
    784     IMFAttributes* This,
    785     REFGUID guidKey,
    786     UINT32 unValue);
    787 void __RPC_STUB IMFAttributes_SetUINT32_Stub(
    788     IRpcStubBuffer* This,
    789     IRpcChannelBuffer* pRpcChannelBuffer,
    790     PRPC_MESSAGE pRpcMessage,
    791     DWORD* pdwStubPhase);
    792 HRESULT STDMETHODCALLTYPE IMFAttributes_SetUINT64_Proxy(
    793     IMFAttributes* This,
    794     REFGUID guidKey,
    795     UINT64 unValue);
    796 void __RPC_STUB IMFAttributes_SetUINT64_Stub(
    797     IRpcStubBuffer* This,
    798     IRpcChannelBuffer* pRpcChannelBuffer,
    799     PRPC_MESSAGE pRpcMessage,
    800     DWORD* pdwStubPhase);
    801 HRESULT STDMETHODCALLTYPE IMFAttributes_SetDouble_Proxy(
    802     IMFAttributes* This,
    803     REFGUID guidKey,
    804     double fValue);
    805 void __RPC_STUB IMFAttributes_SetDouble_Stub(
    806     IRpcStubBuffer* This,
    807     IRpcChannelBuffer* pRpcChannelBuffer,
    808     PRPC_MESSAGE pRpcMessage,
    809     DWORD* pdwStubPhase);
    810 HRESULT STDMETHODCALLTYPE IMFAttributes_SetGUID_Proxy(
    811     IMFAttributes* This,
    812     REFGUID guidKey,
    813     REFGUID guidValue);
    814 void __RPC_STUB IMFAttributes_SetGUID_Stub(
    815     IRpcStubBuffer* This,
    816     IRpcChannelBuffer* pRpcChannelBuffer,
    817     PRPC_MESSAGE pRpcMessage,
    818     DWORD* pdwStubPhase);
    819 HRESULT STDMETHODCALLTYPE IMFAttributes_SetString_Proxy(
    820     IMFAttributes* This,
    821     REFGUID guidKey,
    822     LPCWSTR wszValue);
    823 void __RPC_STUB IMFAttributes_SetString_Stub(
    824     IRpcStubBuffer* This,
    825     IRpcChannelBuffer* pRpcChannelBuffer,
    826     PRPC_MESSAGE pRpcMessage,
    827     DWORD* pdwStubPhase);
    828 HRESULT STDMETHODCALLTYPE IMFAttributes_SetBlob_Proxy(
    829     IMFAttributes* This,
    830     REFGUID guidKey,
    831     const UINT8 *pBuf,
    832     UINT32 cbBufSize);
    833 void __RPC_STUB IMFAttributes_SetBlob_Stub(
    834     IRpcStubBuffer* This,
    835     IRpcChannelBuffer* pRpcChannelBuffer,
    836     PRPC_MESSAGE pRpcMessage,
    837     DWORD* pdwStubPhase);
    838 HRESULT STDMETHODCALLTYPE IMFAttributes_SetUnknown_Proxy(
    839     IMFAttributes* This,
    840     REFGUID guidKey,
    841     IUnknown *pUnknown);
    842 void __RPC_STUB IMFAttributes_SetUnknown_Stub(
    843     IRpcStubBuffer* This,
    844     IRpcChannelBuffer* pRpcChannelBuffer,
    845     PRPC_MESSAGE pRpcMessage,
    846     DWORD* pdwStubPhase);
    847 HRESULT STDMETHODCALLTYPE IMFAttributes_LockStore_Proxy(
    848     IMFAttributes* This);
    849 void __RPC_STUB IMFAttributes_LockStore_Stub(
    850     IRpcStubBuffer* This,
    851     IRpcChannelBuffer* pRpcChannelBuffer,
    852     PRPC_MESSAGE pRpcMessage,
    853     DWORD* pdwStubPhase);
    854 HRESULT STDMETHODCALLTYPE IMFAttributes_UnlockStore_Proxy(
    855     IMFAttributes* This);
    856 void __RPC_STUB IMFAttributes_UnlockStore_Stub(
    857     IRpcStubBuffer* This,
    858     IRpcChannelBuffer* pRpcChannelBuffer,
    859     PRPC_MESSAGE pRpcMessage,
    860     DWORD* pdwStubPhase);
    861 HRESULT STDMETHODCALLTYPE IMFAttributes_GetCount_Proxy(
    862     IMFAttributes* This,
    863     UINT32 *pcItems);
    864 void __RPC_STUB IMFAttributes_GetCount_Stub(
    865     IRpcStubBuffer* This,
    866     IRpcChannelBuffer* pRpcChannelBuffer,
    867     PRPC_MESSAGE pRpcMessage,
    868     DWORD* pdwStubPhase);
    869 HRESULT STDMETHODCALLTYPE IMFAttributes_GetItemByIndex_Proxy(
    870     IMFAttributes* This,
    871     UINT32 unIndex,
    872     GUID *pguidKey,
    873     PROPVARIANT *pValue);
    874 void __RPC_STUB IMFAttributes_GetItemByIndex_Stub(
    875     IRpcStubBuffer* This,
    876     IRpcChannelBuffer* pRpcChannelBuffer,
    877     PRPC_MESSAGE pRpcMessage,
    878     DWORD* pdwStubPhase);
    879 HRESULT STDMETHODCALLTYPE IMFAttributes_CopyAllItems_Proxy(
    880     IMFAttributes* This,
    881     IMFAttributes *pDest);
    882 void __RPC_STUB IMFAttributes_CopyAllItems_Stub(
    883     IRpcStubBuffer* This,
    884     IRpcChannelBuffer* pRpcChannelBuffer,
    885     PRPC_MESSAGE pRpcMessage,
    886     DWORD* pdwStubPhase);
    887 
    888 #endif  /* __IMFAttributes_INTERFACE_DEFINED__ */
    889 
    890 enum MF_ATTRIBUTE_SERIALIZE_OPTIONS {
    891     MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF = 0x1
    892 };
    893 
    894 /*****************************************************************************
    895  * IMFMediaBuffer interface
    896  */
    897 #ifndef __IMFMediaBuffer_INTERFACE_DEFINED__
    898 #define __IMFMediaBuffer_INTERFACE_DEFINED__
    899 
    900 DEFINE_GUID(IID_IMFMediaBuffer, 0x045fa593, 0x8799, 0x42b8, 0xbc,0x8d, 0x89,0x68,0xc6,0x45,0x35,0x07);
    901 #if defined(__cplusplus) && !defined(CINTERFACE)
    902 MIDL_INTERFACE("045fa593-8799-42b8-bc8d-8968c6453507")
    903 IMFMediaBuffer : public IUnknown
    904 {
    905     virtual HRESULT STDMETHODCALLTYPE Lock(
    906         BYTE **ppbBuffer,
    907         DWORD *pcbMaxLength,
    908         DWORD *pcbCurrentLength) = 0;
    909 
    910     virtual HRESULT STDMETHODCALLTYPE Unlock(
    911         ) = 0;
    912 
    913     virtual HRESULT STDMETHODCALLTYPE GetCurrentLength(
    914         DWORD *pcbCurrentLength) = 0;
    915 
    916     virtual HRESULT STDMETHODCALLTYPE SetCurrentLength(
    917         DWORD cbCurrentLength) = 0;
    918 
    919     virtual HRESULT STDMETHODCALLTYPE GetMaxLength(
    920         DWORD *pcbMaxLength) = 0;
    921 
    922 };
    923 #ifdef __CRT_UUID_DECL
    924 __CRT_UUID_DECL(IMFMediaBuffer, 0x045fa593, 0x8799, 0x42b8, 0xbc,0x8d, 0x89,0x68,0xc6,0x45,0x35,0x07)
    925 #endif
    926 #else
    927 typedef struct IMFMediaBufferVtbl {
    928     BEGIN_INTERFACE
    929 
    930     /*** IUnknown methods ***/
    931     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    932         IMFMediaBuffer* This,
    933         REFIID riid,
    934         void **ppvObject);
    935 
    936     ULONG (STDMETHODCALLTYPE *AddRef)(
    937         IMFMediaBuffer* This);
    938 
    939     ULONG (STDMETHODCALLTYPE *Release)(
    940         IMFMediaBuffer* This);
    941 
    942     /*** IMFMediaBuffer methods ***/
    943     HRESULT (STDMETHODCALLTYPE *Lock)(
    944         IMFMediaBuffer* This,
    945         BYTE **ppbBuffer,
    946         DWORD *pcbMaxLength,
    947         DWORD *pcbCurrentLength);
    948 
    949     HRESULT (STDMETHODCALLTYPE *Unlock)(
    950         IMFMediaBuffer* This);
    951 
    952     HRESULT (STDMETHODCALLTYPE *GetCurrentLength)(
    953         IMFMediaBuffer* This,
    954         DWORD *pcbCurrentLength);
    955 
    956     HRESULT (STDMETHODCALLTYPE *SetCurrentLength)(
    957         IMFMediaBuffer* This,
    958         DWORD cbCurrentLength);
    959 
    960     HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
    961         IMFMediaBuffer* This,
    962         DWORD *pcbMaxLength);
    963 
    964     END_INTERFACE
    965 } IMFMediaBufferVtbl;
    966 interface IMFMediaBuffer {
    967     CONST_VTBL IMFMediaBufferVtbl* lpVtbl;
    968 };
    969 
    970 #ifdef COBJMACROS
    971 #ifndef WIDL_C_INLINE_WRAPPERS
    972 /*** IUnknown methods ***/
    973 #define IMFMediaBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    974 #define IMFMediaBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
    975 #define IMFMediaBuffer_Release(This) (This)->lpVtbl->Release(This)
    976 /*** IMFMediaBuffer methods ***/
    977 #define IMFMediaBuffer_Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength) (This)->lpVtbl->Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength)
    978 #define IMFMediaBuffer_Unlock(This) (This)->lpVtbl->Unlock(This)
    979 #define IMFMediaBuffer_GetCurrentLength(This,pcbCurrentLength) (This)->lpVtbl->GetCurrentLength(This,pcbCurrentLength)
    980 #define IMFMediaBuffer_SetCurrentLength(This,cbCurrentLength) (This)->lpVtbl->SetCurrentLength(This,cbCurrentLength)
    981 #define IMFMediaBuffer_GetMaxLength(This,pcbMaxLength) (This)->lpVtbl->GetMaxLength(This,pcbMaxLength)
    982 #else
    983 /*** IUnknown methods ***/
    984 static FORCEINLINE HRESULT IMFMediaBuffer_QueryInterface(IMFMediaBuffer* This,REFIID riid,void **ppvObject) {
    985     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    986 }
    987 static FORCEINLINE ULONG IMFMediaBuffer_AddRef(IMFMediaBuffer* This) {
    988     return This->lpVtbl->AddRef(This);
    989 }
    990 static FORCEINLINE ULONG IMFMediaBuffer_Release(IMFMediaBuffer* This) {
    991     return This->lpVtbl->Release(This);
    992 }
    993 /*** IMFMediaBuffer methods ***/
    994 static FORCEINLINE HRESULT IMFMediaBuffer_Lock(IMFMediaBuffer* This,BYTE **ppbBuffer,DWORD *pcbMaxLength,DWORD *pcbCurrentLength) {
    995     return This->lpVtbl->Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength);
    996 }
    997 static FORCEINLINE HRESULT IMFMediaBuffer_Unlock(IMFMediaBuffer* This) {
    998     return This->lpVtbl->Unlock(This);
    999 }
   1000 static FORCEINLINE HRESULT IMFMediaBuffer_GetCurrentLength(IMFMediaBuffer* This,DWORD *pcbCurrentLength) {
   1001     return This->lpVtbl->GetCurrentLength(This,pcbCurrentLength);
   1002 }
   1003 static FORCEINLINE HRESULT IMFMediaBuffer_SetCurrentLength(IMFMediaBuffer* This,DWORD cbCurrentLength) {
   1004     return This->lpVtbl->SetCurrentLength(This,cbCurrentLength);
   1005 }
   1006 static FORCEINLINE HRESULT IMFMediaBuffer_GetMaxLength(IMFMediaBuffer* This,DWORD *pcbMaxLength) {
   1007     return This->lpVtbl->GetMaxLength(This,pcbMaxLength);
   1008 }
   1009 #endif
   1010 #endif
   1011 
   1012 #endif
   1013 
   1014 HRESULT STDMETHODCALLTYPE IMFMediaBuffer_Lock_Proxy(
   1015     IMFMediaBuffer* This,
   1016     BYTE **ppbBuffer,
   1017     DWORD *pcbMaxLength,
   1018     DWORD *pcbCurrentLength);
   1019 void __RPC_STUB IMFMediaBuffer_Lock_Stub(
   1020     IRpcStubBuffer* This,
   1021     IRpcChannelBuffer* pRpcChannelBuffer,
   1022     PRPC_MESSAGE pRpcMessage,
   1023     DWORD* pdwStubPhase);
   1024 HRESULT STDMETHODCALLTYPE IMFMediaBuffer_Unlock_Proxy(
   1025     IMFMediaBuffer* This);
   1026 void __RPC_STUB IMFMediaBuffer_Unlock_Stub(
   1027     IRpcStubBuffer* This,
   1028     IRpcChannelBuffer* pRpcChannelBuffer,
   1029     PRPC_MESSAGE pRpcMessage,
   1030     DWORD* pdwStubPhase);
   1031 HRESULT STDMETHODCALLTYPE IMFMediaBuffer_GetCurrentLength_Proxy(
   1032     IMFMediaBuffer* This,
   1033     DWORD *pcbCurrentLength);
   1034 void __RPC_STUB IMFMediaBuffer_GetCurrentLength_Stub(
   1035     IRpcStubBuffer* This,
   1036     IRpcChannelBuffer* pRpcChannelBuffer,
   1037     PRPC_MESSAGE pRpcMessage,
   1038     DWORD* pdwStubPhase);
   1039 HRESULT STDMETHODCALLTYPE IMFMediaBuffer_SetCurrentLength_Proxy(
   1040     IMFMediaBuffer* This,
   1041     DWORD cbCurrentLength);
   1042 void __RPC_STUB IMFMediaBuffer_SetCurrentLength_Stub(
   1043     IRpcStubBuffer* This,
   1044     IRpcChannelBuffer* pRpcChannelBuffer,
   1045     PRPC_MESSAGE pRpcMessage,
   1046     DWORD* pdwStubPhase);
   1047 HRESULT STDMETHODCALLTYPE IMFMediaBuffer_GetMaxLength_Proxy(
   1048     IMFMediaBuffer* This,
   1049     DWORD *pcbMaxLength);
   1050 void __RPC_STUB IMFMediaBuffer_GetMaxLength_Stub(
   1051     IRpcStubBuffer* This,
   1052     IRpcChannelBuffer* pRpcChannelBuffer,
   1053     PRPC_MESSAGE pRpcMessage,
   1054     DWORD* pdwStubPhase);
   1055 
   1056 #endif  /* __IMFMediaBuffer_INTERFACE_DEFINED__ */
   1057 
   1058 /*****************************************************************************
   1059  * IMFSample interface
   1060  */
   1061 #ifndef __IMFSample_INTERFACE_DEFINED__
   1062 #define __IMFSample_INTERFACE_DEFINED__
   1063 
   1064 DEFINE_GUID(IID_IMFSample, 0xc40a00f2, 0xb93a, 0x4d80, 0xae,0x8c, 0x5a,0x1c,0x63,0x4f,0x58,0xe4);
   1065 #if defined(__cplusplus) && !defined(CINTERFACE)
   1066 MIDL_INTERFACE("c40a00f2-b93a-4d80-ae8c-5a1c634f58e4")
   1067 IMFSample : public IMFAttributes
   1068 {
   1069     virtual HRESULT STDMETHODCALLTYPE GetSampleFlags(
   1070         DWORD *pdwSampleFlags) = 0;
   1071 
   1072     virtual HRESULT STDMETHODCALLTYPE SetSampleFlags(
   1073         DWORD dwSampleFlags) = 0;
   1074 
   1075     virtual HRESULT STDMETHODCALLTYPE GetSampleTime(
   1076         LONGLONG *phnsSampleTime) = 0;
   1077 
   1078     virtual HRESULT STDMETHODCALLTYPE SetSampleTime(
   1079         LONGLONG hnsSampleTime) = 0;
   1080 
   1081     virtual HRESULT STDMETHODCALLTYPE GetSampleDuration(
   1082         LONGLONG *phnsSampleDuration) = 0;
   1083 
   1084     virtual HRESULT STDMETHODCALLTYPE SetSampleDuration(
   1085         LONGLONG hnsSampleDuration) = 0;
   1086 
   1087     virtual HRESULT STDMETHODCALLTYPE GetBufferCount(
   1088         DWORD *pdwBufferCount) = 0;
   1089 
   1090     virtual HRESULT STDMETHODCALLTYPE GetBufferByIndex(
   1091         DWORD dwIndex,
   1092         IMFMediaBuffer **ppBuffer) = 0;
   1093 
   1094     virtual HRESULT STDMETHODCALLTYPE ConvertToContiguousBuffer(
   1095         IMFMediaBuffer **ppBuffer) = 0;
   1096 
   1097     virtual HRESULT STDMETHODCALLTYPE AddBuffer(
   1098         IMFMediaBuffer *pBuffer) = 0;
   1099 
   1100     virtual HRESULT STDMETHODCALLTYPE RemoveBufferByIndex(
   1101         DWORD dwIndex) = 0;
   1102 
   1103     virtual HRESULT STDMETHODCALLTYPE RemoveAllBuffers(
   1104         ) = 0;
   1105 
   1106     virtual HRESULT STDMETHODCALLTYPE GetTotalLength(
   1107         DWORD *pcbTotalLength) = 0;
   1108 
   1109     virtual HRESULT STDMETHODCALLTYPE CopyToBuffer(
   1110         IMFMediaBuffer *pBuffer) = 0;
   1111 
   1112 };
   1113 #ifdef __CRT_UUID_DECL
   1114 __CRT_UUID_DECL(IMFSample, 0xc40a00f2, 0xb93a, 0x4d80, 0xae,0x8c, 0x5a,0x1c,0x63,0x4f,0x58,0xe4)
   1115 #endif
   1116 #else
   1117 typedef struct IMFSampleVtbl {
   1118     BEGIN_INTERFACE
   1119 
   1120     /*** IUnknown methods ***/
   1121     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1122         IMFSample* This,
   1123         REFIID riid,
   1124         void **ppvObject);
   1125 
   1126     ULONG (STDMETHODCALLTYPE *AddRef)(
   1127         IMFSample* This);
   1128 
   1129     ULONG (STDMETHODCALLTYPE *Release)(
   1130         IMFSample* This);
   1131 
   1132     /*** IMFAttributes methods ***/
   1133     HRESULT (STDMETHODCALLTYPE *GetItem)(
   1134         IMFSample* This,
   1135         REFGUID guidKey,
   1136         PROPVARIANT *pValue);
   1137 
   1138     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   1139         IMFSample* This,
   1140         REFGUID guidKey,
   1141         MF_ATTRIBUTE_TYPE *pType);
   1142 
   1143     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   1144         IMFSample* This,
   1145         REFGUID guidKey,
   1146         REFPROPVARIANT Value,
   1147         WINBOOL *pbResult);
   1148 
   1149     HRESULT (STDMETHODCALLTYPE *Compare)(
   1150         IMFSample* This,
   1151         IMFAttributes *pTheirs,
   1152         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   1153         WINBOOL *pbResult);
   1154 
   1155     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   1156         IMFSample* This,
   1157         REFGUID guidKey,
   1158         UINT32 *punValue);
   1159 
   1160     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   1161         IMFSample* This,
   1162         REFGUID guidKey,
   1163         UINT64 *punValue);
   1164 
   1165     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   1166         IMFSample* This,
   1167         REFGUID guidKey,
   1168         double *pfValue);
   1169 
   1170     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   1171         IMFSample* This,
   1172         REFGUID guidKey,
   1173         GUID *pguidValue);
   1174 
   1175     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   1176         IMFSample* This,
   1177         REFGUID guidKey,
   1178         UINT32 *pcchLength);
   1179 
   1180     HRESULT (STDMETHODCALLTYPE *GetString)(
   1181         IMFSample* This,
   1182         REFGUID guidKey,
   1183         LPWSTR pwszValue,
   1184         UINT32 cchBufSize,
   1185         UINT32 *pcchLength);
   1186 
   1187     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   1188         IMFSample* This,
   1189         REFGUID guidKey,
   1190         LPWSTR *ppwszValue,
   1191         UINT32 *pcchLength);
   1192 
   1193     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   1194         IMFSample* This,
   1195         REFGUID guidKey,
   1196         UINT32 *pcbBlobSize);
   1197 
   1198     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   1199         IMFSample* This,
   1200         REFGUID guidKey,
   1201         UINT8 *pBuf,
   1202         UINT32 cbBufSize,
   1203         UINT32 *pcbBlobSize);
   1204 
   1205     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   1206         IMFSample* This,
   1207         REFGUID guidKey,
   1208         UINT8 **ppBuf,
   1209         UINT32 *pcbSize);
   1210 
   1211     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   1212         IMFSample* This,
   1213         REFGUID guidKey,
   1214         REFIID riid,
   1215         LPVOID *ppv);
   1216 
   1217     HRESULT (STDMETHODCALLTYPE *SetItem)(
   1218         IMFSample* This,
   1219         REFGUID guidKey,
   1220         REFPROPVARIANT Value);
   1221 
   1222     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   1223         IMFSample* This,
   1224         REFGUID guidKey);
   1225 
   1226     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   1227         IMFSample* This);
   1228 
   1229     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   1230         IMFSample* This,
   1231         REFGUID guidKey,
   1232         UINT32 unValue);
   1233 
   1234     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   1235         IMFSample* This,
   1236         REFGUID guidKey,
   1237         UINT64 unValue);
   1238 
   1239     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   1240         IMFSample* This,
   1241         REFGUID guidKey,
   1242         double fValue);
   1243 
   1244     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   1245         IMFSample* This,
   1246         REFGUID guidKey,
   1247         REFGUID guidValue);
   1248 
   1249     HRESULT (STDMETHODCALLTYPE *SetString)(
   1250         IMFSample* This,
   1251         REFGUID guidKey,
   1252         LPCWSTR wszValue);
   1253 
   1254     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   1255         IMFSample* This,
   1256         REFGUID guidKey,
   1257         const UINT8 *pBuf,
   1258         UINT32 cbBufSize);
   1259 
   1260     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   1261         IMFSample* This,
   1262         REFGUID guidKey,
   1263         IUnknown *pUnknown);
   1264 
   1265     HRESULT (STDMETHODCALLTYPE *LockStore)(
   1266         IMFSample* This);
   1267 
   1268     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   1269         IMFSample* This);
   1270 
   1271     HRESULT (STDMETHODCALLTYPE *GetCount)(
   1272         IMFSample* This,
   1273         UINT32 *pcItems);
   1274 
   1275     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   1276         IMFSample* This,
   1277         UINT32 unIndex,
   1278         GUID *pguidKey,
   1279         PROPVARIANT *pValue);
   1280 
   1281     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   1282         IMFSample* This,
   1283         IMFAttributes *pDest);
   1284 
   1285     /*** IMFSample methods ***/
   1286     HRESULT (STDMETHODCALLTYPE *GetSampleFlags)(
   1287         IMFSample* This,
   1288         DWORD *pdwSampleFlags);
   1289 
   1290     HRESULT (STDMETHODCALLTYPE *SetSampleFlags)(
   1291         IMFSample* This,
   1292         DWORD dwSampleFlags);
   1293 
   1294     HRESULT (STDMETHODCALLTYPE *GetSampleTime)(
   1295         IMFSample* This,
   1296         LONGLONG *phnsSampleTime);
   1297 
   1298     HRESULT (STDMETHODCALLTYPE *SetSampleTime)(
   1299         IMFSample* This,
   1300         LONGLONG hnsSampleTime);
   1301 
   1302     HRESULT (STDMETHODCALLTYPE *GetSampleDuration)(
   1303         IMFSample* This,
   1304         LONGLONG *phnsSampleDuration);
   1305 
   1306     HRESULT (STDMETHODCALLTYPE *SetSampleDuration)(
   1307         IMFSample* This,
   1308         LONGLONG hnsSampleDuration);
   1309 
   1310     HRESULT (STDMETHODCALLTYPE *GetBufferCount)(
   1311         IMFSample* This,
   1312         DWORD *pdwBufferCount);
   1313 
   1314     HRESULT (STDMETHODCALLTYPE *GetBufferByIndex)(
   1315         IMFSample* This,
   1316         DWORD dwIndex,
   1317         IMFMediaBuffer **ppBuffer);
   1318 
   1319     HRESULT (STDMETHODCALLTYPE *ConvertToContiguousBuffer)(
   1320         IMFSample* This,
   1321         IMFMediaBuffer **ppBuffer);
   1322 
   1323     HRESULT (STDMETHODCALLTYPE *AddBuffer)(
   1324         IMFSample* This,
   1325         IMFMediaBuffer *pBuffer);
   1326 
   1327     HRESULT (STDMETHODCALLTYPE *RemoveBufferByIndex)(
   1328         IMFSample* This,
   1329         DWORD dwIndex);
   1330 
   1331     HRESULT (STDMETHODCALLTYPE *RemoveAllBuffers)(
   1332         IMFSample* This);
   1333 
   1334     HRESULT (STDMETHODCALLTYPE *GetTotalLength)(
   1335         IMFSample* This,
   1336         DWORD *pcbTotalLength);
   1337 
   1338     HRESULT (STDMETHODCALLTYPE *CopyToBuffer)(
   1339         IMFSample* This,
   1340         IMFMediaBuffer *pBuffer);
   1341 
   1342     END_INTERFACE
   1343 } IMFSampleVtbl;
   1344 interface IMFSample {
   1345     CONST_VTBL IMFSampleVtbl* lpVtbl;
   1346 };
   1347 
   1348 #ifdef COBJMACROS
   1349 #ifndef WIDL_C_INLINE_WRAPPERS
   1350 /*** IUnknown methods ***/
   1351 #define IMFSample_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1352 #define IMFSample_AddRef(This) (This)->lpVtbl->AddRef(This)
   1353 #define IMFSample_Release(This) (This)->lpVtbl->Release(This)
   1354 /*** IMFAttributes methods ***/
   1355 #define IMFSample_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   1356 #define IMFSample_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   1357 #define IMFSample_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   1358 #define IMFSample_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   1359 #define IMFSample_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   1360 #define IMFSample_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   1361 #define IMFSample_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   1362 #define IMFSample_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   1363 #define IMFSample_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   1364 #define IMFSample_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   1365 #define IMFSample_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   1366 #define IMFSample_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   1367 #define IMFSample_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   1368 #define IMFSample_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   1369 #define IMFSample_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   1370 #define IMFSample_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   1371 #define IMFSample_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   1372 #define IMFSample_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   1373 #define IMFSample_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   1374 #define IMFSample_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   1375 #define IMFSample_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   1376 #define IMFSample_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   1377 #define IMFSample_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   1378 #define IMFSample_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   1379 #define IMFSample_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   1380 #define IMFSample_LockStore(This) (This)->lpVtbl->LockStore(This)
   1381 #define IMFSample_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   1382 #define IMFSample_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   1383 #define IMFSample_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   1384 #define IMFSample_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   1385 /*** IMFSample methods ***/
   1386 #define IMFSample_GetSampleFlags(This,pdwSampleFlags) (This)->lpVtbl->GetSampleFlags(This,pdwSampleFlags)
   1387 #define IMFSample_SetSampleFlags(This,dwSampleFlags) (This)->lpVtbl->SetSampleFlags(This,dwSampleFlags)
   1388 #define IMFSample_GetSampleTime(This,phnsSampleTime) (This)->lpVtbl->GetSampleTime(This,phnsSampleTime)
   1389 #define IMFSample_SetSampleTime(This,hnsSampleTime) (This)->lpVtbl->SetSampleTime(This,hnsSampleTime)
   1390 #define IMFSample_GetSampleDuration(This,phnsSampleDuration) (This)->lpVtbl->GetSampleDuration(This,phnsSampleDuration)
   1391 #define IMFSample_SetSampleDuration(This,hnsSampleDuration) (This)->lpVtbl->SetSampleDuration(This,hnsSampleDuration)
   1392 #define IMFSample_GetBufferCount(This,pdwBufferCount) (This)->lpVtbl->GetBufferCount(This,pdwBufferCount)
   1393 #define IMFSample_GetBufferByIndex(This,dwIndex,ppBuffer) (This)->lpVtbl->GetBufferByIndex(This,dwIndex,ppBuffer)
   1394 #define IMFSample_ConvertToContiguousBuffer(This,ppBuffer) (This)->lpVtbl->ConvertToContiguousBuffer(This,ppBuffer)
   1395 #define IMFSample_AddBuffer(This,pBuffer) (This)->lpVtbl->AddBuffer(This,pBuffer)
   1396 #define IMFSample_RemoveBufferByIndex(This,dwIndex) (This)->lpVtbl->RemoveBufferByIndex(This,dwIndex)
   1397 #define IMFSample_RemoveAllBuffers(This) (This)->lpVtbl->RemoveAllBuffers(This)
   1398 #define IMFSample_GetTotalLength(This,pcbTotalLength) (This)->lpVtbl->GetTotalLength(This,pcbTotalLength)
   1399 #define IMFSample_CopyToBuffer(This,pBuffer) (This)->lpVtbl->CopyToBuffer(This,pBuffer)
   1400 #else
   1401 /*** IUnknown methods ***/
   1402 static FORCEINLINE HRESULT IMFSample_QueryInterface(IMFSample* This,REFIID riid,void **ppvObject) {
   1403     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1404 }
   1405 static FORCEINLINE ULONG IMFSample_AddRef(IMFSample* This) {
   1406     return This->lpVtbl->AddRef(This);
   1407 }
   1408 static FORCEINLINE ULONG IMFSample_Release(IMFSample* This) {
   1409     return This->lpVtbl->Release(This);
   1410 }
   1411 /*** IMFAttributes methods ***/
   1412 static FORCEINLINE HRESULT IMFSample_GetItem(IMFSample* This,REFGUID guidKey,PROPVARIANT *pValue) {
   1413     return This->lpVtbl->GetItem(This,guidKey,pValue);
   1414 }
   1415 static FORCEINLINE HRESULT IMFSample_GetItemType(IMFSample* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   1416     return This->lpVtbl->GetItemType(This,guidKey,pType);
   1417 }
   1418 static FORCEINLINE HRESULT IMFSample_CompareItem(IMFSample* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   1419     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   1420 }
   1421 static FORCEINLINE HRESULT IMFSample_Compare(IMFSample* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   1422     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   1423 }
   1424 static FORCEINLINE HRESULT IMFSample_GetUINT32(IMFSample* This,REFGUID guidKey,UINT32 *punValue) {
   1425     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   1426 }
   1427 static FORCEINLINE HRESULT IMFSample_GetUINT64(IMFSample* This,REFGUID guidKey,UINT64 *punValue) {
   1428     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   1429 }
   1430 static FORCEINLINE HRESULT IMFSample_GetDouble(IMFSample* This,REFGUID guidKey,double *pfValue) {
   1431     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   1432 }
   1433 static FORCEINLINE HRESULT IMFSample_GetGUID(IMFSample* This,REFGUID guidKey,GUID *pguidValue) {
   1434     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   1435 }
   1436 static FORCEINLINE HRESULT IMFSample_GetStringLength(IMFSample* This,REFGUID guidKey,UINT32 *pcchLength) {
   1437     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   1438 }
   1439 static FORCEINLINE HRESULT IMFSample_GetString(IMFSample* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   1440     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   1441 }
   1442 static FORCEINLINE HRESULT IMFSample_GetAllocatedString(IMFSample* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   1443     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   1444 }
   1445 static FORCEINLINE HRESULT IMFSample_GetBlobSize(IMFSample* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   1446     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   1447 }
   1448 static FORCEINLINE HRESULT IMFSample_GetBlob(IMFSample* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   1449     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   1450 }
   1451 static FORCEINLINE HRESULT IMFSample_GetAllocatedBlob(IMFSample* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   1452     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   1453 }
   1454 static FORCEINLINE HRESULT IMFSample_GetUnknown(IMFSample* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   1455     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   1456 }
   1457 static FORCEINLINE HRESULT IMFSample_SetItem(IMFSample* This,REFGUID guidKey,REFPROPVARIANT Value) {
   1458     return This->lpVtbl->SetItem(This,guidKey,Value);
   1459 }
   1460 static FORCEINLINE HRESULT IMFSample_DeleteItem(IMFSample* This,REFGUID guidKey) {
   1461     return This->lpVtbl->DeleteItem(This,guidKey);
   1462 }
   1463 static FORCEINLINE HRESULT IMFSample_DeleteAllItems(IMFSample* This) {
   1464     return This->lpVtbl->DeleteAllItems(This);
   1465 }
   1466 static FORCEINLINE HRESULT IMFSample_SetUINT32(IMFSample* This,REFGUID guidKey,UINT32 unValue) {
   1467     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   1468 }
   1469 static FORCEINLINE HRESULT IMFSample_SetUINT64(IMFSample* This,REFGUID guidKey,UINT64 unValue) {
   1470     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   1471 }
   1472 static FORCEINLINE HRESULT IMFSample_SetDouble(IMFSample* This,REFGUID guidKey,double fValue) {
   1473     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   1474 }
   1475 static FORCEINLINE HRESULT IMFSample_SetGUID(IMFSample* This,REFGUID guidKey,REFGUID guidValue) {
   1476     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   1477 }
   1478 static FORCEINLINE HRESULT IMFSample_SetString(IMFSample* This,REFGUID guidKey,LPCWSTR wszValue) {
   1479     return This->lpVtbl->SetString(This,guidKey,wszValue);
   1480 }
   1481 static FORCEINLINE HRESULT IMFSample_SetBlob(IMFSample* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   1482     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   1483 }
   1484 static FORCEINLINE HRESULT IMFSample_SetUnknown(IMFSample* This,REFGUID guidKey,IUnknown *pUnknown) {
   1485     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   1486 }
   1487 static FORCEINLINE HRESULT IMFSample_LockStore(IMFSample* This) {
   1488     return This->lpVtbl->LockStore(This);
   1489 }
   1490 static FORCEINLINE HRESULT IMFSample_UnlockStore(IMFSample* This) {
   1491     return This->lpVtbl->UnlockStore(This);
   1492 }
   1493 static FORCEINLINE HRESULT IMFSample_GetCount(IMFSample* This,UINT32 *pcItems) {
   1494     return This->lpVtbl->GetCount(This,pcItems);
   1495 }
   1496 static FORCEINLINE HRESULT IMFSample_GetItemByIndex(IMFSample* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   1497     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   1498 }
   1499 static FORCEINLINE HRESULT IMFSample_CopyAllItems(IMFSample* This,IMFAttributes *pDest) {
   1500     return This->lpVtbl->CopyAllItems(This,pDest);
   1501 }
   1502 /*** IMFSample methods ***/
   1503 static FORCEINLINE HRESULT IMFSample_GetSampleFlags(IMFSample* This,DWORD *pdwSampleFlags) {
   1504     return This->lpVtbl->GetSampleFlags(This,pdwSampleFlags);
   1505 }
   1506 static FORCEINLINE HRESULT IMFSample_SetSampleFlags(IMFSample* This,DWORD dwSampleFlags) {
   1507     return This->lpVtbl->SetSampleFlags(This,dwSampleFlags);
   1508 }
   1509 static FORCEINLINE HRESULT IMFSample_GetSampleTime(IMFSample* This,LONGLONG *phnsSampleTime) {
   1510     return This->lpVtbl->GetSampleTime(This,phnsSampleTime);
   1511 }
   1512 static FORCEINLINE HRESULT IMFSample_SetSampleTime(IMFSample* This,LONGLONG hnsSampleTime) {
   1513     return This->lpVtbl->SetSampleTime(This,hnsSampleTime);
   1514 }
   1515 static FORCEINLINE HRESULT IMFSample_GetSampleDuration(IMFSample* This,LONGLONG *phnsSampleDuration) {
   1516     return This->lpVtbl->GetSampleDuration(This,phnsSampleDuration);
   1517 }
   1518 static FORCEINLINE HRESULT IMFSample_SetSampleDuration(IMFSample* This,LONGLONG hnsSampleDuration) {
   1519     return This->lpVtbl->SetSampleDuration(This,hnsSampleDuration);
   1520 }
   1521 static FORCEINLINE HRESULT IMFSample_GetBufferCount(IMFSample* This,DWORD *pdwBufferCount) {
   1522     return This->lpVtbl->GetBufferCount(This,pdwBufferCount);
   1523 }
   1524 static FORCEINLINE HRESULT IMFSample_GetBufferByIndex(IMFSample* This,DWORD dwIndex,IMFMediaBuffer **ppBuffer) {
   1525     return This->lpVtbl->GetBufferByIndex(This,dwIndex,ppBuffer);
   1526 }
   1527 static FORCEINLINE HRESULT IMFSample_ConvertToContiguousBuffer(IMFSample* This,IMFMediaBuffer **ppBuffer) {
   1528     return This->lpVtbl->ConvertToContiguousBuffer(This,ppBuffer);
   1529 }
   1530 static FORCEINLINE HRESULT IMFSample_AddBuffer(IMFSample* This,IMFMediaBuffer *pBuffer) {
   1531     return This->lpVtbl->AddBuffer(This,pBuffer);
   1532 }
   1533 static FORCEINLINE HRESULT IMFSample_RemoveBufferByIndex(IMFSample* This,DWORD dwIndex) {
   1534     return This->lpVtbl->RemoveBufferByIndex(This,dwIndex);
   1535 }
   1536 static FORCEINLINE HRESULT IMFSample_RemoveAllBuffers(IMFSample* This) {
   1537     return This->lpVtbl->RemoveAllBuffers(This);
   1538 }
   1539 static FORCEINLINE HRESULT IMFSample_GetTotalLength(IMFSample* This,DWORD *pcbTotalLength) {
   1540     return This->lpVtbl->GetTotalLength(This,pcbTotalLength);
   1541 }
   1542 static FORCEINLINE HRESULT IMFSample_CopyToBuffer(IMFSample* This,IMFMediaBuffer *pBuffer) {
   1543     return This->lpVtbl->CopyToBuffer(This,pBuffer);
   1544 }
   1545 #endif
   1546 #endif
   1547 
   1548 #endif
   1549 
   1550 HRESULT STDMETHODCALLTYPE IMFSample_GetSampleFlags_Proxy(
   1551     IMFSample* This,
   1552     DWORD *pdwSampleFlags);
   1553 void __RPC_STUB IMFSample_GetSampleFlags_Stub(
   1554     IRpcStubBuffer* This,
   1555     IRpcChannelBuffer* pRpcChannelBuffer,
   1556     PRPC_MESSAGE pRpcMessage,
   1557     DWORD* pdwStubPhase);
   1558 HRESULT STDMETHODCALLTYPE IMFSample_SetSampleFlags_Proxy(
   1559     IMFSample* This,
   1560     DWORD dwSampleFlags);
   1561 void __RPC_STUB IMFSample_SetSampleFlags_Stub(
   1562     IRpcStubBuffer* This,
   1563     IRpcChannelBuffer* pRpcChannelBuffer,
   1564     PRPC_MESSAGE pRpcMessage,
   1565     DWORD* pdwStubPhase);
   1566 HRESULT STDMETHODCALLTYPE IMFSample_GetSampleTime_Proxy(
   1567     IMFSample* This,
   1568     LONGLONG *phnsSampleTime);
   1569 void __RPC_STUB IMFSample_GetSampleTime_Stub(
   1570     IRpcStubBuffer* This,
   1571     IRpcChannelBuffer* pRpcChannelBuffer,
   1572     PRPC_MESSAGE pRpcMessage,
   1573     DWORD* pdwStubPhase);
   1574 HRESULT STDMETHODCALLTYPE IMFSample_SetSampleTime_Proxy(
   1575     IMFSample* This,
   1576     LONGLONG hnsSampleTime);
   1577 void __RPC_STUB IMFSample_SetSampleTime_Stub(
   1578     IRpcStubBuffer* This,
   1579     IRpcChannelBuffer* pRpcChannelBuffer,
   1580     PRPC_MESSAGE pRpcMessage,
   1581     DWORD* pdwStubPhase);
   1582 HRESULT STDMETHODCALLTYPE IMFSample_GetSampleDuration_Proxy(
   1583     IMFSample* This,
   1584     LONGLONG *phnsSampleDuration);
   1585 void __RPC_STUB IMFSample_GetSampleDuration_Stub(
   1586     IRpcStubBuffer* This,
   1587     IRpcChannelBuffer* pRpcChannelBuffer,
   1588     PRPC_MESSAGE pRpcMessage,
   1589     DWORD* pdwStubPhase);
   1590 HRESULT STDMETHODCALLTYPE IMFSample_SetSampleDuration_Proxy(
   1591     IMFSample* This,
   1592     LONGLONG hnsSampleDuration);
   1593 void __RPC_STUB IMFSample_SetSampleDuration_Stub(
   1594     IRpcStubBuffer* This,
   1595     IRpcChannelBuffer* pRpcChannelBuffer,
   1596     PRPC_MESSAGE pRpcMessage,
   1597     DWORD* pdwStubPhase);
   1598 HRESULT STDMETHODCALLTYPE IMFSample_GetBufferCount_Proxy(
   1599     IMFSample* This,
   1600     DWORD *pdwBufferCount);
   1601 void __RPC_STUB IMFSample_GetBufferCount_Stub(
   1602     IRpcStubBuffer* This,
   1603     IRpcChannelBuffer* pRpcChannelBuffer,
   1604     PRPC_MESSAGE pRpcMessage,
   1605     DWORD* pdwStubPhase);
   1606 HRESULT STDMETHODCALLTYPE IMFSample_GetBufferByIndex_Proxy(
   1607     IMFSample* This,
   1608     DWORD dwIndex,
   1609     IMFMediaBuffer **ppBuffer);
   1610 void __RPC_STUB IMFSample_GetBufferByIndex_Stub(
   1611     IRpcStubBuffer* This,
   1612     IRpcChannelBuffer* pRpcChannelBuffer,
   1613     PRPC_MESSAGE pRpcMessage,
   1614     DWORD* pdwStubPhase);
   1615 HRESULT STDMETHODCALLTYPE IMFSample_ConvertToContiguousBuffer_Proxy(
   1616     IMFSample* This,
   1617     IMFMediaBuffer **ppBuffer);
   1618 void __RPC_STUB IMFSample_ConvertToContiguousBuffer_Stub(
   1619     IRpcStubBuffer* This,
   1620     IRpcChannelBuffer* pRpcChannelBuffer,
   1621     PRPC_MESSAGE pRpcMessage,
   1622     DWORD* pdwStubPhase);
   1623 HRESULT STDMETHODCALLTYPE IMFSample_AddBuffer_Proxy(
   1624     IMFSample* This,
   1625     IMFMediaBuffer *pBuffer);
   1626 void __RPC_STUB IMFSample_AddBuffer_Stub(
   1627     IRpcStubBuffer* This,
   1628     IRpcChannelBuffer* pRpcChannelBuffer,
   1629     PRPC_MESSAGE pRpcMessage,
   1630     DWORD* pdwStubPhase);
   1631 HRESULT STDMETHODCALLTYPE IMFSample_RemoveBufferByIndex_Proxy(
   1632     IMFSample* This,
   1633     DWORD dwIndex);
   1634 void __RPC_STUB IMFSample_RemoveBufferByIndex_Stub(
   1635     IRpcStubBuffer* This,
   1636     IRpcChannelBuffer* pRpcChannelBuffer,
   1637     PRPC_MESSAGE pRpcMessage,
   1638     DWORD* pdwStubPhase);
   1639 HRESULT STDMETHODCALLTYPE IMFSample_RemoveAllBuffers_Proxy(
   1640     IMFSample* This);
   1641 void __RPC_STUB IMFSample_RemoveAllBuffers_Stub(
   1642     IRpcStubBuffer* This,
   1643     IRpcChannelBuffer* pRpcChannelBuffer,
   1644     PRPC_MESSAGE pRpcMessage,
   1645     DWORD* pdwStubPhase);
   1646 HRESULT STDMETHODCALLTYPE IMFSample_GetTotalLength_Proxy(
   1647     IMFSample* This,
   1648     DWORD *pcbTotalLength);
   1649 void __RPC_STUB IMFSample_GetTotalLength_Stub(
   1650     IRpcStubBuffer* This,
   1651     IRpcChannelBuffer* pRpcChannelBuffer,
   1652     PRPC_MESSAGE pRpcMessage,
   1653     DWORD* pdwStubPhase);
   1654 HRESULT STDMETHODCALLTYPE IMFSample_CopyToBuffer_Proxy(
   1655     IMFSample* This,
   1656     IMFMediaBuffer *pBuffer);
   1657 void __RPC_STUB IMFSample_CopyToBuffer_Stub(
   1658     IRpcStubBuffer* This,
   1659     IRpcChannelBuffer* pRpcChannelBuffer,
   1660     PRPC_MESSAGE pRpcMessage,
   1661     DWORD* pdwStubPhase);
   1662 
   1663 #endif  /* __IMFSample_INTERFACE_DEFINED__ */
   1664 
   1665 /*****************************************************************************
   1666  * IMF2DBuffer interface
   1667  */
   1668 #ifndef __IMF2DBuffer_INTERFACE_DEFINED__
   1669 #define __IMF2DBuffer_INTERFACE_DEFINED__
   1670 
   1671 DEFINE_GUID(IID_IMF2DBuffer, 0x7dc9d5f9, 0x9ed9, 0x44ec, 0x9b,0xbf, 0x06,0x00,0xbb,0x58,0x9f,0xbb);
   1672 #if defined(__cplusplus) && !defined(CINTERFACE)
   1673 MIDL_INTERFACE("7dc9d5f9-9ed9-44ec-9bbf-0600bb589fbb")
   1674 IMF2DBuffer : public IUnknown
   1675 {
   1676     virtual HRESULT STDMETHODCALLTYPE Lock2D(
   1677         BYTE **pbScanline0,
   1678         LONG *plPitch) = 0;
   1679 
   1680     virtual HRESULT STDMETHODCALLTYPE Unlock2D(
   1681         ) = 0;
   1682 
   1683     virtual HRESULT STDMETHODCALLTYPE GetScanline0AndPitch(
   1684         BYTE **pbScanline0,
   1685         LONG *plPitch) = 0;
   1686 
   1687     virtual HRESULT STDMETHODCALLTYPE IsContiguousFormat(
   1688         WINBOOL *pfIsContiguous) = 0;
   1689 
   1690     virtual HRESULT STDMETHODCALLTYPE GetContiguousLength(
   1691         DWORD *pcbLength) = 0;
   1692 
   1693     virtual HRESULT STDMETHODCALLTYPE ContiguousCopyTo(
   1694         BYTE *pbDestBuffer,
   1695         DWORD cbDestBuffer) = 0;
   1696 
   1697     virtual HRESULT STDMETHODCALLTYPE ContiguousCopyFrom(
   1698         const BYTE *pbSrcBuffer,
   1699         DWORD cbSrcBuffer) = 0;
   1700 
   1701 };
   1702 #ifdef __CRT_UUID_DECL
   1703 __CRT_UUID_DECL(IMF2DBuffer, 0x7dc9d5f9, 0x9ed9, 0x44ec, 0x9b,0xbf, 0x06,0x00,0xbb,0x58,0x9f,0xbb)
   1704 #endif
   1705 #else
   1706 typedef struct IMF2DBufferVtbl {
   1707     BEGIN_INTERFACE
   1708 
   1709     /*** IUnknown methods ***/
   1710     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1711         IMF2DBuffer* This,
   1712         REFIID riid,
   1713         void **ppvObject);
   1714 
   1715     ULONG (STDMETHODCALLTYPE *AddRef)(
   1716         IMF2DBuffer* This);
   1717 
   1718     ULONG (STDMETHODCALLTYPE *Release)(
   1719         IMF2DBuffer* This);
   1720 
   1721     /*** IMF2DBuffer methods ***/
   1722     HRESULT (STDMETHODCALLTYPE *Lock2D)(
   1723         IMF2DBuffer* This,
   1724         BYTE **pbScanline0,
   1725         LONG *plPitch);
   1726 
   1727     HRESULT (STDMETHODCALLTYPE *Unlock2D)(
   1728         IMF2DBuffer* This);
   1729 
   1730     HRESULT (STDMETHODCALLTYPE *GetScanline0AndPitch)(
   1731         IMF2DBuffer* This,
   1732         BYTE **pbScanline0,
   1733         LONG *plPitch);
   1734 
   1735     HRESULT (STDMETHODCALLTYPE *IsContiguousFormat)(
   1736         IMF2DBuffer* This,
   1737         WINBOOL *pfIsContiguous);
   1738 
   1739     HRESULT (STDMETHODCALLTYPE *GetContiguousLength)(
   1740         IMF2DBuffer* This,
   1741         DWORD *pcbLength);
   1742 
   1743     HRESULT (STDMETHODCALLTYPE *ContiguousCopyTo)(
   1744         IMF2DBuffer* This,
   1745         BYTE *pbDestBuffer,
   1746         DWORD cbDestBuffer);
   1747 
   1748     HRESULT (STDMETHODCALLTYPE *ContiguousCopyFrom)(
   1749         IMF2DBuffer* This,
   1750         const BYTE *pbSrcBuffer,
   1751         DWORD cbSrcBuffer);
   1752 
   1753     END_INTERFACE
   1754 } IMF2DBufferVtbl;
   1755 interface IMF2DBuffer {
   1756     CONST_VTBL IMF2DBufferVtbl* lpVtbl;
   1757 };
   1758 
   1759 #ifdef COBJMACROS
   1760 #ifndef WIDL_C_INLINE_WRAPPERS
   1761 /*** IUnknown methods ***/
   1762 #define IMF2DBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1763 #define IMF2DBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
   1764 #define IMF2DBuffer_Release(This) (This)->lpVtbl->Release(This)
   1765 /*** IMF2DBuffer methods ***/
   1766 #define IMF2DBuffer_Lock2D(This,pbScanline0,plPitch) (This)->lpVtbl->Lock2D(This,pbScanline0,plPitch)
   1767 #define IMF2DBuffer_Unlock2D(This) (This)->lpVtbl->Unlock2D(This)
   1768 #define IMF2DBuffer_GetScanline0AndPitch(This,pbScanline0,plPitch) (This)->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch)
   1769 #define IMF2DBuffer_IsContiguousFormat(This,pfIsContiguous) (This)->lpVtbl->IsContiguousFormat(This,pfIsContiguous)
   1770 #define IMF2DBuffer_GetContiguousLength(This,pcbLength) (This)->lpVtbl->GetContiguousLength(This,pcbLength)
   1771 #define IMF2DBuffer_ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer) (This)->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer)
   1772 #define IMF2DBuffer_ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer) (This)->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer)
   1773 #else
   1774 /*** IUnknown methods ***/
   1775 static FORCEINLINE HRESULT IMF2DBuffer_QueryInterface(IMF2DBuffer* This,REFIID riid,void **ppvObject) {
   1776     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1777 }
   1778 static FORCEINLINE ULONG IMF2DBuffer_AddRef(IMF2DBuffer* This) {
   1779     return This->lpVtbl->AddRef(This);
   1780 }
   1781 static FORCEINLINE ULONG IMF2DBuffer_Release(IMF2DBuffer* This) {
   1782     return This->lpVtbl->Release(This);
   1783 }
   1784 /*** IMF2DBuffer methods ***/
   1785 static FORCEINLINE HRESULT IMF2DBuffer_Lock2D(IMF2DBuffer* This,BYTE **pbScanline0,LONG *plPitch) {
   1786     return This->lpVtbl->Lock2D(This,pbScanline0,plPitch);
   1787 }
   1788 static FORCEINLINE HRESULT IMF2DBuffer_Unlock2D(IMF2DBuffer* This) {
   1789     return This->lpVtbl->Unlock2D(This);
   1790 }
   1791 static FORCEINLINE HRESULT IMF2DBuffer_GetScanline0AndPitch(IMF2DBuffer* This,BYTE **pbScanline0,LONG *plPitch) {
   1792     return This->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch);
   1793 }
   1794 static FORCEINLINE HRESULT IMF2DBuffer_IsContiguousFormat(IMF2DBuffer* This,WINBOOL *pfIsContiguous) {
   1795     return This->lpVtbl->IsContiguousFormat(This,pfIsContiguous);
   1796 }
   1797 static FORCEINLINE HRESULT IMF2DBuffer_GetContiguousLength(IMF2DBuffer* This,DWORD *pcbLength) {
   1798     return This->lpVtbl->GetContiguousLength(This,pcbLength);
   1799 }
   1800 static FORCEINLINE HRESULT IMF2DBuffer_ContiguousCopyTo(IMF2DBuffer* This,BYTE *pbDestBuffer,DWORD cbDestBuffer) {
   1801     return This->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer);
   1802 }
   1803 static FORCEINLINE HRESULT IMF2DBuffer_ContiguousCopyFrom(IMF2DBuffer* This,const BYTE *pbSrcBuffer,DWORD cbSrcBuffer) {
   1804     return This->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer);
   1805 }
   1806 #endif
   1807 #endif
   1808 
   1809 #endif
   1810 
   1811 HRESULT STDMETHODCALLTYPE IMF2DBuffer_Lock2D_Proxy(
   1812     IMF2DBuffer* This,
   1813     BYTE **pbScanline0,
   1814     LONG *plPitch);
   1815 void __RPC_STUB IMF2DBuffer_Lock2D_Stub(
   1816     IRpcStubBuffer* This,
   1817     IRpcChannelBuffer* pRpcChannelBuffer,
   1818     PRPC_MESSAGE pRpcMessage,
   1819     DWORD* pdwStubPhase);
   1820 HRESULT STDMETHODCALLTYPE IMF2DBuffer_Unlock2D_Proxy(
   1821     IMF2DBuffer* This);
   1822 void __RPC_STUB IMF2DBuffer_Unlock2D_Stub(
   1823     IRpcStubBuffer* This,
   1824     IRpcChannelBuffer* pRpcChannelBuffer,
   1825     PRPC_MESSAGE pRpcMessage,
   1826     DWORD* pdwStubPhase);
   1827 HRESULT STDMETHODCALLTYPE IMF2DBuffer_GetScanline0AndPitch_Proxy(
   1828     IMF2DBuffer* This,
   1829     BYTE **pbScanline0,
   1830     LONG *plPitch);
   1831 void __RPC_STUB IMF2DBuffer_GetScanline0AndPitch_Stub(
   1832     IRpcStubBuffer* This,
   1833     IRpcChannelBuffer* pRpcChannelBuffer,
   1834     PRPC_MESSAGE pRpcMessage,
   1835     DWORD* pdwStubPhase);
   1836 HRESULT STDMETHODCALLTYPE IMF2DBuffer_IsContiguousFormat_Proxy(
   1837     IMF2DBuffer* This,
   1838     WINBOOL *pfIsContiguous);
   1839 void __RPC_STUB IMF2DBuffer_IsContiguousFormat_Stub(
   1840     IRpcStubBuffer* This,
   1841     IRpcChannelBuffer* pRpcChannelBuffer,
   1842     PRPC_MESSAGE pRpcMessage,
   1843     DWORD* pdwStubPhase);
   1844 HRESULT STDMETHODCALLTYPE IMF2DBuffer_GetContiguousLength_Proxy(
   1845     IMF2DBuffer* This,
   1846     DWORD *pcbLength);
   1847 void __RPC_STUB IMF2DBuffer_GetContiguousLength_Stub(
   1848     IRpcStubBuffer* This,
   1849     IRpcChannelBuffer* pRpcChannelBuffer,
   1850     PRPC_MESSAGE pRpcMessage,
   1851     DWORD* pdwStubPhase);
   1852 HRESULT STDMETHODCALLTYPE IMF2DBuffer_ContiguousCopyTo_Proxy(
   1853     IMF2DBuffer* This,
   1854     BYTE *pbDestBuffer,
   1855     DWORD cbDestBuffer);
   1856 void __RPC_STUB IMF2DBuffer_ContiguousCopyTo_Stub(
   1857     IRpcStubBuffer* This,
   1858     IRpcChannelBuffer* pRpcChannelBuffer,
   1859     PRPC_MESSAGE pRpcMessage,
   1860     DWORD* pdwStubPhase);
   1861 HRESULT STDMETHODCALLTYPE IMF2DBuffer_ContiguousCopyFrom_Proxy(
   1862     IMF2DBuffer* This,
   1863     const BYTE *pbSrcBuffer,
   1864     DWORD cbSrcBuffer);
   1865 void __RPC_STUB IMF2DBuffer_ContiguousCopyFrom_Stub(
   1866     IRpcStubBuffer* This,
   1867     IRpcChannelBuffer* pRpcChannelBuffer,
   1868     PRPC_MESSAGE pRpcMessage,
   1869     DWORD* pdwStubPhase);
   1870 
   1871 #endif  /* __IMF2DBuffer_INTERFACE_DEFINED__ */
   1872 
   1873 /*****************************************************************************
   1874  * IMFMediaType interface
   1875  */
   1876 #ifndef __IMFMediaType_INTERFACE_DEFINED__
   1877 #define __IMFMediaType_INTERFACE_DEFINED__
   1878 
   1879 DEFINE_GUID(IID_IMFMediaType, 0x44ae0fa8, 0xea31, 0x4109, 0x8d,0x2e, 0x4c,0xae,0x49,0x97,0xc5,0x55);
   1880 #if defined(__cplusplus) && !defined(CINTERFACE)
   1881 MIDL_INTERFACE("44ae0fa8-ea31-4109-8d2e-4cae4997c555")
   1882 IMFMediaType : public IMFAttributes
   1883 {
   1884     virtual HRESULT STDMETHODCALLTYPE GetMajorType(
   1885         GUID *pguidMajorType) = 0;
   1886 
   1887     virtual HRESULT STDMETHODCALLTYPE IsCompressedFormat(
   1888         WINBOOL *pfCompressed) = 0;
   1889 
   1890     virtual HRESULT STDMETHODCALLTYPE IsEqual(
   1891         IMFMediaType *pIMediaType,
   1892         DWORD *pdwFlags) = 0;
   1893 
   1894     virtual HRESULT STDMETHODCALLTYPE GetRepresentation(
   1895         GUID guidRepresentation,
   1896         LPVOID *ppvRepresentation) = 0;
   1897 
   1898     virtual HRESULT STDMETHODCALLTYPE FreeRepresentation(
   1899         GUID guidRepresentation,
   1900         LPVOID pvRepresentation) = 0;
   1901 
   1902 };
   1903 #ifdef __CRT_UUID_DECL
   1904 __CRT_UUID_DECL(IMFMediaType, 0x44ae0fa8, 0xea31, 0x4109, 0x8d,0x2e, 0x4c,0xae,0x49,0x97,0xc5,0x55)
   1905 #endif
   1906 #else
   1907 typedef struct IMFMediaTypeVtbl {
   1908     BEGIN_INTERFACE
   1909 
   1910     /*** IUnknown methods ***/
   1911     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1912         IMFMediaType* This,
   1913         REFIID riid,
   1914         void **ppvObject);
   1915 
   1916     ULONG (STDMETHODCALLTYPE *AddRef)(
   1917         IMFMediaType* This);
   1918 
   1919     ULONG (STDMETHODCALLTYPE *Release)(
   1920         IMFMediaType* This);
   1921 
   1922     /*** IMFAttributes methods ***/
   1923     HRESULT (STDMETHODCALLTYPE *GetItem)(
   1924         IMFMediaType* This,
   1925         REFGUID guidKey,
   1926         PROPVARIANT *pValue);
   1927 
   1928     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   1929         IMFMediaType* This,
   1930         REFGUID guidKey,
   1931         MF_ATTRIBUTE_TYPE *pType);
   1932 
   1933     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   1934         IMFMediaType* This,
   1935         REFGUID guidKey,
   1936         REFPROPVARIANT Value,
   1937         WINBOOL *pbResult);
   1938 
   1939     HRESULT (STDMETHODCALLTYPE *Compare)(
   1940         IMFMediaType* This,
   1941         IMFAttributes *pTheirs,
   1942         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   1943         WINBOOL *pbResult);
   1944 
   1945     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   1946         IMFMediaType* This,
   1947         REFGUID guidKey,
   1948         UINT32 *punValue);
   1949 
   1950     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   1951         IMFMediaType* This,
   1952         REFGUID guidKey,
   1953         UINT64 *punValue);
   1954 
   1955     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   1956         IMFMediaType* This,
   1957         REFGUID guidKey,
   1958         double *pfValue);
   1959 
   1960     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   1961         IMFMediaType* This,
   1962         REFGUID guidKey,
   1963         GUID *pguidValue);
   1964 
   1965     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   1966         IMFMediaType* This,
   1967         REFGUID guidKey,
   1968         UINT32 *pcchLength);
   1969 
   1970     HRESULT (STDMETHODCALLTYPE *GetString)(
   1971         IMFMediaType* This,
   1972         REFGUID guidKey,
   1973         LPWSTR pwszValue,
   1974         UINT32 cchBufSize,
   1975         UINT32 *pcchLength);
   1976 
   1977     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   1978         IMFMediaType* This,
   1979         REFGUID guidKey,
   1980         LPWSTR *ppwszValue,
   1981         UINT32 *pcchLength);
   1982 
   1983     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   1984         IMFMediaType* This,
   1985         REFGUID guidKey,
   1986         UINT32 *pcbBlobSize);
   1987 
   1988     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   1989         IMFMediaType* This,
   1990         REFGUID guidKey,
   1991         UINT8 *pBuf,
   1992         UINT32 cbBufSize,
   1993         UINT32 *pcbBlobSize);
   1994 
   1995     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   1996         IMFMediaType* This,
   1997         REFGUID guidKey,
   1998         UINT8 **ppBuf,
   1999         UINT32 *pcbSize);
   2000 
   2001     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   2002         IMFMediaType* This,
   2003         REFGUID guidKey,
   2004         REFIID riid,
   2005         LPVOID *ppv);
   2006 
   2007     HRESULT (STDMETHODCALLTYPE *SetItem)(
   2008         IMFMediaType* This,
   2009         REFGUID guidKey,
   2010         REFPROPVARIANT Value);
   2011 
   2012     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   2013         IMFMediaType* This,
   2014         REFGUID guidKey);
   2015 
   2016     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   2017         IMFMediaType* This);
   2018 
   2019     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   2020         IMFMediaType* This,
   2021         REFGUID guidKey,
   2022         UINT32 unValue);
   2023 
   2024     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   2025         IMFMediaType* This,
   2026         REFGUID guidKey,
   2027         UINT64 unValue);
   2028 
   2029     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   2030         IMFMediaType* This,
   2031         REFGUID guidKey,
   2032         double fValue);
   2033 
   2034     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   2035         IMFMediaType* This,
   2036         REFGUID guidKey,
   2037         REFGUID guidValue);
   2038 
   2039     HRESULT (STDMETHODCALLTYPE *SetString)(
   2040         IMFMediaType* This,
   2041         REFGUID guidKey,
   2042         LPCWSTR wszValue);
   2043 
   2044     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   2045         IMFMediaType* This,
   2046         REFGUID guidKey,
   2047         const UINT8 *pBuf,
   2048         UINT32 cbBufSize);
   2049 
   2050     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   2051         IMFMediaType* This,
   2052         REFGUID guidKey,
   2053         IUnknown *pUnknown);
   2054 
   2055     HRESULT (STDMETHODCALLTYPE *LockStore)(
   2056         IMFMediaType* This);
   2057 
   2058     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   2059         IMFMediaType* This);
   2060 
   2061     HRESULT (STDMETHODCALLTYPE *GetCount)(
   2062         IMFMediaType* This,
   2063         UINT32 *pcItems);
   2064 
   2065     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   2066         IMFMediaType* This,
   2067         UINT32 unIndex,
   2068         GUID *pguidKey,
   2069         PROPVARIANT *pValue);
   2070 
   2071     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   2072         IMFMediaType* This,
   2073         IMFAttributes *pDest);
   2074 
   2075     /*** IMFMediaType methods ***/
   2076     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
   2077         IMFMediaType* This,
   2078         GUID *pguidMajorType);
   2079 
   2080     HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
   2081         IMFMediaType* This,
   2082         WINBOOL *pfCompressed);
   2083 
   2084     HRESULT (STDMETHODCALLTYPE *IsEqual)(
   2085         IMFMediaType* This,
   2086         IMFMediaType *pIMediaType,
   2087         DWORD *pdwFlags);
   2088 
   2089     HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
   2090         IMFMediaType* This,
   2091         GUID guidRepresentation,
   2092         LPVOID *ppvRepresentation);
   2093 
   2094     HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
   2095         IMFMediaType* This,
   2096         GUID guidRepresentation,
   2097         LPVOID pvRepresentation);
   2098 
   2099     END_INTERFACE
   2100 } IMFMediaTypeVtbl;
   2101 interface IMFMediaType {
   2102     CONST_VTBL IMFMediaTypeVtbl* lpVtbl;
   2103 };
   2104 
   2105 #ifdef COBJMACROS
   2106 #ifndef WIDL_C_INLINE_WRAPPERS
   2107 /*** IUnknown methods ***/
   2108 #define IMFMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2109 #define IMFMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
   2110 #define IMFMediaType_Release(This) (This)->lpVtbl->Release(This)
   2111 /*** IMFAttributes methods ***/
   2112 #define IMFMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   2113 #define IMFMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   2114 #define IMFMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   2115 #define IMFMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   2116 #define IMFMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   2117 #define IMFMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   2118 #define IMFMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   2119 #define IMFMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   2120 #define IMFMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   2121 #define IMFMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   2122 #define IMFMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   2123 #define IMFMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   2124 #define IMFMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   2125 #define IMFMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   2126 #define IMFMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   2127 #define IMFMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   2128 #define IMFMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   2129 #define IMFMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   2130 #define IMFMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   2131 #define IMFMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   2132 #define IMFMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   2133 #define IMFMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   2134 #define IMFMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   2135 #define IMFMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   2136 #define IMFMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   2137 #define IMFMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
   2138 #define IMFMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   2139 #define IMFMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   2140 #define IMFMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   2141 #define IMFMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   2142 /*** IMFMediaType methods ***/
   2143 #define IMFMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
   2144 #define IMFMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
   2145 #define IMFMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
   2146 #define IMFMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
   2147 #define IMFMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
   2148 #else
   2149 /*** IUnknown methods ***/
   2150 static FORCEINLINE HRESULT IMFMediaType_QueryInterface(IMFMediaType* This,REFIID riid,void **ppvObject) {
   2151     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2152 }
   2153 static FORCEINLINE ULONG IMFMediaType_AddRef(IMFMediaType* This) {
   2154     return This->lpVtbl->AddRef(This);
   2155 }
   2156 static FORCEINLINE ULONG IMFMediaType_Release(IMFMediaType* This) {
   2157     return This->lpVtbl->Release(This);
   2158 }
   2159 /*** IMFAttributes methods ***/
   2160 static FORCEINLINE HRESULT IMFMediaType_GetItem(IMFMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
   2161     return This->lpVtbl->GetItem(This,guidKey,pValue);
   2162 }
   2163 static FORCEINLINE HRESULT IMFMediaType_GetItemType(IMFMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   2164     return This->lpVtbl->GetItemType(This,guidKey,pType);
   2165 }
   2166 static FORCEINLINE HRESULT IMFMediaType_CompareItem(IMFMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   2167     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   2168 }
   2169 static FORCEINLINE HRESULT IMFMediaType_Compare(IMFMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   2170     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   2171 }
   2172 static FORCEINLINE HRESULT IMFMediaType_GetUINT32(IMFMediaType* This,REFGUID guidKey,UINT32 *punValue) {
   2173     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   2174 }
   2175 static FORCEINLINE HRESULT IMFMediaType_GetUINT64(IMFMediaType* This,REFGUID guidKey,UINT64 *punValue) {
   2176     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   2177 }
   2178 static FORCEINLINE HRESULT IMFMediaType_GetDouble(IMFMediaType* This,REFGUID guidKey,double *pfValue) {
   2179     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   2180 }
   2181 static FORCEINLINE HRESULT IMFMediaType_GetGUID(IMFMediaType* This,REFGUID guidKey,GUID *pguidValue) {
   2182     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   2183 }
   2184 static FORCEINLINE HRESULT IMFMediaType_GetStringLength(IMFMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
   2185     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   2186 }
   2187 static FORCEINLINE HRESULT IMFMediaType_GetString(IMFMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   2188     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   2189 }
   2190 static FORCEINLINE HRESULT IMFMediaType_GetAllocatedString(IMFMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   2191     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   2192 }
   2193 static FORCEINLINE HRESULT IMFMediaType_GetBlobSize(IMFMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   2194     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   2195 }
   2196 static FORCEINLINE HRESULT IMFMediaType_GetBlob(IMFMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   2197     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   2198 }
   2199 static FORCEINLINE HRESULT IMFMediaType_GetAllocatedBlob(IMFMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   2200     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   2201 }
   2202 static FORCEINLINE HRESULT IMFMediaType_GetUnknown(IMFMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   2203     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   2204 }
   2205 static FORCEINLINE HRESULT IMFMediaType_SetItem(IMFMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
   2206     return This->lpVtbl->SetItem(This,guidKey,Value);
   2207 }
   2208 static FORCEINLINE HRESULT IMFMediaType_DeleteItem(IMFMediaType* This,REFGUID guidKey) {
   2209     return This->lpVtbl->DeleteItem(This,guidKey);
   2210 }
   2211 static FORCEINLINE HRESULT IMFMediaType_DeleteAllItems(IMFMediaType* This) {
   2212     return This->lpVtbl->DeleteAllItems(This);
   2213 }
   2214 static FORCEINLINE HRESULT IMFMediaType_SetUINT32(IMFMediaType* This,REFGUID guidKey,UINT32 unValue) {
   2215     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   2216 }
   2217 static FORCEINLINE HRESULT IMFMediaType_SetUINT64(IMFMediaType* This,REFGUID guidKey,UINT64 unValue) {
   2218     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   2219 }
   2220 static FORCEINLINE HRESULT IMFMediaType_SetDouble(IMFMediaType* This,REFGUID guidKey,double fValue) {
   2221     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   2222 }
   2223 static FORCEINLINE HRESULT IMFMediaType_SetGUID(IMFMediaType* This,REFGUID guidKey,REFGUID guidValue) {
   2224     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   2225 }
   2226 static FORCEINLINE HRESULT IMFMediaType_SetString(IMFMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
   2227     return This->lpVtbl->SetString(This,guidKey,wszValue);
   2228 }
   2229 static FORCEINLINE HRESULT IMFMediaType_SetBlob(IMFMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   2230     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   2231 }
   2232 static FORCEINLINE HRESULT IMFMediaType_SetUnknown(IMFMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
   2233     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   2234 }
   2235 static FORCEINLINE HRESULT IMFMediaType_LockStore(IMFMediaType* This) {
   2236     return This->lpVtbl->LockStore(This);
   2237 }
   2238 static FORCEINLINE HRESULT IMFMediaType_UnlockStore(IMFMediaType* This) {
   2239     return This->lpVtbl->UnlockStore(This);
   2240 }
   2241 static FORCEINLINE HRESULT IMFMediaType_GetCount(IMFMediaType* This,UINT32 *pcItems) {
   2242     return This->lpVtbl->GetCount(This,pcItems);
   2243 }
   2244 static FORCEINLINE HRESULT IMFMediaType_GetItemByIndex(IMFMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   2245     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   2246 }
   2247 static FORCEINLINE HRESULT IMFMediaType_CopyAllItems(IMFMediaType* This,IMFAttributes *pDest) {
   2248     return This->lpVtbl->CopyAllItems(This,pDest);
   2249 }
   2250 /*** IMFMediaType methods ***/
   2251 static FORCEINLINE HRESULT IMFMediaType_GetMajorType(IMFMediaType* This,GUID *pguidMajorType) {
   2252     return This->lpVtbl->GetMajorType(This,pguidMajorType);
   2253 }
   2254 static FORCEINLINE HRESULT IMFMediaType_IsCompressedFormat(IMFMediaType* This,WINBOOL *pfCompressed) {
   2255     return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
   2256 }
   2257 static FORCEINLINE HRESULT IMFMediaType_IsEqual(IMFMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
   2258     return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
   2259 }
   2260 static FORCEINLINE HRESULT IMFMediaType_GetRepresentation(IMFMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
   2261     return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
   2262 }
   2263 static FORCEINLINE HRESULT IMFMediaType_FreeRepresentation(IMFMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
   2264     return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
   2265 }
   2266 #endif
   2267 #endif
   2268 
   2269 #endif
   2270 
   2271 HRESULT STDMETHODCALLTYPE IMFMediaType_GetMajorType_Proxy(
   2272     IMFMediaType* This,
   2273     GUID *pguidMajorType);
   2274 void __RPC_STUB IMFMediaType_GetMajorType_Stub(
   2275     IRpcStubBuffer* This,
   2276     IRpcChannelBuffer* pRpcChannelBuffer,
   2277     PRPC_MESSAGE pRpcMessage,
   2278     DWORD* pdwStubPhase);
   2279 HRESULT STDMETHODCALLTYPE IMFMediaType_IsCompressedFormat_Proxy(
   2280     IMFMediaType* This,
   2281     WINBOOL *pfCompressed);
   2282 void __RPC_STUB IMFMediaType_IsCompressedFormat_Stub(
   2283     IRpcStubBuffer* This,
   2284     IRpcChannelBuffer* pRpcChannelBuffer,
   2285     PRPC_MESSAGE pRpcMessage,
   2286     DWORD* pdwStubPhase);
   2287 HRESULT STDMETHODCALLTYPE IMFMediaType_IsEqual_Proxy(
   2288     IMFMediaType* This,
   2289     IMFMediaType *pIMediaType,
   2290     DWORD *pdwFlags);
   2291 void __RPC_STUB IMFMediaType_IsEqual_Stub(
   2292     IRpcStubBuffer* This,
   2293     IRpcChannelBuffer* pRpcChannelBuffer,
   2294     PRPC_MESSAGE pRpcMessage,
   2295     DWORD* pdwStubPhase);
   2296 HRESULT STDMETHODCALLTYPE IMFMediaType_GetRepresentation_Proxy(
   2297     IMFMediaType* This,
   2298     GUID guidRepresentation,
   2299     LPVOID *ppvRepresentation);
   2300 void __RPC_STUB IMFMediaType_GetRepresentation_Stub(
   2301     IRpcStubBuffer* This,
   2302     IRpcChannelBuffer* pRpcChannelBuffer,
   2303     PRPC_MESSAGE pRpcMessage,
   2304     DWORD* pdwStubPhase);
   2305 HRESULT STDMETHODCALLTYPE IMFMediaType_FreeRepresentation_Proxy(
   2306     IMFMediaType* This,
   2307     GUID guidRepresentation,
   2308     LPVOID pvRepresentation);
   2309 void __RPC_STUB IMFMediaType_FreeRepresentation_Stub(
   2310     IRpcStubBuffer* This,
   2311     IRpcChannelBuffer* pRpcChannelBuffer,
   2312     PRPC_MESSAGE pRpcMessage,
   2313     DWORD* pdwStubPhase);
   2314 
   2315 #endif  /* __IMFMediaType_INTERFACE_DEFINED__ */
   2316 
   2317 #define MF_MEDIATYPE_EQUAL_MAJOR_TYPES          0x00000001
   2318 #define MF_MEDIATYPE_EQUAL_FORMAT_TYPES         0x00000002
   2319 #define MF_MEDIATYPE_EQUAL_FORMAT_DATA          0x00000004
   2320 #define MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA     0x00000008
   2321 /*****************************************************************************
   2322  * IMFAudioMediaType interface
   2323  */
   2324 #ifndef __IMFAudioMediaType_INTERFACE_DEFINED__
   2325 #define __IMFAudioMediaType_INTERFACE_DEFINED__
   2326 
   2327 DEFINE_GUID(IID_IMFAudioMediaType, 0x26a0adc3, 0xce26, 0x4672, 0x93,0x04, 0x69,0x55,0x2e,0xdd,0x3f,0xaf);
   2328 #if defined(__cplusplus) && !defined(CINTERFACE)
   2329 MIDL_INTERFACE("26a0adc3-ce26-4672-9304-69552edd3faf")
   2330 IMFAudioMediaType : public IMFMediaType
   2331 {
   2332     virtual const WAVEFORMATEX * STDMETHODCALLTYPE GetAudioFormat(
   2333         ) = 0;
   2334 
   2335 };
   2336 #ifdef __CRT_UUID_DECL
   2337 __CRT_UUID_DECL(IMFAudioMediaType, 0x26a0adc3, 0xce26, 0x4672, 0x93,0x04, 0x69,0x55,0x2e,0xdd,0x3f,0xaf)
   2338 #endif
   2339 #else
   2340 typedef struct IMFAudioMediaTypeVtbl {
   2341     BEGIN_INTERFACE
   2342 
   2343     /*** IUnknown methods ***/
   2344     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2345         IMFAudioMediaType* This,
   2346         REFIID riid,
   2347         void **ppvObject);
   2348 
   2349     ULONG (STDMETHODCALLTYPE *AddRef)(
   2350         IMFAudioMediaType* This);
   2351 
   2352     ULONG (STDMETHODCALLTYPE *Release)(
   2353         IMFAudioMediaType* This);
   2354 
   2355     /*** IMFAttributes methods ***/
   2356     HRESULT (STDMETHODCALLTYPE *GetItem)(
   2357         IMFAudioMediaType* This,
   2358         REFGUID guidKey,
   2359         PROPVARIANT *pValue);
   2360 
   2361     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   2362         IMFAudioMediaType* This,
   2363         REFGUID guidKey,
   2364         MF_ATTRIBUTE_TYPE *pType);
   2365 
   2366     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   2367         IMFAudioMediaType* This,
   2368         REFGUID guidKey,
   2369         REFPROPVARIANT Value,
   2370         WINBOOL *pbResult);
   2371 
   2372     HRESULT (STDMETHODCALLTYPE *Compare)(
   2373         IMFAudioMediaType* This,
   2374         IMFAttributes *pTheirs,
   2375         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   2376         WINBOOL *pbResult);
   2377 
   2378     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   2379         IMFAudioMediaType* This,
   2380         REFGUID guidKey,
   2381         UINT32 *punValue);
   2382 
   2383     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   2384         IMFAudioMediaType* This,
   2385         REFGUID guidKey,
   2386         UINT64 *punValue);
   2387 
   2388     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   2389         IMFAudioMediaType* This,
   2390         REFGUID guidKey,
   2391         double *pfValue);
   2392 
   2393     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   2394         IMFAudioMediaType* This,
   2395         REFGUID guidKey,
   2396         GUID *pguidValue);
   2397 
   2398     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   2399         IMFAudioMediaType* This,
   2400         REFGUID guidKey,
   2401         UINT32 *pcchLength);
   2402 
   2403     HRESULT (STDMETHODCALLTYPE *GetString)(
   2404         IMFAudioMediaType* This,
   2405         REFGUID guidKey,
   2406         LPWSTR pwszValue,
   2407         UINT32 cchBufSize,
   2408         UINT32 *pcchLength);
   2409 
   2410     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   2411         IMFAudioMediaType* This,
   2412         REFGUID guidKey,
   2413         LPWSTR *ppwszValue,
   2414         UINT32 *pcchLength);
   2415 
   2416     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   2417         IMFAudioMediaType* This,
   2418         REFGUID guidKey,
   2419         UINT32 *pcbBlobSize);
   2420 
   2421     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   2422         IMFAudioMediaType* This,
   2423         REFGUID guidKey,
   2424         UINT8 *pBuf,
   2425         UINT32 cbBufSize,
   2426         UINT32 *pcbBlobSize);
   2427 
   2428     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   2429         IMFAudioMediaType* This,
   2430         REFGUID guidKey,
   2431         UINT8 **ppBuf,
   2432         UINT32 *pcbSize);
   2433 
   2434     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   2435         IMFAudioMediaType* This,
   2436         REFGUID guidKey,
   2437         REFIID riid,
   2438         LPVOID *ppv);
   2439 
   2440     HRESULT (STDMETHODCALLTYPE *SetItem)(
   2441         IMFAudioMediaType* This,
   2442         REFGUID guidKey,
   2443         REFPROPVARIANT Value);
   2444 
   2445     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   2446         IMFAudioMediaType* This,
   2447         REFGUID guidKey);
   2448 
   2449     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   2450         IMFAudioMediaType* This);
   2451 
   2452     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   2453         IMFAudioMediaType* This,
   2454         REFGUID guidKey,
   2455         UINT32 unValue);
   2456 
   2457     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   2458         IMFAudioMediaType* This,
   2459         REFGUID guidKey,
   2460         UINT64 unValue);
   2461 
   2462     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   2463         IMFAudioMediaType* This,
   2464         REFGUID guidKey,
   2465         double fValue);
   2466 
   2467     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   2468         IMFAudioMediaType* This,
   2469         REFGUID guidKey,
   2470         REFGUID guidValue);
   2471 
   2472     HRESULT (STDMETHODCALLTYPE *SetString)(
   2473         IMFAudioMediaType* This,
   2474         REFGUID guidKey,
   2475         LPCWSTR wszValue);
   2476 
   2477     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   2478         IMFAudioMediaType* This,
   2479         REFGUID guidKey,
   2480         const UINT8 *pBuf,
   2481         UINT32 cbBufSize);
   2482 
   2483     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   2484         IMFAudioMediaType* This,
   2485         REFGUID guidKey,
   2486         IUnknown *pUnknown);
   2487 
   2488     HRESULT (STDMETHODCALLTYPE *LockStore)(
   2489         IMFAudioMediaType* This);
   2490 
   2491     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   2492         IMFAudioMediaType* This);
   2493 
   2494     HRESULT (STDMETHODCALLTYPE *GetCount)(
   2495         IMFAudioMediaType* This,
   2496         UINT32 *pcItems);
   2497 
   2498     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   2499         IMFAudioMediaType* This,
   2500         UINT32 unIndex,
   2501         GUID *pguidKey,
   2502         PROPVARIANT *pValue);
   2503 
   2504     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   2505         IMFAudioMediaType* This,
   2506         IMFAttributes *pDest);
   2507 
   2508     /*** IMFMediaType methods ***/
   2509     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
   2510         IMFAudioMediaType* This,
   2511         GUID *pguidMajorType);
   2512 
   2513     HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
   2514         IMFAudioMediaType* This,
   2515         WINBOOL *pfCompressed);
   2516 
   2517     HRESULT (STDMETHODCALLTYPE *IsEqual)(
   2518         IMFAudioMediaType* This,
   2519         IMFMediaType *pIMediaType,
   2520         DWORD *pdwFlags);
   2521 
   2522     HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
   2523         IMFAudioMediaType* This,
   2524         GUID guidRepresentation,
   2525         LPVOID *ppvRepresentation);
   2526 
   2527     HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
   2528         IMFAudioMediaType* This,
   2529         GUID guidRepresentation,
   2530         LPVOID pvRepresentation);
   2531 
   2532     /*** IMFAudioMediaType methods ***/
   2533     const WAVEFORMATEX * (STDMETHODCALLTYPE *GetAudioFormat)(
   2534         IMFAudioMediaType* This);
   2535 
   2536     END_INTERFACE
   2537 } IMFAudioMediaTypeVtbl;
   2538 interface IMFAudioMediaType {
   2539     CONST_VTBL IMFAudioMediaTypeVtbl* lpVtbl;
   2540 };
   2541 
   2542 #ifdef COBJMACROS
   2543 #ifndef WIDL_C_INLINE_WRAPPERS
   2544 /*** IUnknown methods ***/
   2545 #define IMFAudioMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2546 #define IMFAudioMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
   2547 #define IMFAudioMediaType_Release(This) (This)->lpVtbl->Release(This)
   2548 /*** IMFAttributes methods ***/
   2549 #define IMFAudioMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   2550 #define IMFAudioMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   2551 #define IMFAudioMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   2552 #define IMFAudioMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   2553 #define IMFAudioMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   2554 #define IMFAudioMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   2555 #define IMFAudioMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   2556 #define IMFAudioMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   2557 #define IMFAudioMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   2558 #define IMFAudioMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   2559 #define IMFAudioMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   2560 #define IMFAudioMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   2561 #define IMFAudioMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   2562 #define IMFAudioMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   2563 #define IMFAudioMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   2564 #define IMFAudioMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   2565 #define IMFAudioMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   2566 #define IMFAudioMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   2567 #define IMFAudioMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   2568 #define IMFAudioMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   2569 #define IMFAudioMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   2570 #define IMFAudioMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   2571 #define IMFAudioMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   2572 #define IMFAudioMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   2573 #define IMFAudioMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   2574 #define IMFAudioMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
   2575 #define IMFAudioMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   2576 #define IMFAudioMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   2577 #define IMFAudioMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   2578 #define IMFAudioMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   2579 /*** IMFMediaType methods ***/
   2580 #define IMFAudioMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
   2581 #define IMFAudioMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
   2582 #define IMFAudioMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
   2583 #define IMFAudioMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
   2584 #define IMFAudioMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
   2585 /*** IMFAudioMediaType methods ***/
   2586 #define IMFAudioMediaType_GetAudioFormat(This) (This)->lpVtbl->GetAudioFormat(This)
   2587 #else
   2588 /*** IUnknown methods ***/
   2589 static FORCEINLINE HRESULT IMFAudioMediaType_QueryInterface(IMFAudioMediaType* This,REFIID riid,void **ppvObject) {
   2590     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2591 }
   2592 static FORCEINLINE ULONG IMFAudioMediaType_AddRef(IMFAudioMediaType* This) {
   2593     return This->lpVtbl->AddRef(This);
   2594 }
   2595 static FORCEINLINE ULONG IMFAudioMediaType_Release(IMFAudioMediaType* This) {
   2596     return This->lpVtbl->Release(This);
   2597 }
   2598 /*** IMFAttributes methods ***/
   2599 static FORCEINLINE HRESULT IMFAudioMediaType_GetItem(IMFAudioMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
   2600     return This->lpVtbl->GetItem(This,guidKey,pValue);
   2601 }
   2602 static FORCEINLINE HRESULT IMFAudioMediaType_GetItemType(IMFAudioMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   2603     return This->lpVtbl->GetItemType(This,guidKey,pType);
   2604 }
   2605 static FORCEINLINE HRESULT IMFAudioMediaType_CompareItem(IMFAudioMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   2606     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   2607 }
   2608 static FORCEINLINE HRESULT IMFAudioMediaType_Compare(IMFAudioMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   2609     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   2610 }
   2611 static FORCEINLINE HRESULT IMFAudioMediaType_GetUINT32(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *punValue) {
   2612     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   2613 }
   2614 static FORCEINLINE HRESULT IMFAudioMediaType_GetUINT64(IMFAudioMediaType* This,REFGUID guidKey,UINT64 *punValue) {
   2615     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   2616 }
   2617 static FORCEINLINE HRESULT IMFAudioMediaType_GetDouble(IMFAudioMediaType* This,REFGUID guidKey,double *pfValue) {
   2618     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   2619 }
   2620 static FORCEINLINE HRESULT IMFAudioMediaType_GetGUID(IMFAudioMediaType* This,REFGUID guidKey,GUID *pguidValue) {
   2621     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   2622 }
   2623 static FORCEINLINE HRESULT IMFAudioMediaType_GetStringLength(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
   2624     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   2625 }
   2626 static FORCEINLINE HRESULT IMFAudioMediaType_GetString(IMFAudioMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   2627     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   2628 }
   2629 static FORCEINLINE HRESULT IMFAudioMediaType_GetAllocatedString(IMFAudioMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   2630     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   2631 }
   2632 static FORCEINLINE HRESULT IMFAudioMediaType_GetBlobSize(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   2633     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   2634 }
   2635 static FORCEINLINE HRESULT IMFAudioMediaType_GetBlob(IMFAudioMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   2636     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   2637 }
   2638 static FORCEINLINE HRESULT IMFAudioMediaType_GetAllocatedBlob(IMFAudioMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   2639     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   2640 }
   2641 static FORCEINLINE HRESULT IMFAudioMediaType_GetUnknown(IMFAudioMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   2642     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   2643 }
   2644 static FORCEINLINE HRESULT IMFAudioMediaType_SetItem(IMFAudioMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
   2645     return This->lpVtbl->SetItem(This,guidKey,Value);
   2646 }
   2647 static FORCEINLINE HRESULT IMFAudioMediaType_DeleteItem(IMFAudioMediaType* This,REFGUID guidKey) {
   2648     return This->lpVtbl->DeleteItem(This,guidKey);
   2649 }
   2650 static FORCEINLINE HRESULT IMFAudioMediaType_DeleteAllItems(IMFAudioMediaType* This) {
   2651     return This->lpVtbl->DeleteAllItems(This);
   2652 }
   2653 static FORCEINLINE HRESULT IMFAudioMediaType_SetUINT32(IMFAudioMediaType* This,REFGUID guidKey,UINT32 unValue) {
   2654     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   2655 }
   2656 static FORCEINLINE HRESULT IMFAudioMediaType_SetUINT64(IMFAudioMediaType* This,REFGUID guidKey,UINT64 unValue) {
   2657     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   2658 }
   2659 static FORCEINLINE HRESULT IMFAudioMediaType_SetDouble(IMFAudioMediaType* This,REFGUID guidKey,double fValue) {
   2660     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   2661 }
   2662 static FORCEINLINE HRESULT IMFAudioMediaType_SetGUID(IMFAudioMediaType* This,REFGUID guidKey,REFGUID guidValue) {
   2663     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   2664 }
   2665 static FORCEINLINE HRESULT IMFAudioMediaType_SetString(IMFAudioMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
   2666     return This->lpVtbl->SetString(This,guidKey,wszValue);
   2667 }
   2668 static FORCEINLINE HRESULT IMFAudioMediaType_SetBlob(IMFAudioMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   2669     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   2670 }
   2671 static FORCEINLINE HRESULT IMFAudioMediaType_SetUnknown(IMFAudioMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
   2672     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   2673 }
   2674 static FORCEINLINE HRESULT IMFAudioMediaType_LockStore(IMFAudioMediaType* This) {
   2675     return This->lpVtbl->LockStore(This);
   2676 }
   2677 static FORCEINLINE HRESULT IMFAudioMediaType_UnlockStore(IMFAudioMediaType* This) {
   2678     return This->lpVtbl->UnlockStore(This);
   2679 }
   2680 static FORCEINLINE HRESULT IMFAudioMediaType_GetCount(IMFAudioMediaType* This,UINT32 *pcItems) {
   2681     return This->lpVtbl->GetCount(This,pcItems);
   2682 }
   2683 static FORCEINLINE HRESULT IMFAudioMediaType_GetItemByIndex(IMFAudioMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   2684     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   2685 }
   2686 static FORCEINLINE HRESULT IMFAudioMediaType_CopyAllItems(IMFAudioMediaType* This,IMFAttributes *pDest) {
   2687     return This->lpVtbl->CopyAllItems(This,pDest);
   2688 }
   2689 /*** IMFMediaType methods ***/
   2690 static FORCEINLINE HRESULT IMFAudioMediaType_GetMajorType(IMFAudioMediaType* This,GUID *pguidMajorType) {
   2691     return This->lpVtbl->GetMajorType(This,pguidMajorType);
   2692 }
   2693 static FORCEINLINE HRESULT IMFAudioMediaType_IsCompressedFormat(IMFAudioMediaType* This,WINBOOL *pfCompressed) {
   2694     return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
   2695 }
   2696 static FORCEINLINE HRESULT IMFAudioMediaType_IsEqual(IMFAudioMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
   2697     return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
   2698 }
   2699 static FORCEINLINE HRESULT IMFAudioMediaType_GetRepresentation(IMFAudioMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
   2700     return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
   2701 }
   2702 static FORCEINLINE HRESULT IMFAudioMediaType_FreeRepresentation(IMFAudioMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
   2703     return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
   2704 }
   2705 /*** IMFAudioMediaType methods ***/
   2706 static FORCEINLINE const WAVEFORMATEX * IMFAudioMediaType_GetAudioFormat(IMFAudioMediaType* This) {
   2707     return This->lpVtbl->GetAudioFormat(This);
   2708 }
   2709 #endif
   2710 #endif
   2711 
   2712 #endif
   2713 
   2714 const WAVEFORMATEX * STDMETHODCALLTYPE IMFAudioMediaType_GetAudioFormat_Proxy(
   2715     IMFAudioMediaType* This);
   2716 void __RPC_STUB IMFAudioMediaType_GetAudioFormat_Stub(
   2717     IRpcStubBuffer* This,
   2718     IRpcChannelBuffer* pRpcChannelBuffer,
   2719     PRPC_MESSAGE pRpcMessage,
   2720     DWORD* pdwStubPhase);
   2721 
   2722 #endif  /* __IMFAudioMediaType_INTERFACE_DEFINED__ */
   2723 
   2724 typedef struct __WIDL_mmreg_h_generated_name_00000001 {
   2725     GUID guidMajorType;
   2726     GUID guidSubtype;
   2727 } MFT_REGISTER_TYPE_INFO;
   2728 typedef enum _MFVideoFlags {
   2729     MFVideoFlag_PAD_TO_Mask = 0x1 | 0x2,
   2730     MFVideoFlag_PAD_TO_None = 0 * 0x1,
   2731     MFVideoFlag_PAD_TO_4x3 = 1 * 0x1,
   2732     MFVideoFlag_PAD_TO_16x9 = 2 * 0x1,
   2733     MFVideoFlag_SrcContentHintMask = (0x4 | 0x8) | 0x10,
   2734     MFVideoFlag_SrcContentHintNone = 0 * 0x4,
   2735     MFVideoFlag_SrcContentHint16x9 = 1 * 0x4,
   2736     MFVideoFlag_SrcContentHint235_1 = 2 * 0x4,
   2737     MFVideoFlag_AnalogProtected = 0x20,
   2738     MFVideoFlag_DigitallyProtected = 0x40,
   2739     MFVideoFlag_ProgressiveContent = 0x80,
   2740     MFVideoFlag_FieldRepeatCountMask = (0x100 | 0x200) | 0x400,
   2741     MFVideoFlag_FieldRepeatCountShift = 8,
   2742     MFVideoFlag_ProgressiveSeqReset = 0x800,
   2743     MFVideoFlag_PanScanEnabled = 0x20000,
   2744     MFVideoFlag_LowerFieldFirst = 0x40000,
   2745     MFVideoFlag_BottomUpLinearRep = 0x80000,
   2746     MFVideoFlags_DXVASurface = 0x100000,
   2747     MFVideoFlags_RenderTargetSurface = 0x400000,
   2748     MFVideoFlags_ForceQWORD = 0x7fffffff
   2749 } MFVideoFlags;
   2750 typedef struct _MFRatio {
   2751     DWORD Numerator;
   2752     DWORD Denominator;
   2753 } MFRatio;
   2754 typedef struct _MFOffset {
   2755     WORD fract;
   2756     short value;
   2757 } MFOffset;
   2758 typedef struct _MFVideoArea {
   2759     MFOffset OffsetX;
   2760     MFOffset OffsetY;
   2761     SIZE Area;
   2762 } MFVideoArea;
   2763 typedef enum _MFVideoChromaSubsampling {
   2764     MFVideoChromaSubsampling_Unknown = 0,
   2765     MFVideoChromaSubsampling_ProgressiveChroma = 0x8,
   2766     MFVideoChromaSubsampling_Horizontally_Cosited = 0x4,
   2767     MFVideoChromaSubsampling_Vertically_Cosited = 0x2,
   2768     MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes = 0x1,
   2769     MFVideoChromaSubsampling_MPEG2 = MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
   2770     MFVideoChromaSubsampling_MPEG1 = MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
   2771     MFVideoChromaSubsampling_DV_PAL = MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_Cosited,
   2772     MFVideoChromaSubsampling_Cosited = (MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_Cosited) | MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
   2773     MFVideoChromaSubsampling_Last = MFVideoChromaSubsampling_Cosited + 1,
   2774     MFVideoChromaSubsampling_ForceDWORD = 0x7fffffff
   2775 } MFVideoChromaSubsampling;
   2776 typedef enum _MFVideoInterlaceMode {
   2777     MFVideoInterlace_Unknown = 0,
   2778     MFVideoInterlace_Progressive = 2,
   2779     MFVideoInterlace_FieldInterleavedUpperFirst = 3,
   2780     MFVideoInterlace_FieldInterleavedLowerFirst = 4,
   2781     MFVideoInterlace_FieldSingleUpper = 5,
   2782     MFVideoInterlace_FieldSingleLower = 6,
   2783     MFVideoInterlace_MixedInterlaceOrProgressive = 7,
   2784     MFVideoInterlace_Last = 8,
   2785     MFVideoInterlace_ForceDWORD = 0x7fffffff
   2786 } MFVideoInterlaceMode;
   2787 typedef enum _MFVideoTransferFunction {
   2788     MFVideoTransFunc_Unknown = 0,
   2789     MFVideoTransFunc_10 = 1,
   2790     MFVideoTransFunc_18 = 2,
   2791     MFVideoTransFunc_20 = 3,
   2792     MFVideoTransFunc_22 = 4,
   2793     MFVideoTransFunc_709 = 5,
   2794     MFVideoTransFunc_240M = 6,
   2795     MFVideoTransFunc_sRGB = 7,
   2796     MFVideoTransFunc_28 = 8,
   2797     MFVideoTransFunc_Log_100 = 9,
   2798     MFVideoTransFunc_Log_316 = 10,
   2799     MFVideoTransFunc_709_sym = 11,
   2800     MFVideoTransFunc_Last = 12,
   2801     MFVideoTransFunc_ForceDWORD = 0x7fffffff
   2802 } MFVideoTransferFunction;
   2803 typedef enum _MFVideoTransferMatrix {
   2804     MFVideoTransferMatrix_Unknown = 0,
   2805     MFVideoTransferMatrix_BT709 = 1,
   2806     MFVideoTransferMatrix_BT601 = 2,
   2807     MFVideoTransferMatrix_SMPTE240M = 3,
   2808     MFVideoTransferMatrix_Last = 4,
   2809     MFVideoTransferMatrix_ForceDWORD = 0x7fffffff
   2810 } MFVideoTransferMatrix;
   2811 typedef enum _MFVideoPrimaries {
   2812     MFVideoPrimaries_Unknown = 0,
   2813     MFVideoPrimaries_reserved = 1,
   2814     MFVideoPrimaries_BT709 = 2,
   2815     MFVideoPrimaries_BT470_2_SysM = 3,
   2816     MFVideoPrimaries_BT470_2_SysBG = 4,
   2817     MFVideoPrimaries_SMPTE170M = 5,
   2818     MFVideoPrimaries_SMPTE240M = 6,
   2819     MFVideoPrimaries_EBU3213 = 7,
   2820     MFVideoPrimaries_SMPTE_C = 8,
   2821     MFVideoPrimaries_Last = 9,
   2822     MFVideoPrimaries_ForceDWORD = 0x7fffffff
   2823 } MFVideoPrimaries;
   2824 typedef enum _MFVideoLighting {
   2825     MFVideoLighting_Unknown = 0,
   2826     MFVideoLighting_bright = 1,
   2827     MFVideoLighting_office = 2,
   2828     MFVideoLighting_dim = 3,
   2829     MFVideoLighting_dark = 4,
   2830     MFVideoLighting_Last = 5,
   2831     MFVideoLighting_ForceDWORD = 0x7fffffff
   2832 } MFVideoLighting;
   2833 typedef enum _MFNominalRange {
   2834     MFNominalRange_Unknown = 0,
   2835     MFNominalRange_Normal = 1,
   2836     MFNominalRange_Wide = 2,
   2837     MFNominalRange_0_255 = 1,
   2838     MFNominalRange_16_235 = 2,
   2839     MFNominalRange_48_208 = 3,
   2840     MFNominalRange_64_127 = 4
   2841 } MFNominalRange;
   2842 typedef struct _MFVideoInfo {
   2843     DWORD dwWidth;
   2844     DWORD dwHeight;
   2845     MFRatio PixelAspectRatio;
   2846     MFVideoChromaSubsampling SourceChromaSubsampling;
   2847     MFVideoInterlaceMode InterlaceMode;
   2848     MFVideoTransferFunction TransferFunction;
   2849     MFVideoPrimaries ColorPrimaries;
   2850     MFVideoTransferMatrix TransferMatrix;
   2851     MFVideoLighting SourceLighting;
   2852     MFRatio FramesPerSecond;
   2853     MFNominalRange NominalRange;
   2854     MFVideoArea GeometricAperture;
   2855     MFVideoArea MinimumDisplayAperture;
   2856     MFVideoArea PanScanAperture;
   2857     UINT64 VideoFlags;
   2858 } MFVideoInfo;
   2859 typedef struct _MFVideoCompressedInfo {
   2860     LONGLONG AvgBitrate;
   2861     LONGLONG AvgBitErrorRate;
   2862     DWORD MaxKeyFrameSpacing;
   2863 } MFVideoCompressedInfo;
   2864 typedef struct _MFARGB {
   2865     BYTE rgbBlue;
   2866     BYTE rgbGreen;
   2867     BYTE rgbRed;
   2868     BYTE rgbAlpha;
   2869 } MFARGB;
   2870 typedef struct __MFAYUVSample {
   2871     BYTE bCrValue;
   2872     BYTE bCbValue;
   2873     BYTE bYValue;
   2874     BYTE bSampleAlpha8;
   2875 } MFAYUVSample;
   2876 typedef union _MFPaletteEntry {
   2877     MFARGB ARGB;
   2878     MFAYUVSample AYCbCr;
   2879 } MFPaletteEntry;
   2880 typedef struct _MFVideoSurfaceInfo {
   2881     DWORD Format;
   2882     DWORD PaletteEntries;
   2883     MFPaletteEntry Palette[1];
   2884 } MFVideoSurfaceInfo;
   2885 typedef struct _MFVIDEOFORMAT {
   2886     DWORD dwSize;
   2887     MFVideoInfo videoInfo;
   2888     GUID guidFormat;
   2889     MFVideoCompressedInfo compressedInfo;
   2890     MFVideoSurfaceInfo surfaceInfo;
   2891 } MFVIDEOFORMAT;
   2892 typedef enum _MFStandardVideoFormat {
   2893     MFStdVideoFormat_reserved = 0,
   2894     MFStdVideoFormat_NTSC = 1,
   2895     MFStdVideoFormat_PAL = 2,
   2896     MFStdVideoFormat_DVD_NTSC = 3,
   2897     MFStdVideoFormat_DVD_PAL = 4,
   2898     MFStdVideoFormat_DV_PAL = 5,
   2899     MFStdVideoFormat_DV_NTSC = 6,
   2900     MFStdVideoFormat_ATSC_SD480i = 7,
   2901     MFStdVideoFormat_ATSC_HD1080i = 8,
   2902     MFStdVideoFormat_ATSC_HD720p = 9
   2903 } MFStandardVideoFormat;
   2904 /*****************************************************************************
   2905  * IMFVideoMediaType interface
   2906  */
   2907 #ifndef __IMFVideoMediaType_INTERFACE_DEFINED__
   2908 #define __IMFVideoMediaType_INTERFACE_DEFINED__
   2909 
   2910 DEFINE_GUID(IID_IMFVideoMediaType, 0xb99f381f, 0xa8f9, 0x47a2, 0xa5,0xaf, 0xca,0x3a,0x22,0x5a,0x38,0x90);
   2911 #if defined(__cplusplus) && !defined(CINTERFACE)
   2912 MIDL_INTERFACE("b99f381f-a8f9-47a2-a5af-ca3a225a3890")
   2913 IMFVideoMediaType : public IMFMediaType
   2914 {
   2915     virtual const MFVIDEOFORMAT * STDMETHODCALLTYPE GetVideoFormat(
   2916         ) = 0;
   2917 
   2918     virtual HRESULT STDMETHODCALLTYPE GetVideoRepresentation(
   2919         GUID guidRepresentation,
   2920         LPVOID *ppvRepresentation,
   2921         LONG lStride) = 0;
   2922 
   2923 };
   2924 #ifdef __CRT_UUID_DECL
   2925 __CRT_UUID_DECL(IMFVideoMediaType, 0xb99f381f, 0xa8f9, 0x47a2, 0xa5,0xaf, 0xca,0x3a,0x22,0x5a,0x38,0x90)
   2926 #endif
   2927 #else
   2928 typedef struct IMFVideoMediaTypeVtbl {
   2929     BEGIN_INTERFACE
   2930 
   2931     /*** IUnknown methods ***/
   2932     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2933         IMFVideoMediaType* This,
   2934         REFIID riid,
   2935         void **ppvObject);
   2936 
   2937     ULONG (STDMETHODCALLTYPE *AddRef)(
   2938         IMFVideoMediaType* This);
   2939 
   2940     ULONG (STDMETHODCALLTYPE *Release)(
   2941         IMFVideoMediaType* This);
   2942 
   2943     /*** IMFAttributes methods ***/
   2944     HRESULT (STDMETHODCALLTYPE *GetItem)(
   2945         IMFVideoMediaType* This,
   2946         REFGUID guidKey,
   2947         PROPVARIANT *pValue);
   2948 
   2949     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   2950         IMFVideoMediaType* This,
   2951         REFGUID guidKey,
   2952         MF_ATTRIBUTE_TYPE *pType);
   2953 
   2954     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   2955         IMFVideoMediaType* This,
   2956         REFGUID guidKey,
   2957         REFPROPVARIANT Value,
   2958         WINBOOL *pbResult);
   2959 
   2960     HRESULT (STDMETHODCALLTYPE *Compare)(
   2961         IMFVideoMediaType* This,
   2962         IMFAttributes *pTheirs,
   2963         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   2964         WINBOOL *pbResult);
   2965 
   2966     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   2967         IMFVideoMediaType* This,
   2968         REFGUID guidKey,
   2969         UINT32 *punValue);
   2970 
   2971     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   2972         IMFVideoMediaType* This,
   2973         REFGUID guidKey,
   2974         UINT64 *punValue);
   2975 
   2976     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   2977         IMFVideoMediaType* This,
   2978         REFGUID guidKey,
   2979         double *pfValue);
   2980 
   2981     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   2982         IMFVideoMediaType* This,
   2983         REFGUID guidKey,
   2984         GUID *pguidValue);
   2985 
   2986     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   2987         IMFVideoMediaType* This,
   2988         REFGUID guidKey,
   2989         UINT32 *pcchLength);
   2990 
   2991     HRESULT (STDMETHODCALLTYPE *GetString)(
   2992         IMFVideoMediaType* This,
   2993         REFGUID guidKey,
   2994         LPWSTR pwszValue,
   2995         UINT32 cchBufSize,
   2996         UINT32 *pcchLength);
   2997 
   2998     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   2999         IMFVideoMediaType* This,
   3000         REFGUID guidKey,
   3001         LPWSTR *ppwszValue,
   3002         UINT32 *pcchLength);
   3003 
   3004     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   3005         IMFVideoMediaType* This,
   3006         REFGUID guidKey,
   3007         UINT32 *pcbBlobSize);
   3008 
   3009     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   3010         IMFVideoMediaType* This,
   3011         REFGUID guidKey,
   3012         UINT8 *pBuf,
   3013         UINT32 cbBufSize,
   3014         UINT32 *pcbBlobSize);
   3015 
   3016     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   3017         IMFVideoMediaType* This,
   3018         REFGUID guidKey,
   3019         UINT8 **ppBuf,
   3020         UINT32 *pcbSize);
   3021 
   3022     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   3023         IMFVideoMediaType* This,
   3024         REFGUID guidKey,
   3025         REFIID riid,
   3026         LPVOID *ppv);
   3027 
   3028     HRESULT (STDMETHODCALLTYPE *SetItem)(
   3029         IMFVideoMediaType* This,
   3030         REFGUID guidKey,
   3031         REFPROPVARIANT Value);
   3032 
   3033     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   3034         IMFVideoMediaType* This,
   3035         REFGUID guidKey);
   3036 
   3037     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   3038         IMFVideoMediaType* This);
   3039 
   3040     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   3041         IMFVideoMediaType* This,
   3042         REFGUID guidKey,
   3043         UINT32 unValue);
   3044 
   3045     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   3046         IMFVideoMediaType* This,
   3047         REFGUID guidKey,
   3048         UINT64 unValue);
   3049 
   3050     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   3051         IMFVideoMediaType* This,
   3052         REFGUID guidKey,
   3053         double fValue);
   3054 
   3055     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   3056         IMFVideoMediaType* This,
   3057         REFGUID guidKey,
   3058         REFGUID guidValue);
   3059 
   3060     HRESULT (STDMETHODCALLTYPE *SetString)(
   3061         IMFVideoMediaType* This,
   3062         REFGUID guidKey,
   3063         LPCWSTR wszValue);
   3064 
   3065     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   3066         IMFVideoMediaType* This,
   3067         REFGUID guidKey,
   3068         const UINT8 *pBuf,
   3069         UINT32 cbBufSize);
   3070 
   3071     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   3072         IMFVideoMediaType* This,
   3073         REFGUID guidKey,
   3074         IUnknown *pUnknown);
   3075 
   3076     HRESULT (STDMETHODCALLTYPE *LockStore)(
   3077         IMFVideoMediaType* This);
   3078 
   3079     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   3080         IMFVideoMediaType* This);
   3081 
   3082     HRESULT (STDMETHODCALLTYPE *GetCount)(
   3083         IMFVideoMediaType* This,
   3084         UINT32 *pcItems);
   3085 
   3086     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   3087         IMFVideoMediaType* This,
   3088         UINT32 unIndex,
   3089         GUID *pguidKey,
   3090         PROPVARIANT *pValue);
   3091 
   3092     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   3093         IMFVideoMediaType* This,
   3094         IMFAttributes *pDest);
   3095 
   3096     /*** IMFMediaType methods ***/
   3097     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
   3098         IMFVideoMediaType* This,
   3099         GUID *pguidMajorType);
   3100 
   3101     HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
   3102         IMFVideoMediaType* This,
   3103         WINBOOL *pfCompressed);
   3104 
   3105     HRESULT (STDMETHODCALLTYPE *IsEqual)(
   3106         IMFVideoMediaType* This,
   3107         IMFMediaType *pIMediaType,
   3108         DWORD *pdwFlags);
   3109 
   3110     HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
   3111         IMFVideoMediaType* This,
   3112         GUID guidRepresentation,
   3113         LPVOID *ppvRepresentation);
   3114 
   3115     HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
   3116         IMFVideoMediaType* This,
   3117         GUID guidRepresentation,
   3118         LPVOID pvRepresentation);
   3119 
   3120     /*** IMFVideoMediaType methods ***/
   3121     const MFVIDEOFORMAT * (STDMETHODCALLTYPE *GetVideoFormat)(
   3122         IMFVideoMediaType* This);
   3123 
   3124     HRESULT (STDMETHODCALLTYPE *GetVideoRepresentation)(
   3125         IMFVideoMediaType* This,
   3126         GUID guidRepresentation,
   3127         LPVOID *ppvRepresentation,
   3128         LONG lStride);
   3129 
   3130     END_INTERFACE
   3131 } IMFVideoMediaTypeVtbl;
   3132 interface IMFVideoMediaType {
   3133     CONST_VTBL IMFVideoMediaTypeVtbl* lpVtbl;
   3134 };
   3135 
   3136 #ifdef COBJMACROS
   3137 #ifndef WIDL_C_INLINE_WRAPPERS
   3138 /*** IUnknown methods ***/
   3139 #define IMFVideoMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3140 #define IMFVideoMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
   3141 #define IMFVideoMediaType_Release(This) (This)->lpVtbl->Release(This)
   3142 /*** IMFAttributes methods ***/
   3143 #define IMFVideoMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   3144 #define IMFVideoMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   3145 #define IMFVideoMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   3146 #define IMFVideoMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   3147 #define IMFVideoMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   3148 #define IMFVideoMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   3149 #define IMFVideoMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   3150 #define IMFVideoMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   3151 #define IMFVideoMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   3152 #define IMFVideoMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   3153 #define IMFVideoMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   3154 #define IMFVideoMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   3155 #define IMFVideoMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   3156 #define IMFVideoMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   3157 #define IMFVideoMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   3158 #define IMFVideoMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   3159 #define IMFVideoMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   3160 #define IMFVideoMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   3161 #define IMFVideoMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   3162 #define IMFVideoMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   3163 #define IMFVideoMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   3164 #define IMFVideoMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   3165 #define IMFVideoMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   3166 #define IMFVideoMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   3167 #define IMFVideoMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   3168 #define IMFVideoMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
   3169 #define IMFVideoMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   3170 #define IMFVideoMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   3171 #define IMFVideoMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   3172 #define IMFVideoMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   3173 /*** IMFMediaType methods ***/
   3174 #define IMFVideoMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
   3175 #define IMFVideoMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
   3176 #define IMFVideoMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
   3177 #define IMFVideoMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
   3178 #define IMFVideoMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
   3179 /*** IMFVideoMediaType methods ***/
   3180 #define IMFVideoMediaType_GetVideoFormat(This) (This)->lpVtbl->GetVideoFormat(This)
   3181 #define IMFVideoMediaType_GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride) (This)->lpVtbl->GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride)
   3182 #else
   3183 /*** IUnknown methods ***/
   3184 static FORCEINLINE HRESULT IMFVideoMediaType_QueryInterface(IMFVideoMediaType* This,REFIID riid,void **ppvObject) {
   3185     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3186 }
   3187 static FORCEINLINE ULONG IMFVideoMediaType_AddRef(IMFVideoMediaType* This) {
   3188     return This->lpVtbl->AddRef(This);
   3189 }
   3190 static FORCEINLINE ULONG IMFVideoMediaType_Release(IMFVideoMediaType* This) {
   3191     return This->lpVtbl->Release(This);
   3192 }
   3193 /*** IMFAttributes methods ***/
   3194 static FORCEINLINE HRESULT IMFVideoMediaType_GetItem(IMFVideoMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
   3195     return This->lpVtbl->GetItem(This,guidKey,pValue);
   3196 }
   3197 static FORCEINLINE HRESULT IMFVideoMediaType_GetItemType(IMFVideoMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   3198     return This->lpVtbl->GetItemType(This,guidKey,pType);
   3199 }
   3200 static FORCEINLINE HRESULT IMFVideoMediaType_CompareItem(IMFVideoMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   3201     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   3202 }
   3203 static FORCEINLINE HRESULT IMFVideoMediaType_Compare(IMFVideoMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   3204     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   3205 }
   3206 static FORCEINLINE HRESULT IMFVideoMediaType_GetUINT32(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *punValue) {
   3207     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   3208 }
   3209 static FORCEINLINE HRESULT IMFVideoMediaType_GetUINT64(IMFVideoMediaType* This,REFGUID guidKey,UINT64 *punValue) {
   3210     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   3211 }
   3212 static FORCEINLINE HRESULT IMFVideoMediaType_GetDouble(IMFVideoMediaType* This,REFGUID guidKey,double *pfValue) {
   3213     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   3214 }
   3215 static FORCEINLINE HRESULT IMFVideoMediaType_GetGUID(IMFVideoMediaType* This,REFGUID guidKey,GUID *pguidValue) {
   3216     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   3217 }
   3218 static FORCEINLINE HRESULT IMFVideoMediaType_GetStringLength(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
   3219     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   3220 }
   3221 static FORCEINLINE HRESULT IMFVideoMediaType_GetString(IMFVideoMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   3222     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   3223 }
   3224 static FORCEINLINE HRESULT IMFVideoMediaType_GetAllocatedString(IMFVideoMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   3225     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   3226 }
   3227 static FORCEINLINE HRESULT IMFVideoMediaType_GetBlobSize(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   3228     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   3229 }
   3230 static FORCEINLINE HRESULT IMFVideoMediaType_GetBlob(IMFVideoMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   3231     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   3232 }
   3233 static FORCEINLINE HRESULT IMFVideoMediaType_GetAllocatedBlob(IMFVideoMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   3234     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   3235 }
   3236 static FORCEINLINE HRESULT IMFVideoMediaType_GetUnknown(IMFVideoMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   3237     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   3238 }
   3239 static FORCEINLINE HRESULT IMFVideoMediaType_SetItem(IMFVideoMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
   3240     return This->lpVtbl->SetItem(This,guidKey,Value);
   3241 }
   3242 static FORCEINLINE HRESULT IMFVideoMediaType_DeleteItem(IMFVideoMediaType* This,REFGUID guidKey) {
   3243     return This->lpVtbl->DeleteItem(This,guidKey);
   3244 }
   3245 static FORCEINLINE HRESULT IMFVideoMediaType_DeleteAllItems(IMFVideoMediaType* This) {
   3246     return This->lpVtbl->DeleteAllItems(This);
   3247 }
   3248 static FORCEINLINE HRESULT IMFVideoMediaType_SetUINT32(IMFVideoMediaType* This,REFGUID guidKey,UINT32 unValue) {
   3249     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   3250 }
   3251 static FORCEINLINE HRESULT IMFVideoMediaType_SetUINT64(IMFVideoMediaType* This,REFGUID guidKey,UINT64 unValue) {
   3252     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   3253 }
   3254 static FORCEINLINE HRESULT IMFVideoMediaType_SetDouble(IMFVideoMediaType* This,REFGUID guidKey,double fValue) {
   3255     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   3256 }
   3257 static FORCEINLINE HRESULT IMFVideoMediaType_SetGUID(IMFVideoMediaType* This,REFGUID guidKey,REFGUID guidValue) {
   3258     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   3259 }
   3260 static FORCEINLINE HRESULT IMFVideoMediaType_SetString(IMFVideoMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
   3261     return This->lpVtbl->SetString(This,guidKey,wszValue);
   3262 }
   3263 static FORCEINLINE HRESULT IMFVideoMediaType_SetBlob(IMFVideoMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   3264     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   3265 }
   3266 static FORCEINLINE HRESULT IMFVideoMediaType_SetUnknown(IMFVideoMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
   3267     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   3268 }
   3269 static FORCEINLINE HRESULT IMFVideoMediaType_LockStore(IMFVideoMediaType* This) {
   3270     return This->lpVtbl->LockStore(This);
   3271 }
   3272 static FORCEINLINE HRESULT IMFVideoMediaType_UnlockStore(IMFVideoMediaType* This) {
   3273     return This->lpVtbl->UnlockStore(This);
   3274 }
   3275 static FORCEINLINE HRESULT IMFVideoMediaType_GetCount(IMFVideoMediaType* This,UINT32 *pcItems) {
   3276     return This->lpVtbl->GetCount(This,pcItems);
   3277 }
   3278 static FORCEINLINE HRESULT IMFVideoMediaType_GetItemByIndex(IMFVideoMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   3279     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   3280 }
   3281 static FORCEINLINE HRESULT IMFVideoMediaType_CopyAllItems(IMFVideoMediaType* This,IMFAttributes *pDest) {
   3282     return This->lpVtbl->CopyAllItems(This,pDest);
   3283 }
   3284 /*** IMFMediaType methods ***/
   3285 static FORCEINLINE HRESULT IMFVideoMediaType_GetMajorType(IMFVideoMediaType* This,GUID *pguidMajorType) {
   3286     return This->lpVtbl->GetMajorType(This,pguidMajorType);
   3287 }
   3288 static FORCEINLINE HRESULT IMFVideoMediaType_IsCompressedFormat(IMFVideoMediaType* This,WINBOOL *pfCompressed) {
   3289     return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
   3290 }
   3291 static FORCEINLINE HRESULT IMFVideoMediaType_IsEqual(IMFVideoMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
   3292     return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
   3293 }
   3294 static FORCEINLINE HRESULT IMFVideoMediaType_GetRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
   3295     return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
   3296 }
   3297 static FORCEINLINE HRESULT IMFVideoMediaType_FreeRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
   3298     return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
   3299 }
   3300 /*** IMFVideoMediaType methods ***/
   3301 static FORCEINLINE const MFVIDEOFORMAT * IMFVideoMediaType_GetVideoFormat(IMFVideoMediaType* This) {
   3302     return This->lpVtbl->GetVideoFormat(This);
   3303 }
   3304 static FORCEINLINE HRESULT IMFVideoMediaType_GetVideoRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation,LONG lStride) {
   3305     return This->lpVtbl->GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride);
   3306 }
   3307 #endif
   3308 #endif
   3309 
   3310 #endif
   3311 
   3312 const MFVIDEOFORMAT * STDMETHODCALLTYPE IMFVideoMediaType_GetVideoFormat_Proxy(
   3313     IMFVideoMediaType* This);
   3314 void __RPC_STUB IMFVideoMediaType_GetVideoFormat_Stub(
   3315     IRpcStubBuffer* This,
   3316     IRpcChannelBuffer* pRpcChannelBuffer,
   3317     PRPC_MESSAGE pRpcMessage,
   3318     DWORD* pdwStubPhase);
   3319 HRESULT STDMETHODCALLTYPE IMFVideoMediaType_GetVideoRepresentation_Proxy(
   3320     IMFVideoMediaType* This,
   3321     GUID guidRepresentation,
   3322     LPVOID *ppvRepresentation,
   3323     LONG lStride);
   3324 void __RPC_STUB IMFVideoMediaType_GetVideoRepresentation_Stub(
   3325     IRpcStubBuffer* This,
   3326     IRpcChannelBuffer* pRpcChannelBuffer,
   3327     PRPC_MESSAGE pRpcMessage,
   3328     DWORD* pdwStubPhase);
   3329 
   3330 #endif  /* __IMFVideoMediaType_INTERFACE_DEFINED__ */
   3331 
   3332 /*****************************************************************************
   3333  * IMFAsyncResult interface
   3334  */
   3335 #ifndef __IMFAsyncResult_INTERFACE_DEFINED__
   3336 #define __IMFAsyncResult_INTERFACE_DEFINED__
   3337 
   3338 DEFINE_GUID(IID_IMFAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6);
   3339 #if defined(__cplusplus) && !defined(CINTERFACE)
   3340 MIDL_INTERFACE("ac6b7889-0740-4d51-8619-905994a55cc6")
   3341 IMFAsyncResult : public IUnknown
   3342 {
   3343     virtual HRESULT STDMETHODCALLTYPE GetState(
   3344         IUnknown **ppunkState) = 0;
   3345 
   3346     virtual HRESULT STDMETHODCALLTYPE GetStatus(
   3347         ) = 0;
   3348 
   3349     virtual HRESULT STDMETHODCALLTYPE SetStatus(
   3350         HRESULT hrStatus) = 0;
   3351 
   3352     virtual HRESULT STDMETHODCALLTYPE GetObject(
   3353         IUnknown **ppObject) = 0;
   3354 
   3355     virtual IUnknown * STDMETHODCALLTYPE GetStateNoAddRef(
   3356         ) = 0;
   3357 
   3358 };
   3359 #ifdef __CRT_UUID_DECL
   3360 __CRT_UUID_DECL(IMFAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6)
   3361 #endif
   3362 #else
   3363 typedef struct IMFAsyncResultVtbl {
   3364     BEGIN_INTERFACE
   3365 
   3366     /*** IUnknown methods ***/
   3367     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3368         IMFAsyncResult* This,
   3369         REFIID riid,
   3370         void **ppvObject);
   3371 
   3372     ULONG (STDMETHODCALLTYPE *AddRef)(
   3373         IMFAsyncResult* This);
   3374 
   3375     ULONG (STDMETHODCALLTYPE *Release)(
   3376         IMFAsyncResult* This);
   3377 
   3378     /*** IMFAsyncResult methods ***/
   3379     HRESULT (STDMETHODCALLTYPE *GetState)(
   3380         IMFAsyncResult* This,
   3381         IUnknown **ppunkState);
   3382 
   3383     HRESULT (STDMETHODCALLTYPE *GetStatus)(
   3384         IMFAsyncResult* This);
   3385 
   3386     HRESULT (STDMETHODCALLTYPE *SetStatus)(
   3387         IMFAsyncResult* This,
   3388         HRESULT hrStatus);
   3389 
   3390     HRESULT (STDMETHODCALLTYPE *GetObject)(
   3391         IMFAsyncResult* This,
   3392         IUnknown **ppObject);
   3393 
   3394     IUnknown * (STDMETHODCALLTYPE *GetStateNoAddRef)(
   3395         IMFAsyncResult* This);
   3396 
   3397     END_INTERFACE
   3398 } IMFAsyncResultVtbl;
   3399 interface IMFAsyncResult {
   3400     CONST_VTBL IMFAsyncResultVtbl* lpVtbl;
   3401 };
   3402 
   3403 #ifdef COBJMACROS
   3404 #ifndef WIDL_C_INLINE_WRAPPERS
   3405 /*** IUnknown methods ***/
   3406 #define IMFAsyncResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3407 #define IMFAsyncResult_AddRef(This) (This)->lpVtbl->AddRef(This)
   3408 #define IMFAsyncResult_Release(This) (This)->lpVtbl->Release(This)
   3409 /*** IMFAsyncResult methods ***/
   3410 #define IMFAsyncResult_GetState(This,ppunkState) (This)->lpVtbl->GetState(This,ppunkState)
   3411 #define IMFAsyncResult_GetStatus(This) (This)->lpVtbl->GetStatus(This)
   3412 #define IMFAsyncResult_SetStatus(This,hrStatus) (This)->lpVtbl->SetStatus(This,hrStatus)
   3413 #define IMFAsyncResult_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
   3414 #define IMFAsyncResult_GetStateNoAddRef(This) (This)->lpVtbl->GetStateNoAddRef(This)
   3415 #else
   3416 /*** IUnknown methods ***/
   3417 static FORCEINLINE HRESULT IMFAsyncResult_QueryInterface(IMFAsyncResult* This,REFIID riid,void **ppvObject) {
   3418     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3419 }
   3420 static FORCEINLINE ULONG IMFAsyncResult_AddRef(IMFAsyncResult* This) {
   3421     return This->lpVtbl->AddRef(This);
   3422 }
   3423 static FORCEINLINE ULONG IMFAsyncResult_Release(IMFAsyncResult* This) {
   3424     return This->lpVtbl->Release(This);
   3425 }
   3426 /*** IMFAsyncResult methods ***/
   3427 static FORCEINLINE HRESULT IMFAsyncResult_GetState(IMFAsyncResult* This,IUnknown **ppunkState) {
   3428     return This->lpVtbl->GetState(This,ppunkState);
   3429 }
   3430 static FORCEINLINE HRESULT IMFAsyncResult_GetStatus(IMFAsyncResult* This) {
   3431     return This->lpVtbl->GetStatus(This);
   3432 }
   3433 static FORCEINLINE HRESULT IMFAsyncResult_SetStatus(IMFAsyncResult* This,HRESULT hrStatus) {
   3434     return This->lpVtbl->SetStatus(This,hrStatus);
   3435 }
   3436 static FORCEINLINE HRESULT IMFAsyncResult_GetObject(IMFAsyncResult* This,IUnknown **ppObject) {
   3437     return This->lpVtbl->GetObject(This,ppObject);
   3438 }
   3439 static FORCEINLINE IUnknown * IMFAsyncResult_GetStateNoAddRef(IMFAsyncResult* This) {
   3440     return This->lpVtbl->GetStateNoAddRef(This);
   3441 }
   3442 #endif
   3443 #endif
   3444 
   3445 #endif
   3446 
   3447 HRESULT STDMETHODCALLTYPE IMFAsyncResult_GetState_Proxy(
   3448     IMFAsyncResult* This,
   3449     IUnknown **ppunkState);
   3450 void __RPC_STUB IMFAsyncResult_GetState_Stub(
   3451     IRpcStubBuffer* This,
   3452     IRpcChannelBuffer* pRpcChannelBuffer,
   3453     PRPC_MESSAGE pRpcMessage,
   3454     DWORD* pdwStubPhase);
   3455 HRESULT STDMETHODCALLTYPE IMFAsyncResult_GetStatus_Proxy(
   3456     IMFAsyncResult* This);
   3457 void __RPC_STUB IMFAsyncResult_GetStatus_Stub(
   3458     IRpcStubBuffer* This,
   3459     IRpcChannelBuffer* pRpcChannelBuffer,
   3460     PRPC_MESSAGE pRpcMessage,
   3461     DWORD* pdwStubPhase);
   3462 HRESULT STDMETHODCALLTYPE IMFAsyncResult_SetStatus_Proxy(
   3463     IMFAsyncResult* This,
   3464     HRESULT hrStatus);
   3465 void __RPC_STUB IMFAsyncResult_SetStatus_Stub(
   3466     IRpcStubBuffer* This,
   3467     IRpcChannelBuffer* pRpcChannelBuffer,
   3468     PRPC_MESSAGE pRpcMessage,
   3469     DWORD* pdwStubPhase);
   3470 HRESULT STDMETHODCALLTYPE IMFAsyncResult_GetObject_Proxy(
   3471     IMFAsyncResult* This,
   3472     IUnknown **ppObject);
   3473 void __RPC_STUB IMFAsyncResult_GetObject_Stub(
   3474     IRpcStubBuffer* This,
   3475     IRpcChannelBuffer* pRpcChannelBuffer,
   3476     PRPC_MESSAGE pRpcMessage,
   3477     DWORD* pdwStubPhase);
   3478 
   3479 #endif  /* __IMFAsyncResult_INTERFACE_DEFINED__ */
   3480 
   3481 /*****************************************************************************
   3482  * IMFAsyncCallback interface
   3483  */
   3484 #ifndef __IMFAsyncCallback_INTERFACE_DEFINED__
   3485 #define __IMFAsyncCallback_INTERFACE_DEFINED__
   3486 
   3487 DEFINE_GUID(IID_IMFAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e);
   3488 #if defined(__cplusplus) && !defined(CINTERFACE)
   3489 MIDL_INTERFACE("a27003cf-2354-4f2a-8d6a-ab7cff15437e")
   3490 IMFAsyncCallback : public IUnknown
   3491 {
   3492     virtual HRESULT STDMETHODCALLTYPE GetParameters(
   3493         DWORD *pdwFlags,
   3494         DWORD *pdwQueue) = 0;
   3495 
   3496     virtual HRESULT STDMETHODCALLTYPE Invoke(
   3497         IMFAsyncResult *pAsyncResult) = 0;
   3498 
   3499 };
   3500 #ifdef __CRT_UUID_DECL
   3501 __CRT_UUID_DECL(IMFAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e)
   3502 #endif
   3503 #else
   3504 typedef struct IMFAsyncCallbackVtbl {
   3505     BEGIN_INTERFACE
   3506 
   3507     /*** IUnknown methods ***/
   3508     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3509         IMFAsyncCallback* This,
   3510         REFIID riid,
   3511         void **ppvObject);
   3512 
   3513     ULONG (STDMETHODCALLTYPE *AddRef)(
   3514         IMFAsyncCallback* This);
   3515 
   3516     ULONG (STDMETHODCALLTYPE *Release)(
   3517         IMFAsyncCallback* This);
   3518 
   3519     /*** IMFAsyncCallback methods ***/
   3520     HRESULT (STDMETHODCALLTYPE *GetParameters)(
   3521         IMFAsyncCallback* This,
   3522         DWORD *pdwFlags,
   3523         DWORD *pdwQueue);
   3524 
   3525     HRESULT (STDMETHODCALLTYPE *Invoke)(
   3526         IMFAsyncCallback* This,
   3527         IMFAsyncResult *pAsyncResult);
   3528 
   3529     END_INTERFACE
   3530 } IMFAsyncCallbackVtbl;
   3531 interface IMFAsyncCallback {
   3532     CONST_VTBL IMFAsyncCallbackVtbl* lpVtbl;
   3533 };
   3534 
   3535 #ifdef COBJMACROS
   3536 #ifndef WIDL_C_INLINE_WRAPPERS
   3537 /*** IUnknown methods ***/
   3538 #define IMFAsyncCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3539 #define IMFAsyncCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
   3540 #define IMFAsyncCallback_Release(This) (This)->lpVtbl->Release(This)
   3541 /*** IMFAsyncCallback methods ***/
   3542 #define IMFAsyncCallback_GetParameters(This,pdwFlags,pdwQueue) (This)->lpVtbl->GetParameters(This,pdwFlags,pdwQueue)
   3543 #define IMFAsyncCallback_Invoke(This,pAsyncResult) (This)->lpVtbl->Invoke(This,pAsyncResult)
   3544 #else
   3545 /*** IUnknown methods ***/
   3546 static FORCEINLINE HRESULT IMFAsyncCallback_QueryInterface(IMFAsyncCallback* This,REFIID riid,void **ppvObject) {
   3547     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3548 }
   3549 static FORCEINLINE ULONG IMFAsyncCallback_AddRef(IMFAsyncCallback* This) {
   3550     return This->lpVtbl->AddRef(This);
   3551 }
   3552 static FORCEINLINE ULONG IMFAsyncCallback_Release(IMFAsyncCallback* This) {
   3553     return This->lpVtbl->Release(This);
   3554 }
   3555 /*** IMFAsyncCallback methods ***/
   3556 static FORCEINLINE HRESULT IMFAsyncCallback_GetParameters(IMFAsyncCallback* This,DWORD *pdwFlags,DWORD *pdwQueue) {
   3557     return This->lpVtbl->GetParameters(This,pdwFlags,pdwQueue);
   3558 }
   3559 static FORCEINLINE HRESULT IMFAsyncCallback_Invoke(IMFAsyncCallback* This,IMFAsyncResult *pAsyncResult) {
   3560     return This->lpVtbl->Invoke(This,pAsyncResult);
   3561 }
   3562 #endif
   3563 #endif
   3564 
   3565 #endif
   3566 
   3567 HRESULT STDMETHODCALLTYPE IMFAsyncCallback_GetParameters_Proxy(
   3568     IMFAsyncCallback* This,
   3569     DWORD *pdwFlags,
   3570     DWORD *pdwQueue);
   3571 void __RPC_STUB IMFAsyncCallback_GetParameters_Stub(
   3572     IRpcStubBuffer* This,
   3573     IRpcChannelBuffer* pRpcChannelBuffer,
   3574     PRPC_MESSAGE pRpcMessage,
   3575     DWORD* pdwStubPhase);
   3576 HRESULT STDMETHODCALLTYPE IMFAsyncCallback_Invoke_Proxy(
   3577     IMFAsyncCallback* This,
   3578     IMFAsyncResult *pAsyncResult);
   3579 void __RPC_STUB IMFAsyncCallback_Invoke_Stub(
   3580     IRpcStubBuffer* This,
   3581     IRpcChannelBuffer* pRpcChannelBuffer,
   3582     PRPC_MESSAGE pRpcMessage,
   3583     DWORD* pdwStubPhase);
   3584 
   3585 #endif  /* __IMFAsyncCallback_INTERFACE_DEFINED__ */
   3586 
   3587 /*****************************************************************************
   3588  * IMFRemoteAsyncCallback interface
   3589  */
   3590 #ifndef __IMFRemoteAsyncCallback_INTERFACE_DEFINED__
   3591 #define __IMFRemoteAsyncCallback_INTERFACE_DEFINED__
   3592 
   3593 DEFINE_GUID(IID_IMFRemoteAsyncCallback, 0xa27003d0, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e);
   3594 #if defined(__cplusplus) && !defined(CINTERFACE)
   3595 MIDL_INTERFACE("a27003d0-2354-4f2a-8d6a-ab7cff15437e")
   3596 IMFRemoteAsyncCallback : public IUnknown
   3597 {
   3598     virtual HRESULT STDMETHODCALLTYPE Invoke(
   3599         HRESULT hr,
   3600         IUnknown *pRemoteResult) = 0;
   3601 
   3602 };
   3603 #ifdef __CRT_UUID_DECL
   3604 __CRT_UUID_DECL(IMFRemoteAsyncCallback, 0xa27003d0, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e)
   3605 #endif
   3606 #else
   3607 typedef struct IMFRemoteAsyncCallbackVtbl {
   3608     BEGIN_INTERFACE
   3609 
   3610     /*** IUnknown methods ***/
   3611     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3612         IMFRemoteAsyncCallback* This,
   3613         REFIID riid,
   3614         void **ppvObject);
   3615 
   3616     ULONG (STDMETHODCALLTYPE *AddRef)(
   3617         IMFRemoteAsyncCallback* This);
   3618 
   3619     ULONG (STDMETHODCALLTYPE *Release)(
   3620         IMFRemoteAsyncCallback* This);
   3621 
   3622     /*** IMFRemoteAsyncCallback methods ***/
   3623     HRESULT (STDMETHODCALLTYPE *Invoke)(
   3624         IMFRemoteAsyncCallback* This,
   3625         HRESULT hr,
   3626         IUnknown *pRemoteResult);
   3627 
   3628     END_INTERFACE
   3629 } IMFRemoteAsyncCallbackVtbl;
   3630 interface IMFRemoteAsyncCallback {
   3631     CONST_VTBL IMFRemoteAsyncCallbackVtbl* lpVtbl;
   3632 };
   3633 
   3634 #ifdef COBJMACROS
   3635 #ifndef WIDL_C_INLINE_WRAPPERS
   3636 /*** IUnknown methods ***/
   3637 #define IMFRemoteAsyncCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3638 #define IMFRemoteAsyncCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
   3639 #define IMFRemoteAsyncCallback_Release(This) (This)->lpVtbl->Release(This)
   3640 /*** IMFRemoteAsyncCallback methods ***/
   3641 #define IMFRemoteAsyncCallback_Invoke(This,hr,pRemoteResult) (This)->lpVtbl->Invoke(This,hr,pRemoteResult)
   3642 #else
   3643 /*** IUnknown methods ***/
   3644 static FORCEINLINE HRESULT IMFRemoteAsyncCallback_QueryInterface(IMFRemoteAsyncCallback* This,REFIID riid,void **ppvObject) {
   3645     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3646 }
   3647 static FORCEINLINE ULONG IMFRemoteAsyncCallback_AddRef(IMFRemoteAsyncCallback* This) {
   3648     return This->lpVtbl->AddRef(This);
   3649 }
   3650 static FORCEINLINE ULONG IMFRemoteAsyncCallback_Release(IMFRemoteAsyncCallback* This) {
   3651     return This->lpVtbl->Release(This);
   3652 }
   3653 /*** IMFRemoteAsyncCallback methods ***/
   3654 static FORCEINLINE HRESULT IMFRemoteAsyncCallback_Invoke(IMFRemoteAsyncCallback* This,HRESULT hr,IUnknown *pRemoteResult) {
   3655     return This->lpVtbl->Invoke(This,hr,pRemoteResult);
   3656 }
   3657 #endif
   3658 #endif
   3659 
   3660 #endif
   3661 
   3662 HRESULT STDMETHODCALLTYPE IMFRemoteAsyncCallback_Invoke_Proxy(
   3663     IMFRemoteAsyncCallback* This,
   3664     HRESULT hr,
   3665     IUnknown *pRemoteResult);
   3666 void __RPC_STUB IMFRemoteAsyncCallback_Invoke_Stub(
   3667     IRpcStubBuffer* This,
   3668     IRpcChannelBuffer* pRpcChannelBuffer,
   3669     PRPC_MESSAGE pRpcMessage,
   3670     DWORD* pdwStubPhase);
   3671 
   3672 #endif  /* __IMFRemoteAsyncCallback_INTERFACE_DEFINED__ */
   3673 
   3674 #define MFASYNC_FAST_IO_PROCESSING_CALLBACK  0x0001
   3675 #define MFASYNC_SIGNAL_CALLBACK              0x0002
   3676 #define MFASYNC_CALLBACK_QUEUE_UNDEFINED      0x00000000
   3677 #define MFASYNC_CALLBACK_QUEUE_STANDARD       0x00000001
   3678 #define MFASYNC_CALLBACK_QUEUE_RT             0x00000002
   3679 #define MFASYNC_CALLBACK_QUEUE_IO             0x00000003
   3680 #define MFASYNC_CALLBACK_QUEUE_TIMER          0x00000004
   3681 #define MFASYNC_CALLBACK_QUEUE_LONG_FUNCTION  0x00000007
   3682 #define MFASYNC_CALLBACK_QUEUE_PRIVATE_MASK   0xffff0000
   3683 #define MFASYNC_CALLBACK_QUEUE_ALL            0xffffffff
   3684 typedef DWORD MediaEventType;
   3685 /*****************************************************************************
   3686  * IMFMediaEvent interface
   3687  */
   3688 #ifndef __IMFMediaEvent_INTERFACE_DEFINED__
   3689 #define __IMFMediaEvent_INTERFACE_DEFINED__
   3690 
   3691 DEFINE_GUID(IID_IMFMediaEvent, 0xdf598932, 0xf10c, 0x4e39, 0xbb,0xa2, 0xc3,0x08,0xf1,0x01,0xda,0xa3);
   3692 #if defined(__cplusplus) && !defined(CINTERFACE)
   3693 MIDL_INTERFACE("df598932-f10c-4e39-bba2-c308f101daa3")
   3694 IMFMediaEvent : public IMFAttributes
   3695 {
   3696     virtual HRESULT STDMETHODCALLTYPE GetType(
   3697         MediaEventType *pmet) = 0;
   3698 
   3699     virtual HRESULT STDMETHODCALLTYPE GetExtendedType(
   3700         GUID *pguidExtendedType) = 0;
   3701 
   3702     virtual HRESULT STDMETHODCALLTYPE GetStatus(
   3703         HRESULT *phrStatus) = 0;
   3704 
   3705     virtual HRESULT STDMETHODCALLTYPE GetValue(
   3706         PROPVARIANT *pvValue) = 0;
   3707 
   3708 };
   3709 #ifdef __CRT_UUID_DECL
   3710 __CRT_UUID_DECL(IMFMediaEvent, 0xdf598932, 0xf10c, 0x4e39, 0xbb,0xa2, 0xc3,0x08,0xf1,0x01,0xda,0xa3)
   3711 #endif
   3712 #else
   3713 typedef struct IMFMediaEventVtbl {
   3714     BEGIN_INTERFACE
   3715 
   3716     /*** IUnknown methods ***/
   3717     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3718         IMFMediaEvent* This,
   3719         REFIID riid,
   3720         void **ppvObject);
   3721 
   3722     ULONG (STDMETHODCALLTYPE *AddRef)(
   3723         IMFMediaEvent* This);
   3724 
   3725     ULONG (STDMETHODCALLTYPE *Release)(
   3726         IMFMediaEvent* This);
   3727 
   3728     /*** IMFAttributes methods ***/
   3729     HRESULT (STDMETHODCALLTYPE *GetItem)(
   3730         IMFMediaEvent* This,
   3731         REFGUID guidKey,
   3732         PROPVARIANT *pValue);
   3733 
   3734     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   3735         IMFMediaEvent* This,
   3736         REFGUID guidKey,
   3737         MF_ATTRIBUTE_TYPE *pType);
   3738 
   3739     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   3740         IMFMediaEvent* This,
   3741         REFGUID guidKey,
   3742         REFPROPVARIANT Value,
   3743         WINBOOL *pbResult);
   3744 
   3745     HRESULT (STDMETHODCALLTYPE *Compare)(
   3746         IMFMediaEvent* This,
   3747         IMFAttributes *pTheirs,
   3748         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   3749         WINBOOL *pbResult);
   3750 
   3751     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   3752         IMFMediaEvent* This,
   3753         REFGUID guidKey,
   3754         UINT32 *punValue);
   3755 
   3756     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   3757         IMFMediaEvent* This,
   3758         REFGUID guidKey,
   3759         UINT64 *punValue);
   3760 
   3761     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   3762         IMFMediaEvent* This,
   3763         REFGUID guidKey,
   3764         double *pfValue);
   3765 
   3766     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   3767         IMFMediaEvent* This,
   3768         REFGUID guidKey,
   3769         GUID *pguidValue);
   3770 
   3771     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   3772         IMFMediaEvent* This,
   3773         REFGUID guidKey,
   3774         UINT32 *pcchLength);
   3775 
   3776     HRESULT (STDMETHODCALLTYPE *GetString)(
   3777         IMFMediaEvent* This,
   3778         REFGUID guidKey,
   3779         LPWSTR pwszValue,
   3780         UINT32 cchBufSize,
   3781         UINT32 *pcchLength);
   3782 
   3783     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   3784         IMFMediaEvent* This,
   3785         REFGUID guidKey,
   3786         LPWSTR *ppwszValue,
   3787         UINT32 *pcchLength);
   3788 
   3789     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   3790         IMFMediaEvent* This,
   3791         REFGUID guidKey,
   3792         UINT32 *pcbBlobSize);
   3793 
   3794     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   3795         IMFMediaEvent* This,
   3796         REFGUID guidKey,
   3797         UINT8 *pBuf,
   3798         UINT32 cbBufSize,
   3799         UINT32 *pcbBlobSize);
   3800 
   3801     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   3802         IMFMediaEvent* This,
   3803         REFGUID guidKey,
   3804         UINT8 **ppBuf,
   3805         UINT32 *pcbSize);
   3806 
   3807     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   3808         IMFMediaEvent* This,
   3809         REFGUID guidKey,
   3810         REFIID riid,
   3811         LPVOID *ppv);
   3812 
   3813     HRESULT (STDMETHODCALLTYPE *SetItem)(
   3814         IMFMediaEvent* This,
   3815         REFGUID guidKey,
   3816         REFPROPVARIANT Value);
   3817 
   3818     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   3819         IMFMediaEvent* This,
   3820         REFGUID guidKey);
   3821 
   3822     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   3823         IMFMediaEvent* This);
   3824 
   3825     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   3826         IMFMediaEvent* This,
   3827         REFGUID guidKey,
   3828         UINT32 unValue);
   3829 
   3830     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   3831         IMFMediaEvent* This,
   3832         REFGUID guidKey,
   3833         UINT64 unValue);
   3834 
   3835     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   3836         IMFMediaEvent* This,
   3837         REFGUID guidKey,
   3838         double fValue);
   3839 
   3840     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   3841         IMFMediaEvent* This,
   3842         REFGUID guidKey,
   3843         REFGUID guidValue);
   3844 
   3845     HRESULT (STDMETHODCALLTYPE *SetString)(
   3846         IMFMediaEvent* This,
   3847         REFGUID guidKey,
   3848         LPCWSTR wszValue);
   3849 
   3850     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   3851         IMFMediaEvent* This,
   3852         REFGUID guidKey,
   3853         const UINT8 *pBuf,
   3854         UINT32 cbBufSize);
   3855 
   3856     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   3857         IMFMediaEvent* This,
   3858         REFGUID guidKey,
   3859         IUnknown *pUnknown);
   3860 
   3861     HRESULT (STDMETHODCALLTYPE *LockStore)(
   3862         IMFMediaEvent* This);
   3863 
   3864     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   3865         IMFMediaEvent* This);
   3866 
   3867     HRESULT (STDMETHODCALLTYPE *GetCount)(
   3868         IMFMediaEvent* This,
   3869         UINT32 *pcItems);
   3870 
   3871     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   3872         IMFMediaEvent* This,
   3873         UINT32 unIndex,
   3874         GUID *pguidKey,
   3875         PROPVARIANT *pValue);
   3876 
   3877     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   3878         IMFMediaEvent* This,
   3879         IMFAttributes *pDest);
   3880 
   3881     /*** IMFMediaEvent methods ***/
   3882     HRESULT (STDMETHODCALLTYPE *GetType)(
   3883         IMFMediaEvent* This,
   3884         MediaEventType *pmet);
   3885 
   3886     HRESULT (STDMETHODCALLTYPE *GetExtendedType)(
   3887         IMFMediaEvent* This,
   3888         GUID *pguidExtendedType);
   3889 
   3890     HRESULT (STDMETHODCALLTYPE *GetStatus)(
   3891         IMFMediaEvent* This,
   3892         HRESULT *phrStatus);
   3893 
   3894     HRESULT (STDMETHODCALLTYPE *GetValue)(
   3895         IMFMediaEvent* This,
   3896         PROPVARIANT *pvValue);
   3897 
   3898     END_INTERFACE
   3899 } IMFMediaEventVtbl;
   3900 interface IMFMediaEvent {
   3901     CONST_VTBL IMFMediaEventVtbl* lpVtbl;
   3902 };
   3903 
   3904 #ifdef COBJMACROS
   3905 #ifndef WIDL_C_INLINE_WRAPPERS
   3906 /*** IUnknown methods ***/
   3907 #define IMFMediaEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3908 #define IMFMediaEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
   3909 #define IMFMediaEvent_Release(This) (This)->lpVtbl->Release(This)
   3910 /*** IMFAttributes methods ***/
   3911 #define IMFMediaEvent_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   3912 #define IMFMediaEvent_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   3913 #define IMFMediaEvent_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   3914 #define IMFMediaEvent_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   3915 #define IMFMediaEvent_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   3916 #define IMFMediaEvent_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   3917 #define IMFMediaEvent_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   3918 #define IMFMediaEvent_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   3919 #define IMFMediaEvent_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   3920 #define IMFMediaEvent_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   3921 #define IMFMediaEvent_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   3922 #define IMFMediaEvent_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   3923 #define IMFMediaEvent_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   3924 #define IMFMediaEvent_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   3925 #define IMFMediaEvent_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   3926 #define IMFMediaEvent_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   3927 #define IMFMediaEvent_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   3928 #define IMFMediaEvent_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   3929 #define IMFMediaEvent_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   3930 #define IMFMediaEvent_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   3931 #define IMFMediaEvent_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   3932 #define IMFMediaEvent_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   3933 #define IMFMediaEvent_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   3934 #define IMFMediaEvent_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   3935 #define IMFMediaEvent_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   3936 #define IMFMediaEvent_LockStore(This) (This)->lpVtbl->LockStore(This)
   3937 #define IMFMediaEvent_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   3938 #define IMFMediaEvent_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   3939 #define IMFMediaEvent_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   3940 #define IMFMediaEvent_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   3941 /*** IMFMediaEvent methods ***/
   3942 #define IMFMediaEvent_GetType(This,pmet) (This)->lpVtbl->GetType(This,pmet)
   3943 #define IMFMediaEvent_GetExtendedType(This,pguidExtendedType) (This)->lpVtbl->GetExtendedType(This,pguidExtendedType)
   3944 #define IMFMediaEvent_GetStatus(This,phrStatus) (This)->lpVtbl->GetStatus(This,phrStatus)
   3945 #define IMFMediaEvent_GetValue(This,pvValue) (This)->lpVtbl->GetValue(This,pvValue)
   3946 #else
   3947 /*** IUnknown methods ***/
   3948 static FORCEINLINE HRESULT IMFMediaEvent_QueryInterface(IMFMediaEvent* This,REFIID riid,void **ppvObject) {
   3949     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3950 }
   3951 static FORCEINLINE ULONG IMFMediaEvent_AddRef(IMFMediaEvent* This) {
   3952     return This->lpVtbl->AddRef(This);
   3953 }
   3954 static FORCEINLINE ULONG IMFMediaEvent_Release(IMFMediaEvent* This) {
   3955     return This->lpVtbl->Release(This);
   3956 }
   3957 /*** IMFAttributes methods ***/
   3958 static FORCEINLINE HRESULT IMFMediaEvent_GetItem(IMFMediaEvent* This,REFGUID guidKey,PROPVARIANT *pValue) {
   3959     return This->lpVtbl->GetItem(This,guidKey,pValue);
   3960 }
   3961 static FORCEINLINE HRESULT IMFMediaEvent_GetItemType(IMFMediaEvent* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   3962     return This->lpVtbl->GetItemType(This,guidKey,pType);
   3963 }
   3964 static FORCEINLINE HRESULT IMFMediaEvent_CompareItem(IMFMediaEvent* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   3965     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   3966 }
   3967 static FORCEINLINE HRESULT IMFMediaEvent_Compare(IMFMediaEvent* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   3968     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   3969 }
   3970 static FORCEINLINE HRESULT IMFMediaEvent_GetUINT32(IMFMediaEvent* This,REFGUID guidKey,UINT32 *punValue) {
   3971     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   3972 }
   3973 static FORCEINLINE HRESULT IMFMediaEvent_GetUINT64(IMFMediaEvent* This,REFGUID guidKey,UINT64 *punValue) {
   3974     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   3975 }
   3976 static FORCEINLINE HRESULT IMFMediaEvent_GetDouble(IMFMediaEvent* This,REFGUID guidKey,double *pfValue) {
   3977     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   3978 }
   3979 static FORCEINLINE HRESULT IMFMediaEvent_GetGUID(IMFMediaEvent* This,REFGUID guidKey,GUID *pguidValue) {
   3980     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   3981 }
   3982 static FORCEINLINE HRESULT IMFMediaEvent_GetStringLength(IMFMediaEvent* This,REFGUID guidKey,UINT32 *pcchLength) {
   3983     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   3984 }
   3985 static FORCEINLINE HRESULT IMFMediaEvent_GetString(IMFMediaEvent* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   3986     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   3987 }
   3988 static FORCEINLINE HRESULT IMFMediaEvent_GetAllocatedString(IMFMediaEvent* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   3989     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   3990 }
   3991 static FORCEINLINE HRESULT IMFMediaEvent_GetBlobSize(IMFMediaEvent* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   3992     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   3993 }
   3994 static FORCEINLINE HRESULT IMFMediaEvent_GetBlob(IMFMediaEvent* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   3995     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   3996 }
   3997 static FORCEINLINE HRESULT IMFMediaEvent_GetAllocatedBlob(IMFMediaEvent* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   3998     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   3999 }
   4000 static FORCEINLINE HRESULT IMFMediaEvent_GetUnknown(IMFMediaEvent* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   4001     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   4002 }
   4003 static FORCEINLINE HRESULT IMFMediaEvent_SetItem(IMFMediaEvent* This,REFGUID guidKey,REFPROPVARIANT Value) {
   4004     return This->lpVtbl->SetItem(This,guidKey,Value);
   4005 }
   4006 static FORCEINLINE HRESULT IMFMediaEvent_DeleteItem(IMFMediaEvent* This,REFGUID guidKey) {
   4007     return This->lpVtbl->DeleteItem(This,guidKey);
   4008 }
   4009 static FORCEINLINE HRESULT IMFMediaEvent_DeleteAllItems(IMFMediaEvent* This) {
   4010     return This->lpVtbl->DeleteAllItems(This);
   4011 }
   4012 static FORCEINLINE HRESULT IMFMediaEvent_SetUINT32(IMFMediaEvent* This,REFGUID guidKey,UINT32 unValue) {
   4013     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   4014 }
   4015 static FORCEINLINE HRESULT IMFMediaEvent_SetUINT64(IMFMediaEvent* This,REFGUID guidKey,UINT64 unValue) {
   4016     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   4017 }
   4018 static FORCEINLINE HRESULT IMFMediaEvent_SetDouble(IMFMediaEvent* This,REFGUID guidKey,double fValue) {
   4019     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   4020 }
   4021 static FORCEINLINE HRESULT IMFMediaEvent_SetGUID(IMFMediaEvent* This,REFGUID guidKey,REFGUID guidValue) {
   4022     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   4023 }
   4024 static FORCEINLINE HRESULT IMFMediaEvent_SetString(IMFMediaEvent* This,REFGUID guidKey,LPCWSTR wszValue) {
   4025     return This->lpVtbl->SetString(This,guidKey,wszValue);
   4026 }
   4027 static FORCEINLINE HRESULT IMFMediaEvent_SetBlob(IMFMediaEvent* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   4028     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   4029 }
   4030 static FORCEINLINE HRESULT IMFMediaEvent_SetUnknown(IMFMediaEvent* This,REFGUID guidKey,IUnknown *pUnknown) {
   4031     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   4032 }
   4033 static FORCEINLINE HRESULT IMFMediaEvent_LockStore(IMFMediaEvent* This) {
   4034     return This->lpVtbl->LockStore(This);
   4035 }
   4036 static FORCEINLINE HRESULT IMFMediaEvent_UnlockStore(IMFMediaEvent* This) {
   4037     return This->lpVtbl->UnlockStore(This);
   4038 }
   4039 static FORCEINLINE HRESULT IMFMediaEvent_GetCount(IMFMediaEvent* This,UINT32 *pcItems) {
   4040     return This->lpVtbl->GetCount(This,pcItems);
   4041 }
   4042 static FORCEINLINE HRESULT IMFMediaEvent_GetItemByIndex(IMFMediaEvent* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   4043     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   4044 }
   4045 static FORCEINLINE HRESULT IMFMediaEvent_CopyAllItems(IMFMediaEvent* This,IMFAttributes *pDest) {
   4046     return This->lpVtbl->CopyAllItems(This,pDest);
   4047 }
   4048 /*** IMFMediaEvent methods ***/
   4049 static FORCEINLINE HRESULT IMFMediaEvent_GetType(IMFMediaEvent* This,MediaEventType *pmet) {
   4050     return This->lpVtbl->GetType(This,pmet);
   4051 }
   4052 static FORCEINLINE HRESULT IMFMediaEvent_GetExtendedType(IMFMediaEvent* This,GUID *pguidExtendedType) {
   4053     return This->lpVtbl->GetExtendedType(This,pguidExtendedType);
   4054 }
   4055 static FORCEINLINE HRESULT IMFMediaEvent_GetStatus(IMFMediaEvent* This,HRESULT *phrStatus) {
   4056     return This->lpVtbl->GetStatus(This,phrStatus);
   4057 }
   4058 static FORCEINLINE HRESULT IMFMediaEvent_GetValue(IMFMediaEvent* This,PROPVARIANT *pvValue) {
   4059     return This->lpVtbl->GetValue(This,pvValue);
   4060 }
   4061 #endif
   4062 #endif
   4063 
   4064 #endif
   4065 
   4066 HRESULT STDMETHODCALLTYPE IMFMediaEvent_GetType_Proxy(
   4067     IMFMediaEvent* This,
   4068     MediaEventType *pmet);
   4069 void __RPC_STUB IMFMediaEvent_GetType_Stub(
   4070     IRpcStubBuffer* This,
   4071     IRpcChannelBuffer* pRpcChannelBuffer,
   4072     PRPC_MESSAGE pRpcMessage,
   4073     DWORD* pdwStubPhase);
   4074 HRESULT STDMETHODCALLTYPE IMFMediaEvent_GetExtendedType_Proxy(
   4075     IMFMediaEvent* This,
   4076     GUID *pguidExtendedType);
   4077 void __RPC_STUB IMFMediaEvent_GetExtendedType_Stub(
   4078     IRpcStubBuffer* This,
   4079     IRpcChannelBuffer* pRpcChannelBuffer,
   4080     PRPC_MESSAGE pRpcMessage,
   4081     DWORD* pdwStubPhase);
   4082 HRESULT STDMETHODCALLTYPE IMFMediaEvent_GetStatus_Proxy(
   4083     IMFMediaEvent* This,
   4084     HRESULT *phrStatus);
   4085 void __RPC_STUB IMFMediaEvent_GetStatus_Stub(
   4086     IRpcStubBuffer* This,
   4087     IRpcChannelBuffer* pRpcChannelBuffer,
   4088     PRPC_MESSAGE pRpcMessage,
   4089     DWORD* pdwStubPhase);
   4090 HRESULT STDMETHODCALLTYPE IMFMediaEvent_GetValue_Proxy(
   4091     IMFMediaEvent* This,
   4092     PROPVARIANT *pvValue);
   4093 void __RPC_STUB IMFMediaEvent_GetValue_Stub(
   4094     IRpcStubBuffer* This,
   4095     IRpcChannelBuffer* pRpcChannelBuffer,
   4096     PRPC_MESSAGE pRpcMessage,
   4097     DWORD* pdwStubPhase);
   4098 
   4099 #endif  /* __IMFMediaEvent_INTERFACE_DEFINED__ */
   4100 
   4101 /*****************************************************************************
   4102  * IMFMediaEventGenerator interface
   4103  */
   4104 #ifndef __IMFMediaEventGenerator_INTERFACE_DEFINED__
   4105 #define __IMFMediaEventGenerator_INTERFACE_DEFINED__
   4106 
   4107 DEFINE_GUID(IID_IMFMediaEventGenerator, 0x2cd0bd52, 0xbcd5, 0x4b89, 0xb6,0x2c, 0xea,0xdc,0x0c,0x03,0x1e,0x7d);
   4108 #if defined(__cplusplus) && !defined(CINTERFACE)
   4109 MIDL_INTERFACE("2cd0bd52-bcd5-4b89-b62c-eadc0c031e7d")
   4110 IMFMediaEventGenerator : public IUnknown
   4111 {
   4112     virtual HRESULT STDMETHODCALLTYPE GetEvent(
   4113         DWORD dwFlags,
   4114         IMFMediaEvent **ppEvent) = 0;
   4115 
   4116     virtual HRESULT STDMETHODCALLTYPE BeginGetEvent(
   4117         IMFAsyncCallback *pCallback,
   4118         IUnknown *punkState) = 0;
   4119 
   4120     virtual HRESULT STDMETHODCALLTYPE EndGetEvent(
   4121         IMFAsyncResult *pResult,
   4122         IMFMediaEvent **ppEvent) = 0;
   4123 
   4124     virtual HRESULT STDMETHODCALLTYPE QueueEvent(
   4125         MediaEventType met,
   4126         REFGUID guidExtendedType,
   4127         HRESULT hrStatus,
   4128         const PROPVARIANT *pvValue) = 0;
   4129 
   4130 };
   4131 #ifdef __CRT_UUID_DECL
   4132 __CRT_UUID_DECL(IMFMediaEventGenerator, 0x2cd0bd52, 0xbcd5, 0x4b89, 0xb6,0x2c, 0xea,0xdc,0x0c,0x03,0x1e,0x7d)
   4133 #endif
   4134 #else
   4135 typedef struct IMFMediaEventGeneratorVtbl {
   4136     BEGIN_INTERFACE
   4137 
   4138     /*** IUnknown methods ***/
   4139     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4140         IMFMediaEventGenerator* This,
   4141         REFIID riid,
   4142         void **ppvObject);
   4143 
   4144     ULONG (STDMETHODCALLTYPE *AddRef)(
   4145         IMFMediaEventGenerator* This);
   4146 
   4147     ULONG (STDMETHODCALLTYPE *Release)(
   4148         IMFMediaEventGenerator* This);
   4149 
   4150     /*** IMFMediaEventGenerator methods ***/
   4151     HRESULT (STDMETHODCALLTYPE *GetEvent)(
   4152         IMFMediaEventGenerator* This,
   4153         DWORD dwFlags,
   4154         IMFMediaEvent **ppEvent);
   4155 
   4156     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
   4157         IMFMediaEventGenerator* This,
   4158         IMFAsyncCallback *pCallback,
   4159         IUnknown *punkState);
   4160 
   4161     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
   4162         IMFMediaEventGenerator* This,
   4163         IMFAsyncResult *pResult,
   4164         IMFMediaEvent **ppEvent);
   4165 
   4166     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
   4167         IMFMediaEventGenerator* This,
   4168         MediaEventType met,
   4169         REFGUID guidExtendedType,
   4170         HRESULT hrStatus,
   4171         const PROPVARIANT *pvValue);
   4172 
   4173     END_INTERFACE
   4174 } IMFMediaEventGeneratorVtbl;
   4175 interface IMFMediaEventGenerator {
   4176     CONST_VTBL IMFMediaEventGeneratorVtbl* lpVtbl;
   4177 };
   4178 
   4179 #ifdef COBJMACROS
   4180 #ifndef WIDL_C_INLINE_WRAPPERS
   4181 /*** IUnknown methods ***/
   4182 #define IMFMediaEventGenerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4183 #define IMFMediaEventGenerator_AddRef(This) (This)->lpVtbl->AddRef(This)
   4184 #define IMFMediaEventGenerator_Release(This) (This)->lpVtbl->Release(This)
   4185 /*** IMFMediaEventGenerator methods ***/
   4186 #define IMFMediaEventGenerator_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
   4187 #define IMFMediaEventGenerator_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
   4188 #define IMFMediaEventGenerator_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
   4189 #define IMFMediaEventGenerator_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
   4190 #else
   4191 /*** IUnknown methods ***/
   4192 static FORCEINLINE HRESULT IMFMediaEventGenerator_QueryInterface(IMFMediaEventGenerator* This,REFIID riid,void **ppvObject) {
   4193     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4194 }
   4195 static FORCEINLINE ULONG IMFMediaEventGenerator_AddRef(IMFMediaEventGenerator* This) {
   4196     return This->lpVtbl->AddRef(This);
   4197 }
   4198 static FORCEINLINE ULONG IMFMediaEventGenerator_Release(IMFMediaEventGenerator* This) {
   4199     return This->lpVtbl->Release(This);
   4200 }
   4201 /*** IMFMediaEventGenerator methods ***/
   4202 static FORCEINLINE HRESULT IMFMediaEventGenerator_GetEvent(IMFMediaEventGenerator* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
   4203     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
   4204 }
   4205 static FORCEINLINE HRESULT IMFMediaEventGenerator_BeginGetEvent(IMFMediaEventGenerator* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
   4206     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
   4207 }
   4208 static FORCEINLINE HRESULT IMFMediaEventGenerator_EndGetEvent(IMFMediaEventGenerator* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
   4209     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
   4210 }
   4211 static FORCEINLINE HRESULT IMFMediaEventGenerator_QueueEvent(IMFMediaEventGenerator* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
   4212     return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
   4213 }
   4214 #endif
   4215 #endif
   4216 
   4217 #endif
   4218 
   4219 HRESULT STDMETHODCALLTYPE IMFMediaEventGenerator_GetEvent_Proxy(
   4220     IMFMediaEventGenerator* This,
   4221     DWORD dwFlags,
   4222     IMFMediaEvent **ppEvent);
   4223 void __RPC_STUB IMFMediaEventGenerator_GetEvent_Stub(
   4224     IRpcStubBuffer* This,
   4225     IRpcChannelBuffer* pRpcChannelBuffer,
   4226     PRPC_MESSAGE pRpcMessage,
   4227     DWORD* pdwStubPhase);
   4228 HRESULT STDMETHODCALLTYPE IMFMediaEventGenerator_RemoteBeginGetEvent_Proxy(
   4229     IMFMediaEventGenerator* This,
   4230     IMFRemoteAsyncCallback *pCallback);
   4231 void __RPC_STUB IMFMediaEventGenerator_RemoteBeginGetEvent_Stub(
   4232     IRpcStubBuffer* This,
   4233     IRpcChannelBuffer* pRpcChannelBuffer,
   4234     PRPC_MESSAGE pRpcMessage,
   4235     DWORD* pdwStubPhase);
   4236 HRESULT STDMETHODCALLTYPE IMFMediaEventGenerator_RemoteEndGetEvent_Proxy(
   4237     IMFMediaEventGenerator* This,
   4238     IUnknown *pResult,
   4239     DWORD *pcbEvent,
   4240     BYTE **ppbEvent);
   4241 void __RPC_STUB IMFMediaEventGenerator_RemoteEndGetEvent_Stub(
   4242     IRpcStubBuffer* This,
   4243     IRpcChannelBuffer* pRpcChannelBuffer,
   4244     PRPC_MESSAGE pRpcMessage,
   4245     DWORD* pdwStubPhase);
   4246 HRESULT STDMETHODCALLTYPE IMFMediaEventGenerator_QueueEvent_Proxy(
   4247     IMFMediaEventGenerator* This,
   4248     MediaEventType met,
   4249     REFGUID guidExtendedType,
   4250     HRESULT hrStatus,
   4251     const PROPVARIANT *pvValue);
   4252 void __RPC_STUB IMFMediaEventGenerator_QueueEvent_Stub(
   4253     IRpcStubBuffer* This,
   4254     IRpcChannelBuffer* pRpcChannelBuffer,
   4255     PRPC_MESSAGE pRpcMessage,
   4256     DWORD* pdwStubPhase);
   4257 HRESULT CALLBACK IMFMediaEventGenerator_BeginGetEvent_Proxy(
   4258     IMFMediaEventGenerator* This,
   4259     IMFAsyncCallback *pCallback,
   4260     IUnknown *punkState);
   4261 HRESULT __RPC_STUB IMFMediaEventGenerator_BeginGetEvent_Stub(
   4262     IMFMediaEventGenerator* This,
   4263     IMFRemoteAsyncCallback *pCallback);
   4264 HRESULT CALLBACK IMFMediaEventGenerator_EndGetEvent_Proxy(
   4265     IMFMediaEventGenerator* This,
   4266     IMFAsyncResult *pResult,
   4267     IMFMediaEvent **ppEvent);
   4268 HRESULT __RPC_STUB IMFMediaEventGenerator_EndGetEvent_Stub(
   4269     IMFMediaEventGenerator* This,
   4270     IUnknown *pResult,
   4271     DWORD *pcbEvent,
   4272     BYTE **ppbEvent);
   4273 
   4274 #endif  /* __IMFMediaEventGenerator_INTERFACE_DEFINED__ */
   4275 
   4276 typedef enum _MFBYTESTREAM_SEEK_ORIGIN {
   4277     msoBegin = 0,
   4278     msoCurrent = 1
   4279 } MFBYTESTREAM_SEEK_ORIGIN;
   4280 /*****************************************************************************
   4281  * IMFByteStream interface
   4282  */
   4283 #ifndef __IMFByteStream_INTERFACE_DEFINED__
   4284 #define __IMFByteStream_INTERFACE_DEFINED__
   4285 
   4286 DEFINE_GUID(IID_IMFByteStream, 0xad4c1b00, 0x4bf7, 0x422f, 0x91,0x75, 0x75,0x66,0x93,0xd9,0x13,0x0d);
   4287 #if defined(__cplusplus) && !defined(CINTERFACE)
   4288 MIDL_INTERFACE("ad4c1b00-4bf7-422f-9175-756693d9130d")
   4289 IMFByteStream : public IUnknown
   4290 {
   4291     virtual HRESULT STDMETHODCALLTYPE GetCapabilities(
   4292         DWORD *pdwCapabilities) = 0;
   4293 
   4294     virtual HRESULT STDMETHODCALLTYPE GetLength(
   4295         QWORD *pqwLength) = 0;
   4296 
   4297     virtual HRESULT STDMETHODCALLTYPE SetLength(
   4298         QWORD qwLength) = 0;
   4299 
   4300     virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition(
   4301         QWORD *pqwPosition) = 0;
   4302 
   4303     virtual HRESULT STDMETHODCALLTYPE SetCurrentPosition(
   4304         QWORD qwPosition) = 0;
   4305 
   4306     virtual HRESULT STDMETHODCALLTYPE IsEndOfStream(
   4307         WINBOOL *pfEndOfStream) = 0;
   4308 
   4309     virtual HRESULT STDMETHODCALLTYPE Read(
   4310         BYTE *pb,
   4311         ULONG cb,
   4312         ULONG *pcbRead) = 0;
   4313 
   4314     virtual HRESULT STDMETHODCALLTYPE BeginRead(
   4315         BYTE *pb,
   4316         ULONG cb,
   4317         IMFAsyncCallback *pCallback,
   4318         IUnknown *punkState) = 0;
   4319 
   4320     virtual HRESULT STDMETHODCALLTYPE EndRead(
   4321         IMFAsyncResult *pResult,
   4322         ULONG *pcbRead) = 0;
   4323 
   4324     virtual HRESULT STDMETHODCALLTYPE Write(
   4325         const BYTE *pb,
   4326         ULONG cb,
   4327         ULONG *pcbWritten) = 0;
   4328 
   4329     virtual HRESULT STDMETHODCALLTYPE BeginWrite(
   4330         const BYTE *pb,
   4331         ULONG cb,
   4332         IMFAsyncCallback *pCallback,
   4333         IUnknown *punkState) = 0;
   4334 
   4335     virtual HRESULT STDMETHODCALLTYPE EndWrite(
   4336         IMFAsyncResult *pResult,
   4337         ULONG *pcbWritten) = 0;
   4338 
   4339     virtual HRESULT STDMETHODCALLTYPE Seek(
   4340         MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,
   4341         LONGLONG llSeekOffset,
   4342         DWORD dwSeekFlags,
   4343         QWORD *pqwCurrentPosition) = 0;
   4344 
   4345     virtual HRESULT STDMETHODCALLTYPE Flush(
   4346         ) = 0;
   4347 
   4348     virtual HRESULT STDMETHODCALLTYPE Close(
   4349         ) = 0;
   4350 
   4351 };
   4352 #ifdef __CRT_UUID_DECL
   4353 __CRT_UUID_DECL(IMFByteStream, 0xad4c1b00, 0x4bf7, 0x422f, 0x91,0x75, 0x75,0x66,0x93,0xd9,0x13,0x0d)
   4354 #endif
   4355 #else
   4356 typedef struct IMFByteStreamVtbl {
   4357     BEGIN_INTERFACE
   4358 
   4359     /*** IUnknown methods ***/
   4360     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4361         IMFByteStream* This,
   4362         REFIID riid,
   4363         void **ppvObject);
   4364 
   4365     ULONG (STDMETHODCALLTYPE *AddRef)(
   4366         IMFByteStream* This);
   4367 
   4368     ULONG (STDMETHODCALLTYPE *Release)(
   4369         IMFByteStream* This);
   4370 
   4371     /*** IMFByteStream methods ***/
   4372     HRESULT (STDMETHODCALLTYPE *GetCapabilities)(
   4373         IMFByteStream* This,
   4374         DWORD *pdwCapabilities);
   4375 
   4376     HRESULT (STDMETHODCALLTYPE *GetLength)(
   4377         IMFByteStream* This,
   4378         QWORD *pqwLength);
   4379 
   4380     HRESULT (STDMETHODCALLTYPE *SetLength)(
   4381         IMFByteStream* This,
   4382         QWORD qwLength);
   4383 
   4384     HRESULT (STDMETHODCALLTYPE *GetCurrentPosition)(
   4385         IMFByteStream* This,
   4386         QWORD *pqwPosition);
   4387 
   4388     HRESULT (STDMETHODCALLTYPE *SetCurrentPosition)(
   4389         IMFByteStream* This,
   4390         QWORD qwPosition);
   4391 
   4392     HRESULT (STDMETHODCALLTYPE *IsEndOfStream)(
   4393         IMFByteStream* This,
   4394         WINBOOL *pfEndOfStream);
   4395 
   4396     HRESULT (STDMETHODCALLTYPE *Read)(
   4397         IMFByteStream* This,
   4398         BYTE *pb,
   4399         ULONG cb,
   4400         ULONG *pcbRead);
   4401 
   4402     HRESULT (STDMETHODCALLTYPE *BeginRead)(
   4403         IMFByteStream* This,
   4404         BYTE *pb,
   4405         ULONG cb,
   4406         IMFAsyncCallback *pCallback,
   4407         IUnknown *punkState);
   4408 
   4409     HRESULT (STDMETHODCALLTYPE *EndRead)(
   4410         IMFByteStream* This,
   4411         IMFAsyncResult *pResult,
   4412         ULONG *pcbRead);
   4413 
   4414     HRESULT (STDMETHODCALLTYPE *Write)(
   4415         IMFByteStream* This,
   4416         const BYTE *pb,
   4417         ULONG cb,
   4418         ULONG *pcbWritten);
   4419 
   4420     HRESULT (STDMETHODCALLTYPE *BeginWrite)(
   4421         IMFByteStream* This,
   4422         const BYTE *pb,
   4423         ULONG cb,
   4424         IMFAsyncCallback *pCallback,
   4425         IUnknown *punkState);
   4426 
   4427     HRESULT (STDMETHODCALLTYPE *EndWrite)(
   4428         IMFByteStream* This,
   4429         IMFAsyncResult *pResult,
   4430         ULONG *pcbWritten);
   4431 
   4432     HRESULT (STDMETHODCALLTYPE *Seek)(
   4433         IMFByteStream* This,
   4434         MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,
   4435         LONGLONG llSeekOffset,
   4436         DWORD dwSeekFlags,
   4437         QWORD *pqwCurrentPosition);
   4438 
   4439     HRESULT (STDMETHODCALLTYPE *Flush)(
   4440         IMFByteStream* This);
   4441 
   4442     HRESULT (STDMETHODCALLTYPE *Close)(
   4443         IMFByteStream* This);
   4444 
   4445     END_INTERFACE
   4446 } IMFByteStreamVtbl;
   4447 interface IMFByteStream {
   4448     CONST_VTBL IMFByteStreamVtbl* lpVtbl;
   4449 };
   4450 
   4451 #ifdef COBJMACROS
   4452 #ifndef WIDL_C_INLINE_WRAPPERS
   4453 /*** IUnknown methods ***/
   4454 #define IMFByteStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4455 #define IMFByteStream_AddRef(This) (This)->lpVtbl->AddRef(This)
   4456 #define IMFByteStream_Release(This) (This)->lpVtbl->Release(This)
   4457 /*** IMFByteStream methods ***/
   4458 #define IMFByteStream_GetCapabilities(This,pdwCapabilities) (This)->lpVtbl->GetCapabilities(This,pdwCapabilities)
   4459 #define IMFByteStream_GetLength(This,pqwLength) (This)->lpVtbl->GetLength(This,pqwLength)
   4460 #define IMFByteStream_SetLength(This,qwLength) (This)->lpVtbl->SetLength(This,qwLength)
   4461 #define IMFByteStream_GetCurrentPosition(This,pqwPosition) (This)->lpVtbl->GetCurrentPosition(This,pqwPosition)
   4462 #define IMFByteStream_SetCurrentPosition(This,qwPosition) (This)->lpVtbl->SetCurrentPosition(This,qwPosition)
   4463 #define IMFByteStream_IsEndOfStream(This,pfEndOfStream) (This)->lpVtbl->IsEndOfStream(This,pfEndOfStream)
   4464 #define IMFByteStream_Read(This,pb,cb,pcbRead) (This)->lpVtbl->Read(This,pb,cb,pcbRead)
   4465 #define IMFByteStream_BeginRead(This,pb,cb,pCallback,punkState) (This)->lpVtbl->BeginRead(This,pb,cb,pCallback,punkState)
   4466 #define IMFByteStream_EndRead(This,pResult,pcbRead) (This)->lpVtbl->EndRead(This,pResult,pcbRead)
   4467 #define IMFByteStream_Write(This,pb,cb,pcbWritten) (This)->lpVtbl->Write(This,pb,cb,pcbWritten)
   4468 #define IMFByteStream_BeginWrite(This,pb,cb,pCallback,punkState) (This)->lpVtbl->BeginWrite(This,pb,cb,pCallback,punkState)
   4469 #define IMFByteStream_EndWrite(This,pResult,pcbWritten) (This)->lpVtbl->EndWrite(This,pResult,pcbWritten)
   4470 #define IMFByteStream_Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition) (This)->lpVtbl->Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition)
   4471 #define IMFByteStream_Flush(This) (This)->lpVtbl->Flush(This)
   4472 #define IMFByteStream_Close(This) (This)->lpVtbl->Close(This)
   4473 #else
   4474 /*** IUnknown methods ***/
   4475 static FORCEINLINE HRESULT IMFByteStream_QueryInterface(IMFByteStream* This,REFIID riid,void **ppvObject) {
   4476     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4477 }
   4478 static FORCEINLINE ULONG IMFByteStream_AddRef(IMFByteStream* This) {
   4479     return This->lpVtbl->AddRef(This);
   4480 }
   4481 static FORCEINLINE ULONG IMFByteStream_Release(IMFByteStream* This) {
   4482     return This->lpVtbl->Release(This);
   4483 }
   4484 /*** IMFByteStream methods ***/
   4485 static FORCEINLINE HRESULT IMFByteStream_GetCapabilities(IMFByteStream* This,DWORD *pdwCapabilities) {
   4486     return This->lpVtbl->GetCapabilities(This,pdwCapabilities);
   4487 }
   4488 static FORCEINLINE HRESULT IMFByteStream_GetLength(IMFByteStream* This,QWORD *pqwLength) {
   4489     return This->lpVtbl->GetLength(This,pqwLength);
   4490 }
   4491 static FORCEINLINE HRESULT IMFByteStream_SetLength(IMFByteStream* This,QWORD qwLength) {
   4492     return This->lpVtbl->SetLength(This,qwLength);
   4493 }
   4494 static FORCEINLINE HRESULT IMFByteStream_GetCurrentPosition(IMFByteStream* This,QWORD *pqwPosition) {
   4495     return This->lpVtbl->GetCurrentPosition(This,pqwPosition);
   4496 }
   4497 static FORCEINLINE HRESULT IMFByteStream_SetCurrentPosition(IMFByteStream* This,QWORD qwPosition) {
   4498     return This->lpVtbl->SetCurrentPosition(This,qwPosition);
   4499 }
   4500 static FORCEINLINE HRESULT IMFByteStream_IsEndOfStream(IMFByteStream* This,WINBOOL *pfEndOfStream) {
   4501     return This->lpVtbl->IsEndOfStream(This,pfEndOfStream);
   4502 }
   4503 static FORCEINLINE HRESULT IMFByteStream_Read(IMFByteStream* This,BYTE *pb,ULONG cb,ULONG *pcbRead) {
   4504     return This->lpVtbl->Read(This,pb,cb,pcbRead);
   4505 }
   4506 static FORCEINLINE HRESULT IMFByteStream_BeginRead(IMFByteStream* This,BYTE *pb,ULONG cb,IMFAsyncCallback *pCallback,IUnknown *punkState) {
   4507     return This->lpVtbl->BeginRead(This,pb,cb,pCallback,punkState);
   4508 }
   4509 static FORCEINLINE HRESULT IMFByteStream_EndRead(IMFByteStream* This,IMFAsyncResult *pResult,ULONG *pcbRead) {
   4510     return This->lpVtbl->EndRead(This,pResult,pcbRead);
   4511 }
   4512 static FORCEINLINE HRESULT IMFByteStream_Write(IMFByteStream* This,const BYTE *pb,ULONG cb,ULONG *pcbWritten) {
   4513     return This->lpVtbl->Write(This,pb,cb,pcbWritten);
   4514 }
   4515 static FORCEINLINE HRESULT IMFByteStream_BeginWrite(IMFByteStream* This,const BYTE *pb,ULONG cb,IMFAsyncCallback *pCallback,IUnknown *punkState) {
   4516     return This->lpVtbl->BeginWrite(This,pb,cb,pCallback,punkState);
   4517 }
   4518 static FORCEINLINE HRESULT IMFByteStream_EndWrite(IMFByteStream* This,IMFAsyncResult *pResult,ULONG *pcbWritten) {
   4519     return This->lpVtbl->EndWrite(This,pResult,pcbWritten);
   4520 }
   4521 static FORCEINLINE HRESULT IMFByteStream_Seek(IMFByteStream* This,MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,LONGLONG llSeekOffset,DWORD dwSeekFlags,QWORD *pqwCurrentPosition) {
   4522     return This->lpVtbl->Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition);
   4523 }
   4524 static FORCEINLINE HRESULT IMFByteStream_Flush(IMFByteStream* This) {
   4525     return This->lpVtbl->Flush(This);
   4526 }
   4527 static FORCEINLINE HRESULT IMFByteStream_Close(IMFByteStream* This) {
   4528     return This->lpVtbl->Close(This);
   4529 }
   4530 #endif
   4531 #endif
   4532 
   4533 #endif
   4534 
   4535 HRESULT STDMETHODCALLTYPE IMFByteStream_GetCapabilities_Proxy(
   4536     IMFByteStream* This,
   4537     DWORD *pdwCapabilities);
   4538 void __RPC_STUB IMFByteStream_GetCapabilities_Stub(
   4539     IRpcStubBuffer* This,
   4540     IRpcChannelBuffer* pRpcChannelBuffer,
   4541     PRPC_MESSAGE pRpcMessage,
   4542     DWORD* pdwStubPhase);
   4543 HRESULT STDMETHODCALLTYPE IMFByteStream_GetLength_Proxy(
   4544     IMFByteStream* This,
   4545     QWORD *pqwLength);
   4546 void __RPC_STUB IMFByteStream_GetLength_Stub(
   4547     IRpcStubBuffer* This,
   4548     IRpcChannelBuffer* pRpcChannelBuffer,
   4549     PRPC_MESSAGE pRpcMessage,
   4550     DWORD* pdwStubPhase);
   4551 HRESULT STDMETHODCALLTYPE IMFByteStream_SetLength_Proxy(
   4552     IMFByteStream* This,
   4553     QWORD qwLength);
   4554 void __RPC_STUB IMFByteStream_SetLength_Stub(
   4555     IRpcStubBuffer* This,
   4556     IRpcChannelBuffer* pRpcChannelBuffer,
   4557     PRPC_MESSAGE pRpcMessage,
   4558     DWORD* pdwStubPhase);
   4559 HRESULT STDMETHODCALLTYPE IMFByteStream_GetCurrentPosition_Proxy(
   4560     IMFByteStream* This,
   4561     QWORD *pqwPosition);
   4562 void __RPC_STUB IMFByteStream_GetCurrentPosition_Stub(
   4563     IRpcStubBuffer* This,
   4564     IRpcChannelBuffer* pRpcChannelBuffer,
   4565     PRPC_MESSAGE pRpcMessage,
   4566     DWORD* pdwStubPhase);
   4567 HRESULT STDMETHODCALLTYPE IMFByteStream_SetCurrentPosition_Proxy(
   4568     IMFByteStream* This,
   4569     QWORD qwPosition);
   4570 void __RPC_STUB IMFByteStream_SetCurrentPosition_Stub(
   4571     IRpcStubBuffer* This,
   4572     IRpcChannelBuffer* pRpcChannelBuffer,
   4573     PRPC_MESSAGE pRpcMessage,
   4574     DWORD* pdwStubPhase);
   4575 HRESULT STDMETHODCALLTYPE IMFByteStream_IsEndOfStream_Proxy(
   4576     IMFByteStream* This,
   4577     WINBOOL *pfEndOfStream);
   4578 void __RPC_STUB IMFByteStream_IsEndOfStream_Stub(
   4579     IRpcStubBuffer* This,
   4580     IRpcChannelBuffer* pRpcChannelBuffer,
   4581     PRPC_MESSAGE pRpcMessage,
   4582     DWORD* pdwStubPhase);
   4583 HRESULT STDMETHODCALLTYPE IMFByteStream_Flush_Proxy(
   4584     IMFByteStream* This);
   4585 void __RPC_STUB IMFByteStream_Flush_Stub(
   4586     IRpcStubBuffer* This,
   4587     IRpcChannelBuffer* pRpcChannelBuffer,
   4588     PRPC_MESSAGE pRpcMessage,
   4589     DWORD* pdwStubPhase);
   4590 HRESULT STDMETHODCALLTYPE IMFByteStream_Close_Proxy(
   4591     IMFByteStream* This);
   4592 void __RPC_STUB IMFByteStream_Close_Stub(
   4593     IRpcStubBuffer* This,
   4594     IRpcChannelBuffer* pRpcChannelBuffer,
   4595     PRPC_MESSAGE pRpcMessage,
   4596     DWORD* pdwStubPhase);
   4597 
   4598 #endif  /* __IMFByteStream_INTERFACE_DEFINED__ */
   4599 
   4600 #define MFBYTESTREAM_IS_READABLE                0x00000001
   4601 #define MFBYTESTREAM_IS_WRITABLE                0x00000002
   4602 #define MFBYTESTREAM_IS_SEEKABLE                0x00000004
   4603 #define MFBYTESTREAM_IS_REMOTE                  0x00000008
   4604 #define MFBYTESTREAM_IS_DIRECTORY               0x00000080
   4605 #define MFBYTESTREAM_HAS_SLOW_SEEK              0x00000100
   4606 #define MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED    0x00000200
   4607 #define MFBYTESTREAM_SHARE_WRITE                0x00000400
   4608 #define MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO  0x00000001
   4609 EXTERN_GUID(MF_BYTESTREAM_ORIGIN_NAME,        0xfc358288,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
   4610 EXTERN_GUID(MF_BYTESTREAM_CONTENT_TYPE,       0xfc358289,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
   4611 EXTERN_GUID(MF_BYTESTREAM_DURATION,           0xfc35828a,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
   4612 EXTERN_GUID(MF_BYTESTREAM_LAST_MODIFIED_TIME, 0xfc35828b,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
   4613 EXTERN_GUID(MF_BYTESTREAM_IFO_FILE_URI,       0xfc35828c,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
   4614 EXTERN_GUID(MF_BYTESTREAM_DLNA_PROFILE_ID,    0xfc35828d,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);
   4615 typedef enum MF_FILE_ACCESSMODE {
   4616     MF_ACCESSMODE_READ = 1,
   4617     MF_ACCESSMODE_WRITE = 2,
   4618     MF_ACCESSMODE_READWRITE = 3
   4619 } MF_FILE_ACCESSMODE;
   4620 typedef enum __WIDL_mmreg_h_generated_name_00000002 {
   4621     MF_OPENMODE_FAIL_IF_NOT_EXIST = 0,
   4622     MF_OPENMODE_FAIL_IF_EXIST = 1,
   4623     MF_OPENMODE_RESET_IF_EXIST = 2,
   4624     MF_OPENMODE_APPEND_IF_EXIST = 3,
   4625     MF_OPENMODE_DELETE_IF_EXIST = 4
   4626 } MF_FILE_OPENMODE;
   4627 typedef enum __WIDL_mmreg_h_generated_name_00000003 {
   4628     MF_FILEFLAGS_NONE = 0x0,
   4629     MF_FILEFLAGS_NOBUFFERING = 0x1,
   4630     MF_FILEFLAGS_ALLOW_WRITE_SHARING = 0x2
   4631 } MF_FILE_FLAGS;
   4632 /*****************************************************************************
   4633  * IMFCollection interface
   4634  */
   4635 #ifndef __IMFCollection_INTERFACE_DEFINED__
   4636 #define __IMFCollection_INTERFACE_DEFINED__
   4637 
   4638 DEFINE_GUID(IID_IMFCollection, 0x5bc8a76b, 0x869a, 0x46a3, 0x9b,0x03, 0xfa,0x21,0x8a,0x66,0xae,0xbe);
   4639 #if defined(__cplusplus) && !defined(CINTERFACE)
   4640 MIDL_INTERFACE("5bc8a76b-869a-46a3-9b03-fa218a66aebe")
   4641 IMFCollection : public IUnknown
   4642 {
   4643     virtual HRESULT STDMETHODCALLTYPE GetElementCount(
   4644         DWORD *pcElements) = 0;
   4645 
   4646     virtual HRESULT STDMETHODCALLTYPE GetElement(
   4647         DWORD dwElementIndex,
   4648         IUnknown **ppUnkElement) = 0;
   4649 
   4650     virtual HRESULT STDMETHODCALLTYPE AddElement(
   4651         IUnknown *pUnkElement) = 0;
   4652 
   4653     virtual HRESULT STDMETHODCALLTYPE RemoveElement(
   4654         DWORD dwElementIndex,
   4655         IUnknown **ppUnkElement) = 0;
   4656 
   4657     virtual HRESULT STDMETHODCALLTYPE InsertElementAt(
   4658         DWORD dwIndex,
   4659         IUnknown *pUnknown) = 0;
   4660 
   4661     virtual HRESULT STDMETHODCALLTYPE RemoveAllElements(
   4662         ) = 0;
   4663 
   4664 };
   4665 #ifdef __CRT_UUID_DECL
   4666 __CRT_UUID_DECL(IMFCollection, 0x5bc8a76b, 0x869a, 0x46a3, 0x9b,0x03, 0xfa,0x21,0x8a,0x66,0xae,0xbe)
   4667 #endif
   4668 #else
   4669 typedef struct IMFCollectionVtbl {
   4670     BEGIN_INTERFACE
   4671 
   4672     /*** IUnknown methods ***/
   4673     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4674         IMFCollection* This,
   4675         REFIID riid,
   4676         void **ppvObject);
   4677 
   4678     ULONG (STDMETHODCALLTYPE *AddRef)(
   4679         IMFCollection* This);
   4680 
   4681     ULONG (STDMETHODCALLTYPE *Release)(
   4682         IMFCollection* This);
   4683 
   4684     /*** IMFCollection methods ***/
   4685     HRESULT (STDMETHODCALLTYPE *GetElementCount)(
   4686         IMFCollection* This,
   4687         DWORD *pcElements);
   4688 
   4689     HRESULT (STDMETHODCALLTYPE *GetElement)(
   4690         IMFCollection* This,
   4691         DWORD dwElementIndex,
   4692         IUnknown **ppUnkElement);
   4693 
   4694     HRESULT (STDMETHODCALLTYPE *AddElement)(
   4695         IMFCollection* This,
   4696         IUnknown *pUnkElement);
   4697 
   4698     HRESULT (STDMETHODCALLTYPE *RemoveElement)(
   4699         IMFCollection* This,
   4700         DWORD dwElementIndex,
   4701         IUnknown **ppUnkElement);
   4702 
   4703     HRESULT (STDMETHODCALLTYPE *InsertElementAt)(
   4704         IMFCollection* This,
   4705         DWORD dwIndex,
   4706         IUnknown *pUnknown);
   4707 
   4708     HRESULT (STDMETHODCALLTYPE *RemoveAllElements)(
   4709         IMFCollection* This);
   4710 
   4711     END_INTERFACE
   4712 } IMFCollectionVtbl;
   4713 interface IMFCollection {
   4714     CONST_VTBL IMFCollectionVtbl* lpVtbl;
   4715 };
   4716 
   4717 #ifdef COBJMACROS
   4718 #ifndef WIDL_C_INLINE_WRAPPERS
   4719 /*** IUnknown methods ***/
   4720 #define IMFCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4721 #define IMFCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
   4722 #define IMFCollection_Release(This) (This)->lpVtbl->Release(This)
   4723 /*** IMFCollection methods ***/
   4724 #define IMFCollection_GetElementCount(This,pcElements) (This)->lpVtbl->GetElementCount(This,pcElements)
   4725 #define IMFCollection_GetElement(This,dwElementIndex,ppUnkElement) (This)->lpVtbl->GetElement(This,dwElementIndex,ppUnkElement)
   4726 #define IMFCollection_AddElement(This,pUnkElement) (This)->lpVtbl->AddElement(This,pUnkElement)
   4727 #define IMFCollection_RemoveElement(This,dwElementIndex,ppUnkElement) (This)->lpVtbl->RemoveElement(This,dwElementIndex,ppUnkElement)
   4728 #define IMFCollection_InsertElementAt(This,dwIndex,pUnknown) (This)->lpVtbl->InsertElementAt(This,dwIndex,pUnknown)
   4729 #define IMFCollection_RemoveAllElements(This) (This)->lpVtbl->RemoveAllElements(This)
   4730 #else
   4731 /*** IUnknown methods ***/
   4732 static FORCEINLINE HRESULT IMFCollection_QueryInterface(IMFCollection* This,REFIID riid,void **ppvObject) {
   4733     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4734 }
   4735 static FORCEINLINE ULONG IMFCollection_AddRef(IMFCollection* This) {
   4736     return This->lpVtbl->AddRef(This);
   4737 }
   4738 static FORCEINLINE ULONG IMFCollection_Release(IMFCollection* This) {
   4739     return This->lpVtbl->Release(This);
   4740 }
   4741 /*** IMFCollection methods ***/
   4742 static FORCEINLINE HRESULT IMFCollection_GetElementCount(IMFCollection* This,DWORD *pcElements) {
   4743     return This->lpVtbl->GetElementCount(This,pcElements);
   4744 }
   4745 static FORCEINLINE HRESULT IMFCollection_GetElement(IMFCollection* This,DWORD dwElementIndex,IUnknown **ppUnkElement) {
   4746     return This->lpVtbl->GetElement(This,dwElementIndex,ppUnkElement);
   4747 }
   4748 static FORCEINLINE HRESULT IMFCollection_AddElement(IMFCollection* This,IUnknown *pUnkElement) {
   4749     return This->lpVtbl->AddElement(This,pUnkElement);
   4750 }
   4751 static FORCEINLINE HRESULT IMFCollection_RemoveElement(IMFCollection* This,DWORD dwElementIndex,IUnknown **ppUnkElement) {
   4752     return This->lpVtbl->RemoveElement(This,dwElementIndex,ppUnkElement);
   4753 }
   4754 static FORCEINLINE HRESULT IMFCollection_InsertElementAt(IMFCollection* This,DWORD dwIndex,IUnknown *pUnknown) {
   4755     return This->lpVtbl->InsertElementAt(This,dwIndex,pUnknown);
   4756 }
   4757 static FORCEINLINE HRESULT IMFCollection_RemoveAllElements(IMFCollection* This) {
   4758     return This->lpVtbl->RemoveAllElements(This);
   4759 }
   4760 #endif
   4761 #endif
   4762 
   4763 #endif
   4764 
   4765 HRESULT STDMETHODCALLTYPE IMFCollection_GetElementCount_Proxy(
   4766     IMFCollection* This,
   4767     DWORD *pcElements);
   4768 void __RPC_STUB IMFCollection_GetElementCount_Stub(
   4769     IRpcStubBuffer* This,
   4770     IRpcChannelBuffer* pRpcChannelBuffer,
   4771     PRPC_MESSAGE pRpcMessage,
   4772     DWORD* pdwStubPhase);
   4773 HRESULT STDMETHODCALLTYPE IMFCollection_GetElement_Proxy(
   4774     IMFCollection* This,
   4775     DWORD dwElementIndex,
   4776     IUnknown **ppUnkElement);
   4777 void __RPC_STUB IMFCollection_GetElement_Stub(
   4778     IRpcStubBuffer* This,
   4779     IRpcChannelBuffer* pRpcChannelBuffer,
   4780     PRPC_MESSAGE pRpcMessage,
   4781     DWORD* pdwStubPhase);
   4782 HRESULT STDMETHODCALLTYPE IMFCollection_AddElement_Proxy(
   4783     IMFCollection* This,
   4784     IUnknown *pUnkElement);
   4785 void __RPC_STUB IMFCollection_AddElement_Stub(
   4786     IRpcStubBuffer* This,
   4787     IRpcChannelBuffer* pRpcChannelBuffer,
   4788     PRPC_MESSAGE pRpcMessage,
   4789     DWORD* pdwStubPhase);
   4790 HRESULT STDMETHODCALLTYPE IMFCollection_RemoveElement_Proxy(
   4791     IMFCollection* This,
   4792     DWORD dwElementIndex,
   4793     IUnknown **ppUnkElement);
   4794 void __RPC_STUB IMFCollection_RemoveElement_Stub(
   4795     IRpcStubBuffer* This,
   4796     IRpcChannelBuffer* pRpcChannelBuffer,
   4797     PRPC_MESSAGE pRpcMessage,
   4798     DWORD* pdwStubPhase);
   4799 HRESULT STDMETHODCALLTYPE IMFCollection_InsertElementAt_Proxy(
   4800     IMFCollection* This,
   4801     DWORD dwIndex,
   4802     IUnknown *pUnknown);
   4803 void __RPC_STUB IMFCollection_InsertElementAt_Stub(
   4804     IRpcStubBuffer* This,
   4805     IRpcChannelBuffer* pRpcChannelBuffer,
   4806     PRPC_MESSAGE pRpcMessage,
   4807     DWORD* pdwStubPhase);
   4808 HRESULT STDMETHODCALLTYPE IMFCollection_RemoveAllElements_Proxy(
   4809     IMFCollection* This);
   4810 void __RPC_STUB IMFCollection_RemoveAllElements_Stub(
   4811     IRpcStubBuffer* This,
   4812     IRpcChannelBuffer* pRpcChannelBuffer,
   4813     PRPC_MESSAGE pRpcMessage,
   4814     DWORD* pdwStubPhase);
   4815 
   4816 #endif  /* __IMFCollection_INTERFACE_DEFINED__ */
   4817 
   4818 /*****************************************************************************
   4819  * IMFActivate interface
   4820  */
   4821 #ifndef __IMFActivate_INTERFACE_DEFINED__
   4822 #define __IMFActivate_INTERFACE_DEFINED__
   4823 
   4824 DEFINE_GUID(IID_IMFActivate, 0x7fee9e9a, 0x4a89, 0x47a6, 0x89,0x9c, 0xb6,0xa5,0x3a,0x70,0xfb,0x67);
   4825 #if defined(__cplusplus) && !defined(CINTERFACE)
   4826 MIDL_INTERFACE("7fee9e9a-4a89-47a6-899c-b6a53a70fb67")
   4827 IMFActivate : public IMFAttributes
   4828 {
   4829     virtual HRESULT STDMETHODCALLTYPE ActivateObject(
   4830         REFIID riid,
   4831         void **ppv) = 0;
   4832 
   4833     virtual HRESULT STDMETHODCALLTYPE ShutdownObject(
   4834         ) = 0;
   4835 
   4836     virtual HRESULT STDMETHODCALLTYPE DetachObject(
   4837         ) = 0;
   4838 
   4839 };
   4840 #ifdef __CRT_UUID_DECL
   4841 __CRT_UUID_DECL(IMFActivate, 0x7fee9e9a, 0x4a89, 0x47a6, 0x89,0x9c, 0xb6,0xa5,0x3a,0x70,0xfb,0x67)
   4842 #endif
   4843 #else
   4844 typedef struct IMFActivateVtbl {
   4845     BEGIN_INTERFACE
   4846 
   4847     /*** IUnknown methods ***/
   4848     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4849         IMFActivate* This,
   4850         REFIID riid,
   4851         void **ppvObject);
   4852 
   4853     ULONG (STDMETHODCALLTYPE *AddRef)(
   4854         IMFActivate* This);
   4855 
   4856     ULONG (STDMETHODCALLTYPE *Release)(
   4857         IMFActivate* This);
   4858 
   4859     /*** IMFAttributes methods ***/
   4860     HRESULT (STDMETHODCALLTYPE *GetItem)(
   4861         IMFActivate* This,
   4862         REFGUID guidKey,
   4863         PROPVARIANT *pValue);
   4864 
   4865     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   4866         IMFActivate* This,
   4867         REFGUID guidKey,
   4868         MF_ATTRIBUTE_TYPE *pType);
   4869 
   4870     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   4871         IMFActivate* This,
   4872         REFGUID guidKey,
   4873         REFPROPVARIANT Value,
   4874         WINBOOL *pbResult);
   4875 
   4876     HRESULT (STDMETHODCALLTYPE *Compare)(
   4877         IMFActivate* This,
   4878         IMFAttributes *pTheirs,
   4879         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   4880         WINBOOL *pbResult);
   4881 
   4882     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   4883         IMFActivate* This,
   4884         REFGUID guidKey,
   4885         UINT32 *punValue);
   4886 
   4887     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   4888         IMFActivate* This,
   4889         REFGUID guidKey,
   4890         UINT64 *punValue);
   4891 
   4892     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   4893         IMFActivate* This,
   4894         REFGUID guidKey,
   4895         double *pfValue);
   4896 
   4897     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   4898         IMFActivate* This,
   4899         REFGUID guidKey,
   4900         GUID *pguidValue);
   4901 
   4902     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   4903         IMFActivate* This,
   4904         REFGUID guidKey,
   4905         UINT32 *pcchLength);
   4906 
   4907     HRESULT (STDMETHODCALLTYPE *GetString)(
   4908         IMFActivate* This,
   4909         REFGUID guidKey,
   4910         LPWSTR pwszValue,
   4911         UINT32 cchBufSize,
   4912         UINT32 *pcchLength);
   4913 
   4914     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   4915         IMFActivate* This,
   4916         REFGUID guidKey,
   4917         LPWSTR *ppwszValue,
   4918         UINT32 *pcchLength);
   4919 
   4920     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   4921         IMFActivate* This,
   4922         REFGUID guidKey,
   4923         UINT32 *pcbBlobSize);
   4924 
   4925     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   4926         IMFActivate* This,
   4927         REFGUID guidKey,
   4928         UINT8 *pBuf,
   4929         UINT32 cbBufSize,
   4930         UINT32 *pcbBlobSize);
   4931 
   4932     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   4933         IMFActivate* This,
   4934         REFGUID guidKey,
   4935         UINT8 **ppBuf,
   4936         UINT32 *pcbSize);
   4937 
   4938     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   4939         IMFActivate* This,
   4940         REFGUID guidKey,
   4941         REFIID riid,
   4942         LPVOID *ppv);
   4943 
   4944     HRESULT (STDMETHODCALLTYPE *SetItem)(
   4945         IMFActivate* This,
   4946         REFGUID guidKey,
   4947         REFPROPVARIANT Value);
   4948 
   4949     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   4950         IMFActivate* This,
   4951         REFGUID guidKey);
   4952 
   4953     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   4954         IMFActivate* This);
   4955 
   4956     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   4957         IMFActivate* This,
   4958         REFGUID guidKey,
   4959         UINT32 unValue);
   4960 
   4961     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   4962         IMFActivate* This,
   4963         REFGUID guidKey,
   4964         UINT64 unValue);
   4965 
   4966     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   4967         IMFActivate* This,
   4968         REFGUID guidKey,
   4969         double fValue);
   4970 
   4971     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   4972         IMFActivate* This,
   4973         REFGUID guidKey,
   4974         REFGUID guidValue);
   4975 
   4976     HRESULT (STDMETHODCALLTYPE *SetString)(
   4977         IMFActivate* This,
   4978         REFGUID guidKey,
   4979         LPCWSTR wszValue);
   4980 
   4981     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   4982         IMFActivate* This,
   4983         REFGUID guidKey,
   4984         const UINT8 *pBuf,
   4985         UINT32 cbBufSize);
   4986 
   4987     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   4988         IMFActivate* This,
   4989         REFGUID guidKey,
   4990         IUnknown *pUnknown);
   4991 
   4992     HRESULT (STDMETHODCALLTYPE *LockStore)(
   4993         IMFActivate* This);
   4994 
   4995     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   4996         IMFActivate* This);
   4997 
   4998     HRESULT (STDMETHODCALLTYPE *GetCount)(
   4999         IMFActivate* This,
   5000         UINT32 *pcItems);
   5001 
   5002     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   5003         IMFActivate* This,
   5004         UINT32 unIndex,
   5005         GUID *pguidKey,
   5006         PROPVARIANT *pValue);
   5007 
   5008     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   5009         IMFActivate* This,
   5010         IMFAttributes *pDest);
   5011 
   5012     /*** IMFActivate methods ***/
   5013     HRESULT (STDMETHODCALLTYPE *ActivateObject)(
   5014         IMFActivate* This,
   5015         REFIID riid,
   5016         void **ppv);
   5017 
   5018     HRESULT (STDMETHODCALLTYPE *ShutdownObject)(
   5019         IMFActivate* This);
   5020 
   5021     HRESULT (STDMETHODCALLTYPE *DetachObject)(
   5022         IMFActivate* This);
   5023 
   5024     END_INTERFACE
   5025 } IMFActivateVtbl;
   5026 interface IMFActivate {
   5027     CONST_VTBL IMFActivateVtbl* lpVtbl;
   5028 };
   5029 
   5030 #ifdef COBJMACROS
   5031 #ifndef WIDL_C_INLINE_WRAPPERS
   5032 /*** IUnknown methods ***/
   5033 #define IMFActivate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5034 #define IMFActivate_AddRef(This) (This)->lpVtbl->AddRef(This)
   5035 #define IMFActivate_Release(This) (This)->lpVtbl->Release(This)
   5036 /*** IMFAttributes methods ***/
   5037 #define IMFActivate_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   5038 #define IMFActivate_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   5039 #define IMFActivate_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   5040 #define IMFActivate_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   5041 #define IMFActivate_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   5042 #define IMFActivate_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   5043 #define IMFActivate_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   5044 #define IMFActivate_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   5045 #define IMFActivate_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   5046 #define IMFActivate_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   5047 #define IMFActivate_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   5048 #define IMFActivate_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   5049 #define IMFActivate_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   5050 #define IMFActivate_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   5051 #define IMFActivate_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   5052 #define IMFActivate_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   5053 #define IMFActivate_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   5054 #define IMFActivate_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   5055 #define IMFActivate_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   5056 #define IMFActivate_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   5057 #define IMFActivate_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   5058 #define IMFActivate_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   5059 #define IMFActivate_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   5060 #define IMFActivate_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   5061 #define IMFActivate_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   5062 #define IMFActivate_LockStore(This) (This)->lpVtbl->LockStore(This)
   5063 #define IMFActivate_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   5064 #define IMFActivate_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   5065 #define IMFActivate_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   5066 #define IMFActivate_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   5067 /*** IMFActivate methods ***/
   5068 #define IMFActivate_ActivateObject(This,riid,ppv) (This)->lpVtbl->ActivateObject(This,riid,ppv)
   5069 #define IMFActivate_ShutdownObject(This) (This)->lpVtbl->ShutdownObject(This)
   5070 #define IMFActivate_DetachObject(This) (This)->lpVtbl->DetachObject(This)
   5071 #else
   5072 /*** IUnknown methods ***/
   5073 static FORCEINLINE HRESULT IMFActivate_QueryInterface(IMFActivate* This,REFIID riid,void **ppvObject) {
   5074     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5075 }
   5076 static FORCEINLINE ULONG IMFActivate_AddRef(IMFActivate* This) {
   5077     return This->lpVtbl->AddRef(This);
   5078 }
   5079 static FORCEINLINE ULONG IMFActivate_Release(IMFActivate* This) {
   5080     return This->lpVtbl->Release(This);
   5081 }
   5082 /*** IMFAttributes methods ***/
   5083 static FORCEINLINE HRESULT IMFActivate_GetItem(IMFActivate* This,REFGUID guidKey,PROPVARIANT *pValue) {
   5084     return This->lpVtbl->GetItem(This,guidKey,pValue);
   5085 }
   5086 static FORCEINLINE HRESULT IMFActivate_GetItemType(IMFActivate* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   5087     return This->lpVtbl->GetItemType(This,guidKey,pType);
   5088 }
   5089 static FORCEINLINE HRESULT IMFActivate_CompareItem(IMFActivate* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   5090     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   5091 }
   5092 static FORCEINLINE HRESULT IMFActivate_Compare(IMFActivate* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   5093     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   5094 }
   5095 static FORCEINLINE HRESULT IMFActivate_GetUINT32(IMFActivate* This,REFGUID guidKey,UINT32 *punValue) {
   5096     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   5097 }
   5098 static FORCEINLINE HRESULT IMFActivate_GetUINT64(IMFActivate* This,REFGUID guidKey,UINT64 *punValue) {
   5099     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   5100 }
   5101 static FORCEINLINE HRESULT IMFActivate_GetDouble(IMFActivate* This,REFGUID guidKey,double *pfValue) {
   5102     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   5103 }
   5104 static FORCEINLINE HRESULT IMFActivate_GetGUID(IMFActivate* This,REFGUID guidKey,GUID *pguidValue) {
   5105     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   5106 }
   5107 static FORCEINLINE HRESULT IMFActivate_GetStringLength(IMFActivate* This,REFGUID guidKey,UINT32 *pcchLength) {
   5108     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   5109 }
   5110 static FORCEINLINE HRESULT IMFActivate_GetString(IMFActivate* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   5111     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   5112 }
   5113 static FORCEINLINE HRESULT IMFActivate_GetAllocatedString(IMFActivate* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   5114     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   5115 }
   5116 static FORCEINLINE HRESULT IMFActivate_GetBlobSize(IMFActivate* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   5117     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   5118 }
   5119 static FORCEINLINE HRESULT IMFActivate_GetBlob(IMFActivate* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   5120     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   5121 }
   5122 static FORCEINLINE HRESULT IMFActivate_GetAllocatedBlob(IMFActivate* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   5123     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   5124 }
   5125 static FORCEINLINE HRESULT IMFActivate_GetUnknown(IMFActivate* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   5126     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   5127 }
   5128 static FORCEINLINE HRESULT IMFActivate_SetItem(IMFActivate* This,REFGUID guidKey,REFPROPVARIANT Value) {
   5129     return This->lpVtbl->SetItem(This,guidKey,Value);
   5130 }
   5131 static FORCEINLINE HRESULT IMFActivate_DeleteItem(IMFActivate* This,REFGUID guidKey) {
   5132     return This->lpVtbl->DeleteItem(This,guidKey);
   5133 }
   5134 static FORCEINLINE HRESULT IMFActivate_DeleteAllItems(IMFActivate* This) {
   5135     return This->lpVtbl->DeleteAllItems(This);
   5136 }
   5137 static FORCEINLINE HRESULT IMFActivate_SetUINT32(IMFActivate* This,REFGUID guidKey,UINT32 unValue) {
   5138     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   5139 }
   5140 static FORCEINLINE HRESULT IMFActivate_SetUINT64(IMFActivate* This,REFGUID guidKey,UINT64 unValue) {
   5141     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   5142 }
   5143 static FORCEINLINE HRESULT IMFActivate_SetDouble(IMFActivate* This,REFGUID guidKey,double fValue) {
   5144     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   5145 }
   5146 static FORCEINLINE HRESULT IMFActivate_SetGUID(IMFActivate* This,REFGUID guidKey,REFGUID guidValue) {
   5147     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   5148 }
   5149 static FORCEINLINE HRESULT IMFActivate_SetString(IMFActivate* This,REFGUID guidKey,LPCWSTR wszValue) {
   5150     return This->lpVtbl->SetString(This,guidKey,wszValue);
   5151 }
   5152 static FORCEINLINE HRESULT IMFActivate_SetBlob(IMFActivate* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   5153     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   5154 }
   5155 static FORCEINLINE HRESULT IMFActivate_SetUnknown(IMFActivate* This,REFGUID guidKey,IUnknown *pUnknown) {
   5156     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   5157 }
   5158 static FORCEINLINE HRESULT IMFActivate_LockStore(IMFActivate* This) {
   5159     return This->lpVtbl->LockStore(This);
   5160 }
   5161 static FORCEINLINE HRESULT IMFActivate_UnlockStore(IMFActivate* This) {
   5162     return This->lpVtbl->UnlockStore(This);
   5163 }
   5164 static FORCEINLINE HRESULT IMFActivate_GetCount(IMFActivate* This,UINT32 *pcItems) {
   5165     return This->lpVtbl->GetCount(This,pcItems);
   5166 }
   5167 static FORCEINLINE HRESULT IMFActivate_GetItemByIndex(IMFActivate* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   5168     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   5169 }
   5170 static FORCEINLINE HRESULT IMFActivate_CopyAllItems(IMFActivate* This,IMFAttributes *pDest) {
   5171     return This->lpVtbl->CopyAllItems(This,pDest);
   5172 }
   5173 /*** IMFActivate methods ***/
   5174 static FORCEINLINE HRESULT IMFActivate_ActivateObject(IMFActivate* This,REFIID riid,void **ppv) {
   5175     return This->lpVtbl->ActivateObject(This,riid,ppv);
   5176 }
   5177 static FORCEINLINE HRESULT IMFActivate_ShutdownObject(IMFActivate* This) {
   5178     return This->lpVtbl->ShutdownObject(This);
   5179 }
   5180 static FORCEINLINE HRESULT IMFActivate_DetachObject(IMFActivate* This) {
   5181     return This->lpVtbl->DetachObject(This);
   5182 }
   5183 #endif
   5184 #endif
   5185 
   5186 #endif
   5187 
   5188 HRESULT STDMETHODCALLTYPE IMFActivate_ActivateObject_Proxy(
   5189     IMFActivate* This,
   5190     REFIID riid,
   5191     void **ppv);
   5192 void __RPC_STUB IMFActivate_ActivateObject_Stub(
   5193     IRpcStubBuffer* This,
   5194     IRpcChannelBuffer* pRpcChannelBuffer,
   5195     PRPC_MESSAGE pRpcMessage,
   5196     DWORD* pdwStubPhase);
   5197 HRESULT STDMETHODCALLTYPE IMFActivate_ShutdownObject_Proxy(
   5198     IMFActivate* This);
   5199 void __RPC_STUB IMFActivate_ShutdownObject_Stub(
   5200     IRpcStubBuffer* This,
   5201     IRpcChannelBuffer* pRpcChannelBuffer,
   5202     PRPC_MESSAGE pRpcMessage,
   5203     DWORD* pdwStubPhase);
   5204 HRESULT STDMETHODCALLTYPE IMFActivate_DetachObject_Proxy(
   5205     IMFActivate* This);
   5206 void __RPC_STUB IMFActivate_DetachObject_Stub(
   5207     IRpcStubBuffer* This,
   5208     IRpcChannelBuffer* pRpcChannelBuffer,
   5209     PRPC_MESSAGE pRpcMessage,
   5210     DWORD* pdwStubPhase);
   5211 
   5212 #endif  /* __IMFActivate_INTERFACE_DEFINED__ */
   5213 
   5214 typedef enum _MF_Plugin_Type {
   5215     MF_Plugin_Type_MFT = 0,
   5216     MF_Plugin_Type_MediaSource = 1
   5217 } MF_Plugin_Type;
   5218 /*****************************************************************************
   5219  * IMFPluginControl interface
   5220  */
   5221 #ifndef __IMFPluginControl_INTERFACE_DEFINED__
   5222 #define __IMFPluginControl_INTERFACE_DEFINED__
   5223 
   5224 DEFINE_GUID(IID_IMFPluginControl, 0x5c6c44bf, 0x1db6, 0x435b, 0x92,0x49, 0xe8,0xcd,0x10,0xfd,0xec,0x96);
   5225 #if defined(__cplusplus) && !defined(CINTERFACE)
   5226 MIDL_INTERFACE("5c6c44bf-1db6-435b-9249-e8cd10fdec96")
   5227 IMFPluginControl : public IUnknown
   5228 {
   5229     virtual HRESULT STDMETHODCALLTYPE GetPreferredClsid(
   5230         DWORD pluginType,
   5231         LPCWSTR selector,
   5232         CLSID *clsid) = 0;
   5233 
   5234     virtual HRESULT STDMETHODCALLTYPE GetPreferredClsidByIndex(
   5235         DWORD pluginType,
   5236         DWORD index,
   5237         LPWSTR *selector,
   5238         CLSID *clsid) = 0;
   5239 
   5240     virtual HRESULT STDMETHODCALLTYPE SetPreferredClsid(
   5241         DWORD pluginType,
   5242         LPCWSTR selector,
   5243         const CLSID *clsid) = 0;
   5244 
   5245     virtual HRESULT STDMETHODCALLTYPE IsDisabled(
   5246         DWORD pluginType,
   5247         REFCLSID clsid) = 0;
   5248 
   5249     virtual HRESULT STDMETHODCALLTYPE GetDisabledByIndex(
   5250         DWORD pluginType,
   5251         DWORD index,
   5252         CLSID *clsid) = 0;
   5253 
   5254     virtual HRESULT STDMETHODCALLTYPE SetDisabled(
   5255         DWORD pluginType,
   5256         REFCLSID clsid,
   5257         WINBOOL disabled) = 0;
   5258 
   5259 };
   5260 #ifdef __CRT_UUID_DECL
   5261 __CRT_UUID_DECL(IMFPluginControl, 0x5c6c44bf, 0x1db6, 0x435b, 0x92,0x49, 0xe8,0xcd,0x10,0xfd,0xec,0x96)
   5262 #endif
   5263 #else
   5264 typedef struct IMFPluginControlVtbl {
   5265     BEGIN_INTERFACE
   5266 
   5267     /*** IUnknown methods ***/
   5268     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5269         IMFPluginControl* This,
   5270         REFIID riid,
   5271         void **ppvObject);
   5272 
   5273     ULONG (STDMETHODCALLTYPE *AddRef)(
   5274         IMFPluginControl* This);
   5275 
   5276     ULONG (STDMETHODCALLTYPE *Release)(
   5277         IMFPluginControl* This);
   5278 
   5279     /*** IMFPluginControl methods ***/
   5280     HRESULT (STDMETHODCALLTYPE *GetPreferredClsid)(
   5281         IMFPluginControl* This,
   5282         DWORD pluginType,
   5283         LPCWSTR selector,
   5284         CLSID *clsid);
   5285 
   5286     HRESULT (STDMETHODCALLTYPE *GetPreferredClsidByIndex)(
   5287         IMFPluginControl* This,
   5288         DWORD pluginType,
   5289         DWORD index,
   5290         LPWSTR *selector,
   5291         CLSID *clsid);
   5292 
   5293     HRESULT (STDMETHODCALLTYPE *SetPreferredClsid)(
   5294         IMFPluginControl* This,
   5295         DWORD pluginType,
   5296         LPCWSTR selector,
   5297         const CLSID *clsid);
   5298 
   5299     HRESULT (STDMETHODCALLTYPE *IsDisabled)(
   5300         IMFPluginControl* This,
   5301         DWORD pluginType,
   5302         REFCLSID clsid);
   5303 
   5304     HRESULT (STDMETHODCALLTYPE *GetDisabledByIndex)(
   5305         IMFPluginControl* This,
   5306         DWORD pluginType,
   5307         DWORD index,
   5308         CLSID *clsid);
   5309 
   5310     HRESULT (STDMETHODCALLTYPE *SetDisabled)(
   5311         IMFPluginControl* This,
   5312         DWORD pluginType,
   5313         REFCLSID clsid,
   5314         WINBOOL disabled);
   5315 
   5316     END_INTERFACE
   5317 } IMFPluginControlVtbl;
   5318 interface IMFPluginControl {
   5319     CONST_VTBL IMFPluginControlVtbl* lpVtbl;
   5320 };
   5321 
   5322 #ifdef COBJMACROS
   5323 #ifndef WIDL_C_INLINE_WRAPPERS
   5324 /*** IUnknown methods ***/
   5325 #define IMFPluginControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5326 #define IMFPluginControl_AddRef(This) (This)->lpVtbl->AddRef(This)
   5327 #define IMFPluginControl_Release(This) (This)->lpVtbl->Release(This)
   5328 /*** IMFPluginControl methods ***/
   5329 #define IMFPluginControl_GetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid)
   5330 #define IMFPluginControl_GetPreferredClsidByIndex(This,pluginType,index,selector,clsid) (This)->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid)
   5331 #define IMFPluginControl_SetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid)
   5332 #define IMFPluginControl_IsDisabled(This,pluginType,clsid) (This)->lpVtbl->IsDisabled(This,pluginType,clsid)
   5333 #define IMFPluginControl_GetDisabledByIndex(This,pluginType,index,clsid) (This)->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid)
   5334 #define IMFPluginControl_SetDisabled(This,pluginType,clsid,disabled) (This)->lpVtbl->SetDisabled(This,pluginType,clsid,disabled)
   5335 #else
   5336 /*** IUnknown methods ***/
   5337 static FORCEINLINE HRESULT IMFPluginControl_QueryInterface(IMFPluginControl* This,REFIID riid,void **ppvObject) {
   5338     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5339 }
   5340 static FORCEINLINE ULONG IMFPluginControl_AddRef(IMFPluginControl* This) {
   5341     return This->lpVtbl->AddRef(This);
   5342 }
   5343 static FORCEINLINE ULONG IMFPluginControl_Release(IMFPluginControl* This) {
   5344     return This->lpVtbl->Release(This);
   5345 }
   5346 /*** IMFPluginControl methods ***/
   5347 static FORCEINLINE HRESULT IMFPluginControl_GetPreferredClsid(IMFPluginControl* This,DWORD pluginType,LPCWSTR selector,CLSID *clsid) {
   5348     return This->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid);
   5349 }
   5350 static FORCEINLINE HRESULT IMFPluginControl_GetPreferredClsidByIndex(IMFPluginControl* This,DWORD pluginType,DWORD index,LPWSTR *selector,CLSID *clsid) {
   5351     return This->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid);
   5352 }
   5353 static FORCEINLINE HRESULT IMFPluginControl_SetPreferredClsid(IMFPluginControl* This,DWORD pluginType,LPCWSTR selector,const CLSID *clsid) {
   5354     return This->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid);
   5355 }
   5356 static FORCEINLINE HRESULT IMFPluginControl_IsDisabled(IMFPluginControl* This,DWORD pluginType,REFCLSID clsid) {
   5357     return This->lpVtbl->IsDisabled(This,pluginType,clsid);
   5358 }
   5359 static FORCEINLINE HRESULT IMFPluginControl_GetDisabledByIndex(IMFPluginControl* This,DWORD pluginType,DWORD index,CLSID *clsid) {
   5360     return This->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid);
   5361 }
   5362 static FORCEINLINE HRESULT IMFPluginControl_SetDisabled(IMFPluginControl* This,DWORD pluginType,REFCLSID clsid,WINBOOL disabled) {
   5363     return This->lpVtbl->SetDisabled(This,pluginType,clsid,disabled);
   5364 }
   5365 #endif
   5366 #endif
   5367 
   5368 #endif
   5369 
   5370 HRESULT STDMETHODCALLTYPE IMFPluginControl_GetPreferredClsid_Proxy(
   5371     IMFPluginControl* This,
   5372     DWORD pluginType,
   5373     LPCWSTR selector,
   5374     CLSID *clsid);
   5375 void __RPC_STUB IMFPluginControl_GetPreferredClsid_Stub(
   5376     IRpcStubBuffer* This,
   5377     IRpcChannelBuffer* pRpcChannelBuffer,
   5378     PRPC_MESSAGE pRpcMessage,
   5379     DWORD* pdwStubPhase);
   5380 HRESULT STDMETHODCALLTYPE IMFPluginControl_GetPreferredClsidByIndex_Proxy(
   5381     IMFPluginControl* This,
   5382     DWORD pluginType,
   5383     DWORD index,
   5384     LPWSTR *selector,
   5385     CLSID *clsid);
   5386 void __RPC_STUB IMFPluginControl_GetPreferredClsidByIndex_Stub(
   5387     IRpcStubBuffer* This,
   5388     IRpcChannelBuffer* pRpcChannelBuffer,
   5389     PRPC_MESSAGE pRpcMessage,
   5390     DWORD* pdwStubPhase);
   5391 HRESULT STDMETHODCALLTYPE IMFPluginControl_SetPreferredClsid_Proxy(
   5392     IMFPluginControl* This,
   5393     DWORD pluginType,
   5394     LPCWSTR selector,
   5395     const CLSID *clsid);
   5396 void __RPC_STUB IMFPluginControl_SetPreferredClsid_Stub(
   5397     IRpcStubBuffer* This,
   5398     IRpcChannelBuffer* pRpcChannelBuffer,
   5399     PRPC_MESSAGE pRpcMessage,
   5400     DWORD* pdwStubPhase);
   5401 HRESULT STDMETHODCALLTYPE IMFPluginControl_IsDisabled_Proxy(
   5402     IMFPluginControl* This,
   5403     DWORD pluginType,
   5404     REFCLSID clsid);
   5405 void __RPC_STUB IMFPluginControl_IsDisabled_Stub(
   5406     IRpcStubBuffer* This,
   5407     IRpcChannelBuffer* pRpcChannelBuffer,
   5408     PRPC_MESSAGE pRpcMessage,
   5409     DWORD* pdwStubPhase);
   5410 HRESULT STDMETHODCALLTYPE IMFPluginControl_GetDisabledByIndex_Proxy(
   5411     IMFPluginControl* This,
   5412     DWORD pluginType,
   5413     DWORD index,
   5414     CLSID *clsid);
   5415 void __RPC_STUB IMFPluginControl_GetDisabledByIndex_Stub(
   5416     IRpcStubBuffer* This,
   5417     IRpcChannelBuffer* pRpcChannelBuffer,
   5418     PRPC_MESSAGE pRpcMessage,
   5419     DWORD* pdwStubPhase);
   5420 HRESULT STDMETHODCALLTYPE IMFPluginControl_SetDisabled_Proxy(
   5421     IMFPluginControl* This,
   5422     DWORD pluginType,
   5423     REFCLSID clsid,
   5424     WINBOOL disabled);
   5425 void __RPC_STUB IMFPluginControl_SetDisabled_Stub(
   5426     IRpcStubBuffer* This,
   5427     IRpcChannelBuffer* pRpcChannelBuffer,
   5428     PRPC_MESSAGE pRpcMessage,
   5429     DWORD* pdwStubPhase);
   5430 
   5431 #endif  /* __IMFPluginControl_INTERFACE_DEFINED__ */
   5432 
   5433 /* Begin additional prototypes for all interfaces */
   5434 
   5435 ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
   5436 unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
   5437 unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
   5438 void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
   5439 ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
   5440 unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
   5441 unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
   5442 void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
   5443 
   5444 /* End additional prototypes */
   5445 
   5446 #ifdef __cplusplus
   5447 }
   5448 #endif
   5449 
   5450 #endif /* __mfobjects_h__ */
   5451