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