Home | History | Annotate | Download | only in include
      1 /*** Autogenerated by WIDL 1.6 from include/mfidl.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 __mfidl_h__
     16 #define __mfidl_h__
     17 
     18 /* Forward declarations */
     19 
     20 #ifndef __IMFTopologyNode_FWD_DEFINED__
     21 #define __IMFTopologyNode_FWD_DEFINED__
     22 typedef interface IMFTopologyNode IMFTopologyNode;
     23 #endif
     24 
     25 #ifndef __IMFTopology_FWD_DEFINED__
     26 #define __IMFTopology_FWD_DEFINED__
     27 typedef interface IMFTopology IMFTopology;
     28 #endif
     29 
     30 #ifndef __IMFClock_FWD_DEFINED__
     31 #define __IMFClock_FWD_DEFINED__
     32 typedef interface IMFClock IMFClock;
     33 #endif
     34 
     35 #ifndef __IMFMediaSession_FWD_DEFINED__
     36 #define __IMFMediaSession_FWD_DEFINED__
     37 typedef interface IMFMediaSession IMFMediaSession;
     38 #endif
     39 
     40 #ifndef __IMFMediaTypeHandler_FWD_DEFINED__
     41 #define __IMFMediaTypeHandler_FWD_DEFINED__
     42 typedef interface IMFMediaTypeHandler IMFMediaTypeHandler;
     43 #endif
     44 
     45 #ifndef __IMFStreamDescriptor_FWD_DEFINED__
     46 #define __IMFStreamDescriptor_FWD_DEFINED__
     47 typedef interface IMFStreamDescriptor IMFStreamDescriptor;
     48 #endif
     49 
     50 #ifndef __IMFPresentationDescriptor_FWD_DEFINED__
     51 #define __IMFPresentationDescriptor_FWD_DEFINED__
     52 typedef interface IMFPresentationDescriptor IMFPresentationDescriptor;
     53 #endif
     54 
     55 #ifndef __IMFMediaSource_FWD_DEFINED__
     56 #define __IMFMediaSource_FWD_DEFINED__
     57 typedef interface IMFMediaSource IMFMediaSource;
     58 #endif
     59 
     60 #ifndef __IMFByteStreamBuffering_FWD_DEFINED__
     61 #define __IMFByteStreamBuffering_FWD_DEFINED__
     62 typedef interface IMFByteStreamBuffering IMFByteStreamBuffering;
     63 #endif
     64 
     65 /* Headers for imported files */
     66 
     67 #include <mfobjects.h>
     68 
     69 #ifdef __cplusplus
     70 extern "C" {
     71 #endif
     72 
     73 #include <mftransform.h>
     74 #include <windef.h>
     75 typedef enum MFSESSION_SETTOPOLOGY_FLAGS {
     76     MFSESSION_SETTOPOLOGY_IMMEDIATE = 0x1,
     77     MFSESSION_SETTOPOLOGY_NORESOLUTION = 0x2,
     78     MFSESSION_SETTOPOLOGY_CLEAR_CURRENT = 0x4
     79 } MFSESSION_SETTOPOLOGY_FLAGS;
     80 typedef enum MFSESSION_GETFULLTOPOLOGY_FLAGS {
     81     MFSESSION_GETFULLTOPOLOGY_CURRENT = 0
     82 } MFSESSION_GETFULLTOPOLOGY_FLAGS;
     83 typedef enum MFPMPSESSION_CREATION_FLAGS {
     84     MFPMPSESSION_UNPROTECTED_PROCESS = 0x1
     85 } MFPMPSESSION_CREATION_FLAGS;
     86 typedef UINT64 TOPOID;
     87 typedef enum MF_TOPOLOGY_TYPE {
     88     MF_TOPOLOGY_OUTPUT_NODE = 0,
     89     MF_TOPOLOGY_SOURCESTREAM_NODE = 1,
     90     MF_TOPOLOGY_TRANSFORM_NODE = 2,
     91     MF_TOPOLOGY_TEE_NODE = 3,
     92     MF_TOPOLOGY_MAX = 0xffffffff
     93 } MF_TOPOLOGY_TYPE;
     94 /*****************************************************************************
     95  * IMFTopologyNode interface
     96  */
     97 #ifndef __IMFTopologyNode_INTERFACE_DEFINED__
     98 #define __IMFTopologyNode_INTERFACE_DEFINED__
     99 
    100 DEFINE_GUID(IID_IMFTopologyNode, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x30);
    101 #if defined(__cplusplus) && !defined(CINTERFACE)
    102 MIDL_INTERFACE("83cf873a-f6da-4bc8-823f-bacfd55dc430")
    103 IMFTopologyNode : public IMFAttributes
    104 {
    105     virtual HRESULT STDMETHODCALLTYPE SetObject(
    106         IUnknown *pObject) = 0;
    107 
    108     virtual HRESULT STDMETHODCALLTYPE GetObject(
    109         IUnknown **ppObject) = 0;
    110 
    111     virtual HRESULT STDMETHODCALLTYPE GetNodeType(
    112         MF_TOPOLOGY_TYPE *pType) = 0;
    113 
    114     virtual HRESULT STDMETHODCALLTYPE GetTopoNodeID(
    115         TOPOID *pID) = 0;
    116 
    117     virtual HRESULT STDMETHODCALLTYPE SetTopoNodeID(
    118         TOPOID ullTopoID) = 0;
    119 
    120     virtual HRESULT STDMETHODCALLTYPE GetInputCount(
    121         DWORD *pcInputs) = 0;
    122 
    123     virtual HRESULT STDMETHODCALLTYPE GetOutputCount(
    124         DWORD *pcOutputs) = 0;
    125 
    126     virtual HRESULT STDMETHODCALLTYPE ConnectOutput(
    127         DWORD dwOutputIndex,
    128         IMFTopologyNode *pDownstreamNode,
    129         DWORD dwInputIndexOnDownstreamNode) = 0;
    130 
    131     virtual HRESULT STDMETHODCALLTYPE DisconnectOutput(
    132         DWORD dwOutputIndex) = 0;
    133 
    134     virtual HRESULT STDMETHODCALLTYPE GetInput(
    135         DWORD dwInputIndex,
    136         IMFTopologyNode **ppUpstreamNode,
    137         DWORD *pdwOutputIndexOnUpstreamNode) = 0;
    138 
    139     virtual HRESULT STDMETHODCALLTYPE GetOutput(
    140         DWORD dwOutputIndex,
    141         IMFTopologyNode **ppDownstreamNode,
    142         DWORD *pdwInputIndexOnDownstreamNode) = 0;
    143 
    144     virtual HRESULT STDMETHODCALLTYPE SetOutputPrefType(
    145         DWORD dwOutputIndex,
    146         IMFMediaType *pType) = 0;
    147 
    148     virtual HRESULT STDMETHODCALLTYPE GetOutputPrefType(
    149         DWORD dwOutputIndex,
    150         IMFMediaType **ppType) = 0;
    151 
    152     virtual HRESULT STDMETHODCALLTYPE SetInputPrefType(
    153         DWORD dwInputIndex,
    154         IMFMediaType *pType) = 0;
    155 
    156     virtual HRESULT STDMETHODCALLTYPE GetInputPrefType(
    157         DWORD dwInputIndex,
    158         IMFMediaType **ppType) = 0;
    159 
    160     virtual HRESULT STDMETHODCALLTYPE CloneFrom(
    161         IMFTopologyNode *pNode) = 0;
    162 
    163 };
    164 #ifdef __CRT_UUID_DECL
    165 __CRT_UUID_DECL(IMFTopologyNode, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x30)
    166 #endif
    167 #else
    168 typedef struct IMFTopologyNodeVtbl {
    169     BEGIN_INTERFACE
    170 
    171     /*** IUnknown methods ***/
    172     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    173         IMFTopologyNode* This,
    174         REFIID riid,
    175         void **ppvObject);
    176 
    177     ULONG (STDMETHODCALLTYPE *AddRef)(
    178         IMFTopologyNode* This);
    179 
    180     ULONG (STDMETHODCALLTYPE *Release)(
    181         IMFTopologyNode* This);
    182 
    183     /*** IMFAttributes methods ***/
    184     HRESULT (STDMETHODCALLTYPE *GetItem)(
    185         IMFTopologyNode* This,
    186         REFGUID guidKey,
    187         PROPVARIANT *pValue);
    188 
    189     HRESULT (STDMETHODCALLTYPE *GetItemType)(
    190         IMFTopologyNode* This,
    191         REFGUID guidKey,
    192         MF_ATTRIBUTE_TYPE *pType);
    193 
    194     HRESULT (STDMETHODCALLTYPE *CompareItem)(
    195         IMFTopologyNode* This,
    196         REFGUID guidKey,
    197         REFPROPVARIANT Value,
    198         WINBOOL *pbResult);
    199 
    200     HRESULT (STDMETHODCALLTYPE *Compare)(
    201         IMFTopologyNode* This,
    202         IMFAttributes *pTheirs,
    203         MF_ATTRIBUTES_MATCH_TYPE MatchType,
    204         WINBOOL *pbResult);
    205 
    206     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
    207         IMFTopologyNode* This,
    208         REFGUID guidKey,
    209         UINT32 *punValue);
    210 
    211     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
    212         IMFTopologyNode* This,
    213         REFGUID guidKey,
    214         UINT64 *punValue);
    215 
    216     HRESULT (STDMETHODCALLTYPE *GetDouble)(
    217         IMFTopologyNode* This,
    218         REFGUID guidKey,
    219         double *pfValue);
    220 
    221     HRESULT (STDMETHODCALLTYPE *GetGUID)(
    222         IMFTopologyNode* This,
    223         REFGUID guidKey,
    224         GUID *pguidValue);
    225 
    226     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
    227         IMFTopologyNode* This,
    228         REFGUID guidKey,
    229         UINT32 *pcchLength);
    230 
    231     HRESULT (STDMETHODCALLTYPE *GetString)(
    232         IMFTopologyNode* This,
    233         REFGUID guidKey,
    234         LPWSTR pwszValue,
    235         UINT32 cchBufSize,
    236         UINT32 *pcchLength);
    237 
    238     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
    239         IMFTopologyNode* This,
    240         REFGUID guidKey,
    241         LPWSTR *ppwszValue,
    242         UINT32 *pcchLength);
    243 
    244     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
    245         IMFTopologyNode* This,
    246         REFGUID guidKey,
    247         UINT32 *pcbBlobSize);
    248 
    249     HRESULT (STDMETHODCALLTYPE *GetBlob)(
    250         IMFTopologyNode* This,
    251         REFGUID guidKey,
    252         UINT8 *pBuf,
    253         UINT32 cbBufSize,
    254         UINT32 *pcbBlobSize);
    255 
    256     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
    257         IMFTopologyNode* This,
    258         REFGUID guidKey,
    259         UINT8 **ppBuf,
    260         UINT32 *pcbSize);
    261 
    262     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
    263         IMFTopologyNode* This,
    264         REFGUID guidKey,
    265         REFIID riid,
    266         LPVOID *ppv);
    267 
    268     HRESULT (STDMETHODCALLTYPE *SetItem)(
    269         IMFTopologyNode* This,
    270         REFGUID guidKey,
    271         REFPROPVARIANT Value);
    272 
    273     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
    274         IMFTopologyNode* This,
    275         REFGUID guidKey);
    276 
    277     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
    278         IMFTopologyNode* This);
    279 
    280     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
    281         IMFTopologyNode* This,
    282         REFGUID guidKey,
    283         UINT32 unValue);
    284 
    285     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
    286         IMFTopologyNode* This,
    287         REFGUID guidKey,
    288         UINT64 unValue);
    289 
    290     HRESULT (STDMETHODCALLTYPE *SetDouble)(
    291         IMFTopologyNode* This,
    292         REFGUID guidKey,
    293         double fValue);
    294 
    295     HRESULT (STDMETHODCALLTYPE *SetGUID)(
    296         IMFTopologyNode* This,
    297         REFGUID guidKey,
    298         REFGUID guidValue);
    299 
    300     HRESULT (STDMETHODCALLTYPE *SetString)(
    301         IMFTopologyNode* This,
    302         REFGUID guidKey,
    303         LPCWSTR wszValue);
    304 
    305     HRESULT (STDMETHODCALLTYPE *SetBlob)(
    306         IMFTopologyNode* This,
    307         REFGUID guidKey,
    308         const UINT8 *pBuf,
    309         UINT32 cbBufSize);
    310 
    311     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
    312         IMFTopologyNode* This,
    313         REFGUID guidKey,
    314         IUnknown *pUnknown);
    315 
    316     HRESULT (STDMETHODCALLTYPE *LockStore)(
    317         IMFTopologyNode* This);
    318 
    319     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
    320         IMFTopologyNode* This);
    321 
    322     HRESULT (STDMETHODCALLTYPE *GetCount)(
    323         IMFTopologyNode* This,
    324         UINT32 *pcItems);
    325 
    326     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
    327         IMFTopologyNode* This,
    328         UINT32 unIndex,
    329         GUID *pguidKey,
    330         PROPVARIANT *pValue);
    331 
    332     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
    333         IMFTopologyNode* This,
    334         IMFAttributes *pDest);
    335 
    336     /*** IMFTopologyNode methods ***/
    337     HRESULT (STDMETHODCALLTYPE *SetObject)(
    338         IMFTopologyNode* This,
    339         IUnknown *pObject);
    340 
    341     HRESULT (STDMETHODCALLTYPE *GetObject)(
    342         IMFTopologyNode* This,
    343         IUnknown **ppObject);
    344 
    345     HRESULT (STDMETHODCALLTYPE *GetNodeType)(
    346         IMFTopologyNode* This,
    347         MF_TOPOLOGY_TYPE *pType);
    348 
    349     HRESULT (STDMETHODCALLTYPE *GetTopoNodeID)(
    350         IMFTopologyNode* This,
    351         TOPOID *pID);
    352 
    353     HRESULT (STDMETHODCALLTYPE *SetTopoNodeID)(
    354         IMFTopologyNode* This,
    355         TOPOID ullTopoID);
    356 
    357     HRESULT (STDMETHODCALLTYPE *GetInputCount)(
    358         IMFTopologyNode* This,
    359         DWORD *pcInputs);
    360 
    361     HRESULT (STDMETHODCALLTYPE *GetOutputCount)(
    362         IMFTopologyNode* This,
    363         DWORD *pcOutputs);
    364 
    365     HRESULT (STDMETHODCALLTYPE *ConnectOutput)(
    366         IMFTopologyNode* This,
    367         DWORD dwOutputIndex,
    368         IMFTopologyNode *pDownstreamNode,
    369         DWORD dwInputIndexOnDownstreamNode);
    370 
    371     HRESULT (STDMETHODCALLTYPE *DisconnectOutput)(
    372         IMFTopologyNode* This,
    373         DWORD dwOutputIndex);
    374 
    375     HRESULT (STDMETHODCALLTYPE *GetInput)(
    376         IMFTopologyNode* This,
    377         DWORD dwInputIndex,
    378         IMFTopologyNode **ppUpstreamNode,
    379         DWORD *pdwOutputIndexOnUpstreamNode);
    380 
    381     HRESULT (STDMETHODCALLTYPE *GetOutput)(
    382         IMFTopologyNode* This,
    383         DWORD dwOutputIndex,
    384         IMFTopologyNode **ppDownstreamNode,
    385         DWORD *pdwInputIndexOnDownstreamNode);
    386 
    387     HRESULT (STDMETHODCALLTYPE *SetOutputPrefType)(
    388         IMFTopologyNode* This,
    389         DWORD dwOutputIndex,
    390         IMFMediaType *pType);
    391 
    392     HRESULT (STDMETHODCALLTYPE *GetOutputPrefType)(
    393         IMFTopologyNode* This,
    394         DWORD dwOutputIndex,
    395         IMFMediaType **ppType);
    396 
    397     HRESULT (STDMETHODCALLTYPE *SetInputPrefType)(
    398         IMFTopologyNode* This,
    399         DWORD dwInputIndex,
    400         IMFMediaType *pType);
    401 
    402     HRESULT (STDMETHODCALLTYPE *GetInputPrefType)(
    403         IMFTopologyNode* This,
    404         DWORD dwInputIndex,
    405         IMFMediaType **ppType);
    406 
    407     HRESULT (STDMETHODCALLTYPE *CloneFrom)(
    408         IMFTopologyNode* This,
    409         IMFTopologyNode *pNode);
    410 
    411     END_INTERFACE
    412 } IMFTopologyNodeVtbl;
    413 interface IMFTopologyNode {
    414     CONST_VTBL IMFTopologyNodeVtbl* lpVtbl;
    415 };
    416 
    417 #ifdef COBJMACROS
    418 #ifndef WIDL_C_INLINE_WRAPPERS
    419 /*** IUnknown methods ***/
    420 #define IMFTopologyNode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    421 #define IMFTopologyNode_AddRef(This) (This)->lpVtbl->AddRef(This)
    422 #define IMFTopologyNode_Release(This) (This)->lpVtbl->Release(This)
    423 /*** IMFAttributes methods ***/
    424 #define IMFTopologyNode_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
    425 #define IMFTopologyNode_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
    426 #define IMFTopologyNode_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
    427 #define IMFTopologyNode_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
    428 #define IMFTopologyNode_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
    429 #define IMFTopologyNode_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
    430 #define IMFTopologyNode_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
    431 #define IMFTopologyNode_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
    432 #define IMFTopologyNode_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
    433 #define IMFTopologyNode_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
    434 #define IMFTopologyNode_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
    435 #define IMFTopologyNode_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
    436 #define IMFTopologyNode_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
    437 #define IMFTopologyNode_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
    438 #define IMFTopologyNode_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
    439 #define IMFTopologyNode_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
    440 #define IMFTopologyNode_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
    441 #define IMFTopologyNode_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
    442 #define IMFTopologyNode_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
    443 #define IMFTopologyNode_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
    444 #define IMFTopologyNode_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
    445 #define IMFTopologyNode_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
    446 #define IMFTopologyNode_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
    447 #define IMFTopologyNode_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
    448 #define IMFTopologyNode_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
    449 #define IMFTopologyNode_LockStore(This) (This)->lpVtbl->LockStore(This)
    450 #define IMFTopologyNode_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
    451 #define IMFTopologyNode_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
    452 #define IMFTopologyNode_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
    453 #define IMFTopologyNode_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
    454 /*** IMFTopologyNode methods ***/
    455 #define IMFTopologyNode_SetObject(This,pObject) (This)->lpVtbl->SetObject(This,pObject)
    456 #define IMFTopologyNode_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
    457 #define IMFTopologyNode_GetNodeType(This,pType) (This)->lpVtbl->GetNodeType(This,pType)
    458 #define IMFTopologyNode_GetTopoNodeID(This,pID) (This)->lpVtbl->GetTopoNodeID(This,pID)
    459 #define IMFTopologyNode_SetTopoNodeID(This,ullTopoID) (This)->lpVtbl->SetTopoNodeID(This,ullTopoID)
    460 #define IMFTopologyNode_GetInputCount(This,pcInputs) (This)->lpVtbl->GetInputCount(This,pcInputs)
    461 #define IMFTopologyNode_GetOutputCount(This,pcOutputs) (This)->lpVtbl->GetOutputCount(This,pcOutputs)
    462 #define IMFTopologyNode_ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode) (This)->lpVtbl->ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode)
    463 #define IMFTopologyNode_DisconnectOutput(This,dwOutputIndex) (This)->lpVtbl->DisconnectOutput(This,dwOutputIndex)
    464 #define IMFTopologyNode_GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode) (This)->lpVtbl->GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode)
    465 #define IMFTopologyNode_GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode) (This)->lpVtbl->GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode)
    466 #define IMFTopologyNode_SetOutputPrefType(This,dwOutputIndex,pType) (This)->lpVtbl->SetOutputPrefType(This,dwOutputIndex,pType)
    467 #define IMFTopologyNode_GetOutputPrefType(This,dwOutputIndex,ppType) (This)->lpVtbl->GetOutputPrefType(This,dwOutputIndex,ppType)
    468 #define IMFTopologyNode_SetInputPrefType(This,dwInputIndex,pType) (This)->lpVtbl->SetInputPrefType(This,dwInputIndex,pType)
    469 #define IMFTopologyNode_GetInputPrefType(This,dwInputIndex,ppType) (This)->lpVtbl->GetInputPrefType(This,dwInputIndex,ppType)
    470 #define IMFTopologyNode_CloneFrom(This,pNode) (This)->lpVtbl->CloneFrom(This,pNode)
    471 #else
    472 /*** IUnknown methods ***/
    473 static FORCEINLINE HRESULT IMFTopologyNode_QueryInterface(IMFTopologyNode* This,REFIID riid,void **ppvObject) {
    474     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    475 }
    476 static FORCEINLINE ULONG IMFTopologyNode_AddRef(IMFTopologyNode* This) {
    477     return This->lpVtbl->AddRef(This);
    478 }
    479 static FORCEINLINE ULONG IMFTopologyNode_Release(IMFTopologyNode* This) {
    480     return This->lpVtbl->Release(This);
    481 }
    482 /*** IMFAttributes methods ***/
    483 static FORCEINLINE HRESULT IMFTopologyNode_GetItem(IMFTopologyNode* This,REFGUID guidKey,PROPVARIANT *pValue) {
    484     return This->lpVtbl->GetItem(This,guidKey,pValue);
    485 }
    486 static FORCEINLINE HRESULT IMFTopologyNode_GetItemType(IMFTopologyNode* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
    487     return This->lpVtbl->GetItemType(This,guidKey,pType);
    488 }
    489 static FORCEINLINE HRESULT IMFTopologyNode_CompareItem(IMFTopologyNode* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
    490     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
    491 }
    492 static FORCEINLINE HRESULT IMFTopologyNode_Compare(IMFTopologyNode* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
    493     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
    494 }
    495 static FORCEINLINE HRESULT IMFTopologyNode_GetUINT32(IMFTopologyNode* This,REFGUID guidKey,UINT32 *punValue) {
    496     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
    497 }
    498 static FORCEINLINE HRESULT IMFTopologyNode_GetUINT64(IMFTopologyNode* This,REFGUID guidKey,UINT64 *punValue) {
    499     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
    500 }
    501 static FORCEINLINE HRESULT IMFTopologyNode_GetDouble(IMFTopologyNode* This,REFGUID guidKey,double *pfValue) {
    502     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
    503 }
    504 static FORCEINLINE HRESULT IMFTopologyNode_GetGUID(IMFTopologyNode* This,REFGUID guidKey,GUID *pguidValue) {
    505     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
    506 }
    507 static FORCEINLINE HRESULT IMFTopologyNode_GetStringLength(IMFTopologyNode* This,REFGUID guidKey,UINT32 *pcchLength) {
    508     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
    509 }
    510 static FORCEINLINE HRESULT IMFTopologyNode_GetString(IMFTopologyNode* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
    511     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
    512 }
    513 static FORCEINLINE HRESULT IMFTopologyNode_GetAllocatedString(IMFTopologyNode* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
    514     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
    515 }
    516 static FORCEINLINE HRESULT IMFTopologyNode_GetBlobSize(IMFTopologyNode* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
    517     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
    518 }
    519 static FORCEINLINE HRESULT IMFTopologyNode_GetBlob(IMFTopologyNode* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
    520     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
    521 }
    522 static FORCEINLINE HRESULT IMFTopologyNode_GetAllocatedBlob(IMFTopologyNode* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
    523     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
    524 }
    525 static FORCEINLINE HRESULT IMFTopologyNode_GetUnknown(IMFTopologyNode* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
    526     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
    527 }
    528 static FORCEINLINE HRESULT IMFTopologyNode_SetItem(IMFTopologyNode* This,REFGUID guidKey,REFPROPVARIANT Value) {
    529     return This->lpVtbl->SetItem(This,guidKey,Value);
    530 }
    531 static FORCEINLINE HRESULT IMFTopologyNode_DeleteItem(IMFTopologyNode* This,REFGUID guidKey) {
    532     return This->lpVtbl->DeleteItem(This,guidKey);
    533 }
    534 static FORCEINLINE HRESULT IMFTopologyNode_DeleteAllItems(IMFTopologyNode* This) {
    535     return This->lpVtbl->DeleteAllItems(This);
    536 }
    537 static FORCEINLINE HRESULT IMFTopologyNode_SetUINT32(IMFTopologyNode* This,REFGUID guidKey,UINT32 unValue) {
    538     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
    539 }
    540 static FORCEINLINE HRESULT IMFTopologyNode_SetUINT64(IMFTopologyNode* This,REFGUID guidKey,UINT64 unValue) {
    541     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
    542 }
    543 static FORCEINLINE HRESULT IMFTopologyNode_SetDouble(IMFTopologyNode* This,REFGUID guidKey,double fValue) {
    544     return This->lpVtbl->SetDouble(This,guidKey,fValue);
    545 }
    546 static FORCEINLINE HRESULT IMFTopologyNode_SetGUID(IMFTopologyNode* This,REFGUID guidKey,REFGUID guidValue) {
    547     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
    548 }
    549 static FORCEINLINE HRESULT IMFTopologyNode_SetString(IMFTopologyNode* This,REFGUID guidKey,LPCWSTR wszValue) {
    550     return This->lpVtbl->SetString(This,guidKey,wszValue);
    551 }
    552 static FORCEINLINE HRESULT IMFTopologyNode_SetBlob(IMFTopologyNode* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
    553     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
    554 }
    555 static FORCEINLINE HRESULT IMFTopologyNode_SetUnknown(IMFTopologyNode* This,REFGUID guidKey,IUnknown *pUnknown) {
    556     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
    557 }
    558 static FORCEINLINE HRESULT IMFTopologyNode_LockStore(IMFTopologyNode* This) {
    559     return This->lpVtbl->LockStore(This);
    560 }
    561 static FORCEINLINE HRESULT IMFTopologyNode_UnlockStore(IMFTopologyNode* This) {
    562     return This->lpVtbl->UnlockStore(This);
    563 }
    564 static FORCEINLINE HRESULT IMFTopologyNode_GetCount(IMFTopologyNode* This,UINT32 *pcItems) {
    565     return This->lpVtbl->GetCount(This,pcItems);
    566 }
    567 static FORCEINLINE HRESULT IMFTopologyNode_GetItemByIndex(IMFTopologyNode* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
    568     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
    569 }
    570 static FORCEINLINE HRESULT IMFTopologyNode_CopyAllItems(IMFTopologyNode* This,IMFAttributes *pDest) {
    571     return This->lpVtbl->CopyAllItems(This,pDest);
    572 }
    573 /*** IMFTopologyNode methods ***/
    574 static FORCEINLINE HRESULT IMFTopologyNode_SetObject(IMFTopologyNode* This,IUnknown *pObject) {
    575     return This->lpVtbl->SetObject(This,pObject);
    576 }
    577 static FORCEINLINE HRESULT IMFTopologyNode_GetObject(IMFTopologyNode* This,IUnknown **ppObject) {
    578     return This->lpVtbl->GetObject(This,ppObject);
    579 }
    580 static FORCEINLINE HRESULT IMFTopologyNode_GetNodeType(IMFTopologyNode* This,MF_TOPOLOGY_TYPE *pType) {
    581     return This->lpVtbl->GetNodeType(This,pType);
    582 }
    583 static FORCEINLINE HRESULT IMFTopologyNode_GetTopoNodeID(IMFTopologyNode* This,TOPOID *pID) {
    584     return This->lpVtbl->GetTopoNodeID(This,pID);
    585 }
    586 static FORCEINLINE HRESULT IMFTopologyNode_SetTopoNodeID(IMFTopologyNode* This,TOPOID ullTopoID) {
    587     return This->lpVtbl->SetTopoNodeID(This,ullTopoID);
    588 }
    589 static FORCEINLINE HRESULT IMFTopologyNode_GetInputCount(IMFTopologyNode* This,DWORD *pcInputs) {
    590     return This->lpVtbl->GetInputCount(This,pcInputs);
    591 }
    592 static FORCEINLINE HRESULT IMFTopologyNode_GetOutputCount(IMFTopologyNode* This,DWORD *pcOutputs) {
    593     return This->lpVtbl->GetOutputCount(This,pcOutputs);
    594 }
    595 static FORCEINLINE HRESULT IMFTopologyNode_ConnectOutput(IMFTopologyNode* This,DWORD dwOutputIndex,IMFTopologyNode *pDownstreamNode,DWORD dwInputIndexOnDownstreamNode) {
    596     return This->lpVtbl->ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode);
    597 }
    598 static FORCEINLINE HRESULT IMFTopologyNode_DisconnectOutput(IMFTopologyNode* This,DWORD dwOutputIndex) {
    599     return This->lpVtbl->DisconnectOutput(This,dwOutputIndex);
    600 }
    601 static FORCEINLINE HRESULT IMFTopologyNode_GetInput(IMFTopologyNode* This,DWORD dwInputIndex,IMFTopologyNode **ppUpstreamNode,DWORD *pdwOutputIndexOnUpstreamNode) {
    602     return This->lpVtbl->GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode);
    603 }
    604 static FORCEINLINE HRESULT IMFTopologyNode_GetOutput(IMFTopologyNode* This,DWORD dwOutputIndex,IMFTopologyNode **ppDownstreamNode,DWORD *pdwInputIndexOnDownstreamNode) {
    605     return This->lpVtbl->GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode);
    606 }
    607 static FORCEINLINE HRESULT IMFTopologyNode_SetOutputPrefType(IMFTopologyNode* This,DWORD dwOutputIndex,IMFMediaType *pType) {
    608     return This->lpVtbl->SetOutputPrefType(This,dwOutputIndex,pType);
    609 }
    610 static FORCEINLINE HRESULT IMFTopologyNode_GetOutputPrefType(IMFTopologyNode* This,DWORD dwOutputIndex,IMFMediaType **ppType) {
    611     return This->lpVtbl->GetOutputPrefType(This,dwOutputIndex,ppType);
    612 }
    613 static FORCEINLINE HRESULT IMFTopologyNode_SetInputPrefType(IMFTopologyNode* This,DWORD dwInputIndex,IMFMediaType *pType) {
    614     return This->lpVtbl->SetInputPrefType(This,dwInputIndex,pType);
    615 }
    616 static FORCEINLINE HRESULT IMFTopologyNode_GetInputPrefType(IMFTopologyNode* This,DWORD dwInputIndex,IMFMediaType **ppType) {
    617     return This->lpVtbl->GetInputPrefType(This,dwInputIndex,ppType);
    618 }
    619 static FORCEINLINE HRESULT IMFTopologyNode_CloneFrom(IMFTopologyNode* This,IMFTopologyNode *pNode) {
    620     return This->lpVtbl->CloneFrom(This,pNode);
    621 }
    622 #endif
    623 #endif
    624 
    625 #endif
    626 
    627 HRESULT STDMETHODCALLTYPE IMFTopologyNode_SetObject_Proxy(
    628     IMFTopologyNode* This,
    629     IUnknown *pObject);
    630 void __RPC_STUB IMFTopologyNode_SetObject_Stub(
    631     IRpcStubBuffer* This,
    632     IRpcChannelBuffer* pRpcChannelBuffer,
    633     PRPC_MESSAGE pRpcMessage,
    634     DWORD* pdwStubPhase);
    635 HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetObject_Proxy(
    636     IMFTopologyNode* This,
    637     IUnknown **ppObject);
    638 void __RPC_STUB IMFTopologyNode_GetObject_Stub(
    639     IRpcStubBuffer* This,
    640     IRpcChannelBuffer* pRpcChannelBuffer,
    641     PRPC_MESSAGE pRpcMessage,
    642     DWORD* pdwStubPhase);
    643 HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetNodeType_Proxy(
    644     IMFTopologyNode* This,
    645     MF_TOPOLOGY_TYPE *pType);
    646 void __RPC_STUB IMFTopologyNode_GetNodeType_Stub(
    647     IRpcStubBuffer* This,
    648     IRpcChannelBuffer* pRpcChannelBuffer,
    649     PRPC_MESSAGE pRpcMessage,
    650     DWORD* pdwStubPhase);
    651 HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetTopoNodeID_Proxy(
    652     IMFTopologyNode* This,
    653     TOPOID *pID);
    654 void __RPC_STUB IMFTopologyNode_GetTopoNodeID_Stub(
    655     IRpcStubBuffer* This,
    656     IRpcChannelBuffer* pRpcChannelBuffer,
    657     PRPC_MESSAGE pRpcMessage,
    658     DWORD* pdwStubPhase);
    659 HRESULT STDMETHODCALLTYPE IMFTopologyNode_SetTopoNodeID_Proxy(
    660     IMFTopologyNode* This,
    661     TOPOID ullTopoID);
    662 void __RPC_STUB IMFTopologyNode_SetTopoNodeID_Stub(
    663     IRpcStubBuffer* This,
    664     IRpcChannelBuffer* pRpcChannelBuffer,
    665     PRPC_MESSAGE pRpcMessage,
    666     DWORD* pdwStubPhase);
    667 HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetInputCount_Proxy(
    668     IMFTopologyNode* This,
    669     DWORD *pcInputs);
    670 void __RPC_STUB IMFTopologyNode_GetInputCount_Stub(
    671     IRpcStubBuffer* This,
    672     IRpcChannelBuffer* pRpcChannelBuffer,
    673     PRPC_MESSAGE pRpcMessage,
    674     DWORD* pdwStubPhase);
    675 HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetOutputCount_Proxy(
    676     IMFTopologyNode* This,
    677     DWORD *pcOutputs);
    678 void __RPC_STUB IMFTopologyNode_GetOutputCount_Stub(
    679     IRpcStubBuffer* This,
    680     IRpcChannelBuffer* pRpcChannelBuffer,
    681     PRPC_MESSAGE pRpcMessage,
    682     DWORD* pdwStubPhase);
    683 HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetInput_Proxy(
    684     IMFTopologyNode* This,
    685     DWORD dwInputIndex,
    686     IMFTopologyNode **ppUpstreamNode,
    687     DWORD *pdwOutputIndexOnUpstreamNode);
    688 void __RPC_STUB IMFTopologyNode_GetInput_Stub(
    689     IRpcStubBuffer* This,
    690     IRpcChannelBuffer* pRpcChannelBuffer,
    691     PRPC_MESSAGE pRpcMessage,
    692     DWORD* pdwStubPhase);
    693 HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetOutput_Proxy(
    694     IMFTopologyNode* This,
    695     DWORD dwOutputIndex,
    696     IMFTopologyNode **ppDownstreamNode,
    697     DWORD *pdwInputIndexOnDownstreamNode);
    698 void __RPC_STUB IMFTopologyNode_GetOutput_Stub(
    699     IRpcStubBuffer* This,
    700     IRpcChannelBuffer* pRpcChannelBuffer,
    701     PRPC_MESSAGE pRpcMessage,
    702     DWORD* pdwStubPhase);
    703 HRESULT STDMETHODCALLTYPE IMFTopologyNode_RemoteGetOutputPrefType_Proxy(
    704     IMFTopologyNode* This,
    705     DWORD dwOutputIndex,
    706     DWORD *pcbData,
    707     BYTE **ppbData);
    708 void __RPC_STUB IMFTopologyNode_RemoteGetOutputPrefType_Stub(
    709     IRpcStubBuffer* This,
    710     IRpcChannelBuffer* pRpcChannelBuffer,
    711     PRPC_MESSAGE pRpcMessage,
    712     DWORD* pdwStubPhase);
    713 HRESULT STDMETHODCALLTYPE IMFTopologyNode_RemoteGetInputPrefType_Proxy(
    714     IMFTopologyNode* This,
    715     DWORD dwInputIndex,
    716     DWORD *pcbData,
    717     BYTE **ppbData);
    718 void __RPC_STUB IMFTopologyNode_RemoteGetInputPrefType_Stub(
    719     IRpcStubBuffer* This,
    720     IRpcChannelBuffer* pRpcChannelBuffer,
    721     PRPC_MESSAGE pRpcMessage,
    722     DWORD* pdwStubPhase);
    723 HRESULT STDMETHODCALLTYPE IMFTopologyNode_CloneFrom_Proxy(
    724     IMFTopologyNode* This,
    725     IMFTopologyNode *pNode);
    726 void __RPC_STUB IMFTopologyNode_CloneFrom_Stub(
    727     IRpcStubBuffer* This,
    728     IRpcChannelBuffer* pRpcChannelBuffer,
    729     PRPC_MESSAGE pRpcMessage,
    730     DWORD* pdwStubPhase);
    731 HRESULT CALLBACK IMFTopologyNode_GetOutputPrefType_Proxy(
    732     IMFTopologyNode* This,
    733     DWORD dwOutputIndex,
    734     IMFMediaType **ppType);
    735 HRESULT __RPC_STUB IMFTopologyNode_GetOutputPrefType_Stub(
    736     IMFTopologyNode* This,
    737     DWORD dwOutputIndex,
    738     DWORD *pcbData,
    739     BYTE **ppbData);
    740 HRESULT CALLBACK IMFTopologyNode_GetInputPrefType_Proxy(
    741     IMFTopologyNode* This,
    742     DWORD dwInputIndex,
    743     IMFMediaType **ppType);
    744 HRESULT __RPC_STUB IMFTopologyNode_GetInputPrefType_Stub(
    745     IMFTopologyNode* This,
    746     DWORD dwInputIndex,
    747     DWORD *pcbData,
    748     BYTE **ppbData);
    749 
    750 #endif  /* __IMFTopologyNode_INTERFACE_DEFINED__ */
    751 
    752 /*****************************************************************************
    753  * IMFTopology interface
    754  */
    755 #ifndef __IMFTopology_INTERFACE_DEFINED__
    756 #define __IMFTopology_INTERFACE_DEFINED__
    757 
    758 DEFINE_GUID(IID_IMFTopology, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x33);
    759 #if defined(__cplusplus) && !defined(CINTERFACE)
    760 MIDL_INTERFACE("83cf873a-f6da-4bc8-823f-bacfd55dc433")
    761 IMFTopology : public IMFAttributes
    762 {
    763     virtual HRESULT STDMETHODCALLTYPE GetTopologyID(
    764         TOPOID *pID) = 0;
    765 
    766     virtual HRESULT STDMETHODCALLTYPE AddNode(
    767         IMFTopologyNode *pNode) = 0;
    768 
    769     virtual HRESULT STDMETHODCALLTYPE RemoveNode(
    770         IMFTopologyNode *pNode) = 0;
    771 
    772     virtual HRESULT STDMETHODCALLTYPE GetNodeCount(
    773         WORD *pwNodes) = 0;
    774 
    775     virtual HRESULT STDMETHODCALLTYPE GetNode(
    776         WORD wIndex,
    777         IMFTopologyNode **ppNode) = 0;
    778 
    779     virtual HRESULT STDMETHODCALLTYPE Clear(
    780         ) = 0;
    781 
    782     virtual HRESULT STDMETHODCALLTYPE CloneFrom(
    783         IMFTopology *pTopology) = 0;
    784 
    785     virtual HRESULT STDMETHODCALLTYPE GetNodeByID(
    786         TOPOID qwTopoNodeID,
    787         IMFTopologyNode **ppNode) = 0;
    788 
    789     virtual HRESULT STDMETHODCALLTYPE GetSourceNodeCollection(
    790         IMFCollection **ppCollection) = 0;
    791 
    792     virtual HRESULT STDMETHODCALLTYPE GetOutputNodeCollection(
    793         IMFCollection **ppCollection) = 0;
    794 
    795 };
    796 #ifdef __CRT_UUID_DECL
    797 __CRT_UUID_DECL(IMFTopology, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x33)
    798 #endif
    799 #else
    800 typedef struct IMFTopologyVtbl {
    801     BEGIN_INTERFACE
    802 
    803     /*** IUnknown methods ***/
    804     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    805         IMFTopology* This,
    806         REFIID riid,
    807         void **ppvObject);
    808 
    809     ULONG (STDMETHODCALLTYPE *AddRef)(
    810         IMFTopology* This);
    811 
    812     ULONG (STDMETHODCALLTYPE *Release)(
    813         IMFTopology* This);
    814 
    815     /*** IMFAttributes methods ***/
    816     HRESULT (STDMETHODCALLTYPE *GetItem)(
    817         IMFTopology* This,
    818         REFGUID guidKey,
    819         PROPVARIANT *pValue);
    820 
    821     HRESULT (STDMETHODCALLTYPE *GetItemType)(
    822         IMFTopology* This,
    823         REFGUID guidKey,
    824         MF_ATTRIBUTE_TYPE *pType);
    825 
    826     HRESULT (STDMETHODCALLTYPE *CompareItem)(
    827         IMFTopology* This,
    828         REFGUID guidKey,
    829         REFPROPVARIANT Value,
    830         WINBOOL *pbResult);
    831 
    832     HRESULT (STDMETHODCALLTYPE *Compare)(
    833         IMFTopology* This,
    834         IMFAttributes *pTheirs,
    835         MF_ATTRIBUTES_MATCH_TYPE MatchType,
    836         WINBOOL *pbResult);
    837 
    838     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
    839         IMFTopology* This,
    840         REFGUID guidKey,
    841         UINT32 *punValue);
    842 
    843     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
    844         IMFTopology* This,
    845         REFGUID guidKey,
    846         UINT64 *punValue);
    847 
    848     HRESULT (STDMETHODCALLTYPE *GetDouble)(
    849         IMFTopology* This,
    850         REFGUID guidKey,
    851         double *pfValue);
    852 
    853     HRESULT (STDMETHODCALLTYPE *GetGUID)(
    854         IMFTopology* This,
    855         REFGUID guidKey,
    856         GUID *pguidValue);
    857 
    858     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
    859         IMFTopology* This,
    860         REFGUID guidKey,
    861         UINT32 *pcchLength);
    862 
    863     HRESULT (STDMETHODCALLTYPE *GetString)(
    864         IMFTopology* This,
    865         REFGUID guidKey,
    866         LPWSTR pwszValue,
    867         UINT32 cchBufSize,
    868         UINT32 *pcchLength);
    869 
    870     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
    871         IMFTopology* This,
    872         REFGUID guidKey,
    873         LPWSTR *ppwszValue,
    874         UINT32 *pcchLength);
    875 
    876     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
    877         IMFTopology* This,
    878         REFGUID guidKey,
    879         UINT32 *pcbBlobSize);
    880 
    881     HRESULT (STDMETHODCALLTYPE *GetBlob)(
    882         IMFTopology* This,
    883         REFGUID guidKey,
    884         UINT8 *pBuf,
    885         UINT32 cbBufSize,
    886         UINT32 *pcbBlobSize);
    887 
    888     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
    889         IMFTopology* This,
    890         REFGUID guidKey,
    891         UINT8 **ppBuf,
    892         UINT32 *pcbSize);
    893 
    894     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
    895         IMFTopology* This,
    896         REFGUID guidKey,
    897         REFIID riid,
    898         LPVOID *ppv);
    899 
    900     HRESULT (STDMETHODCALLTYPE *SetItem)(
    901         IMFTopology* This,
    902         REFGUID guidKey,
    903         REFPROPVARIANT Value);
    904 
    905     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
    906         IMFTopology* This,
    907         REFGUID guidKey);
    908 
    909     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
    910         IMFTopology* This);
    911 
    912     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
    913         IMFTopology* This,
    914         REFGUID guidKey,
    915         UINT32 unValue);
    916 
    917     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
    918         IMFTopology* This,
    919         REFGUID guidKey,
    920         UINT64 unValue);
    921 
    922     HRESULT (STDMETHODCALLTYPE *SetDouble)(
    923         IMFTopology* This,
    924         REFGUID guidKey,
    925         double fValue);
    926 
    927     HRESULT (STDMETHODCALLTYPE *SetGUID)(
    928         IMFTopology* This,
    929         REFGUID guidKey,
    930         REFGUID guidValue);
    931 
    932     HRESULT (STDMETHODCALLTYPE *SetString)(
    933         IMFTopology* This,
    934         REFGUID guidKey,
    935         LPCWSTR wszValue);
    936 
    937     HRESULT (STDMETHODCALLTYPE *SetBlob)(
    938         IMFTopology* This,
    939         REFGUID guidKey,
    940         const UINT8 *pBuf,
    941         UINT32 cbBufSize);
    942 
    943     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
    944         IMFTopology* This,
    945         REFGUID guidKey,
    946         IUnknown *pUnknown);
    947 
    948     HRESULT (STDMETHODCALLTYPE *LockStore)(
    949         IMFTopology* This);
    950 
    951     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
    952         IMFTopology* This);
    953 
    954     HRESULT (STDMETHODCALLTYPE *GetCount)(
    955         IMFTopology* This,
    956         UINT32 *pcItems);
    957 
    958     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
    959         IMFTopology* This,
    960         UINT32 unIndex,
    961         GUID *pguidKey,
    962         PROPVARIANT *pValue);
    963 
    964     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
    965         IMFTopology* This,
    966         IMFAttributes *pDest);
    967 
    968     /*** IMFTopology methods ***/
    969     HRESULT (STDMETHODCALLTYPE *GetTopologyID)(
    970         IMFTopology* This,
    971         TOPOID *pID);
    972 
    973     HRESULT (STDMETHODCALLTYPE *AddNode)(
    974         IMFTopology* This,
    975         IMFTopologyNode *pNode);
    976 
    977     HRESULT (STDMETHODCALLTYPE *RemoveNode)(
    978         IMFTopology* This,
    979         IMFTopologyNode *pNode);
    980 
    981     HRESULT (STDMETHODCALLTYPE *GetNodeCount)(
    982         IMFTopology* This,
    983         WORD *pwNodes);
    984 
    985     HRESULT (STDMETHODCALLTYPE *GetNode)(
    986         IMFTopology* This,
    987         WORD wIndex,
    988         IMFTopologyNode **ppNode);
    989 
    990     HRESULT (STDMETHODCALLTYPE *Clear)(
    991         IMFTopology* This);
    992 
    993     HRESULT (STDMETHODCALLTYPE *CloneFrom)(
    994         IMFTopology* This,
    995         IMFTopology *pTopology);
    996 
    997     HRESULT (STDMETHODCALLTYPE *GetNodeByID)(
    998         IMFTopology* This,
    999         TOPOID qwTopoNodeID,
   1000         IMFTopologyNode **ppNode);
   1001 
   1002     HRESULT (STDMETHODCALLTYPE *GetSourceNodeCollection)(
   1003         IMFTopology* This,
   1004         IMFCollection **ppCollection);
   1005 
   1006     HRESULT (STDMETHODCALLTYPE *GetOutputNodeCollection)(
   1007         IMFTopology* This,
   1008         IMFCollection **ppCollection);
   1009 
   1010     END_INTERFACE
   1011 } IMFTopologyVtbl;
   1012 interface IMFTopology {
   1013     CONST_VTBL IMFTopologyVtbl* lpVtbl;
   1014 };
   1015 
   1016 #ifdef COBJMACROS
   1017 #ifndef WIDL_C_INLINE_WRAPPERS
   1018 /*** IUnknown methods ***/
   1019 #define IMFTopology_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1020 #define IMFTopology_AddRef(This) (This)->lpVtbl->AddRef(This)
   1021 #define IMFTopology_Release(This) (This)->lpVtbl->Release(This)
   1022 /*** IMFAttributes methods ***/
   1023 #define IMFTopology_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   1024 #define IMFTopology_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   1025 #define IMFTopology_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   1026 #define IMFTopology_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   1027 #define IMFTopology_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   1028 #define IMFTopology_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   1029 #define IMFTopology_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   1030 #define IMFTopology_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   1031 #define IMFTopology_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   1032 #define IMFTopology_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   1033 #define IMFTopology_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   1034 #define IMFTopology_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   1035 #define IMFTopology_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   1036 #define IMFTopology_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   1037 #define IMFTopology_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   1038 #define IMFTopology_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   1039 #define IMFTopology_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   1040 #define IMFTopology_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   1041 #define IMFTopology_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   1042 #define IMFTopology_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   1043 #define IMFTopology_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   1044 #define IMFTopology_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   1045 #define IMFTopology_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   1046 #define IMFTopology_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   1047 #define IMFTopology_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   1048 #define IMFTopology_LockStore(This) (This)->lpVtbl->LockStore(This)
   1049 #define IMFTopology_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   1050 #define IMFTopology_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   1051 #define IMFTopology_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   1052 #define IMFTopology_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   1053 /*** IMFTopology methods ***/
   1054 #define IMFTopology_GetTopologyID(This,pID) (This)->lpVtbl->GetTopologyID(This,pID)
   1055 #define IMFTopology_AddNode(This,pNode) (This)->lpVtbl->AddNode(This,pNode)
   1056 #define IMFTopology_RemoveNode(This,pNode) (This)->lpVtbl->RemoveNode(This,pNode)
   1057 #define IMFTopology_GetNodeCount(This,pwNodes) (This)->lpVtbl->GetNodeCount(This,pwNodes)
   1058 #define IMFTopology_GetNode(This,wIndex,ppNode) (This)->lpVtbl->GetNode(This,wIndex,ppNode)
   1059 #define IMFTopology_Clear(This) (This)->lpVtbl->Clear(This)
   1060 #define IMFTopology_CloneFrom(This,pTopology) (This)->lpVtbl->CloneFrom(This,pTopology)
   1061 #define IMFTopology_GetNodeByID(This,qwTopoNodeID,ppNode) (This)->lpVtbl->GetNodeByID(This,qwTopoNodeID,ppNode)
   1062 #define IMFTopology_GetSourceNodeCollection(This,ppCollection) (This)->lpVtbl->GetSourceNodeCollection(This,ppCollection)
   1063 #define IMFTopology_GetOutputNodeCollection(This,ppCollection) (This)->lpVtbl->GetOutputNodeCollection(This,ppCollection)
   1064 #else
   1065 /*** IUnknown methods ***/
   1066 static FORCEINLINE HRESULT IMFTopology_QueryInterface(IMFTopology* This,REFIID riid,void **ppvObject) {
   1067     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1068 }
   1069 static FORCEINLINE ULONG IMFTopology_AddRef(IMFTopology* This) {
   1070     return This->lpVtbl->AddRef(This);
   1071 }
   1072 static FORCEINLINE ULONG IMFTopology_Release(IMFTopology* This) {
   1073     return This->lpVtbl->Release(This);
   1074 }
   1075 /*** IMFAttributes methods ***/
   1076 static FORCEINLINE HRESULT IMFTopology_GetItem(IMFTopology* This,REFGUID guidKey,PROPVARIANT *pValue) {
   1077     return This->lpVtbl->GetItem(This,guidKey,pValue);
   1078 }
   1079 static FORCEINLINE HRESULT IMFTopology_GetItemType(IMFTopology* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   1080     return This->lpVtbl->GetItemType(This,guidKey,pType);
   1081 }
   1082 static FORCEINLINE HRESULT IMFTopology_CompareItem(IMFTopology* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   1083     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   1084 }
   1085 static FORCEINLINE HRESULT IMFTopology_Compare(IMFTopology* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   1086     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   1087 }
   1088 static FORCEINLINE HRESULT IMFTopology_GetUINT32(IMFTopology* This,REFGUID guidKey,UINT32 *punValue) {
   1089     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   1090 }
   1091 static FORCEINLINE HRESULT IMFTopology_GetUINT64(IMFTopology* This,REFGUID guidKey,UINT64 *punValue) {
   1092     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   1093 }
   1094 static FORCEINLINE HRESULT IMFTopology_GetDouble(IMFTopology* This,REFGUID guidKey,double *pfValue) {
   1095     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   1096 }
   1097 static FORCEINLINE HRESULT IMFTopology_GetGUID(IMFTopology* This,REFGUID guidKey,GUID *pguidValue) {
   1098     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   1099 }
   1100 static FORCEINLINE HRESULT IMFTopology_GetStringLength(IMFTopology* This,REFGUID guidKey,UINT32 *pcchLength) {
   1101     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   1102 }
   1103 static FORCEINLINE HRESULT IMFTopology_GetString(IMFTopology* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   1104     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   1105 }
   1106 static FORCEINLINE HRESULT IMFTopology_GetAllocatedString(IMFTopology* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   1107     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   1108 }
   1109 static FORCEINLINE HRESULT IMFTopology_GetBlobSize(IMFTopology* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   1110     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   1111 }
   1112 static FORCEINLINE HRESULT IMFTopology_GetBlob(IMFTopology* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   1113     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   1114 }
   1115 static FORCEINLINE HRESULT IMFTopology_GetAllocatedBlob(IMFTopology* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   1116     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   1117 }
   1118 static FORCEINLINE HRESULT IMFTopology_GetUnknown(IMFTopology* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   1119     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   1120 }
   1121 static FORCEINLINE HRESULT IMFTopology_SetItem(IMFTopology* This,REFGUID guidKey,REFPROPVARIANT Value) {
   1122     return This->lpVtbl->SetItem(This,guidKey,Value);
   1123 }
   1124 static FORCEINLINE HRESULT IMFTopology_DeleteItem(IMFTopology* This,REFGUID guidKey) {
   1125     return This->lpVtbl->DeleteItem(This,guidKey);
   1126 }
   1127 static FORCEINLINE HRESULT IMFTopology_DeleteAllItems(IMFTopology* This) {
   1128     return This->lpVtbl->DeleteAllItems(This);
   1129 }
   1130 static FORCEINLINE HRESULT IMFTopology_SetUINT32(IMFTopology* This,REFGUID guidKey,UINT32 unValue) {
   1131     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   1132 }
   1133 static FORCEINLINE HRESULT IMFTopology_SetUINT64(IMFTopology* This,REFGUID guidKey,UINT64 unValue) {
   1134     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   1135 }
   1136 static FORCEINLINE HRESULT IMFTopology_SetDouble(IMFTopology* This,REFGUID guidKey,double fValue) {
   1137     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   1138 }
   1139 static FORCEINLINE HRESULT IMFTopology_SetGUID(IMFTopology* This,REFGUID guidKey,REFGUID guidValue) {
   1140     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   1141 }
   1142 static FORCEINLINE HRESULT IMFTopology_SetString(IMFTopology* This,REFGUID guidKey,LPCWSTR wszValue) {
   1143     return This->lpVtbl->SetString(This,guidKey,wszValue);
   1144 }
   1145 static FORCEINLINE HRESULT IMFTopology_SetBlob(IMFTopology* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   1146     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   1147 }
   1148 static FORCEINLINE HRESULT IMFTopology_SetUnknown(IMFTopology* This,REFGUID guidKey,IUnknown *pUnknown) {
   1149     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   1150 }
   1151 static FORCEINLINE HRESULT IMFTopology_LockStore(IMFTopology* This) {
   1152     return This->lpVtbl->LockStore(This);
   1153 }
   1154 static FORCEINLINE HRESULT IMFTopology_UnlockStore(IMFTopology* This) {
   1155     return This->lpVtbl->UnlockStore(This);
   1156 }
   1157 static FORCEINLINE HRESULT IMFTopology_GetCount(IMFTopology* This,UINT32 *pcItems) {
   1158     return This->lpVtbl->GetCount(This,pcItems);
   1159 }
   1160 static FORCEINLINE HRESULT IMFTopology_GetItemByIndex(IMFTopology* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   1161     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   1162 }
   1163 static FORCEINLINE HRESULT IMFTopology_CopyAllItems(IMFTopology* This,IMFAttributes *pDest) {
   1164     return This->lpVtbl->CopyAllItems(This,pDest);
   1165 }
   1166 /*** IMFTopology methods ***/
   1167 static FORCEINLINE HRESULT IMFTopology_GetTopologyID(IMFTopology* This,TOPOID *pID) {
   1168     return This->lpVtbl->GetTopologyID(This,pID);
   1169 }
   1170 static FORCEINLINE HRESULT IMFTopology_AddNode(IMFTopology* This,IMFTopologyNode *pNode) {
   1171     return This->lpVtbl->AddNode(This,pNode);
   1172 }
   1173 static FORCEINLINE HRESULT IMFTopology_RemoveNode(IMFTopology* This,IMFTopologyNode *pNode) {
   1174     return This->lpVtbl->RemoveNode(This,pNode);
   1175 }
   1176 static FORCEINLINE HRESULT IMFTopology_GetNodeCount(IMFTopology* This,WORD *pwNodes) {
   1177     return This->lpVtbl->GetNodeCount(This,pwNodes);
   1178 }
   1179 static FORCEINLINE HRESULT IMFTopology_GetNode(IMFTopology* This,WORD wIndex,IMFTopologyNode **ppNode) {
   1180     return This->lpVtbl->GetNode(This,wIndex,ppNode);
   1181 }
   1182 static FORCEINLINE HRESULT IMFTopology_Clear(IMFTopology* This) {
   1183     return This->lpVtbl->Clear(This);
   1184 }
   1185 static FORCEINLINE HRESULT IMFTopology_CloneFrom(IMFTopology* This,IMFTopology *pTopology) {
   1186     return This->lpVtbl->CloneFrom(This,pTopology);
   1187 }
   1188 static FORCEINLINE HRESULT IMFTopology_GetNodeByID(IMFTopology* This,TOPOID qwTopoNodeID,IMFTopologyNode **ppNode) {
   1189     return This->lpVtbl->GetNodeByID(This,qwTopoNodeID,ppNode);
   1190 }
   1191 static FORCEINLINE HRESULT IMFTopology_GetSourceNodeCollection(IMFTopology* This,IMFCollection **ppCollection) {
   1192     return This->lpVtbl->GetSourceNodeCollection(This,ppCollection);
   1193 }
   1194 static FORCEINLINE HRESULT IMFTopology_GetOutputNodeCollection(IMFTopology* This,IMFCollection **ppCollection) {
   1195     return This->lpVtbl->GetOutputNodeCollection(This,ppCollection);
   1196 }
   1197 #endif
   1198 #endif
   1199 
   1200 #endif
   1201 
   1202 HRESULT STDMETHODCALLTYPE IMFTopology_GetTopologyID_Proxy(
   1203     IMFTopology* This,
   1204     TOPOID *pID);
   1205 void __RPC_STUB IMFTopology_GetTopologyID_Stub(
   1206     IRpcStubBuffer* This,
   1207     IRpcChannelBuffer* pRpcChannelBuffer,
   1208     PRPC_MESSAGE pRpcMessage,
   1209     DWORD* pdwStubPhase);
   1210 HRESULT STDMETHODCALLTYPE IMFTopology_GetNodeCount_Proxy(
   1211     IMFTopology* This,
   1212     WORD *pwNodes);
   1213 void __RPC_STUB IMFTopology_GetNodeCount_Stub(
   1214     IRpcStubBuffer* This,
   1215     IRpcChannelBuffer* pRpcChannelBuffer,
   1216     PRPC_MESSAGE pRpcMessage,
   1217     DWORD* pdwStubPhase);
   1218 HRESULT STDMETHODCALLTYPE IMFTopology_GetNode_Proxy(
   1219     IMFTopology* This,
   1220     WORD wIndex,
   1221     IMFTopologyNode **ppNode);
   1222 void __RPC_STUB IMFTopology_GetNode_Stub(
   1223     IRpcStubBuffer* This,
   1224     IRpcChannelBuffer* pRpcChannelBuffer,
   1225     PRPC_MESSAGE pRpcMessage,
   1226     DWORD* pdwStubPhase);
   1227 HRESULT STDMETHODCALLTYPE IMFTopology_CloneFrom_Proxy(
   1228     IMFTopology* This,
   1229     IMFTopology *pTopology);
   1230 void __RPC_STUB IMFTopology_CloneFrom_Stub(
   1231     IRpcStubBuffer* This,
   1232     IRpcChannelBuffer* pRpcChannelBuffer,
   1233     PRPC_MESSAGE pRpcMessage,
   1234     DWORD* pdwStubPhase);
   1235 HRESULT STDMETHODCALLTYPE IMFTopology_GetNodeByID_Proxy(
   1236     IMFTopology* This,
   1237     TOPOID qwTopoNodeID,
   1238     IMFTopologyNode **ppNode);
   1239 void __RPC_STUB IMFTopology_GetNodeByID_Stub(
   1240     IRpcStubBuffer* This,
   1241     IRpcChannelBuffer* pRpcChannelBuffer,
   1242     PRPC_MESSAGE pRpcMessage,
   1243     DWORD* pdwStubPhase);
   1244 HRESULT STDMETHODCALLTYPE IMFTopology_GetSourceNodeCollection_Proxy(
   1245     IMFTopology* This,
   1246     IMFCollection **ppCollection);
   1247 void __RPC_STUB IMFTopology_GetSourceNodeCollection_Stub(
   1248     IRpcStubBuffer* This,
   1249     IRpcChannelBuffer* pRpcChannelBuffer,
   1250     PRPC_MESSAGE pRpcMessage,
   1251     DWORD* pdwStubPhase);
   1252 HRESULT STDMETHODCALLTYPE IMFTopology_GetOutputNodeCollection_Proxy(
   1253     IMFTopology* This,
   1254     IMFCollection **ppCollection);
   1255 void __RPC_STUB IMFTopology_GetOutputNodeCollection_Stub(
   1256     IRpcStubBuffer* This,
   1257     IRpcChannelBuffer* pRpcChannelBuffer,
   1258     PRPC_MESSAGE pRpcMessage,
   1259     DWORD* pdwStubPhase);
   1260 
   1261 #endif  /* __IMFTopology_INTERFACE_DEFINED__ */
   1262 
   1263 typedef LONGLONG MFTIME;
   1264 typedef enum _MF_CLOCK_STATE {
   1265     MFCLOCK_STATE_INVALID = 0,
   1266     MFCLOCK_STATE_RUNNING = 1,
   1267     MFCLOCK_STATE_STOPPED = 2,
   1268     MFCLOCK_STATE_PAUSED = 3
   1269 } MF_CLOCK_STATE;
   1270 typedef enum _MF_CLOCK_STATE MFCLOCK_STATE;
   1271 typedef struct _MFCLOCK_PROPERTIES {
   1272     UINT64 qwCorrelationRate;
   1273     GUID guidClockId;
   1274     DWORD dwClockFlags;
   1275     UINT64 qwClockFrequency;
   1276     DWORD dwClockTolerance;
   1277     DWORD dwClockJitter;
   1278 } MFCLOCK_PROPERTIES;
   1279 /*****************************************************************************
   1280  * IMFClock interface
   1281  */
   1282 #ifndef __IMFClock_INTERFACE_DEFINED__
   1283 #define __IMFClock_INTERFACE_DEFINED__
   1284 
   1285 DEFINE_GUID(IID_IMFClock, 0x2eb1e945, 0x18b8, 0x4139, 0x9b,0x1a, 0xd5,0xd5,0x84,0x81,0x85,0x30);
   1286 #if defined(__cplusplus) && !defined(CINTERFACE)
   1287 MIDL_INTERFACE("2eb1e945-18b8-4139-9b1a-d5d584818530")
   1288 IMFClock : public IUnknown
   1289 {
   1290     virtual HRESULT STDMETHODCALLTYPE GetClockCharacteristics(
   1291         DWORD *pdwCharacteristics) = 0;
   1292 
   1293     virtual HRESULT STDMETHODCALLTYPE GetCorrelatedTime(
   1294         DWORD dwReserved,
   1295         LONGLONG *pllClockTime,
   1296         MFTIME *phnsSystemTime) = 0;
   1297 
   1298     virtual HRESULT STDMETHODCALLTYPE GetContinuityKey(
   1299         DWORD *pdwContinuityKey) = 0;
   1300 
   1301     virtual HRESULT STDMETHODCALLTYPE GetState(
   1302         DWORD dwReserved,
   1303         MFCLOCK_STATE *peClockState) = 0;
   1304 
   1305     virtual HRESULT STDMETHODCALLTYPE GetProperties(
   1306         MFCLOCK_PROPERTIES *pClockProperties) = 0;
   1307 
   1308 };
   1309 #ifdef __CRT_UUID_DECL
   1310 __CRT_UUID_DECL(IMFClock, 0x2eb1e945, 0x18b8, 0x4139, 0x9b,0x1a, 0xd5,0xd5,0x84,0x81,0x85,0x30)
   1311 #endif
   1312 #else
   1313 typedef struct IMFClockVtbl {
   1314     BEGIN_INTERFACE
   1315 
   1316     /*** IUnknown methods ***/
   1317     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1318         IMFClock* This,
   1319         REFIID riid,
   1320         void **ppvObject);
   1321 
   1322     ULONG (STDMETHODCALLTYPE *AddRef)(
   1323         IMFClock* This);
   1324 
   1325     ULONG (STDMETHODCALLTYPE *Release)(
   1326         IMFClock* This);
   1327 
   1328     /*** IMFClock methods ***/
   1329     HRESULT (STDMETHODCALLTYPE *GetClockCharacteristics)(
   1330         IMFClock* This,
   1331         DWORD *pdwCharacteristics);
   1332 
   1333     HRESULT (STDMETHODCALLTYPE *GetCorrelatedTime)(
   1334         IMFClock* This,
   1335         DWORD dwReserved,
   1336         LONGLONG *pllClockTime,
   1337         MFTIME *phnsSystemTime);
   1338 
   1339     HRESULT (STDMETHODCALLTYPE *GetContinuityKey)(
   1340         IMFClock* This,
   1341         DWORD *pdwContinuityKey);
   1342 
   1343     HRESULT (STDMETHODCALLTYPE *GetState)(
   1344         IMFClock* This,
   1345         DWORD dwReserved,
   1346         MFCLOCK_STATE *peClockState);
   1347 
   1348     HRESULT (STDMETHODCALLTYPE *GetProperties)(
   1349         IMFClock* This,
   1350         MFCLOCK_PROPERTIES *pClockProperties);
   1351 
   1352     END_INTERFACE
   1353 } IMFClockVtbl;
   1354 interface IMFClock {
   1355     CONST_VTBL IMFClockVtbl* lpVtbl;
   1356 };
   1357 
   1358 #ifdef COBJMACROS
   1359 #ifndef WIDL_C_INLINE_WRAPPERS
   1360 /*** IUnknown methods ***/
   1361 #define IMFClock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1362 #define IMFClock_AddRef(This) (This)->lpVtbl->AddRef(This)
   1363 #define IMFClock_Release(This) (This)->lpVtbl->Release(This)
   1364 /*** IMFClock methods ***/
   1365 #define IMFClock_GetClockCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics)
   1366 #define IMFClock_GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime) (This)->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime)
   1367 #define IMFClock_GetContinuityKey(This,pdwContinuityKey) (This)->lpVtbl->GetContinuityKey(This,pdwContinuityKey)
   1368 #define IMFClock_GetState(This,dwReserved,peClockState) (This)->lpVtbl->GetState(This,dwReserved,peClockState)
   1369 #define IMFClock_GetProperties(This,pClockProperties) (This)->lpVtbl->GetProperties(This,pClockProperties)
   1370 #else
   1371 /*** IUnknown methods ***/
   1372 static FORCEINLINE HRESULT IMFClock_QueryInterface(IMFClock* This,REFIID riid,void **ppvObject) {
   1373     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1374 }
   1375 static FORCEINLINE ULONG IMFClock_AddRef(IMFClock* This) {
   1376     return This->lpVtbl->AddRef(This);
   1377 }
   1378 static FORCEINLINE ULONG IMFClock_Release(IMFClock* This) {
   1379     return This->lpVtbl->Release(This);
   1380 }
   1381 /*** IMFClock methods ***/
   1382 static FORCEINLINE HRESULT IMFClock_GetClockCharacteristics(IMFClock* This,DWORD *pdwCharacteristics) {
   1383     return This->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics);
   1384 }
   1385 static FORCEINLINE HRESULT IMFClock_GetCorrelatedTime(IMFClock* This,DWORD dwReserved,LONGLONG *pllClockTime,MFTIME *phnsSystemTime) {
   1386     return This->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime);
   1387 }
   1388 static FORCEINLINE HRESULT IMFClock_GetContinuityKey(IMFClock* This,DWORD *pdwContinuityKey) {
   1389     return This->lpVtbl->GetContinuityKey(This,pdwContinuityKey);
   1390 }
   1391 static FORCEINLINE HRESULT IMFClock_GetState(IMFClock* This,DWORD dwReserved,MFCLOCK_STATE *peClockState) {
   1392     return This->lpVtbl->GetState(This,dwReserved,peClockState);
   1393 }
   1394 static FORCEINLINE HRESULT IMFClock_GetProperties(IMFClock* This,MFCLOCK_PROPERTIES *pClockProperties) {
   1395     return This->lpVtbl->GetProperties(This,pClockProperties);
   1396 }
   1397 #endif
   1398 #endif
   1399 
   1400 #endif
   1401 
   1402 HRESULT STDMETHODCALLTYPE IMFClock_GetClockCharacteristics_Proxy(
   1403     IMFClock* This,
   1404     DWORD *pdwCharacteristics);
   1405 void __RPC_STUB IMFClock_GetClockCharacteristics_Stub(
   1406     IRpcStubBuffer* This,
   1407     IRpcChannelBuffer* pRpcChannelBuffer,
   1408     PRPC_MESSAGE pRpcMessage,
   1409     DWORD* pdwStubPhase);
   1410 HRESULT STDMETHODCALLTYPE IMFClock_GetCorrelatedTime_Proxy(
   1411     IMFClock* This,
   1412     DWORD dwReserved,
   1413     LONGLONG *pllClockTime,
   1414     MFTIME *phnsSystemTime);
   1415 void __RPC_STUB IMFClock_GetCorrelatedTime_Stub(
   1416     IRpcStubBuffer* This,
   1417     IRpcChannelBuffer* pRpcChannelBuffer,
   1418     PRPC_MESSAGE pRpcMessage,
   1419     DWORD* pdwStubPhase);
   1420 HRESULT STDMETHODCALLTYPE IMFClock_GetContinuityKey_Proxy(
   1421     IMFClock* This,
   1422     DWORD *pdwContinuityKey);
   1423 void __RPC_STUB IMFClock_GetContinuityKey_Stub(
   1424     IRpcStubBuffer* This,
   1425     IRpcChannelBuffer* pRpcChannelBuffer,
   1426     PRPC_MESSAGE pRpcMessage,
   1427     DWORD* pdwStubPhase);
   1428 HRESULT STDMETHODCALLTYPE IMFClock_GetState_Proxy(
   1429     IMFClock* This,
   1430     DWORD dwReserved,
   1431     MFCLOCK_STATE *peClockState);
   1432 void __RPC_STUB IMFClock_GetState_Stub(
   1433     IRpcStubBuffer* This,
   1434     IRpcChannelBuffer* pRpcChannelBuffer,
   1435     PRPC_MESSAGE pRpcMessage,
   1436     DWORD* pdwStubPhase);
   1437 HRESULT STDMETHODCALLTYPE IMFClock_GetProperties_Proxy(
   1438     IMFClock* This,
   1439     MFCLOCK_PROPERTIES *pClockProperties);
   1440 void __RPC_STUB IMFClock_GetProperties_Stub(
   1441     IRpcStubBuffer* This,
   1442     IRpcChannelBuffer* pRpcChannelBuffer,
   1443     PRPC_MESSAGE pRpcMessage,
   1444     DWORD* pdwStubPhase);
   1445 
   1446 #endif  /* __IMFClock_INTERFACE_DEFINED__ */
   1447 
   1448 #define SHA_HASH_LEN 20
   1449 #define STR_HASH_LEN (SHA_HASH_LEN*2+3)
   1450 typedef struct _MFRR_COMPONENT_HASH_INFO {
   1451   DWORD ulReason;
   1452   WCHAR rgHeaderHash[STR_HASH_LEN];
   1453   WCHAR rgPublicKeyHash[STR_HASH_LEN];
   1454   WCHAR wszName[MAX_PATH];
   1455 } MFRR_COMPONENT_HASH_INFO, *PMFRR_COMPONENT_HASH_INFO;
   1456 EXTERN_GUID(MF_PD_DURATION, 0x6c990d33,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a);
   1457 typedef enum _MF_CONNECT_METHOD {
   1458     MF_CONNECT_DIRECT = 0x0,
   1459     MF_CONNECT_ALLOW_CONVERTER = 0x1,
   1460     MF_CONNECT_ALLOW_DECODER = 0x3,
   1461     MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES = 0x4,
   1462     MF_CONNECT_AS_OPTIONAL = 0x10000,
   1463     MF_CONNECT_AS_OPTIONAL_BRANCH = 0x20000
   1464 } MF_CONNECT_METHOD;
   1465 /*****************************************************************************
   1466  * IMFMediaSession interface
   1467  */
   1468 #ifndef __IMFMediaSession_INTERFACE_DEFINED__
   1469 #define __IMFMediaSession_INTERFACE_DEFINED__
   1470 
   1471 DEFINE_GUID(IID_IMFMediaSession, 0x90377834, 0x21d0, 0x4dee, 0x82,0x14, 0xba,0x2e,0x3e,0x6c,0x11,0x27);
   1472 #if defined(__cplusplus) && !defined(CINTERFACE)
   1473 MIDL_INTERFACE("90377834-21d0-4dee-8214-ba2e3e6c1127")
   1474 IMFMediaSession : public IMFMediaEventGenerator
   1475 {
   1476     virtual HRESULT STDMETHODCALLTYPE SetTopology(
   1477         DWORD dwSetTopologyFlags,
   1478         IMFTopology *pTopology) = 0;
   1479 
   1480     virtual HRESULT STDMETHODCALLTYPE ClearTopologies(
   1481         ) = 0;
   1482 
   1483     virtual HRESULT STDMETHODCALLTYPE Start(
   1484         const GUID *pguidTimeFormat,
   1485         const PROPVARIANT *pvarStartPosition) = 0;
   1486 
   1487     virtual HRESULT STDMETHODCALLTYPE Pause(
   1488         ) = 0;
   1489 
   1490     virtual HRESULT STDMETHODCALLTYPE Stop(
   1491         ) = 0;
   1492 
   1493     virtual HRESULT STDMETHODCALLTYPE Close(
   1494         ) = 0;
   1495 
   1496     virtual HRESULT STDMETHODCALLTYPE Shutdown(
   1497         ) = 0;
   1498 
   1499     virtual HRESULT STDMETHODCALLTYPE GetClock(
   1500         IMFClock **ppClock) = 0;
   1501 
   1502     virtual HRESULT STDMETHODCALLTYPE GetSessionCapabilities(
   1503         DWORD *pdwCaps) = 0;
   1504 
   1505     virtual HRESULT STDMETHODCALLTYPE GetFullTopology(
   1506         DWORD dwGetFullTopologyFlags,
   1507         TOPOID TopoId,
   1508         IMFTopology **ppFullTopology) = 0;
   1509 
   1510 };
   1511 #ifdef __CRT_UUID_DECL
   1512 __CRT_UUID_DECL(IMFMediaSession, 0x90377834, 0x21d0, 0x4dee, 0x82,0x14, 0xba,0x2e,0x3e,0x6c,0x11,0x27)
   1513 #endif
   1514 #else
   1515 typedef struct IMFMediaSessionVtbl {
   1516     BEGIN_INTERFACE
   1517 
   1518     /*** IUnknown methods ***/
   1519     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1520         IMFMediaSession* This,
   1521         REFIID riid,
   1522         void **ppvObject);
   1523 
   1524     ULONG (STDMETHODCALLTYPE *AddRef)(
   1525         IMFMediaSession* This);
   1526 
   1527     ULONG (STDMETHODCALLTYPE *Release)(
   1528         IMFMediaSession* This);
   1529 
   1530     /*** IMFMediaEventGenerator methods ***/
   1531     HRESULT (STDMETHODCALLTYPE *GetEvent)(
   1532         IMFMediaSession* This,
   1533         DWORD dwFlags,
   1534         IMFMediaEvent **ppEvent);
   1535 
   1536     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
   1537         IMFMediaSession* This,
   1538         IMFAsyncCallback *pCallback,
   1539         IUnknown *punkState);
   1540 
   1541     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
   1542         IMFMediaSession* This,
   1543         IMFAsyncResult *pResult,
   1544         IMFMediaEvent **ppEvent);
   1545 
   1546     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
   1547         IMFMediaSession* This,
   1548         MediaEventType met,
   1549         REFGUID guidExtendedType,
   1550         HRESULT hrStatus,
   1551         const PROPVARIANT *pvValue);
   1552 
   1553     /*** IMFMediaSession methods ***/
   1554     HRESULT (STDMETHODCALLTYPE *SetTopology)(
   1555         IMFMediaSession* This,
   1556         DWORD dwSetTopologyFlags,
   1557         IMFTopology *pTopology);
   1558 
   1559     HRESULT (STDMETHODCALLTYPE *ClearTopologies)(
   1560         IMFMediaSession* This);
   1561 
   1562     HRESULT (STDMETHODCALLTYPE *Start)(
   1563         IMFMediaSession* This,
   1564         const GUID *pguidTimeFormat,
   1565         const PROPVARIANT *pvarStartPosition);
   1566 
   1567     HRESULT (STDMETHODCALLTYPE *Pause)(
   1568         IMFMediaSession* This);
   1569 
   1570     HRESULT (STDMETHODCALLTYPE *Stop)(
   1571         IMFMediaSession* This);
   1572 
   1573     HRESULT (STDMETHODCALLTYPE *Close)(
   1574         IMFMediaSession* This);
   1575 
   1576     HRESULT (STDMETHODCALLTYPE *Shutdown)(
   1577         IMFMediaSession* This);
   1578 
   1579     HRESULT (STDMETHODCALLTYPE *GetClock)(
   1580         IMFMediaSession* This,
   1581         IMFClock **ppClock);
   1582 
   1583     HRESULT (STDMETHODCALLTYPE *GetSessionCapabilities)(
   1584         IMFMediaSession* This,
   1585         DWORD *pdwCaps);
   1586 
   1587     HRESULT (STDMETHODCALLTYPE *GetFullTopology)(
   1588         IMFMediaSession* This,
   1589         DWORD dwGetFullTopologyFlags,
   1590         TOPOID TopoId,
   1591         IMFTopology **ppFullTopology);
   1592 
   1593     END_INTERFACE
   1594 } IMFMediaSessionVtbl;
   1595 interface IMFMediaSession {
   1596     CONST_VTBL IMFMediaSessionVtbl* lpVtbl;
   1597 };
   1598 
   1599 #ifdef COBJMACROS
   1600 #ifndef WIDL_C_INLINE_WRAPPERS
   1601 /*** IUnknown methods ***/
   1602 #define IMFMediaSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1603 #define IMFMediaSession_AddRef(This) (This)->lpVtbl->AddRef(This)
   1604 #define IMFMediaSession_Release(This) (This)->lpVtbl->Release(This)
   1605 /*** IMFMediaEventGenerator methods ***/
   1606 #define IMFMediaSession_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
   1607 #define IMFMediaSession_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
   1608 #define IMFMediaSession_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
   1609 #define IMFMediaSession_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
   1610 /*** IMFMediaSession methods ***/
   1611 #define IMFMediaSession_SetTopology(This,dwSetTopologyFlags,pTopology) (This)->lpVtbl->SetTopology(This,dwSetTopologyFlags,pTopology)
   1612 #define IMFMediaSession_ClearTopologies(This) (This)->lpVtbl->ClearTopologies(This)
   1613 #define IMFMediaSession_Start(This,pguidTimeFormat,pvarStartPosition) (This)->lpVtbl->Start(This,pguidTimeFormat,pvarStartPosition)
   1614 #define IMFMediaSession_Pause(This) (This)->lpVtbl->Pause(This)
   1615 #define IMFMediaSession_Stop(This) (This)->lpVtbl->Stop(This)
   1616 #define IMFMediaSession_Close(This) (This)->lpVtbl->Close(This)
   1617 #define IMFMediaSession_Shutdown(This) (This)->lpVtbl->Shutdown(This)
   1618 #define IMFMediaSession_GetClock(This,ppClock) (This)->lpVtbl->GetClock(This,ppClock)
   1619 #define IMFMediaSession_GetSessionCapabilities(This,pdwCaps) (This)->lpVtbl->GetSessionCapabilities(This,pdwCaps)
   1620 #define IMFMediaSession_GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology) (This)->lpVtbl->GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology)
   1621 #else
   1622 /*** IUnknown methods ***/
   1623 static FORCEINLINE HRESULT IMFMediaSession_QueryInterface(IMFMediaSession* This,REFIID riid,void **ppvObject) {
   1624     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1625 }
   1626 static FORCEINLINE ULONG IMFMediaSession_AddRef(IMFMediaSession* This) {
   1627     return This->lpVtbl->AddRef(This);
   1628 }
   1629 static FORCEINLINE ULONG IMFMediaSession_Release(IMFMediaSession* This) {
   1630     return This->lpVtbl->Release(This);
   1631 }
   1632 /*** IMFMediaEventGenerator methods ***/
   1633 static FORCEINLINE HRESULT IMFMediaSession_GetEvent(IMFMediaSession* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
   1634     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
   1635 }
   1636 static FORCEINLINE HRESULT IMFMediaSession_BeginGetEvent(IMFMediaSession* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
   1637     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
   1638 }
   1639 static FORCEINLINE HRESULT IMFMediaSession_EndGetEvent(IMFMediaSession* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
   1640     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
   1641 }
   1642 static FORCEINLINE HRESULT IMFMediaSession_QueueEvent(IMFMediaSession* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
   1643     return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
   1644 }
   1645 /*** IMFMediaSession methods ***/
   1646 static FORCEINLINE HRESULT IMFMediaSession_SetTopology(IMFMediaSession* This,DWORD dwSetTopologyFlags,IMFTopology *pTopology) {
   1647     return This->lpVtbl->SetTopology(This,dwSetTopologyFlags,pTopology);
   1648 }
   1649 static FORCEINLINE HRESULT IMFMediaSession_ClearTopologies(IMFMediaSession* This) {
   1650     return This->lpVtbl->ClearTopologies(This);
   1651 }
   1652 static FORCEINLINE HRESULT IMFMediaSession_Start(IMFMediaSession* This,const GUID *pguidTimeFormat,const PROPVARIANT *pvarStartPosition) {
   1653     return This->lpVtbl->Start(This,pguidTimeFormat,pvarStartPosition);
   1654 }
   1655 static FORCEINLINE HRESULT IMFMediaSession_Pause(IMFMediaSession* This) {
   1656     return This->lpVtbl->Pause(This);
   1657 }
   1658 static FORCEINLINE HRESULT IMFMediaSession_Stop(IMFMediaSession* This) {
   1659     return This->lpVtbl->Stop(This);
   1660 }
   1661 static FORCEINLINE HRESULT IMFMediaSession_Close(IMFMediaSession* This) {
   1662     return This->lpVtbl->Close(This);
   1663 }
   1664 static FORCEINLINE HRESULT IMFMediaSession_Shutdown(IMFMediaSession* This) {
   1665     return This->lpVtbl->Shutdown(This);
   1666 }
   1667 static FORCEINLINE HRESULT IMFMediaSession_GetClock(IMFMediaSession* This,IMFClock **ppClock) {
   1668     return This->lpVtbl->GetClock(This,ppClock);
   1669 }
   1670 static FORCEINLINE HRESULT IMFMediaSession_GetSessionCapabilities(IMFMediaSession* This,DWORD *pdwCaps) {
   1671     return This->lpVtbl->GetSessionCapabilities(This,pdwCaps);
   1672 }
   1673 static FORCEINLINE HRESULT IMFMediaSession_GetFullTopology(IMFMediaSession* This,DWORD dwGetFullTopologyFlags,TOPOID TopoId,IMFTopology **ppFullTopology) {
   1674     return This->lpVtbl->GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology);
   1675 }
   1676 #endif
   1677 #endif
   1678 
   1679 #endif
   1680 
   1681 HRESULT STDMETHODCALLTYPE IMFMediaSession_SetTopology_Proxy(
   1682     IMFMediaSession* This,
   1683     DWORD dwSetTopologyFlags,
   1684     IMFTopology *pTopology);
   1685 void __RPC_STUB IMFMediaSession_SetTopology_Stub(
   1686     IRpcStubBuffer* This,
   1687     IRpcChannelBuffer* pRpcChannelBuffer,
   1688     PRPC_MESSAGE pRpcMessage,
   1689     DWORD* pdwStubPhase);
   1690 HRESULT STDMETHODCALLTYPE IMFMediaSession_ClearTopologies_Proxy(
   1691     IMFMediaSession* This);
   1692 void __RPC_STUB IMFMediaSession_ClearTopologies_Stub(
   1693     IRpcStubBuffer* This,
   1694     IRpcChannelBuffer* pRpcChannelBuffer,
   1695     PRPC_MESSAGE pRpcMessage,
   1696     DWORD* pdwStubPhase);
   1697 HRESULT STDMETHODCALLTYPE IMFMediaSession_Start_Proxy(
   1698     IMFMediaSession* This,
   1699     const GUID *pguidTimeFormat,
   1700     const PROPVARIANT *pvarStartPosition);
   1701 void __RPC_STUB IMFMediaSession_Start_Stub(
   1702     IRpcStubBuffer* This,
   1703     IRpcChannelBuffer* pRpcChannelBuffer,
   1704     PRPC_MESSAGE pRpcMessage,
   1705     DWORD* pdwStubPhase);
   1706 HRESULT STDMETHODCALLTYPE IMFMediaSession_Pause_Proxy(
   1707     IMFMediaSession* This);
   1708 void __RPC_STUB IMFMediaSession_Pause_Stub(
   1709     IRpcStubBuffer* This,
   1710     IRpcChannelBuffer* pRpcChannelBuffer,
   1711     PRPC_MESSAGE pRpcMessage,
   1712     DWORD* pdwStubPhase);
   1713 HRESULT STDMETHODCALLTYPE IMFMediaSession_Stop_Proxy(
   1714     IMFMediaSession* This);
   1715 void __RPC_STUB IMFMediaSession_Stop_Stub(
   1716     IRpcStubBuffer* This,
   1717     IRpcChannelBuffer* pRpcChannelBuffer,
   1718     PRPC_MESSAGE pRpcMessage,
   1719     DWORD* pdwStubPhase);
   1720 HRESULT STDMETHODCALLTYPE IMFMediaSession_Close_Proxy(
   1721     IMFMediaSession* This);
   1722 void __RPC_STUB IMFMediaSession_Close_Stub(
   1723     IRpcStubBuffer* This,
   1724     IRpcChannelBuffer* pRpcChannelBuffer,
   1725     PRPC_MESSAGE pRpcMessage,
   1726     DWORD* pdwStubPhase);
   1727 HRESULT STDMETHODCALLTYPE IMFMediaSession_Shutdown_Proxy(
   1728     IMFMediaSession* This);
   1729 void __RPC_STUB IMFMediaSession_Shutdown_Stub(
   1730     IRpcStubBuffer* This,
   1731     IRpcChannelBuffer* pRpcChannelBuffer,
   1732     PRPC_MESSAGE pRpcMessage,
   1733     DWORD* pdwStubPhase);
   1734 HRESULT STDMETHODCALLTYPE IMFMediaSession_GetClock_Proxy(
   1735     IMFMediaSession* This,
   1736     IMFClock **ppClock);
   1737 void __RPC_STUB IMFMediaSession_GetClock_Stub(
   1738     IRpcStubBuffer* This,
   1739     IRpcChannelBuffer* pRpcChannelBuffer,
   1740     PRPC_MESSAGE pRpcMessage,
   1741     DWORD* pdwStubPhase);
   1742 HRESULT STDMETHODCALLTYPE IMFMediaSession_GetSessionCapabilities_Proxy(
   1743     IMFMediaSession* This,
   1744     DWORD *pdwCaps);
   1745 void __RPC_STUB IMFMediaSession_GetSessionCapabilities_Stub(
   1746     IRpcStubBuffer* This,
   1747     IRpcChannelBuffer* pRpcChannelBuffer,
   1748     PRPC_MESSAGE pRpcMessage,
   1749     DWORD* pdwStubPhase);
   1750 HRESULT STDMETHODCALLTYPE IMFMediaSession_GetFullTopology_Proxy(
   1751     IMFMediaSession* This,
   1752     DWORD dwGetFullTopologyFlags,
   1753     TOPOID TopoId,
   1754     IMFTopology **ppFullTopology);
   1755 void __RPC_STUB IMFMediaSession_GetFullTopology_Stub(
   1756     IRpcStubBuffer* This,
   1757     IRpcChannelBuffer* pRpcChannelBuffer,
   1758     PRPC_MESSAGE pRpcMessage,
   1759     DWORD* pdwStubPhase);
   1760 
   1761 #endif  /* __IMFMediaSession_INTERFACE_DEFINED__ */
   1762 
   1763 /*****************************************************************************
   1764  * IMFMediaTypeHandler interface
   1765  */
   1766 #ifndef __IMFMediaTypeHandler_INTERFACE_DEFINED__
   1767 #define __IMFMediaTypeHandler_INTERFACE_DEFINED__
   1768 
   1769 DEFINE_GUID(IID_IMFMediaTypeHandler, 0xe93dcf6c, 0x4b07, 0x4e1e, 0x81,0x23, 0xaa,0x16,0xed,0x6e,0xad,0xf5);
   1770 #if defined(__cplusplus) && !defined(CINTERFACE)
   1771 MIDL_INTERFACE("e93dcf6c-4b07-4e1e-8123-aa16ed6eadf5")
   1772 IMFMediaTypeHandler : public IUnknown
   1773 {
   1774     virtual HRESULT STDMETHODCALLTYPE IsMediaTypeSupported(
   1775         IMFMediaType *pMediaType,
   1776         IMFMediaType **ppMediaType) = 0;
   1777 
   1778     virtual HRESULT STDMETHODCALLTYPE GetMediaTypeCount(
   1779         DWORD *pdwTypeCount) = 0;
   1780 
   1781     virtual HRESULT STDMETHODCALLTYPE GetMediaTypeByIndex(
   1782         DWORD dwIndex,
   1783         IMFMediaType **ppType) = 0;
   1784 
   1785     virtual HRESULT STDMETHODCALLTYPE SetCurrentMediaType(
   1786         IMFMediaType *pMediaType) = 0;
   1787 
   1788     virtual HRESULT STDMETHODCALLTYPE GetCurrentMediaType(
   1789         IMFMediaType **ppMediaType) = 0;
   1790 
   1791     virtual HRESULT STDMETHODCALLTYPE GetMajorType(
   1792         GUID *pguidMajorType) = 0;
   1793 
   1794 };
   1795 #ifdef __CRT_UUID_DECL
   1796 __CRT_UUID_DECL(IMFMediaTypeHandler, 0xe93dcf6c, 0x4b07, 0x4e1e, 0x81,0x23, 0xaa,0x16,0xed,0x6e,0xad,0xf5)
   1797 #endif
   1798 #else
   1799 typedef struct IMFMediaTypeHandlerVtbl {
   1800     BEGIN_INTERFACE
   1801 
   1802     /*** IUnknown methods ***/
   1803     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1804         IMFMediaTypeHandler* This,
   1805         REFIID riid,
   1806         void **ppvObject);
   1807 
   1808     ULONG (STDMETHODCALLTYPE *AddRef)(
   1809         IMFMediaTypeHandler* This);
   1810 
   1811     ULONG (STDMETHODCALLTYPE *Release)(
   1812         IMFMediaTypeHandler* This);
   1813 
   1814     /*** IMFMediaTypeHandler methods ***/
   1815     HRESULT (STDMETHODCALLTYPE *IsMediaTypeSupported)(
   1816         IMFMediaTypeHandler* This,
   1817         IMFMediaType *pMediaType,
   1818         IMFMediaType **ppMediaType);
   1819 
   1820     HRESULT (STDMETHODCALLTYPE *GetMediaTypeCount)(
   1821         IMFMediaTypeHandler* This,
   1822         DWORD *pdwTypeCount);
   1823 
   1824     HRESULT (STDMETHODCALLTYPE *GetMediaTypeByIndex)(
   1825         IMFMediaTypeHandler* This,
   1826         DWORD dwIndex,
   1827         IMFMediaType **ppType);
   1828 
   1829     HRESULT (STDMETHODCALLTYPE *SetCurrentMediaType)(
   1830         IMFMediaTypeHandler* This,
   1831         IMFMediaType *pMediaType);
   1832 
   1833     HRESULT (STDMETHODCALLTYPE *GetCurrentMediaType)(
   1834         IMFMediaTypeHandler* This,
   1835         IMFMediaType **ppMediaType);
   1836 
   1837     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
   1838         IMFMediaTypeHandler* This,
   1839         GUID *pguidMajorType);
   1840 
   1841     END_INTERFACE
   1842 } IMFMediaTypeHandlerVtbl;
   1843 interface IMFMediaTypeHandler {
   1844     CONST_VTBL IMFMediaTypeHandlerVtbl* lpVtbl;
   1845 };
   1846 
   1847 #ifdef COBJMACROS
   1848 #ifndef WIDL_C_INLINE_WRAPPERS
   1849 /*** IUnknown methods ***/
   1850 #define IMFMediaTypeHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1851 #define IMFMediaTypeHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
   1852 #define IMFMediaTypeHandler_Release(This) (This)->lpVtbl->Release(This)
   1853 /*** IMFMediaTypeHandler methods ***/
   1854 #define IMFMediaTypeHandler_IsMediaTypeSupported(This,pMediaType,ppMediaType) (This)->lpVtbl->IsMediaTypeSupported(This,pMediaType,ppMediaType)
   1855 #define IMFMediaTypeHandler_GetMediaTypeCount(This,pdwTypeCount) (This)->lpVtbl->GetMediaTypeCount(This,pdwTypeCount)
   1856 #define IMFMediaTypeHandler_GetMediaTypeByIndex(This,dwIndex,ppType) (This)->lpVtbl->GetMediaTypeByIndex(This,dwIndex,ppType)
   1857 #define IMFMediaTypeHandler_SetCurrentMediaType(This,pMediaType) (This)->lpVtbl->SetCurrentMediaType(This,pMediaType)
   1858 #define IMFMediaTypeHandler_GetCurrentMediaType(This,ppMediaType) (This)->lpVtbl->GetCurrentMediaType(This,ppMediaType)
   1859 #define IMFMediaTypeHandler_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
   1860 #else
   1861 /*** IUnknown methods ***/
   1862 static FORCEINLINE HRESULT IMFMediaTypeHandler_QueryInterface(IMFMediaTypeHandler* This,REFIID riid,void **ppvObject) {
   1863     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1864 }
   1865 static FORCEINLINE ULONG IMFMediaTypeHandler_AddRef(IMFMediaTypeHandler* This) {
   1866     return This->lpVtbl->AddRef(This);
   1867 }
   1868 static FORCEINLINE ULONG IMFMediaTypeHandler_Release(IMFMediaTypeHandler* This) {
   1869     return This->lpVtbl->Release(This);
   1870 }
   1871 /*** IMFMediaTypeHandler methods ***/
   1872 static FORCEINLINE HRESULT IMFMediaTypeHandler_IsMediaTypeSupported(IMFMediaTypeHandler* This,IMFMediaType *pMediaType,IMFMediaType **ppMediaType) {
   1873     return This->lpVtbl->IsMediaTypeSupported(This,pMediaType,ppMediaType);
   1874 }
   1875 static FORCEINLINE HRESULT IMFMediaTypeHandler_GetMediaTypeCount(IMFMediaTypeHandler* This,DWORD *pdwTypeCount) {
   1876     return This->lpVtbl->GetMediaTypeCount(This,pdwTypeCount);
   1877 }
   1878 static FORCEINLINE HRESULT IMFMediaTypeHandler_GetMediaTypeByIndex(IMFMediaTypeHandler* This,DWORD dwIndex,IMFMediaType **ppType) {
   1879     return This->lpVtbl->GetMediaTypeByIndex(This,dwIndex,ppType);
   1880 }
   1881 static FORCEINLINE HRESULT IMFMediaTypeHandler_SetCurrentMediaType(IMFMediaTypeHandler* This,IMFMediaType *pMediaType) {
   1882     return This->lpVtbl->SetCurrentMediaType(This,pMediaType);
   1883 }
   1884 static FORCEINLINE HRESULT IMFMediaTypeHandler_GetCurrentMediaType(IMFMediaTypeHandler* This,IMFMediaType **ppMediaType) {
   1885     return This->lpVtbl->GetCurrentMediaType(This,ppMediaType);
   1886 }
   1887 static FORCEINLINE HRESULT IMFMediaTypeHandler_GetMajorType(IMFMediaTypeHandler* This,GUID *pguidMajorType) {
   1888     return This->lpVtbl->GetMajorType(This,pguidMajorType);
   1889 }
   1890 #endif
   1891 #endif
   1892 
   1893 #endif
   1894 
   1895 HRESULT STDMETHODCALLTYPE IMFMediaTypeHandler_RemoteGetCurrentMediaType_Proxy(
   1896     IMFMediaTypeHandler* This,
   1897     BYTE **ppbData,
   1898     DWORD *pcbData);
   1899 void __RPC_STUB IMFMediaTypeHandler_RemoteGetCurrentMediaType_Stub(
   1900     IRpcStubBuffer* This,
   1901     IRpcChannelBuffer* pRpcChannelBuffer,
   1902     PRPC_MESSAGE pRpcMessage,
   1903     DWORD* pdwStubPhase);
   1904 HRESULT STDMETHODCALLTYPE IMFMediaTypeHandler_GetMajorType_Proxy(
   1905     IMFMediaTypeHandler* This,
   1906     GUID *pguidMajorType);
   1907 void __RPC_STUB IMFMediaTypeHandler_GetMajorType_Stub(
   1908     IRpcStubBuffer* This,
   1909     IRpcChannelBuffer* pRpcChannelBuffer,
   1910     PRPC_MESSAGE pRpcMessage,
   1911     DWORD* pdwStubPhase);
   1912 HRESULT CALLBACK IMFMediaTypeHandler_GetCurrentMediaType_Proxy(
   1913     IMFMediaTypeHandler* This,
   1914     IMFMediaType **ppMediaType);
   1915 HRESULT __RPC_STUB IMFMediaTypeHandler_GetCurrentMediaType_Stub(
   1916     IMFMediaTypeHandler* This,
   1917     BYTE **ppbData,
   1918     DWORD *pcbData);
   1919 
   1920 #endif  /* __IMFMediaTypeHandler_INTERFACE_DEFINED__ */
   1921 
   1922 /*****************************************************************************
   1923  * IMFStreamDescriptor interface
   1924  */
   1925 #ifndef __IMFStreamDescriptor_INTERFACE_DEFINED__
   1926 #define __IMFStreamDescriptor_INTERFACE_DEFINED__
   1927 
   1928 DEFINE_GUID(IID_IMFStreamDescriptor, 0x56c03d9c, 0x9dbb, 0x45f5, 0xab,0x4b, 0xd8,0x0f,0x47,0xc0,0x59,0x38);
   1929 #if defined(__cplusplus) && !defined(CINTERFACE)
   1930 MIDL_INTERFACE("56c03d9c-9dbb-45f5-ab4b-d80f47c05938")
   1931 IMFStreamDescriptor : public IMFAttributes
   1932 {
   1933     virtual HRESULT STDMETHODCALLTYPE GetStreamIdentifier(
   1934         DWORD *pdwStreamIdentifier) = 0;
   1935 
   1936     virtual HRESULT STDMETHODCALLTYPE GetMediaTypeHandler(
   1937         IMFMediaTypeHandler **ppMediaTypeHandler) = 0;
   1938 
   1939 };
   1940 #ifdef __CRT_UUID_DECL
   1941 __CRT_UUID_DECL(IMFStreamDescriptor, 0x56c03d9c, 0x9dbb, 0x45f5, 0xab,0x4b, 0xd8,0x0f,0x47,0xc0,0x59,0x38)
   1942 #endif
   1943 #else
   1944 typedef struct IMFStreamDescriptorVtbl {
   1945     BEGIN_INTERFACE
   1946 
   1947     /*** IUnknown methods ***/
   1948     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1949         IMFStreamDescriptor* This,
   1950         REFIID riid,
   1951         void **ppvObject);
   1952 
   1953     ULONG (STDMETHODCALLTYPE *AddRef)(
   1954         IMFStreamDescriptor* This);
   1955 
   1956     ULONG (STDMETHODCALLTYPE *Release)(
   1957         IMFStreamDescriptor* This);
   1958 
   1959     /*** IMFAttributes methods ***/
   1960     HRESULT (STDMETHODCALLTYPE *GetItem)(
   1961         IMFStreamDescriptor* This,
   1962         REFGUID guidKey,
   1963         PROPVARIANT *pValue);
   1964 
   1965     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   1966         IMFStreamDescriptor* This,
   1967         REFGUID guidKey,
   1968         MF_ATTRIBUTE_TYPE *pType);
   1969 
   1970     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   1971         IMFStreamDescriptor* This,
   1972         REFGUID guidKey,
   1973         REFPROPVARIANT Value,
   1974         WINBOOL *pbResult);
   1975 
   1976     HRESULT (STDMETHODCALLTYPE *Compare)(
   1977         IMFStreamDescriptor* This,
   1978         IMFAttributes *pTheirs,
   1979         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   1980         WINBOOL *pbResult);
   1981 
   1982     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   1983         IMFStreamDescriptor* This,
   1984         REFGUID guidKey,
   1985         UINT32 *punValue);
   1986 
   1987     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   1988         IMFStreamDescriptor* This,
   1989         REFGUID guidKey,
   1990         UINT64 *punValue);
   1991 
   1992     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   1993         IMFStreamDescriptor* This,
   1994         REFGUID guidKey,
   1995         double *pfValue);
   1996 
   1997     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   1998         IMFStreamDescriptor* This,
   1999         REFGUID guidKey,
   2000         GUID *pguidValue);
   2001 
   2002     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   2003         IMFStreamDescriptor* This,
   2004         REFGUID guidKey,
   2005         UINT32 *pcchLength);
   2006 
   2007     HRESULT (STDMETHODCALLTYPE *GetString)(
   2008         IMFStreamDescriptor* This,
   2009         REFGUID guidKey,
   2010         LPWSTR pwszValue,
   2011         UINT32 cchBufSize,
   2012         UINT32 *pcchLength);
   2013 
   2014     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   2015         IMFStreamDescriptor* This,
   2016         REFGUID guidKey,
   2017         LPWSTR *ppwszValue,
   2018         UINT32 *pcchLength);
   2019 
   2020     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   2021         IMFStreamDescriptor* This,
   2022         REFGUID guidKey,
   2023         UINT32 *pcbBlobSize);
   2024 
   2025     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   2026         IMFStreamDescriptor* This,
   2027         REFGUID guidKey,
   2028         UINT8 *pBuf,
   2029         UINT32 cbBufSize,
   2030         UINT32 *pcbBlobSize);
   2031 
   2032     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   2033         IMFStreamDescriptor* This,
   2034         REFGUID guidKey,
   2035         UINT8 **ppBuf,
   2036         UINT32 *pcbSize);
   2037 
   2038     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   2039         IMFStreamDescriptor* This,
   2040         REFGUID guidKey,
   2041         REFIID riid,
   2042         LPVOID *ppv);
   2043 
   2044     HRESULT (STDMETHODCALLTYPE *SetItem)(
   2045         IMFStreamDescriptor* This,
   2046         REFGUID guidKey,
   2047         REFPROPVARIANT Value);
   2048 
   2049     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   2050         IMFStreamDescriptor* This,
   2051         REFGUID guidKey);
   2052 
   2053     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   2054         IMFStreamDescriptor* This);
   2055 
   2056     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   2057         IMFStreamDescriptor* This,
   2058         REFGUID guidKey,
   2059         UINT32 unValue);
   2060 
   2061     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   2062         IMFStreamDescriptor* This,
   2063         REFGUID guidKey,
   2064         UINT64 unValue);
   2065 
   2066     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   2067         IMFStreamDescriptor* This,
   2068         REFGUID guidKey,
   2069         double fValue);
   2070 
   2071     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   2072         IMFStreamDescriptor* This,
   2073         REFGUID guidKey,
   2074         REFGUID guidValue);
   2075 
   2076     HRESULT (STDMETHODCALLTYPE *SetString)(
   2077         IMFStreamDescriptor* This,
   2078         REFGUID guidKey,
   2079         LPCWSTR wszValue);
   2080 
   2081     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   2082         IMFStreamDescriptor* This,
   2083         REFGUID guidKey,
   2084         const UINT8 *pBuf,
   2085         UINT32 cbBufSize);
   2086 
   2087     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   2088         IMFStreamDescriptor* This,
   2089         REFGUID guidKey,
   2090         IUnknown *pUnknown);
   2091 
   2092     HRESULT (STDMETHODCALLTYPE *LockStore)(
   2093         IMFStreamDescriptor* This);
   2094 
   2095     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   2096         IMFStreamDescriptor* This);
   2097 
   2098     HRESULT (STDMETHODCALLTYPE *GetCount)(
   2099         IMFStreamDescriptor* This,
   2100         UINT32 *pcItems);
   2101 
   2102     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   2103         IMFStreamDescriptor* This,
   2104         UINT32 unIndex,
   2105         GUID *pguidKey,
   2106         PROPVARIANT *pValue);
   2107 
   2108     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   2109         IMFStreamDescriptor* This,
   2110         IMFAttributes *pDest);
   2111 
   2112     /*** IMFStreamDescriptor methods ***/
   2113     HRESULT (STDMETHODCALLTYPE *GetStreamIdentifier)(
   2114         IMFStreamDescriptor* This,
   2115         DWORD *pdwStreamIdentifier);
   2116 
   2117     HRESULT (STDMETHODCALLTYPE *GetMediaTypeHandler)(
   2118         IMFStreamDescriptor* This,
   2119         IMFMediaTypeHandler **ppMediaTypeHandler);
   2120 
   2121     END_INTERFACE
   2122 } IMFStreamDescriptorVtbl;
   2123 interface IMFStreamDescriptor {
   2124     CONST_VTBL IMFStreamDescriptorVtbl* lpVtbl;
   2125 };
   2126 
   2127 #ifdef COBJMACROS
   2128 #ifndef WIDL_C_INLINE_WRAPPERS
   2129 /*** IUnknown methods ***/
   2130 #define IMFStreamDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2131 #define IMFStreamDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
   2132 #define IMFStreamDescriptor_Release(This) (This)->lpVtbl->Release(This)
   2133 /*** IMFAttributes methods ***/
   2134 #define IMFStreamDescriptor_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   2135 #define IMFStreamDescriptor_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   2136 #define IMFStreamDescriptor_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   2137 #define IMFStreamDescriptor_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   2138 #define IMFStreamDescriptor_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   2139 #define IMFStreamDescriptor_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   2140 #define IMFStreamDescriptor_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   2141 #define IMFStreamDescriptor_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   2142 #define IMFStreamDescriptor_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   2143 #define IMFStreamDescriptor_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   2144 #define IMFStreamDescriptor_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   2145 #define IMFStreamDescriptor_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   2146 #define IMFStreamDescriptor_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   2147 #define IMFStreamDescriptor_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   2148 #define IMFStreamDescriptor_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   2149 #define IMFStreamDescriptor_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   2150 #define IMFStreamDescriptor_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   2151 #define IMFStreamDescriptor_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   2152 #define IMFStreamDescriptor_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   2153 #define IMFStreamDescriptor_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   2154 #define IMFStreamDescriptor_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   2155 #define IMFStreamDescriptor_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   2156 #define IMFStreamDescriptor_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   2157 #define IMFStreamDescriptor_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   2158 #define IMFStreamDescriptor_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   2159 #define IMFStreamDescriptor_LockStore(This) (This)->lpVtbl->LockStore(This)
   2160 #define IMFStreamDescriptor_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   2161 #define IMFStreamDescriptor_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   2162 #define IMFStreamDescriptor_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   2163 #define IMFStreamDescriptor_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   2164 /*** IMFStreamDescriptor methods ***/
   2165 #define IMFStreamDescriptor_GetStreamIdentifier(This,pdwStreamIdentifier) (This)->lpVtbl->GetStreamIdentifier(This,pdwStreamIdentifier)
   2166 #define IMFStreamDescriptor_GetMediaTypeHandler(This,ppMediaTypeHandler) (This)->lpVtbl->GetMediaTypeHandler(This,ppMediaTypeHandler)
   2167 #else
   2168 /*** IUnknown methods ***/
   2169 static FORCEINLINE HRESULT IMFStreamDescriptor_QueryInterface(IMFStreamDescriptor* This,REFIID riid,void **ppvObject) {
   2170     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2171 }
   2172 static FORCEINLINE ULONG IMFStreamDescriptor_AddRef(IMFStreamDescriptor* This) {
   2173     return This->lpVtbl->AddRef(This);
   2174 }
   2175 static FORCEINLINE ULONG IMFStreamDescriptor_Release(IMFStreamDescriptor* This) {
   2176     return This->lpVtbl->Release(This);
   2177 }
   2178 /*** IMFAttributes methods ***/
   2179 static FORCEINLINE HRESULT IMFStreamDescriptor_GetItem(IMFStreamDescriptor* This,REFGUID guidKey,PROPVARIANT *pValue) {
   2180     return This->lpVtbl->GetItem(This,guidKey,pValue);
   2181 }
   2182 static FORCEINLINE HRESULT IMFStreamDescriptor_GetItemType(IMFStreamDescriptor* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   2183     return This->lpVtbl->GetItemType(This,guidKey,pType);
   2184 }
   2185 static FORCEINLINE HRESULT IMFStreamDescriptor_CompareItem(IMFStreamDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   2186     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   2187 }
   2188 static FORCEINLINE HRESULT IMFStreamDescriptor_Compare(IMFStreamDescriptor* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   2189     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   2190 }
   2191 static FORCEINLINE HRESULT IMFStreamDescriptor_GetUINT32(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *punValue) {
   2192     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   2193 }
   2194 static FORCEINLINE HRESULT IMFStreamDescriptor_GetUINT64(IMFStreamDescriptor* This,REFGUID guidKey,UINT64 *punValue) {
   2195     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   2196 }
   2197 static FORCEINLINE HRESULT IMFStreamDescriptor_GetDouble(IMFStreamDescriptor* This,REFGUID guidKey,double *pfValue) {
   2198     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   2199 }
   2200 static FORCEINLINE HRESULT IMFStreamDescriptor_GetGUID(IMFStreamDescriptor* This,REFGUID guidKey,GUID *pguidValue) {
   2201     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   2202 }
   2203 static FORCEINLINE HRESULT IMFStreamDescriptor_GetStringLength(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *pcchLength) {
   2204     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   2205 }
   2206 static FORCEINLINE HRESULT IMFStreamDescriptor_GetString(IMFStreamDescriptor* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   2207     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   2208 }
   2209 static FORCEINLINE HRESULT IMFStreamDescriptor_GetAllocatedString(IMFStreamDescriptor* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   2210     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   2211 }
   2212 static FORCEINLINE HRESULT IMFStreamDescriptor_GetBlobSize(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   2213     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   2214 }
   2215 static FORCEINLINE HRESULT IMFStreamDescriptor_GetBlob(IMFStreamDescriptor* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   2216     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   2217 }
   2218 static FORCEINLINE HRESULT IMFStreamDescriptor_GetAllocatedBlob(IMFStreamDescriptor* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   2219     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   2220 }
   2221 static FORCEINLINE HRESULT IMFStreamDescriptor_GetUnknown(IMFStreamDescriptor* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   2222     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   2223 }
   2224 static FORCEINLINE HRESULT IMFStreamDescriptor_SetItem(IMFStreamDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value) {
   2225     return This->lpVtbl->SetItem(This,guidKey,Value);
   2226 }
   2227 static FORCEINLINE HRESULT IMFStreamDescriptor_DeleteItem(IMFStreamDescriptor* This,REFGUID guidKey) {
   2228     return This->lpVtbl->DeleteItem(This,guidKey);
   2229 }
   2230 static FORCEINLINE HRESULT IMFStreamDescriptor_DeleteAllItems(IMFStreamDescriptor* This) {
   2231     return This->lpVtbl->DeleteAllItems(This);
   2232 }
   2233 static FORCEINLINE HRESULT IMFStreamDescriptor_SetUINT32(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 unValue) {
   2234     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   2235 }
   2236 static FORCEINLINE HRESULT IMFStreamDescriptor_SetUINT64(IMFStreamDescriptor* This,REFGUID guidKey,UINT64 unValue) {
   2237     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   2238 }
   2239 static FORCEINLINE HRESULT IMFStreamDescriptor_SetDouble(IMFStreamDescriptor* This,REFGUID guidKey,double fValue) {
   2240     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   2241 }
   2242 static FORCEINLINE HRESULT IMFStreamDescriptor_SetGUID(IMFStreamDescriptor* This,REFGUID guidKey,REFGUID guidValue) {
   2243     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   2244 }
   2245 static FORCEINLINE HRESULT IMFStreamDescriptor_SetString(IMFStreamDescriptor* This,REFGUID guidKey,LPCWSTR wszValue) {
   2246     return This->lpVtbl->SetString(This,guidKey,wszValue);
   2247 }
   2248 static FORCEINLINE HRESULT IMFStreamDescriptor_SetBlob(IMFStreamDescriptor* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   2249     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   2250 }
   2251 static FORCEINLINE HRESULT IMFStreamDescriptor_SetUnknown(IMFStreamDescriptor* This,REFGUID guidKey,IUnknown *pUnknown) {
   2252     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   2253 }
   2254 static FORCEINLINE HRESULT IMFStreamDescriptor_LockStore(IMFStreamDescriptor* This) {
   2255     return This->lpVtbl->LockStore(This);
   2256 }
   2257 static FORCEINLINE HRESULT IMFStreamDescriptor_UnlockStore(IMFStreamDescriptor* This) {
   2258     return This->lpVtbl->UnlockStore(This);
   2259 }
   2260 static FORCEINLINE HRESULT IMFStreamDescriptor_GetCount(IMFStreamDescriptor* This,UINT32 *pcItems) {
   2261     return This->lpVtbl->GetCount(This,pcItems);
   2262 }
   2263 static FORCEINLINE HRESULT IMFStreamDescriptor_GetItemByIndex(IMFStreamDescriptor* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   2264     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   2265 }
   2266 static FORCEINLINE HRESULT IMFStreamDescriptor_CopyAllItems(IMFStreamDescriptor* This,IMFAttributes *pDest) {
   2267     return This->lpVtbl->CopyAllItems(This,pDest);
   2268 }
   2269 /*** IMFStreamDescriptor methods ***/
   2270 static FORCEINLINE HRESULT IMFStreamDescriptor_GetStreamIdentifier(IMFStreamDescriptor* This,DWORD *pdwStreamIdentifier) {
   2271     return This->lpVtbl->GetStreamIdentifier(This,pdwStreamIdentifier);
   2272 }
   2273 static FORCEINLINE HRESULT IMFStreamDescriptor_GetMediaTypeHandler(IMFStreamDescriptor* This,IMFMediaTypeHandler **ppMediaTypeHandler) {
   2274     return This->lpVtbl->GetMediaTypeHandler(This,ppMediaTypeHandler);
   2275 }
   2276 #endif
   2277 #endif
   2278 
   2279 #endif
   2280 
   2281 HRESULT STDMETHODCALLTYPE IMFStreamDescriptor_GetStreamIdentifier_Proxy(
   2282     IMFStreamDescriptor* This,
   2283     DWORD *pdwStreamIdentifier);
   2284 void __RPC_STUB IMFStreamDescriptor_GetStreamIdentifier_Stub(
   2285     IRpcStubBuffer* This,
   2286     IRpcChannelBuffer* pRpcChannelBuffer,
   2287     PRPC_MESSAGE pRpcMessage,
   2288     DWORD* pdwStubPhase);
   2289 HRESULT STDMETHODCALLTYPE IMFStreamDescriptor_GetMediaTypeHandler_Proxy(
   2290     IMFStreamDescriptor* This,
   2291     IMFMediaTypeHandler **ppMediaTypeHandler);
   2292 void __RPC_STUB IMFStreamDescriptor_GetMediaTypeHandler_Stub(
   2293     IRpcStubBuffer* This,
   2294     IRpcChannelBuffer* pRpcChannelBuffer,
   2295     PRPC_MESSAGE pRpcMessage,
   2296     DWORD* pdwStubPhase);
   2297 
   2298 #endif  /* __IMFStreamDescriptor_INTERFACE_DEFINED__ */
   2299 
   2300 /*****************************************************************************
   2301  * IMFPresentationDescriptor interface
   2302  */
   2303 #ifndef __IMFPresentationDescriptor_INTERFACE_DEFINED__
   2304 #define __IMFPresentationDescriptor_INTERFACE_DEFINED__
   2305 
   2306 DEFINE_GUID(IID_IMFPresentationDescriptor, 0x03cb2711, 0x24d7, 0x4db6, 0xa1,0x7f, 0xf3,0xa7,0xa4,0x79,0xa5,0x36);
   2307 #if defined(__cplusplus) && !defined(CINTERFACE)
   2308 MIDL_INTERFACE("03cb2711-24d7-4db6-a17f-f3a7a479a536")
   2309 IMFPresentationDescriptor : public IMFAttributes
   2310 {
   2311     virtual HRESULT STDMETHODCALLTYPE GetStreamDescriptorCount(
   2312         DWORD *pdwDescriptorCount) = 0;
   2313 
   2314     virtual HRESULT STDMETHODCALLTYPE GetStreamDescriptorByIndex(
   2315         DWORD dwIndex,
   2316         WINBOOL *pfSelected,
   2317         IMFStreamDescriptor **ppDescriptor) = 0;
   2318 
   2319     virtual HRESULT STDMETHODCALLTYPE SelectStream(
   2320         DWORD dwDescriptorIndex) = 0;
   2321 
   2322     virtual HRESULT STDMETHODCALLTYPE DeselectStream(
   2323         DWORD dwDescriptorIndex) = 0;
   2324 
   2325     virtual HRESULT STDMETHODCALLTYPE Clone(
   2326         IMFPresentationDescriptor **ppPresentationDescriptor) = 0;
   2327 
   2328 };
   2329 #ifdef __CRT_UUID_DECL
   2330 __CRT_UUID_DECL(IMFPresentationDescriptor, 0x03cb2711, 0x24d7, 0x4db6, 0xa1,0x7f, 0xf3,0xa7,0xa4,0x79,0xa5,0x36)
   2331 #endif
   2332 #else
   2333 typedef struct IMFPresentationDescriptorVtbl {
   2334     BEGIN_INTERFACE
   2335 
   2336     /*** IUnknown methods ***/
   2337     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2338         IMFPresentationDescriptor* This,
   2339         REFIID riid,
   2340         void **ppvObject);
   2341 
   2342     ULONG (STDMETHODCALLTYPE *AddRef)(
   2343         IMFPresentationDescriptor* This);
   2344 
   2345     ULONG (STDMETHODCALLTYPE *Release)(
   2346         IMFPresentationDescriptor* This);
   2347 
   2348     /*** IMFAttributes methods ***/
   2349     HRESULT (STDMETHODCALLTYPE *GetItem)(
   2350         IMFPresentationDescriptor* This,
   2351         REFGUID guidKey,
   2352         PROPVARIANT *pValue);
   2353 
   2354     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   2355         IMFPresentationDescriptor* This,
   2356         REFGUID guidKey,
   2357         MF_ATTRIBUTE_TYPE *pType);
   2358 
   2359     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   2360         IMFPresentationDescriptor* This,
   2361         REFGUID guidKey,
   2362         REFPROPVARIANT Value,
   2363         WINBOOL *pbResult);
   2364 
   2365     HRESULT (STDMETHODCALLTYPE *Compare)(
   2366         IMFPresentationDescriptor* This,
   2367         IMFAttributes *pTheirs,
   2368         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   2369         WINBOOL *pbResult);
   2370 
   2371     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   2372         IMFPresentationDescriptor* This,
   2373         REFGUID guidKey,
   2374         UINT32 *punValue);
   2375 
   2376     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   2377         IMFPresentationDescriptor* This,
   2378         REFGUID guidKey,
   2379         UINT64 *punValue);
   2380 
   2381     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   2382         IMFPresentationDescriptor* This,
   2383         REFGUID guidKey,
   2384         double *pfValue);
   2385 
   2386     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   2387         IMFPresentationDescriptor* This,
   2388         REFGUID guidKey,
   2389         GUID *pguidValue);
   2390 
   2391     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   2392         IMFPresentationDescriptor* This,
   2393         REFGUID guidKey,
   2394         UINT32 *pcchLength);
   2395 
   2396     HRESULT (STDMETHODCALLTYPE *GetString)(
   2397         IMFPresentationDescriptor* This,
   2398         REFGUID guidKey,
   2399         LPWSTR pwszValue,
   2400         UINT32 cchBufSize,
   2401         UINT32 *pcchLength);
   2402 
   2403     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   2404         IMFPresentationDescriptor* This,
   2405         REFGUID guidKey,
   2406         LPWSTR *ppwszValue,
   2407         UINT32 *pcchLength);
   2408 
   2409     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   2410         IMFPresentationDescriptor* This,
   2411         REFGUID guidKey,
   2412         UINT32 *pcbBlobSize);
   2413 
   2414     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   2415         IMFPresentationDescriptor* This,
   2416         REFGUID guidKey,
   2417         UINT8 *pBuf,
   2418         UINT32 cbBufSize,
   2419         UINT32 *pcbBlobSize);
   2420 
   2421     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   2422         IMFPresentationDescriptor* This,
   2423         REFGUID guidKey,
   2424         UINT8 **ppBuf,
   2425         UINT32 *pcbSize);
   2426 
   2427     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   2428         IMFPresentationDescriptor* This,
   2429         REFGUID guidKey,
   2430         REFIID riid,
   2431         LPVOID *ppv);
   2432 
   2433     HRESULT (STDMETHODCALLTYPE *SetItem)(
   2434         IMFPresentationDescriptor* This,
   2435         REFGUID guidKey,
   2436         REFPROPVARIANT Value);
   2437 
   2438     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   2439         IMFPresentationDescriptor* This,
   2440         REFGUID guidKey);
   2441 
   2442     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   2443         IMFPresentationDescriptor* This);
   2444 
   2445     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   2446         IMFPresentationDescriptor* This,
   2447         REFGUID guidKey,
   2448         UINT32 unValue);
   2449 
   2450     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   2451         IMFPresentationDescriptor* This,
   2452         REFGUID guidKey,
   2453         UINT64 unValue);
   2454 
   2455     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   2456         IMFPresentationDescriptor* This,
   2457         REFGUID guidKey,
   2458         double fValue);
   2459 
   2460     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   2461         IMFPresentationDescriptor* This,
   2462         REFGUID guidKey,
   2463         REFGUID guidValue);
   2464 
   2465     HRESULT (STDMETHODCALLTYPE *SetString)(
   2466         IMFPresentationDescriptor* This,
   2467         REFGUID guidKey,
   2468         LPCWSTR wszValue);
   2469 
   2470     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   2471         IMFPresentationDescriptor* This,
   2472         REFGUID guidKey,
   2473         const UINT8 *pBuf,
   2474         UINT32 cbBufSize);
   2475 
   2476     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   2477         IMFPresentationDescriptor* This,
   2478         REFGUID guidKey,
   2479         IUnknown *pUnknown);
   2480 
   2481     HRESULT (STDMETHODCALLTYPE *LockStore)(
   2482         IMFPresentationDescriptor* This);
   2483 
   2484     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   2485         IMFPresentationDescriptor* This);
   2486 
   2487     HRESULT (STDMETHODCALLTYPE *GetCount)(
   2488         IMFPresentationDescriptor* This,
   2489         UINT32 *pcItems);
   2490 
   2491     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   2492         IMFPresentationDescriptor* This,
   2493         UINT32 unIndex,
   2494         GUID *pguidKey,
   2495         PROPVARIANT *pValue);
   2496 
   2497     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   2498         IMFPresentationDescriptor* This,
   2499         IMFAttributes *pDest);
   2500 
   2501     /*** IMFPresentationDescriptor methods ***/
   2502     HRESULT (STDMETHODCALLTYPE *GetStreamDescriptorCount)(
   2503         IMFPresentationDescriptor* This,
   2504         DWORD *pdwDescriptorCount);
   2505 
   2506     HRESULT (STDMETHODCALLTYPE *GetStreamDescriptorByIndex)(
   2507         IMFPresentationDescriptor* This,
   2508         DWORD dwIndex,
   2509         WINBOOL *pfSelected,
   2510         IMFStreamDescriptor **ppDescriptor);
   2511 
   2512     HRESULT (STDMETHODCALLTYPE *SelectStream)(
   2513         IMFPresentationDescriptor* This,
   2514         DWORD dwDescriptorIndex);
   2515 
   2516     HRESULT (STDMETHODCALLTYPE *DeselectStream)(
   2517         IMFPresentationDescriptor* This,
   2518         DWORD dwDescriptorIndex);
   2519 
   2520     HRESULT (STDMETHODCALLTYPE *Clone)(
   2521         IMFPresentationDescriptor* This,
   2522         IMFPresentationDescriptor **ppPresentationDescriptor);
   2523 
   2524     END_INTERFACE
   2525 } IMFPresentationDescriptorVtbl;
   2526 interface IMFPresentationDescriptor {
   2527     CONST_VTBL IMFPresentationDescriptorVtbl* lpVtbl;
   2528 };
   2529 
   2530 #ifdef COBJMACROS
   2531 #ifndef WIDL_C_INLINE_WRAPPERS
   2532 /*** IUnknown methods ***/
   2533 #define IMFPresentationDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2534 #define IMFPresentationDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
   2535 #define IMFPresentationDescriptor_Release(This) (This)->lpVtbl->Release(This)
   2536 /*** IMFAttributes methods ***/
   2537 #define IMFPresentationDescriptor_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   2538 #define IMFPresentationDescriptor_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   2539 #define IMFPresentationDescriptor_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   2540 #define IMFPresentationDescriptor_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   2541 #define IMFPresentationDescriptor_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   2542 #define IMFPresentationDescriptor_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   2543 #define IMFPresentationDescriptor_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   2544 #define IMFPresentationDescriptor_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   2545 #define IMFPresentationDescriptor_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   2546 #define IMFPresentationDescriptor_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   2547 #define IMFPresentationDescriptor_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   2548 #define IMFPresentationDescriptor_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   2549 #define IMFPresentationDescriptor_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   2550 #define IMFPresentationDescriptor_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   2551 #define IMFPresentationDescriptor_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   2552 #define IMFPresentationDescriptor_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   2553 #define IMFPresentationDescriptor_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   2554 #define IMFPresentationDescriptor_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   2555 #define IMFPresentationDescriptor_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   2556 #define IMFPresentationDescriptor_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   2557 #define IMFPresentationDescriptor_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   2558 #define IMFPresentationDescriptor_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   2559 #define IMFPresentationDescriptor_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   2560 #define IMFPresentationDescriptor_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   2561 #define IMFPresentationDescriptor_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   2562 #define IMFPresentationDescriptor_LockStore(This) (This)->lpVtbl->LockStore(This)
   2563 #define IMFPresentationDescriptor_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   2564 #define IMFPresentationDescriptor_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   2565 #define IMFPresentationDescriptor_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   2566 #define IMFPresentationDescriptor_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   2567 /*** IMFPresentationDescriptor methods ***/
   2568 #define IMFPresentationDescriptor_GetStreamDescriptorCount(This,pdwDescriptorCount) (This)->lpVtbl->GetStreamDescriptorCount(This,pdwDescriptorCount)
   2569 #define IMFPresentationDescriptor_GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor) (This)->lpVtbl->GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor)
   2570 #define IMFPresentationDescriptor_SelectStream(This,dwDescriptorIndex) (This)->lpVtbl->SelectStream(This,dwDescriptorIndex)
   2571 #define IMFPresentationDescriptor_DeselectStream(This,dwDescriptorIndex) (This)->lpVtbl->DeselectStream(This,dwDescriptorIndex)
   2572 #define IMFPresentationDescriptor_Clone(This,ppPresentationDescriptor) (This)->lpVtbl->Clone(This,ppPresentationDescriptor)
   2573 #else
   2574 /*** IUnknown methods ***/
   2575 static FORCEINLINE HRESULT IMFPresentationDescriptor_QueryInterface(IMFPresentationDescriptor* This,REFIID riid,void **ppvObject) {
   2576     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2577 }
   2578 static FORCEINLINE ULONG IMFPresentationDescriptor_AddRef(IMFPresentationDescriptor* This) {
   2579     return This->lpVtbl->AddRef(This);
   2580 }
   2581 static FORCEINLINE ULONG IMFPresentationDescriptor_Release(IMFPresentationDescriptor* This) {
   2582     return This->lpVtbl->Release(This);
   2583 }
   2584 /*** IMFAttributes methods ***/
   2585 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetItem(IMFPresentationDescriptor* This,REFGUID guidKey,PROPVARIANT *pValue) {
   2586     return This->lpVtbl->GetItem(This,guidKey,pValue);
   2587 }
   2588 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetItemType(IMFPresentationDescriptor* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   2589     return This->lpVtbl->GetItemType(This,guidKey,pType);
   2590 }
   2591 static FORCEINLINE HRESULT IMFPresentationDescriptor_CompareItem(IMFPresentationDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   2592     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   2593 }
   2594 static FORCEINLINE HRESULT IMFPresentationDescriptor_Compare(IMFPresentationDescriptor* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   2595     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   2596 }
   2597 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetUINT32(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *punValue) {
   2598     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   2599 }
   2600 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetUINT64(IMFPresentationDescriptor* This,REFGUID guidKey,UINT64 *punValue) {
   2601     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   2602 }
   2603 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetDouble(IMFPresentationDescriptor* This,REFGUID guidKey,double *pfValue) {
   2604     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   2605 }
   2606 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetGUID(IMFPresentationDescriptor* This,REFGUID guidKey,GUID *pguidValue) {
   2607     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   2608 }
   2609 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetStringLength(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *pcchLength) {
   2610     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   2611 }
   2612 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetString(IMFPresentationDescriptor* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   2613     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   2614 }
   2615 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetAllocatedString(IMFPresentationDescriptor* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   2616     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   2617 }
   2618 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetBlobSize(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   2619     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   2620 }
   2621 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetBlob(IMFPresentationDescriptor* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   2622     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   2623 }
   2624 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetAllocatedBlob(IMFPresentationDescriptor* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   2625     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   2626 }
   2627 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetUnknown(IMFPresentationDescriptor* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   2628     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   2629 }
   2630 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetItem(IMFPresentationDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value) {
   2631     return This->lpVtbl->SetItem(This,guidKey,Value);
   2632 }
   2633 static FORCEINLINE HRESULT IMFPresentationDescriptor_DeleteItem(IMFPresentationDescriptor* This,REFGUID guidKey) {
   2634     return This->lpVtbl->DeleteItem(This,guidKey);
   2635 }
   2636 static FORCEINLINE HRESULT IMFPresentationDescriptor_DeleteAllItems(IMFPresentationDescriptor* This) {
   2637     return This->lpVtbl->DeleteAllItems(This);
   2638 }
   2639 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetUINT32(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 unValue) {
   2640     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   2641 }
   2642 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetUINT64(IMFPresentationDescriptor* This,REFGUID guidKey,UINT64 unValue) {
   2643     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   2644 }
   2645 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetDouble(IMFPresentationDescriptor* This,REFGUID guidKey,double fValue) {
   2646     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   2647 }
   2648 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetGUID(IMFPresentationDescriptor* This,REFGUID guidKey,REFGUID guidValue) {
   2649     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   2650 }
   2651 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetString(IMFPresentationDescriptor* This,REFGUID guidKey,LPCWSTR wszValue) {
   2652     return This->lpVtbl->SetString(This,guidKey,wszValue);
   2653 }
   2654 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetBlob(IMFPresentationDescriptor* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   2655     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   2656 }
   2657 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetUnknown(IMFPresentationDescriptor* This,REFGUID guidKey,IUnknown *pUnknown) {
   2658     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   2659 }
   2660 static FORCEINLINE HRESULT IMFPresentationDescriptor_LockStore(IMFPresentationDescriptor* This) {
   2661     return This->lpVtbl->LockStore(This);
   2662 }
   2663 static FORCEINLINE HRESULT IMFPresentationDescriptor_UnlockStore(IMFPresentationDescriptor* This) {
   2664     return This->lpVtbl->UnlockStore(This);
   2665 }
   2666 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetCount(IMFPresentationDescriptor* This,UINT32 *pcItems) {
   2667     return This->lpVtbl->GetCount(This,pcItems);
   2668 }
   2669 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetItemByIndex(IMFPresentationDescriptor* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   2670     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   2671 }
   2672 static FORCEINLINE HRESULT IMFPresentationDescriptor_CopyAllItems(IMFPresentationDescriptor* This,IMFAttributes *pDest) {
   2673     return This->lpVtbl->CopyAllItems(This,pDest);
   2674 }
   2675 /*** IMFPresentationDescriptor methods ***/
   2676 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetStreamDescriptorCount(IMFPresentationDescriptor* This,DWORD *pdwDescriptorCount) {
   2677     return This->lpVtbl->GetStreamDescriptorCount(This,pdwDescriptorCount);
   2678 }
   2679 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetStreamDescriptorByIndex(IMFPresentationDescriptor* This,DWORD dwIndex,WINBOOL *pfSelected,IMFStreamDescriptor **ppDescriptor) {
   2680     return This->lpVtbl->GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor);
   2681 }
   2682 static FORCEINLINE HRESULT IMFPresentationDescriptor_SelectStream(IMFPresentationDescriptor* This,DWORD dwDescriptorIndex) {
   2683     return This->lpVtbl->SelectStream(This,dwDescriptorIndex);
   2684 }
   2685 static FORCEINLINE HRESULT IMFPresentationDescriptor_DeselectStream(IMFPresentationDescriptor* This,DWORD dwDescriptorIndex) {
   2686     return This->lpVtbl->DeselectStream(This,dwDescriptorIndex);
   2687 }
   2688 static FORCEINLINE HRESULT IMFPresentationDescriptor_Clone(IMFPresentationDescriptor* This,IMFPresentationDescriptor **ppPresentationDescriptor) {
   2689     return This->lpVtbl->Clone(This,ppPresentationDescriptor);
   2690 }
   2691 #endif
   2692 #endif
   2693 
   2694 #endif
   2695 
   2696 HRESULT STDMETHODCALLTYPE IMFPresentationDescriptor_GetStreamDescriptorCount_Proxy(
   2697     IMFPresentationDescriptor* This,
   2698     DWORD *pdwDescriptorCount);
   2699 void __RPC_STUB IMFPresentationDescriptor_GetStreamDescriptorCount_Stub(
   2700     IRpcStubBuffer* This,
   2701     IRpcChannelBuffer* pRpcChannelBuffer,
   2702     PRPC_MESSAGE pRpcMessage,
   2703     DWORD* pdwStubPhase);
   2704 HRESULT STDMETHODCALLTYPE IMFPresentationDescriptor_GetStreamDescriptorByIndex_Proxy(
   2705     IMFPresentationDescriptor* This,
   2706     DWORD dwIndex,
   2707     WINBOOL *pfSelected,
   2708     IMFStreamDescriptor **ppDescriptor);
   2709 void __RPC_STUB IMFPresentationDescriptor_GetStreamDescriptorByIndex_Stub(
   2710     IRpcStubBuffer* This,
   2711     IRpcChannelBuffer* pRpcChannelBuffer,
   2712     PRPC_MESSAGE pRpcMessage,
   2713     DWORD* pdwStubPhase);
   2714 HRESULT STDMETHODCALLTYPE IMFPresentationDescriptor_SelectStream_Proxy(
   2715     IMFPresentationDescriptor* This,
   2716     DWORD dwDescriptorIndex);
   2717 void __RPC_STUB IMFPresentationDescriptor_SelectStream_Stub(
   2718     IRpcStubBuffer* This,
   2719     IRpcChannelBuffer* pRpcChannelBuffer,
   2720     PRPC_MESSAGE pRpcMessage,
   2721     DWORD* pdwStubPhase);
   2722 HRESULT STDMETHODCALLTYPE IMFPresentationDescriptor_DeselectStream_Proxy(
   2723     IMFPresentationDescriptor* This,
   2724     DWORD dwDescriptorIndex);
   2725 void __RPC_STUB IMFPresentationDescriptor_DeselectStream_Stub(
   2726     IRpcStubBuffer* This,
   2727     IRpcChannelBuffer* pRpcChannelBuffer,
   2728     PRPC_MESSAGE pRpcMessage,
   2729     DWORD* pdwStubPhase);
   2730 HRESULT STDMETHODCALLTYPE IMFPresentationDescriptor_Clone_Proxy(
   2731     IMFPresentationDescriptor* This,
   2732     IMFPresentationDescriptor **ppPresentationDescriptor);
   2733 void __RPC_STUB IMFPresentationDescriptor_Clone_Stub(
   2734     IRpcStubBuffer* This,
   2735     IRpcChannelBuffer* pRpcChannelBuffer,
   2736     PRPC_MESSAGE pRpcMessage,
   2737     DWORD* pdwStubPhase);
   2738 
   2739 #endif  /* __IMFPresentationDescriptor_INTERFACE_DEFINED__ */
   2740 
   2741 /*****************************************************************************
   2742  * IMFMediaSource interface
   2743  */
   2744 #ifndef __IMFMediaSource_INTERFACE_DEFINED__
   2745 #define __IMFMediaSource_INTERFACE_DEFINED__
   2746 
   2747 DEFINE_GUID(IID_IMFMediaSource, 0x279a808d, 0xaec7, 0x40c8, 0x9c,0x6b, 0xa6,0xb4,0x92,0xc7,0x8a,0x66);
   2748 #if defined(__cplusplus) && !defined(CINTERFACE)
   2749 MIDL_INTERFACE("279a808d-aec7-40c8-9c6b-a6b492c78a66")
   2750 IMFMediaSource : public IMFMediaEventGenerator
   2751 {
   2752     virtual HRESULT STDMETHODCALLTYPE GetCharacteristics(
   2753         DWORD *pdwCharacteristics) = 0;
   2754 
   2755     virtual HRESULT STDMETHODCALLTYPE CreatePresentationDescriptor(
   2756         IMFPresentationDescriptor **ppPresentationDescriptor) = 0;
   2757 
   2758     virtual HRESULT STDMETHODCALLTYPE Start(
   2759         IMFPresentationDescriptor *pPresentationDescriptor,
   2760         const GUID *pguidTimeFormat,
   2761         const PROPVARIANT *pvarStartPosition) = 0;
   2762 
   2763     virtual HRESULT STDMETHODCALLTYPE Stop(
   2764         ) = 0;
   2765 
   2766     virtual HRESULT STDMETHODCALLTYPE Pause(
   2767         ) = 0;
   2768 
   2769     virtual HRESULT STDMETHODCALLTYPE Shutdown(
   2770         ) = 0;
   2771 
   2772 };
   2773 #ifdef __CRT_UUID_DECL
   2774 __CRT_UUID_DECL(IMFMediaSource, 0x279a808d, 0xaec7, 0x40c8, 0x9c,0x6b, 0xa6,0xb4,0x92,0xc7,0x8a,0x66)
   2775 #endif
   2776 #else
   2777 typedef struct IMFMediaSourceVtbl {
   2778     BEGIN_INTERFACE
   2779 
   2780     /*** IUnknown methods ***/
   2781     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2782         IMFMediaSource* This,
   2783         REFIID riid,
   2784         void **ppvObject);
   2785 
   2786     ULONG (STDMETHODCALLTYPE *AddRef)(
   2787         IMFMediaSource* This);
   2788 
   2789     ULONG (STDMETHODCALLTYPE *Release)(
   2790         IMFMediaSource* This);
   2791 
   2792     /*** IMFMediaEventGenerator methods ***/
   2793     HRESULT (STDMETHODCALLTYPE *GetEvent)(
   2794         IMFMediaSource* This,
   2795         DWORD dwFlags,
   2796         IMFMediaEvent **ppEvent);
   2797 
   2798     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
   2799         IMFMediaSource* This,
   2800         IMFAsyncCallback *pCallback,
   2801         IUnknown *punkState);
   2802 
   2803     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
   2804         IMFMediaSource* This,
   2805         IMFAsyncResult *pResult,
   2806         IMFMediaEvent **ppEvent);
   2807 
   2808     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
   2809         IMFMediaSource* This,
   2810         MediaEventType met,
   2811         REFGUID guidExtendedType,
   2812         HRESULT hrStatus,
   2813         const PROPVARIANT *pvValue);
   2814 
   2815     /*** IMFMediaSource methods ***/
   2816     HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
   2817         IMFMediaSource* This,
   2818         DWORD *pdwCharacteristics);
   2819 
   2820     HRESULT (STDMETHODCALLTYPE *CreatePresentationDescriptor)(
   2821         IMFMediaSource* This,
   2822         IMFPresentationDescriptor **ppPresentationDescriptor);
   2823 
   2824     HRESULT (STDMETHODCALLTYPE *Start)(
   2825         IMFMediaSource* This,
   2826         IMFPresentationDescriptor *pPresentationDescriptor,
   2827         const GUID *pguidTimeFormat,
   2828         const PROPVARIANT *pvarStartPosition);
   2829 
   2830     HRESULT (STDMETHODCALLTYPE *Stop)(
   2831         IMFMediaSource* This);
   2832 
   2833     HRESULT (STDMETHODCALLTYPE *Pause)(
   2834         IMFMediaSource* This);
   2835 
   2836     HRESULT (STDMETHODCALLTYPE *Shutdown)(
   2837         IMFMediaSource* This);
   2838 
   2839     END_INTERFACE
   2840 } IMFMediaSourceVtbl;
   2841 interface IMFMediaSource {
   2842     CONST_VTBL IMFMediaSourceVtbl* lpVtbl;
   2843 };
   2844 
   2845 #ifdef COBJMACROS
   2846 #ifndef WIDL_C_INLINE_WRAPPERS
   2847 /*** IUnknown methods ***/
   2848 #define IMFMediaSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2849 #define IMFMediaSource_AddRef(This) (This)->lpVtbl->AddRef(This)
   2850 #define IMFMediaSource_Release(This) (This)->lpVtbl->Release(This)
   2851 /*** IMFMediaEventGenerator methods ***/
   2852 #define IMFMediaSource_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
   2853 #define IMFMediaSource_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
   2854 #define IMFMediaSource_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
   2855 #define IMFMediaSource_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
   2856 /*** IMFMediaSource methods ***/
   2857 #define IMFMediaSource_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
   2858 #define IMFMediaSource_CreatePresentationDescriptor(This,ppPresentationDescriptor) (This)->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor)
   2859 #define IMFMediaSource_Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition) (This)->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition)
   2860 #define IMFMediaSource_Stop(This) (This)->lpVtbl->Stop(This)
   2861 #define IMFMediaSource_Pause(This) (This)->lpVtbl->Pause(This)
   2862 #define IMFMediaSource_Shutdown(This) (This)->lpVtbl->Shutdown(This)
   2863 #else
   2864 /*** IUnknown methods ***/
   2865 static FORCEINLINE HRESULT IMFMediaSource_QueryInterface(IMFMediaSource* This,REFIID riid,void **ppvObject) {
   2866     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2867 }
   2868 static FORCEINLINE ULONG IMFMediaSource_AddRef(IMFMediaSource* This) {
   2869     return This->lpVtbl->AddRef(This);
   2870 }
   2871 static FORCEINLINE ULONG IMFMediaSource_Release(IMFMediaSource* This) {
   2872     return This->lpVtbl->Release(This);
   2873 }
   2874 /*** IMFMediaEventGenerator methods ***/
   2875 static FORCEINLINE HRESULT IMFMediaSource_GetEvent(IMFMediaSource* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
   2876     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
   2877 }
   2878 static FORCEINLINE HRESULT IMFMediaSource_BeginGetEvent(IMFMediaSource* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
   2879     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
   2880 }
   2881 static FORCEINLINE HRESULT IMFMediaSource_EndGetEvent(IMFMediaSource* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
   2882     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
   2883 }
   2884 static FORCEINLINE HRESULT IMFMediaSource_QueueEvent(IMFMediaSource* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
   2885     return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
   2886 }
   2887 /*** IMFMediaSource methods ***/
   2888 static FORCEINLINE HRESULT IMFMediaSource_GetCharacteristics(IMFMediaSource* This,DWORD *pdwCharacteristics) {
   2889     return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
   2890 }
   2891 static FORCEINLINE HRESULT IMFMediaSource_CreatePresentationDescriptor(IMFMediaSource* This,IMFPresentationDescriptor **ppPresentationDescriptor) {
   2892     return This->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor);
   2893 }
   2894 static FORCEINLINE HRESULT IMFMediaSource_Start(IMFMediaSource* This,IMFPresentationDescriptor *pPresentationDescriptor,const GUID *pguidTimeFormat,const PROPVARIANT *pvarStartPosition) {
   2895     return This->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition);
   2896 }
   2897 static FORCEINLINE HRESULT IMFMediaSource_Stop(IMFMediaSource* This) {
   2898     return This->lpVtbl->Stop(This);
   2899 }
   2900 static FORCEINLINE HRESULT IMFMediaSource_Pause(IMFMediaSource* This) {
   2901     return This->lpVtbl->Pause(This);
   2902 }
   2903 static FORCEINLINE HRESULT IMFMediaSource_Shutdown(IMFMediaSource* This) {
   2904     return This->lpVtbl->Shutdown(This);
   2905 }
   2906 #endif
   2907 #endif
   2908 
   2909 #endif
   2910 
   2911 HRESULT STDMETHODCALLTYPE IMFMediaSource_GetCharacteristics_Proxy(
   2912     IMFMediaSource* This,
   2913     DWORD *pdwCharacteristics);
   2914 void __RPC_STUB IMFMediaSource_GetCharacteristics_Stub(
   2915     IRpcStubBuffer* This,
   2916     IRpcChannelBuffer* pRpcChannelBuffer,
   2917     PRPC_MESSAGE pRpcMessage,
   2918     DWORD* pdwStubPhase);
   2919 HRESULT STDMETHODCALLTYPE IMFMediaSource_RemoteCreatePresentationDescriptor_Proxy(
   2920     IMFMediaSource* This,
   2921     DWORD *pcbPD,
   2922     BYTE **pbPD,
   2923     IMFPresentationDescriptor **ppRemotePD);
   2924 void __RPC_STUB IMFMediaSource_RemoteCreatePresentationDescriptor_Stub(
   2925     IRpcStubBuffer* This,
   2926     IRpcChannelBuffer* pRpcChannelBuffer,
   2927     PRPC_MESSAGE pRpcMessage,
   2928     DWORD* pdwStubPhase);
   2929 HRESULT STDMETHODCALLTYPE IMFMediaSource_Start_Proxy(
   2930     IMFMediaSource* This,
   2931     IMFPresentationDescriptor *pPresentationDescriptor,
   2932     const GUID *pguidTimeFormat,
   2933     const PROPVARIANT *pvarStartPosition);
   2934 void __RPC_STUB IMFMediaSource_Start_Stub(
   2935     IRpcStubBuffer* This,
   2936     IRpcChannelBuffer* pRpcChannelBuffer,
   2937     PRPC_MESSAGE pRpcMessage,
   2938     DWORD* pdwStubPhase);
   2939 HRESULT STDMETHODCALLTYPE IMFMediaSource_Stop_Proxy(
   2940     IMFMediaSource* This);
   2941 void __RPC_STUB IMFMediaSource_Stop_Stub(
   2942     IRpcStubBuffer* This,
   2943     IRpcChannelBuffer* pRpcChannelBuffer,
   2944     PRPC_MESSAGE pRpcMessage,
   2945     DWORD* pdwStubPhase);
   2946 HRESULT STDMETHODCALLTYPE IMFMediaSource_Pause_Proxy(
   2947     IMFMediaSource* This);
   2948 void __RPC_STUB IMFMediaSource_Pause_Stub(
   2949     IRpcStubBuffer* This,
   2950     IRpcChannelBuffer* pRpcChannelBuffer,
   2951     PRPC_MESSAGE pRpcMessage,
   2952     DWORD* pdwStubPhase);
   2953 HRESULT STDMETHODCALLTYPE IMFMediaSource_Shutdown_Proxy(
   2954     IMFMediaSource* This);
   2955 void __RPC_STUB IMFMediaSource_Shutdown_Stub(
   2956     IRpcStubBuffer* This,
   2957     IRpcChannelBuffer* pRpcChannelBuffer,
   2958     PRPC_MESSAGE pRpcMessage,
   2959     DWORD* pdwStubPhase);
   2960 HRESULT CALLBACK IMFMediaSource_CreatePresentationDescriptor_Proxy(
   2961     IMFMediaSource* This,
   2962     IMFPresentationDescriptor **ppPresentationDescriptor);
   2963 HRESULT __RPC_STUB IMFMediaSource_CreatePresentationDescriptor_Stub(
   2964     IMFMediaSource* This,
   2965     DWORD *pcbPD,
   2966     BYTE **pbPD,
   2967     IMFPresentationDescriptor **ppRemotePD);
   2968 
   2969 #endif  /* __IMFMediaSource_INTERFACE_DEFINED__ */
   2970 
   2971 typedef struct _MF_LEAKY_BUCKET_PAIR {
   2972     DWORD dwBitrate;
   2973     DWORD msBufferWindow;
   2974 } MF_LEAKY_BUCKET_PAIR;
   2975 typedef struct _MFBYTESTREAM_BUFFERING_PARAMS {
   2976     QWORD cbTotalFileSize;
   2977     QWORD cbPlayableDataSize;
   2978     MF_LEAKY_BUCKET_PAIR *prgBuckets;
   2979     DWORD cBuckets;
   2980     QWORD qwNetBufferingTime;
   2981     QWORD qwExtraBufferingTimeDuringSeek;
   2982     QWORD qwPlayDuration;
   2983     float dRate;
   2984 } MFBYTESTREAM_BUFFERING_PARAMS;
   2985 /*****************************************************************************
   2986  * IMFByteStreamBuffering interface
   2987  */
   2988 #ifndef __IMFByteStreamBuffering_INTERFACE_DEFINED__
   2989 #define __IMFByteStreamBuffering_INTERFACE_DEFINED__
   2990 
   2991 DEFINE_GUID(IID_IMFByteStreamBuffering, 0x6d66d782, 0x1d4f, 0x4db7, 0x8c,0x63, 0xcb,0x8c,0x77,0xf1,0xef,0x5e);
   2992 #if defined(__cplusplus) && !defined(CINTERFACE)
   2993 MIDL_INTERFACE("6d66d782-1d4f-4db7-8c63-cb8c77f1ef5e")
   2994 IMFByteStreamBuffering : public IUnknown
   2995 {
   2996     virtual HRESULT STDMETHODCALLTYPE SetBufferingParams(
   2997         MFBYTESTREAM_BUFFERING_PARAMS *pParams) = 0;
   2998 
   2999     virtual HRESULT STDMETHODCALLTYPE EnableBuffering(
   3000         WINBOOL fEnable) = 0;
   3001 
   3002     virtual HRESULT STDMETHODCALLTYPE StopBuffering(
   3003         ) = 0;
   3004 
   3005 };
   3006 #ifdef __CRT_UUID_DECL
   3007 __CRT_UUID_DECL(IMFByteStreamBuffering, 0x6d66d782, 0x1d4f, 0x4db7, 0x8c,0x63, 0xcb,0x8c,0x77,0xf1,0xef,0x5e)
   3008 #endif
   3009 #else
   3010 typedef struct IMFByteStreamBufferingVtbl {
   3011     BEGIN_INTERFACE
   3012 
   3013     /*** IUnknown methods ***/
   3014     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3015         IMFByteStreamBuffering* This,
   3016         REFIID riid,
   3017         void **ppvObject);
   3018 
   3019     ULONG (STDMETHODCALLTYPE *AddRef)(
   3020         IMFByteStreamBuffering* This);
   3021 
   3022     ULONG (STDMETHODCALLTYPE *Release)(
   3023         IMFByteStreamBuffering* This);
   3024 
   3025     /*** IMFByteStreamBuffering methods ***/
   3026     HRESULT (STDMETHODCALLTYPE *SetBufferingParams)(
   3027         IMFByteStreamBuffering* This,
   3028         MFBYTESTREAM_BUFFERING_PARAMS *pParams);
   3029 
   3030     HRESULT (STDMETHODCALLTYPE *EnableBuffering)(
   3031         IMFByteStreamBuffering* This,
   3032         WINBOOL fEnable);
   3033 
   3034     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
   3035         IMFByteStreamBuffering* This);
   3036 
   3037     END_INTERFACE
   3038 } IMFByteStreamBufferingVtbl;
   3039 interface IMFByteStreamBuffering {
   3040     CONST_VTBL IMFByteStreamBufferingVtbl* lpVtbl;
   3041 };
   3042 
   3043 #ifdef COBJMACROS
   3044 #ifndef WIDL_C_INLINE_WRAPPERS
   3045 /*** IUnknown methods ***/
   3046 #define IMFByteStreamBuffering_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3047 #define IMFByteStreamBuffering_AddRef(This) (This)->lpVtbl->AddRef(This)
   3048 #define IMFByteStreamBuffering_Release(This) (This)->lpVtbl->Release(This)
   3049 /*** IMFByteStreamBuffering methods ***/
   3050 #define IMFByteStreamBuffering_SetBufferingParams(This,pParams) (This)->lpVtbl->SetBufferingParams(This,pParams)
   3051 #define IMFByteStreamBuffering_EnableBuffering(This,fEnable) (This)->lpVtbl->EnableBuffering(This,fEnable)
   3052 #define IMFByteStreamBuffering_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
   3053 #else
   3054 /*** IUnknown methods ***/
   3055 static FORCEINLINE HRESULT IMFByteStreamBuffering_QueryInterface(IMFByteStreamBuffering* This,REFIID riid,void **ppvObject) {
   3056     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3057 }
   3058 static FORCEINLINE ULONG IMFByteStreamBuffering_AddRef(IMFByteStreamBuffering* This) {
   3059     return This->lpVtbl->AddRef(This);
   3060 }
   3061 static FORCEINLINE ULONG IMFByteStreamBuffering_Release(IMFByteStreamBuffering* This) {
   3062     return This->lpVtbl->Release(This);
   3063 }
   3064 /*** IMFByteStreamBuffering methods ***/
   3065 static FORCEINLINE HRESULT IMFByteStreamBuffering_SetBufferingParams(IMFByteStreamBuffering* This,MFBYTESTREAM_BUFFERING_PARAMS *pParams) {
   3066     return This->lpVtbl->SetBufferingParams(This,pParams);
   3067 }
   3068 static FORCEINLINE HRESULT IMFByteStreamBuffering_EnableBuffering(IMFByteStreamBuffering* This,WINBOOL fEnable) {
   3069     return This->lpVtbl->EnableBuffering(This,fEnable);
   3070 }
   3071 static FORCEINLINE HRESULT IMFByteStreamBuffering_StopBuffering(IMFByteStreamBuffering* This) {
   3072     return This->lpVtbl->StopBuffering(This);
   3073 }
   3074 #endif
   3075 #endif
   3076 
   3077 #endif
   3078 
   3079 HRESULT STDMETHODCALLTYPE IMFByteStreamBuffering_SetBufferingParams_Proxy(
   3080     IMFByteStreamBuffering* This,
   3081     MFBYTESTREAM_BUFFERING_PARAMS *pParams);
   3082 void __RPC_STUB IMFByteStreamBuffering_SetBufferingParams_Stub(
   3083     IRpcStubBuffer* This,
   3084     IRpcChannelBuffer* pRpcChannelBuffer,
   3085     PRPC_MESSAGE pRpcMessage,
   3086     DWORD* pdwStubPhase);
   3087 HRESULT STDMETHODCALLTYPE IMFByteStreamBuffering_EnableBuffering_Proxy(
   3088     IMFByteStreamBuffering* This,
   3089     WINBOOL fEnable);
   3090 void __RPC_STUB IMFByteStreamBuffering_EnableBuffering_Stub(
   3091     IRpcStubBuffer* This,
   3092     IRpcChannelBuffer* pRpcChannelBuffer,
   3093     PRPC_MESSAGE pRpcMessage,
   3094     DWORD* pdwStubPhase);
   3095 HRESULT STDMETHODCALLTYPE IMFByteStreamBuffering_StopBuffering_Proxy(
   3096     IMFByteStreamBuffering* This);
   3097 void __RPC_STUB IMFByteStreamBuffering_StopBuffering_Stub(
   3098     IRpcStubBuffer* This,
   3099     IRpcChannelBuffer* pRpcChannelBuffer,
   3100     PRPC_MESSAGE pRpcMessage,
   3101     DWORD* pdwStubPhase);
   3102 
   3103 #endif  /* __IMFByteStreamBuffering_INTERFACE_DEFINED__ */
   3104 
   3105 HRESULT WINAPI MFRequireProtectedEnvironment(IMFPresentationDescriptor *pPresentationDescriptor);
   3106 HRESULT WINAPI MFSerializePresentationDescriptor(IMFPresentationDescriptor *pPD,DWORD *pcbData,BYTE **ppbData);
   3107 typedef DWORD MFSequencerElementId; /*Unknown type*/
   3108 
   3109 typedef enum MFCLOCK_CHARACTERISTICS_FLAGS {
   3110   MFCLOCK_CHARACTERISTICS_FLAG_FREQUENCY_10MHZ   = 0x2,
   3111   MFCLOCK_CHARACTERISTICS_FLAG_ALWAYS_RUNNING    = 0x4,
   3112   MFCLOCK_CHARACTERISTICS_FLAG_IS_SYSTEM_CLOCK   = 0x8
   3113 } MFCLOCK_CHARACTERISTICS_FLAGS;
   3114 
   3115 #if (WINVER >= 0x0601)
   3116 
   3117 typedef enum _MF_QUALITY_ADVISE_FLAGS {
   3118   MF_QUALITY_CANNOT_KEEP_UP   = 0x1
   3119 } MF_QUALITY_ADVISE_FLAGS;
   3120 
   3121 #endif /*(WINVER >= 0x0601)*/
   3122 
   3123 typedef enum _MF_QUALITY_DROP_MODE {
   3124   MF_DROP_MODE_NONE   = 0x0,
   3125   MF_DROP_MODE_1      = 0x1,
   3126   MF_DROP_MODE_2      = 0x2,
   3127   MF_DROP_MODE_3      = 0x3,
   3128   MF_DROP_MODE_4      = 0x4,
   3129   MF_DROP_MODE_5      = 0x5,
   3130   MF_NUM_DROP_MODES   = 0x6
   3131 } MF_QUALITY_DROP_MODE;
   3132 
   3133 typedef enum _MF_QUALITY_LEVEL {
   3134   MF_QUALITY_NORMAL           = 0x0,
   3135   MF_QUALITY_NORMAL_MINUS_1   = 0x1,
   3136   MF_QUALITY_NORMAL_MINUS_2   = 0x2,
   3137   MF_QUALITY_NORMAL_MINUS_3   = 0x3,
   3138   MF_QUALITY_NORMAL_MINUS_4   = 0x4,
   3139   MF_QUALITY_NORMAL_MINUS_5   = 0x5,
   3140   MF_NUM_QUALITY_LEVELS       = 0x6
   3141 } MF_QUALITY_LEVEL;
   3142 
   3143 typedef enum MF_SOURCE_READER_CONTROL_FLAG {
   3144   MF_SOURCE_READER_CONTROLF_DRAIN   = 0x00000001
   3145 } MF_SOURCE_READER_CONTROL_FLAG;
   3146 
   3147 typedef enum _MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS {
   3148   MF_TOPOLOGY_RESOLUTION_SUCCEEDED              = 0x00000000,
   3149   MF_OPTIONAL_NODE_REJECTED_MEDIA_TYPE          = 0x00000001,
   3150   MF_OPTIONAL_NODE_REJECTED_PROTECTED_PROCESS   = 0x00000002
   3151 } MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS;
   3152 
   3153 typedef enum _MF_TOPONODE_DRAIN_MODE {
   3154   MF_TOPONODE_DRAIN_DEFAULT,
   3155   MF_TOPONODE_DRAIN_ALWAYS,
   3156   MF_TOPONODE_DRAIN_NEVER
   3157 } MF_TOPONODE_DRAIN_MODE;
   3158 
   3159 typedef enum _MF_TOPONODE_FLUSH_MODE {
   3160   MF_TOPONODE_FLUSH_ALWAYS,
   3161   MF_TOPONODE_FLUSH_SEEK,
   3162   MF_TOPONODE_FLUSH_NEVER
   3163 } MF_TOPONODE_FLUSH_MODE;
   3164 
   3165 #if (WINVER >= 0x0601)
   3166 
   3167 typedef enum _MF_TRANSCODE_TOPOLOGY_MODE_FLAGS {
   3168   MF_TRANSCODE_TOPOLOGYMODE_SOFTWARE_ONLY      = 0,
   3169   MF_TRANSCODE_TOPOLOGYMODE_HARDWARE_ALLOWED   = 1
   3170 } MF_TRANSCODE_TOPOLOGYMODE_FLAGS;
   3171 
   3172 #endif
   3173 
   3174 typedef enum  {
   3175   MF_LICENSE_URL_UNTRUSTED,
   3176   MF_LICENSE_URL_TRUSTED,
   3177   MF_LICENSE_URL_TAMPERED
   3178 } MF_URL_TRUST_STATUS;
   3179 
   3180 typedef enum MFASF_INDEXERFLAGS {
   3181   MFASF_INDEXER_WRITE_NEW_INDEX            = 0x00000001,
   3182   MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK   = 0x00000004,
   3183   MFASF_INDEXER_WRITE_FOR_LIVEREAD         = 0x00000008
   3184 } MFASF_INDEXERFLAGS;
   3185 
   3186 typedef enum _MFCLOCK_RELATIONAL_FLAGS {
   3187   MFCLOCK_RELATIONAL_FLAG_JITTER_NEVER_AHEAD   = 0x1
   3188 } MFCLOCK_RELATIONAL_FLAGS;
   3189 
   3190 typedef enum _MFMEDIASOURCE_CHARACTERISTICS {
   3191   MFMEDIASOURCE_IS_LIVE                      = 0x1,
   3192   MFMEDIASOURCE_CAN_SEEK                     = 0x2,
   3193   MFMEDIASOURCE_CAN_PAUSE                    = 0x4,
   3194   MFMEDIASOURCE_HAS_SLOW_SEEK                = 0x8,
   3195   MFMEDIASOURCE_HAS_MULTIPLE_PRESENTATIONS   = 0x10,
   3196   MFMEDIASOURCE_CAN_SKIPFORWARD              = 0x20,
   3197   MFMEDIASOURCE_CAN_SKIPBACKWARD             = 0x40
   3198 } MFMEDIASOURCE_CHARACTERISTICS;
   3199 
   3200 typedef enum _MFNET_PROXYSETTINGS {
   3201   MFNET_PROXYSETTING_NONE      = 0,
   3202   MFNET_PROXYSETTING_MANUAL    = 1,
   3203   MFNET_PROXYSETTING_AUTO      = 2,
   3204   MFNET_PROXYSETTING_BROWSER   = 3
   3205 } MFNET_PROXYSETTINGS;
   3206 
   3207 typedef enum _MFNetAuthenticationFlags {
   3208   MFNET_AUTHENTICATION_PROXY            = 0x00000001,
   3209   MFNET_AUTHENTICATION_CLEAR_TEXT       = 0x00000002,
   3210   MFNET_AUTHENTICATION_LOGGED_ON_USER
   3211 } MFNetAuthenticationFlags;
   3212 
   3213 typedef enum _MFNetCredentialOptions {
   3214   MFNET_CREDENTIAL_SAVE               = 0x00000001,
   3215   MFNET_CREDENTIAL_DONT_CACHE         = 0x00000002,
   3216   MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT   = 0x00000004
   3217 } MFNetCredentialOptions;
   3218 
   3219 typedef enum _MFNetCredentialRequirements {
   3220   REQUIRE_PROMPT          = 0x00000001,
   3221   REQUIRE_SAVE_SELECTED   = 0x00000002
   3222 } MFNetCredentialRequirements;
   3223 
   3224 typedef enum _MFNETSOURCE_CACHE_STATE {
   3225   MFNETSOURCE_CACHE_UNAVAILABLE,
   3226   MFNETSOURCE_CACHE_ACTIVE_WRITING,
   3227   MFNETSOURCE_CACHE_ACTIVE_COMPLETE
   3228 } MFNETSOURCE_CACHE_STATE;
   3229 
   3230 typedef enum _MFNETSOURCE_PROTOCOL_TYPE {
   3231   MFNETSOURCE_UNDEFINED   = 0x0,
   3232   MFNETSOURCE_HTTP        = 0x1,
   3233   MFNETSOURCE_RTSP        = 0x2,
   3234   MFNETSOURCE_FILE        = 0x3,
   3235   MFNETSOURCE_MULTICAST   = 0x4
   3236 } MFNETSOURCE_PROTOCOL_TYPE;
   3237 
   3238 typedef enum _MFNETSOURCE_STATISTICS_IDS {
   3239   MFNETSOURCE_RECVPACKETS_ID                = 0,
   3240   MFNETSOURCE_LOSTPACKETS_ID,
   3241   MFNETSOURCE_RESENDSREQUESTED_ID,
   3242   MFNETSOURCE_RESENDSRECEIVED_ID,
   3243   MFNETSOURCE_RECOVEREDBYECCPACKETS_ID,
   3244   MFNETSOURCE_RECOVEREDBYRTXPACKETS_ID,
   3245   MFNETSOURCE_OUTPACKETS_ID,
   3246   MFNETSOURCE_RECVRATE_ID,
   3247   MFNETSOURCE_AVGBANDWIDTHBPS_ID,
   3248   MFNETSOURCE_BYTESRECEIVED_ID,
   3249   MFNETSOURCE_PROTOCOL_ID,
   3250   MFNETSOURCE_TRANSPORT_ID,
   3251   MFNETSOURCE_CACHE_STATE_ID,
   3252   MFNETSOURCE_LINKBANDWIDTH_ID,
   3253   MFNETSOURCE_CONTENTBITRATE_ID,
   3254   MFNETSOURCE_SPEEDFACTOR_ID,
   3255   MFNETSOURCE_BUFFERSIZE_ID,
   3256   MFNETSOURCE_BUFFERPROGRESS_ID,
   3257   MFNETSOURCE_LASTBWSWITCHTS_ID,
   3258   MFNETSOURCE_SEEKRANGESTART_ID,
   3259   MFNETSOURCE_SEEKRANGEEND_ID,
   3260   MFNETSOURCE_BUFFERINGCOUNT_ID,
   3261   MFNETSOURCE_INCORRECTLYSIGNEDPACKETS_ID,
   3262   MFNETSOURCE_SIGNEDSESSION_ID,
   3263   MFNETSOURCE_MAXBITRATE_ID,
   3264   MFNETSOURCE_RECEPTION_QUALITY_ID,
   3265   MFNETSOURCE_RECOVEREDPACKETS_ID,
   3266   MFNETSOURCE_VBR_ID,
   3267   MFNETSOURCE_DOWNLOADPROGRESS_ID
   3268 } MFNETSOURCE_STATISTICS_IDS;
   3269 
   3270 typedef enum _MFNETSOURCE_TRANSPORT_TYPE {
   3271   MFNETSOURCE_UDP,
   3272   MFNETSOURCE_TCP
   3273 } MFNETSOURCE_TRANSPORT_TYPE;
   3274 
   3275 typedef enum MF_OBJECT_TYPE {
   3276   MF_OBJECT_MEDIASOURCE,
   3277   MF_OBJECT_BYTESTREAM,
   3278   MF_OBJECT_INVALID
   3279 } MF_OBJECT_TYPE;
   3280 
   3281 typedef enum _MFPOLICYMANAGER_ACTION {
   3282   PEACTION_NO          = 0,
   3283   PEACTION_PLAY        = 1,
   3284   PEACTION_COPY        = 2,
   3285   PEACTION_EXPORT      = 3,
   3286   PEACTION_EXTRACT     = 4,
   3287   PEACTION_RESERVED1   = 5,
   3288   PEACTION_RESERVED2   = 6,
   3289   PEACTION_RESERVED3   = 7,
   3290   PEACTION_LAST        = 7
   3291 } MFPOLICYMANAGER_ACTION;
   3292 
   3293 typedef enum _MFRATE_DIRECTION {
   3294   MFRATE_FORWARD,
   3295   MFRATE_REVERSE
   3296 } MFRATE_DIRECTION;
   3297 
   3298 typedef enum _MFSequencerTopologyFlags {
   3299   SequencerTopologyFlags_Last   = 0x00000001
   3300 } MFSequencerTopologyFlags;
   3301 
   3302 typedef enum _MFSHUTDOWN_STATUS {
   3303   MFSHUTDOWN_INITIATED,
   3304   MFSHUTDOWN_COMPLETED
   3305 } MFSHUTDOWN_STATUS;
   3306 
   3307 typedef enum _MFSINK_WMDRMACTION {
   3308   MFSINK_WMDRMACTION_UNDEFINED    = 0,
   3309   MFSINK_WMDRMACTION_ENCODE       = 1,
   3310   MFSINK_WMDRMACTION_TRANSCODE    = 2,
   3311   MFSINK_WMDRMACTION_TRANSCRYPT   = 3,
   3312   MFSINK_WMDRMACTION_LAST         = 3
   3313 } MFSINK_WMDRMACTION;
   3314 
   3315 typedef enum MFSTREAMSINK_MARKER_TYPE {
   3316   MFSTREAMSINK_MARKER_DEFAULT,
   3317   MFSTREAMSINK_MARKER_ENDOFSEGMENT,
   3318   MFSTREAMSINK_MARKER_TICK,
   3319   MFSTREAMSINK_MARKER_EVENT
   3320 } MFSTREAMSINK_MARKER_TYPE;
   3321 
   3322 typedef enum MFTIMER_FLAGS {
   3323   MFTIMER_RELATIVE   = 0x00000001
   3324 } MFTIMER_FLAGS;
   3325 
   3326 #if (WINVER >= 0x0601)
   3327 
   3328 typedef enum MFTOPLOGY_DXVA_MODE {
   3329   MFTOPOLOGY_DXVA_DEFAULT   = 0,
   3330   MFTOPOLOGY_DXVA_NONE      = 1,
   3331   MFTOPOLOGY_DXVA_FULL      = 2
   3332 } MFTOPOLOGY_DXVA_MODE;
   3333 
   3334 typedef enum MFTOPOLOGY_HARDWARE_MODE {
   3335   MFTOPOLOGY_HWMODE_SOFTWARE_ONLY   = 0,
   3336   MFTOPOLOGY_HWMODE_USE_HARDWARE    = 1
   3337 } MFTOPOLOGY_HARDWARE_MODE;
   3338 
   3339 typedef struct _MFT_REGISTRATION_INFO {
   3340   CLSID                  clsid;
   3341   GUID                   guidCategory;
   3342   UINT32                 uiFlags;
   3343   LPCWSTR                pszName;
   3344   DWORD                  cInTypes;
   3345   MFT_REGISTER_TYPE_INFO *pInTypes;
   3346   DWORD                  cOutTypes;
   3347   MFT_REGISTER_TYPE_INFO *pOutTypes;
   3348 } MFT_REGISTRATION_INFO;
   3349 
   3350 #endif /*(WINVER >= 0x0601)*/
   3351 
   3352 typedef struct _ASFFlatPicture {
   3353   BYTE  bPictureType;
   3354   DWORD dwDataLen;
   3355 } ASF_FLAT_PICTURE;
   3356 
   3357 typedef struct _ASFFlatSynchronisedLyrics {
   3358   BYTE  bTimeStampFormat;
   3359   BYTE  bContentType;
   3360   DWORD dwLyricsLen;
   3361 } ASF_FLAT_SYNCHRONISED_LYRICS;
   3362 
   3363 typedef enum SAMPLE_PROTECTION_VERSION {
   3364   SAMPLE_PROTECTION_VERSION_NO           = 0,
   3365   SAMPLE_PROTECTION_VERSION_BASIC_LOKI   = 1,
   3366   SAMPLE_PROTECTION_VERSION_SCATTER      = 2,
   3367   SAMPLE_PROTECTION_VERSION_RC4          = 3
   3368 } SAMPLE_PROTECTION_VERSION;
   3369 
   3370 typedef struct _MFINPUTTRUSTAUTHORITY_ACTION {
   3371   MFPOLICYMANAGER_ACTION Action;
   3372   BYTE                   *pbTicket;
   3373   DWORD                  cbTicket;
   3374 } MFINPUTTRUSTAUTHORITY_ACCESS_ACTION;
   3375 
   3376 typedef struct _MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS {
   3377   DWORD                               dwSize;
   3378   DWORD                               dwVer;
   3379   DWORD                               cbSignatureOffset;
   3380   DWORD                               cbSignatureSize;
   3381   DWORD                               cbExtensionOffset;
   3382   DWORD                               cbExtensionSize;
   3383   DWORD                               cActions;
   3384   MFINPUTTRUSTAUTHORITY_ACCESS_ACTION rgOutputActions[1];
   3385 } MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS;
   3386 
   3387 typedef struct _MFNetCredentialManagerGetParam {
   3388   HRESULT hrOp;
   3389   WINBOOL    fAllowLoggedOnUser;
   3390   WINBOOL    fClearTextPackage;
   3391   LPCWSTR pszUrl;
   3392   LPCWSTR pszSite;
   3393   LPCWSTR pszRealm;
   3394   LPCWSTR pszPackage;
   3395   LONG    nRetries;
   3396 } MFNetCredentialManagerGetParam;
   3397 
   3398 #define MF_1_BYTE_ALIGNMENT     0x00000000
   3399 #define MF_2_BYTE_ALIGNMENT     0x00000001
   3400 #define MF_4_BYTE_ALIGNMENT     0x00000003
   3401 #define MF_8_BYTE_ALIGNMENT     0x00000007
   3402 #define MF_16_BYTE_ALIGNMENT    0x0000000F
   3403 #define MF_32_BYTE_ALIGNMENT    0x0000001F
   3404 #define MF_64_BYTE_ALIGNMENT    0x0000003F
   3405 #define MF_128_BYTE_ALIGNMENT   0x0000007F
   3406 #define MF_256_BYTE_ALIGNMENT   0x000000FF
   3407 #define MF_512_BYTE_ALIGNMENT   0x000001FF
   3408 
   3409 #define MEDIASINK_FIXED_STREAMS                 0x00000001
   3410 #define MEDIASINK_CANNOT_MATCH_CLOCK            0x00000002
   3411 #define MEDIASINK_RATELESS                      0x00000004
   3412 #define MEDIASINK_CLOCK_REQUIRED                0x00000008
   3413 #define MEDIASINK_CAN_PREROLL                   0x00000010
   3414 #define MEDIASINK_REQUIRE_REFERENCE_MEDIATYPE   0x00000020
   3415 
   3416 #define MF_RESOLUTION_MEDIASOURCE                                           0x00000001
   3417 #define MF_RESOLUTION_BYTESTREAM                                            0x00000002
   3418 #define MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE 0x00000010
   3419 #define MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL                        0x00000020
   3420 #define MF_RESOLUTION_READ                                                  0x00010000
   3421 #define MF_RESOLUTION_WRITE                                                 0x00020000
   3422 #ifndef __IMFMediaSink_FWD_DEFINED__
   3423 #define __IMFMediaSink_FWD_DEFINED__
   3424 typedef interface IMFMediaSink IMFMediaSink;
   3425 #endif
   3426 
   3427 #ifndef __IMFASFContentInfo_FWD_DEFINED__
   3428 #define __IMFASFContentInfo_FWD_DEFINED__
   3429 typedef interface IMFASFContentInfo IMFASFContentInfo;
   3430 #endif
   3431 
   3432 #ifndef __IMFASFIndexer_FWD_DEFINED__
   3433 #define __IMFASFIndexer_FWD_DEFINED__
   3434 typedef interface IMFASFIndexer IMFASFIndexer;
   3435 #endif
   3436 
   3437 #ifndef __IMFASFMultiplexer_FWD_DEFINED__
   3438 #define __IMFASFMultiplexer_FWD_DEFINED__
   3439 typedef interface IMFASFMultiplexer IMFASFMultiplexer;
   3440 #endif
   3441 
   3442 #ifndef __IMFASFProfile_FWD_DEFINED__
   3443 #define __IMFASFProfile_FWD_DEFINED__
   3444 typedef interface IMFASFProfile IMFASFProfile;
   3445 #endif
   3446 
   3447 #ifndef __IMFASFSplitter_FWD_DEFINED__
   3448 #define __IMFASFSplitter_FWD_DEFINED__
   3449 typedef interface IMFASFSplitter IMFASFSplitter;
   3450 #endif
   3451 
   3452 #ifndef __IMFPMPServer_FWD_DEFINED__
   3453 #define __IMFPMPServer_FWD_DEFINED__
   3454 typedef interface IMFPMPServer IMFPMPServer;
   3455 #endif
   3456 
   3457 #ifndef __IMFPresentationClock_FWD_DEFINED__
   3458 #define __IMFPresentationClock_FWD_DEFINED__
   3459 typedef interface IMFPresentationClock IMFPresentationClock;
   3460 #endif
   3461 
   3462 #ifndef __IMFNetProxyLocator_FWD_DEFINED__
   3463 #define __IMFNetProxyLocator_FWD_DEFINED__
   3464 typedef interface IMFNetProxyLocator IMFNetProxyLocator;
   3465 #endif
   3466 
   3467 #ifndef __IMFRemoteDesktopPlugin_FWD_DEFINED__
   3468 #define __IMFRemoteDesktopPlugin_FWD_DEFINED__
   3469 typedef interface IMFRemoteDesktopPlugin IMFRemoteDesktopPlugin;
   3470 #endif
   3471 
   3472 #ifndef __IMFTransform_FWD_DEFINED__
   3473 #define __IMFTransform_FWD_DEFINED__
   3474 typedef interface IMFTransform IMFTransform;
   3475 #endif
   3476 
   3477 #ifndef __IMFSampleGrabberSinkCallback_FWD_DEFINED__
   3478 #define __IMFSampleGrabberSinkCallback_FWD_DEFINED__
   3479 typedef interface IMFSampleGrabberSinkCallback IMFSampleGrabberSinkCallback;
   3480 #endif
   3481 
   3482 #ifndef __IMFSequencerSource_FWD_DEFINED__
   3483 #define __IMFSequencerSource_FWD_DEFINED__
   3484 typedef interface IMFSequencerSource IMFSequencerSource;
   3485 #endif
   3486 
   3487 #ifndef __IMFQualityManager_FWD_DEFINED__
   3488 #define __IMFQualityManager_FWD_DEFINED__
   3489 typedef interface IMFQualityManager IMFQualityManager;
   3490 #endif
   3491 
   3492 #ifndef __IMFSourceResolver_FWD_DEFINED__
   3493 #define __IMFSourceResolver_FWD_DEFINED__
   3494 typedef interface IMFSourceResolver IMFSourceResolver;
   3495 #endif
   3496 
   3497 #ifndef __IMFPresentationTimeSource_FWD_DEFINED__
   3498 #define __IMFPresentationTimeSource_FWD_DEFINED__
   3499 typedef interface IMFPresentationTimeSource IMFPresentationTimeSource;
   3500 #endif
   3501 
   3502 #ifndef __IMFTopoLoader_FWD_DEFINED__
   3503 #define __IMFTopoLoader_FWD_DEFINED__
   3504 typedef interface IMFTopoLoader IMFTopoLoader;
   3505 #endif
   3506 
   3507 #ifndef __IMFTranscodeProfile_FWD_DEFINED__
   3508 #define __IMFTranscodeProfile_FWD_DEFINED__
   3509 typedef interface IMFTranscodeProfile IMFTranscodeProfile;
   3510 #endif
   3511 
   3512 HRESULT MFCreate3GPMediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
   3513 HRESULT MFCreateAggregateSource(IMFCollection *pSourceCollection,IMFMediaSource **ppAggSource);
   3514 
   3515 HRESULT WINAPI MFCreateAlignedMemoryBuffer(DWORD cbMaxLength,DWORD fAlignmentFlags,IMFMediaBuffer **ppBuffer);
   3516 HRESULT WINAPI MFCreateASFContentInfo(IMFASFContentInfo **ppIContentInfo);
   3517 HRESULT WINAPI MFCreateASFIndexer(IMFASFIndexer **ppIIndexer);
   3518 HRESULT WINAPI MFCreateASFIndexerByteStream(IMFByteStream *pIContentByteStream,QWORD cbIndexStartOffset,IMFByteStream **pIIndexByteStream);
   3519 HRESULT WINAPI MFCreateASFMediaSink(IMFByteStream *pIByteStream,IMFMediaSink **ppIMediaSink);
   3520 HRESULT WINAPI MFCreateASFMediaSinkActivate(LPCWSTR pwszFileName,IMFASFContentInfo *pContentInfo,IMFActivate **ppIActivate);
   3521 HRESULT WINAPI MFCreateASFMultiplexer(IMFASFMultiplexer **ppIMultiplexer);
   3522 HRESULT WINAPI MFCreateASFProfile(IMFASFProfile **ppIProfile);
   3523 HRESULT WINAPI MFCreateASFProfileFromPresentationDescriptor(IMFPresentationDescriptor *pIPD,IMFASFProfile **ppIProfile);
   3524 HRESULT WINAPI MFCreateASFSplitter(IMFASFSplitter **ppISplitter);
   3525 HRESULT WINAPI MFCreateMediaSession(IMFAttributes *pConfiguration,IMFMediaSession **ppMS);
   3526 HRESULT WINAPI MFCreateMP3MediaSink(IMFByteStream *pTargetByteStream,IMFMediaSink **ppMediaSink);
   3527 HRESULT WINAPI MFCreateMPEG4MediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
   3528 HRESULT WINAPI MFCreateNetSchemePlugin(REFIID riid,LPVOID *ppvHandler);
   3529 HRESULT WINAPI MFCreatePMPServer(DWORD dwCreationFlags,IMFPMPServer **ppPMPServer);
   3530 HRESULT WINAPI MFCreatePMPMediaSession(DWORD dwCreationFlags,IMFAttributes *pConfiguration,IMFMediaSession **ppMediaSession,IMFActivate **ppEnablerActivate);
   3531 HRESULT WINAPI MFCreatePathFromURL(LPCWSTR pwszFileURL,LPWSTR *ppwszFilePath);
   3532 HRESULT WINAPI MFCreatePresentationClock(IMFPresentationClock **ppPresentationClock);
   3533 HRESULT WINAPI MFCreatePresentationDescriptor(DWORD cStreamDescriptors,IMFStreamDescriptor **apStreamDescriptors,IMFPresentationDescriptor **ppPresentationDescriptor);
   3534 HRESULT WINAPI MFCreatePresentationDescriptorFromASFProfile(IMFASFProfile *pIProfile,IMFPresentationDescriptor **ppIPD);
   3535 HRESULT WINAPI MFCreateProxyLocator(LPCWSTR pszProtocol,IPropertyStore *pProxyConfig,IMFNetProxyLocator **ppProxyLocator);
   3536 HRESULT WINAPI MFCreateRemoteDesktopPlugin(IMFRemoteDesktopPlugin **ppPlugin);
   3537 HRESULT WINAPI MFCreateSample(IMFSample **ppIMFSample);
   3538 HRESULT WINAPI MFCreateSampleCopierMFT(IMFTransform **ppCopierMFT);
   3539 HRESULT WINAPI MFCreateSampleGrabberSinkActivate(IMFMediaType *pIMFMediaType,IMFSampleGrabberSinkCallback *pIMFSampleGrabberSinkCallback,IMFActivate **ppIActivate);
   3540 HRESULT WINAPI MFCreateSequencerSource(IUnknown *pReserved,IMFSequencerSource **ppSequencerSource);
   3541 HRESULT WINAPI MFCreateSimpleTypeHandler(IMFMediaTypeHandler **ppHandler);
   3542 HRESULT WINAPI MFCreateStandardQualityManager(IMFQualityManager **ppQualityManager);
   3543 HRESULT WINAPI MFCreateStreamDescriptor(DWORD dwStreamIdentifier,DWORD cMediaTypes,IMFMediaType **apMediaTypes,IMFStreamDescriptor **ppDescriptor);
   3544 HRESULT WINAPI MFCreateSourceResolver(IMFSourceResolver **ppISourceResolver);
   3545 HRESULT WINAPI MFCreateSystemTimeSource(IMFPresentationTimeSource **ppSystemTimeSource);
   3546 HRESULT WINAPI MFCreateTopoLoader(IMFTopoLoader **ppObj);
   3547 HRESULT WINAPI MFCreateTopology(IMFTopology **ppTopo);
   3548 HRESULT WINAPI MFCreateTopologyNode(MF_TOPOLOGY_TYPE NodeType,IMFTopologyNode **ppNode);
   3549 HRESULT WINAPI MFCreateVideoRenderer(REFIID riidRenderer,void **ppVideoRenderer);
   3550 HRESULT WINAPI MFCreateVideoRendererActivate(HWND hwndVideo,IMFActivate **ppActivate);
   3551 HRESULT WINAPI MFGetService(IUnknown *punkObject,REFGUID guidService,REFIID riid,LPVOID *ppvObject);
   3552 HRESULT WINAPI MFGetSupportedMimeTypes(PROPVARIANT *pPropVarMimeTypeArray);
   3553 HRESULT WINAPI MFGetSupportedSchemes(PROPVARIANT *pPropVarSchemeArray);
   3554 MFTIME WINAPI MFGetSystemTime(void);
   3555 HRESULT WINAPI MFShutdownObject(IUnknown *pUnk);
   3556 HRESULT WINAPI CreateNamedPropertyStore(INamedPropertyStore **ppStore);
   3557 HRESULT WINAPI CreatePropertyStore(IPropertyStore **ppStore);
   3558 #if (WINVER >= 0x0601)
   3559 
   3560 HRESULT WINAPI MFCreateTranscodeProfile(IMFTranscodeProfile **ppTranscodeProfile);
   3561 HRESULT WINAPI MFCreateTranscodeSinkActivate(IMFActivate **ppActivate);
   3562 HRESULT WINAPI MFCreateTranscodeTopology(IMFMediaSource *pSrc,LPCWSTR pwszOutputFilePath,IMFTranscodeProfile *pProfile,IMFTopology **ppTranscodeTopo);
   3563 HRESULT WINAPI MFEnumDeviceSources(IMFAttributes *pAttributes,IMFActivate ***pppSourceActivate,UINT32 *pcSourceActivate);
   3564 HRESULT WINAPI MFGetTopoNodeCurrentType(IMFTopologyNode *pNode,DWORD dwStreamIndex,WINBOOL fOutput,IMFMediaType **ppType);
   3565 HRESULT WINAPI MFTranscodeGetAudioOutputAvailableTypes(REFGUID guidSubType,DWORD dwMFTFlags,IMFAttributes *pCodecConfig,IMFCollection **ppAvailableTypes);
   3566 #endif
   3567 /* Begin additional prototypes for all interfaces */
   3568 
   3569 ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
   3570 unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
   3571 unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
   3572 void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
   3573 ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
   3574 unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
   3575 unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
   3576 void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
   3577 
   3578 /* End additional prototypes */
   3579 
   3580 #ifdef __cplusplus
   3581 }
   3582 #endif
   3583 
   3584 #endif /* __mfidl_h__ */
   3585