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