master
   1/*** Autogenerated by WIDL 10.4 from include/mfidl.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 __mfidl_h__
  17#define __mfidl_h__
  18
  19/* Forward declarations */
  20
  21#ifndef __IMFTopologyNode_FWD_DEFINED__
  22#define __IMFTopologyNode_FWD_DEFINED__
  23typedef interface IMFTopologyNode IMFTopologyNode;
  24#ifdef __cplusplus
  25interface IMFTopologyNode;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IMFTopology_FWD_DEFINED__
  30#define __IMFTopology_FWD_DEFINED__
  31typedef interface IMFTopology IMFTopology;
  32#ifdef __cplusplus
  33interface IMFTopology;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IMFGetService_FWD_DEFINED__
  38#define __IMFGetService_FWD_DEFINED__
  39typedef interface IMFGetService IMFGetService;
  40#ifdef __cplusplus
  41interface IMFGetService;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IMFClock_FWD_DEFINED__
  46#define __IMFClock_FWD_DEFINED__
  47typedef interface IMFClock IMFClock;
  48#ifdef __cplusplus
  49interface IMFClock;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IMFMediaSession_FWD_DEFINED__
  54#define __IMFMediaSession_FWD_DEFINED__
  55typedef interface IMFMediaSession IMFMediaSession;
  56#ifdef __cplusplus
  57interface IMFMediaSession;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IMFMediaTypeHandler_FWD_DEFINED__
  62#define __IMFMediaTypeHandler_FWD_DEFINED__
  63typedef interface IMFMediaTypeHandler IMFMediaTypeHandler;
  64#ifdef __cplusplus
  65interface IMFMediaTypeHandler;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IMFStreamDescriptor_FWD_DEFINED__
  70#define __IMFStreamDescriptor_FWD_DEFINED__
  71typedef interface IMFStreamDescriptor IMFStreamDescriptor;
  72#ifdef __cplusplus
  73interface IMFStreamDescriptor;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IMFPresentationDescriptor_FWD_DEFINED__
  78#define __IMFPresentationDescriptor_FWD_DEFINED__
  79typedef interface IMFPresentationDescriptor IMFPresentationDescriptor;
  80#ifdef __cplusplus
  81interface IMFPresentationDescriptor;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IMFMediaSource_FWD_DEFINED__
  86#define __IMFMediaSource_FWD_DEFINED__
  87typedef interface IMFMediaSource IMFMediaSource;
  88#ifdef __cplusplus
  89interface IMFMediaSource;
  90#endif /* __cplusplus */
  91#endif
  92
  93#ifndef __IMFMediaSourceEx_FWD_DEFINED__
  94#define __IMFMediaSourceEx_FWD_DEFINED__
  95typedef interface IMFMediaSourceEx IMFMediaSourceEx;
  96#ifdef __cplusplus
  97interface IMFMediaSourceEx;
  98#endif /* __cplusplus */
  99#endif
 100
 101#ifndef __IMFByteStreamBuffering_FWD_DEFINED__
 102#define __IMFByteStreamBuffering_FWD_DEFINED__
 103typedef interface IMFByteStreamBuffering IMFByteStreamBuffering;
 104#ifdef __cplusplus
 105interface IMFByteStreamBuffering;
 106#endif /* __cplusplus */
 107#endif
 108
 109#ifndef __IMFClockStateSink_FWD_DEFINED__
 110#define __IMFClockStateSink_FWD_DEFINED__
 111typedef interface IMFClockStateSink IMFClockStateSink;
 112#ifdef __cplusplus
 113interface IMFClockStateSink;
 114#endif /* __cplusplus */
 115#endif
 116
 117#ifndef __IMFAudioStreamVolume_FWD_DEFINED__
 118#define __IMFAudioStreamVolume_FWD_DEFINED__
 119typedef interface IMFAudioStreamVolume IMFAudioStreamVolume;
 120#ifdef __cplusplus
 121interface IMFAudioStreamVolume;
 122#endif /* __cplusplus */
 123#endif
 124
 125#ifndef __IMFMediaSink_FWD_DEFINED__
 126#define __IMFMediaSink_FWD_DEFINED__
 127typedef interface IMFMediaSink IMFMediaSink;
 128#ifdef __cplusplus
 129interface IMFMediaSink;
 130#endif /* __cplusplus */
 131#endif
 132
 133#ifndef __IMFFinalizableMediaSink_FWD_DEFINED__
 134#define __IMFFinalizableMediaSink_FWD_DEFINED__
 135typedef interface IMFFinalizableMediaSink IMFFinalizableMediaSink;
 136#ifdef __cplusplus
 137interface IMFFinalizableMediaSink;
 138#endif /* __cplusplus */
 139#endif
 140
 141#ifndef __IMFMediaSinkPreroll_FWD_DEFINED__
 142#define __IMFMediaSinkPreroll_FWD_DEFINED__
 143typedef interface IMFMediaSinkPreroll IMFMediaSinkPreroll;
 144#ifdef __cplusplus
 145interface IMFMediaSinkPreroll;
 146#endif /* __cplusplus */
 147#endif
 148
 149#ifndef __IMFMediaStream_FWD_DEFINED__
 150#define __IMFMediaStream_FWD_DEFINED__
 151typedef interface IMFMediaStream IMFMediaStream;
 152#ifdef __cplusplus
 153interface IMFMediaStream;
 154#endif /* __cplusplus */
 155#endif
 156
 157#ifndef __IMFMetadata_FWD_DEFINED__
 158#define __IMFMetadata_FWD_DEFINED__
 159typedef interface IMFMetadata IMFMetadata;
 160#ifdef __cplusplus
 161interface IMFMetadata;
 162#endif /* __cplusplus */
 163#endif
 164
 165#ifndef __IMFMetadataProvider_FWD_DEFINED__
 166#define __IMFMetadataProvider_FWD_DEFINED__
 167typedef interface IMFMetadataProvider IMFMetadataProvider;
 168#ifdef __cplusplus
 169interface IMFMetadataProvider;
 170#endif /* __cplusplus */
 171#endif
 172
 173#ifndef __IMFPresentationTimeSource_FWD_DEFINED__
 174#define __IMFPresentationTimeSource_FWD_DEFINED__
 175typedef interface IMFPresentationTimeSource IMFPresentationTimeSource;
 176#ifdef __cplusplus
 177interface IMFPresentationTimeSource;
 178#endif /* __cplusplus */
 179#endif
 180
 181#ifndef __IMFPresentationClock_FWD_DEFINED__
 182#define __IMFPresentationClock_FWD_DEFINED__
 183typedef interface IMFPresentationClock IMFPresentationClock;
 184#ifdef __cplusplus
 185interface IMFPresentationClock;
 186#endif /* __cplusplus */
 187#endif
 188
 189#ifndef __IMFRateControl_FWD_DEFINED__
 190#define __IMFRateControl_FWD_DEFINED__
 191typedef interface IMFRateControl IMFRateControl;
 192#ifdef __cplusplus
 193interface IMFRateControl;
 194#endif /* __cplusplus */
 195#endif
 196
 197#ifndef __IMFRateSupport_FWD_DEFINED__
 198#define __IMFRateSupport_FWD_DEFINED__
 199typedef interface IMFRateSupport IMFRateSupport;
 200#ifdef __cplusplus
 201interface IMFRateSupport;
 202#endif /* __cplusplus */
 203#endif
 204
 205#ifndef __IMFSampleGrabberSinkCallback_FWD_DEFINED__
 206#define __IMFSampleGrabberSinkCallback_FWD_DEFINED__
 207typedef interface IMFSampleGrabberSinkCallback IMFSampleGrabberSinkCallback;
 208#ifdef __cplusplus
 209interface IMFSampleGrabberSinkCallback;
 210#endif /* __cplusplus */
 211#endif
 212
 213#ifndef __IMFShutdown_FWD_DEFINED__
 214#define __IMFShutdown_FWD_DEFINED__
 215typedef interface IMFShutdown IMFShutdown;
 216#ifdef __cplusplus
 217interface IMFShutdown;
 218#endif /* __cplusplus */
 219#endif
 220
 221#ifndef __IMFSimpleAudioVolume_FWD_DEFINED__
 222#define __IMFSimpleAudioVolume_FWD_DEFINED__
 223typedef interface IMFSimpleAudioVolume IMFSimpleAudioVolume;
 224#ifdef __cplusplus
 225interface IMFSimpleAudioVolume;
 226#endif /* __cplusplus */
 227#endif
 228
 229#ifndef __IMFSourceResolver_FWD_DEFINED__
 230#define __IMFSourceResolver_FWD_DEFINED__
 231typedef interface IMFSourceResolver IMFSourceResolver;
 232#ifdef __cplusplus
 233interface IMFSourceResolver;
 234#endif /* __cplusplus */
 235#endif
 236
 237#ifndef __IMFStreamSink_FWD_DEFINED__
 238#define __IMFStreamSink_FWD_DEFINED__
 239typedef interface IMFStreamSink IMFStreamSink;
 240#ifdef __cplusplus
 241interface IMFStreamSink;
 242#endif /* __cplusplus */
 243#endif
 244
 245#ifndef __IMFTimer_FWD_DEFINED__
 246#define __IMFTimer_FWD_DEFINED__
 247typedef interface IMFTimer IMFTimer;
 248#ifdef __cplusplus
 249interface IMFTimer;
 250#endif /* __cplusplus */
 251#endif
 252
 253#ifndef __IMFTopoLoader_FWD_DEFINED__
 254#define __IMFTopoLoader_FWD_DEFINED__
 255typedef interface IMFTopoLoader IMFTopoLoader;
 256#ifdef __cplusplus
 257interface IMFTopoLoader;
 258#endif /* __cplusplus */
 259#endif
 260
 261#ifndef __IMFVideoSampleAllocator_FWD_DEFINED__
 262#define __IMFVideoSampleAllocator_FWD_DEFINED__
 263typedef interface IMFVideoSampleAllocator IMFVideoSampleAllocator;
 264#ifdef __cplusplus
 265interface IMFVideoSampleAllocator;
 266#endif /* __cplusplus */
 267#endif
 268
 269#ifndef __IMFVideoSampleAllocatorNotify_FWD_DEFINED__
 270#define __IMFVideoSampleAllocatorNotify_FWD_DEFINED__
 271typedef interface IMFVideoSampleAllocatorNotify IMFVideoSampleAllocatorNotify;
 272#ifdef __cplusplus
 273interface IMFVideoSampleAllocatorNotify;
 274#endif /* __cplusplus */
 275#endif
 276
 277#ifndef __IMFVideoSampleAllocatorNotifyEx_FWD_DEFINED__
 278#define __IMFVideoSampleAllocatorNotifyEx_FWD_DEFINED__
 279typedef interface IMFVideoSampleAllocatorNotifyEx IMFVideoSampleAllocatorNotifyEx;
 280#ifdef __cplusplus
 281interface IMFVideoSampleAllocatorNotifyEx;
 282#endif /* __cplusplus */
 283#endif
 284
 285#ifndef __IMFVideoSampleAllocatorCallback_FWD_DEFINED__
 286#define __IMFVideoSampleAllocatorCallback_FWD_DEFINED__
 287typedef interface IMFVideoSampleAllocatorCallback IMFVideoSampleAllocatorCallback;
 288#ifdef __cplusplus
 289interface IMFVideoSampleAllocatorCallback;
 290#endif /* __cplusplus */
 291#endif
 292
 293#ifndef __IMFVideoSampleAllocatorEx_FWD_DEFINED__
 294#define __IMFVideoSampleAllocatorEx_FWD_DEFINED__
 295typedef interface IMFVideoSampleAllocatorEx IMFVideoSampleAllocatorEx;
 296#ifdef __cplusplus
 297interface IMFVideoSampleAllocatorEx;
 298#endif /* __cplusplus */
 299#endif
 300
 301#ifndef __IMFVideoProcessorControl_FWD_DEFINED__
 302#define __IMFVideoProcessorControl_FWD_DEFINED__
 303typedef interface IMFVideoProcessorControl IMFVideoProcessorControl;
 304#ifdef __cplusplus
 305interface IMFVideoProcessorControl;
 306#endif /* __cplusplus */
 307#endif
 308
 309#ifndef __IMFVideoProcessorControl2_FWD_DEFINED__
 310#define __IMFVideoProcessorControl2_FWD_DEFINED__
 311typedef interface IMFVideoProcessorControl2 IMFVideoProcessorControl2;
 312#ifdef __cplusplus
 313interface IMFVideoProcessorControl2;
 314#endif /* __cplusplus */
 315#endif
 316
 317#ifndef __IMFVideoProcessorControl3_FWD_DEFINED__
 318#define __IMFVideoProcessorControl3_FWD_DEFINED__
 319typedef interface IMFVideoProcessorControl3 IMFVideoProcessorControl3;
 320#ifdef __cplusplus
 321interface IMFVideoProcessorControl3;
 322#endif /* __cplusplus */
 323#endif
 324
 325#ifndef __IMFVideoRendererEffectControl_FWD_DEFINED__
 326#define __IMFVideoRendererEffectControl_FWD_DEFINED__
 327typedef interface IMFVideoRendererEffectControl IMFVideoRendererEffectControl;
 328#ifdef __cplusplus
 329interface IMFVideoRendererEffectControl;
 330#endif /* __cplusplus */
 331#endif
 332
 333/* Headers for imported files */
 334
 335#include <mfobjects.h>
 336#include <mftransform.h>
 337
 338#ifdef __cplusplus
 339extern "C" {
 340#endif
 341
 342#include <windef.h>
 343typedef enum MFSESSION_SETTOPOLOGY_FLAGS {
 344    MFSESSION_SETTOPOLOGY_IMMEDIATE = 0x1,
 345    MFSESSION_SETTOPOLOGY_NORESOLUTION = 0x2,
 346    MFSESSION_SETTOPOLOGY_CLEAR_CURRENT = 0x4
 347} MFSESSION_SETTOPOLOGY_FLAGS;
 348typedef enum MFSESSION_GETFULLTOPOLOGY_FLAGS {
 349    MFSESSION_GETFULLTOPOLOGY_CURRENT = 0x1
 350} MFSESSION_GETFULLTOPOLOGY_FLAGS;
 351typedef enum MFPMPSESSION_CREATION_FLAGS {
 352    MFPMPSESSION_UNPROTECTED_PROCESS = 0x1,
 353    MFPMPSESSION_IN_PROCESS = 0x2
 354} MFPMPSESSION_CREATION_FLAGS;
 355typedef UINT64 TOPOID;
 356typedef enum MF_TOPOLOGY_TYPE {
 357    MF_TOPOLOGY_OUTPUT_NODE = 0,
 358    MF_TOPOLOGY_SOURCESTREAM_NODE = 1,
 359    MF_TOPOLOGY_TRANSFORM_NODE = 2,
 360    MF_TOPOLOGY_TEE_NODE = 3,
 361    MF_TOPOLOGY_MAX = 0xffffffff
 362} MF_TOPOLOGY_TYPE;
 363/*****************************************************************************
 364 * IMFTopologyNode interface
 365 */
 366#ifndef __IMFTopologyNode_INTERFACE_DEFINED__
 367#define __IMFTopologyNode_INTERFACE_DEFINED__
 368
 369DEFINE_GUID(IID_IMFTopologyNode, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x30);
 370#if defined(__cplusplus) && !defined(CINTERFACE)
 371MIDL_INTERFACE("83cf873a-f6da-4bc8-823f-bacfd55dc430")
 372IMFTopologyNode : public IMFAttributes
 373{
 374    virtual HRESULT STDMETHODCALLTYPE SetObject(
 375        IUnknown *pObject) = 0;
 376
 377    virtual HRESULT STDMETHODCALLTYPE GetObject(
 378        IUnknown **ppObject) = 0;
 379
 380    virtual HRESULT STDMETHODCALLTYPE GetNodeType(
 381        MF_TOPOLOGY_TYPE *pType) = 0;
 382
 383    virtual HRESULT STDMETHODCALLTYPE GetTopoNodeID(
 384        TOPOID *pID) = 0;
 385
 386    virtual HRESULT STDMETHODCALLTYPE SetTopoNodeID(
 387        TOPOID ullTopoID) = 0;
 388
 389    virtual HRESULT STDMETHODCALLTYPE GetInputCount(
 390        DWORD *pcInputs) = 0;
 391
 392    virtual HRESULT STDMETHODCALLTYPE GetOutputCount(
 393        DWORD *pcOutputs) = 0;
 394
 395    virtual HRESULT STDMETHODCALLTYPE ConnectOutput(
 396        DWORD dwOutputIndex,
 397        IMFTopologyNode *pDownstreamNode,
 398        DWORD dwInputIndexOnDownstreamNode) = 0;
 399
 400    virtual HRESULT STDMETHODCALLTYPE DisconnectOutput(
 401        DWORD dwOutputIndex) = 0;
 402
 403    virtual HRESULT STDMETHODCALLTYPE GetInput(
 404        DWORD dwInputIndex,
 405        IMFTopologyNode **ppUpstreamNode,
 406        DWORD *pdwOutputIndexOnUpstreamNode) = 0;
 407
 408    virtual HRESULT STDMETHODCALLTYPE GetOutput(
 409        DWORD dwOutputIndex,
 410        IMFTopologyNode **ppDownstreamNode,
 411        DWORD *pdwInputIndexOnDownstreamNode) = 0;
 412
 413    virtual HRESULT STDMETHODCALLTYPE SetOutputPrefType(
 414        DWORD dwOutputIndex,
 415        IMFMediaType *pType) = 0;
 416
 417    virtual HRESULT STDMETHODCALLTYPE GetOutputPrefType(
 418        DWORD dwOutputIndex,
 419        IMFMediaType **ppType) = 0;
 420
 421    virtual HRESULT STDMETHODCALLTYPE SetInputPrefType(
 422        DWORD dwInputIndex,
 423        IMFMediaType *pType) = 0;
 424
 425    virtual HRESULT STDMETHODCALLTYPE GetInputPrefType(
 426        DWORD dwInputIndex,
 427        IMFMediaType **ppType) = 0;
 428
 429    virtual HRESULT STDMETHODCALLTYPE CloneFrom(
 430        IMFTopologyNode *pNode) = 0;
 431
 432};
 433#ifdef __CRT_UUID_DECL
 434__CRT_UUID_DECL(IMFTopologyNode, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x30)
 435#endif
 436#else
 437typedef struct IMFTopologyNodeVtbl {
 438    BEGIN_INTERFACE
 439
 440    /*** IUnknown methods ***/
 441    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 442        IMFTopologyNode *This,
 443        REFIID riid,
 444        void **ppvObject);
 445
 446    ULONG (STDMETHODCALLTYPE *AddRef)(
 447        IMFTopologyNode *This);
 448
 449    ULONG (STDMETHODCALLTYPE *Release)(
 450        IMFTopologyNode *This);
 451
 452    /*** IMFAttributes methods ***/
 453    HRESULT (STDMETHODCALLTYPE *GetItem)(
 454        IMFTopologyNode *This,
 455        REFGUID guidKey,
 456        PROPVARIANT *pValue);
 457
 458    HRESULT (STDMETHODCALLTYPE *GetItemType)(
 459        IMFTopologyNode *This,
 460        REFGUID guidKey,
 461        MF_ATTRIBUTE_TYPE *pType);
 462
 463    HRESULT (STDMETHODCALLTYPE *CompareItem)(
 464        IMFTopologyNode *This,
 465        REFGUID guidKey,
 466        REFPROPVARIANT Value,
 467        WINBOOL *pbResult);
 468
 469    HRESULT (STDMETHODCALLTYPE *Compare)(
 470        IMFTopologyNode *This,
 471        IMFAttributes *pTheirs,
 472        MF_ATTRIBUTES_MATCH_TYPE MatchType,
 473        WINBOOL *pbResult);
 474
 475    HRESULT (STDMETHODCALLTYPE *GetUINT32)(
 476        IMFTopologyNode *This,
 477        REFGUID guidKey,
 478        UINT32 *punValue);
 479
 480    HRESULT (STDMETHODCALLTYPE *GetUINT64)(
 481        IMFTopologyNode *This,
 482        REFGUID guidKey,
 483        UINT64 *punValue);
 484
 485    HRESULT (STDMETHODCALLTYPE *GetDouble)(
 486        IMFTopologyNode *This,
 487        REFGUID guidKey,
 488        double *pfValue);
 489
 490    HRESULT (STDMETHODCALLTYPE *GetGUID)(
 491        IMFTopologyNode *This,
 492        REFGUID guidKey,
 493        GUID *pguidValue);
 494
 495    HRESULT (STDMETHODCALLTYPE *GetStringLength)(
 496        IMFTopologyNode *This,
 497        REFGUID guidKey,
 498        UINT32 *pcchLength);
 499
 500    HRESULT (STDMETHODCALLTYPE *GetString)(
 501        IMFTopologyNode *This,
 502        REFGUID guidKey,
 503        LPWSTR pwszValue,
 504        UINT32 cchBufSize,
 505        UINT32 *pcchLength);
 506
 507    HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
 508        IMFTopologyNode *This,
 509        REFGUID guidKey,
 510        LPWSTR *ppwszValue,
 511        UINT32 *pcchLength);
 512
 513    HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
 514        IMFTopologyNode *This,
 515        REFGUID guidKey,
 516        UINT32 *pcbBlobSize);
 517
 518    HRESULT (STDMETHODCALLTYPE *GetBlob)(
 519        IMFTopologyNode *This,
 520        REFGUID guidKey,
 521        UINT8 *pBuf,
 522        UINT32 cbBufSize,
 523        UINT32 *pcbBlobSize);
 524
 525    HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
 526        IMFTopologyNode *This,
 527        REFGUID guidKey,
 528        UINT8 **ppBuf,
 529        UINT32 *pcbSize);
 530
 531    HRESULT (STDMETHODCALLTYPE *GetUnknown)(
 532        IMFTopologyNode *This,
 533        REFGUID guidKey,
 534        REFIID riid,
 535        LPVOID *ppv);
 536
 537    HRESULT (STDMETHODCALLTYPE *SetItem)(
 538        IMFTopologyNode *This,
 539        REFGUID guidKey,
 540        REFPROPVARIANT Value);
 541
 542    HRESULT (STDMETHODCALLTYPE *DeleteItem)(
 543        IMFTopologyNode *This,
 544        REFGUID guidKey);
 545
 546    HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
 547        IMFTopologyNode *This);
 548
 549    HRESULT (STDMETHODCALLTYPE *SetUINT32)(
 550        IMFTopologyNode *This,
 551        REFGUID guidKey,
 552        UINT32 unValue);
 553
 554    HRESULT (STDMETHODCALLTYPE *SetUINT64)(
 555        IMFTopologyNode *This,
 556        REFGUID guidKey,
 557        UINT64 unValue);
 558
 559    HRESULT (STDMETHODCALLTYPE *SetDouble)(
 560        IMFTopologyNode *This,
 561        REFGUID guidKey,
 562        double fValue);
 563
 564    HRESULT (STDMETHODCALLTYPE *SetGUID)(
 565        IMFTopologyNode *This,
 566        REFGUID guidKey,
 567        REFGUID guidValue);
 568
 569    HRESULT (STDMETHODCALLTYPE *SetString)(
 570        IMFTopologyNode *This,
 571        REFGUID guidKey,
 572        LPCWSTR wszValue);
 573
 574    HRESULT (STDMETHODCALLTYPE *SetBlob)(
 575        IMFTopologyNode *This,
 576        REFGUID guidKey,
 577        const UINT8 *pBuf,
 578        UINT32 cbBufSize);
 579
 580    HRESULT (STDMETHODCALLTYPE *SetUnknown)(
 581        IMFTopologyNode *This,
 582        REFGUID guidKey,
 583        IUnknown *pUnknown);
 584
 585    HRESULT (STDMETHODCALLTYPE *LockStore)(
 586        IMFTopologyNode *This);
 587
 588    HRESULT (STDMETHODCALLTYPE *UnlockStore)(
 589        IMFTopologyNode *This);
 590
 591    HRESULT (STDMETHODCALLTYPE *GetCount)(
 592        IMFTopologyNode *This,
 593        UINT32 *pcItems);
 594
 595    HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
 596        IMFTopologyNode *This,
 597        UINT32 unIndex,
 598        GUID *pguidKey,
 599        PROPVARIANT *pValue);
 600
 601    HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
 602        IMFTopologyNode *This,
 603        IMFAttributes *pDest);
 604
 605    /*** IMFTopologyNode methods ***/
 606    HRESULT (STDMETHODCALLTYPE *SetObject)(
 607        IMFTopologyNode *This,
 608        IUnknown *pObject);
 609
 610    HRESULT (STDMETHODCALLTYPE *GetObject)(
 611        IMFTopologyNode *This,
 612        IUnknown **ppObject);
 613
 614    HRESULT (STDMETHODCALLTYPE *GetNodeType)(
 615        IMFTopologyNode *This,
 616        MF_TOPOLOGY_TYPE *pType);
 617
 618    HRESULT (STDMETHODCALLTYPE *GetTopoNodeID)(
 619        IMFTopologyNode *This,
 620        TOPOID *pID);
 621
 622    HRESULT (STDMETHODCALLTYPE *SetTopoNodeID)(
 623        IMFTopologyNode *This,
 624        TOPOID ullTopoID);
 625
 626    HRESULT (STDMETHODCALLTYPE *GetInputCount)(
 627        IMFTopologyNode *This,
 628        DWORD *pcInputs);
 629
 630    HRESULT (STDMETHODCALLTYPE *GetOutputCount)(
 631        IMFTopologyNode *This,
 632        DWORD *pcOutputs);
 633
 634    HRESULT (STDMETHODCALLTYPE *ConnectOutput)(
 635        IMFTopologyNode *This,
 636        DWORD dwOutputIndex,
 637        IMFTopologyNode *pDownstreamNode,
 638        DWORD dwInputIndexOnDownstreamNode);
 639
 640    HRESULT (STDMETHODCALLTYPE *DisconnectOutput)(
 641        IMFTopologyNode *This,
 642        DWORD dwOutputIndex);
 643
 644    HRESULT (STDMETHODCALLTYPE *GetInput)(
 645        IMFTopologyNode *This,
 646        DWORD dwInputIndex,
 647        IMFTopologyNode **ppUpstreamNode,
 648        DWORD *pdwOutputIndexOnUpstreamNode);
 649
 650    HRESULT (STDMETHODCALLTYPE *GetOutput)(
 651        IMFTopologyNode *This,
 652        DWORD dwOutputIndex,
 653        IMFTopologyNode **ppDownstreamNode,
 654        DWORD *pdwInputIndexOnDownstreamNode);
 655
 656    HRESULT (STDMETHODCALLTYPE *SetOutputPrefType)(
 657        IMFTopologyNode *This,
 658        DWORD dwOutputIndex,
 659        IMFMediaType *pType);
 660
 661    HRESULT (STDMETHODCALLTYPE *GetOutputPrefType)(
 662        IMFTopologyNode *This,
 663        DWORD dwOutputIndex,
 664        IMFMediaType **ppType);
 665
 666    HRESULT (STDMETHODCALLTYPE *SetInputPrefType)(
 667        IMFTopologyNode *This,
 668        DWORD dwInputIndex,
 669        IMFMediaType *pType);
 670
 671    HRESULT (STDMETHODCALLTYPE *GetInputPrefType)(
 672        IMFTopologyNode *This,
 673        DWORD dwInputIndex,
 674        IMFMediaType **ppType);
 675
 676    HRESULT (STDMETHODCALLTYPE *CloneFrom)(
 677        IMFTopologyNode *This,
 678        IMFTopologyNode *pNode);
 679
 680    END_INTERFACE
 681} IMFTopologyNodeVtbl;
 682
 683interface IMFTopologyNode {
 684    CONST_VTBL IMFTopologyNodeVtbl* lpVtbl;
 685};
 686
 687#ifdef COBJMACROS
 688#ifndef WIDL_C_INLINE_WRAPPERS
 689/*** IUnknown methods ***/
 690#define IMFTopologyNode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 691#define IMFTopologyNode_AddRef(This) (This)->lpVtbl->AddRef(This)
 692#define IMFTopologyNode_Release(This) (This)->lpVtbl->Release(This)
 693/*** IMFAttributes methods ***/
 694#define IMFTopologyNode_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
 695#define IMFTopologyNode_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
 696#define IMFTopologyNode_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
 697#define IMFTopologyNode_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
 698#define IMFTopologyNode_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
 699#define IMFTopologyNode_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
 700#define IMFTopologyNode_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
 701#define IMFTopologyNode_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
 702#define IMFTopologyNode_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
 703#define IMFTopologyNode_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
 704#define IMFTopologyNode_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
 705#define IMFTopologyNode_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
 706#define IMFTopologyNode_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
 707#define IMFTopologyNode_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
 708#define IMFTopologyNode_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
 709#define IMFTopologyNode_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
 710#define IMFTopologyNode_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
 711#define IMFTopologyNode_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
 712#define IMFTopologyNode_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
 713#define IMFTopologyNode_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
 714#define IMFTopologyNode_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
 715#define IMFTopologyNode_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
 716#define IMFTopologyNode_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
 717#define IMFTopologyNode_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
 718#define IMFTopologyNode_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
 719#define IMFTopologyNode_LockStore(This) (This)->lpVtbl->LockStore(This)
 720#define IMFTopologyNode_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
 721#define IMFTopologyNode_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
 722#define IMFTopologyNode_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
 723#define IMFTopologyNode_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
 724/*** IMFTopologyNode methods ***/
 725#define IMFTopologyNode_SetObject(This,pObject) (This)->lpVtbl->SetObject(This,pObject)
 726#define IMFTopologyNode_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
 727#define IMFTopologyNode_GetNodeType(This,pType) (This)->lpVtbl->GetNodeType(This,pType)
 728#define IMFTopologyNode_GetTopoNodeID(This,pID) (This)->lpVtbl->GetTopoNodeID(This,pID)
 729#define IMFTopologyNode_SetTopoNodeID(This,ullTopoID) (This)->lpVtbl->SetTopoNodeID(This,ullTopoID)
 730#define IMFTopologyNode_GetInputCount(This,pcInputs) (This)->lpVtbl->GetInputCount(This,pcInputs)
 731#define IMFTopologyNode_GetOutputCount(This,pcOutputs) (This)->lpVtbl->GetOutputCount(This,pcOutputs)
 732#define IMFTopologyNode_ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode) (This)->lpVtbl->ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode)
 733#define IMFTopologyNode_DisconnectOutput(This,dwOutputIndex) (This)->lpVtbl->DisconnectOutput(This,dwOutputIndex)
 734#define IMFTopologyNode_GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode) (This)->lpVtbl->GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode)
 735#define IMFTopologyNode_GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode) (This)->lpVtbl->GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode)
 736#define IMFTopologyNode_SetOutputPrefType(This,dwOutputIndex,pType) (This)->lpVtbl->SetOutputPrefType(This,dwOutputIndex,pType)
 737#define IMFTopologyNode_GetOutputPrefType(This,dwOutputIndex,ppType) (This)->lpVtbl->GetOutputPrefType(This,dwOutputIndex,ppType)
 738#define IMFTopologyNode_SetInputPrefType(This,dwInputIndex,pType) (This)->lpVtbl->SetInputPrefType(This,dwInputIndex,pType)
 739#define IMFTopologyNode_GetInputPrefType(This,dwInputIndex,ppType) (This)->lpVtbl->GetInputPrefType(This,dwInputIndex,ppType)
 740#define IMFTopologyNode_CloneFrom(This,pNode) (This)->lpVtbl->CloneFrom(This,pNode)
 741#else
 742/*** IUnknown methods ***/
 743static inline HRESULT IMFTopologyNode_QueryInterface(IMFTopologyNode* This,REFIID riid,void **ppvObject) {
 744    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 745}
 746static inline ULONG IMFTopologyNode_AddRef(IMFTopologyNode* This) {
 747    return This->lpVtbl->AddRef(This);
 748}
 749static inline ULONG IMFTopologyNode_Release(IMFTopologyNode* This) {
 750    return This->lpVtbl->Release(This);
 751}
 752/*** IMFAttributes methods ***/
 753static inline HRESULT IMFTopologyNode_GetItem(IMFTopologyNode* This,REFGUID guidKey,PROPVARIANT *pValue) {
 754    return This->lpVtbl->GetItem(This,guidKey,pValue);
 755}
 756static inline HRESULT IMFTopologyNode_GetItemType(IMFTopologyNode* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
 757    return This->lpVtbl->GetItemType(This,guidKey,pType);
 758}
 759static inline HRESULT IMFTopologyNode_CompareItem(IMFTopologyNode* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
 760    return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
 761}
 762static inline HRESULT IMFTopologyNode_Compare(IMFTopologyNode* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
 763    return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
 764}
 765static inline HRESULT IMFTopologyNode_GetUINT32(IMFTopologyNode* This,REFGUID guidKey,UINT32 *punValue) {
 766    return This->lpVtbl->GetUINT32(This,guidKey,punValue);
 767}
 768static inline HRESULT IMFTopologyNode_GetUINT64(IMFTopologyNode* This,REFGUID guidKey,UINT64 *punValue) {
 769    return This->lpVtbl->GetUINT64(This,guidKey,punValue);
 770}
 771static inline HRESULT IMFTopologyNode_GetDouble(IMFTopologyNode* This,REFGUID guidKey,double *pfValue) {
 772    return This->lpVtbl->GetDouble(This,guidKey,pfValue);
 773}
 774static inline HRESULT IMFTopologyNode_GetGUID(IMFTopologyNode* This,REFGUID guidKey,GUID *pguidValue) {
 775    return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
 776}
 777static inline HRESULT IMFTopologyNode_GetStringLength(IMFTopologyNode* This,REFGUID guidKey,UINT32 *pcchLength) {
 778    return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
 779}
 780static inline HRESULT IMFTopologyNode_GetString(IMFTopologyNode* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
 781    return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
 782}
 783static inline HRESULT IMFTopologyNode_GetAllocatedString(IMFTopologyNode* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
 784    return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
 785}
 786static inline HRESULT IMFTopologyNode_GetBlobSize(IMFTopologyNode* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
 787    return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
 788}
 789static inline HRESULT IMFTopologyNode_GetBlob(IMFTopologyNode* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
 790    return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
 791}
 792static inline HRESULT IMFTopologyNode_GetAllocatedBlob(IMFTopologyNode* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
 793    return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
 794}
 795static inline HRESULT IMFTopologyNode_GetUnknown(IMFTopologyNode* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
 796    return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
 797}
 798static inline HRESULT IMFTopologyNode_SetItem(IMFTopologyNode* This,REFGUID guidKey,REFPROPVARIANT Value) {
 799    return This->lpVtbl->SetItem(This,guidKey,Value);
 800}
 801static inline HRESULT IMFTopologyNode_DeleteItem(IMFTopologyNode* This,REFGUID guidKey) {
 802    return This->lpVtbl->DeleteItem(This,guidKey);
 803}
 804static inline HRESULT IMFTopologyNode_DeleteAllItems(IMFTopologyNode* This) {
 805    return This->lpVtbl->DeleteAllItems(This);
 806}
 807static inline HRESULT IMFTopologyNode_SetUINT32(IMFTopologyNode* This,REFGUID guidKey,UINT32 unValue) {
 808    return This->lpVtbl->SetUINT32(This,guidKey,unValue);
 809}
 810static inline HRESULT IMFTopologyNode_SetUINT64(IMFTopologyNode* This,REFGUID guidKey,UINT64 unValue) {
 811    return This->lpVtbl->SetUINT64(This,guidKey,unValue);
 812}
 813static inline HRESULT IMFTopologyNode_SetDouble(IMFTopologyNode* This,REFGUID guidKey,double fValue) {
 814    return This->lpVtbl->SetDouble(This,guidKey,fValue);
 815}
 816static inline HRESULT IMFTopologyNode_SetGUID(IMFTopologyNode* This,REFGUID guidKey,REFGUID guidValue) {
 817    return This->lpVtbl->SetGUID(This,guidKey,guidValue);
 818}
 819static inline HRESULT IMFTopologyNode_SetString(IMFTopologyNode* This,REFGUID guidKey,LPCWSTR wszValue) {
 820    return This->lpVtbl->SetString(This,guidKey,wszValue);
 821}
 822static inline HRESULT IMFTopologyNode_SetBlob(IMFTopologyNode* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
 823    return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
 824}
 825static inline HRESULT IMFTopologyNode_SetUnknown(IMFTopologyNode* This,REFGUID guidKey,IUnknown *pUnknown) {
 826    return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
 827}
 828static inline HRESULT IMFTopologyNode_LockStore(IMFTopologyNode* This) {
 829    return This->lpVtbl->LockStore(This);
 830}
 831static inline HRESULT IMFTopologyNode_UnlockStore(IMFTopologyNode* This) {
 832    return This->lpVtbl->UnlockStore(This);
 833}
 834static inline HRESULT IMFTopologyNode_GetCount(IMFTopologyNode* This,UINT32 *pcItems) {
 835    return This->lpVtbl->GetCount(This,pcItems);
 836}
 837static inline HRESULT IMFTopologyNode_GetItemByIndex(IMFTopologyNode* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
 838    return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
 839}
 840static inline HRESULT IMFTopologyNode_CopyAllItems(IMFTopologyNode* This,IMFAttributes *pDest) {
 841    return This->lpVtbl->CopyAllItems(This,pDest);
 842}
 843/*** IMFTopologyNode methods ***/
 844static inline HRESULT IMFTopologyNode_SetObject(IMFTopologyNode* This,IUnknown *pObject) {
 845    return This->lpVtbl->SetObject(This,pObject);
 846}
 847static inline HRESULT IMFTopologyNode_GetObject(IMFTopologyNode* This,IUnknown **ppObject) {
 848    return This->lpVtbl->GetObject(This,ppObject);
 849}
 850static inline HRESULT IMFTopologyNode_GetNodeType(IMFTopologyNode* This,MF_TOPOLOGY_TYPE *pType) {
 851    return This->lpVtbl->GetNodeType(This,pType);
 852}
 853static inline HRESULT IMFTopologyNode_GetTopoNodeID(IMFTopologyNode* This,TOPOID *pID) {
 854    return This->lpVtbl->GetTopoNodeID(This,pID);
 855}
 856static inline HRESULT IMFTopologyNode_SetTopoNodeID(IMFTopologyNode* This,TOPOID ullTopoID) {
 857    return This->lpVtbl->SetTopoNodeID(This,ullTopoID);
 858}
 859static inline HRESULT IMFTopologyNode_GetInputCount(IMFTopologyNode* This,DWORD *pcInputs) {
 860    return This->lpVtbl->GetInputCount(This,pcInputs);
 861}
 862static inline HRESULT IMFTopologyNode_GetOutputCount(IMFTopologyNode* This,DWORD *pcOutputs) {
 863    return This->lpVtbl->GetOutputCount(This,pcOutputs);
 864}
 865static inline HRESULT IMFTopologyNode_ConnectOutput(IMFTopologyNode* This,DWORD dwOutputIndex,IMFTopologyNode *pDownstreamNode,DWORD dwInputIndexOnDownstreamNode) {
 866    return This->lpVtbl->ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode);
 867}
 868static inline HRESULT IMFTopologyNode_DisconnectOutput(IMFTopologyNode* This,DWORD dwOutputIndex) {
 869    return This->lpVtbl->DisconnectOutput(This,dwOutputIndex);
 870}
 871static inline HRESULT IMFTopologyNode_GetInput(IMFTopologyNode* This,DWORD dwInputIndex,IMFTopologyNode **ppUpstreamNode,DWORD *pdwOutputIndexOnUpstreamNode) {
 872    return This->lpVtbl->GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode);
 873}
 874static inline HRESULT IMFTopologyNode_GetOutput(IMFTopologyNode* This,DWORD dwOutputIndex,IMFTopologyNode **ppDownstreamNode,DWORD *pdwInputIndexOnDownstreamNode) {
 875    return This->lpVtbl->GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode);
 876}
 877static inline HRESULT IMFTopologyNode_SetOutputPrefType(IMFTopologyNode* This,DWORD dwOutputIndex,IMFMediaType *pType) {
 878    return This->lpVtbl->SetOutputPrefType(This,dwOutputIndex,pType);
 879}
 880static inline HRESULT IMFTopologyNode_GetOutputPrefType(IMFTopologyNode* This,DWORD dwOutputIndex,IMFMediaType **ppType) {
 881    return This->lpVtbl->GetOutputPrefType(This,dwOutputIndex,ppType);
 882}
 883static inline HRESULT IMFTopologyNode_SetInputPrefType(IMFTopologyNode* This,DWORD dwInputIndex,IMFMediaType *pType) {
 884    return This->lpVtbl->SetInputPrefType(This,dwInputIndex,pType);
 885}
 886static inline HRESULT IMFTopologyNode_GetInputPrefType(IMFTopologyNode* This,DWORD dwInputIndex,IMFMediaType **ppType) {
 887    return This->lpVtbl->GetInputPrefType(This,dwInputIndex,ppType);
 888}
 889static inline HRESULT IMFTopologyNode_CloneFrom(IMFTopologyNode* This,IMFTopologyNode *pNode) {
 890    return This->lpVtbl->CloneFrom(This,pNode);
 891}
 892#endif
 893#endif
 894
 895#endif
 896
 897HRESULT STDMETHODCALLTYPE IMFTopologyNode_RemoteGetOutputPrefType_Proxy(
 898    IMFTopologyNode* This,
 899    DWORD dwOutputIndex,
 900    DWORD *pcbData,
 901    BYTE **ppbData);
 902void __RPC_STUB IMFTopologyNode_RemoteGetOutputPrefType_Stub(
 903    IRpcStubBuffer* This,
 904    IRpcChannelBuffer* pRpcChannelBuffer,
 905    PRPC_MESSAGE pRpcMessage,
 906    DWORD* pdwStubPhase);
 907HRESULT STDMETHODCALLTYPE IMFTopologyNode_RemoteGetInputPrefType_Proxy(
 908    IMFTopologyNode* This,
 909    DWORD dwInputIndex,
 910    DWORD *pcbData,
 911    BYTE **ppbData);
 912void __RPC_STUB IMFTopologyNode_RemoteGetInputPrefType_Stub(
 913    IRpcStubBuffer* This,
 914    IRpcChannelBuffer* pRpcChannelBuffer,
 915    PRPC_MESSAGE pRpcMessage,
 916    DWORD* pdwStubPhase);
 917HRESULT CALLBACK IMFTopologyNode_GetOutputPrefType_Proxy(
 918    IMFTopologyNode* This,
 919    DWORD dwOutputIndex,
 920    IMFMediaType **ppType);
 921HRESULT __RPC_STUB IMFTopologyNode_GetOutputPrefType_Stub(
 922    IMFTopologyNode* This,
 923    DWORD dwOutputIndex,
 924    DWORD *pcbData,
 925    BYTE **ppbData);
 926HRESULT CALLBACK IMFTopologyNode_GetInputPrefType_Proxy(
 927    IMFTopologyNode* This,
 928    DWORD dwInputIndex,
 929    IMFMediaType **ppType);
 930HRESULT __RPC_STUB IMFTopologyNode_GetInputPrefType_Stub(
 931    IMFTopologyNode* This,
 932    DWORD dwInputIndex,
 933    DWORD *pcbData,
 934    BYTE **ppbData);
 935
 936#endif  /* __IMFTopologyNode_INTERFACE_DEFINED__ */
 937
 938/*****************************************************************************
 939 * IMFTopology interface
 940 */
 941#ifndef __IMFTopology_INTERFACE_DEFINED__
 942#define __IMFTopology_INTERFACE_DEFINED__
 943
 944DEFINE_GUID(IID_IMFTopology, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x33);
 945#if defined(__cplusplus) && !defined(CINTERFACE)
 946MIDL_INTERFACE("83cf873a-f6da-4bc8-823f-bacfd55dc433")
 947IMFTopology : public IMFAttributes
 948{
 949    virtual HRESULT STDMETHODCALLTYPE GetTopologyID(
 950        TOPOID *pID) = 0;
 951
 952    virtual HRESULT STDMETHODCALLTYPE AddNode(
 953        IMFTopologyNode *pNode) = 0;
 954
 955    virtual HRESULT STDMETHODCALLTYPE RemoveNode(
 956        IMFTopologyNode *pNode) = 0;
 957
 958    virtual HRESULT STDMETHODCALLTYPE GetNodeCount(
 959        WORD *pwNodes) = 0;
 960
 961    virtual HRESULT STDMETHODCALLTYPE GetNode(
 962        WORD wIndex,
 963        IMFTopologyNode **ppNode) = 0;
 964
 965    virtual HRESULT STDMETHODCALLTYPE Clear(
 966        ) = 0;
 967
 968    virtual HRESULT STDMETHODCALLTYPE CloneFrom(
 969        IMFTopology *pTopology) = 0;
 970
 971    virtual HRESULT STDMETHODCALLTYPE GetNodeByID(
 972        TOPOID qwTopoNodeID,
 973        IMFTopologyNode **ppNode) = 0;
 974
 975    virtual HRESULT STDMETHODCALLTYPE GetSourceNodeCollection(
 976        IMFCollection **ppCollection) = 0;
 977
 978    virtual HRESULT STDMETHODCALLTYPE GetOutputNodeCollection(
 979        IMFCollection **ppCollection) = 0;
 980
 981};
 982#ifdef __CRT_UUID_DECL
 983__CRT_UUID_DECL(IMFTopology, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x33)
 984#endif
 985#else
 986typedef struct IMFTopologyVtbl {
 987    BEGIN_INTERFACE
 988
 989    /*** IUnknown methods ***/
 990    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 991        IMFTopology *This,
 992        REFIID riid,
 993        void **ppvObject);
 994
 995    ULONG (STDMETHODCALLTYPE *AddRef)(
 996        IMFTopology *This);
 997
 998    ULONG (STDMETHODCALLTYPE *Release)(
 999        IMFTopology *This);
1000
1001    /*** IMFAttributes methods ***/
1002    HRESULT (STDMETHODCALLTYPE *GetItem)(
1003        IMFTopology *This,
1004        REFGUID guidKey,
1005        PROPVARIANT *pValue);
1006
1007    HRESULT (STDMETHODCALLTYPE *GetItemType)(
1008        IMFTopology *This,
1009        REFGUID guidKey,
1010        MF_ATTRIBUTE_TYPE *pType);
1011
1012    HRESULT (STDMETHODCALLTYPE *CompareItem)(
1013        IMFTopology *This,
1014        REFGUID guidKey,
1015        REFPROPVARIANT Value,
1016        WINBOOL *pbResult);
1017
1018    HRESULT (STDMETHODCALLTYPE *Compare)(
1019        IMFTopology *This,
1020        IMFAttributes *pTheirs,
1021        MF_ATTRIBUTES_MATCH_TYPE MatchType,
1022        WINBOOL *pbResult);
1023
1024    HRESULT (STDMETHODCALLTYPE *GetUINT32)(
1025        IMFTopology *This,
1026        REFGUID guidKey,
1027        UINT32 *punValue);
1028
1029    HRESULT (STDMETHODCALLTYPE *GetUINT64)(
1030        IMFTopology *This,
1031        REFGUID guidKey,
1032        UINT64 *punValue);
1033
1034    HRESULT (STDMETHODCALLTYPE *GetDouble)(
1035        IMFTopology *This,
1036        REFGUID guidKey,
1037        double *pfValue);
1038
1039    HRESULT (STDMETHODCALLTYPE *GetGUID)(
1040        IMFTopology *This,
1041        REFGUID guidKey,
1042        GUID *pguidValue);
1043
1044    HRESULT (STDMETHODCALLTYPE *GetStringLength)(
1045        IMFTopology *This,
1046        REFGUID guidKey,
1047        UINT32 *pcchLength);
1048
1049    HRESULT (STDMETHODCALLTYPE *GetString)(
1050        IMFTopology *This,
1051        REFGUID guidKey,
1052        LPWSTR pwszValue,
1053        UINT32 cchBufSize,
1054        UINT32 *pcchLength);
1055
1056    HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
1057        IMFTopology *This,
1058        REFGUID guidKey,
1059        LPWSTR *ppwszValue,
1060        UINT32 *pcchLength);
1061
1062    HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
1063        IMFTopology *This,
1064        REFGUID guidKey,
1065        UINT32 *pcbBlobSize);
1066
1067    HRESULT (STDMETHODCALLTYPE *GetBlob)(
1068        IMFTopology *This,
1069        REFGUID guidKey,
1070        UINT8 *pBuf,
1071        UINT32 cbBufSize,
1072        UINT32 *pcbBlobSize);
1073
1074    HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
1075        IMFTopology *This,
1076        REFGUID guidKey,
1077        UINT8 **ppBuf,
1078        UINT32 *pcbSize);
1079
1080    HRESULT (STDMETHODCALLTYPE *GetUnknown)(
1081        IMFTopology *This,
1082        REFGUID guidKey,
1083        REFIID riid,
1084        LPVOID *ppv);
1085
1086    HRESULT (STDMETHODCALLTYPE *SetItem)(
1087        IMFTopology *This,
1088        REFGUID guidKey,
1089        REFPROPVARIANT Value);
1090
1091    HRESULT (STDMETHODCALLTYPE *DeleteItem)(
1092        IMFTopology *This,
1093        REFGUID guidKey);
1094
1095    HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
1096        IMFTopology *This);
1097
1098    HRESULT (STDMETHODCALLTYPE *SetUINT32)(
1099        IMFTopology *This,
1100        REFGUID guidKey,
1101        UINT32 unValue);
1102
1103    HRESULT (STDMETHODCALLTYPE *SetUINT64)(
1104        IMFTopology *This,
1105        REFGUID guidKey,
1106        UINT64 unValue);
1107
1108    HRESULT (STDMETHODCALLTYPE *SetDouble)(
1109        IMFTopology *This,
1110        REFGUID guidKey,
1111        double fValue);
1112
1113    HRESULT (STDMETHODCALLTYPE *SetGUID)(
1114        IMFTopology *This,
1115        REFGUID guidKey,
1116        REFGUID guidValue);
1117
1118    HRESULT (STDMETHODCALLTYPE *SetString)(
1119        IMFTopology *This,
1120        REFGUID guidKey,
1121        LPCWSTR wszValue);
1122
1123    HRESULT (STDMETHODCALLTYPE *SetBlob)(
1124        IMFTopology *This,
1125        REFGUID guidKey,
1126        const UINT8 *pBuf,
1127        UINT32 cbBufSize);
1128
1129    HRESULT (STDMETHODCALLTYPE *SetUnknown)(
1130        IMFTopology *This,
1131        REFGUID guidKey,
1132        IUnknown *pUnknown);
1133
1134    HRESULT (STDMETHODCALLTYPE *LockStore)(
1135        IMFTopology *This);
1136
1137    HRESULT (STDMETHODCALLTYPE *UnlockStore)(
1138        IMFTopology *This);
1139
1140    HRESULT (STDMETHODCALLTYPE *GetCount)(
1141        IMFTopology *This,
1142        UINT32 *pcItems);
1143
1144    HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
1145        IMFTopology *This,
1146        UINT32 unIndex,
1147        GUID *pguidKey,
1148        PROPVARIANT *pValue);
1149
1150    HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
1151        IMFTopology *This,
1152        IMFAttributes *pDest);
1153
1154    /*** IMFTopology methods ***/
1155    HRESULT (STDMETHODCALLTYPE *GetTopologyID)(
1156        IMFTopology *This,
1157        TOPOID *pID);
1158
1159    HRESULT (STDMETHODCALLTYPE *AddNode)(
1160        IMFTopology *This,
1161        IMFTopologyNode *pNode);
1162
1163    HRESULT (STDMETHODCALLTYPE *RemoveNode)(
1164        IMFTopology *This,
1165        IMFTopologyNode *pNode);
1166
1167    HRESULT (STDMETHODCALLTYPE *GetNodeCount)(
1168        IMFTopology *This,
1169        WORD *pwNodes);
1170
1171    HRESULT (STDMETHODCALLTYPE *GetNode)(
1172        IMFTopology *This,
1173        WORD wIndex,
1174        IMFTopologyNode **ppNode);
1175
1176    HRESULT (STDMETHODCALLTYPE *Clear)(
1177        IMFTopology *This);
1178
1179    HRESULT (STDMETHODCALLTYPE *CloneFrom)(
1180        IMFTopology *This,
1181        IMFTopology *pTopology);
1182
1183    HRESULT (STDMETHODCALLTYPE *GetNodeByID)(
1184        IMFTopology *This,
1185        TOPOID qwTopoNodeID,
1186        IMFTopologyNode **ppNode);
1187
1188    HRESULT (STDMETHODCALLTYPE *GetSourceNodeCollection)(
1189        IMFTopology *This,
1190        IMFCollection **ppCollection);
1191
1192    HRESULT (STDMETHODCALLTYPE *GetOutputNodeCollection)(
1193        IMFTopology *This,
1194        IMFCollection **ppCollection);
1195
1196    END_INTERFACE
1197} IMFTopologyVtbl;
1198
1199interface IMFTopology {
1200    CONST_VTBL IMFTopologyVtbl* lpVtbl;
1201};
1202
1203#ifdef COBJMACROS
1204#ifndef WIDL_C_INLINE_WRAPPERS
1205/*** IUnknown methods ***/
1206#define IMFTopology_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1207#define IMFTopology_AddRef(This) (This)->lpVtbl->AddRef(This)
1208#define IMFTopology_Release(This) (This)->lpVtbl->Release(This)
1209/*** IMFAttributes methods ***/
1210#define IMFTopology_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
1211#define IMFTopology_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
1212#define IMFTopology_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
1213#define IMFTopology_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
1214#define IMFTopology_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
1215#define IMFTopology_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
1216#define IMFTopology_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
1217#define IMFTopology_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
1218#define IMFTopology_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
1219#define IMFTopology_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
1220#define IMFTopology_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
1221#define IMFTopology_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
1222#define IMFTopology_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
1223#define IMFTopology_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
1224#define IMFTopology_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
1225#define IMFTopology_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
1226#define IMFTopology_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
1227#define IMFTopology_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
1228#define IMFTopology_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
1229#define IMFTopology_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
1230#define IMFTopology_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
1231#define IMFTopology_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
1232#define IMFTopology_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
1233#define IMFTopology_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
1234#define IMFTopology_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
1235#define IMFTopology_LockStore(This) (This)->lpVtbl->LockStore(This)
1236#define IMFTopology_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
1237#define IMFTopology_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
1238#define IMFTopology_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
1239#define IMFTopology_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
1240/*** IMFTopology methods ***/
1241#define IMFTopology_GetTopologyID(This,pID) (This)->lpVtbl->GetTopologyID(This,pID)
1242#define IMFTopology_AddNode(This,pNode) (This)->lpVtbl->AddNode(This,pNode)
1243#define IMFTopology_RemoveNode(This,pNode) (This)->lpVtbl->RemoveNode(This,pNode)
1244#define IMFTopology_GetNodeCount(This,pwNodes) (This)->lpVtbl->GetNodeCount(This,pwNodes)
1245#define IMFTopology_GetNode(This,wIndex,ppNode) (This)->lpVtbl->GetNode(This,wIndex,ppNode)
1246#define IMFTopology_Clear(This) (This)->lpVtbl->Clear(This)
1247#define IMFTopology_CloneFrom(This,pTopology) (This)->lpVtbl->CloneFrom(This,pTopology)
1248#define IMFTopology_GetNodeByID(This,qwTopoNodeID,ppNode) (This)->lpVtbl->GetNodeByID(This,qwTopoNodeID,ppNode)
1249#define IMFTopology_GetSourceNodeCollection(This,ppCollection) (This)->lpVtbl->GetSourceNodeCollection(This,ppCollection)
1250#define IMFTopology_GetOutputNodeCollection(This,ppCollection) (This)->lpVtbl->GetOutputNodeCollection(This,ppCollection)
1251#else
1252/*** IUnknown methods ***/
1253static inline HRESULT IMFTopology_QueryInterface(IMFTopology* This,REFIID riid,void **ppvObject) {
1254    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1255}
1256static inline ULONG IMFTopology_AddRef(IMFTopology* This) {
1257    return This->lpVtbl->AddRef(This);
1258}
1259static inline ULONG IMFTopology_Release(IMFTopology* This) {
1260    return This->lpVtbl->Release(This);
1261}
1262/*** IMFAttributes methods ***/
1263static inline HRESULT IMFTopology_GetItem(IMFTopology* This,REFGUID guidKey,PROPVARIANT *pValue) {
1264    return This->lpVtbl->GetItem(This,guidKey,pValue);
1265}
1266static inline HRESULT IMFTopology_GetItemType(IMFTopology* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
1267    return This->lpVtbl->GetItemType(This,guidKey,pType);
1268}
1269static inline HRESULT IMFTopology_CompareItem(IMFTopology* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
1270    return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
1271}
1272static inline HRESULT IMFTopology_Compare(IMFTopology* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
1273    return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
1274}
1275static inline HRESULT IMFTopology_GetUINT32(IMFTopology* This,REFGUID guidKey,UINT32 *punValue) {
1276    return This->lpVtbl->GetUINT32(This,guidKey,punValue);
1277}
1278static inline HRESULT IMFTopology_GetUINT64(IMFTopology* This,REFGUID guidKey,UINT64 *punValue) {
1279    return This->lpVtbl->GetUINT64(This,guidKey,punValue);
1280}
1281static inline HRESULT IMFTopology_GetDouble(IMFTopology* This,REFGUID guidKey,double *pfValue) {
1282    return This->lpVtbl->GetDouble(This,guidKey,pfValue);
1283}
1284static inline HRESULT IMFTopology_GetGUID(IMFTopology* This,REFGUID guidKey,GUID *pguidValue) {
1285    return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
1286}
1287static inline HRESULT IMFTopology_GetStringLength(IMFTopology* This,REFGUID guidKey,UINT32 *pcchLength) {
1288    return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
1289}
1290static inline HRESULT IMFTopology_GetString(IMFTopology* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
1291    return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
1292}
1293static inline HRESULT IMFTopology_GetAllocatedString(IMFTopology* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
1294    return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
1295}
1296static inline HRESULT IMFTopology_GetBlobSize(IMFTopology* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
1297    return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
1298}
1299static inline HRESULT IMFTopology_GetBlob(IMFTopology* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
1300    return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
1301}
1302static inline HRESULT IMFTopology_GetAllocatedBlob(IMFTopology* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
1303    return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
1304}
1305static inline HRESULT IMFTopology_GetUnknown(IMFTopology* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
1306    return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
1307}
1308static inline HRESULT IMFTopology_SetItem(IMFTopology* This,REFGUID guidKey,REFPROPVARIANT Value) {
1309    return This->lpVtbl->SetItem(This,guidKey,Value);
1310}
1311static inline HRESULT IMFTopology_DeleteItem(IMFTopology* This,REFGUID guidKey) {
1312    return This->lpVtbl->DeleteItem(This,guidKey);
1313}
1314static inline HRESULT IMFTopology_DeleteAllItems(IMFTopology* This) {
1315    return This->lpVtbl->DeleteAllItems(This);
1316}
1317static inline HRESULT IMFTopology_SetUINT32(IMFTopology* This,REFGUID guidKey,UINT32 unValue) {
1318    return This->lpVtbl->SetUINT32(This,guidKey,unValue);
1319}
1320static inline HRESULT IMFTopology_SetUINT64(IMFTopology* This,REFGUID guidKey,UINT64 unValue) {
1321    return This->lpVtbl->SetUINT64(This,guidKey,unValue);
1322}
1323static inline HRESULT IMFTopology_SetDouble(IMFTopology* This,REFGUID guidKey,double fValue) {
1324    return This->lpVtbl->SetDouble(This,guidKey,fValue);
1325}
1326static inline HRESULT IMFTopology_SetGUID(IMFTopology* This,REFGUID guidKey,REFGUID guidValue) {
1327    return This->lpVtbl->SetGUID(This,guidKey,guidValue);
1328}
1329static inline HRESULT IMFTopology_SetString(IMFTopology* This,REFGUID guidKey,LPCWSTR wszValue) {
1330    return This->lpVtbl->SetString(This,guidKey,wszValue);
1331}
1332static inline HRESULT IMFTopology_SetBlob(IMFTopology* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
1333    return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
1334}
1335static inline HRESULT IMFTopology_SetUnknown(IMFTopology* This,REFGUID guidKey,IUnknown *pUnknown) {
1336    return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
1337}
1338static inline HRESULT IMFTopology_LockStore(IMFTopology* This) {
1339    return This->lpVtbl->LockStore(This);
1340}
1341static inline HRESULT IMFTopology_UnlockStore(IMFTopology* This) {
1342    return This->lpVtbl->UnlockStore(This);
1343}
1344static inline HRESULT IMFTopology_GetCount(IMFTopology* This,UINT32 *pcItems) {
1345    return This->lpVtbl->GetCount(This,pcItems);
1346}
1347static inline HRESULT IMFTopology_GetItemByIndex(IMFTopology* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
1348    return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
1349}
1350static inline HRESULT IMFTopology_CopyAllItems(IMFTopology* This,IMFAttributes *pDest) {
1351    return This->lpVtbl->CopyAllItems(This,pDest);
1352}
1353/*** IMFTopology methods ***/
1354static inline HRESULT IMFTopology_GetTopologyID(IMFTopology* This,TOPOID *pID) {
1355    return This->lpVtbl->GetTopologyID(This,pID);
1356}
1357static inline HRESULT IMFTopology_AddNode(IMFTopology* This,IMFTopologyNode *pNode) {
1358    return This->lpVtbl->AddNode(This,pNode);
1359}
1360static inline HRESULT IMFTopology_RemoveNode(IMFTopology* This,IMFTopologyNode *pNode) {
1361    return This->lpVtbl->RemoveNode(This,pNode);
1362}
1363static inline HRESULT IMFTopology_GetNodeCount(IMFTopology* This,WORD *pwNodes) {
1364    return This->lpVtbl->GetNodeCount(This,pwNodes);
1365}
1366static inline HRESULT IMFTopology_GetNode(IMFTopology* This,WORD wIndex,IMFTopologyNode **ppNode) {
1367    return This->lpVtbl->GetNode(This,wIndex,ppNode);
1368}
1369static inline HRESULT IMFTopology_Clear(IMFTopology* This) {
1370    return This->lpVtbl->Clear(This);
1371}
1372static inline HRESULT IMFTopology_CloneFrom(IMFTopology* This,IMFTopology *pTopology) {
1373    return This->lpVtbl->CloneFrom(This,pTopology);
1374}
1375static inline HRESULT IMFTopology_GetNodeByID(IMFTopology* This,TOPOID qwTopoNodeID,IMFTopologyNode **ppNode) {
1376    return This->lpVtbl->GetNodeByID(This,qwTopoNodeID,ppNode);
1377}
1378static inline HRESULT IMFTopology_GetSourceNodeCollection(IMFTopology* This,IMFCollection **ppCollection) {
1379    return This->lpVtbl->GetSourceNodeCollection(This,ppCollection);
1380}
1381static inline HRESULT IMFTopology_GetOutputNodeCollection(IMFTopology* This,IMFCollection **ppCollection) {
1382    return This->lpVtbl->GetOutputNodeCollection(This,ppCollection);
1383}
1384#endif
1385#endif
1386
1387#endif
1388
1389
1390#endif  /* __IMFTopology_INTERFACE_DEFINED__ */
1391
1392/*****************************************************************************
1393 * IMFGetService interface
1394 */
1395#ifndef __IMFGetService_INTERFACE_DEFINED__
1396#define __IMFGetService_INTERFACE_DEFINED__
1397
1398DEFINE_GUID(IID_IMFGetService, 0xfa993888, 0x4383, 0x415a, 0xa9,0x30, 0xdd,0x47,0x2a,0x8c,0xf6,0xf7);
1399#if defined(__cplusplus) && !defined(CINTERFACE)
1400MIDL_INTERFACE("fa993888-4383-415a-a930-dd472a8cf6f7")
1401IMFGetService : public IUnknown
1402{
1403    virtual HRESULT STDMETHODCALLTYPE GetService(
1404        REFGUID guidService,
1405        REFIID riid,
1406        LPVOID *ppvObject) = 0;
1407
1408};
1409#ifdef __CRT_UUID_DECL
1410__CRT_UUID_DECL(IMFGetService, 0xfa993888, 0x4383, 0x415a, 0xa9,0x30, 0xdd,0x47,0x2a,0x8c,0xf6,0xf7)
1411#endif
1412#else
1413typedef struct IMFGetServiceVtbl {
1414    BEGIN_INTERFACE
1415
1416    /*** IUnknown methods ***/
1417    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1418        IMFGetService *This,
1419        REFIID riid,
1420        void **ppvObject);
1421
1422    ULONG (STDMETHODCALLTYPE *AddRef)(
1423        IMFGetService *This);
1424
1425    ULONG (STDMETHODCALLTYPE *Release)(
1426        IMFGetService *This);
1427
1428    /*** IMFGetService methods ***/
1429    HRESULT (STDMETHODCALLTYPE *GetService)(
1430        IMFGetService *This,
1431        REFGUID guidService,
1432        REFIID riid,
1433        LPVOID *ppvObject);
1434
1435    END_INTERFACE
1436} IMFGetServiceVtbl;
1437
1438interface IMFGetService {
1439    CONST_VTBL IMFGetServiceVtbl* lpVtbl;
1440};
1441
1442#ifdef COBJMACROS
1443#ifndef WIDL_C_INLINE_WRAPPERS
1444/*** IUnknown methods ***/
1445#define IMFGetService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1446#define IMFGetService_AddRef(This) (This)->lpVtbl->AddRef(This)
1447#define IMFGetService_Release(This) (This)->lpVtbl->Release(This)
1448/*** IMFGetService methods ***/
1449#define IMFGetService_GetService(This,guidService,riid,ppvObject) (This)->lpVtbl->GetService(This,guidService,riid,ppvObject)
1450#else
1451/*** IUnknown methods ***/
1452static inline HRESULT IMFGetService_QueryInterface(IMFGetService* This,REFIID riid,void **ppvObject) {
1453    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1454}
1455static inline ULONG IMFGetService_AddRef(IMFGetService* This) {
1456    return This->lpVtbl->AddRef(This);
1457}
1458static inline ULONG IMFGetService_Release(IMFGetService* This) {
1459    return This->lpVtbl->Release(This);
1460}
1461/*** IMFGetService methods ***/
1462static inline HRESULT IMFGetService_GetService(IMFGetService* This,REFGUID guidService,REFIID riid,LPVOID *ppvObject) {
1463    return This->lpVtbl->GetService(This,guidService,riid,ppvObject);
1464}
1465#endif
1466#endif
1467
1468#endif
1469
1470
1471#endif  /* __IMFGetService_INTERFACE_DEFINED__ */
1472
1473typedef LONGLONG MFTIME;
1474typedef enum _MF_CLOCK_STATE {
1475    MFCLOCK_STATE_INVALID = 0,
1476    MFCLOCK_STATE_RUNNING = 1,
1477    MFCLOCK_STATE_STOPPED = 2,
1478    MFCLOCK_STATE_PAUSED = 3
1479} MF_CLOCK_STATE;
1480typedef enum _MF_CLOCK_STATE MFCLOCK_STATE;
1481typedef struct _MFCLOCK_PROPERTIES {
1482    UINT64 qwCorrelationRate;
1483    GUID guidClockId;
1484    DWORD dwClockFlags;
1485    UINT64 qwClockFrequency;
1486    DWORD dwClockTolerance;
1487    DWORD dwClockJitter;
1488} MFCLOCK_PROPERTIES;
1489/*****************************************************************************
1490 * IMFClock interface
1491 */
1492#ifndef __IMFClock_INTERFACE_DEFINED__
1493#define __IMFClock_INTERFACE_DEFINED__
1494
1495DEFINE_GUID(IID_IMFClock, 0x2eb1e945, 0x18b8, 0x4139, 0x9b,0x1a, 0xd5,0xd5,0x84,0x81,0x85,0x30);
1496#if defined(__cplusplus) && !defined(CINTERFACE)
1497MIDL_INTERFACE("2eb1e945-18b8-4139-9b1a-d5d584818530")
1498IMFClock : public IUnknown
1499{
1500    virtual HRESULT STDMETHODCALLTYPE GetClockCharacteristics(
1501        DWORD *pdwCharacteristics) = 0;
1502
1503    virtual HRESULT STDMETHODCALLTYPE GetCorrelatedTime(
1504        DWORD dwReserved,
1505        LONGLONG *pllClockTime,
1506        MFTIME *phnsSystemTime) = 0;
1507
1508    virtual HRESULT STDMETHODCALLTYPE GetContinuityKey(
1509        DWORD *pdwContinuityKey) = 0;
1510
1511    virtual HRESULT STDMETHODCALLTYPE GetState(
1512        DWORD dwReserved,
1513        MFCLOCK_STATE *peClockState) = 0;
1514
1515    virtual HRESULT STDMETHODCALLTYPE GetProperties(
1516        MFCLOCK_PROPERTIES *pClockProperties) = 0;
1517
1518};
1519#ifdef __CRT_UUID_DECL
1520__CRT_UUID_DECL(IMFClock, 0x2eb1e945, 0x18b8, 0x4139, 0x9b,0x1a, 0xd5,0xd5,0x84,0x81,0x85,0x30)
1521#endif
1522#else
1523typedef struct IMFClockVtbl {
1524    BEGIN_INTERFACE
1525
1526    /*** IUnknown methods ***/
1527    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1528        IMFClock *This,
1529        REFIID riid,
1530        void **ppvObject);
1531
1532    ULONG (STDMETHODCALLTYPE *AddRef)(
1533        IMFClock *This);
1534
1535    ULONG (STDMETHODCALLTYPE *Release)(
1536        IMFClock *This);
1537
1538    /*** IMFClock methods ***/
1539    HRESULT (STDMETHODCALLTYPE *GetClockCharacteristics)(
1540        IMFClock *This,
1541        DWORD *pdwCharacteristics);
1542
1543    HRESULT (STDMETHODCALLTYPE *GetCorrelatedTime)(
1544        IMFClock *This,
1545        DWORD dwReserved,
1546        LONGLONG *pllClockTime,
1547        MFTIME *phnsSystemTime);
1548
1549    HRESULT (STDMETHODCALLTYPE *GetContinuityKey)(
1550        IMFClock *This,
1551        DWORD *pdwContinuityKey);
1552
1553    HRESULT (STDMETHODCALLTYPE *GetState)(
1554        IMFClock *This,
1555        DWORD dwReserved,
1556        MFCLOCK_STATE *peClockState);
1557
1558    HRESULT (STDMETHODCALLTYPE *GetProperties)(
1559        IMFClock *This,
1560        MFCLOCK_PROPERTIES *pClockProperties);
1561
1562    END_INTERFACE
1563} IMFClockVtbl;
1564
1565interface IMFClock {
1566    CONST_VTBL IMFClockVtbl* lpVtbl;
1567};
1568
1569#ifdef COBJMACROS
1570#ifndef WIDL_C_INLINE_WRAPPERS
1571/*** IUnknown methods ***/
1572#define IMFClock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1573#define IMFClock_AddRef(This) (This)->lpVtbl->AddRef(This)
1574#define IMFClock_Release(This) (This)->lpVtbl->Release(This)
1575/*** IMFClock methods ***/
1576#define IMFClock_GetClockCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics)
1577#define IMFClock_GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime) (This)->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime)
1578#define IMFClock_GetContinuityKey(This,pdwContinuityKey) (This)->lpVtbl->GetContinuityKey(This,pdwContinuityKey)
1579#define IMFClock_GetState(This,dwReserved,peClockState) (This)->lpVtbl->GetState(This,dwReserved,peClockState)
1580#define IMFClock_GetProperties(This,pClockProperties) (This)->lpVtbl->GetProperties(This,pClockProperties)
1581#else
1582/*** IUnknown methods ***/
1583static inline HRESULT IMFClock_QueryInterface(IMFClock* This,REFIID riid,void **ppvObject) {
1584    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1585}
1586static inline ULONG IMFClock_AddRef(IMFClock* This) {
1587    return This->lpVtbl->AddRef(This);
1588}
1589static inline ULONG IMFClock_Release(IMFClock* This) {
1590    return This->lpVtbl->Release(This);
1591}
1592/*** IMFClock methods ***/
1593static inline HRESULT IMFClock_GetClockCharacteristics(IMFClock* This,DWORD *pdwCharacteristics) {
1594    return This->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics);
1595}
1596static inline HRESULT IMFClock_GetCorrelatedTime(IMFClock* This,DWORD dwReserved,LONGLONG *pllClockTime,MFTIME *phnsSystemTime) {
1597    return This->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime);
1598}
1599static inline HRESULT IMFClock_GetContinuityKey(IMFClock* This,DWORD *pdwContinuityKey) {
1600    return This->lpVtbl->GetContinuityKey(This,pdwContinuityKey);
1601}
1602static inline HRESULT IMFClock_GetState(IMFClock* This,DWORD dwReserved,MFCLOCK_STATE *peClockState) {
1603    return This->lpVtbl->GetState(This,dwReserved,peClockState);
1604}
1605static inline HRESULT IMFClock_GetProperties(IMFClock* This,MFCLOCK_PROPERTIES *pClockProperties) {
1606    return This->lpVtbl->GetProperties(This,pClockProperties);
1607}
1608#endif
1609#endif
1610
1611#endif
1612
1613
1614#endif  /* __IMFClock_INTERFACE_DEFINED__ */
1615
1616#define SHA_HASH_LEN 20
1617#define STR_HASH_LEN (SHA_HASH_LEN*2+3)
1618typedef struct _MFRR_COMPONENT_HASH_INFO {
1619  DWORD ulReason;
1620  WCHAR rgHeaderHash[STR_HASH_LEN];
1621  WCHAR rgPublicKeyHash[STR_HASH_LEN];
1622  WCHAR wszName[MAX_PATH];
1623} MFRR_COMPONENT_HASH_INFO, *PMFRR_COMPONENT_HASH_INFO;
1624EXTERN_GUID(MF_PD_DURATION, 0x6c990d33,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a);
1625typedef enum _MF_CONNECT_METHOD {
1626    MF_CONNECT_DIRECT = 0x0,
1627    MF_CONNECT_ALLOW_CONVERTER = 0x1,
1628    MF_CONNECT_ALLOW_DECODER = 0x3,
1629    MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES = 0x4,
1630    MF_CONNECT_AS_OPTIONAL = 0x10000,
1631    MF_CONNECT_AS_OPTIONAL_BRANCH = 0x20000
1632} MF_CONNECT_METHOD;
1633/*****************************************************************************
1634 * IMFMediaSession interface
1635 */
1636#ifndef __IMFMediaSession_INTERFACE_DEFINED__
1637#define __IMFMediaSession_INTERFACE_DEFINED__
1638
1639DEFINE_GUID(IID_IMFMediaSession, 0x90377834, 0x21d0, 0x4dee, 0x82,0x14, 0xba,0x2e,0x3e,0x6c,0x11,0x27);
1640#if defined(__cplusplus) && !defined(CINTERFACE)
1641MIDL_INTERFACE("90377834-21d0-4dee-8214-ba2e3e6c1127")
1642IMFMediaSession : public IMFMediaEventGenerator
1643{
1644    virtual HRESULT STDMETHODCALLTYPE SetTopology(
1645        DWORD dwSetTopologyFlags,
1646        IMFTopology *pTopology) = 0;
1647
1648    virtual HRESULT STDMETHODCALLTYPE ClearTopologies(
1649        ) = 0;
1650
1651    virtual HRESULT STDMETHODCALLTYPE Start(
1652        const GUID *pguidTimeFormat,
1653        const PROPVARIANT *pvarStartPosition) = 0;
1654
1655    virtual HRESULT STDMETHODCALLTYPE Pause(
1656        ) = 0;
1657
1658    virtual HRESULT STDMETHODCALLTYPE Stop(
1659        ) = 0;
1660
1661    virtual HRESULT STDMETHODCALLTYPE Close(
1662        ) = 0;
1663
1664    virtual HRESULT STDMETHODCALLTYPE Shutdown(
1665        ) = 0;
1666
1667    virtual HRESULT STDMETHODCALLTYPE GetClock(
1668        IMFClock **ppClock) = 0;
1669
1670    virtual HRESULT STDMETHODCALLTYPE GetSessionCapabilities(
1671        DWORD *pdwCaps) = 0;
1672
1673    virtual HRESULT STDMETHODCALLTYPE GetFullTopology(
1674        DWORD dwGetFullTopologyFlags,
1675        TOPOID TopoId,
1676        IMFTopology **ppFullTopology) = 0;
1677
1678};
1679#ifdef __CRT_UUID_DECL
1680__CRT_UUID_DECL(IMFMediaSession, 0x90377834, 0x21d0, 0x4dee, 0x82,0x14, 0xba,0x2e,0x3e,0x6c,0x11,0x27)
1681#endif
1682#else
1683typedef struct IMFMediaSessionVtbl {
1684    BEGIN_INTERFACE
1685
1686    /*** IUnknown methods ***/
1687    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1688        IMFMediaSession *This,
1689        REFIID riid,
1690        void **ppvObject);
1691
1692    ULONG (STDMETHODCALLTYPE *AddRef)(
1693        IMFMediaSession *This);
1694
1695    ULONG (STDMETHODCALLTYPE *Release)(
1696        IMFMediaSession *This);
1697
1698    /*** IMFMediaEventGenerator methods ***/
1699    HRESULT (STDMETHODCALLTYPE *GetEvent)(
1700        IMFMediaSession *This,
1701        DWORD dwFlags,
1702        IMFMediaEvent **ppEvent);
1703
1704    HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
1705        IMFMediaSession *This,
1706        IMFAsyncCallback *pCallback,
1707        IUnknown *punkState);
1708
1709    HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
1710        IMFMediaSession *This,
1711        IMFAsyncResult *pResult,
1712        IMFMediaEvent **ppEvent);
1713
1714    HRESULT (STDMETHODCALLTYPE *QueueEvent)(
1715        IMFMediaSession *This,
1716        MediaEventType met,
1717        REFGUID guidExtendedType,
1718        HRESULT hrStatus,
1719        const PROPVARIANT *pvValue);
1720
1721    /*** IMFMediaSession methods ***/
1722    HRESULT (STDMETHODCALLTYPE *SetTopology)(
1723        IMFMediaSession *This,
1724        DWORD dwSetTopologyFlags,
1725        IMFTopology *pTopology);
1726
1727    HRESULT (STDMETHODCALLTYPE *ClearTopologies)(
1728        IMFMediaSession *This);
1729
1730    HRESULT (STDMETHODCALLTYPE *Start)(
1731        IMFMediaSession *This,
1732        const GUID *pguidTimeFormat,
1733        const PROPVARIANT *pvarStartPosition);
1734
1735    HRESULT (STDMETHODCALLTYPE *Pause)(
1736        IMFMediaSession *This);
1737
1738    HRESULT (STDMETHODCALLTYPE *Stop)(
1739        IMFMediaSession *This);
1740
1741    HRESULT (STDMETHODCALLTYPE *Close)(
1742        IMFMediaSession *This);
1743
1744    HRESULT (STDMETHODCALLTYPE *Shutdown)(
1745        IMFMediaSession *This);
1746
1747    HRESULT (STDMETHODCALLTYPE *GetClock)(
1748        IMFMediaSession *This,
1749        IMFClock **ppClock);
1750
1751    HRESULT (STDMETHODCALLTYPE *GetSessionCapabilities)(
1752        IMFMediaSession *This,
1753        DWORD *pdwCaps);
1754
1755    HRESULT (STDMETHODCALLTYPE *GetFullTopology)(
1756        IMFMediaSession *This,
1757        DWORD dwGetFullTopologyFlags,
1758        TOPOID TopoId,
1759        IMFTopology **ppFullTopology);
1760
1761    END_INTERFACE
1762} IMFMediaSessionVtbl;
1763
1764interface IMFMediaSession {
1765    CONST_VTBL IMFMediaSessionVtbl* lpVtbl;
1766};
1767
1768#ifdef COBJMACROS
1769#ifndef WIDL_C_INLINE_WRAPPERS
1770/*** IUnknown methods ***/
1771#define IMFMediaSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1772#define IMFMediaSession_AddRef(This) (This)->lpVtbl->AddRef(This)
1773#define IMFMediaSession_Release(This) (This)->lpVtbl->Release(This)
1774/*** IMFMediaEventGenerator methods ***/
1775#define IMFMediaSession_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
1776#define IMFMediaSession_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
1777#define IMFMediaSession_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
1778#define IMFMediaSession_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
1779/*** IMFMediaSession methods ***/
1780#define IMFMediaSession_SetTopology(This,dwSetTopologyFlags,pTopology) (This)->lpVtbl->SetTopology(This,dwSetTopologyFlags,pTopology)
1781#define IMFMediaSession_ClearTopologies(This) (This)->lpVtbl->ClearTopologies(This)
1782#define IMFMediaSession_Start(This,pguidTimeFormat,pvarStartPosition) (This)->lpVtbl->Start(This,pguidTimeFormat,pvarStartPosition)
1783#define IMFMediaSession_Pause(This) (This)->lpVtbl->Pause(This)
1784#define IMFMediaSession_Stop(This) (This)->lpVtbl->Stop(This)
1785#define IMFMediaSession_Close(This) (This)->lpVtbl->Close(This)
1786#define IMFMediaSession_Shutdown(This) (This)->lpVtbl->Shutdown(This)
1787#define IMFMediaSession_GetClock(This,ppClock) (This)->lpVtbl->GetClock(This,ppClock)
1788#define IMFMediaSession_GetSessionCapabilities(This,pdwCaps) (This)->lpVtbl->GetSessionCapabilities(This,pdwCaps)
1789#define IMFMediaSession_GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology) (This)->lpVtbl->GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology)
1790#else
1791/*** IUnknown methods ***/
1792static inline HRESULT IMFMediaSession_QueryInterface(IMFMediaSession* This,REFIID riid,void **ppvObject) {
1793    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1794}
1795static inline ULONG IMFMediaSession_AddRef(IMFMediaSession* This) {
1796    return This->lpVtbl->AddRef(This);
1797}
1798static inline ULONG IMFMediaSession_Release(IMFMediaSession* This) {
1799    return This->lpVtbl->Release(This);
1800}
1801/*** IMFMediaEventGenerator methods ***/
1802static inline HRESULT IMFMediaSession_GetEvent(IMFMediaSession* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
1803    return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
1804}
1805static inline HRESULT IMFMediaSession_BeginGetEvent(IMFMediaSession* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
1806    return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
1807}
1808static inline HRESULT IMFMediaSession_EndGetEvent(IMFMediaSession* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
1809    return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
1810}
1811static inline HRESULT IMFMediaSession_QueueEvent(IMFMediaSession* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
1812    return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
1813}
1814/*** IMFMediaSession methods ***/
1815static inline HRESULT IMFMediaSession_SetTopology(IMFMediaSession* This,DWORD dwSetTopologyFlags,IMFTopology *pTopology) {
1816    return This->lpVtbl->SetTopology(This,dwSetTopologyFlags,pTopology);
1817}
1818static inline HRESULT IMFMediaSession_ClearTopologies(IMFMediaSession* This) {
1819    return This->lpVtbl->ClearTopologies(This);
1820}
1821static inline HRESULT IMFMediaSession_Start(IMFMediaSession* This,const GUID *pguidTimeFormat,const PROPVARIANT *pvarStartPosition) {
1822    return This->lpVtbl->Start(This,pguidTimeFormat,pvarStartPosition);
1823}
1824static inline HRESULT IMFMediaSession_Pause(IMFMediaSession* This) {
1825    return This->lpVtbl->Pause(This);
1826}
1827static inline HRESULT IMFMediaSession_Stop(IMFMediaSession* This) {
1828    return This->lpVtbl->Stop(This);
1829}
1830static inline HRESULT IMFMediaSession_Close(IMFMediaSession* This) {
1831    return This->lpVtbl->Close(This);
1832}
1833static inline HRESULT IMFMediaSession_Shutdown(IMFMediaSession* This) {
1834    return This->lpVtbl->Shutdown(This);
1835}
1836static inline HRESULT IMFMediaSession_GetClock(IMFMediaSession* This,IMFClock **ppClock) {
1837    return This->lpVtbl->GetClock(This,ppClock);
1838}
1839static inline HRESULT IMFMediaSession_GetSessionCapabilities(IMFMediaSession* This,DWORD *pdwCaps) {
1840    return This->lpVtbl->GetSessionCapabilities(This,pdwCaps);
1841}
1842static inline HRESULT IMFMediaSession_GetFullTopology(IMFMediaSession* This,DWORD dwGetFullTopologyFlags,TOPOID TopoId,IMFTopology **ppFullTopology) {
1843    return This->lpVtbl->GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology);
1844}
1845#endif
1846#endif
1847
1848#endif
1849
1850
1851#endif  /* __IMFMediaSession_INTERFACE_DEFINED__ */
1852
1853/*****************************************************************************
1854 * IMFMediaTypeHandler interface
1855 */
1856#ifndef __IMFMediaTypeHandler_INTERFACE_DEFINED__
1857#define __IMFMediaTypeHandler_INTERFACE_DEFINED__
1858
1859DEFINE_GUID(IID_IMFMediaTypeHandler, 0xe93dcf6c, 0x4b07, 0x4e1e, 0x81,0x23, 0xaa,0x16,0xed,0x6e,0xad,0xf5);
1860#if defined(__cplusplus) && !defined(CINTERFACE)
1861MIDL_INTERFACE("e93dcf6c-4b07-4e1e-8123-aa16ed6eadf5")
1862IMFMediaTypeHandler : public IUnknown
1863{
1864    virtual HRESULT STDMETHODCALLTYPE IsMediaTypeSupported(
1865        IMFMediaType *pMediaType,
1866        IMFMediaType **ppMediaType) = 0;
1867
1868    virtual HRESULT STDMETHODCALLTYPE GetMediaTypeCount(
1869        DWORD *pdwTypeCount) = 0;
1870
1871    virtual HRESULT STDMETHODCALLTYPE GetMediaTypeByIndex(
1872        DWORD dwIndex,
1873        IMFMediaType **ppType) = 0;
1874
1875    virtual HRESULT STDMETHODCALLTYPE SetCurrentMediaType(
1876        IMFMediaType *pMediaType) = 0;
1877
1878    virtual HRESULT STDMETHODCALLTYPE GetCurrentMediaType(
1879        IMFMediaType **ppMediaType) = 0;
1880
1881    virtual HRESULT STDMETHODCALLTYPE GetMajorType(
1882        GUID *pguidMajorType) = 0;
1883
1884};
1885#ifdef __CRT_UUID_DECL
1886__CRT_UUID_DECL(IMFMediaTypeHandler, 0xe93dcf6c, 0x4b07, 0x4e1e, 0x81,0x23, 0xaa,0x16,0xed,0x6e,0xad,0xf5)
1887#endif
1888#else
1889typedef struct IMFMediaTypeHandlerVtbl {
1890    BEGIN_INTERFACE
1891
1892    /*** IUnknown methods ***/
1893    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1894        IMFMediaTypeHandler *This,
1895        REFIID riid,
1896        void **ppvObject);
1897
1898    ULONG (STDMETHODCALLTYPE *AddRef)(
1899        IMFMediaTypeHandler *This);
1900
1901    ULONG (STDMETHODCALLTYPE *Release)(
1902        IMFMediaTypeHandler *This);
1903
1904    /*** IMFMediaTypeHandler methods ***/
1905    HRESULT (STDMETHODCALLTYPE *IsMediaTypeSupported)(
1906        IMFMediaTypeHandler *This,
1907        IMFMediaType *pMediaType,
1908        IMFMediaType **ppMediaType);
1909
1910    HRESULT (STDMETHODCALLTYPE *GetMediaTypeCount)(
1911        IMFMediaTypeHandler *This,
1912        DWORD *pdwTypeCount);
1913
1914    HRESULT (STDMETHODCALLTYPE *GetMediaTypeByIndex)(
1915        IMFMediaTypeHandler *This,
1916        DWORD dwIndex,
1917        IMFMediaType **ppType);
1918
1919    HRESULT (STDMETHODCALLTYPE *SetCurrentMediaType)(
1920        IMFMediaTypeHandler *This,
1921        IMFMediaType *pMediaType);
1922
1923    HRESULT (STDMETHODCALLTYPE *GetCurrentMediaType)(
1924        IMFMediaTypeHandler *This,
1925        IMFMediaType **ppMediaType);
1926
1927    HRESULT (STDMETHODCALLTYPE *GetMajorType)(
1928        IMFMediaTypeHandler *This,
1929        GUID *pguidMajorType);
1930
1931    END_INTERFACE
1932} IMFMediaTypeHandlerVtbl;
1933
1934interface IMFMediaTypeHandler {
1935    CONST_VTBL IMFMediaTypeHandlerVtbl* lpVtbl;
1936};
1937
1938#ifdef COBJMACROS
1939#ifndef WIDL_C_INLINE_WRAPPERS
1940/*** IUnknown methods ***/
1941#define IMFMediaTypeHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1942#define IMFMediaTypeHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
1943#define IMFMediaTypeHandler_Release(This) (This)->lpVtbl->Release(This)
1944/*** IMFMediaTypeHandler methods ***/
1945#define IMFMediaTypeHandler_IsMediaTypeSupported(This,pMediaType,ppMediaType) (This)->lpVtbl->IsMediaTypeSupported(This,pMediaType,ppMediaType)
1946#define IMFMediaTypeHandler_GetMediaTypeCount(This,pdwTypeCount) (This)->lpVtbl->GetMediaTypeCount(This,pdwTypeCount)
1947#define IMFMediaTypeHandler_GetMediaTypeByIndex(This,dwIndex,ppType) (This)->lpVtbl->GetMediaTypeByIndex(This,dwIndex,ppType)
1948#define IMFMediaTypeHandler_SetCurrentMediaType(This,pMediaType) (This)->lpVtbl->SetCurrentMediaType(This,pMediaType)
1949#define IMFMediaTypeHandler_GetCurrentMediaType(This,ppMediaType) (This)->lpVtbl->GetCurrentMediaType(This,ppMediaType)
1950#define IMFMediaTypeHandler_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
1951#else
1952/*** IUnknown methods ***/
1953static inline HRESULT IMFMediaTypeHandler_QueryInterface(IMFMediaTypeHandler* This,REFIID riid,void **ppvObject) {
1954    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1955}
1956static inline ULONG IMFMediaTypeHandler_AddRef(IMFMediaTypeHandler* This) {
1957    return This->lpVtbl->AddRef(This);
1958}
1959static inline ULONG IMFMediaTypeHandler_Release(IMFMediaTypeHandler* This) {
1960    return This->lpVtbl->Release(This);
1961}
1962/*** IMFMediaTypeHandler methods ***/
1963static inline HRESULT IMFMediaTypeHandler_IsMediaTypeSupported(IMFMediaTypeHandler* This,IMFMediaType *pMediaType,IMFMediaType **ppMediaType) {
1964    return This->lpVtbl->IsMediaTypeSupported(This,pMediaType,ppMediaType);
1965}
1966static inline HRESULT IMFMediaTypeHandler_GetMediaTypeCount(IMFMediaTypeHandler* This,DWORD *pdwTypeCount) {
1967    return This->lpVtbl->GetMediaTypeCount(This,pdwTypeCount);
1968}
1969static inline HRESULT IMFMediaTypeHandler_GetMediaTypeByIndex(IMFMediaTypeHandler* This,DWORD dwIndex,IMFMediaType **ppType) {
1970    return This->lpVtbl->GetMediaTypeByIndex(This,dwIndex,ppType);
1971}
1972static inline HRESULT IMFMediaTypeHandler_SetCurrentMediaType(IMFMediaTypeHandler* This,IMFMediaType *pMediaType) {
1973    return This->lpVtbl->SetCurrentMediaType(This,pMediaType);
1974}
1975static inline HRESULT IMFMediaTypeHandler_GetCurrentMediaType(IMFMediaTypeHandler* This,IMFMediaType **ppMediaType) {
1976    return This->lpVtbl->GetCurrentMediaType(This,ppMediaType);
1977}
1978static inline HRESULT IMFMediaTypeHandler_GetMajorType(IMFMediaTypeHandler* This,GUID *pguidMajorType) {
1979    return This->lpVtbl->GetMajorType(This,pguidMajorType);
1980}
1981#endif
1982#endif
1983
1984#endif
1985
1986HRESULT STDMETHODCALLTYPE IMFMediaTypeHandler_RemoteGetCurrentMediaType_Proxy(
1987    IMFMediaTypeHandler* This,
1988    BYTE **ppbData,
1989    DWORD *pcbData);
1990void __RPC_STUB IMFMediaTypeHandler_RemoteGetCurrentMediaType_Stub(
1991    IRpcStubBuffer* This,
1992    IRpcChannelBuffer* pRpcChannelBuffer,
1993    PRPC_MESSAGE pRpcMessage,
1994    DWORD* pdwStubPhase);
1995HRESULT CALLBACK IMFMediaTypeHandler_GetCurrentMediaType_Proxy(
1996    IMFMediaTypeHandler* This,
1997    IMFMediaType **ppMediaType);
1998HRESULT __RPC_STUB IMFMediaTypeHandler_GetCurrentMediaType_Stub(
1999    IMFMediaTypeHandler* This,
2000    BYTE **ppbData,
2001    DWORD *pcbData);
2002
2003#endif  /* __IMFMediaTypeHandler_INTERFACE_DEFINED__ */
2004
2005/*****************************************************************************
2006 * IMFStreamDescriptor interface
2007 */
2008#ifndef __IMFStreamDescriptor_INTERFACE_DEFINED__
2009#define __IMFStreamDescriptor_INTERFACE_DEFINED__
2010
2011DEFINE_GUID(IID_IMFStreamDescriptor, 0x56c03d9c, 0x9dbb, 0x45f5, 0xab,0x4b, 0xd8,0x0f,0x47,0xc0,0x59,0x38);
2012#if defined(__cplusplus) && !defined(CINTERFACE)
2013MIDL_INTERFACE("56c03d9c-9dbb-45f5-ab4b-d80f47c05938")
2014IMFStreamDescriptor : public IMFAttributes
2015{
2016    virtual HRESULT STDMETHODCALLTYPE GetStreamIdentifier(
2017        DWORD *pdwStreamIdentifier) = 0;
2018
2019    virtual HRESULT STDMETHODCALLTYPE GetMediaTypeHandler(
2020        IMFMediaTypeHandler **ppMediaTypeHandler) = 0;
2021
2022};
2023#ifdef __CRT_UUID_DECL
2024__CRT_UUID_DECL(IMFStreamDescriptor, 0x56c03d9c, 0x9dbb, 0x45f5, 0xab,0x4b, 0xd8,0x0f,0x47,0xc0,0x59,0x38)
2025#endif
2026#else
2027typedef struct IMFStreamDescriptorVtbl {
2028    BEGIN_INTERFACE
2029
2030    /*** IUnknown methods ***/
2031    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2032        IMFStreamDescriptor *This,
2033        REFIID riid,
2034        void **ppvObject);
2035
2036    ULONG (STDMETHODCALLTYPE *AddRef)(
2037        IMFStreamDescriptor *This);
2038
2039    ULONG (STDMETHODCALLTYPE *Release)(
2040        IMFStreamDescriptor *This);
2041
2042    /*** IMFAttributes methods ***/
2043    HRESULT (STDMETHODCALLTYPE *GetItem)(
2044        IMFStreamDescriptor *This,
2045        REFGUID guidKey,
2046        PROPVARIANT *pValue);
2047
2048    HRESULT (STDMETHODCALLTYPE *GetItemType)(
2049        IMFStreamDescriptor *This,
2050        REFGUID guidKey,
2051        MF_ATTRIBUTE_TYPE *pType);
2052
2053    HRESULT (STDMETHODCALLTYPE *CompareItem)(
2054        IMFStreamDescriptor *This,
2055        REFGUID guidKey,
2056        REFPROPVARIANT Value,
2057        WINBOOL *pbResult);
2058
2059    HRESULT (STDMETHODCALLTYPE *Compare)(
2060        IMFStreamDescriptor *This,
2061        IMFAttributes *pTheirs,
2062        MF_ATTRIBUTES_MATCH_TYPE MatchType,
2063        WINBOOL *pbResult);
2064
2065    HRESULT (STDMETHODCALLTYPE *GetUINT32)(
2066        IMFStreamDescriptor *This,
2067        REFGUID guidKey,
2068        UINT32 *punValue);
2069
2070    HRESULT (STDMETHODCALLTYPE *GetUINT64)(
2071        IMFStreamDescriptor *This,
2072        REFGUID guidKey,
2073        UINT64 *punValue);
2074
2075    HRESULT (STDMETHODCALLTYPE *GetDouble)(
2076        IMFStreamDescriptor *This,
2077        REFGUID guidKey,
2078        double *pfValue);
2079
2080    HRESULT (STDMETHODCALLTYPE *GetGUID)(
2081        IMFStreamDescriptor *This,
2082        REFGUID guidKey,
2083        GUID *pguidValue);
2084
2085    HRESULT (STDMETHODCALLTYPE *GetStringLength)(
2086        IMFStreamDescriptor *This,
2087        REFGUID guidKey,
2088        UINT32 *pcchLength);
2089
2090    HRESULT (STDMETHODCALLTYPE *GetString)(
2091        IMFStreamDescriptor *This,
2092        REFGUID guidKey,
2093        LPWSTR pwszValue,
2094        UINT32 cchBufSize,
2095        UINT32 *pcchLength);
2096
2097    HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
2098        IMFStreamDescriptor *This,
2099        REFGUID guidKey,
2100        LPWSTR *ppwszValue,
2101        UINT32 *pcchLength);
2102
2103    HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
2104        IMFStreamDescriptor *This,
2105        REFGUID guidKey,
2106        UINT32 *pcbBlobSize);
2107
2108    HRESULT (STDMETHODCALLTYPE *GetBlob)(
2109        IMFStreamDescriptor *This,
2110        REFGUID guidKey,
2111        UINT8 *pBuf,
2112        UINT32 cbBufSize,
2113        UINT32 *pcbBlobSize);
2114
2115    HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
2116        IMFStreamDescriptor *This,
2117        REFGUID guidKey,
2118        UINT8 **ppBuf,
2119        UINT32 *pcbSize);
2120
2121    HRESULT (STDMETHODCALLTYPE *GetUnknown)(
2122        IMFStreamDescriptor *This,
2123        REFGUID guidKey,
2124        REFIID riid,
2125        LPVOID *ppv);
2126
2127    HRESULT (STDMETHODCALLTYPE *SetItem)(
2128        IMFStreamDescriptor *This,
2129        REFGUID guidKey,
2130        REFPROPVARIANT Value);
2131
2132    HRESULT (STDMETHODCALLTYPE *DeleteItem)(
2133        IMFStreamDescriptor *This,
2134        REFGUID guidKey);
2135
2136    HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
2137        IMFStreamDescriptor *This);
2138
2139    HRESULT (STDMETHODCALLTYPE *SetUINT32)(
2140        IMFStreamDescriptor *This,
2141        REFGUID guidKey,
2142        UINT32 unValue);
2143
2144    HRESULT (STDMETHODCALLTYPE *SetUINT64)(
2145        IMFStreamDescriptor *This,
2146        REFGUID guidKey,
2147        UINT64 unValue);
2148
2149    HRESULT (STDMETHODCALLTYPE *SetDouble)(
2150        IMFStreamDescriptor *This,
2151        REFGUID guidKey,
2152        double fValue);
2153
2154    HRESULT (STDMETHODCALLTYPE *SetGUID)(
2155        IMFStreamDescriptor *This,
2156        REFGUID guidKey,
2157        REFGUID guidValue);
2158
2159    HRESULT (STDMETHODCALLTYPE *SetString)(
2160        IMFStreamDescriptor *This,
2161        REFGUID guidKey,
2162        LPCWSTR wszValue);
2163
2164    HRESULT (STDMETHODCALLTYPE *SetBlob)(
2165        IMFStreamDescriptor *This,
2166        REFGUID guidKey,
2167        const UINT8 *pBuf,
2168        UINT32 cbBufSize);
2169
2170    HRESULT (STDMETHODCALLTYPE *SetUnknown)(
2171        IMFStreamDescriptor *This,
2172        REFGUID guidKey,
2173        IUnknown *pUnknown);
2174
2175    HRESULT (STDMETHODCALLTYPE *LockStore)(
2176        IMFStreamDescriptor *This);
2177
2178    HRESULT (STDMETHODCALLTYPE *UnlockStore)(
2179        IMFStreamDescriptor *This);
2180
2181    HRESULT (STDMETHODCALLTYPE *GetCount)(
2182        IMFStreamDescriptor *This,
2183        UINT32 *pcItems);
2184
2185    HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
2186        IMFStreamDescriptor *This,
2187        UINT32 unIndex,
2188        GUID *pguidKey,
2189        PROPVARIANT *pValue);
2190
2191    HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
2192        IMFStreamDescriptor *This,
2193        IMFAttributes *pDest);
2194
2195    /*** IMFStreamDescriptor methods ***/
2196    HRESULT (STDMETHODCALLTYPE *GetStreamIdentifier)(
2197        IMFStreamDescriptor *This,
2198        DWORD *pdwStreamIdentifier);
2199
2200    HRESULT (STDMETHODCALLTYPE *GetMediaTypeHandler)(
2201        IMFStreamDescriptor *This,
2202        IMFMediaTypeHandler **ppMediaTypeHandler);
2203
2204    END_INTERFACE
2205} IMFStreamDescriptorVtbl;
2206
2207interface IMFStreamDescriptor {
2208    CONST_VTBL IMFStreamDescriptorVtbl* lpVtbl;
2209};
2210
2211#ifdef COBJMACROS
2212#ifndef WIDL_C_INLINE_WRAPPERS
2213/*** IUnknown methods ***/
2214#define IMFStreamDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2215#define IMFStreamDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
2216#define IMFStreamDescriptor_Release(This) (This)->lpVtbl->Release(This)
2217/*** IMFAttributes methods ***/
2218#define IMFStreamDescriptor_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
2219#define IMFStreamDescriptor_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
2220#define IMFStreamDescriptor_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
2221#define IMFStreamDescriptor_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
2222#define IMFStreamDescriptor_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
2223#define IMFStreamDescriptor_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
2224#define IMFStreamDescriptor_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
2225#define IMFStreamDescriptor_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
2226#define IMFStreamDescriptor_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
2227#define IMFStreamDescriptor_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
2228#define IMFStreamDescriptor_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
2229#define IMFStreamDescriptor_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
2230#define IMFStreamDescriptor_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
2231#define IMFStreamDescriptor_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
2232#define IMFStreamDescriptor_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
2233#define IMFStreamDescriptor_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
2234#define IMFStreamDescriptor_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
2235#define IMFStreamDescriptor_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
2236#define IMFStreamDescriptor_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
2237#define IMFStreamDescriptor_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
2238#define IMFStreamDescriptor_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
2239#define IMFStreamDescriptor_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
2240#define IMFStreamDescriptor_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
2241#define IMFStreamDescriptor_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
2242#define IMFStreamDescriptor_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
2243#define IMFStreamDescriptor_LockStore(This) (This)->lpVtbl->LockStore(This)
2244#define IMFStreamDescriptor_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
2245#define IMFStreamDescriptor_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
2246#define IMFStreamDescriptor_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
2247#define IMFStreamDescriptor_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
2248/*** IMFStreamDescriptor methods ***/
2249#define IMFStreamDescriptor_GetStreamIdentifier(This,pdwStreamIdentifier) (This)->lpVtbl->GetStreamIdentifier(This,pdwStreamIdentifier)
2250#define IMFStreamDescriptor_GetMediaTypeHandler(This,ppMediaTypeHandler) (This)->lpVtbl->GetMediaTypeHandler(This,ppMediaTypeHandler)
2251#else
2252/*** IUnknown methods ***/
2253static inline HRESULT IMFStreamDescriptor_QueryInterface(IMFStreamDescriptor* This,REFIID riid,void **ppvObject) {
2254    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2255}
2256static inline ULONG IMFStreamDescriptor_AddRef(IMFStreamDescriptor* This) {
2257    return This->lpVtbl->AddRef(This);
2258}
2259static inline ULONG IMFStreamDescriptor_Release(IMFStreamDescriptor* This) {
2260    return This->lpVtbl->Release(This);
2261}
2262/*** IMFAttributes methods ***/
2263static inline HRESULT IMFStreamDescriptor_GetItem(IMFStreamDescriptor* This,REFGUID guidKey,PROPVARIANT *pValue) {
2264    return This->lpVtbl->GetItem(This,guidKey,pValue);
2265}
2266static inline HRESULT IMFStreamDescriptor_GetItemType(IMFStreamDescriptor* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
2267    return This->lpVtbl->GetItemType(This,guidKey,pType);
2268}
2269static inline HRESULT IMFStreamDescriptor_CompareItem(IMFStreamDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
2270    return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
2271}
2272static inline HRESULT IMFStreamDescriptor_Compare(IMFStreamDescriptor* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
2273    return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
2274}
2275static inline HRESULT IMFStreamDescriptor_GetUINT32(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *punValue) {
2276    return This->lpVtbl->GetUINT32(This,guidKey,punValue);
2277}
2278static inline HRESULT IMFStreamDescriptor_GetUINT64(IMFStreamDescriptor* This,REFGUID guidKey,UINT64 *punValue) {
2279    return This->lpVtbl->GetUINT64(This,guidKey,punValue);
2280}
2281static inline HRESULT IMFStreamDescriptor_GetDouble(IMFStreamDescriptor* This,REFGUID guidKey,double *pfValue) {
2282    return This->lpVtbl->GetDouble(This,guidKey,pfValue);
2283}
2284static inline HRESULT IMFStreamDescriptor_GetGUID(IMFStreamDescriptor* This,REFGUID guidKey,GUID *pguidValue) {
2285    return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
2286}
2287static inline HRESULT IMFStreamDescriptor_GetStringLength(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *pcchLength) {
2288    return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
2289}
2290static inline HRESULT IMFStreamDescriptor_GetString(IMFStreamDescriptor* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
2291    return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
2292}
2293static inline HRESULT IMFStreamDescriptor_GetAllocatedString(IMFStreamDescriptor* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
2294    return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
2295}
2296static inline HRESULT IMFStreamDescriptor_GetBlobSize(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
2297    return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
2298}
2299static inline HRESULT IMFStreamDescriptor_GetBlob(IMFStreamDescriptor* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
2300    return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
2301}
2302static inline HRESULT IMFStreamDescriptor_GetAllocatedBlob(IMFStreamDescriptor* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
2303    return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
2304}
2305static inline HRESULT IMFStreamDescriptor_GetUnknown(IMFStreamDescriptor* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
2306    return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
2307}
2308static inline HRESULT IMFStreamDescriptor_SetItem(IMFStreamDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value) {
2309    return This->lpVtbl->SetItem(This,guidKey,Value);
2310}
2311static inline HRESULT IMFStreamDescriptor_DeleteItem(IMFStreamDescriptor* This,REFGUID guidKey) {
2312    return This->lpVtbl->DeleteItem(This,guidKey);
2313}
2314static inline HRESULT IMFStreamDescriptor_DeleteAllItems(IMFStreamDescriptor* This) {
2315    return This->lpVtbl->DeleteAllItems(This);
2316}
2317static inline HRESULT IMFStreamDescriptor_SetUINT32(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 unValue) {
2318    return This->lpVtbl->SetUINT32(This,guidKey,unValue);
2319}
2320static inline HRESULT IMFStreamDescriptor_SetUINT64(IMFStreamDescriptor* This,REFGUID guidKey,UINT64 unValue) {
2321    return This->lpVtbl->SetUINT64(This,guidKey,unValue);
2322}
2323static inline HRESULT IMFStreamDescriptor_SetDouble(IMFStreamDescriptor* This,REFGUID guidKey,double fValue) {
2324    return This->lpVtbl->SetDouble(This,guidKey,fValue);
2325}
2326static inline HRESULT IMFStreamDescriptor_SetGUID(IMFStreamDescriptor* This,REFGUID guidKey,REFGUID guidValue) {
2327    return This->lpVtbl->SetGUID(This,guidKey,guidValue);
2328}
2329static inline HRESULT IMFStreamDescriptor_SetString(IMFStreamDescriptor* This,REFGUID guidKey,LPCWSTR wszValue) {
2330    return This->lpVtbl->SetString(This,guidKey,wszValue);
2331}
2332static inline HRESULT IMFStreamDescriptor_SetBlob(IMFStreamDescriptor* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
2333    return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
2334}
2335static inline HRESULT IMFStreamDescriptor_SetUnknown(IMFStreamDescriptor* This,REFGUID guidKey,IUnknown *pUnknown) {
2336    return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
2337}
2338static inline HRESULT IMFStreamDescriptor_LockStore(IMFStreamDescriptor* This) {
2339    return This->lpVtbl->LockStore(This);
2340}
2341static inline HRESULT IMFStreamDescriptor_UnlockStore(IMFStreamDescriptor* This) {
2342    return This->lpVtbl->UnlockStore(This);
2343}
2344static inline HRESULT IMFStreamDescriptor_GetCount(IMFStreamDescriptor* This,UINT32 *pcItems) {
2345    return This->lpVtbl->GetCount(This,pcItems);
2346}
2347static inline HRESULT IMFStreamDescriptor_GetItemByIndex(IMFStreamDescriptor* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
2348    return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
2349}
2350static inline HRESULT IMFStreamDescriptor_CopyAllItems(IMFStreamDescriptor* This,IMFAttributes *pDest) {
2351    return This->lpVtbl->CopyAllItems(This,pDest);
2352}
2353/*** IMFStreamDescriptor methods ***/
2354static inline HRESULT IMFStreamDescriptor_GetStreamIdentifier(IMFStreamDescriptor* This,DWORD *pdwStreamIdentifier) {
2355    return This->lpVtbl->GetStreamIdentifier(This,pdwStreamIdentifier);
2356}
2357static inline HRESULT IMFStreamDescriptor_GetMediaTypeHandler(IMFStreamDescriptor* This,IMFMediaTypeHandler **ppMediaTypeHandler) {
2358    return This->lpVtbl->GetMediaTypeHandler(This,ppMediaTypeHandler);
2359}
2360#endif
2361#endif
2362
2363#endif
2364
2365
2366#endif  /* __IMFStreamDescriptor_INTERFACE_DEFINED__ */
2367
2368/*****************************************************************************
2369 * IMFPresentationDescriptor interface
2370 */
2371#ifndef __IMFPresentationDescriptor_INTERFACE_DEFINED__
2372#define __IMFPresentationDescriptor_INTERFACE_DEFINED__
2373
2374DEFINE_GUID(IID_IMFPresentationDescriptor, 0x03cb2711, 0x24d7, 0x4db6, 0xa1,0x7f, 0xf3,0xa7,0xa4,0x79,0xa5,0x36);
2375#if defined(__cplusplus) && !defined(CINTERFACE)
2376MIDL_INTERFACE("03cb2711-24d7-4db6-a17f-f3a7a479a536")
2377IMFPresentationDescriptor : public IMFAttributes
2378{
2379    virtual HRESULT STDMETHODCALLTYPE GetStreamDescriptorCount(
2380        DWORD *pdwDescriptorCount) = 0;
2381
2382    virtual HRESULT STDMETHODCALLTYPE GetStreamDescriptorByIndex(
2383        DWORD dwIndex,
2384        WINBOOL *pfSelected,
2385        IMFStreamDescriptor **ppDescriptor) = 0;
2386
2387    virtual HRESULT STDMETHODCALLTYPE SelectStream(
2388        DWORD dwDescriptorIndex) = 0;
2389
2390    virtual HRESULT STDMETHODCALLTYPE DeselectStream(
2391        DWORD dwDescriptorIndex) = 0;
2392
2393    virtual HRESULT STDMETHODCALLTYPE Clone(
2394        IMFPresentationDescriptor **ppPresentationDescriptor) = 0;
2395
2396};
2397#ifdef __CRT_UUID_DECL
2398__CRT_UUID_DECL(IMFPresentationDescriptor, 0x03cb2711, 0x24d7, 0x4db6, 0xa1,0x7f, 0xf3,0xa7,0xa4,0x79,0xa5,0x36)
2399#endif
2400#else
2401typedef struct IMFPresentationDescriptorVtbl {
2402    BEGIN_INTERFACE
2403
2404    /*** IUnknown methods ***/
2405    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2406        IMFPresentationDescriptor *This,
2407        REFIID riid,
2408        void **ppvObject);
2409
2410    ULONG (STDMETHODCALLTYPE *AddRef)(
2411        IMFPresentationDescriptor *This);
2412
2413    ULONG (STDMETHODCALLTYPE *Release)(
2414        IMFPresentationDescriptor *This);
2415
2416    /*** IMFAttributes methods ***/
2417    HRESULT (STDMETHODCALLTYPE *GetItem)(
2418        IMFPresentationDescriptor *This,
2419        REFGUID guidKey,
2420        PROPVARIANT *pValue);
2421
2422    HRESULT (STDMETHODCALLTYPE *GetItemType)(
2423        IMFPresentationDescriptor *This,
2424        REFGUID guidKey,
2425        MF_ATTRIBUTE_TYPE *pType);
2426
2427    HRESULT (STDMETHODCALLTYPE *CompareItem)(
2428        IMFPresentationDescriptor *This,
2429        REFGUID guidKey,
2430        REFPROPVARIANT Value,
2431        WINBOOL *pbResult);
2432
2433    HRESULT (STDMETHODCALLTYPE *Compare)(
2434        IMFPresentationDescriptor *This,
2435        IMFAttributes *pTheirs,
2436        MF_ATTRIBUTES_MATCH_TYPE MatchType,
2437        WINBOOL *pbResult);
2438
2439    HRESULT (STDMETHODCALLTYPE *GetUINT32)(
2440        IMFPresentationDescriptor *This,
2441        REFGUID guidKey,
2442        UINT32 *punValue);
2443
2444    HRESULT (STDMETHODCALLTYPE *GetUINT64)(
2445        IMFPresentationDescriptor *This,
2446        REFGUID guidKey,
2447        UINT64 *punValue);
2448
2449    HRESULT (STDMETHODCALLTYPE *GetDouble)(
2450        IMFPresentationDescriptor *This,
2451        REFGUID guidKey,
2452        double *pfValue);
2453
2454    HRESULT (STDMETHODCALLTYPE *GetGUID)(
2455        IMFPresentationDescriptor *This,
2456        REFGUID guidKey,
2457        GUID *pguidValue);
2458
2459    HRESULT (STDMETHODCALLTYPE *GetStringLength)(
2460        IMFPresentationDescriptor *This,
2461        REFGUID guidKey,
2462        UINT32 *pcchLength);
2463
2464    HRESULT (STDMETHODCALLTYPE *GetString)(
2465        IMFPresentationDescriptor *This,
2466        REFGUID guidKey,
2467        LPWSTR pwszValue,
2468        UINT32 cchBufSize,
2469        UINT32 *pcchLength);
2470
2471    HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
2472        IMFPresentationDescriptor *This,
2473        REFGUID guidKey,
2474        LPWSTR *ppwszValue,
2475        UINT32 *pcchLength);
2476
2477    HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
2478        IMFPresentationDescriptor *This,
2479        REFGUID guidKey,
2480        UINT32 *pcbBlobSize);
2481
2482    HRESULT (STDMETHODCALLTYPE *GetBlob)(
2483        IMFPresentationDescriptor *This,
2484        REFGUID guidKey,
2485        UINT8 *pBuf,
2486        UINT32 cbBufSize,
2487        UINT32 *pcbBlobSize);
2488
2489    HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
2490        IMFPresentationDescriptor *This,
2491        REFGUID guidKey,
2492        UINT8 **ppBuf,
2493        UINT32 *pcbSize);
2494
2495    HRESULT (STDMETHODCALLTYPE *GetUnknown)(
2496        IMFPresentationDescriptor *This,
2497        REFGUID guidKey,
2498        REFIID riid,
2499        LPVOID *ppv);
2500
2501    HRESULT (STDMETHODCALLTYPE *SetItem)(
2502        IMFPresentationDescriptor *This,
2503        REFGUID guidKey,
2504        REFPROPVARIANT Value);
2505
2506    HRESULT (STDMETHODCALLTYPE *DeleteItem)(
2507        IMFPresentationDescriptor *This,
2508        REFGUID guidKey);
2509
2510    HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
2511        IMFPresentationDescriptor *This);
2512
2513    HRESULT (STDMETHODCALLTYPE *SetUINT32)(
2514        IMFPresentationDescriptor *This,
2515        REFGUID guidKey,
2516        UINT32 unValue);
2517
2518    HRESULT (STDMETHODCALLTYPE *SetUINT64)(
2519        IMFPresentationDescriptor *This,
2520        REFGUID guidKey,
2521        UINT64 unValue);
2522
2523    HRESULT (STDMETHODCALLTYPE *SetDouble)(
2524        IMFPresentationDescriptor *This,
2525        REFGUID guidKey,
2526        double fValue);
2527
2528    HRESULT (STDMETHODCALLTYPE *SetGUID)(
2529        IMFPresentationDescriptor *This,
2530        REFGUID guidKey,
2531        REFGUID guidValue);
2532
2533    HRESULT (STDMETHODCALLTYPE *SetString)(
2534        IMFPresentationDescriptor *This,
2535        REFGUID guidKey,
2536        LPCWSTR wszValue);
2537
2538    HRESULT (STDMETHODCALLTYPE *SetBlob)(
2539        IMFPresentationDescriptor *This,
2540        REFGUID guidKey,
2541        const UINT8 *pBuf,
2542        UINT32 cbBufSize);
2543
2544    HRESULT (STDMETHODCALLTYPE *SetUnknown)(
2545        IMFPresentationDescriptor *This,
2546        REFGUID guidKey,
2547        IUnknown *pUnknown);
2548
2549    HRESULT (STDMETHODCALLTYPE *LockStore)(
2550        IMFPresentationDescriptor *This);
2551
2552    HRESULT (STDMETHODCALLTYPE *UnlockStore)(
2553        IMFPresentationDescriptor *This);
2554
2555    HRESULT (STDMETHODCALLTYPE *GetCount)(
2556        IMFPresentationDescriptor *This,
2557        UINT32 *pcItems);
2558
2559    HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
2560        IMFPresentationDescriptor *This,
2561        UINT32 unIndex,
2562        GUID *pguidKey,
2563        PROPVARIANT *pValue);
2564
2565    HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
2566        IMFPresentationDescriptor *This,
2567        IMFAttributes *pDest);
2568
2569    /*** IMFPresentationDescriptor methods ***/
2570    HRESULT (STDMETHODCALLTYPE *GetStreamDescriptorCount)(
2571        IMFPresentationDescriptor *This,
2572        DWORD *pdwDescriptorCount);
2573
2574    HRESULT (STDMETHODCALLTYPE *GetStreamDescriptorByIndex)(
2575        IMFPresentationDescriptor *This,
2576        DWORD dwIndex,
2577        WINBOOL *pfSelected,
2578        IMFStreamDescriptor **ppDescriptor);
2579
2580    HRESULT (STDMETHODCALLTYPE *SelectStream)(
2581        IMFPresentationDescriptor *This,
2582        DWORD dwDescriptorIndex);
2583
2584    HRESULT (STDMETHODCALLTYPE *DeselectStream)(
2585        IMFPresentationDescriptor *This,
2586        DWORD dwDescriptorIndex);
2587
2588    HRESULT (STDMETHODCALLTYPE *Clone)(
2589        IMFPresentationDescriptor *This,
2590        IMFPresentationDescriptor **ppPresentationDescriptor);
2591
2592    END_INTERFACE
2593} IMFPresentationDescriptorVtbl;
2594
2595interface IMFPresentationDescriptor {
2596    CONST_VTBL IMFPresentationDescriptorVtbl* lpVtbl;
2597};
2598
2599#ifdef COBJMACROS
2600#ifndef WIDL_C_INLINE_WRAPPERS
2601/*** IUnknown methods ***/
2602#define IMFPresentationDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2603#define IMFPresentationDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
2604#define IMFPresentationDescriptor_Release(This) (This)->lpVtbl->Release(This)
2605/*** IMFAttributes methods ***/
2606#define IMFPresentationDescriptor_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
2607#define IMFPresentationDescriptor_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
2608#define IMFPresentationDescriptor_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
2609#define IMFPresentationDescriptor_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
2610#define IMFPresentationDescriptor_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
2611#define IMFPresentationDescriptor_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
2612#define IMFPresentationDescriptor_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
2613#define IMFPresentationDescriptor_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
2614#define IMFPresentationDescriptor_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
2615#define IMFPresentationDescriptor_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
2616#define IMFPresentationDescriptor_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
2617#define IMFPresentationDescriptor_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
2618#define IMFPresentationDescriptor_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
2619#define IMFPresentationDescriptor_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
2620#define IMFPresentationDescriptor_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
2621#define IMFPresentationDescriptor_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
2622#define IMFPresentationDescriptor_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
2623#define IMFPresentationDescriptor_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
2624#define IMFPresentationDescriptor_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
2625#define IMFPresentationDescriptor_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
2626#define IMFPresentationDescriptor_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
2627#define IMFPresentationDescriptor_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
2628#define IMFPresentationDescriptor_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
2629#define IMFPresentationDescriptor_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
2630#define IMFPresentationDescriptor_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
2631#define IMFPresentationDescriptor_LockStore(This) (This)->lpVtbl->LockStore(This)
2632#define IMFPresentationDescriptor_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
2633#define IMFPresentationDescriptor_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
2634#define IMFPresentationDescriptor_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
2635#define IMFPresentationDescriptor_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
2636/*** IMFPresentationDescriptor methods ***/
2637#define IMFPresentationDescriptor_GetStreamDescriptorCount(This,pdwDescriptorCount) (This)->lpVtbl->GetStreamDescriptorCount(This,pdwDescriptorCount)
2638#define IMFPresentationDescriptor_GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor) (This)->lpVtbl->GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor)
2639#define IMFPresentationDescriptor_SelectStream(This,dwDescriptorIndex) (This)->lpVtbl->SelectStream(This,dwDescriptorIndex)
2640#define IMFPresentationDescriptor_DeselectStream(This,dwDescriptorIndex) (This)->lpVtbl->DeselectStream(This,dwDescriptorIndex)
2641#define IMFPresentationDescriptor_Clone(This,ppPresentationDescriptor) (This)->lpVtbl->Clone(This,ppPresentationDescriptor)
2642#else
2643/*** IUnknown methods ***/
2644static inline HRESULT IMFPresentationDescriptor_QueryInterface(IMFPresentationDescriptor* This,REFIID riid,void **ppvObject) {
2645    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2646}
2647static inline ULONG IMFPresentationDescriptor_AddRef(IMFPresentationDescriptor* This) {
2648    return This->lpVtbl->AddRef(This);
2649}
2650static inline ULONG IMFPresentationDescriptor_Release(IMFPresentationDescriptor* This) {
2651    return This->lpVtbl->Release(This);
2652}
2653/*** IMFAttributes methods ***/
2654static inline HRESULT IMFPresentationDescriptor_GetItem(IMFPresentationDescriptor* This,REFGUID guidKey,PROPVARIANT *pValue) {
2655    return This->lpVtbl->GetItem(This,guidKey,pValue);
2656}
2657static inline HRESULT IMFPresentationDescriptor_GetItemType(IMFPresentationDescriptor* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
2658    return This->lpVtbl->GetItemType(This,guidKey,pType);
2659}
2660static inline HRESULT IMFPresentationDescriptor_CompareItem(IMFPresentationDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
2661    return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
2662}
2663static inline HRESULT IMFPresentationDescriptor_Compare(IMFPresentationDescriptor* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
2664    return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
2665}
2666static inline HRESULT IMFPresentationDescriptor_GetUINT32(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *punValue) {
2667    return This->lpVtbl->GetUINT32(This,guidKey,punValue);
2668}
2669static inline HRESULT IMFPresentationDescriptor_GetUINT64(IMFPresentationDescriptor* This,REFGUID guidKey,UINT64 *punValue) {
2670    return This->lpVtbl->GetUINT64(This,guidKey,punValue);
2671}
2672static inline HRESULT IMFPresentationDescriptor_GetDouble(IMFPresentationDescriptor* This,REFGUID guidKey,double *pfValue) {
2673    return This->lpVtbl->GetDouble(This,guidKey,pfValue);
2674}
2675static inline HRESULT IMFPresentationDescriptor_GetGUID(IMFPresentationDescriptor* This,REFGUID guidKey,GUID *pguidValue) {
2676    return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
2677}
2678static inline HRESULT IMFPresentationDescriptor_GetStringLength(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *pcchLength) {
2679    return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
2680}
2681static inline HRESULT IMFPresentationDescriptor_GetString(IMFPresentationDescriptor* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
2682    return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
2683}
2684static inline HRESULT IMFPresentationDescriptor_GetAllocatedString(IMFPresentationDescriptor* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
2685    return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
2686}
2687static inline HRESULT IMFPresentationDescriptor_GetBlobSize(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
2688    return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
2689}
2690static inline HRESULT IMFPresentationDescriptor_GetBlob(IMFPresentationDescriptor* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
2691    return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
2692}
2693static inline HRESULT IMFPresentationDescriptor_GetAllocatedBlob(IMFPresentationDescriptor* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
2694    return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
2695}
2696static inline HRESULT IMFPresentationDescriptor_GetUnknown(IMFPresentationDescriptor* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
2697    return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
2698}
2699static inline HRESULT IMFPresentationDescriptor_SetItem(IMFPresentationDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value) {
2700    return This->lpVtbl->SetItem(This,guidKey,Value);
2701}
2702static inline HRESULT IMFPresentationDescriptor_DeleteItem(IMFPresentationDescriptor* This,REFGUID guidKey) {
2703    return This->lpVtbl->DeleteItem(This,guidKey);
2704}
2705static inline HRESULT IMFPresentationDescriptor_DeleteAllItems(IMFPresentationDescriptor* This) {
2706    return This->lpVtbl->DeleteAllItems(This);
2707}
2708static inline HRESULT IMFPresentationDescriptor_SetUINT32(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 unValue) {
2709    return This->lpVtbl->SetUINT32(This,guidKey,unValue);
2710}
2711static inline HRESULT IMFPresentationDescriptor_SetUINT64(IMFPresentationDescriptor* This,REFGUID guidKey,UINT64 unValue) {
2712    return This->lpVtbl->SetUINT64(This,guidKey,unValue);
2713}
2714static inline HRESULT IMFPresentationDescriptor_SetDouble(IMFPresentationDescriptor* This,REFGUID guidKey,double fValue) {
2715    return This->lpVtbl->SetDouble(This,guidKey,fValue);
2716}
2717static inline HRESULT IMFPresentationDescriptor_SetGUID(IMFPresentationDescriptor* This,REFGUID guidKey,REFGUID guidValue) {
2718    return This->lpVtbl->SetGUID(This,guidKey,guidValue);
2719}
2720static inline HRESULT IMFPresentationDescriptor_SetString(IMFPresentationDescriptor* This,REFGUID guidKey,LPCWSTR wszValue) {
2721    return This->lpVtbl->SetString(This,guidKey,wszValue);
2722}
2723static inline HRESULT IMFPresentationDescriptor_SetBlob(IMFPresentationDescriptor* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
2724    return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
2725}
2726static inline HRESULT IMFPresentationDescriptor_SetUnknown(IMFPresentationDescriptor* This,REFGUID guidKey,IUnknown *pUnknown) {
2727    return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
2728}
2729static inline HRESULT IMFPresentationDescriptor_LockStore(IMFPresentationDescriptor* This) {
2730    return This->lpVtbl->LockStore(This);
2731}
2732static inline HRESULT IMFPresentationDescriptor_UnlockStore(IMFPresentationDescriptor* This) {
2733    return This->lpVtbl->UnlockStore(This);
2734}
2735static inline HRESULT IMFPresentationDescriptor_GetCount(IMFPresentationDescriptor* This,UINT32 *pcItems) {
2736    return This->lpVtbl->GetCount(This,pcItems);
2737}
2738static inline HRESULT IMFPresentationDescriptor_GetItemByIndex(IMFPresentationDescriptor* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
2739    return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
2740}
2741static inline HRESULT IMFPresentationDescriptor_CopyAllItems(IMFPresentationDescriptor* This,IMFAttributes *pDest) {
2742    return This->lpVtbl->CopyAllItems(This,pDest);
2743}
2744/*** IMFPresentationDescriptor methods ***/
2745static inline HRESULT IMFPresentationDescriptor_GetStreamDescriptorCount(IMFPresentationDescriptor* This,DWORD *pdwDescriptorCount) {
2746    return This->lpVtbl->GetStreamDescriptorCount(This,pdwDescriptorCount);
2747}
2748static inline HRESULT IMFPresentationDescriptor_GetStreamDescriptorByIndex(IMFPresentationDescriptor* This,DWORD dwIndex,WINBOOL *pfSelected,IMFStreamDescriptor **ppDescriptor) {
2749    return This->lpVtbl->GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor);
2750}
2751static inline HRESULT IMFPresentationDescriptor_SelectStream(IMFPresentationDescriptor* This,DWORD dwDescriptorIndex) {
2752    return This->lpVtbl->SelectStream(This,dwDescriptorIndex);
2753}
2754static inline HRESULT IMFPresentationDescriptor_DeselectStream(IMFPresentationDescriptor* This,DWORD dwDescriptorIndex) {
2755    return This->lpVtbl->DeselectStream(This,dwDescriptorIndex);
2756}
2757static inline HRESULT IMFPresentationDescriptor_Clone(IMFPresentationDescriptor* This,IMFPresentationDescriptor **ppPresentationDescriptor) {
2758    return This->lpVtbl->Clone(This,ppPresentationDescriptor);
2759}
2760#endif
2761#endif
2762
2763#endif
2764
2765
2766#endif  /* __IMFPresentationDescriptor_INTERFACE_DEFINED__ */
2767
2768/*****************************************************************************
2769 * IMFMediaSource interface
2770 */
2771#ifndef __IMFMediaSource_INTERFACE_DEFINED__
2772#define __IMFMediaSource_INTERFACE_DEFINED__
2773
2774DEFINE_GUID(IID_IMFMediaSource, 0x279a808d, 0xaec7, 0x40c8, 0x9c,0x6b, 0xa6,0xb4,0x92,0xc7,0x8a,0x66);
2775#if defined(__cplusplus) && !defined(CINTERFACE)
2776MIDL_INTERFACE("279a808d-aec7-40c8-9c6b-a6b492c78a66")
2777IMFMediaSource : public IMFMediaEventGenerator
2778{
2779    virtual HRESULT STDMETHODCALLTYPE GetCharacteristics(
2780        DWORD *pdwCharacteristics) = 0;
2781
2782    virtual HRESULT STDMETHODCALLTYPE CreatePresentationDescriptor(
2783        IMFPresentationDescriptor **ppPresentationDescriptor) = 0;
2784
2785    virtual HRESULT STDMETHODCALLTYPE Start(
2786        IMFPresentationDescriptor *pPresentationDescriptor,
2787        const GUID *pguidTimeFormat,
2788        const PROPVARIANT *pvarStartPosition) = 0;
2789
2790    virtual HRESULT STDMETHODCALLTYPE Stop(
2791        ) = 0;
2792
2793    virtual HRESULT STDMETHODCALLTYPE Pause(
2794        ) = 0;
2795
2796    virtual HRESULT STDMETHODCALLTYPE Shutdown(
2797        ) = 0;
2798
2799};
2800#ifdef __CRT_UUID_DECL
2801__CRT_UUID_DECL(IMFMediaSource, 0x279a808d, 0xaec7, 0x40c8, 0x9c,0x6b, 0xa6,0xb4,0x92,0xc7,0x8a,0x66)
2802#endif
2803#else
2804typedef struct IMFMediaSourceVtbl {
2805    BEGIN_INTERFACE
2806
2807    /*** IUnknown methods ***/
2808    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2809        IMFMediaSource *This,
2810        REFIID riid,
2811        void **ppvObject);
2812
2813    ULONG (STDMETHODCALLTYPE *AddRef)(
2814        IMFMediaSource *This);
2815
2816    ULONG (STDMETHODCALLTYPE *Release)(
2817        IMFMediaSource *This);
2818
2819    /*** IMFMediaEventGenerator methods ***/
2820    HRESULT (STDMETHODCALLTYPE *GetEvent)(
2821        IMFMediaSource *This,
2822        DWORD dwFlags,
2823        IMFMediaEvent **ppEvent);
2824
2825    HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
2826        IMFMediaSource *This,
2827        IMFAsyncCallback *pCallback,
2828        IUnknown *punkState);
2829
2830    HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
2831        IMFMediaSource *This,
2832        IMFAsyncResult *pResult,
2833        IMFMediaEvent **ppEvent);
2834
2835    HRESULT (STDMETHODCALLTYPE *QueueEvent)(
2836        IMFMediaSource *This,
2837        MediaEventType met,
2838        REFGUID guidExtendedType,
2839        HRESULT hrStatus,
2840        const PROPVARIANT *pvValue);
2841
2842    /*** IMFMediaSource methods ***/
2843    HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
2844        IMFMediaSource *This,
2845        DWORD *pdwCharacteristics);
2846
2847    HRESULT (STDMETHODCALLTYPE *CreatePresentationDescriptor)(
2848        IMFMediaSource *This,
2849        IMFPresentationDescriptor **ppPresentationDescriptor);
2850
2851    HRESULT (STDMETHODCALLTYPE *Start)(
2852        IMFMediaSource *This,
2853        IMFPresentationDescriptor *pPresentationDescriptor,
2854        const GUID *pguidTimeFormat,
2855        const PROPVARIANT *pvarStartPosition);
2856
2857    HRESULT (STDMETHODCALLTYPE *Stop)(
2858        IMFMediaSource *This);
2859
2860    HRESULT (STDMETHODCALLTYPE *Pause)(
2861        IMFMediaSource *This);
2862
2863    HRESULT (STDMETHODCALLTYPE *Shutdown)(
2864        IMFMediaSource *This);
2865
2866    END_INTERFACE
2867} IMFMediaSourceVtbl;
2868
2869interface IMFMediaSource {
2870    CONST_VTBL IMFMediaSourceVtbl* lpVtbl;
2871};
2872
2873#ifdef COBJMACROS
2874#ifndef WIDL_C_INLINE_WRAPPERS
2875/*** IUnknown methods ***/
2876#define IMFMediaSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2877#define IMFMediaSource_AddRef(This) (This)->lpVtbl->AddRef(This)
2878#define IMFMediaSource_Release(This) (This)->lpVtbl->Release(This)
2879/*** IMFMediaEventGenerator methods ***/
2880#define IMFMediaSource_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
2881#define IMFMediaSource_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
2882#define IMFMediaSource_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
2883#define IMFMediaSource_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
2884/*** IMFMediaSource methods ***/
2885#define IMFMediaSource_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
2886#define IMFMediaSource_CreatePresentationDescriptor(This,ppPresentationDescriptor) (This)->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor)
2887#define IMFMediaSource_Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition) (This)->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition)
2888#define IMFMediaSource_Stop(This) (This)->lpVtbl->Stop(This)
2889#define IMFMediaSource_Pause(This) (This)->lpVtbl->Pause(This)
2890#define IMFMediaSource_Shutdown(This) (This)->lpVtbl->Shutdown(This)
2891#else
2892/*** IUnknown methods ***/
2893static inline HRESULT IMFMediaSource_QueryInterface(IMFMediaSource* This,REFIID riid,void **ppvObject) {
2894    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2895}
2896static inline ULONG IMFMediaSource_AddRef(IMFMediaSource* This) {
2897    return This->lpVtbl->AddRef(This);
2898}
2899static inline ULONG IMFMediaSource_Release(IMFMediaSource* This) {
2900    return This->lpVtbl->Release(This);
2901}
2902/*** IMFMediaEventGenerator methods ***/
2903static inline HRESULT IMFMediaSource_GetEvent(IMFMediaSource* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
2904    return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
2905}
2906static inline HRESULT IMFMediaSource_BeginGetEvent(IMFMediaSource* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
2907    return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
2908}
2909static inline HRESULT IMFMediaSource_EndGetEvent(IMFMediaSource* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
2910    return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
2911}
2912static inline HRESULT IMFMediaSource_QueueEvent(IMFMediaSource* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
2913    return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
2914}
2915/*** IMFMediaSource methods ***/
2916static inline HRESULT IMFMediaSource_GetCharacteristics(IMFMediaSource* This,DWORD *pdwCharacteristics) {
2917    return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
2918}
2919static inline HRESULT IMFMediaSource_CreatePresentationDescriptor(IMFMediaSource* This,IMFPresentationDescriptor **ppPresentationDescriptor) {
2920    return This->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor);
2921}
2922static inline HRESULT IMFMediaSource_Start(IMFMediaSource* This,IMFPresentationDescriptor *pPresentationDescriptor,const GUID *pguidTimeFormat,const PROPVARIANT *pvarStartPosition) {
2923    return This->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition);
2924}
2925static inline HRESULT IMFMediaSource_Stop(IMFMediaSource* This) {
2926    return This->lpVtbl->Stop(This);
2927}
2928static inline HRESULT IMFMediaSource_Pause(IMFMediaSource* This) {
2929    return This->lpVtbl->Pause(This);
2930}
2931static inline HRESULT IMFMediaSource_Shutdown(IMFMediaSource* This) {
2932    return This->lpVtbl->Shutdown(This);
2933}
2934#endif
2935#endif
2936
2937#endif
2938
2939HRESULT STDMETHODCALLTYPE IMFMediaSource_RemoteCreatePresentationDescriptor_Proxy(
2940    IMFMediaSource* This,
2941    DWORD *pcbPD,
2942    BYTE **pbPD,
2943    IMFPresentationDescriptor **ppRemotePD);
2944void __RPC_STUB IMFMediaSource_RemoteCreatePresentationDescriptor_Stub(
2945    IRpcStubBuffer* This,
2946    IRpcChannelBuffer* pRpcChannelBuffer,
2947    PRPC_MESSAGE pRpcMessage,
2948    DWORD* pdwStubPhase);
2949HRESULT CALLBACK IMFMediaSource_CreatePresentationDescriptor_Proxy(
2950    IMFMediaSource* This,
2951    IMFPresentationDescriptor **ppPresentationDescriptor);
2952HRESULT __RPC_STUB IMFMediaSource_CreatePresentationDescriptor_Stub(
2953    IMFMediaSource* This,
2954    DWORD *pcbPD,
2955    BYTE **pbPD,
2956    IMFPresentationDescriptor **ppRemotePD);
2957
2958#endif  /* __IMFMediaSource_INTERFACE_DEFINED__ */
2959
2960#if (WINVER >= _WIN32_WINNT_WIN8)
2961/*****************************************************************************
2962 * IMFMediaSourceEx interface
2963 */
2964#ifndef __IMFMediaSourceEx_INTERFACE_DEFINED__
2965#define __IMFMediaSourceEx_INTERFACE_DEFINED__
2966
2967DEFINE_GUID(IID_IMFMediaSourceEx, 0x3c9b2eb9, 0x86d5, 0x4514, 0xa3,0x94, 0xf5,0x66,0x64,0xf9,0xf0,0xd8);
2968#if defined(__cplusplus) && !defined(CINTERFACE)
2969MIDL_INTERFACE("3c9b2eb9-86d5-4514-a394-f56664f9f0d8")
2970IMFMediaSourceEx : public IMFMediaSource
2971{
2972    virtual HRESULT STDMETHODCALLTYPE GetSourceAttributes(
2973        IMFAttributes **ppAttributes) = 0;
2974
2975    virtual HRESULT STDMETHODCALLTYPE GetStreamAttributes(
2976        DWORD dwStreamIdentifier,
2977        IMFAttributes **ppAttributes) = 0;
2978
2979    virtual HRESULT STDMETHODCALLTYPE SetD3DManager(
2980        IUnknown *pManager) = 0;
2981
2982};
2983#ifdef __CRT_UUID_DECL
2984__CRT_UUID_DECL(IMFMediaSourceEx, 0x3c9b2eb9, 0x86d5, 0x4514, 0xa3,0x94, 0xf5,0x66,0x64,0xf9,0xf0,0xd8)
2985#endif
2986#else
2987typedef struct IMFMediaSourceExVtbl {
2988    BEGIN_INTERFACE
2989
2990    /*** IUnknown methods ***/
2991    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2992        IMFMediaSourceEx *This,
2993        REFIID riid,
2994        void **ppvObject);
2995
2996    ULONG (STDMETHODCALLTYPE *AddRef)(
2997        IMFMediaSourceEx *This);
2998
2999    ULONG (STDMETHODCALLTYPE *Release)(
3000        IMFMediaSourceEx *This);
3001
3002    /*** IMFMediaEventGenerator methods ***/
3003    HRESULT (STDMETHODCALLTYPE *GetEvent)(
3004        IMFMediaSourceEx *This,
3005        DWORD dwFlags,
3006        IMFMediaEvent **ppEvent);
3007
3008    HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
3009        IMFMediaSourceEx *This,
3010        IMFAsyncCallback *pCallback,
3011        IUnknown *punkState);
3012
3013    HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
3014        IMFMediaSourceEx *This,
3015        IMFAsyncResult *pResult,
3016        IMFMediaEvent **ppEvent);
3017
3018    HRESULT (STDMETHODCALLTYPE *QueueEvent)(
3019        IMFMediaSourceEx *This,
3020        MediaEventType met,
3021        REFGUID guidExtendedType,
3022        HRESULT hrStatus,
3023        const PROPVARIANT *pvValue);
3024
3025    /*** IMFMediaSource methods ***/
3026    HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
3027        IMFMediaSourceEx *This,
3028        DWORD *pdwCharacteristics);
3029
3030    HRESULT (STDMETHODCALLTYPE *CreatePresentationDescriptor)(
3031        IMFMediaSourceEx *This,
3032        IMFPresentationDescriptor **ppPresentationDescriptor);
3033
3034    HRESULT (STDMETHODCALLTYPE *Start)(
3035        IMFMediaSourceEx *This,
3036        IMFPresentationDescriptor *pPresentationDescriptor,
3037        const GUID *pguidTimeFormat,
3038        const PROPVARIANT *pvarStartPosition);
3039
3040    HRESULT (STDMETHODCALLTYPE *Stop)(
3041        IMFMediaSourceEx *This);
3042
3043    HRESULT (STDMETHODCALLTYPE *Pause)(
3044        IMFMediaSourceEx *This);
3045
3046    HRESULT (STDMETHODCALLTYPE *Shutdown)(
3047        IMFMediaSourceEx *This);
3048
3049    /*** IMFMediaSourceEx methods ***/
3050    HRESULT (STDMETHODCALLTYPE *GetSourceAttributes)(
3051        IMFMediaSourceEx *This,
3052        IMFAttributes **ppAttributes);
3053
3054    HRESULT (STDMETHODCALLTYPE *GetStreamAttributes)(
3055        IMFMediaSourceEx *This,
3056        DWORD dwStreamIdentifier,
3057        IMFAttributes **ppAttributes);
3058
3059    HRESULT (STDMETHODCALLTYPE *SetD3DManager)(
3060        IMFMediaSourceEx *This,
3061        IUnknown *pManager);
3062
3063    END_INTERFACE
3064} IMFMediaSourceExVtbl;
3065
3066interface IMFMediaSourceEx {
3067    CONST_VTBL IMFMediaSourceExVtbl* lpVtbl;
3068};
3069
3070#ifdef COBJMACROS
3071#ifndef WIDL_C_INLINE_WRAPPERS
3072/*** IUnknown methods ***/
3073#define IMFMediaSourceEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3074#define IMFMediaSourceEx_AddRef(This) (This)->lpVtbl->AddRef(This)
3075#define IMFMediaSourceEx_Release(This) (This)->lpVtbl->Release(This)
3076/*** IMFMediaEventGenerator methods ***/
3077#define IMFMediaSourceEx_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
3078#define IMFMediaSourceEx_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
3079#define IMFMediaSourceEx_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
3080#define IMFMediaSourceEx_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
3081/*** IMFMediaSource methods ***/
3082#define IMFMediaSourceEx_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
3083#define IMFMediaSourceEx_CreatePresentationDescriptor(This,ppPresentationDescriptor) (This)->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor)
3084#define IMFMediaSourceEx_Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition) (This)->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition)
3085#define IMFMediaSourceEx_Stop(This) (This)->lpVtbl->Stop(This)
3086#define IMFMediaSourceEx_Pause(This) (This)->lpVtbl->Pause(This)
3087#define IMFMediaSourceEx_Shutdown(This) (This)->lpVtbl->Shutdown(This)
3088/*** IMFMediaSourceEx methods ***/
3089#define IMFMediaSourceEx_GetSourceAttributes(This,ppAttributes) (This)->lpVtbl->GetSourceAttributes(This,ppAttributes)
3090#define IMFMediaSourceEx_GetStreamAttributes(This,dwStreamIdentifier,ppAttributes) (This)->lpVtbl->GetStreamAttributes(This,dwStreamIdentifier,ppAttributes)
3091#define IMFMediaSourceEx_SetD3DManager(This,pManager) (This)->lpVtbl->SetD3DManager(This,pManager)
3092#else
3093/*** IUnknown methods ***/
3094static inline HRESULT IMFMediaSourceEx_QueryInterface(IMFMediaSourceEx* This,REFIID riid,void **ppvObject) {
3095    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3096}
3097static inline ULONG IMFMediaSourceEx_AddRef(IMFMediaSourceEx* This) {
3098    return This->lpVtbl->AddRef(This);
3099}
3100static inline ULONG IMFMediaSourceEx_Release(IMFMediaSourceEx* This) {
3101    return This->lpVtbl->Release(This);
3102}
3103/*** IMFMediaEventGenerator methods ***/
3104static inline HRESULT IMFMediaSourceEx_GetEvent(IMFMediaSourceEx* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
3105    return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
3106}
3107static inline HRESULT IMFMediaSourceEx_BeginGetEvent(IMFMediaSourceEx* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
3108    return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
3109}
3110static inline HRESULT IMFMediaSourceEx_EndGetEvent(IMFMediaSourceEx* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
3111    return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
3112}
3113static inline HRESULT IMFMediaSourceEx_QueueEvent(IMFMediaSourceEx* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
3114    return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
3115}
3116/*** IMFMediaSource methods ***/
3117static inline HRESULT IMFMediaSourceEx_GetCharacteristics(IMFMediaSourceEx* This,DWORD *pdwCharacteristics) {
3118    return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
3119}
3120static inline HRESULT IMFMediaSourceEx_CreatePresentationDescriptor(IMFMediaSourceEx* This,IMFPresentationDescriptor **ppPresentationDescriptor) {
3121    return This->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor);
3122}
3123static inline HRESULT IMFMediaSourceEx_Start(IMFMediaSourceEx* This,IMFPresentationDescriptor *pPresentationDescriptor,const GUID *pguidTimeFormat,const PROPVARIANT *pvarStartPosition) {
3124    return This->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition);
3125}
3126static inline HRESULT IMFMediaSourceEx_Stop(IMFMediaSourceEx* This) {
3127    return This->lpVtbl->Stop(This);
3128}
3129static inline HRESULT IMFMediaSourceEx_Pause(IMFMediaSourceEx* This) {
3130    return This->lpVtbl->Pause(This);
3131}
3132static inline HRESULT IMFMediaSourceEx_Shutdown(IMFMediaSourceEx* This) {
3133    return This->lpVtbl->Shutdown(This);
3134}
3135/*** IMFMediaSourceEx methods ***/
3136static inline HRESULT IMFMediaSourceEx_GetSourceAttributes(IMFMediaSourceEx* This,IMFAttributes **ppAttributes) {
3137    return This->lpVtbl->GetSourceAttributes(This,ppAttributes);
3138}
3139static inline HRESULT IMFMediaSourceEx_GetStreamAttributes(IMFMediaSourceEx* This,DWORD dwStreamIdentifier,IMFAttributes **ppAttributes) {
3140    return This->lpVtbl->GetStreamAttributes(This,dwStreamIdentifier,ppAttributes);
3141}
3142static inline HRESULT IMFMediaSourceEx_SetD3DManager(IMFMediaSourceEx* This,IUnknown *pManager) {
3143    return This->lpVtbl->SetD3DManager(This,pManager);
3144}
3145#endif
3146#endif
3147
3148#endif
3149
3150
3151#endif  /* __IMFMediaSourceEx_INTERFACE_DEFINED__ */
3152
3153EXTERN_GUID(MF_SOURCE_STREAM_SUPPORTS_HW_CONNECTION, 0xa38253aa, 0x6314, 0x42fd, 0xa3, 0xce, 0xbb, 0x27, 0xb6, 0x85, 0x99, 0x46);
3154#endif /* (WINVER >= _WIN32_WINNT_WIN8) */
3155typedef struct _MF_LEAKY_BUCKET_PAIR {
3156    DWORD dwBitrate;
3157    DWORD msBufferWindow;
3158} MF_LEAKY_BUCKET_PAIR;
3159typedef struct _MFBYTESTREAM_BUFFERING_PARAMS {
3160    QWORD cbTotalFileSize;
3161    QWORD cbPlayableDataSize;
3162    MF_LEAKY_BUCKET_PAIR *prgBuckets;
3163    DWORD cBuckets;
3164    QWORD qwNetBufferingTime;
3165    QWORD qwExtraBufferingTimeDuringSeek;
3166    QWORD qwPlayDuration;
3167    float dRate;
3168} MFBYTESTREAM_BUFFERING_PARAMS;
3169/*****************************************************************************
3170 * IMFByteStreamBuffering interface
3171 */
3172#ifndef __IMFByteStreamBuffering_INTERFACE_DEFINED__
3173#define __IMFByteStreamBuffering_INTERFACE_DEFINED__
3174
3175DEFINE_GUID(IID_IMFByteStreamBuffering, 0x6d66d782, 0x1d4f, 0x4db7, 0x8c,0x63, 0xcb,0x8c,0x77,0xf1,0xef,0x5e);
3176#if defined(__cplusplus) && !defined(CINTERFACE)
3177MIDL_INTERFACE("6d66d782-1d4f-4db7-8c63-cb8c77f1ef5e")
3178IMFByteStreamBuffering : public IUnknown
3179{
3180    virtual HRESULT STDMETHODCALLTYPE SetBufferingParams(
3181        MFBYTESTREAM_BUFFERING_PARAMS *pParams) = 0;
3182
3183    virtual HRESULT STDMETHODCALLTYPE EnableBuffering(
3184        WINBOOL fEnable) = 0;
3185
3186    virtual HRESULT STDMETHODCALLTYPE StopBuffering(
3187        ) = 0;
3188
3189};
3190#ifdef __CRT_UUID_DECL
3191__CRT_UUID_DECL(IMFByteStreamBuffering, 0x6d66d782, 0x1d4f, 0x4db7, 0x8c,0x63, 0xcb,0x8c,0x77,0xf1,0xef,0x5e)
3192#endif
3193#else
3194typedef struct IMFByteStreamBufferingVtbl {
3195    BEGIN_INTERFACE
3196
3197    /*** IUnknown methods ***/
3198    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3199        IMFByteStreamBuffering *This,
3200        REFIID riid,
3201        void **ppvObject);
3202
3203    ULONG (STDMETHODCALLTYPE *AddRef)(
3204        IMFByteStreamBuffering *This);
3205
3206    ULONG (STDMETHODCALLTYPE *Release)(
3207        IMFByteStreamBuffering *This);
3208
3209    /*** IMFByteStreamBuffering methods ***/
3210    HRESULT (STDMETHODCALLTYPE *SetBufferingParams)(
3211        IMFByteStreamBuffering *This,
3212        MFBYTESTREAM_BUFFERING_PARAMS *pParams);
3213
3214    HRESULT (STDMETHODCALLTYPE *EnableBuffering)(
3215        IMFByteStreamBuffering *This,
3216        WINBOOL fEnable);
3217
3218    HRESULT (STDMETHODCALLTYPE *StopBuffering)(
3219        IMFByteStreamBuffering *This);
3220
3221    END_INTERFACE
3222} IMFByteStreamBufferingVtbl;
3223
3224interface IMFByteStreamBuffering {
3225    CONST_VTBL IMFByteStreamBufferingVtbl* lpVtbl;
3226};
3227
3228#ifdef COBJMACROS
3229#ifndef WIDL_C_INLINE_WRAPPERS
3230/*** IUnknown methods ***/
3231#define IMFByteStreamBuffering_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3232#define IMFByteStreamBuffering_AddRef(This) (This)->lpVtbl->AddRef(This)
3233#define IMFByteStreamBuffering_Release(This) (This)->lpVtbl->Release(This)
3234/*** IMFByteStreamBuffering methods ***/
3235#define IMFByteStreamBuffering_SetBufferingParams(This,pParams) (This)->lpVtbl->SetBufferingParams(This,pParams)
3236#define IMFByteStreamBuffering_EnableBuffering(This,fEnable) (This)->lpVtbl->EnableBuffering(This,fEnable)
3237#define IMFByteStreamBuffering_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
3238#else
3239/*** IUnknown methods ***/
3240static inline HRESULT IMFByteStreamBuffering_QueryInterface(IMFByteStreamBuffering* This,REFIID riid,void **ppvObject) {
3241    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3242}
3243static inline ULONG IMFByteStreamBuffering_AddRef(IMFByteStreamBuffering* This) {
3244    return This->lpVtbl->AddRef(This);
3245}
3246static inline ULONG IMFByteStreamBuffering_Release(IMFByteStreamBuffering* This) {
3247    return This->lpVtbl->Release(This);
3248}
3249/*** IMFByteStreamBuffering methods ***/
3250static inline HRESULT IMFByteStreamBuffering_SetBufferingParams(IMFByteStreamBuffering* This,MFBYTESTREAM_BUFFERING_PARAMS *pParams) {
3251    return This->lpVtbl->SetBufferingParams(This,pParams);
3252}
3253static inline HRESULT IMFByteStreamBuffering_EnableBuffering(IMFByteStreamBuffering* This,WINBOOL fEnable) {
3254    return This->lpVtbl->EnableBuffering(This,fEnable);
3255}
3256static inline HRESULT IMFByteStreamBuffering_StopBuffering(IMFByteStreamBuffering* This) {
3257    return This->lpVtbl->StopBuffering(This);
3258}
3259#endif
3260#endif
3261
3262#endif
3263
3264
3265#endif  /* __IMFByteStreamBuffering_INTERFACE_DEFINED__ */
3266
3267/*****************************************************************************
3268 * IMFClockStateSink interface
3269 */
3270#ifndef __IMFClockStateSink_INTERFACE_DEFINED__
3271#define __IMFClockStateSink_INTERFACE_DEFINED__
3272
3273DEFINE_GUID(IID_IMFClockStateSink, 0xf6696e82, 0x74f7, 0x4f3d, 0xa1,0x78, 0x8a,0x5e,0x09,0xc3,0x65,0x9f);
3274#if defined(__cplusplus) && !defined(CINTERFACE)
3275MIDL_INTERFACE("f6696e82-74f7-4f3d-a178-8a5e09c3659f")
3276IMFClockStateSink : public IUnknown
3277{
3278    virtual HRESULT STDMETHODCALLTYPE OnClockStart(
3279        MFTIME hnsSystemTime,
3280        LONGLONG llClockStartOffset) = 0;
3281
3282    virtual HRESULT STDMETHODCALLTYPE OnClockStop(
3283        MFTIME hnsSystemTime) = 0;
3284
3285    virtual HRESULT STDMETHODCALLTYPE OnClockPause(
3286        MFTIME hnsSystemTime) = 0;
3287
3288    virtual HRESULT STDMETHODCALLTYPE OnClockRestart(
3289        MFTIME hnsSystemTime) = 0;
3290
3291    virtual HRESULT STDMETHODCALLTYPE OnClockSetRate(
3292        MFTIME hnsSystemTime,
3293        float flRate) = 0;
3294
3295};
3296#ifdef __CRT_UUID_DECL
3297__CRT_UUID_DECL(IMFClockStateSink, 0xf6696e82, 0x74f7, 0x4f3d, 0xa1,0x78, 0x8a,0x5e,0x09,0xc3,0x65,0x9f)
3298#endif
3299#else
3300typedef struct IMFClockStateSinkVtbl {
3301    BEGIN_INTERFACE
3302
3303    /*** IUnknown methods ***/
3304    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3305        IMFClockStateSink *This,
3306        REFIID riid,
3307        void **ppvObject);
3308
3309    ULONG (STDMETHODCALLTYPE *AddRef)(
3310        IMFClockStateSink *This);
3311
3312    ULONG (STDMETHODCALLTYPE *Release)(
3313        IMFClockStateSink *This);
3314
3315    /*** IMFClockStateSink methods ***/
3316    HRESULT (STDMETHODCALLTYPE *OnClockStart)(
3317        IMFClockStateSink *This,
3318        MFTIME hnsSystemTime,
3319        LONGLONG llClockStartOffset);
3320
3321    HRESULT (STDMETHODCALLTYPE *OnClockStop)(
3322        IMFClockStateSink *This,
3323        MFTIME hnsSystemTime);
3324
3325    HRESULT (STDMETHODCALLTYPE *OnClockPause)(
3326        IMFClockStateSink *This,
3327        MFTIME hnsSystemTime);
3328
3329    HRESULT (STDMETHODCALLTYPE *OnClockRestart)(
3330        IMFClockStateSink *This,
3331        MFTIME hnsSystemTime);
3332
3333    HRESULT (STDMETHODCALLTYPE *OnClockSetRate)(
3334        IMFClockStateSink *This,
3335        MFTIME hnsSystemTime,
3336        float flRate);
3337
3338    END_INTERFACE
3339} IMFClockStateSinkVtbl;
3340
3341interface IMFClockStateSink {
3342    CONST_VTBL IMFClockStateSinkVtbl* lpVtbl;
3343};
3344
3345#ifdef COBJMACROS
3346#ifndef WIDL_C_INLINE_WRAPPERS
3347/*** IUnknown methods ***/
3348#define IMFClockStateSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3349#define IMFClockStateSink_AddRef(This) (This)->lpVtbl->AddRef(This)
3350#define IMFClockStateSink_Release(This) (This)->lpVtbl->Release(This)
3351/*** IMFClockStateSink methods ***/
3352#define IMFClockStateSink_OnClockStart(This,hnsSystemTime,llClockStartOffset) (This)->lpVtbl->OnClockStart(This,hnsSystemTime,llClockStartOffset)
3353#define IMFClockStateSink_OnClockStop(This,hnsSystemTime) (This)->lpVtbl->OnClockStop(This,hnsSystemTime)
3354#define IMFClockStateSink_OnClockPause(This,hnsSystemTime) (This)->lpVtbl->OnClockPause(This,hnsSystemTime)
3355#define IMFClockStateSink_OnClockRestart(This,hnsSystemTime) (This)->lpVtbl->OnClockRestart(This,hnsSystemTime)
3356#define IMFClockStateSink_OnClockSetRate(This,hnsSystemTime,flRate) (This)->lpVtbl->OnClockSetRate(This,hnsSystemTime,flRate)
3357#else
3358/*** IUnknown methods ***/
3359static inline HRESULT IMFClockStateSink_QueryInterface(IMFClockStateSink* This,REFIID riid,void **ppvObject) {
3360    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3361}
3362static inline ULONG IMFClockStateSink_AddRef(IMFClockStateSink* This) {
3363    return This->lpVtbl->AddRef(This);
3364}
3365static inline ULONG IMFClockStateSink_Release(IMFClockStateSink* This) {
3366    return This->lpVtbl->Release(This);
3367}
3368/*** IMFClockStateSink methods ***/
3369static inline HRESULT IMFClockStateSink_OnClockStart(IMFClockStateSink* This,MFTIME hnsSystemTime,LONGLONG llClockStartOffset) {
3370    return This->lpVtbl->OnClockStart(This,hnsSystemTime,llClockStartOffset);
3371}
3372static inline HRESULT IMFClockStateSink_OnClockStop(IMFClockStateSink* This,MFTIME hnsSystemTime) {
3373    return This->lpVtbl->OnClockStop(This,hnsSystemTime);
3374}
3375static inline HRESULT IMFClockStateSink_OnClockPause(IMFClockStateSink* This,MFTIME hnsSystemTime) {
3376    return This->lpVtbl->OnClockPause(This,hnsSystemTime);
3377}
3378static inline HRESULT IMFClockStateSink_OnClockRestart(IMFClockStateSink* This,MFTIME hnsSystemTime) {
3379    return This->lpVtbl->OnClockRestart(This,hnsSystemTime);
3380}
3381static inline HRESULT IMFClockStateSink_OnClockSetRate(IMFClockStateSink* This,MFTIME hnsSystemTime,float flRate) {
3382    return This->lpVtbl->OnClockSetRate(This,hnsSystemTime,flRate);
3383}
3384#endif
3385#endif
3386
3387#endif
3388
3389
3390#endif  /* __IMFClockStateSink_INTERFACE_DEFINED__ */
3391
3392HRESULT WINAPI MFRequireProtectedEnvironment(IMFPresentationDescriptor *pPresentationDescriptor);
3393HRESULT WINAPI MFSerializePresentationDescriptor(IMFPresentationDescriptor *pPD,DWORD *pcbData,BYTE **ppbData);
3394typedef DWORD MFSequencerElementId;
3395typedef enum _MFCLOCK_CHARACTERISTICS_FLAGS {
3396    MFCLOCK_CHARACTERISTICS_FLAG_FREQUENCY_10MHZ = 0x2,
3397    MFCLOCK_CHARACTERISTICS_FLAG_ALWAYS_RUNNING = 0x4,
3398    MFCLOCK_CHARACTERISTICS_FLAG_IS_SYSTEM_CLOCK = 0x8
3399} MFCLOCK_CHARACTERISTICS_FLAGS;
3400#if (WINVER >= 0x0601)
3401typedef enum _MF_QUALITY_ADVISE_FLAGS {
3402    MF_QUALITY_CANNOT_KEEP_UP = 0x1
3403} MF_QUALITY_ADVISE_FLAGS;
3404#endif /*(WINVER >= 0x0601)*/
3405typedef enum _MF_QUALITY_DROP_MODE {
3406    MF_DROP_MODE_NONE = 0x0,
3407    MF_DROP_MODE_1 = 0x1,
3408    MF_DROP_MODE_2 = 0x2,
3409    MF_DROP_MODE_3 = 0x3,
3410    MF_DROP_MODE_4 = 0x4,
3411    MF_DROP_MODE_5 = 0x5,
3412    MF_NUM_DROP_MODES = 0x6
3413} MF_QUALITY_DROP_MODE;
3414typedef enum _MF_QUALITY_LEVEL {
3415    MF_QUALITY_NORMAL = 0x0,
3416    MF_QUALITY_NORMAL_MINUS_1 = 0x1,
3417    MF_QUALITY_NORMAL_MINUS_2 = 0x2,
3418    MF_QUALITY_NORMAL_MINUS_3 = 0x3,
3419    MF_QUALITY_NORMAL_MINUS_4 = 0x4,
3420    MF_QUALITY_NORMAL_MINUS_5 = 0x5,
3421    MF_NUM_QUALITY_LEVELS = 0x6
3422} MF_QUALITY_LEVEL;
3423typedef enum _MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS {
3424    MF_TOPOLOGY_RESOLUTION_SUCCEEDED = 0x0,
3425    MF_OPTIONAL_NODE_REJECTED_MEDIA_TYPE = 0x1,
3426    MF_OPTIONAL_NODE_REJECTED_PROTECTED_PROCESS = 0x2
3427} MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS;
3428typedef enum _MF_TOPONODE_DRAIN_MODE {
3429    MF_TOPONODE_DRAIN_DEFAULT = 0,
3430    MF_TOPONODE_DRAIN_ALWAYS = 1,
3431    MF_TOPONODE_DRAIN_NEVER = 2
3432} MF_TOPONODE_DRAIN_MODE;
3433typedef enum _MF_TOPONODE_FLUSH_MODE {
3434    MF_TOPONODE_FLUSH_ALWAYS = 0,
3435    MF_TOPONODE_FLUSH_SEEK = 1,
3436    MF_TOPONODE_FLUSH_NEVER = 2
3437} MF_TOPONODE_FLUSH_MODE;
3438#if (WINVER >= 0x0601)
3439typedef enum _MF_TRANSCODE_TOPOLOGY_MODE_FLAGS {
3440    MF_TRANSCODE_TOPOLOGYMODE_SOFTWARE_ONLY = 0,
3441    MF_TRANSCODE_TOPOLOGYMODE_HARDWARE_ALLOWED = 1
3442} MF_TRANSCODE_TOPOLOGYMODE_FLAGS;
3443#endif
3444EXTERN_GUID(MF_TRANSCODE_CONTAINERTYPE, 0x150ff23f, 0x4abc, 0x478b, 0xac, 0x4f, 0xe1, 0x91, 0x6f, 0xba, 0x1c, 0xca);
3445EXTERN_GUID(MFTranscodeContainerType_ASF, 0x430f6f6e, 0xb6bf, 0x4fc1, 0xa0, 0xbd, 0x9e, 0xe4, 0x6e, 0xee, 0x2a, 0xfb);
3446EXTERN_GUID(MFTranscodeContainerType_MPEG4, 0xdc6cd05d, 0xb9d0, 0x40ef, 0xbd, 0x35, 0xfa, 0x62, 0x2c, 0x1a, 0xb2, 0x8a);
3447EXTERN_GUID(MFTranscodeContainerType_MP3, 0xe438b912, 0x83f1, 0x4de6, 0x9e, 0x3a, 0x9f, 0xfb, 0xc6, 0xdd, 0x24, 0xd1);
3448EXTERN_GUID(MFTranscodeContainerType_FLAC, 0x31344aa3, 0x05a9, 0x42b5, 0x90, 0x1b, 0x8e, 0x9d, 0x42, 0x57, 0xf7, 0x5e);
3449EXTERN_GUID(MFTranscodeContainerType_3GP, 0x34c50167, 0x4472, 0x4f34, 0x9e, 0xa0, 0xc4, 0x9f, 0xba, 0xcf, 0x03, 0x7d);
3450EXTERN_GUID(MFTranscodeContainerType_AC3, 0x6d8d91c3, 0x8c91, 0x4ed1, 0x87, 0x42, 0x8c, 0x34, 0x7d, 0x5b, 0x44, 0xd0);
3451EXTERN_GUID(MFTranscodeContainerType_ADTS, 0x132fd27d, 0x0f02, 0x43de, 0xa3, 0x01, 0x38, 0xfb, 0xbb, 0xb3, 0x83, 0x4e);
3452EXTERN_GUID(MFTranscodeContainerType_MPEG2, 0xbfc2dbf9, 0x7bb4, 0x4f8f, 0xaf, 0xde, 0xe1, 0x12, 0xc4, 0x4b, 0xa8, 0x82);
3453EXTERN_GUID(MFTranscodeContainerType_WAVE, 0x64c3453c, 0x0f26, 0x4741, 0xbe, 0x63, 0x87, 0xbd, 0xf8, 0xbb, 0x93, 0x5b);
3454EXTERN_GUID(MFTranscodeContainerType_AVI, 0x7edfe8af, 0x402f, 0x4d76, 0xa3, 0x3c, 0x61, 0x9f, 0xd1, 0x57, 0xd0, 0xf1);
3455#if (WINVER >= _WIN32_WINNT_WIN8)
3456EXTERN_GUID(MFTranscodeContainerType_FMPEG4, 0x9ba876f1, 0x419f, 0x4b77, 0xa1, 0xe0, 0x35, 0x95, 0x9d, 0x9d, 0x40, 0x4);
3457#endif /* (WINVER >= _WIN32_WINNT_WIN8) */
3458EXTERN_GUID(MFTranscodeContainerType_AMR, 0x25d5ad3, 0x621a, 0x475b, 0x96, 0x4d, 0x66, 0xb1, 0xc8, 0x24, 0xf0, 0x79);
3459typedef enum __WIDL_mfidl_generated_name_00000027 {
3460    MF_LICENSE_URL_UNTRUSTED = 0,
3461    MF_LICENSE_URL_TRUSTED = 1,
3462    MF_LICENSE_URL_TAMPERED = 2
3463} MF_URL_TRUST_STATUS;
3464typedef enum _MFCLOCK_RELATIONAL_FLAGS {
3465    MFCLOCK_RELATIONAL_FLAG_JITTER_NEVER_AHEAD = 0x1
3466} MFCLOCK_RELATIONAL_FLAGS;
3467typedef enum _MFMEDIASOURCE_CHARACTERISTICS {
3468    MFMEDIASOURCE_IS_LIVE = 0x1,
3469    MFMEDIASOURCE_CAN_SEEK = 0x2,
3470    MFMEDIASOURCE_CAN_PAUSE = 0x4,
3471    MFMEDIASOURCE_HAS_SLOW_SEEK = 0x8,
3472    MFMEDIASOURCE_HAS_MULTIPLE_PRESENTATIONS = 0x10,
3473    MFMEDIASOURCE_CAN_SKIPFORWARD = 0x20,
3474    MFMEDIASOURCE_CAN_SKIPBACKWARD = 0x40
3475} MFMEDIASOURCE_CHARACTERISTICS;
3476typedef enum _MFNET_PROXYSETTINGS {
3477    MFNET_PROXYSETTING_NONE = 0,
3478    MFNET_PROXYSETTING_MANUAL = 1,
3479    MFNET_PROXYSETTING_AUTO = 2,
3480    MFNET_PROXYSETTING_BROWSER = 3
3481} MFNET_PROXYSETTINGS;
3482typedef enum _MFNetAuthenticationFlags {
3483    MFNET_AUTHENTICATION_PROXY = 0x1,
3484    MFNET_AUTHENTICATION_CLEAR_TEXT = 0x2,
3485    MFNET_AUTHENTICATION_LOGGED_ON_USER = 0x4
3486} MFNetAuthenticationFlags;
3487typedef enum _MFNetCredentialOptions {
3488    MFNET_CREDENTIAL_SAVE = 0x1,
3489    MFNET_CREDENTIAL_DONT_CACHE = 0x2,
3490    MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT = 0x4
3491} MFNetCredentialOptions;
3492typedef enum _MFNetCredentialRequirements {
3493    REQUIRE_PROMPT = 0x1,
3494    REQUIRE_SAVE_SELECTED = 0x2
3495} MFNetCredentialRequirements;
3496typedef enum _MFNETSOURCE_CACHE_STATE {
3497    MFNETSOURCE_CACHE_UNAVAILABLE = 0,
3498    MFNETSOURCE_CACHE_ACTIVE_WRITING = 1,
3499    MFNETSOURCE_CACHE_ACTIVE_COMPLETE = 2
3500} MFNETSOURCE_CACHE_STATE;
3501typedef enum _MFNETSOURCE_PROTOCOL_TYPE {
3502    MFNETSOURCE_UNDEFINED = 0x0,
3503    MFNETSOURCE_HTTP = 0x1,
3504    MFNETSOURCE_RTSP = 0x2,
3505    MFNETSOURCE_FILE = 0x3,
3506    MFNETSOURCE_MULTICAST = 0x4
3507} MFNETSOURCE_PROTOCOL_TYPE;
3508typedef enum _MFNETSOURCE_STATISTICS_IDS {
3509    MFNETSOURCE_RECVPACKETS_ID = 0,
3510    MFNETSOURCE_LOSTPACKETS_ID = 1,
3511    MFNETSOURCE_RESENDSREQUESTED_ID = 2,
3512    MFNETSOURCE_RESENDSRECEIVED_ID = 3,
3513    MFNETSOURCE_RECOVEREDBYECCPACKETS_ID = 4,
3514    MFNETSOURCE_RECOVEREDBYRTXPACKETS_ID = 5,
3515    MFNETSOURCE_OUTPACKETS_ID = 6,
3516    MFNETSOURCE_RECVRATE_ID = 7,
3517    MFNETSOURCE_AVGBANDWIDTHBPS_ID = 8,
3518    MFNETSOURCE_BYTESRECEIVED_ID = 9,
3519    MFNETSOURCE_PROTOCOL_ID = 10,
3520    MFNETSOURCE_TRANSPORT_ID = 11,
3521    MFNETSOURCE_CACHE_STATE_ID = 12,
3522    MFNETSOURCE_LINKBANDWIDTH_ID = 13,
3523    MFNETSOURCE_CONTENTBITRATE_ID = 14,
3524    MFNETSOURCE_SPEEDFACTOR_ID = 15,
3525    MFNETSOURCE_BUFFERSIZE_ID = 16,
3526    MFNETSOURCE_BUFFERPROGRESS_ID = 17,
3527    MFNETSOURCE_LASTBWSWITCHTS_ID = 18,
3528    MFNETSOURCE_SEEKRANGESTART_ID = 19,
3529    MFNETSOURCE_SEEKRANGEEND_ID = 20,
3530    MFNETSOURCE_BUFFERINGCOUNT_ID = 21,
3531    MFNETSOURCE_INCORRECTLYSIGNEDPACKETS_ID = 22,
3532    MFNETSOURCE_SIGNEDSESSION_ID = 23,
3533    MFNETSOURCE_MAXBITRATE_ID = 24,
3534    MFNETSOURCE_RECEPTION_QUALITY_ID = 25,
3535    MFNETSOURCE_RECOVEREDPACKETS_ID = 26,
3536    MFNETSOURCE_VBR_ID = 27,
3537    MFNETSOURCE_DOWNLOADPROGRESS_ID = 28
3538} MFNETSOURCE_STATISTICS_IDS;
3539typedef enum _MFNETSOURCE_TRANSPORT_TYPE {
3540    MFNETSOURCE_UDP = 0,
3541    MFNETSOURCE_TCP = 1
3542} MFNETSOURCE_TRANSPORT_TYPE;
3543typedef enum MF_OBJECT_TYPE {
3544    MF_OBJECT_MEDIASOURCE = 0,
3545    MF_OBJECT_BYTESTREAM = 1,
3546    MF_OBJECT_INVALID = 2
3547} MF_OBJECT_TYPE;
3548typedef enum _MFPOLICYMANAGER_ACTION {
3549    PEACTION_NO = 0,
3550    PEACTION_PLAY = 1,
3551    PEACTION_COPY = 2,
3552    PEACTION_EXPORT = 3,
3553    PEACTION_EXTRACT = 4,
3554    PEACTION_RESERVED1 = 5,
3555    PEACTION_RESERVED2 = 6,
3556    PEACTION_RESERVED3 = 7,
3557    PEACTION_LAST = 7
3558} MFPOLICYMANAGER_ACTION;
3559typedef enum _MFRATE_DIRECTION {
3560    MFRATE_FORWARD = 0,
3561    MFRATE_REVERSE = 1
3562} MFRATE_DIRECTION;
3563typedef enum _MFSequencerTopologyFlags {
3564    SequencerTopologyFlags_Last = 0x1
3565} MFSequencerTopologyFlags;
3566typedef enum _MFSHUTDOWN_STATUS {
3567    MFSHUTDOWN_INITIATED = 0,
3568    MFSHUTDOWN_COMPLETED = 1
3569} MFSHUTDOWN_STATUS;
3570typedef enum MFSTREAMSINK_MARKER_TYPE {
3571    MFSTREAMSINK_MARKER_DEFAULT = 0,
3572    MFSTREAMSINK_MARKER_ENDOFSEGMENT = 1,
3573    MFSTREAMSINK_MARKER_TICK = 2,
3574    MFSTREAMSINK_MARKER_EVENT = 3
3575} MFSTREAMSINK_MARKER_TYPE;
3576typedef enum MFTIMER_FLAGS {
3577    MFTIMER_RELATIVE = 0x1
3578} MFTIMER_FLAGS;
3579#if (WINVER >= 0x0601)
3580typedef enum MFTOPOLOGY_DXVA_MODE {
3581    MFTOPOLOGY_DXVA_DEFAULT = 0,
3582    MFTOPOLOGY_DXVA_NONE = 1,
3583    MFTOPOLOGY_DXVA_FULL = 2
3584} MFTOPOLOGY_DXVA_MODE;
3585typedef enum MFTOPOLOGY_HARDWARE_MODE {
3586    MFTOPOLOGY_HWMODE_SOFTWARE_ONLY = 0,
3587    MFTOPOLOGY_HWMODE_USE_HARDWARE = 1
3588} MFTOPOLOGY_HARDWARE_MODE;
3589typedef struct _MFT_REGISTRATION_INFO {
3590    CLSID clsid;
3591    GUID guidCategory;
3592    UINT32 uiFlags;
3593    LPCWSTR pszName;
3594    DWORD cInTypes;
3595    MFT_REGISTER_TYPE_INFO *pInTypes;
3596    DWORD cOutTypes;
3597    MFT_REGISTER_TYPE_INFO *pOutTypes;
3598} MFT_REGISTRATION_INFO;
3599#endif /*(WINVER >= 0x0601)*/
3600typedef struct _ASFFlatPicture {
3601  BYTE  bPictureType;
3602  DWORD dwDataLen;
3603} ASF_FLAT_PICTURE;
3604
3605typedef struct _ASFFlatSynchronisedLyrics {
3606  BYTE  bTimeStampFormat;
3607  BYTE  bContentType;
3608  DWORD dwLyricsLen;
3609} ASF_FLAT_SYNCHRONISED_LYRICS;
3610typedef enum SAMPLE_PROTECTION_VERSION {
3611    SAMPLE_PROTECTION_VERSION_NO = 0,
3612    SAMPLE_PROTECTION_VERSION_BASIC_LOKI = 1,
3613    SAMPLE_PROTECTION_VERSION_SCATTER = 2,
3614    SAMPLE_PROTECTION_VERSION_RC4 = 3
3615} SAMPLE_PROTECTION_VERSION;
3616typedef struct _MFINPUTTRUSTAUTHORITY_ACTION {
3617    MFPOLICYMANAGER_ACTION Action;
3618    BYTE *pbTicket;
3619    DWORD cbTicket;
3620} MFINPUTTRUSTAUTHORITY_ACCESS_ACTION;
3621typedef struct _MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS {
3622    DWORD dwSize;
3623    DWORD dwVer;
3624    DWORD cbSignatureOffset;
3625    DWORD cbSignatureSize;
3626    DWORD cbExtensionOffset;
3627    DWORD cbExtensionSize;
3628    DWORD cActions;
3629    MFINPUTTRUSTAUTHORITY_ACCESS_ACTION rgOutputActions[1];
3630} MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS;
3631typedef struct _MFNetCredentialManagerGetParam {
3632    HRESULT hrOp;
3633    WINBOOL fAllowLoggedOnUser;
3634    WINBOOL fClearTextPackage;
3635    LPCWSTR pszUrl;
3636    LPCWSTR pszSite;
3637    LPCWSTR pszRealm;
3638    LPCWSTR pszPackage;
3639    LONG nRetries;
3640} MFNetCredentialManagerGetParam;
3641#define MEDIASINK_FIXED_STREAMS                 0x00000001
3642#define MEDIASINK_CANNOT_MATCH_CLOCK            0x00000002
3643#define MEDIASINK_RATELESS                      0x00000004
3644#define MEDIASINK_CLOCK_REQUIRED                0x00000008
3645#define MEDIASINK_CAN_PREROLL                   0x00000010
3646#define MEDIASINK_REQUIRE_REFERENCE_MEDIATYPE   0x00000020
3647enum {
3648    MF_RESOLUTION_MEDIASOURCE = 0x1,
3649    MF_RESOLUTION_BYTESTREAM = 0x2,
3650    MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE = 0x10,
3651    MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL = 0x20,
3652    MF_RESOLUTION_READ = 0x10000,
3653    MF_RESOLUTION_WRITE = 0x20000
3654};
3655#ifndef __IMFASFContentInfo_FWD_DEFINED__
3656#define __IMFASFContentInfo_FWD_DEFINED__
3657typedef interface IMFASFContentInfo IMFASFContentInfo;
3658#ifdef __cplusplus
3659interface IMFASFContentInfo;
3660#endif /* __cplusplus */
3661#endif
3662
3663#ifndef __IMFASFIndexer_FWD_DEFINED__
3664#define __IMFASFIndexer_FWD_DEFINED__
3665typedef interface IMFASFIndexer IMFASFIndexer;
3666#ifdef __cplusplus
3667interface IMFASFIndexer;
3668#endif /* __cplusplus */
3669#endif
3670
3671#ifndef __IMFASFMultiplexer_FWD_DEFINED__
3672#define __IMFASFMultiplexer_FWD_DEFINED__
3673typedef interface IMFASFMultiplexer IMFASFMultiplexer;
3674#ifdef __cplusplus
3675interface IMFASFMultiplexer;
3676#endif /* __cplusplus */
3677#endif
3678
3679#ifndef __IMFASFProfile_FWD_DEFINED__
3680#define __IMFASFProfile_FWD_DEFINED__
3681typedef interface IMFASFProfile IMFASFProfile;
3682#ifdef __cplusplus
3683interface IMFASFProfile;
3684#endif /* __cplusplus */
3685#endif
3686
3687#ifndef __IMFASFSplitter_FWD_DEFINED__
3688#define __IMFASFSplitter_FWD_DEFINED__
3689typedef interface IMFASFSplitter IMFASFSplitter;
3690#ifdef __cplusplus
3691interface IMFASFSplitter;
3692#endif /* __cplusplus */
3693#endif
3694
3695#ifndef __IMFPMPServer_FWD_DEFINED__
3696#define __IMFPMPServer_FWD_DEFINED__
3697typedef interface IMFPMPServer IMFPMPServer;
3698#ifdef __cplusplus
3699interface IMFPMPServer;
3700#endif /* __cplusplus */
3701#endif
3702
3703#ifndef __IMFPresentationClock_FWD_DEFINED__
3704#define __IMFPresentationClock_FWD_DEFINED__
3705typedef interface IMFPresentationClock IMFPresentationClock;
3706#ifdef __cplusplus
3707interface IMFPresentationClock;
3708#endif /* __cplusplus */
3709#endif
3710
3711#ifndef __IMFNetProxyLocator_FWD_DEFINED__
3712#define __IMFNetProxyLocator_FWD_DEFINED__
3713typedef interface IMFNetProxyLocator IMFNetProxyLocator;
3714#ifdef __cplusplus
3715interface IMFNetProxyLocator;
3716#endif /* __cplusplus */
3717#endif
3718
3719#ifndef __IMFRemoteDesktopPlugin_FWD_DEFINED__
3720#define __IMFRemoteDesktopPlugin_FWD_DEFINED__
3721typedef interface IMFRemoteDesktopPlugin IMFRemoteDesktopPlugin;
3722#ifdef __cplusplus
3723interface IMFRemoteDesktopPlugin;
3724#endif /* __cplusplus */
3725#endif
3726
3727#ifndef __IMFTransform_FWD_DEFINED__
3728#define __IMFTransform_FWD_DEFINED__
3729typedef interface IMFTransform IMFTransform;
3730#ifdef __cplusplus
3731interface IMFTransform;
3732#endif /* __cplusplus */
3733#endif
3734
3735#ifndef __IMFSequencerSource_FWD_DEFINED__
3736#define __IMFSequencerSource_FWD_DEFINED__
3737typedef interface IMFSequencerSource IMFSequencerSource;
3738#ifdef __cplusplus
3739interface IMFSequencerSource;
3740#endif /* __cplusplus */
3741#endif
3742
3743#ifndef __IMFStreamSink_FWD_DEFINED__
3744#define __IMFStreamSink_FWD_DEFINED__
3745typedef interface IMFStreamSink IMFStreamSink;
3746#ifdef __cplusplus
3747interface IMFStreamSink;
3748#endif /* __cplusplus */
3749#endif
3750
3751#ifndef __IMFQualityManager_FWD_DEFINED__
3752#define __IMFQualityManager_FWD_DEFINED__
3753typedef interface IMFQualityManager IMFQualityManager;
3754#ifdef __cplusplus
3755interface IMFQualityManager;
3756#endif /* __cplusplus */
3757#endif
3758
3759#ifndef __IMFTranscodeProfile_FWD_DEFINED__
3760#define __IMFTranscodeProfile_FWD_DEFINED__
3761typedef interface IMFTranscodeProfile IMFTranscodeProfile;
3762#ifdef __cplusplus
3763interface IMFTranscodeProfile;
3764#endif /* __cplusplus */
3765#endif
3766
3767/*****************************************************************************
3768 * IMFAudioStreamVolume interface
3769 */
3770#ifndef __IMFAudioStreamVolume_INTERFACE_DEFINED__
3771#define __IMFAudioStreamVolume_INTERFACE_DEFINED__
3772
3773DEFINE_GUID(IID_IMFAudioStreamVolume, 0x76b1bbdb, 0x4ec8, 0x4f36, 0xb1,0x06, 0x70,0xa9,0x31,0x6d,0xf5,0x93);
3774#if defined(__cplusplus) && !defined(CINTERFACE)
3775MIDL_INTERFACE("76b1bbdb-4ec8-4f36-b106-70a9316df593")
3776IMFAudioStreamVolume : public IUnknown
3777{
3778    virtual HRESULT STDMETHODCALLTYPE GetChannelCount(
3779        UINT32 *pdwCount) = 0;
3780
3781    virtual HRESULT STDMETHODCALLTYPE SetChannelVolume(
3782        UINT32 dwIndex,
3783        const float fLevel) = 0;
3784
3785    virtual HRESULT STDMETHODCALLTYPE GetChannelVolume(
3786        UINT32 dwIndex,
3787        float *pfLevel) = 0;
3788
3789    virtual HRESULT STDMETHODCALLTYPE SetAllVolumes(
3790        UINT32 dwCount,
3791        const float *pfVolumes) = 0;
3792
3793    virtual HRESULT STDMETHODCALLTYPE GetAllVolumes(
3794        UINT32 dwCount,
3795        float *pfVolumes) = 0;
3796
3797};
3798#ifdef __CRT_UUID_DECL
3799__CRT_UUID_DECL(IMFAudioStreamVolume, 0x76b1bbdb, 0x4ec8, 0x4f36, 0xb1,0x06, 0x70,0xa9,0x31,0x6d,0xf5,0x93)
3800#endif
3801#else
3802typedef struct IMFAudioStreamVolumeVtbl {
3803    BEGIN_INTERFACE
3804
3805    /*** IUnknown methods ***/
3806    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3807        IMFAudioStreamVolume *This,
3808        REFIID riid,
3809        void **ppvObject);
3810
3811    ULONG (STDMETHODCALLTYPE *AddRef)(
3812        IMFAudioStreamVolume *This);
3813
3814    ULONG (STDMETHODCALLTYPE *Release)(
3815        IMFAudioStreamVolume *This);
3816
3817    /*** IMFAudioStreamVolume methods ***/
3818    HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
3819        IMFAudioStreamVolume *This,
3820        UINT32 *pdwCount);
3821
3822    HRESULT (STDMETHODCALLTYPE *SetChannelVolume)(
3823        IMFAudioStreamVolume *This,
3824        UINT32 dwIndex,
3825        const float fLevel);
3826
3827    HRESULT (STDMETHODCALLTYPE *GetChannelVolume)(
3828        IMFAudioStreamVolume *This,
3829        UINT32 dwIndex,
3830        float *pfLevel);
3831
3832    HRESULT (STDMETHODCALLTYPE *SetAllVolumes)(
3833        IMFAudioStreamVolume *This,
3834        UINT32 dwCount,
3835        const float *pfVolumes);
3836
3837    HRESULT (STDMETHODCALLTYPE *GetAllVolumes)(
3838        IMFAudioStreamVolume *This,
3839        UINT32 dwCount,
3840        float *pfVolumes);
3841
3842    END_INTERFACE
3843} IMFAudioStreamVolumeVtbl;
3844
3845interface IMFAudioStreamVolume {
3846    CONST_VTBL IMFAudioStreamVolumeVtbl* lpVtbl;
3847};
3848
3849#ifdef COBJMACROS
3850#ifndef WIDL_C_INLINE_WRAPPERS
3851/*** IUnknown methods ***/
3852#define IMFAudioStreamVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3853#define IMFAudioStreamVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
3854#define IMFAudioStreamVolume_Release(This) (This)->lpVtbl->Release(This)
3855/*** IMFAudioStreamVolume methods ***/
3856#define IMFAudioStreamVolume_GetChannelCount(This,pdwCount) (This)->lpVtbl->GetChannelCount(This,pdwCount)
3857#define IMFAudioStreamVolume_SetChannelVolume(This,dwIndex,fLevel) (This)->lpVtbl->SetChannelVolume(This,dwIndex,fLevel)
3858#define IMFAudioStreamVolume_GetChannelVolume(This,dwIndex,pfLevel) (This)->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel)
3859#define IMFAudioStreamVolume_SetAllVolumes(This,dwCount,pfVolumes) (This)->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes)
3860#define IMFAudioStreamVolume_GetAllVolumes(This,dwCount,pfVolumes) (This)->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes)
3861#else
3862/*** IUnknown methods ***/
3863static inline HRESULT IMFAudioStreamVolume_QueryInterface(IMFAudioStreamVolume* This,REFIID riid,void **ppvObject) {
3864    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3865}
3866static inline ULONG IMFAudioStreamVolume_AddRef(IMFAudioStreamVolume* This) {
3867    return This->lpVtbl->AddRef(This);
3868}
3869static inline ULONG IMFAudioStreamVolume_Release(IMFAudioStreamVolume* This) {
3870    return This->lpVtbl->Release(This);
3871}
3872/*** IMFAudioStreamVolume methods ***/
3873static inline HRESULT IMFAudioStreamVolume_GetChannelCount(IMFAudioStreamVolume* This,UINT32 *pdwCount) {
3874    return This->lpVtbl->GetChannelCount(This,pdwCount);
3875}
3876static inline HRESULT IMFAudioStreamVolume_SetChannelVolume(IMFAudioStreamVolume* This,UINT32 dwIndex,const float fLevel) {
3877    return This->lpVtbl->SetChannelVolume(This,dwIndex,fLevel);
3878}
3879static inline HRESULT IMFAudioStreamVolume_GetChannelVolume(IMFAudioStreamVolume* This,UINT32 dwIndex,float *pfLevel) {
3880    return This->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel);
3881}
3882static inline HRESULT IMFAudioStreamVolume_SetAllVolumes(IMFAudioStreamVolume* This,UINT32 dwCount,const float *pfVolumes) {
3883    return This->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes);
3884}
3885static inline HRESULT IMFAudioStreamVolume_GetAllVolumes(IMFAudioStreamVolume* This,UINT32 dwCount,float *pfVolumes) {
3886    return This->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes);
3887}
3888#endif
3889#endif
3890
3891#endif
3892
3893
3894#endif  /* __IMFAudioStreamVolume_INTERFACE_DEFINED__ */
3895
3896/*****************************************************************************
3897 * IMFMediaSink interface
3898 */
3899#ifndef __IMFMediaSink_INTERFACE_DEFINED__
3900#define __IMFMediaSink_INTERFACE_DEFINED__
3901
3902DEFINE_GUID(IID_IMFMediaSink, 0x6ef2a660, 0x47c0, 0x4666, 0xb1,0x3d, 0xcb,0xb7,0x17,0xf2,0xfa,0x2c);
3903#if defined(__cplusplus) && !defined(CINTERFACE)
3904MIDL_INTERFACE("6ef2a660-47c0-4666-b13d-cbb717f2fa2c")
3905IMFMediaSink : public IUnknown
3906{
3907    virtual HRESULT STDMETHODCALLTYPE GetCharacteristics(
3908        DWORD *pdwCharacteristics) = 0;
3909
3910    virtual HRESULT STDMETHODCALLTYPE AddStreamSink(
3911        DWORD dwStreamSinkIdentifier,
3912        IMFMediaType *pMediaType,
3913        IMFStreamSink **ppStreamSink) = 0;
3914
3915    virtual HRESULT STDMETHODCALLTYPE RemoveStreamSink(
3916        DWORD dwStreamSinkIdentifier) = 0;
3917
3918    virtual HRESULT STDMETHODCALLTYPE GetStreamSinkCount(
3919        DWORD *pcStreamSinkCount) = 0;
3920
3921    virtual HRESULT STDMETHODCALLTYPE GetStreamSinkByIndex(
3922        DWORD dwIndex,
3923        IMFStreamSink **ppStreamSink) = 0;
3924
3925    virtual HRESULT STDMETHODCALLTYPE GetStreamSinkById(
3926        DWORD dwStreamSinkIdentifier,
3927        IMFStreamSink **ppStreamSink) = 0;
3928
3929    virtual HRESULT STDMETHODCALLTYPE SetPresentationClock(
3930        IMFPresentationClock *pPresentationClock) = 0;
3931
3932    virtual HRESULT STDMETHODCALLTYPE GetPresentationClock(
3933        IMFPresentationClock **ppPresentationClock) = 0;
3934
3935    virtual HRESULT STDMETHODCALLTYPE Shutdown(
3936        ) = 0;
3937
3938};
3939#ifdef __CRT_UUID_DECL
3940__CRT_UUID_DECL(IMFMediaSink, 0x6ef2a660, 0x47c0, 0x4666, 0xb1,0x3d, 0xcb,0xb7,0x17,0xf2,0xfa,0x2c)
3941#endif
3942#else
3943typedef struct IMFMediaSinkVtbl {
3944    BEGIN_INTERFACE
3945
3946    /*** IUnknown methods ***/
3947    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3948        IMFMediaSink *This,
3949        REFIID riid,
3950        void **ppvObject);
3951
3952    ULONG (STDMETHODCALLTYPE *AddRef)(
3953        IMFMediaSink *This);
3954
3955    ULONG (STDMETHODCALLTYPE *Release)(
3956        IMFMediaSink *This);
3957
3958    /*** IMFMediaSink methods ***/
3959    HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
3960        IMFMediaSink *This,
3961        DWORD *pdwCharacteristics);
3962
3963    HRESULT (STDMETHODCALLTYPE *AddStreamSink)(
3964        IMFMediaSink *This,
3965        DWORD dwStreamSinkIdentifier,
3966        IMFMediaType *pMediaType,
3967        IMFStreamSink **ppStreamSink);
3968
3969    HRESULT (STDMETHODCALLTYPE *RemoveStreamSink)(
3970        IMFMediaSink *This,
3971        DWORD dwStreamSinkIdentifier);
3972
3973    HRESULT (STDMETHODCALLTYPE *GetStreamSinkCount)(
3974        IMFMediaSink *This,
3975        DWORD *pcStreamSinkCount);
3976
3977    HRESULT (STDMETHODCALLTYPE *GetStreamSinkByIndex)(
3978        IMFMediaSink *This,
3979        DWORD dwIndex,
3980        IMFStreamSink **ppStreamSink);
3981
3982    HRESULT (STDMETHODCALLTYPE *GetStreamSinkById)(
3983        IMFMediaSink *This,
3984        DWORD dwStreamSinkIdentifier,
3985        IMFStreamSink **ppStreamSink);
3986
3987    HRESULT (STDMETHODCALLTYPE *SetPresentationClock)(
3988        IMFMediaSink *This,
3989        IMFPresentationClock *pPresentationClock);
3990
3991    HRESULT (STDMETHODCALLTYPE *GetPresentationClock)(
3992        IMFMediaSink *This,
3993        IMFPresentationClock **ppPresentationClock);
3994
3995    HRESULT (STDMETHODCALLTYPE *Shutdown)(
3996        IMFMediaSink *This);
3997
3998    END_INTERFACE
3999} IMFMediaSinkVtbl;
4000
4001interface IMFMediaSink {
4002    CONST_VTBL IMFMediaSinkVtbl* lpVtbl;
4003};
4004
4005#ifdef COBJMACROS
4006#ifndef WIDL_C_INLINE_WRAPPERS
4007/*** IUnknown methods ***/
4008#define IMFMediaSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4009#define IMFMediaSink_AddRef(This) (This)->lpVtbl->AddRef(This)
4010#define IMFMediaSink_Release(This) (This)->lpVtbl->Release(This)
4011/*** IMFMediaSink methods ***/
4012#define IMFMediaSink_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
4013#define IMFMediaSink_AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink) (This)->lpVtbl->AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink)
4014#define IMFMediaSink_RemoveStreamSink(This,dwStreamSinkIdentifier) (This)->lpVtbl->RemoveStreamSink(This,dwStreamSinkIdentifier)
4015#define IMFMediaSink_GetStreamSinkCount(This,pcStreamSinkCount) (This)->lpVtbl->GetStreamSinkCount(This,pcStreamSinkCount)
4016#define IMFMediaSink_GetStreamSinkByIndex(This,dwIndex,ppStreamSink) (This)->lpVtbl->GetStreamSinkByIndex(This,dwIndex,ppStreamSink)
4017#define IMFMediaSink_GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink) (This)->lpVtbl->GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink)
4018#define IMFMediaSink_SetPresentationClock(This,pPresentationClock) (This)->lpVtbl->SetPresentationClock(This,pPresentationClock)
4019#define IMFMediaSink_GetPresentationClock(This,ppPresentationClock) (This)->lpVtbl->GetPresentationClock(This,ppPresentationClock)
4020#define IMFMediaSink_Shutdown(This) (This)->lpVtbl->Shutdown(This)
4021#else
4022/*** IUnknown methods ***/
4023static inline HRESULT IMFMediaSink_QueryInterface(IMFMediaSink* This,REFIID riid,void **ppvObject) {
4024    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4025}
4026static inline ULONG IMFMediaSink_AddRef(IMFMediaSink* This) {
4027    return This->lpVtbl->AddRef(This);
4028}
4029static inline ULONG IMFMediaSink_Release(IMFMediaSink* This) {
4030    return This->lpVtbl->Release(This);
4031}
4032/*** IMFMediaSink methods ***/
4033static inline HRESULT IMFMediaSink_GetCharacteristics(IMFMediaSink* This,DWORD *pdwCharacteristics) {
4034    return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
4035}
4036static inline HRESULT IMFMediaSink_AddStreamSink(IMFMediaSink* This,DWORD dwStreamSinkIdentifier,IMFMediaType *pMediaType,IMFStreamSink **ppStreamSink) {
4037    return This->lpVtbl->AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink);
4038}
4039static inline HRESULT IMFMediaSink_RemoveStreamSink(IMFMediaSink* This,DWORD dwStreamSinkIdentifier) {
4040    return This->lpVtbl->RemoveStreamSink(This,dwStreamSinkIdentifier);
4041}
4042static inline HRESULT IMFMediaSink_GetStreamSinkCount(IMFMediaSink* This,DWORD *pcStreamSinkCount) {
4043    return This->lpVtbl->GetStreamSinkCount(This,pcStreamSinkCount);
4044}
4045static inline HRESULT IMFMediaSink_GetStreamSinkByIndex(IMFMediaSink* This,DWORD dwIndex,IMFStreamSink **ppStreamSink) {
4046    return This->lpVtbl->GetStreamSinkByIndex(This,dwIndex,ppStreamSink);
4047}
4048static inline HRESULT IMFMediaSink_GetStreamSinkById(IMFMediaSink* This,DWORD dwStreamSinkIdentifier,IMFStreamSink **ppStreamSink) {
4049    return This->lpVtbl->GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink);
4050}
4051static inline HRESULT IMFMediaSink_SetPresentationClock(IMFMediaSink* This,IMFPresentationClock *pPresentationClock) {
4052    return This->lpVtbl->SetPresentationClock(This,pPresentationClock);
4053}
4054static inline HRESULT IMFMediaSink_GetPresentationClock(IMFMediaSink* This,IMFPresentationClock **ppPresentationClock) {
4055    return This->lpVtbl->GetPresentationClock(This,ppPresentationClock);
4056}
4057static inline HRESULT IMFMediaSink_Shutdown(IMFMediaSink* This) {
4058    return This->lpVtbl->Shutdown(This);
4059}
4060#endif
4061#endif
4062
4063#endif
4064
4065
4066#endif  /* __IMFMediaSink_INTERFACE_DEFINED__ */
4067
4068/*****************************************************************************
4069 * IMFFinalizableMediaSink interface
4070 */
4071#ifndef __IMFFinalizableMediaSink_INTERFACE_DEFINED__
4072#define __IMFFinalizableMediaSink_INTERFACE_DEFINED__
4073
4074DEFINE_GUID(IID_IMFFinalizableMediaSink, 0xeaecb74a, 0x9a50, 0x42ce, 0x95,0x41, 0x6a,0x7f,0x57,0xaa,0x4a,0xd7);
4075#if defined(__cplusplus) && !defined(CINTERFACE)
4076MIDL_INTERFACE("eaecb74a-9a50-42ce-9541-6a7f57aa4ad7")
4077IMFFinalizableMediaSink : public IMFMediaSink
4078{
4079    virtual HRESULT STDMETHODCALLTYPE BeginFinalize(
4080        IMFAsyncCallback *pCallback,
4081        IUnknown *punkState) = 0;
4082
4083    virtual HRESULT STDMETHODCALLTYPE EndFinalize(
4084        IMFAsyncResult *pResult) = 0;
4085
4086};
4087#ifdef __CRT_UUID_DECL
4088__CRT_UUID_DECL(IMFFinalizableMediaSink, 0xeaecb74a, 0x9a50, 0x42ce, 0x95,0x41, 0x6a,0x7f,0x57,0xaa,0x4a,0xd7)
4089#endif
4090#else
4091typedef struct IMFFinalizableMediaSinkVtbl {
4092    BEGIN_INTERFACE
4093
4094    /*** IUnknown methods ***/
4095    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4096        IMFFinalizableMediaSink *This,
4097        REFIID riid,
4098        void **ppvObject);
4099
4100    ULONG (STDMETHODCALLTYPE *AddRef)(
4101        IMFFinalizableMediaSink *This);
4102
4103    ULONG (STDMETHODCALLTYPE *Release)(
4104        IMFFinalizableMediaSink *This);
4105
4106    /*** IMFMediaSink methods ***/
4107    HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
4108        IMFFinalizableMediaSink *This,
4109        DWORD *pdwCharacteristics);
4110
4111    HRESULT (STDMETHODCALLTYPE *AddStreamSink)(
4112        IMFFinalizableMediaSink *This,
4113        DWORD dwStreamSinkIdentifier,
4114        IMFMediaType *pMediaType,
4115        IMFStreamSink **ppStreamSink);
4116
4117    HRESULT (STDMETHODCALLTYPE *RemoveStreamSink)(
4118        IMFFinalizableMediaSink *This,
4119        DWORD dwStreamSinkIdentifier);
4120
4121    HRESULT (STDMETHODCALLTYPE *GetStreamSinkCount)(
4122        IMFFinalizableMediaSink *This,
4123        DWORD *pcStreamSinkCount);
4124
4125    HRESULT (STDMETHODCALLTYPE *GetStreamSinkByIndex)(
4126        IMFFinalizableMediaSink *This,
4127        DWORD dwIndex,
4128        IMFStreamSink **ppStreamSink);
4129
4130    HRESULT (STDMETHODCALLTYPE *GetStreamSinkById)(
4131        IMFFinalizableMediaSink *This,
4132        DWORD dwStreamSinkIdentifier,
4133        IMFStreamSink **ppStreamSink);
4134
4135    HRESULT (STDMETHODCALLTYPE *SetPresentationClock)(
4136        IMFFinalizableMediaSink *This,
4137        IMFPresentationClock *pPresentationClock);
4138
4139    HRESULT (STDMETHODCALLTYPE *GetPresentationClock)(
4140        IMFFinalizableMediaSink *This,
4141        IMFPresentationClock **ppPresentationClock);
4142
4143    HRESULT (STDMETHODCALLTYPE *Shutdown)(
4144        IMFFinalizableMediaSink *This);
4145
4146    /*** IMFFinalizableMediaSink methods ***/
4147    HRESULT (STDMETHODCALLTYPE *BeginFinalize)(
4148        IMFFinalizableMediaSink *This,
4149        IMFAsyncCallback *pCallback,
4150        IUnknown *punkState);
4151
4152    HRESULT (STDMETHODCALLTYPE *EndFinalize)(
4153        IMFFinalizableMediaSink *This,
4154        IMFAsyncResult *pResult);
4155
4156    END_INTERFACE
4157} IMFFinalizableMediaSinkVtbl;
4158
4159interface IMFFinalizableMediaSink {
4160    CONST_VTBL IMFFinalizableMediaSinkVtbl* lpVtbl;
4161};
4162
4163#ifdef COBJMACROS
4164#ifndef WIDL_C_INLINE_WRAPPERS
4165/*** IUnknown methods ***/
4166#define IMFFinalizableMediaSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4167#define IMFFinalizableMediaSink_AddRef(This) (This)->lpVtbl->AddRef(This)
4168#define IMFFinalizableMediaSink_Release(This) (This)->lpVtbl->Release(This)
4169/*** IMFMediaSink methods ***/
4170#define IMFFinalizableMediaSink_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
4171#define IMFFinalizableMediaSink_AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink) (This)->lpVtbl->AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink)
4172#define IMFFinalizableMediaSink_RemoveStreamSink(This,dwStreamSinkIdentifier) (This)->lpVtbl->RemoveStreamSink(This,dwStreamSinkIdentifier)
4173#define IMFFinalizableMediaSink_GetStreamSinkCount(This,pcStreamSinkCount) (This)->lpVtbl->GetStreamSinkCount(This,pcStreamSinkCount)
4174#define IMFFinalizableMediaSink_GetStreamSinkByIndex(This,dwIndex,ppStreamSink) (This)->lpVtbl->GetStreamSinkByIndex(This,dwIndex,ppStreamSink)
4175#define IMFFinalizableMediaSink_GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink) (This)->lpVtbl->GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink)
4176#define IMFFinalizableMediaSink_SetPresentationClock(This,pPresentationClock) (This)->lpVtbl->SetPresentationClock(This,pPresentationClock)
4177#define IMFFinalizableMediaSink_GetPresentationClock(This,ppPresentationClock) (This)->lpVtbl->GetPresentationClock(This,ppPresentationClock)
4178#define IMFFinalizableMediaSink_Shutdown(This) (This)->lpVtbl->Shutdown(This)
4179/*** IMFFinalizableMediaSink methods ***/
4180#define IMFFinalizableMediaSink_BeginFinalize(This,pCallback,punkState) (This)->lpVtbl->BeginFinalize(This,pCallback,punkState)
4181#define IMFFinalizableMediaSink_EndFinalize(This,pResult) (This)->lpVtbl->EndFinalize(This,pResult)
4182#else
4183/*** IUnknown methods ***/
4184static inline HRESULT IMFFinalizableMediaSink_QueryInterface(IMFFinalizableMediaSink* This,REFIID riid,void **ppvObject) {
4185    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4186}
4187static inline ULONG IMFFinalizableMediaSink_AddRef(IMFFinalizableMediaSink* This) {
4188    return This->lpVtbl->AddRef(This);
4189}
4190static inline ULONG IMFFinalizableMediaSink_Release(IMFFinalizableMediaSink* This) {
4191    return This->lpVtbl->Release(This);
4192}
4193/*** IMFMediaSink methods ***/
4194static inline HRESULT IMFFinalizableMediaSink_GetCharacteristics(IMFFinalizableMediaSink* This,DWORD *pdwCharacteristics) {
4195    return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
4196}
4197static inline HRESULT IMFFinalizableMediaSink_AddStreamSink(IMFFinalizableMediaSink* This,DWORD dwStreamSinkIdentifier,IMFMediaType *pMediaType,IMFStreamSink **ppStreamSink) {
4198    return This->lpVtbl->AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink);
4199}
4200static inline HRESULT IMFFinalizableMediaSink_RemoveStreamSink(IMFFinalizableMediaSink* This,DWORD dwStreamSinkIdentifier) {
4201    return This->lpVtbl->RemoveStreamSink(This,dwStreamSinkIdentifier);
4202}
4203static inline HRESULT IMFFinalizableMediaSink_GetStreamSinkCount(IMFFinalizableMediaSink* This,DWORD *pcStreamSinkCount) {
4204    return This->lpVtbl->GetStreamSinkCount(This,pcStreamSinkCount);
4205}
4206static inline HRESULT IMFFinalizableMediaSink_GetStreamSinkByIndex(IMFFinalizableMediaSink* This,DWORD dwIndex,IMFStreamSink **ppStreamSink) {
4207    return This->lpVtbl->GetStreamSinkByIndex(This,dwIndex,ppStreamSink);
4208}
4209static inline HRESULT IMFFinalizableMediaSink_GetStreamSinkById(IMFFinalizableMediaSink* This,DWORD dwStreamSinkIdentifier,IMFStreamSink **ppStreamSink) {
4210    return This->lpVtbl->GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink);
4211}
4212static inline HRESULT IMFFinalizableMediaSink_SetPresentationClock(IMFFinalizableMediaSink* This,IMFPresentationClock *pPresentationClock) {
4213    return This->lpVtbl->SetPresentationClock(This,pPresentationClock);
4214}
4215static inline HRESULT IMFFinalizableMediaSink_GetPresentationClock(IMFFinalizableMediaSink* This,IMFPresentationClock **ppPresentationClock) {
4216    return This->lpVtbl->GetPresentationClock(This,ppPresentationClock);
4217}
4218static inline HRESULT IMFFinalizableMediaSink_Shutdown(IMFFinalizableMediaSink* This) {
4219    return This->lpVtbl->Shutdown(This);
4220}
4221/*** IMFFinalizableMediaSink methods ***/
4222static inline HRESULT IMFFinalizableMediaSink_BeginFinalize(IMFFinalizableMediaSink* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
4223    return This->lpVtbl->BeginFinalize(This,pCallback,punkState);
4224}
4225static inline HRESULT IMFFinalizableMediaSink_EndFinalize(IMFFinalizableMediaSink* This,IMFAsyncResult *pResult) {
4226    return This->lpVtbl->EndFinalize(This,pResult);
4227}
4228#endif
4229#endif
4230
4231#endif
4232
4233
4234#endif  /* __IMFFinalizableMediaSink_INTERFACE_DEFINED__ */
4235
4236/*****************************************************************************
4237 * IMFMediaSinkPreroll interface
4238 */
4239#ifndef __IMFMediaSinkPreroll_INTERFACE_DEFINED__
4240#define __IMFMediaSinkPreroll_INTERFACE_DEFINED__
4241
4242DEFINE_GUID(IID_IMFMediaSinkPreroll, 0x5dfd4b2a, 0x7674, 0x4110, 0xa4,0xe6, 0x8a,0x68,0xfd,0x5f,0x36,0x88);
4243#if defined(__cplusplus) && !defined(CINTERFACE)
4244MIDL_INTERFACE("5dfd4b2a-7674-4110-a4e6-8a68fd5f3688")
4245IMFMediaSinkPreroll : public IUnknown
4246{
4247    virtual HRESULT STDMETHODCALLTYPE NotifyPreroll(
4248        MFTIME hnsUpcomingStartTime) = 0;
4249
4250};
4251#ifdef __CRT_UUID_DECL
4252__CRT_UUID_DECL(IMFMediaSinkPreroll, 0x5dfd4b2a, 0x7674, 0x4110, 0xa4,0xe6, 0x8a,0x68,0xfd,0x5f,0x36,0x88)
4253#endif
4254#else
4255typedef struct IMFMediaSinkPrerollVtbl {
4256    BEGIN_INTERFACE
4257
4258    /*** IUnknown methods ***/
4259    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4260        IMFMediaSinkPreroll *This,
4261        REFIID riid,
4262        void **ppvObject);
4263
4264    ULONG (STDMETHODCALLTYPE *AddRef)(
4265        IMFMediaSinkPreroll *This);
4266
4267    ULONG (STDMETHODCALLTYPE *Release)(
4268        IMFMediaSinkPreroll *This);
4269
4270    /*** IMFMediaSinkPreroll methods ***/
4271    HRESULT (STDMETHODCALLTYPE *NotifyPreroll)(
4272        IMFMediaSinkPreroll *This,
4273        MFTIME hnsUpcomingStartTime);
4274
4275    END_INTERFACE
4276} IMFMediaSinkPrerollVtbl;
4277
4278interface IMFMediaSinkPreroll {
4279    CONST_VTBL IMFMediaSinkPrerollVtbl* lpVtbl;
4280};
4281
4282#ifdef COBJMACROS
4283#ifndef WIDL_C_INLINE_WRAPPERS
4284/*** IUnknown methods ***/
4285#define IMFMediaSinkPreroll_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4286#define IMFMediaSinkPreroll_AddRef(This) (This)->lpVtbl->AddRef(This)
4287#define IMFMediaSinkPreroll_Release(This) (This)->lpVtbl->Release(This)
4288/*** IMFMediaSinkPreroll methods ***/
4289#define IMFMediaSinkPreroll_NotifyPreroll(This,hnsUpcomingStartTime) (This)->lpVtbl->NotifyPreroll(This,hnsUpcomingStartTime)
4290#else
4291/*** IUnknown methods ***/
4292static inline HRESULT IMFMediaSinkPreroll_QueryInterface(IMFMediaSinkPreroll* This,REFIID riid,void **ppvObject) {
4293    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4294}
4295static inline ULONG IMFMediaSinkPreroll_AddRef(IMFMediaSinkPreroll* This) {
4296    return This->lpVtbl->AddRef(This);
4297}
4298static inline ULONG IMFMediaSinkPreroll_Release(IMFMediaSinkPreroll* This) {
4299    return This->lpVtbl->Release(This);
4300}
4301/*** IMFMediaSinkPreroll methods ***/
4302static inline HRESULT IMFMediaSinkPreroll_NotifyPreroll(IMFMediaSinkPreroll* This,MFTIME hnsUpcomingStartTime) {
4303    return This->lpVtbl->NotifyPreroll(This,hnsUpcomingStartTime);
4304}
4305#endif
4306#endif
4307
4308#endif
4309
4310
4311#endif  /* __IMFMediaSinkPreroll_INTERFACE_DEFINED__ */
4312
4313/*****************************************************************************
4314 * IMFMediaStream interface
4315 */
4316#ifndef __IMFMediaStream_INTERFACE_DEFINED__
4317#define __IMFMediaStream_INTERFACE_DEFINED__
4318
4319DEFINE_GUID(IID_IMFMediaStream, 0xd182108f, 0x4ec6, 0x443f, 0xaa,0x42, 0xa7,0x11,0x06,0xec,0x82,0x5f);
4320#if defined(__cplusplus) && !defined(CINTERFACE)
4321MIDL_INTERFACE("d182108f-4ec6-443f-aa42-a71106ec825f")
4322IMFMediaStream : public IMFMediaEventGenerator
4323{
4324    virtual HRESULT STDMETHODCALLTYPE GetMediaSource(
4325        IMFMediaSource **ppMediaSource) = 0;
4326
4327    virtual HRESULT STDMETHODCALLTYPE GetStreamDescriptor(
4328        IMFStreamDescriptor **ppStreamDescriptor) = 0;
4329
4330    virtual HRESULT STDMETHODCALLTYPE RequestSample(
4331        IUnknown *pToken) = 0;
4332
4333};
4334#ifdef __CRT_UUID_DECL
4335__CRT_UUID_DECL(IMFMediaStream, 0xd182108f, 0x4ec6, 0x443f, 0xaa,0x42, 0xa7,0x11,0x06,0xec,0x82,0x5f)
4336#endif
4337#else
4338typedef struct IMFMediaStreamVtbl {
4339    BEGIN_INTERFACE
4340
4341    /*** IUnknown methods ***/
4342    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4343        IMFMediaStream *This,
4344        REFIID riid,
4345        void **ppvObject);
4346
4347    ULONG (STDMETHODCALLTYPE *AddRef)(
4348        IMFMediaStream *This);
4349
4350    ULONG (STDMETHODCALLTYPE *Release)(
4351        IMFMediaStream *This);
4352
4353    /*** IMFMediaEventGenerator methods ***/
4354    HRESULT (STDMETHODCALLTYPE *GetEvent)(
4355        IMFMediaStream *This,
4356        DWORD dwFlags,
4357        IMFMediaEvent **ppEvent);
4358
4359    HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
4360        IMFMediaStream *This,
4361        IMFAsyncCallback *pCallback,
4362        IUnknown *punkState);
4363
4364    HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
4365        IMFMediaStream *This,
4366        IMFAsyncResult *pResult,
4367        IMFMediaEvent **ppEvent);
4368
4369    HRESULT (STDMETHODCALLTYPE *QueueEvent)(
4370        IMFMediaStream *This,
4371        MediaEventType met,
4372        REFGUID guidExtendedType,
4373        HRESULT hrStatus,
4374        const PROPVARIANT *pvValue);
4375
4376    /*** IMFMediaStream methods ***/
4377    HRESULT (STDMETHODCALLTYPE *GetMediaSource)(
4378        IMFMediaStream *This,
4379        IMFMediaSource **ppMediaSource);
4380
4381    HRESULT (STDMETHODCALLTYPE *GetStreamDescriptor)(
4382        IMFMediaStream *This,
4383        IMFStreamDescriptor **ppStreamDescriptor);
4384
4385    HRESULT (STDMETHODCALLTYPE *RequestSample)(
4386        IMFMediaStream *This,
4387        IUnknown *pToken);
4388
4389    END_INTERFACE
4390} IMFMediaStreamVtbl;
4391
4392interface IMFMediaStream {
4393    CONST_VTBL IMFMediaStreamVtbl* lpVtbl;
4394};
4395
4396#ifdef COBJMACROS
4397#ifndef WIDL_C_INLINE_WRAPPERS
4398/*** IUnknown methods ***/
4399#define IMFMediaStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4400#define IMFMediaStream_AddRef(This) (This)->lpVtbl->AddRef(This)
4401#define IMFMediaStream_Release(This) (This)->lpVtbl->Release(This)
4402/*** IMFMediaEventGenerator methods ***/
4403#define IMFMediaStream_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
4404#define IMFMediaStream_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
4405#define IMFMediaStream_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
4406#define IMFMediaStream_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
4407/*** IMFMediaStream methods ***/
4408#define IMFMediaStream_GetMediaSource(This,ppMediaSource) (This)->lpVtbl->GetMediaSource(This,ppMediaSource)
4409#define IMFMediaStream_GetStreamDescriptor(This,ppStreamDescriptor) (This)->lpVtbl->GetStreamDescriptor(This,ppStreamDescriptor)
4410#define IMFMediaStream_RequestSample(This,pToken) (This)->lpVtbl->RequestSample(This,pToken)
4411#else
4412/*** IUnknown methods ***/
4413static inline HRESULT IMFMediaStream_QueryInterface(IMFMediaStream* This,REFIID riid,void **ppvObject) {
4414    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4415}
4416static inline ULONG IMFMediaStream_AddRef(IMFMediaStream* This) {
4417    return This->lpVtbl->AddRef(This);
4418}
4419static inline ULONG IMFMediaStream_Release(IMFMediaStream* This) {
4420    return This->lpVtbl->Release(This);
4421}
4422/*** IMFMediaEventGenerator methods ***/
4423static inline HRESULT IMFMediaStream_GetEvent(IMFMediaStream* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
4424    return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
4425}
4426static inline HRESULT IMFMediaStream_BeginGetEvent(IMFMediaStream* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
4427    return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
4428}
4429static inline HRESULT IMFMediaStream_EndGetEvent(IMFMediaStream* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
4430    return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
4431}
4432static inline HRESULT IMFMediaStream_QueueEvent(IMFMediaStream* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
4433    return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
4434}
4435/*** IMFMediaStream methods ***/
4436static inline HRESULT IMFMediaStream_GetMediaSource(IMFMediaStream* This,IMFMediaSource **ppMediaSource) {
4437    return This->lpVtbl->GetMediaSource(This,ppMediaSource);
4438}
4439static inline HRESULT IMFMediaStream_GetStreamDescriptor(IMFMediaStream* This,IMFStreamDescriptor **ppStreamDescriptor) {
4440    return This->lpVtbl->GetStreamDescriptor(This,ppStreamDescriptor);
4441}
4442static inline HRESULT IMFMediaStream_RequestSample(IMFMediaStream* This,IUnknown *pToken) {
4443    return This->lpVtbl->RequestSample(This,pToken);
4444}
4445#endif
4446#endif
4447
4448#endif
4449
4450HRESULT STDMETHODCALLTYPE IMFMediaStream_RemoteRequestSample_Proxy(
4451    IMFMediaStream* This);
4452void __RPC_STUB IMFMediaStream_RemoteRequestSample_Stub(
4453    IRpcStubBuffer* This,
4454    IRpcChannelBuffer* pRpcChannelBuffer,
4455    PRPC_MESSAGE pRpcMessage,
4456    DWORD* pdwStubPhase);
4457HRESULT CALLBACK IMFMediaStream_RequestSample_Proxy(
4458    IMFMediaStream* This,
4459    IUnknown *pToken);
4460HRESULT __RPC_STUB IMFMediaStream_RequestSample_Stub(
4461    IMFMediaStream* This);
4462
4463#endif  /* __IMFMediaStream_INTERFACE_DEFINED__ */
4464
4465/*****************************************************************************
4466 * IMFMetadata interface
4467 */
4468#ifndef __IMFMetadata_INTERFACE_DEFINED__
4469#define __IMFMetadata_INTERFACE_DEFINED__
4470
4471DEFINE_GUID(IID_IMFMetadata, 0xf88cfb8c, 0xef16, 0x4991, 0xb4,0x50, 0xcb,0x8c,0x69,0xe5,0x17,0x04);
4472#if defined(__cplusplus) && !defined(CINTERFACE)
4473MIDL_INTERFACE("f88cfb8c-ef16-4991-b450-cb8c69e51704")
4474IMFMetadata : public IUnknown
4475{
4476    virtual HRESULT STDMETHODCALLTYPE SetLanguage(
4477        LPCWSTR pwszRFC1766) = 0;
4478
4479    virtual HRESULT STDMETHODCALLTYPE GetLanguage(
4480        LPWSTR *ppwszRFC1766) = 0;
4481
4482    virtual HRESULT STDMETHODCALLTYPE GetAllLanguages(
4483        PROPVARIANT *ppvLanguages) = 0;
4484
4485    virtual HRESULT STDMETHODCALLTYPE SetProperty(
4486        LPCWSTR pwszName,
4487        const PROPVARIANT *ppvValue) = 0;
4488
4489    virtual HRESULT STDMETHODCALLTYPE GetProperty(
4490        LPCWSTR pwszName,
4491        PROPVARIANT *ppvValue) = 0;
4492
4493    virtual HRESULT STDMETHODCALLTYPE DeleteProperty(
4494        LPCWSTR pwszName) = 0;
4495
4496    virtual HRESULT STDMETHODCALLTYPE GetAllPropertyNames(
4497        PROPVARIANT *ppvNames) = 0;
4498
4499};
4500#ifdef __CRT_UUID_DECL
4501__CRT_UUID_DECL(IMFMetadata, 0xf88cfb8c, 0xef16, 0x4991, 0xb4,0x50, 0xcb,0x8c,0x69,0xe5,0x17,0x04)
4502#endif
4503#else
4504typedef struct IMFMetadataVtbl {
4505    BEGIN_INTERFACE
4506
4507    /*** IUnknown methods ***/
4508    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4509        IMFMetadata *This,
4510        REFIID riid,
4511        void **ppvObject);
4512
4513    ULONG (STDMETHODCALLTYPE *AddRef)(
4514        IMFMetadata *This);
4515
4516    ULONG (STDMETHODCALLTYPE *Release)(
4517        IMFMetadata *This);
4518
4519    /*** IMFMetadata methods ***/
4520    HRESULT (STDMETHODCALLTYPE *SetLanguage)(
4521        IMFMetadata *This,
4522        LPCWSTR pwszRFC1766);
4523
4524    HRESULT (STDMETHODCALLTYPE *GetLanguage)(
4525        IMFMetadata *This,
4526        LPWSTR *ppwszRFC1766);
4527
4528    HRESULT (STDMETHODCALLTYPE *GetAllLanguages)(
4529        IMFMetadata *This,
4530        PROPVARIANT *ppvLanguages);
4531
4532    HRESULT (STDMETHODCALLTYPE *SetProperty)(
4533        IMFMetadata *This,
4534        LPCWSTR pwszName,
4535        const PROPVARIANT *ppvValue);
4536
4537    HRESULT (STDMETHODCALLTYPE *GetProperty)(
4538        IMFMetadata *This,
4539        LPCWSTR pwszName,
4540        PROPVARIANT *ppvValue);
4541
4542    HRESULT (STDMETHODCALLTYPE *DeleteProperty)(
4543        IMFMetadata *This,
4544        LPCWSTR pwszName);
4545
4546    HRESULT (STDMETHODCALLTYPE *GetAllPropertyNames)(
4547        IMFMetadata *This,
4548        PROPVARIANT *ppvNames);
4549
4550    END_INTERFACE
4551} IMFMetadataVtbl;
4552
4553interface IMFMetadata {
4554    CONST_VTBL IMFMetadataVtbl* lpVtbl;
4555};
4556
4557#ifdef COBJMACROS
4558#ifndef WIDL_C_INLINE_WRAPPERS
4559/*** IUnknown methods ***/
4560#define IMFMetadata_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4561#define IMFMetadata_AddRef(This) (This)->lpVtbl->AddRef(This)
4562#define IMFMetadata_Release(This) (This)->lpVtbl->Release(This)
4563/*** IMFMetadata methods ***/
4564#define IMFMetadata_SetLanguage(This,pwszRFC1766) (This)->lpVtbl->SetLanguage(This,pwszRFC1766)
4565#define IMFMetadata_GetLanguage(This,ppwszRFC1766) (This)->lpVtbl->GetLanguage(This,ppwszRFC1766)
4566#define IMFMetadata_GetAllLanguages(This,ppvLanguages) (This)->lpVtbl->GetAllLanguages(This,ppvLanguages)
4567#define IMFMetadata_SetProperty(This,pwszName,ppvValue) (This)->lpVtbl->SetProperty(This,pwszName,ppvValue)
4568#define IMFMetadata_GetProperty(This,pwszName,ppvValue) (This)->lpVtbl->GetProperty(This,pwszName,ppvValue)
4569#define IMFMetadata_DeleteProperty(This,pwszName) (This)->lpVtbl->DeleteProperty(This,pwszName)
4570#define IMFMetadata_GetAllPropertyNames(This,ppvNames) (This)->lpVtbl->GetAllPropertyNames(This,ppvNames)
4571#else
4572/*** IUnknown methods ***/
4573static inline HRESULT IMFMetadata_QueryInterface(IMFMetadata* This,REFIID riid,void **ppvObject) {
4574    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4575}
4576static inline ULONG IMFMetadata_AddRef(IMFMetadata* This) {
4577    return This->lpVtbl->AddRef(This);
4578}
4579static inline ULONG IMFMetadata_Release(IMFMetadata* This) {
4580    return This->lpVtbl->Release(This);
4581}
4582/*** IMFMetadata methods ***/
4583static inline HRESULT IMFMetadata_SetLanguage(IMFMetadata* This,LPCWSTR pwszRFC1766) {
4584    return This->lpVtbl->SetLanguage(This,pwszRFC1766);
4585}
4586static inline HRESULT IMFMetadata_GetLanguage(IMFMetadata* This,LPWSTR *ppwszRFC1766) {
4587    return This->lpVtbl->GetLanguage(This,ppwszRFC1766);
4588}
4589static inline HRESULT IMFMetadata_GetAllLanguages(IMFMetadata* This,PROPVARIANT *ppvLanguages) {
4590    return This->lpVtbl->GetAllLanguages(This,ppvLanguages);
4591}
4592static inline HRESULT IMFMetadata_SetProperty(IMFMetadata* This,LPCWSTR pwszName,const PROPVARIANT *ppvValue) {
4593    return This->lpVtbl->SetProperty(This,pwszName,ppvValue);
4594}
4595static inline HRESULT IMFMetadata_GetProperty(IMFMetadata* This,LPCWSTR pwszName,PROPVARIANT *ppvValue) {
4596    return This->lpVtbl->GetProperty(This,pwszName,ppvValue);
4597}
4598static inline HRESULT IMFMetadata_DeleteProperty(IMFMetadata* This,LPCWSTR pwszName) {
4599    return This->lpVtbl->DeleteProperty(This,pwszName);
4600}
4601static inline HRESULT IMFMetadata_GetAllPropertyNames(IMFMetadata* This,PROPVARIANT *ppvNames) {
4602    return This->lpVtbl->GetAllPropertyNames(This,ppvNames);
4603}
4604#endif
4605#endif
4606
4607#endif
4608
4609
4610#endif  /* __IMFMetadata_INTERFACE_DEFINED__ */
4611
4612/*****************************************************************************
4613 * IMFMetadataProvider interface
4614 */
4615#ifndef __IMFMetadataProvider_INTERFACE_DEFINED__
4616#define __IMFMetadataProvider_INTERFACE_DEFINED__
4617
4618DEFINE_GUID(IID_IMFMetadataProvider, 0x56181d2d, 0xe221, 0x4adb, 0xb1,0xc8, 0x3c,0xee,0x6a,0x53,0xf7,0x6f);
4619#if defined(__cplusplus) && !defined(CINTERFACE)
4620MIDL_INTERFACE("56181d2d-e221-4adb-b1c8-3cee6a53f76f")
4621IMFMetadataProvider : public IUnknown
4622{
4623    virtual HRESULT STDMETHODCALLTYPE GetMFMetadata(
4624        IMFPresentationDescriptor *pPresentationDescriptor,
4625        DWORD dwStreamIdentifier,
4626        DWORD dwFlags,
4627        IMFMetadata **ppMFMetadata) = 0;
4628
4629};
4630#ifdef __CRT_UUID_DECL
4631__CRT_UUID_DECL(IMFMetadataProvider, 0x56181d2d, 0xe221, 0x4adb, 0xb1,0xc8, 0x3c,0xee,0x6a,0x53,0xf7,0x6f)
4632#endif
4633#else
4634typedef struct IMFMetadataProviderVtbl {
4635    BEGIN_INTERFACE
4636
4637    /*** IUnknown methods ***/
4638    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4639        IMFMetadataProvider *This,
4640        REFIID riid,
4641        void **ppvObject);
4642
4643    ULONG (STDMETHODCALLTYPE *AddRef)(
4644        IMFMetadataProvider *This);
4645
4646    ULONG (STDMETHODCALLTYPE *Release)(
4647        IMFMetadataProvider *This);
4648
4649    /*** IMFMetadataProvider methods ***/
4650    HRESULT (STDMETHODCALLTYPE *GetMFMetadata)(
4651        IMFMetadataProvider *This,
4652        IMFPresentationDescriptor *pPresentationDescriptor,
4653        DWORD dwStreamIdentifier,
4654        DWORD dwFlags,
4655        IMFMetadata **ppMFMetadata);
4656
4657    END_INTERFACE
4658} IMFMetadataProviderVtbl;
4659
4660interface IMFMetadataProvider {
4661    CONST_VTBL IMFMetadataProviderVtbl* lpVtbl;
4662};
4663
4664#ifdef COBJMACROS
4665#ifndef WIDL_C_INLINE_WRAPPERS
4666/*** IUnknown methods ***/
4667#define IMFMetadataProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4668#define IMFMetadataProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
4669#define IMFMetadataProvider_Release(This) (This)->lpVtbl->Release(This)
4670/*** IMFMetadataProvider methods ***/
4671#define IMFMetadataProvider_GetMFMetadata(This,pPresentationDescriptor,dwStreamIdentifier,dwFlags,ppMFMetadata) (This)->lpVtbl->GetMFMetadata(This,pPresentationDescriptor,dwStreamIdentifier,dwFlags,ppMFMetadata)
4672#else
4673/*** IUnknown methods ***/
4674static inline HRESULT IMFMetadataProvider_QueryInterface(IMFMetadataProvider* This,REFIID riid,void **ppvObject) {
4675    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4676}
4677static inline ULONG IMFMetadataProvider_AddRef(IMFMetadataProvider* This) {
4678    return This->lpVtbl->AddRef(This);
4679}
4680static inline ULONG IMFMetadataProvider_Release(IMFMetadataProvider* This) {
4681    return This->lpVtbl->Release(This);
4682}
4683/*** IMFMetadataProvider methods ***/
4684static inline HRESULT IMFMetadataProvider_GetMFMetadata(IMFMetadataProvider* This,IMFPresentationDescriptor *pPresentationDescriptor,DWORD dwStreamIdentifier,DWORD dwFlags,IMFMetadata **ppMFMetadata) {
4685    return This->lpVtbl->GetMFMetadata(This,pPresentationDescriptor,dwStreamIdentifier,dwFlags,ppMFMetadata);
4686}
4687#endif
4688#endif
4689
4690#endif
4691
4692
4693#endif  /* __IMFMetadataProvider_INTERFACE_DEFINED__ */
4694
4695/*****************************************************************************
4696 * IMFPresentationTimeSource interface
4697 */
4698#ifndef __IMFPresentationTimeSource_INTERFACE_DEFINED__
4699#define __IMFPresentationTimeSource_INTERFACE_DEFINED__
4700
4701DEFINE_GUID(IID_IMFPresentationTimeSource, 0x7ff12cce, 0xf76f, 0x41c2, 0x86,0x3b, 0x16,0x66,0xc8,0xe5,0xe1,0x39);
4702#if defined(__cplusplus) && !defined(CINTERFACE)
4703MIDL_INTERFACE("7ff12cce-f76f-41c2-863b-1666c8e5e139")
4704IMFPresentationTimeSource : public IMFClock
4705{
4706    virtual HRESULT STDMETHODCALLTYPE GetUnderlyingClock(
4707        IMFClock **ppClock) = 0;
4708
4709};
4710#ifdef __CRT_UUID_DECL
4711__CRT_UUID_DECL(IMFPresentationTimeSource, 0x7ff12cce, 0xf76f, 0x41c2, 0x86,0x3b, 0x16,0x66,0xc8,0xe5,0xe1,0x39)
4712#endif
4713#else
4714typedef struct IMFPresentationTimeSourceVtbl {
4715    BEGIN_INTERFACE
4716
4717    /*** IUnknown methods ***/
4718    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4719        IMFPresentationTimeSource *This,
4720        REFIID riid,
4721        void **ppvObject);
4722
4723    ULONG (STDMETHODCALLTYPE *AddRef)(
4724        IMFPresentationTimeSource *This);
4725
4726    ULONG (STDMETHODCALLTYPE *Release)(
4727        IMFPresentationTimeSource *This);
4728
4729    /*** IMFClock methods ***/
4730    HRESULT (STDMETHODCALLTYPE *GetClockCharacteristics)(
4731        IMFPresentationTimeSource *This,
4732        DWORD *pdwCharacteristics);
4733
4734    HRESULT (STDMETHODCALLTYPE *GetCorrelatedTime)(
4735        IMFPresentationTimeSource *This,
4736        DWORD dwReserved,
4737        LONGLONG *pllClockTime,
4738        MFTIME *phnsSystemTime);
4739
4740    HRESULT (STDMETHODCALLTYPE *GetContinuityKey)(
4741        IMFPresentationTimeSource *This,
4742        DWORD *pdwContinuityKey);
4743
4744    HRESULT (STDMETHODCALLTYPE *GetState)(
4745        IMFPresentationTimeSource *This,
4746        DWORD dwReserved,
4747        MFCLOCK_STATE *peClockState);
4748
4749    HRESULT (STDMETHODCALLTYPE *GetProperties)(
4750        IMFPresentationTimeSource *This,
4751        MFCLOCK_PROPERTIES *pClockProperties);
4752
4753    /*** IMFPresentationTimeSource methods ***/
4754    HRESULT (STDMETHODCALLTYPE *GetUnderlyingClock)(
4755        IMFPresentationTimeSource *This,
4756        IMFClock **ppClock);
4757
4758    END_INTERFACE
4759} IMFPresentationTimeSourceVtbl;
4760
4761interface IMFPresentationTimeSource {
4762    CONST_VTBL IMFPresentationTimeSourceVtbl* lpVtbl;
4763};
4764
4765#ifdef COBJMACROS
4766#ifndef WIDL_C_INLINE_WRAPPERS
4767/*** IUnknown methods ***/
4768#define IMFPresentationTimeSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4769#define IMFPresentationTimeSource_AddRef(This) (This)->lpVtbl->AddRef(This)
4770#define IMFPresentationTimeSource_Release(This) (This)->lpVtbl->Release(This)
4771/*** IMFClock methods ***/
4772#define IMFPresentationTimeSource_GetClockCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics)
4773#define IMFPresentationTimeSource_GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime) (This)->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime)
4774#define IMFPresentationTimeSource_GetContinuityKey(This,pdwContinuityKey) (This)->lpVtbl->GetContinuityKey(This,pdwContinuityKey)
4775#define IMFPresentationTimeSource_GetState(This,dwReserved,peClockState) (This)->lpVtbl->GetState(This,dwReserved,peClockState)
4776#define IMFPresentationTimeSource_GetProperties(This,pClockProperties) (This)->lpVtbl->GetProperties(This,pClockProperties)
4777/*** IMFPresentationTimeSource methods ***/
4778#define IMFPresentationTimeSource_GetUnderlyingClock(This,ppClock) (This)->lpVtbl->GetUnderlyingClock(This,ppClock)
4779#else
4780/*** IUnknown methods ***/
4781static inline HRESULT IMFPresentationTimeSource_QueryInterface(IMFPresentationTimeSource* This,REFIID riid,void **ppvObject) {
4782    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4783}
4784static inline ULONG IMFPresentationTimeSource_AddRef(IMFPresentationTimeSource* This) {
4785    return This->lpVtbl->AddRef(This);
4786}
4787static inline ULONG IMFPresentationTimeSource_Release(IMFPresentationTimeSource* This) {
4788    return This->lpVtbl->Release(This);
4789}
4790/*** IMFClock methods ***/
4791static inline HRESULT IMFPresentationTimeSource_GetClockCharacteristics(IMFPresentationTimeSource* This,DWORD *pdwCharacteristics) {
4792    return This->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics);
4793}
4794static inline HRESULT IMFPresentationTimeSource_GetCorrelatedTime(IMFPresentationTimeSource* This,DWORD dwReserved,LONGLONG *pllClockTime,MFTIME *phnsSystemTime) {
4795    return This->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime);
4796}
4797static inline HRESULT IMFPresentationTimeSource_GetContinuityKey(IMFPresentationTimeSource* This,DWORD *pdwContinuityKey) {
4798    return This->lpVtbl->GetContinuityKey(This,pdwContinuityKey);
4799}
4800static inline HRESULT IMFPresentationTimeSource_GetState(IMFPresentationTimeSource* This,DWORD dwReserved,MFCLOCK_STATE *peClockState) {
4801    return This->lpVtbl->GetState(This,dwReserved,peClockState);
4802}
4803static inline HRESULT IMFPresentationTimeSource_GetProperties(IMFPresentationTimeSource* This,MFCLOCK_PROPERTIES *pClockProperties) {
4804    return This->lpVtbl->GetProperties(This,pClockProperties);
4805}
4806/*** IMFPresentationTimeSource methods ***/
4807static inline HRESULT IMFPresentationTimeSource_GetUnderlyingClock(IMFPresentationTimeSource* This,IMFClock **ppClock) {
4808    return This->lpVtbl->GetUnderlyingClock(This,ppClock);
4809}
4810#endif
4811#endif
4812
4813#endif
4814
4815
4816#endif  /* __IMFPresentationTimeSource_INTERFACE_DEFINED__ */
4817
4818/*****************************************************************************
4819 * IMFPresentationClock interface
4820 */
4821#ifndef __IMFPresentationClock_INTERFACE_DEFINED__
4822#define __IMFPresentationClock_INTERFACE_DEFINED__
4823
4824DEFINE_GUID(IID_IMFPresentationClock, 0x868ce85c, 0x8ea9, 0x4f55, 0xab,0x82, 0xb0,0x09,0xa9,0x10,0xa8,0x05);
4825#if defined(__cplusplus) && !defined(CINTERFACE)
4826MIDL_INTERFACE("868ce85c-8ea9-4f55-ab82-b009a910a805")
4827IMFPresentationClock : public IMFClock
4828{
4829    virtual HRESULT STDMETHODCALLTYPE SetTimeSource(
4830        IMFPresentationTimeSource *pTimeSource) = 0;
4831
4832    virtual HRESULT STDMETHODCALLTYPE GetTimeSource(
4833        IMFPresentationTimeSource **ppTimeSource) = 0;
4834
4835    virtual HRESULT STDMETHODCALLTYPE GetTime(
4836        MFTIME *phnsClockTime) = 0;
4837
4838    virtual HRESULT STDMETHODCALLTYPE AddClockStateSink(
4839        IMFClockStateSink *pStateSink) = 0;
4840
4841    virtual HRESULT STDMETHODCALLTYPE RemoveClockStateSink(
4842        IMFClockStateSink *pStateSink) = 0;
4843
4844    virtual HRESULT STDMETHODCALLTYPE Start(
4845        LONGLONG llClockStartOffset) = 0;
4846
4847    virtual HRESULT STDMETHODCALLTYPE Stop(
4848        ) = 0;
4849
4850    virtual HRESULT STDMETHODCALLTYPE Pause(
4851        ) = 0;
4852
4853};
4854#ifdef __CRT_UUID_DECL
4855__CRT_UUID_DECL(IMFPresentationClock, 0x868ce85c, 0x8ea9, 0x4f55, 0xab,0x82, 0xb0,0x09,0xa9,0x10,0xa8,0x05)
4856#endif
4857#else
4858typedef struct IMFPresentationClockVtbl {
4859    BEGIN_INTERFACE
4860
4861    /*** IUnknown methods ***/
4862    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4863        IMFPresentationClock *This,
4864        REFIID riid,
4865        void **ppvObject);
4866
4867    ULONG (STDMETHODCALLTYPE *AddRef)(
4868        IMFPresentationClock *This);
4869
4870    ULONG (STDMETHODCALLTYPE *Release)(
4871        IMFPresentationClock *This);
4872
4873    /*** IMFClock methods ***/
4874    HRESULT (STDMETHODCALLTYPE *GetClockCharacteristics)(
4875        IMFPresentationClock *This,
4876        DWORD *pdwCharacteristics);
4877
4878    HRESULT (STDMETHODCALLTYPE *GetCorrelatedTime)(
4879        IMFPresentationClock *This,
4880        DWORD dwReserved,
4881        LONGLONG *pllClockTime,
4882        MFTIME *phnsSystemTime);
4883
4884    HRESULT (STDMETHODCALLTYPE *GetContinuityKey)(
4885        IMFPresentationClock *This,
4886        DWORD *pdwContinuityKey);
4887
4888    HRESULT (STDMETHODCALLTYPE *GetState)(
4889        IMFPresentationClock *This,
4890        DWORD dwReserved,
4891        MFCLOCK_STATE *peClockState);
4892
4893    HRESULT (STDMETHODCALLTYPE *GetProperties)(
4894        IMFPresentationClock *This,
4895        MFCLOCK_PROPERTIES *pClockProperties);
4896
4897    /*** IMFPresentationClock methods ***/
4898    HRESULT (STDMETHODCALLTYPE *SetTimeSource)(
4899        IMFPresentationClock *This,
4900        IMFPresentationTimeSource *pTimeSource);
4901
4902    HRESULT (STDMETHODCALLTYPE *GetTimeSource)(
4903        IMFPresentationClock *This,
4904        IMFPresentationTimeSource **ppTimeSource);
4905
4906    HRESULT (STDMETHODCALLTYPE *GetTime)(
4907        IMFPresentationClock *This,
4908        MFTIME *phnsClockTime);
4909
4910    HRESULT (STDMETHODCALLTYPE *AddClockStateSink)(
4911        IMFPresentationClock *This,
4912        IMFClockStateSink *pStateSink);
4913
4914    HRESULT (STDMETHODCALLTYPE *RemoveClockStateSink)(
4915        IMFPresentationClock *This,
4916        IMFClockStateSink *pStateSink);
4917
4918    HRESULT (STDMETHODCALLTYPE *Start)(
4919        IMFPresentationClock *This,
4920        LONGLONG llClockStartOffset);
4921
4922    HRESULT (STDMETHODCALLTYPE *Stop)(
4923        IMFPresentationClock *This);
4924
4925    HRESULT (STDMETHODCALLTYPE *Pause)(
4926        IMFPresentationClock *This);
4927
4928    END_INTERFACE
4929} IMFPresentationClockVtbl;
4930
4931interface IMFPresentationClock {
4932    CONST_VTBL IMFPresentationClockVtbl* lpVtbl;
4933};
4934
4935#ifdef COBJMACROS
4936#ifndef WIDL_C_INLINE_WRAPPERS
4937/*** IUnknown methods ***/
4938#define IMFPresentationClock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4939#define IMFPresentationClock_AddRef(This) (This)->lpVtbl->AddRef(This)
4940#define IMFPresentationClock_Release(This) (This)->lpVtbl->Release(This)
4941/*** IMFClock methods ***/
4942#define IMFPresentationClock_GetClockCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics)
4943#define IMFPresentationClock_GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime) (This)->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime)
4944#define IMFPresentationClock_GetContinuityKey(This,pdwContinuityKey) (This)->lpVtbl->GetContinuityKey(This,pdwContinuityKey)
4945#define IMFPresentationClock_GetState(This,dwReserved,peClockState) (This)->lpVtbl->GetState(This,dwReserved,peClockState)
4946#define IMFPresentationClock_GetProperties(This,pClockProperties) (This)->lpVtbl->GetProperties(This,pClockProperties)
4947/*** IMFPresentationClock methods ***/
4948#define IMFPresentationClock_SetTimeSource(This,pTimeSource) (This)->lpVtbl->SetTimeSource(This,pTimeSource)
4949#define IMFPresentationClock_GetTimeSource(This,ppTimeSource) (This)->lpVtbl->GetTimeSource(This,ppTimeSource)
4950#define IMFPresentationClock_GetTime(This,phnsClockTime) (This)->lpVtbl->GetTime(This,phnsClockTime)
4951#define IMFPresentationClock_AddClockStateSink(This,pStateSink) (This)->lpVtbl->AddClockStateSink(This,pStateSink)
4952#define IMFPresentationClock_RemoveClockStateSink(This,pStateSink) (This)->lpVtbl->RemoveClockStateSink(This,pStateSink)
4953#define IMFPresentationClock_Start(This,llClockStartOffset) (This)->lpVtbl->Start(This,llClockStartOffset)
4954#define IMFPresentationClock_Stop(This) (This)->lpVtbl->Stop(This)
4955#define IMFPresentationClock_Pause(This) (This)->lpVtbl->Pause(This)
4956#else
4957/*** IUnknown methods ***/
4958static inline HRESULT IMFPresentationClock_QueryInterface(IMFPresentationClock* This,REFIID riid,void **ppvObject) {
4959    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4960}
4961static inline ULONG IMFPresentationClock_AddRef(IMFPresentationClock* This) {
4962    return This->lpVtbl->AddRef(This);
4963}
4964static inline ULONG IMFPresentationClock_Release(IMFPresentationClock* This) {
4965    return This->lpVtbl->Release(This);
4966}
4967/*** IMFClock methods ***/
4968static inline HRESULT IMFPresentationClock_GetClockCharacteristics(IMFPresentationClock* This,DWORD *pdwCharacteristics) {
4969    return This->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics);
4970}
4971static inline HRESULT IMFPresentationClock_GetCorrelatedTime(IMFPresentationClock* This,DWORD dwReserved,LONGLONG *pllClockTime,MFTIME *phnsSystemTime) {
4972    return This->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime);
4973}
4974static inline HRESULT IMFPresentationClock_GetContinuityKey(IMFPresentationClock* This,DWORD *pdwContinuityKey) {
4975    return This->lpVtbl->GetContinuityKey(This,pdwContinuityKey);
4976}
4977static inline HRESULT IMFPresentationClock_GetState(IMFPresentationClock* This,DWORD dwReserved,MFCLOCK_STATE *peClockState) {
4978    return This->lpVtbl->GetState(This,dwReserved,peClockState);
4979}
4980static inline HRESULT IMFPresentationClock_GetProperties(IMFPresentationClock* This,MFCLOCK_PROPERTIES *pClockProperties) {
4981    return This->lpVtbl->GetProperties(This,pClockProperties);
4982}
4983/*** IMFPresentationClock methods ***/
4984static inline HRESULT IMFPresentationClock_SetTimeSource(IMFPresentationClock* This,IMFPresentationTimeSource *pTimeSource) {
4985    return This->lpVtbl->SetTimeSource(This,pTimeSource);
4986}
4987static inline HRESULT IMFPresentationClock_GetTimeSource(IMFPresentationClock* This,IMFPresentationTimeSource **ppTimeSource) {
4988    return This->lpVtbl->GetTimeSource(This,ppTimeSource);
4989}
4990static inline HRESULT IMFPresentationClock_GetTime(IMFPresentationClock* This,MFTIME *phnsClockTime) {
4991    return This->lpVtbl->GetTime(This,phnsClockTime);
4992}
4993static inline HRESULT IMFPresentationClock_AddClockStateSink(IMFPresentationClock* This,IMFClockStateSink *pStateSink) {
4994    return This->lpVtbl->AddClockStateSink(This,pStateSink);
4995}
4996static inline HRESULT IMFPresentationClock_RemoveClockStateSink(IMFPresentationClock* This,IMFClockStateSink *pStateSink) {
4997    return This->lpVtbl->RemoveClockStateSink(This,pStateSink);
4998}
4999static inline HRESULT IMFPresentationClock_Start(IMFPresentationClock* This,LONGLONG llClockStartOffset) {
5000    return This->lpVtbl->Start(This,llClockStartOffset);
5001}
5002static inline HRESULT IMFPresentationClock_Stop(IMFPresentationClock* This) {
5003    return This->lpVtbl->Stop(This);
5004}
5005static inline HRESULT IMFPresentationClock_Pause(IMFPresentationClock* This) {
5006    return This->lpVtbl->Pause(This);
5007}
5008#endif
5009#endif
5010
5011#endif
5012
5013
5014#endif  /* __IMFPresentationClock_INTERFACE_DEFINED__ */
5015
5016/*****************************************************************************
5017 * IMFRateControl interface
5018 */
5019#ifndef __IMFRateControl_INTERFACE_DEFINED__
5020#define __IMFRateControl_INTERFACE_DEFINED__
5021
5022DEFINE_GUID(IID_IMFRateControl, 0x88ddcd21, 0x03c3, 0x4275, 0x91,0xed, 0x55,0xee,0x39,0x29,0x32,0x8f);
5023#if defined(__cplusplus) && !defined(CINTERFACE)
5024MIDL_INTERFACE("88ddcd21-03c3-4275-91ed-55ee3929328f")
5025IMFRateControl : public IUnknown
5026{
5027    virtual HRESULT STDMETHODCALLTYPE SetRate(
5028        WINBOOL fThin,
5029        float flRate) = 0;
5030
5031    virtual HRESULT STDMETHODCALLTYPE GetRate(
5032        WINBOOL *pfThin,
5033        float *pflRate) = 0;
5034
5035};
5036#ifdef __CRT_UUID_DECL
5037__CRT_UUID_DECL(IMFRateControl, 0x88ddcd21, 0x03c3, 0x4275, 0x91,0xed, 0x55,0xee,0x39,0x29,0x32,0x8f)
5038#endif
5039#else
5040typedef struct IMFRateControlVtbl {
5041    BEGIN_INTERFACE
5042
5043    /*** IUnknown methods ***/
5044    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5045        IMFRateControl *This,
5046        REFIID riid,
5047        void **ppvObject);
5048
5049    ULONG (STDMETHODCALLTYPE *AddRef)(
5050        IMFRateControl *This);
5051
5052    ULONG (STDMETHODCALLTYPE *Release)(
5053        IMFRateControl *This);
5054
5055    /*** IMFRateControl methods ***/
5056    HRESULT (STDMETHODCALLTYPE *SetRate)(
5057        IMFRateControl *This,
5058        WINBOOL fThin,
5059        float flRate);
5060
5061    HRESULT (STDMETHODCALLTYPE *GetRate)(
5062        IMFRateControl *This,
5063        WINBOOL *pfThin,
5064        float *pflRate);
5065
5066    END_INTERFACE
5067} IMFRateControlVtbl;
5068
5069interface IMFRateControl {
5070    CONST_VTBL IMFRateControlVtbl* lpVtbl;
5071};
5072
5073#ifdef COBJMACROS
5074#ifndef WIDL_C_INLINE_WRAPPERS
5075/*** IUnknown methods ***/
5076#define IMFRateControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5077#define IMFRateControl_AddRef(This) (This)->lpVtbl->AddRef(This)
5078#define IMFRateControl_Release(This) (This)->lpVtbl->Release(This)
5079/*** IMFRateControl methods ***/
5080#define IMFRateControl_SetRate(This,fThin,flRate) (This)->lpVtbl->SetRate(This,fThin,flRate)
5081#define IMFRateControl_GetRate(This,pfThin,pflRate) (This)->lpVtbl->GetRate(This,pfThin,pflRate)
5082#else
5083/*** IUnknown methods ***/
5084static inline HRESULT IMFRateControl_QueryInterface(IMFRateControl* This,REFIID riid,void **ppvObject) {
5085    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5086}
5087static inline ULONG IMFRateControl_AddRef(IMFRateControl* This) {
5088    return This->lpVtbl->AddRef(This);
5089}
5090static inline ULONG IMFRateControl_Release(IMFRateControl* This) {
5091    return This->lpVtbl->Release(This);
5092}
5093/*** IMFRateControl methods ***/
5094static inline HRESULT IMFRateControl_SetRate(IMFRateControl* This,WINBOOL fThin,float flRate) {
5095    return This->lpVtbl->SetRate(This,fThin,flRate);
5096}
5097static inline HRESULT IMFRateControl_GetRate(IMFRateControl* This,WINBOOL *pfThin,float *pflRate) {
5098    return This->lpVtbl->GetRate(This,pfThin,pflRate);
5099}
5100#endif
5101#endif
5102
5103#endif
5104
5105
5106#endif  /* __IMFRateControl_INTERFACE_DEFINED__ */
5107
5108/*****************************************************************************
5109 * IMFRateSupport interface
5110 */
5111#ifndef __IMFRateSupport_INTERFACE_DEFINED__
5112#define __IMFRateSupport_INTERFACE_DEFINED__
5113
5114DEFINE_GUID(IID_IMFRateSupport, 0x0a9ccdbc, 0xd797, 0x4563, 0x96,0x67, 0x94,0xec,0x5d,0x79,0x29,0x2d);
5115#if defined(__cplusplus) && !defined(CINTERFACE)
5116MIDL_INTERFACE("0a9ccdbc-d797-4563-9667-94ec5d79292d")
5117IMFRateSupport : public IUnknown
5118{
5119    virtual HRESULT STDMETHODCALLTYPE GetSlowestRate(
5120        MFRATE_DIRECTION eDirection,
5121        WINBOOL fThin,
5122        float *pflRate) = 0;
5123
5124    virtual HRESULT STDMETHODCALLTYPE GetFastestRate(
5125        MFRATE_DIRECTION eDirection,
5126        WINBOOL fThin,
5127        float *pflRate) = 0;
5128
5129    virtual HRESULT STDMETHODCALLTYPE IsRateSupported(
5130        WINBOOL fThin,
5131        float flRate,
5132        float *pflNearestSupportedRate) = 0;
5133
5134};
5135#ifdef __CRT_UUID_DECL
5136__CRT_UUID_DECL(IMFRateSupport, 0x0a9ccdbc, 0xd797, 0x4563, 0x96,0x67, 0x94,0xec,0x5d,0x79,0x29,0x2d)
5137#endif
5138#else
5139typedef struct IMFRateSupportVtbl {
5140    BEGIN_INTERFACE
5141
5142    /*** IUnknown methods ***/
5143    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5144        IMFRateSupport *This,
5145        REFIID riid,
5146        void **ppvObject);
5147
5148    ULONG (STDMETHODCALLTYPE *AddRef)(
5149        IMFRateSupport *This);
5150
5151    ULONG (STDMETHODCALLTYPE *Release)(
5152        IMFRateSupport *This);
5153
5154    /*** IMFRateSupport methods ***/
5155    HRESULT (STDMETHODCALLTYPE *GetSlowestRate)(
5156        IMFRateSupport *This,
5157        MFRATE_DIRECTION eDirection,
5158        WINBOOL fThin,
5159        float *pflRate);
5160
5161    HRESULT (STDMETHODCALLTYPE *GetFastestRate)(
5162        IMFRateSupport *This,
5163        MFRATE_DIRECTION eDirection,
5164        WINBOOL fThin,
5165        float *pflRate);
5166
5167    HRESULT (STDMETHODCALLTYPE *IsRateSupported)(
5168        IMFRateSupport *This,
5169        WINBOOL fThin,
5170        float flRate,
5171        float *pflNearestSupportedRate);
5172
5173    END_INTERFACE
5174} IMFRateSupportVtbl;
5175
5176interface IMFRateSupport {
5177    CONST_VTBL IMFRateSupportVtbl* lpVtbl;
5178};
5179
5180#ifdef COBJMACROS
5181#ifndef WIDL_C_INLINE_WRAPPERS
5182/*** IUnknown methods ***/
5183#define IMFRateSupport_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5184#define IMFRateSupport_AddRef(This) (This)->lpVtbl->AddRef(This)
5185#define IMFRateSupport_Release(This) (This)->lpVtbl->Release(This)
5186/*** IMFRateSupport methods ***/
5187#define IMFRateSupport_GetSlowestRate(This,eDirection,fThin,pflRate) (This)->lpVtbl->GetSlowestRate(This,eDirection,fThin,pflRate)
5188#define IMFRateSupport_GetFastestRate(This,eDirection,fThin,pflRate) (This)->lpVtbl->GetFastestRate(This,eDirection,fThin,pflRate)
5189#define IMFRateSupport_IsRateSupported(This,fThin,flRate,pflNearestSupportedRate) (This)->lpVtbl->IsRateSupported(This,fThin,flRate,pflNearestSupportedRate)
5190#else
5191/*** IUnknown methods ***/
5192static inline HRESULT IMFRateSupport_QueryInterface(IMFRateSupport* This,REFIID riid,void **ppvObject) {
5193    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5194}
5195static inline ULONG IMFRateSupport_AddRef(IMFRateSupport* This) {
5196    return This->lpVtbl->AddRef(This);
5197}
5198static inline ULONG IMFRateSupport_Release(IMFRateSupport* This) {
5199    return This->lpVtbl->Release(This);
5200}
5201/*** IMFRateSupport methods ***/
5202static inline HRESULT IMFRateSupport_GetSlowestRate(IMFRateSupport* This,MFRATE_DIRECTION eDirection,WINBOOL fThin,float *pflRate) {
5203    return This->lpVtbl->GetSlowestRate(This,eDirection,fThin,pflRate);
5204}
5205static inline HRESULT IMFRateSupport_GetFastestRate(IMFRateSupport* This,MFRATE_DIRECTION eDirection,WINBOOL fThin,float *pflRate) {
5206    return This->lpVtbl->GetFastestRate(This,eDirection,fThin,pflRate);
5207}
5208static inline HRESULT IMFRateSupport_IsRateSupported(IMFRateSupport* This,WINBOOL fThin,float flRate,float *pflNearestSupportedRate) {
5209    return This->lpVtbl->IsRateSupported(This,fThin,flRate,pflNearestSupportedRate);
5210}
5211#endif
5212#endif
5213
5214#endif
5215
5216
5217#endif  /* __IMFRateSupport_INTERFACE_DEFINED__ */
5218
5219/*****************************************************************************
5220 * IMFSampleGrabberSinkCallback interface
5221 */
5222#ifndef __IMFSampleGrabberSinkCallback_INTERFACE_DEFINED__
5223#define __IMFSampleGrabberSinkCallback_INTERFACE_DEFINED__
5224
5225DEFINE_GUID(IID_IMFSampleGrabberSinkCallback, 0x8c7b80bf, 0xee42, 0x4b59, 0xb1,0xdf, 0x55,0x66,0x8e,0x1b,0xdc,0xa8);
5226#if defined(__cplusplus) && !defined(CINTERFACE)
5227MIDL_INTERFACE("8c7b80bf-ee42-4b59-b1df-55668e1bdca8")
5228IMFSampleGrabberSinkCallback : public IMFClockStateSink
5229{
5230    virtual HRESULT STDMETHODCALLTYPE OnSetPresentationClock(
5231        IMFPresentationClock *pPresentationClock) = 0;
5232
5233    virtual HRESULT STDMETHODCALLTYPE OnProcessSample(
5234        REFGUID guidMajorMediaType,
5235        DWORD dwSampleFlags,
5236        LONGLONG llSampleTime,
5237        LONGLONG llSampleDuration,
5238        const BYTE *pSampleBuffer,
5239        DWORD dwSampleSize) = 0;
5240
5241    virtual HRESULT STDMETHODCALLTYPE OnShutdown(
5242        ) = 0;
5243
5244};
5245#ifdef __CRT_UUID_DECL
5246__CRT_UUID_DECL(IMFSampleGrabberSinkCallback, 0x8c7b80bf, 0xee42, 0x4b59, 0xb1,0xdf, 0x55,0x66,0x8e,0x1b,0xdc,0xa8)
5247#endif
5248#else
5249typedef struct IMFSampleGrabberSinkCallbackVtbl {
5250    BEGIN_INTERFACE
5251
5252    /*** IUnknown methods ***/
5253    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5254        IMFSampleGrabberSinkCallback *This,
5255        REFIID riid,
5256        void **ppvObject);
5257
5258    ULONG (STDMETHODCALLTYPE *AddRef)(
5259        IMFSampleGrabberSinkCallback *This);
5260
5261    ULONG (STDMETHODCALLTYPE *Release)(
5262        IMFSampleGrabberSinkCallback *This);
5263
5264    /*** IMFClockStateSink methods ***/
5265    HRESULT (STDMETHODCALLTYPE *OnClockStart)(
5266        IMFSampleGrabberSinkCallback *This,
5267        MFTIME hnsSystemTime,
5268        LONGLONG llClockStartOffset);
5269
5270    HRESULT (STDMETHODCALLTYPE *OnClockStop)(
5271        IMFSampleGrabberSinkCallback *This,
5272        MFTIME hnsSystemTime);
5273
5274    HRESULT (STDMETHODCALLTYPE *OnClockPause)(
5275        IMFSampleGrabberSinkCallback *This,
5276        MFTIME hnsSystemTime);
5277
5278    HRESULT (STDMETHODCALLTYPE *OnClockRestart)(
5279        IMFSampleGrabberSinkCallback *This,
5280        MFTIME hnsSystemTime);
5281
5282    HRESULT (STDMETHODCALLTYPE *OnClockSetRate)(
5283        IMFSampleGrabberSinkCallback *This,
5284        MFTIME hnsSystemTime,
5285        float flRate);
5286
5287    /*** IMFSampleGrabberSinkCallback methods ***/
5288    HRESULT (STDMETHODCALLTYPE *OnSetPresentationClock)(
5289        IMFSampleGrabberSinkCallback *This,
5290        IMFPresentationClock *pPresentationClock);
5291
5292    HRESULT (STDMETHODCALLTYPE *OnProcessSample)(
5293        IMFSampleGrabberSinkCallback *This,
5294        REFGUID guidMajorMediaType,
5295        DWORD dwSampleFlags,
5296        LONGLONG llSampleTime,
5297        LONGLONG llSampleDuration,
5298        const BYTE *pSampleBuffer,
5299        DWORD dwSampleSize);
5300
5301    HRESULT (STDMETHODCALLTYPE *OnShutdown)(
5302        IMFSampleGrabberSinkCallback *This);
5303
5304    END_INTERFACE
5305} IMFSampleGrabberSinkCallbackVtbl;
5306
5307interface IMFSampleGrabberSinkCallback {
5308    CONST_VTBL IMFSampleGrabberSinkCallbackVtbl* lpVtbl;
5309};
5310
5311#ifdef COBJMACROS
5312#ifndef WIDL_C_INLINE_WRAPPERS
5313/*** IUnknown methods ***/
5314#define IMFSampleGrabberSinkCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5315#define IMFSampleGrabberSinkCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
5316#define IMFSampleGrabberSinkCallback_Release(This) (This)->lpVtbl->Release(This)
5317/*** IMFClockStateSink methods ***/
5318#define IMFSampleGrabberSinkCallback_OnClockStart(This,hnsSystemTime,llClockStartOffset) (This)->lpVtbl->OnClockStart(This,hnsSystemTime,llClockStartOffset)
5319#define IMFSampleGrabberSinkCallback_OnClockStop(This,hnsSystemTime) (This)->lpVtbl->OnClockStop(This,hnsSystemTime)
5320#define IMFSampleGrabberSinkCallback_OnClockPause(This,hnsSystemTime) (This)->lpVtbl->OnClockPause(This,hnsSystemTime)
5321#define IMFSampleGrabberSinkCallback_OnClockRestart(This,hnsSystemTime) (This)->lpVtbl->OnClockRestart(This,hnsSystemTime)
5322#define IMFSampleGrabberSinkCallback_OnClockSetRate(This,hnsSystemTime,flRate) (This)->lpVtbl->OnClockSetRate(This,hnsSystemTime,flRate)
5323/*** IMFSampleGrabberSinkCallback methods ***/
5324#define IMFSampleGrabberSinkCallback_OnSetPresentationClock(This,pPresentationClock) (This)->lpVtbl->OnSetPresentationClock(This,pPresentationClock)
5325#define IMFSampleGrabberSinkCallback_OnProcessSample(This,guidMajorMediaType,dwSampleFlags,llSampleTime,llSampleDuration,pSampleBuffer,dwSampleSize) (This)->lpVtbl->OnProcessSample(This,guidMajorMediaType,dwSampleFlags,llSampleTime,llSampleDuration,pSampleBuffer,dwSampleSize)
5326#define IMFSampleGrabberSinkCallback_OnShutdown(This) (This)->lpVtbl->OnShutdown(This)
5327#else
5328/*** IUnknown methods ***/
5329static inline HRESULT IMFSampleGrabberSinkCallback_QueryInterface(IMFSampleGrabberSinkCallback* This,REFIID riid,void **ppvObject) {
5330    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5331}
5332static inline ULONG IMFSampleGrabberSinkCallback_AddRef(IMFSampleGrabberSinkCallback* This) {
5333    return This->lpVtbl->AddRef(This);
5334}
5335static inline ULONG IMFSampleGrabberSinkCallback_Release(IMFSampleGrabberSinkCallback* This) {
5336    return This->lpVtbl->Release(This);
5337}
5338/*** IMFClockStateSink methods ***/
5339static inline HRESULT IMFSampleGrabberSinkCallback_OnClockStart(IMFSampleGrabberSinkCallback* This,MFTIME hnsSystemTime,LONGLONG llClockStartOffset) {
5340    return This->lpVtbl->OnClockStart(This,hnsSystemTime,llClockStartOffset);
5341}
5342static inline HRESULT IMFSampleGrabberSinkCallback_OnClockStop(IMFSampleGrabberSinkCallback* This,MFTIME hnsSystemTime) {
5343    return This->lpVtbl->OnClockStop(This,hnsSystemTime);
5344}
5345static inline HRESULT IMFSampleGrabberSinkCallback_OnClockPause(IMFSampleGrabberSinkCallback* This,MFTIME hnsSystemTime) {
5346    return This->lpVtbl->OnClockPause(This,hnsSystemTime);
5347}
5348static inline HRESULT IMFSampleGrabberSinkCallback_OnClockRestart(IMFSampleGrabberSinkCallback* This,MFTIME hnsSystemTime) {
5349    return This->lpVtbl->OnClockRestart(This,hnsSystemTime);
5350}
5351static inline HRESULT IMFSampleGrabberSinkCallback_OnClockSetRate(IMFSampleGrabberSinkCallback* This,MFTIME hnsSystemTime,float flRate) {
5352    return This->lpVtbl->OnClockSetRate(This,hnsSystemTime,flRate);
5353}
5354/*** IMFSampleGrabberSinkCallback methods ***/
5355static inline HRESULT IMFSampleGrabberSinkCallback_OnSetPresentationClock(IMFSampleGrabberSinkCallback* This,IMFPresentationClock *pPresentationClock) {
5356    return This->lpVtbl->OnSetPresentationClock(This,pPresentationClock);
5357}
5358static inline HRESULT IMFSampleGrabberSinkCallback_OnProcessSample(IMFSampleGrabberSinkCallback* This,REFGUID guidMajorMediaType,DWORD dwSampleFlags,LONGLONG llSampleTime,LONGLONG llSampleDuration,const BYTE *pSampleBuffer,DWORD dwSampleSize) {
5359    return This->lpVtbl->OnProcessSample(This,guidMajorMediaType,dwSampleFlags,llSampleTime,llSampleDuration,pSampleBuffer,dwSampleSize);
5360}
5361static inline HRESULT IMFSampleGrabberSinkCallback_OnShutdown(IMFSampleGrabberSinkCallback* This) {
5362    return This->lpVtbl->OnShutdown(This);
5363}
5364#endif
5365#endif
5366
5367#endif
5368
5369
5370#endif  /* __IMFSampleGrabberSinkCallback_INTERFACE_DEFINED__ */
5371
5372/*****************************************************************************
5373 * IMFShutdown interface
5374 */
5375#ifndef __IMFShutdown_INTERFACE_DEFINED__
5376#define __IMFShutdown_INTERFACE_DEFINED__
5377
5378DEFINE_GUID(IID_IMFShutdown, 0x97ec2ea4, 0x0e42, 0x4937, 0x97,0xac, 0x9d,0x6d,0x32,0x88,0x24,0xe1);
5379#if defined(__cplusplus) && !defined(CINTERFACE)
5380MIDL_INTERFACE("97ec2ea4-0e42-4937-97ac-9d6d328824e1")
5381IMFShutdown : public IUnknown
5382{
5383    virtual HRESULT STDMETHODCALLTYPE Shutdown(
5384        ) = 0;
5385
5386    virtual HRESULT STDMETHODCALLTYPE GetShutdownStatus(
5387        MFSHUTDOWN_STATUS *pStatus) = 0;
5388
5389};
5390#ifdef __CRT_UUID_DECL
5391__CRT_UUID_DECL(IMFShutdown, 0x97ec2ea4, 0x0e42, 0x4937, 0x97,0xac, 0x9d,0x6d,0x32,0x88,0x24,0xe1)
5392#endif
5393#else
5394typedef struct IMFShutdownVtbl {
5395    BEGIN_INTERFACE
5396
5397    /*** IUnknown methods ***/
5398    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5399        IMFShutdown *This,
5400        REFIID riid,
5401        void **ppvObject);
5402
5403    ULONG (STDMETHODCALLTYPE *AddRef)(
5404        IMFShutdown *This);
5405
5406    ULONG (STDMETHODCALLTYPE *Release)(
5407        IMFShutdown *This);
5408
5409    /*** IMFShutdown methods ***/
5410    HRESULT (STDMETHODCALLTYPE *Shutdown)(
5411        IMFShutdown *This);
5412
5413    HRESULT (STDMETHODCALLTYPE *GetShutdownStatus)(
5414        IMFShutdown *This,
5415        MFSHUTDOWN_STATUS *pStatus);
5416
5417    END_INTERFACE
5418} IMFShutdownVtbl;
5419
5420interface IMFShutdown {
5421    CONST_VTBL IMFShutdownVtbl* lpVtbl;
5422};
5423
5424#ifdef COBJMACROS
5425#ifndef WIDL_C_INLINE_WRAPPERS
5426/*** IUnknown methods ***/
5427#define IMFShutdown_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5428#define IMFShutdown_AddRef(This) (This)->lpVtbl->AddRef(This)
5429#define IMFShutdown_Release(This) (This)->lpVtbl->Release(This)
5430/*** IMFShutdown methods ***/
5431#define IMFShutdown_Shutdown(This) (This)->lpVtbl->Shutdown(This)
5432#define IMFShutdown_GetShutdownStatus(This,pStatus) (This)->lpVtbl->GetShutdownStatus(This,pStatus)
5433#else
5434/*** IUnknown methods ***/
5435static inline HRESULT IMFShutdown_QueryInterface(IMFShutdown* This,REFIID riid,void **ppvObject) {
5436    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5437}
5438static inline ULONG IMFShutdown_AddRef(IMFShutdown* This) {
5439    return This->lpVtbl->AddRef(This);
5440}
5441static inline ULONG IMFShutdown_Release(IMFShutdown* This) {
5442    return This->lpVtbl->Release(This);
5443}
5444/*** IMFShutdown methods ***/
5445static inline HRESULT IMFShutdown_Shutdown(IMFShutdown* This) {
5446    return This->lpVtbl->Shutdown(This);
5447}
5448static inline HRESULT IMFShutdown_GetShutdownStatus(IMFShutdown* This,MFSHUTDOWN_STATUS *pStatus) {
5449    return This->lpVtbl->GetShutdownStatus(This,pStatus);
5450}
5451#endif
5452#endif
5453
5454#endif
5455
5456
5457#endif  /* __IMFShutdown_INTERFACE_DEFINED__ */
5458
5459/*****************************************************************************
5460 * IMFSimpleAudioVolume interface
5461 */
5462#ifndef __IMFSimpleAudioVolume_INTERFACE_DEFINED__
5463#define __IMFSimpleAudioVolume_INTERFACE_DEFINED__
5464
5465DEFINE_GUID(IID_IMFSimpleAudioVolume, 0x089edf13, 0xcf71, 0x4338, 0x8d,0x13, 0x9e,0x56,0x9d,0xbd,0xc3,0x19);
5466#if defined(__cplusplus) && !defined(CINTERFACE)
5467MIDL_INTERFACE("089edf13-cf71-4338-8d13-9e569dbdc319")
5468IMFSimpleAudioVolume : public IUnknown
5469{
5470    virtual HRESULT STDMETHODCALLTYPE SetMasterVolume(
5471        float fLevel) = 0;
5472
5473    virtual HRESULT STDMETHODCALLTYPE GetMasterVolume(
5474        float *pfLevel) = 0;
5475
5476    virtual HRESULT STDMETHODCALLTYPE SetMute(
5477        const WINBOOL bMute) = 0;
5478
5479    virtual HRESULT STDMETHODCALLTYPE GetMute(
5480        WINBOOL *pbMute) = 0;
5481
5482};
5483#ifdef __CRT_UUID_DECL
5484__CRT_UUID_DECL(IMFSimpleAudioVolume, 0x089edf13, 0xcf71, 0x4338, 0x8d,0x13, 0x9e,0x56,0x9d,0xbd,0xc3,0x19)
5485#endif
5486#else
5487typedef struct IMFSimpleAudioVolumeVtbl {
5488    BEGIN_INTERFACE
5489
5490    /*** IUnknown methods ***/
5491    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5492        IMFSimpleAudioVolume *This,
5493        REFIID riid,
5494        void **ppvObject);
5495
5496    ULONG (STDMETHODCALLTYPE *AddRef)(
5497        IMFSimpleAudioVolume *This);
5498
5499    ULONG (STDMETHODCALLTYPE *Release)(
5500        IMFSimpleAudioVolume *This);
5501
5502    /*** IMFSimpleAudioVolume methods ***/
5503    HRESULT (STDMETHODCALLTYPE *SetMasterVolume)(
5504        IMFSimpleAudioVolume *This,
5505        float fLevel);
5506
5507    HRESULT (STDMETHODCALLTYPE *GetMasterVolume)(
5508        IMFSimpleAudioVolume *This,
5509        float *pfLevel);
5510
5511    HRESULT (STDMETHODCALLTYPE *SetMute)(
5512        IMFSimpleAudioVolume *This,
5513        const WINBOOL bMute);
5514
5515    HRESULT (STDMETHODCALLTYPE *GetMute)(
5516        IMFSimpleAudioVolume *This,
5517        WINBOOL *pbMute);
5518
5519    END_INTERFACE
5520} IMFSimpleAudioVolumeVtbl;
5521
5522interface IMFSimpleAudioVolume {
5523    CONST_VTBL IMFSimpleAudioVolumeVtbl* lpVtbl;
5524};
5525
5526#ifdef COBJMACROS
5527#ifndef WIDL_C_INLINE_WRAPPERS
5528/*** IUnknown methods ***/
5529#define IMFSimpleAudioVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5530#define IMFSimpleAudioVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
5531#define IMFSimpleAudioVolume_Release(This) (This)->lpVtbl->Release(This)
5532/*** IMFSimpleAudioVolume methods ***/
5533#define IMFSimpleAudioVolume_SetMasterVolume(This,fLevel) (This)->lpVtbl->SetMasterVolume(This,fLevel)
5534#define IMFSimpleAudioVolume_GetMasterVolume(This,pfLevel) (This)->lpVtbl->GetMasterVolume(This,pfLevel)
5535#define IMFSimpleAudioVolume_SetMute(This,bMute) (This)->lpVtbl->SetMute(This,bMute)
5536#define IMFSimpleAudioVolume_GetMute(This,pbMute) (This)->lpVtbl->GetMute(This,pbMute)
5537#else
5538/*** IUnknown methods ***/
5539static inline HRESULT IMFSimpleAudioVolume_QueryInterface(IMFSimpleAudioVolume* This,REFIID riid,void **ppvObject) {
5540    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5541}
5542static inline ULONG IMFSimpleAudioVolume_AddRef(IMFSimpleAudioVolume* This) {
5543    return This->lpVtbl->AddRef(This);
5544}
5545static inline ULONG IMFSimpleAudioVolume_Release(IMFSimpleAudioVolume* This) {
5546    return This->lpVtbl->Release(This);
5547}
5548/*** IMFSimpleAudioVolume methods ***/
5549static inline HRESULT IMFSimpleAudioVolume_SetMasterVolume(IMFSimpleAudioVolume* This,float fLevel) {
5550    return This->lpVtbl->SetMasterVolume(This,fLevel);
5551}
5552static inline HRESULT IMFSimpleAudioVolume_GetMasterVolume(IMFSimpleAudioVolume* This,float *pfLevel) {
5553    return This->lpVtbl->GetMasterVolume(This,pfLevel);
5554}
5555static inline HRESULT IMFSimpleAudioVolume_SetMute(IMFSimpleAudioVolume* This,const WINBOOL bMute) {
5556    return This->lpVtbl->SetMute(This,bMute);
5557}
5558static inline HRESULT IMFSimpleAudioVolume_GetMute(IMFSimpleAudioVolume* This,WINBOOL *pbMute) {
5559    return This->lpVtbl->GetMute(This,pbMute);
5560}
5561#endif
5562#endif
5563
5564#endif
5565
5566
5567#endif  /* __IMFSimpleAudioVolume_INTERFACE_DEFINED__ */
5568
5569/*****************************************************************************
5570 * IMFSourceResolver interface
5571 */
5572#ifndef __IMFSourceResolver_INTERFACE_DEFINED__
5573#define __IMFSourceResolver_INTERFACE_DEFINED__
5574
5575DEFINE_GUID(IID_IMFSourceResolver, 0xfbe5a32d, 0xa497, 0x4b61, 0xbb,0x85, 0x97,0xb1,0xa8,0x48,0xa6,0xe3);
5576#if defined(__cplusplus) && !defined(CINTERFACE)
5577MIDL_INTERFACE("fbe5a32d-a497-4b61-bb85-97b1a848a6e3")
5578IMFSourceResolver : public IUnknown
5579{
5580    virtual HRESULT STDMETHODCALLTYPE CreateObjectFromURL(
5581        LPCWSTR pwszURL,
5582        DWORD dwFlags,
5583        IPropertyStore *pProps,
5584        MF_OBJECT_TYPE *pObjectType,
5585        IUnknown **ppObject) = 0;
5586
5587    virtual HRESULT STDMETHODCALLTYPE CreateObjectFromByteStream(
5588        IMFByteStream *pByteStream,
5589        LPCWSTR pwszURL,
5590        DWORD dwFlags,
5591        IPropertyStore *pProps,
5592        MF_OBJECT_TYPE *pObjectType,
5593        IUnknown **ppObject) = 0;
5594
5595    virtual HRESULT STDMETHODCALLTYPE BeginCreateObjectFromURL(
5596        LPCWSTR pwszURL,
5597        DWORD dwFlags,
5598        IPropertyStore *pProps,
5599        IUnknown **ppIUnknownCancelCookie,
5600        IMFAsyncCallback *pCallback,
5601        IUnknown *punkState) = 0;
5602
5603    virtual HRESULT STDMETHODCALLTYPE EndCreateObjectFromURL(
5604        IMFAsyncResult *pResult,
5605        MF_OBJECT_TYPE *pObjectType,
5606        IUnknown **ppObject) = 0;
5607
5608    virtual HRESULT STDMETHODCALLTYPE BeginCreateObjectFromByteStream(
5609        IMFByteStream *pByteStream,
5610        LPCWSTR pwszURL,
5611        DWORD dwFlags,
5612        IPropertyStore *pProps,
5613        IUnknown **ppIUnknownCancelCookie,
5614        IMFAsyncCallback *pCallback,
5615        IUnknown *punkState) = 0;
5616
5617    virtual HRESULT STDMETHODCALLTYPE EndCreateObjectFromByteStream(
5618        IMFAsyncResult *pResult,
5619        MF_OBJECT_TYPE *pObjectType,
5620        IUnknown **ppObject) = 0;
5621
5622    virtual HRESULT STDMETHODCALLTYPE CancelObjectCreation(
5623        IUnknown *pIUnknownCancelCookie) = 0;
5624
5625};
5626#ifdef __CRT_UUID_DECL
5627__CRT_UUID_DECL(IMFSourceResolver, 0xfbe5a32d, 0xa497, 0x4b61, 0xbb,0x85, 0x97,0xb1,0xa8,0x48,0xa6,0xe3)
5628#endif
5629#else
5630typedef struct IMFSourceResolverVtbl {
5631    BEGIN_INTERFACE
5632
5633    /*** IUnknown methods ***/
5634    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5635        IMFSourceResolver *This,
5636        REFIID riid,
5637        void **ppvObject);
5638
5639    ULONG (STDMETHODCALLTYPE *AddRef)(
5640        IMFSourceResolver *This);
5641
5642    ULONG (STDMETHODCALLTYPE *Release)(
5643        IMFSourceResolver *This);
5644
5645    /*** IMFSourceResolver methods ***/
5646    HRESULT (STDMETHODCALLTYPE *CreateObjectFromURL)(
5647        IMFSourceResolver *This,
5648        LPCWSTR pwszURL,
5649        DWORD dwFlags,
5650        IPropertyStore *pProps,
5651        MF_OBJECT_TYPE *pObjectType,
5652        IUnknown **ppObject);
5653
5654    HRESULT (STDMETHODCALLTYPE *CreateObjectFromByteStream)(
5655        IMFSourceResolver *This,
5656        IMFByteStream *pByteStream,
5657        LPCWSTR pwszURL,
5658        DWORD dwFlags,
5659        IPropertyStore *pProps,
5660        MF_OBJECT_TYPE *pObjectType,
5661        IUnknown **ppObject);
5662
5663    HRESULT (STDMETHODCALLTYPE *BeginCreateObjectFromURL)(
5664        IMFSourceResolver *This,
5665        LPCWSTR pwszURL,
5666        DWORD dwFlags,
5667        IPropertyStore *pProps,
5668        IUnknown **ppIUnknownCancelCookie,
5669        IMFAsyncCallback *pCallback,
5670        IUnknown *punkState);
5671
5672    HRESULT (STDMETHODCALLTYPE *EndCreateObjectFromURL)(
5673        IMFSourceResolver *This,
5674        IMFAsyncResult *pResult,
5675        MF_OBJECT_TYPE *pObjectType,
5676        IUnknown **ppObject);
5677
5678    HRESULT (STDMETHODCALLTYPE *BeginCreateObjectFromByteStream)(
5679        IMFSourceResolver *This,
5680        IMFByteStream *pByteStream,
5681        LPCWSTR pwszURL,
5682        DWORD dwFlags,
5683        IPropertyStore *pProps,
5684        IUnknown **ppIUnknownCancelCookie,
5685        IMFAsyncCallback *pCallback,
5686        IUnknown *punkState);
5687
5688    HRESULT (STDMETHODCALLTYPE *EndCreateObjectFromByteStream)(
5689        IMFSourceResolver *This,
5690        IMFAsyncResult *pResult,
5691        MF_OBJECT_TYPE *pObjectType,
5692        IUnknown **ppObject);
5693
5694    HRESULT (STDMETHODCALLTYPE *CancelObjectCreation)(
5695        IMFSourceResolver *This,
5696        IUnknown *pIUnknownCancelCookie);
5697
5698    END_INTERFACE
5699} IMFSourceResolverVtbl;
5700
5701interface IMFSourceResolver {
5702    CONST_VTBL IMFSourceResolverVtbl* lpVtbl;
5703};
5704
5705#ifdef COBJMACROS
5706#ifndef WIDL_C_INLINE_WRAPPERS
5707/*** IUnknown methods ***/
5708#define IMFSourceResolver_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5709#define IMFSourceResolver_AddRef(This) (This)->lpVtbl->AddRef(This)
5710#define IMFSourceResolver_Release(This) (This)->lpVtbl->Release(This)
5711/*** IMFSourceResolver methods ***/
5712#define IMFSourceResolver_CreateObjectFromURL(This,pwszURL,dwFlags,pProps,pObjectType,ppObject) (This)->lpVtbl->CreateObjectFromURL(This,pwszURL,dwFlags,pProps,pObjectType,ppObject)
5713#define IMFSourceResolver_CreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,pObjectType,ppObject) (This)->lpVtbl->CreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,pObjectType,ppObject)
5714#define IMFSourceResolver_BeginCreateObjectFromURL(This,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState) (This)->lpVtbl->BeginCreateObjectFromURL(This,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState)
5715#define IMFSourceResolver_EndCreateObjectFromURL(This,pResult,pObjectType,ppObject) (This)->lpVtbl->EndCreateObjectFromURL(This,pResult,pObjectType,ppObject)
5716#define IMFSourceResolver_BeginCreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState) (This)->lpVtbl->BeginCreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState)
5717#define IMFSourceResolver_EndCreateObjectFromByteStream(This,pResult,pObjectType,ppObject) (This)->lpVtbl->EndCreateObjectFromByteStream(This,pResult,pObjectType,ppObject)
5718#define IMFSourceResolver_CancelObjectCreation(This,pIUnknownCancelCookie) (This)->lpVtbl->CancelObjectCreation(This,pIUnknownCancelCookie)
5719#else
5720/*** IUnknown methods ***/
5721static inline HRESULT IMFSourceResolver_QueryInterface(IMFSourceResolver* This,REFIID riid,void **ppvObject) {
5722    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5723}
5724static inline ULONG IMFSourceResolver_AddRef(IMFSourceResolver* This) {
5725    return This->lpVtbl->AddRef(This);
5726}
5727static inline ULONG IMFSourceResolver_Release(IMFSourceResolver* This) {
5728    return This->lpVtbl->Release(This);
5729}
5730/*** IMFSourceResolver methods ***/
5731static inline HRESULT IMFSourceResolver_CreateObjectFromURL(IMFSourceResolver* This,LPCWSTR pwszURL,DWORD dwFlags,IPropertyStore *pProps,MF_OBJECT_TYPE *pObjectType,IUnknown **ppObject) {
5732    return This->lpVtbl->CreateObjectFromURL(This,pwszURL,dwFlags,pProps,pObjectType,ppObject);
5733}
5734static inline HRESULT IMFSourceResolver_CreateObjectFromByteStream(IMFSourceResolver* This,IMFByteStream *pByteStream,LPCWSTR pwszURL,DWORD dwFlags,IPropertyStore *pProps,MF_OBJECT_TYPE *pObjectType,IUnknown **ppObject) {
5735    return This->lpVtbl->CreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,pObjectType,ppObject);
5736}
5737static inline HRESULT IMFSourceResolver_BeginCreateObjectFromURL(IMFSourceResolver* This,LPCWSTR pwszURL,DWORD dwFlags,IPropertyStore *pProps,IUnknown **ppIUnknownCancelCookie,IMFAsyncCallback *pCallback,IUnknown *punkState) {
5738    return This->lpVtbl->BeginCreateObjectFromURL(This,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState);
5739}
5740static inline HRESULT IMFSourceResolver_EndCreateObjectFromURL(IMFSourceResolver* This,IMFAsyncResult *pResult,MF_OBJECT_TYPE *pObjectType,IUnknown **ppObject) {
5741    return This->lpVtbl->EndCreateObjectFromURL(This,pResult,pObjectType,ppObject);
5742}
5743static inline HRESULT IMFSourceResolver_BeginCreateObjectFromByteStream(IMFSourceResolver* This,IMFByteStream *pByteStream,LPCWSTR pwszURL,DWORD dwFlags,IPropertyStore *pProps,IUnknown **ppIUnknownCancelCookie,IMFAsyncCallback *pCallback,IUnknown *punkState) {
5744    return This->lpVtbl->BeginCreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState);
5745}
5746static inline HRESULT IMFSourceResolver_EndCreateObjectFromByteStream(IMFSourceResolver* This,IMFAsyncResult *pResult,MF_OBJECT_TYPE *pObjectType,IUnknown **ppObject) {
5747    return This->lpVtbl->EndCreateObjectFromByteStream(This,pResult,pObjectType,ppObject);
5748}
5749static inline HRESULT IMFSourceResolver_CancelObjectCreation(IMFSourceResolver* This,IUnknown *pIUnknownCancelCookie) {
5750    return This->lpVtbl->CancelObjectCreation(This,pIUnknownCancelCookie);
5751}
5752#endif
5753#endif
5754
5755#endif
5756
5757HRESULT STDMETHODCALLTYPE IMFSourceResolver_RemoteBeginCreateObjectFromURL_Proxy(
5758    IMFSourceResolver* This,
5759    LPCWSTR pwszURL,
5760    DWORD dwFlags,
5761    IPropertyStore *pProps,
5762    IMFRemoteAsyncCallback *pCallback);
5763void __RPC_STUB IMFSourceResolver_RemoteBeginCreateObjectFromURL_Stub(
5764    IRpcStubBuffer* This,
5765    IRpcChannelBuffer* pRpcChannelBuffer,
5766    PRPC_MESSAGE pRpcMessage,
5767    DWORD* pdwStubPhase);
5768HRESULT STDMETHODCALLTYPE IMFSourceResolver_RemoteEndCreateObjectFromURL_Proxy(
5769    IMFSourceResolver* This,
5770    IUnknown *pResult,
5771    MF_OBJECT_TYPE *pObjectType,
5772    IUnknown **ppObject);
5773void __RPC_STUB IMFSourceResolver_RemoteEndCreateObjectFromURL_Stub(
5774    IRpcStubBuffer* This,
5775    IRpcChannelBuffer* pRpcChannelBuffer,
5776    PRPC_MESSAGE pRpcMessage,
5777    DWORD* pdwStubPhase);
5778HRESULT STDMETHODCALLTYPE IMFSourceResolver_RemoteBeginCreateObjectFromByteStream_Proxy(
5779    IMFSourceResolver* This,
5780    IMFByteStream *pByteStream,
5781    LPCWSTR pwszURL,
5782    DWORD dwFlags,
5783    IPropertyStore *pProps,
5784    IMFRemoteAsyncCallback *pCallback);
5785void __RPC_STUB IMFSourceResolver_RemoteBeginCreateObjectFromByteStream_Stub(
5786    IRpcStubBuffer* This,
5787    IRpcChannelBuffer* pRpcChannelBuffer,
5788    PRPC_MESSAGE pRpcMessage,
5789    DWORD* pdwStubPhase);
5790HRESULT STDMETHODCALLTYPE IMFSourceResolver_RemoteEndCreateObjectFromByteStream_Proxy(
5791    IMFSourceResolver* This,
5792    IUnknown *pResult,
5793    MF_OBJECT_TYPE *pObjectType,
5794    IUnknown **ppObject);
5795void __RPC_STUB IMFSourceResolver_RemoteEndCreateObjectFromByteStream_Stub(
5796    IRpcStubBuffer* This,
5797    IRpcChannelBuffer* pRpcChannelBuffer,
5798    PRPC_MESSAGE pRpcMessage,
5799    DWORD* pdwStubPhase);
5800HRESULT CALLBACK IMFSourceResolver_BeginCreateObjectFromURL_Proxy(
5801    IMFSourceResolver* This,
5802    LPCWSTR pwszURL,
5803    DWORD dwFlags,
5804    IPropertyStore *pProps,
5805    IUnknown **ppIUnknownCancelCookie,
5806    IMFAsyncCallback *pCallback,
5807    IUnknown *punkState);
5808HRESULT __RPC_STUB IMFSourceResolver_BeginCreateObjectFromURL_Stub(
5809    IMFSourceResolver* This,
5810    LPCWSTR pwszURL,
5811    DWORD dwFlags,
5812    IPropertyStore *pProps,
5813    IMFRemoteAsyncCallback *pCallback);
5814HRESULT CALLBACK IMFSourceResolver_EndCreateObjectFromURL_Proxy(
5815    IMFSourceResolver* This,
5816    IMFAsyncResult *pResult,
5817    MF_OBJECT_TYPE *pObjectType,
5818    IUnknown **ppObject);
5819HRESULT __RPC_STUB IMFSourceResolver_EndCreateObjectFromURL_Stub(
5820    IMFSourceResolver* This,
5821    IUnknown *pResult,
5822    MF_OBJECT_TYPE *pObjectType,
5823    IUnknown **ppObject);
5824HRESULT CALLBACK IMFSourceResolver_BeginCreateObjectFromByteStream_Proxy(
5825    IMFSourceResolver* This,
5826    IMFByteStream *pByteStream,
5827    LPCWSTR pwszURL,
5828    DWORD dwFlags,
5829    IPropertyStore *pProps,
5830    IUnknown **ppIUnknownCancelCookie,
5831    IMFAsyncCallback *pCallback,
5832    IUnknown *punkState);
5833HRESULT __RPC_STUB IMFSourceResolver_BeginCreateObjectFromByteStream_Stub(
5834    IMFSourceResolver* This,
5835    IMFByteStream *pByteStream,
5836    LPCWSTR pwszURL,
5837    DWORD dwFlags,
5838    IPropertyStore *pProps,
5839    IMFRemoteAsyncCallback *pCallback);
5840HRESULT CALLBACK IMFSourceResolver_EndCreateObjectFromByteStream_Proxy(
5841    IMFSourceResolver* This,
5842    IMFAsyncResult *pResult,
5843    MF_OBJECT_TYPE *pObjectType,
5844    IUnknown **ppObject);
5845HRESULT __RPC_STUB IMFSourceResolver_EndCreateObjectFromByteStream_Stub(
5846    IMFSourceResolver* This,
5847    IUnknown *pResult,
5848    MF_OBJECT_TYPE *pObjectType,
5849    IUnknown **ppObject);
5850
5851#endif  /* __IMFSourceResolver_INTERFACE_DEFINED__ */
5852
5853/*****************************************************************************
5854 * IMFStreamSink interface
5855 */
5856#ifndef __IMFStreamSink_INTERFACE_DEFINED__
5857#define __IMFStreamSink_INTERFACE_DEFINED__
5858
5859DEFINE_GUID(IID_IMFStreamSink, 0x0a97b3cf, 0x8e7c, 0x4a3d, 0x8f,0x8c, 0x0c,0x84,0x3d,0xc2,0x47,0xfb);
5860#if defined(__cplusplus) && !defined(CINTERFACE)
5861MIDL_INTERFACE("0a97b3cf-8e7c-4a3d-8f8c-0c843dc247fb")
5862IMFStreamSink : public IMFMediaEventGenerator
5863{
5864    virtual HRESULT STDMETHODCALLTYPE GetMediaSink(
5865        IMFMediaSink **ppMediaSink) = 0;
5866
5867    virtual HRESULT STDMETHODCALLTYPE GetIdentifier(
5868        DWORD *pdwIdentifier) = 0;
5869
5870    virtual HRESULT STDMETHODCALLTYPE GetMediaTypeHandler(
5871        IMFMediaTypeHandler **ppHandler) = 0;
5872
5873    virtual HRESULT STDMETHODCALLTYPE ProcessSample(
5874        IMFSample *pSample) = 0;
5875
5876    virtual HRESULT STDMETHODCALLTYPE PlaceMarker(
5877        MFSTREAMSINK_MARKER_TYPE eMarkerType,
5878        const PROPVARIANT *pvarMarkerValue,
5879        const PROPVARIANT *pvarContextValue) = 0;
5880
5881    virtual HRESULT STDMETHODCALLTYPE Flush(
5882        ) = 0;
5883
5884};
5885#ifdef __CRT_UUID_DECL
5886__CRT_UUID_DECL(IMFStreamSink, 0x0a97b3cf, 0x8e7c, 0x4a3d, 0x8f,0x8c, 0x0c,0x84,0x3d,0xc2,0x47,0xfb)
5887#endif
5888#else
5889typedef struct IMFStreamSinkVtbl {
5890    BEGIN_INTERFACE
5891
5892    /*** IUnknown methods ***/
5893    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5894        IMFStreamSink *This,
5895        REFIID riid,
5896        void **ppvObject);
5897
5898    ULONG (STDMETHODCALLTYPE *AddRef)(
5899        IMFStreamSink *This);
5900
5901    ULONG (STDMETHODCALLTYPE *Release)(
5902        IMFStreamSink *This);
5903
5904    /*** IMFMediaEventGenerator methods ***/
5905    HRESULT (STDMETHODCALLTYPE *GetEvent)(
5906        IMFStreamSink *This,
5907        DWORD dwFlags,
5908        IMFMediaEvent **ppEvent);
5909
5910    HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
5911        IMFStreamSink *This,
5912        IMFAsyncCallback *pCallback,
5913        IUnknown *punkState);
5914
5915    HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
5916        IMFStreamSink *This,
5917        IMFAsyncResult *pResult,
5918        IMFMediaEvent **ppEvent);
5919
5920    HRESULT (STDMETHODCALLTYPE *QueueEvent)(
5921        IMFStreamSink *This,
5922        MediaEventType met,
5923        REFGUID guidExtendedType,
5924        HRESULT hrStatus,
5925        const PROPVARIANT *pvValue);
5926
5927    /*** IMFStreamSink methods ***/
5928    HRESULT (STDMETHODCALLTYPE *GetMediaSink)(
5929        IMFStreamSink *This,
5930        IMFMediaSink **ppMediaSink);
5931
5932    HRESULT (STDMETHODCALLTYPE *GetIdentifier)(
5933        IMFStreamSink *This,
5934        DWORD *pdwIdentifier);
5935
5936    HRESULT (STDMETHODCALLTYPE *GetMediaTypeHandler)(
5937        IMFStreamSink *This,
5938        IMFMediaTypeHandler **ppHandler);
5939
5940    HRESULT (STDMETHODCALLTYPE *ProcessSample)(
5941        IMFStreamSink *This,
5942        IMFSample *pSample);
5943
5944    HRESULT (STDMETHODCALLTYPE *PlaceMarker)(
5945        IMFStreamSink *This,
5946        MFSTREAMSINK_MARKER_TYPE eMarkerType,
5947        const PROPVARIANT *pvarMarkerValue,
5948        const PROPVARIANT *pvarContextValue);
5949
5950    HRESULT (STDMETHODCALLTYPE *Flush)(
5951        IMFStreamSink *This);
5952
5953    END_INTERFACE
5954} IMFStreamSinkVtbl;
5955
5956interface IMFStreamSink {
5957    CONST_VTBL IMFStreamSinkVtbl* lpVtbl;
5958};
5959
5960#ifdef COBJMACROS
5961#ifndef WIDL_C_INLINE_WRAPPERS
5962/*** IUnknown methods ***/
5963#define IMFStreamSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5964#define IMFStreamSink_AddRef(This) (This)->lpVtbl->AddRef(This)
5965#define IMFStreamSink_Release(This) (This)->lpVtbl->Release(This)
5966/*** IMFMediaEventGenerator methods ***/
5967#define IMFStreamSink_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
5968#define IMFStreamSink_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
5969#define IMFStreamSink_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
5970#define IMFStreamSink_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
5971/*** IMFStreamSink methods ***/
5972#define IMFStreamSink_GetMediaSink(This,ppMediaSink) (This)->lpVtbl->GetMediaSink(This,ppMediaSink)
5973#define IMFStreamSink_GetIdentifier(This,pdwIdentifier) (This)->lpVtbl->GetIdentifier(This,pdwIdentifier)
5974#define IMFStreamSink_GetMediaTypeHandler(This,ppHandler) (This)->lpVtbl->GetMediaTypeHandler(This,ppHandler)
5975#define IMFStreamSink_ProcessSample(This,pSample) (This)->lpVtbl->ProcessSample(This,pSample)
5976#define IMFStreamSink_PlaceMarker(This,eMarkerType,pvarMarkerValue,pvarContextValue) (This)->lpVtbl->PlaceMarker(This,eMarkerType,pvarMarkerValue,pvarContextValue)
5977#define IMFStreamSink_Flush(This) (This)->lpVtbl->Flush(This)
5978#else
5979/*** IUnknown methods ***/
5980static inline HRESULT IMFStreamSink_QueryInterface(IMFStreamSink* This,REFIID riid,void **ppvObject) {
5981    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5982}
5983static inline ULONG IMFStreamSink_AddRef(IMFStreamSink* This) {
5984    return This->lpVtbl->AddRef(This);
5985}
5986static inline ULONG IMFStreamSink_Release(IMFStreamSink* This) {
5987    return This->lpVtbl->Release(This);
5988}
5989/*** IMFMediaEventGenerator methods ***/
5990static inline HRESULT IMFStreamSink_GetEvent(IMFStreamSink* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
5991    return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
5992}
5993static inline HRESULT IMFStreamSink_BeginGetEvent(IMFStreamSink* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
5994    return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
5995}
5996static inline HRESULT IMFStreamSink_EndGetEvent(IMFStreamSink* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
5997    return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
5998}
5999static inline HRESULT IMFStreamSink_QueueEvent(IMFStreamSink* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
6000    return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
6001}
6002/*** IMFStreamSink methods ***/
6003static inline HRESULT IMFStreamSink_GetMediaSink(IMFStreamSink* This,IMFMediaSink **ppMediaSink) {
6004    return This->lpVtbl->GetMediaSink(This,ppMediaSink);
6005}
6006static inline HRESULT IMFStreamSink_GetIdentifier(IMFStreamSink* This,DWORD *pdwIdentifier) {
6007    return This->lpVtbl->GetIdentifier(This,pdwIdentifier);
6008}
6009static inline HRESULT IMFStreamSink_GetMediaTypeHandler(IMFStreamSink* This,IMFMediaTypeHandler **ppHandler) {
6010    return This->lpVtbl->GetMediaTypeHandler(This,ppHandler);
6011}
6012static inline HRESULT IMFStreamSink_ProcessSample(IMFStreamSink* This,IMFSample *pSample) {
6013    return This->lpVtbl->ProcessSample(This,pSample);
6014}
6015static inline HRESULT IMFStreamSink_PlaceMarker(IMFStreamSink* This,MFSTREAMSINK_MARKER_TYPE eMarkerType,const PROPVARIANT *pvarMarkerValue,const PROPVARIANT *pvarContextValue) {
6016    return This->lpVtbl->PlaceMarker(This,eMarkerType,pvarMarkerValue,pvarContextValue);
6017}
6018static inline HRESULT IMFStreamSink_Flush(IMFStreamSink* This) {
6019    return This->lpVtbl->Flush(This);
6020}
6021#endif
6022#endif
6023
6024#endif
6025
6026
6027#endif  /* __IMFStreamSink_INTERFACE_DEFINED__ */
6028
6029/*****************************************************************************
6030 * IMFTimer interface
6031 */
6032#ifndef __IMFTimer_INTERFACE_DEFINED__
6033#define __IMFTimer_INTERFACE_DEFINED__
6034
6035DEFINE_GUID(IID_IMFTimer, 0xe56e4cbd, 0x8f70, 0x49d8, 0xa0,0xf8, 0xed,0xb3,0xd6,0xab,0x9b,0xf2);
6036#if defined(__cplusplus) && !defined(CINTERFACE)
6037MIDL_INTERFACE("e56e4cbd-8f70-49d8-a0f8-edb3d6ab9bf2")
6038IMFTimer : public IUnknown
6039{
6040    virtual HRESULT STDMETHODCALLTYPE SetTimer(
6041        DWORD dwFlags,
6042        LONGLONG llClockTime,
6043        IMFAsyncCallback *pCallback,
6044        IUnknown *punkState,
6045        IUnknown **ppunkKey) = 0;
6046
6047    virtual HRESULT STDMETHODCALLTYPE CancelTimer(
6048        IUnknown *punkKey) = 0;
6049
6050};
6051#ifdef __CRT_UUID_DECL
6052__CRT_UUID_DECL(IMFTimer, 0xe56e4cbd, 0x8f70, 0x49d8, 0xa0,0xf8, 0xed,0xb3,0xd6,0xab,0x9b,0xf2)
6053#endif
6054#else
6055typedef struct IMFTimerVtbl {
6056    BEGIN_INTERFACE
6057
6058    /*** IUnknown methods ***/
6059    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6060        IMFTimer *This,
6061        REFIID riid,
6062        void **ppvObject);
6063
6064    ULONG (STDMETHODCALLTYPE *AddRef)(
6065        IMFTimer *This);
6066
6067    ULONG (STDMETHODCALLTYPE *Release)(
6068        IMFTimer *This);
6069
6070    /*** IMFTimer methods ***/
6071    HRESULT (STDMETHODCALLTYPE *SetTimer)(
6072        IMFTimer *This,
6073        DWORD dwFlags,
6074        LONGLONG llClockTime,
6075        IMFAsyncCallback *pCallback,
6076        IUnknown *punkState,
6077        IUnknown **ppunkKey);
6078
6079    HRESULT (STDMETHODCALLTYPE *CancelTimer)(
6080        IMFTimer *This,
6081        IUnknown *punkKey);
6082
6083    END_INTERFACE
6084} IMFTimerVtbl;
6085
6086interface IMFTimer {
6087    CONST_VTBL IMFTimerVtbl* lpVtbl;
6088};
6089
6090#ifdef COBJMACROS
6091#ifndef WIDL_C_INLINE_WRAPPERS
6092/*** IUnknown methods ***/
6093#define IMFTimer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6094#define IMFTimer_AddRef(This) (This)->lpVtbl->AddRef(This)
6095#define IMFTimer_Release(This) (This)->lpVtbl->Release(This)
6096/*** IMFTimer methods ***/
6097#define IMFTimer_SetTimer(This,dwFlags,llClockTime,pCallback,punkState,ppunkKey) (This)->lpVtbl->SetTimer(This,dwFlags,llClockTime,pCallback,punkState,ppunkKey)
6098#define IMFTimer_CancelTimer(This,punkKey) (This)->lpVtbl->CancelTimer(This,punkKey)
6099#else
6100/*** IUnknown methods ***/
6101static inline HRESULT IMFTimer_QueryInterface(IMFTimer* This,REFIID riid,void **ppvObject) {
6102    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6103}
6104static inline ULONG IMFTimer_AddRef(IMFTimer* This) {
6105    return This->lpVtbl->AddRef(This);
6106}
6107static inline ULONG IMFTimer_Release(IMFTimer* This) {
6108    return This->lpVtbl->Release(This);
6109}
6110/*** IMFTimer methods ***/
6111static inline HRESULT IMFTimer_SetTimer(IMFTimer* This,DWORD dwFlags,LONGLONG llClockTime,IMFAsyncCallback *pCallback,IUnknown *punkState,IUnknown **ppunkKey) {
6112    return This->lpVtbl->SetTimer(This,dwFlags,llClockTime,pCallback,punkState,ppunkKey);
6113}
6114static inline HRESULT IMFTimer_CancelTimer(IMFTimer* This,IUnknown *punkKey) {
6115    return This->lpVtbl->CancelTimer(This,punkKey);
6116}
6117#endif
6118#endif
6119
6120#endif
6121
6122
6123#endif  /* __IMFTimer_INTERFACE_DEFINED__ */
6124
6125/*****************************************************************************
6126 * IMFTopoLoader interface
6127 */
6128#ifndef __IMFTopoLoader_INTERFACE_DEFINED__
6129#define __IMFTopoLoader_INTERFACE_DEFINED__
6130
6131DEFINE_GUID(IID_IMFTopoLoader, 0xde9a6157, 0xf660, 0x4643, 0xb5,0x6a, 0xdf,0x9f,0x79,0x98,0xc7,0xcd);
6132#if defined(__cplusplus) && !defined(CINTERFACE)
6133MIDL_INTERFACE("de9a6157-f660-4643-b56a-df9f7998c7cd")
6134IMFTopoLoader : public IUnknown
6135{
6136    virtual HRESULT STDMETHODCALLTYPE Load(
6137        IMFTopology *pInputTopo,
6138        IMFTopology **ppOutputTopo,
6139        IMFTopology *pCurrentTopo) = 0;
6140
6141};
6142#ifdef __CRT_UUID_DECL
6143__CRT_UUID_DECL(IMFTopoLoader, 0xde9a6157, 0xf660, 0x4643, 0xb5,0x6a, 0xdf,0x9f,0x79,0x98,0xc7,0xcd)
6144#endif
6145#else
6146typedef struct IMFTopoLoaderVtbl {
6147    BEGIN_INTERFACE
6148
6149    /*** IUnknown methods ***/
6150    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6151        IMFTopoLoader *This,
6152        REFIID riid,
6153        void **ppvObject);
6154
6155    ULONG (STDMETHODCALLTYPE *AddRef)(
6156        IMFTopoLoader *This);
6157
6158    ULONG (STDMETHODCALLTYPE *Release)(
6159        IMFTopoLoader *This);
6160
6161    /*** IMFTopoLoader methods ***/
6162    HRESULT (STDMETHODCALLTYPE *Load)(
6163        IMFTopoLoader *This,
6164        IMFTopology *pInputTopo,
6165        IMFTopology **ppOutputTopo,
6166        IMFTopology *pCurrentTopo);
6167
6168    END_INTERFACE
6169} IMFTopoLoaderVtbl;
6170
6171interface IMFTopoLoader {
6172    CONST_VTBL IMFTopoLoaderVtbl* lpVtbl;
6173};
6174
6175#ifdef COBJMACROS
6176#ifndef WIDL_C_INLINE_WRAPPERS
6177/*** IUnknown methods ***/
6178#define IMFTopoLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6179#define IMFTopoLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
6180#define IMFTopoLoader_Release(This) (This)->lpVtbl->Release(This)
6181/*** IMFTopoLoader methods ***/
6182#define IMFTopoLoader_Load(This,pInputTopo,ppOutputTopo,pCurrentTopo) (This)->lpVtbl->Load(This,pInputTopo,ppOutputTopo,pCurrentTopo)
6183#else
6184/*** IUnknown methods ***/
6185static inline HRESULT IMFTopoLoader_QueryInterface(IMFTopoLoader* This,REFIID riid,void **ppvObject) {
6186    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6187}
6188static inline ULONG IMFTopoLoader_AddRef(IMFTopoLoader* This) {
6189    return This->lpVtbl->AddRef(This);
6190}
6191static inline ULONG IMFTopoLoader_Release(IMFTopoLoader* This) {
6192    return This->lpVtbl->Release(This);
6193}
6194/*** IMFTopoLoader methods ***/
6195static inline HRESULT IMFTopoLoader_Load(IMFTopoLoader* This,IMFTopology *pInputTopo,IMFTopology **ppOutputTopo,IMFTopology *pCurrentTopo) {
6196    return This->lpVtbl->Load(This,pInputTopo,ppOutputTopo,pCurrentTopo);
6197}
6198#endif
6199#endif
6200
6201#endif
6202
6203
6204#endif  /* __IMFTopoLoader_INTERFACE_DEFINED__ */
6205
6206/*****************************************************************************
6207 * IMFVideoSampleAllocator interface
6208 */
6209#ifndef __IMFVideoSampleAllocator_INTERFACE_DEFINED__
6210#define __IMFVideoSampleAllocator_INTERFACE_DEFINED__
6211
6212DEFINE_GUID(IID_IMFVideoSampleAllocator, 0x86cbc910, 0xe533, 0x4751, 0x8e,0x3b, 0xf1,0x9b,0x5b,0x80,0x6a,0x03);
6213#if defined(__cplusplus) && !defined(CINTERFACE)
6214MIDL_INTERFACE("86cbc910-e533-4751-8e3b-f19b5b806a03")
6215IMFVideoSampleAllocator : public IUnknown
6216{
6217    virtual HRESULT STDMETHODCALLTYPE SetDirectXManager(
6218        IUnknown *pManager) = 0;
6219
6220    virtual HRESULT STDMETHODCALLTYPE UninitializeSampleAllocator(
6221        ) = 0;
6222
6223    virtual HRESULT STDMETHODCALLTYPE InitializeSampleAllocator(
6224        DWORD cRequestedFrames,
6225        IMFMediaType *pMediaType) = 0;
6226
6227    virtual HRESULT STDMETHODCALLTYPE AllocateSample(
6228        IMFSample **ppSample) = 0;
6229
6230};
6231#ifdef __CRT_UUID_DECL
6232__CRT_UUID_DECL(IMFVideoSampleAllocator, 0x86cbc910, 0xe533, 0x4751, 0x8e,0x3b, 0xf1,0x9b,0x5b,0x80,0x6a,0x03)
6233#endif
6234#else
6235typedef struct IMFVideoSampleAllocatorVtbl {
6236    BEGIN_INTERFACE
6237
6238    /*** IUnknown methods ***/
6239    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6240        IMFVideoSampleAllocator *This,
6241        REFIID riid,
6242        void **ppvObject);
6243
6244    ULONG (STDMETHODCALLTYPE *AddRef)(
6245        IMFVideoSampleAllocator *This);
6246
6247    ULONG (STDMETHODCALLTYPE *Release)(
6248        IMFVideoSampleAllocator *This);
6249
6250    /*** IMFVideoSampleAllocator methods ***/
6251    HRESULT (STDMETHODCALLTYPE *SetDirectXManager)(
6252        IMFVideoSampleAllocator *This,
6253        IUnknown *pManager);
6254
6255    HRESULT (STDMETHODCALLTYPE *UninitializeSampleAllocator)(
6256        IMFVideoSampleAllocator *This);
6257
6258    HRESULT (STDMETHODCALLTYPE *InitializeSampleAllocator)(
6259        IMFVideoSampleAllocator *This,
6260        DWORD cRequestedFrames,
6261        IMFMediaType *pMediaType);
6262
6263    HRESULT (STDMETHODCALLTYPE *AllocateSample)(
6264        IMFVideoSampleAllocator *This,
6265        IMFSample **ppSample);
6266
6267    END_INTERFACE
6268} IMFVideoSampleAllocatorVtbl;
6269
6270interface IMFVideoSampleAllocator {
6271    CONST_VTBL IMFVideoSampleAllocatorVtbl* lpVtbl;
6272};
6273
6274#ifdef COBJMACROS
6275#ifndef WIDL_C_INLINE_WRAPPERS
6276/*** IUnknown methods ***/
6277#define IMFVideoSampleAllocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6278#define IMFVideoSampleAllocator_AddRef(This) (This)->lpVtbl->AddRef(This)
6279#define IMFVideoSampleAllocator_Release(This) (This)->lpVtbl->Release(This)
6280/*** IMFVideoSampleAllocator methods ***/
6281#define IMFVideoSampleAllocator_SetDirectXManager(This,pManager) (This)->lpVtbl->SetDirectXManager(This,pManager)
6282#define IMFVideoSampleAllocator_UninitializeSampleAllocator(This) (This)->lpVtbl->UninitializeSampleAllocator(This)
6283#define IMFVideoSampleAllocator_InitializeSampleAllocator(This,cRequestedFrames,pMediaType) (This)->lpVtbl->InitializeSampleAllocator(This,cRequestedFrames,pMediaType)
6284#define IMFVideoSampleAllocator_AllocateSample(This,ppSample) (This)->lpVtbl->AllocateSample(This,ppSample)
6285#else
6286/*** IUnknown methods ***/
6287static inline HRESULT IMFVideoSampleAllocator_QueryInterface(IMFVideoSampleAllocator* This,REFIID riid,void **ppvObject) {
6288    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6289}
6290static inline ULONG IMFVideoSampleAllocator_AddRef(IMFVideoSampleAllocator* This) {
6291    return This->lpVtbl->AddRef(This);
6292}
6293static inline ULONG IMFVideoSampleAllocator_Release(IMFVideoSampleAllocator* This) {
6294    return This->lpVtbl->Release(This);
6295}
6296/*** IMFVideoSampleAllocator methods ***/
6297static inline HRESULT IMFVideoSampleAllocator_SetDirectXManager(IMFVideoSampleAllocator* This,IUnknown *pManager) {
6298    return This->lpVtbl->SetDirectXManager(This,pManager);
6299}
6300static inline HRESULT IMFVideoSampleAllocator_UninitializeSampleAllocator(IMFVideoSampleAllocator* This) {
6301    return This->lpVtbl->UninitializeSampleAllocator(This);
6302}
6303static inline HRESULT IMFVideoSampleAllocator_InitializeSampleAllocator(IMFVideoSampleAllocator* This,DWORD cRequestedFrames,IMFMediaType *pMediaType) {
6304    return This->lpVtbl->InitializeSampleAllocator(This,cRequestedFrames,pMediaType);
6305}
6306static inline HRESULT IMFVideoSampleAllocator_AllocateSample(IMFVideoSampleAllocator* This,IMFSample **ppSample) {
6307    return This->lpVtbl->AllocateSample(This,ppSample);
6308}
6309#endif
6310#endif
6311
6312#endif
6313
6314
6315#endif  /* __IMFVideoSampleAllocator_INTERFACE_DEFINED__ */
6316
6317#if WINVER >= _WIN32_WINNT_WIN7
6318/*****************************************************************************
6319 * IMFVideoSampleAllocatorNotify interface
6320 */
6321#ifndef __IMFVideoSampleAllocatorNotify_INTERFACE_DEFINED__
6322#define __IMFVideoSampleAllocatorNotify_INTERFACE_DEFINED__
6323
6324DEFINE_GUID(IID_IMFVideoSampleAllocatorNotify, 0xa792cdbe, 0xc374, 0x4e89, 0x83,0x35, 0x27,0x8e,0x7b,0x99,0x56,0xa4);
6325#if defined(__cplusplus) && !defined(CINTERFACE)
6326MIDL_INTERFACE("a792cdbe-c374-4e89-8335-278e7b9956a4")
6327IMFVideoSampleAllocatorNotify : public IUnknown
6328{
6329    virtual HRESULT STDMETHODCALLTYPE NotifyRelease(
6330        ) = 0;
6331
6332};
6333#ifdef __CRT_UUID_DECL
6334__CRT_UUID_DECL(IMFVideoSampleAllocatorNotify, 0xa792cdbe, 0xc374, 0x4e89, 0x83,0x35, 0x27,0x8e,0x7b,0x99,0x56,0xa4)
6335#endif
6336#else
6337typedef struct IMFVideoSampleAllocatorNotifyVtbl {
6338    BEGIN_INTERFACE
6339
6340    /*** IUnknown methods ***/
6341    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6342        IMFVideoSampleAllocatorNotify *This,
6343        REFIID riid,
6344        void **ppvObject);
6345
6346    ULONG (STDMETHODCALLTYPE *AddRef)(
6347        IMFVideoSampleAllocatorNotify *This);
6348
6349    ULONG (STDMETHODCALLTYPE *Release)(
6350        IMFVideoSampleAllocatorNotify *This);
6351
6352    /*** IMFVideoSampleAllocatorNotify methods ***/
6353    HRESULT (STDMETHODCALLTYPE *NotifyRelease)(
6354        IMFVideoSampleAllocatorNotify *This);
6355
6356    END_INTERFACE
6357} IMFVideoSampleAllocatorNotifyVtbl;
6358
6359interface IMFVideoSampleAllocatorNotify {
6360    CONST_VTBL IMFVideoSampleAllocatorNotifyVtbl* lpVtbl;
6361};
6362
6363#ifdef COBJMACROS
6364#ifndef WIDL_C_INLINE_WRAPPERS
6365/*** IUnknown methods ***/
6366#define IMFVideoSampleAllocatorNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6367#define IMFVideoSampleAllocatorNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
6368#define IMFVideoSampleAllocatorNotify_Release(This) (This)->lpVtbl->Release(This)
6369/*** IMFVideoSampleAllocatorNotify methods ***/
6370#define IMFVideoSampleAllocatorNotify_NotifyRelease(This) (This)->lpVtbl->NotifyRelease(This)
6371#else
6372/*** IUnknown methods ***/
6373static inline HRESULT IMFVideoSampleAllocatorNotify_QueryInterface(IMFVideoSampleAllocatorNotify* This,REFIID riid,void **ppvObject) {
6374    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6375}
6376static inline ULONG IMFVideoSampleAllocatorNotify_AddRef(IMFVideoSampleAllocatorNotify* This) {
6377    return This->lpVtbl->AddRef(This);
6378}
6379static inline ULONG IMFVideoSampleAllocatorNotify_Release(IMFVideoSampleAllocatorNotify* This) {
6380    return This->lpVtbl->Release(This);
6381}
6382/*** IMFVideoSampleAllocatorNotify methods ***/
6383static inline HRESULT IMFVideoSampleAllocatorNotify_NotifyRelease(IMFVideoSampleAllocatorNotify* This) {
6384    return This->lpVtbl->NotifyRelease(This);
6385}
6386#endif
6387#endif
6388
6389#endif
6390
6391
6392#endif  /* __IMFVideoSampleAllocatorNotify_INTERFACE_DEFINED__ */
6393
6394/*****************************************************************************
6395 * IMFVideoSampleAllocatorNotifyEx interface
6396 */
6397#ifndef __IMFVideoSampleAllocatorNotifyEx_INTERFACE_DEFINED__
6398#define __IMFVideoSampleAllocatorNotifyEx_INTERFACE_DEFINED__
6399
6400DEFINE_GUID(IID_IMFVideoSampleAllocatorNotifyEx, 0x3978aa1a, 0x6d5b, 0x4b7f, 0xa3,0x40, 0x90,0x89,0x91,0x89,0xae,0x34);
6401#if defined(__cplusplus) && !defined(CINTERFACE)
6402MIDL_INTERFACE("3978aa1a-6d5b-4b7f-a340-90899189ae34")
6403IMFVideoSampleAllocatorNotifyEx : public IMFVideoSampleAllocatorNotify
6404{
6405    virtual HRESULT STDMETHODCALLTYPE NotifyPrune(
6406        IMFSample *ppSample) = 0;
6407
6408};
6409#ifdef __CRT_UUID_DECL
6410__CRT_UUID_DECL(IMFVideoSampleAllocatorNotifyEx, 0x3978aa1a, 0x6d5b, 0x4b7f, 0xa3,0x40, 0x90,0x89,0x91,0x89,0xae,0x34)
6411#endif
6412#else
6413typedef struct IMFVideoSampleAllocatorNotifyExVtbl {
6414    BEGIN_INTERFACE
6415
6416    /*** IUnknown methods ***/
6417    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6418        IMFVideoSampleAllocatorNotifyEx *This,
6419        REFIID riid,
6420        void **ppvObject);
6421
6422    ULONG (STDMETHODCALLTYPE *AddRef)(
6423        IMFVideoSampleAllocatorNotifyEx *This);
6424
6425    ULONG (STDMETHODCALLTYPE *Release)(
6426        IMFVideoSampleAllocatorNotifyEx *This);
6427
6428    /*** IMFVideoSampleAllocatorNotify methods ***/
6429    HRESULT (STDMETHODCALLTYPE *NotifyRelease)(
6430        IMFVideoSampleAllocatorNotifyEx *This);
6431
6432    /*** IMFVideoSampleAllocatorNotifyEx methods ***/
6433    HRESULT (STDMETHODCALLTYPE *NotifyPrune)(
6434        IMFVideoSampleAllocatorNotifyEx *This,
6435        IMFSample *ppSample);
6436
6437    END_INTERFACE
6438} IMFVideoSampleAllocatorNotifyExVtbl;
6439
6440interface IMFVideoSampleAllocatorNotifyEx {
6441    CONST_VTBL IMFVideoSampleAllocatorNotifyExVtbl* lpVtbl;
6442};
6443
6444#ifdef COBJMACROS
6445#ifndef WIDL_C_INLINE_WRAPPERS
6446/*** IUnknown methods ***/
6447#define IMFVideoSampleAllocatorNotifyEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6448#define IMFVideoSampleAllocatorNotifyEx_AddRef(This) (This)->lpVtbl->AddRef(This)
6449#define IMFVideoSampleAllocatorNotifyEx_Release(This) (This)->lpVtbl->Release(This)
6450/*** IMFVideoSampleAllocatorNotify methods ***/
6451#define IMFVideoSampleAllocatorNotifyEx_NotifyRelease(This) (This)->lpVtbl->NotifyRelease(This)
6452/*** IMFVideoSampleAllocatorNotifyEx methods ***/
6453#define IMFVideoSampleAllocatorNotifyEx_NotifyPrune(This,ppSample) (This)->lpVtbl->NotifyPrune(This,ppSample)
6454#else
6455/*** IUnknown methods ***/
6456static inline HRESULT IMFVideoSampleAllocatorNotifyEx_QueryInterface(IMFVideoSampleAllocatorNotifyEx* This,REFIID riid,void **ppvObject) {
6457    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6458}
6459static inline ULONG IMFVideoSampleAllocatorNotifyEx_AddRef(IMFVideoSampleAllocatorNotifyEx* This) {
6460    return This->lpVtbl->AddRef(This);
6461}
6462static inline ULONG IMFVideoSampleAllocatorNotifyEx_Release(IMFVideoSampleAllocatorNotifyEx* This) {
6463    return This->lpVtbl->Release(This);
6464}
6465/*** IMFVideoSampleAllocatorNotify methods ***/
6466static inline HRESULT IMFVideoSampleAllocatorNotifyEx_NotifyRelease(IMFVideoSampleAllocatorNotifyEx* This) {
6467    return This->lpVtbl->NotifyRelease(This);
6468}
6469/*** IMFVideoSampleAllocatorNotifyEx methods ***/
6470static inline HRESULT IMFVideoSampleAllocatorNotifyEx_NotifyPrune(IMFVideoSampleAllocatorNotifyEx* This,IMFSample *ppSample) {
6471    return This->lpVtbl->NotifyPrune(This,ppSample);
6472}
6473#endif
6474#endif
6475
6476#endif
6477
6478
6479#endif  /* __IMFVideoSampleAllocatorNotifyEx_INTERFACE_DEFINED__ */
6480
6481/*****************************************************************************
6482 * IMFVideoSampleAllocatorCallback interface
6483 */
6484#ifndef __IMFVideoSampleAllocatorCallback_INTERFACE_DEFINED__
6485#define __IMFVideoSampleAllocatorCallback_INTERFACE_DEFINED__
6486
6487DEFINE_GUID(IID_IMFVideoSampleAllocatorCallback, 0x992388b4, 0x3372, 0x4f67, 0x8b,0x6f, 0xc8,0x4c,0x07,0x1f,0x47,0x51);
6488#if defined(__cplusplus) && !defined(CINTERFACE)
6489MIDL_INTERFACE("992388b4-3372-4f67-8b6f-c84c071f4751")
6490IMFVideoSampleAllocatorCallback : public IUnknown
6491{
6492    virtual HRESULT STDMETHODCALLTYPE SetCallback(
6493        IMFVideoSampleAllocatorNotify *pNotify) = 0;
6494
6495    virtual HRESULT STDMETHODCALLTYPE GetFreeSampleCount(
6496        LONG *plSamples) = 0;
6497
6498};
6499#ifdef __CRT_UUID_DECL
6500__CRT_UUID_DECL(IMFVideoSampleAllocatorCallback, 0x992388b4, 0x3372, 0x4f67, 0x8b,0x6f, 0xc8,0x4c,0x07,0x1f,0x47,0x51)
6501#endif
6502#else
6503typedef struct IMFVideoSampleAllocatorCallbackVtbl {
6504    BEGIN_INTERFACE
6505
6506    /*** IUnknown methods ***/
6507    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6508        IMFVideoSampleAllocatorCallback *This,
6509        REFIID riid,
6510        void **ppvObject);
6511
6512    ULONG (STDMETHODCALLTYPE *AddRef)(
6513        IMFVideoSampleAllocatorCallback *This);
6514
6515    ULONG (STDMETHODCALLTYPE *Release)(
6516        IMFVideoSampleAllocatorCallback *This);
6517
6518    /*** IMFVideoSampleAllocatorCallback methods ***/
6519    HRESULT (STDMETHODCALLTYPE *SetCallback)(
6520        IMFVideoSampleAllocatorCallback *This,
6521        IMFVideoSampleAllocatorNotify *pNotify);
6522
6523    HRESULT (STDMETHODCALLTYPE *GetFreeSampleCount)(
6524        IMFVideoSampleAllocatorCallback *This,
6525        LONG *plSamples);
6526
6527    END_INTERFACE
6528} IMFVideoSampleAllocatorCallbackVtbl;
6529
6530interface IMFVideoSampleAllocatorCallback {
6531    CONST_VTBL IMFVideoSampleAllocatorCallbackVtbl* lpVtbl;
6532};
6533
6534#ifdef COBJMACROS
6535#ifndef WIDL_C_INLINE_WRAPPERS
6536/*** IUnknown methods ***/
6537#define IMFVideoSampleAllocatorCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6538#define IMFVideoSampleAllocatorCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
6539#define IMFVideoSampleAllocatorCallback_Release(This) (This)->lpVtbl->Release(This)
6540/*** IMFVideoSampleAllocatorCallback methods ***/
6541#define IMFVideoSampleAllocatorCallback_SetCallback(This,pNotify) (This)->lpVtbl->SetCallback(This,pNotify)
6542#define IMFVideoSampleAllocatorCallback_GetFreeSampleCount(This,plSamples) (This)->lpVtbl->GetFreeSampleCount(This,plSamples)
6543#else
6544/*** IUnknown methods ***/
6545static inline HRESULT IMFVideoSampleAllocatorCallback_QueryInterface(IMFVideoSampleAllocatorCallback* This,REFIID riid,void **ppvObject) {
6546    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6547}
6548static inline ULONG IMFVideoSampleAllocatorCallback_AddRef(IMFVideoSampleAllocatorCallback* This) {
6549    return This->lpVtbl->AddRef(This);
6550}
6551static inline ULONG IMFVideoSampleAllocatorCallback_Release(IMFVideoSampleAllocatorCallback* This) {
6552    return This->lpVtbl->Release(This);
6553}
6554/*** IMFVideoSampleAllocatorCallback methods ***/
6555static inline HRESULT IMFVideoSampleAllocatorCallback_SetCallback(IMFVideoSampleAllocatorCallback* This,IMFVideoSampleAllocatorNotify *pNotify) {
6556    return This->lpVtbl->SetCallback(This,pNotify);
6557}
6558static inline HRESULT IMFVideoSampleAllocatorCallback_GetFreeSampleCount(IMFVideoSampleAllocatorCallback* This,LONG *plSamples) {
6559    return This->lpVtbl->GetFreeSampleCount(This,plSamples);
6560}
6561#endif
6562#endif
6563
6564#endif
6565
6566
6567#endif  /* __IMFVideoSampleAllocatorCallback_INTERFACE_DEFINED__ */
6568
6569/*****************************************************************************
6570 * IMFVideoSampleAllocatorEx interface
6571 */
6572#ifndef __IMFVideoSampleAllocatorEx_INTERFACE_DEFINED__
6573#define __IMFVideoSampleAllocatorEx_INTERFACE_DEFINED__
6574
6575DEFINE_GUID(IID_IMFVideoSampleAllocatorEx, 0x545b3a48, 0x3283, 0x4f62, 0x86,0x6f, 0xa6,0x2d,0x8f,0x59,0x8f,0x9f);
6576#if defined(__cplusplus) && !defined(CINTERFACE)
6577MIDL_INTERFACE("545b3a48-3283-4f62-866f-a62d8f598f9f")
6578IMFVideoSampleAllocatorEx : public IMFVideoSampleAllocator
6579{
6580    virtual HRESULT STDMETHODCALLTYPE InitializeSampleAllocatorEx(
6581        DWORD cInitialSamples,
6582        DWORD cMaximumSamples,
6583        IMFAttributes *pAttributes,
6584        IMFMediaType *pMediaType) = 0;
6585
6586};
6587#ifdef __CRT_UUID_DECL
6588__CRT_UUID_DECL(IMFVideoSampleAllocatorEx, 0x545b3a48, 0x3283, 0x4f62, 0x86,0x6f, 0xa6,0x2d,0x8f,0x59,0x8f,0x9f)
6589#endif
6590#else
6591typedef struct IMFVideoSampleAllocatorExVtbl {
6592    BEGIN_INTERFACE
6593
6594    /*** IUnknown methods ***/
6595    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6596        IMFVideoSampleAllocatorEx *This,
6597        REFIID riid,
6598        void **ppvObject);
6599
6600    ULONG (STDMETHODCALLTYPE *AddRef)(
6601        IMFVideoSampleAllocatorEx *This);
6602
6603    ULONG (STDMETHODCALLTYPE *Release)(
6604        IMFVideoSampleAllocatorEx *This);
6605
6606    /*** IMFVideoSampleAllocator methods ***/
6607    HRESULT (STDMETHODCALLTYPE *SetDirectXManager)(
6608        IMFVideoSampleAllocatorEx *This,
6609        IUnknown *pManager);
6610
6611    HRESULT (STDMETHODCALLTYPE *UninitializeSampleAllocator)(
6612        IMFVideoSampleAllocatorEx *This);
6613
6614    HRESULT (STDMETHODCALLTYPE *InitializeSampleAllocator)(
6615        IMFVideoSampleAllocatorEx *This,
6616        DWORD cRequestedFrames,
6617        IMFMediaType *pMediaType);
6618
6619    HRESULT (STDMETHODCALLTYPE *AllocateSample)(
6620        IMFVideoSampleAllocatorEx *This,
6621        IMFSample **ppSample);
6622
6623    /*** IMFVideoSampleAllocatorEx methods ***/
6624    HRESULT (STDMETHODCALLTYPE *InitializeSampleAllocatorEx)(
6625        IMFVideoSampleAllocatorEx *This,
6626        DWORD cInitialSamples,
6627        DWORD cMaximumSamples,
6628        IMFAttributes *pAttributes,
6629        IMFMediaType *pMediaType);
6630
6631    END_INTERFACE
6632} IMFVideoSampleAllocatorExVtbl;
6633
6634interface IMFVideoSampleAllocatorEx {
6635    CONST_VTBL IMFVideoSampleAllocatorExVtbl* lpVtbl;
6636};
6637
6638#ifdef COBJMACROS
6639#ifndef WIDL_C_INLINE_WRAPPERS
6640/*** IUnknown methods ***/
6641#define IMFVideoSampleAllocatorEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6642#define IMFVideoSampleAllocatorEx_AddRef(This) (This)->lpVtbl->AddRef(This)
6643#define IMFVideoSampleAllocatorEx_Release(This) (This)->lpVtbl->Release(This)
6644/*** IMFVideoSampleAllocator methods ***/
6645#define IMFVideoSampleAllocatorEx_SetDirectXManager(This,pManager) (This)->lpVtbl->SetDirectXManager(This,pManager)
6646#define IMFVideoSampleAllocatorEx_UninitializeSampleAllocator(This) (This)->lpVtbl->UninitializeSampleAllocator(This)
6647#define IMFVideoSampleAllocatorEx_InitializeSampleAllocator(This,cRequestedFrames,pMediaType) (This)->lpVtbl->InitializeSampleAllocator(This,cRequestedFrames,pMediaType)
6648#define IMFVideoSampleAllocatorEx_AllocateSample(This,ppSample) (This)->lpVtbl->AllocateSample(This,ppSample)
6649/*** IMFVideoSampleAllocatorEx methods ***/
6650#define IMFVideoSampleAllocatorEx_InitializeSampleAllocatorEx(This,cInitialSamples,cMaximumSamples,pAttributes,pMediaType) (This)->lpVtbl->InitializeSampleAllocatorEx(This,cInitialSamples,cMaximumSamples,pAttributes,pMediaType)
6651#else
6652/*** IUnknown methods ***/
6653static inline HRESULT IMFVideoSampleAllocatorEx_QueryInterface(IMFVideoSampleAllocatorEx* This,REFIID riid,void **ppvObject) {
6654    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6655}
6656static inline ULONG IMFVideoSampleAllocatorEx_AddRef(IMFVideoSampleAllocatorEx* This) {
6657    return This->lpVtbl->AddRef(This);
6658}
6659static inline ULONG IMFVideoSampleAllocatorEx_Release(IMFVideoSampleAllocatorEx* This) {
6660    return This->lpVtbl->Release(This);
6661}
6662/*** IMFVideoSampleAllocator methods ***/
6663static inline HRESULT IMFVideoSampleAllocatorEx_SetDirectXManager(IMFVideoSampleAllocatorEx* This,IUnknown *pManager) {
6664    return This->lpVtbl->SetDirectXManager(This,pManager);
6665}
6666static inline HRESULT IMFVideoSampleAllocatorEx_UninitializeSampleAllocator(IMFVideoSampleAllocatorEx* This) {
6667    return This->lpVtbl->UninitializeSampleAllocator(This);
6668}
6669static inline HRESULT IMFVideoSampleAllocatorEx_InitializeSampleAllocator(IMFVideoSampleAllocatorEx* This,DWORD cRequestedFrames,IMFMediaType *pMediaType) {
6670    return This->lpVtbl->InitializeSampleAllocator(This,cRequestedFrames,pMediaType);
6671}
6672static inline HRESULT IMFVideoSampleAllocatorEx_AllocateSample(IMFVideoSampleAllocatorEx* This,IMFSample **ppSample) {
6673    return This->lpVtbl->AllocateSample(This,ppSample);
6674}
6675/*** IMFVideoSampleAllocatorEx methods ***/
6676static inline HRESULT IMFVideoSampleAllocatorEx_InitializeSampleAllocatorEx(IMFVideoSampleAllocatorEx* This,DWORD cInitialSamples,DWORD cMaximumSamples,IMFAttributes *pAttributes,IMFMediaType *pMediaType) {
6677    return This->lpVtbl->InitializeSampleAllocatorEx(This,cInitialSamples,cMaximumSamples,pAttributes,pMediaType);
6678}
6679#endif
6680#endif
6681
6682#endif
6683
6684
6685#endif  /* __IMFVideoSampleAllocatorEx_INTERFACE_DEFINED__ */
6686
6687#endif /* WINVER >= _WIN32_WINNT_WIN7 */
6688#if WINVER >= _WIN32_WINNT_WIN8
6689typedef enum _MF_VIDEO_PROCESSOR_ROTATION {
6690    ROTATION_NONE = 0,
6691    ROTATION_NORMAL = 1
6692} MF_VIDEO_PROCESSOR_ROTATION;
6693typedef enum _MF_VIDEO_PROCESSOR_MIRROR {
6694    MIRROR_NONE = 0,
6695    MIRROR_HORIZONTAL = 1,
6696    MIRROR_VERTICAL = 2
6697} MF_VIDEO_PROCESSOR_MIRROR;
6698/*****************************************************************************
6699 * IMFVideoProcessorControl interface
6700 */
6701#ifndef __IMFVideoProcessorControl_INTERFACE_DEFINED__
6702#define __IMFVideoProcessorControl_INTERFACE_DEFINED__
6703
6704DEFINE_GUID(IID_IMFVideoProcessorControl, 0xa3f675d5, 0x6119, 0x4f7f, 0xa1,0x00, 0x1d,0x8b,0x28,0x0f,0x0e,0xfb);
6705#if defined(__cplusplus) && !defined(CINTERFACE)
6706MIDL_INTERFACE("a3f675d5-6119-4f7f-a100-1d8b280f0efb")
6707IMFVideoProcessorControl : public IUnknown
6708{
6709    virtual HRESULT STDMETHODCALLTYPE SetBorderColor(
6710        MFARGB *pBorderColor) = 0;
6711
6712    virtual HRESULT STDMETHODCALLTYPE SetSourceRectangle(
6713        RECT *pSrcRect) = 0;
6714
6715    virtual HRESULT STDMETHODCALLTYPE SetDestinationRectangle(
6716        RECT *pDstRect) = 0;
6717
6718    virtual HRESULT STDMETHODCALLTYPE SetMirror(
6719        MF_VIDEO_PROCESSOR_MIRROR eMirror) = 0;
6720
6721    virtual HRESULT STDMETHODCALLTYPE SetRotation(
6722        MF_VIDEO_PROCESSOR_ROTATION eRotation) = 0;
6723
6724    virtual HRESULT STDMETHODCALLTYPE SetConstrictionSize(
6725        SIZE *pConstrictionSize) = 0;
6726
6727};
6728#ifdef __CRT_UUID_DECL
6729__CRT_UUID_DECL(IMFVideoProcessorControl, 0xa3f675d5, 0x6119, 0x4f7f, 0xa1,0x00, 0x1d,0x8b,0x28,0x0f,0x0e,0xfb)
6730#endif
6731#else
6732typedef struct IMFVideoProcessorControlVtbl {
6733    BEGIN_INTERFACE
6734
6735    /*** IUnknown methods ***/
6736    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6737        IMFVideoProcessorControl *This,
6738        REFIID riid,
6739        void **ppvObject);
6740
6741    ULONG (STDMETHODCALLTYPE *AddRef)(
6742        IMFVideoProcessorControl *This);
6743
6744    ULONG (STDMETHODCALLTYPE *Release)(
6745        IMFVideoProcessorControl *This);
6746
6747    /*** IMFVideoProcessorControl methods ***/
6748    HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
6749        IMFVideoProcessorControl *This,
6750        MFARGB *pBorderColor);
6751
6752    HRESULT (STDMETHODCALLTYPE *SetSourceRectangle)(
6753        IMFVideoProcessorControl *This,
6754        RECT *pSrcRect);
6755
6756    HRESULT (STDMETHODCALLTYPE *SetDestinationRectangle)(
6757        IMFVideoProcessorControl *This,
6758        RECT *pDstRect);
6759
6760    HRESULT (STDMETHODCALLTYPE *SetMirror)(
6761        IMFVideoProcessorControl *This,
6762        MF_VIDEO_PROCESSOR_MIRROR eMirror);
6763
6764    HRESULT (STDMETHODCALLTYPE *SetRotation)(
6765        IMFVideoProcessorControl *This,
6766        MF_VIDEO_PROCESSOR_ROTATION eRotation);
6767
6768    HRESULT (STDMETHODCALLTYPE *SetConstrictionSize)(
6769        IMFVideoProcessorControl *This,
6770        SIZE *pConstrictionSize);
6771
6772    END_INTERFACE
6773} IMFVideoProcessorControlVtbl;
6774
6775interface IMFVideoProcessorControl {
6776    CONST_VTBL IMFVideoProcessorControlVtbl* lpVtbl;
6777};
6778
6779#ifdef COBJMACROS
6780#ifndef WIDL_C_INLINE_WRAPPERS
6781/*** IUnknown methods ***/
6782#define IMFVideoProcessorControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6783#define IMFVideoProcessorControl_AddRef(This) (This)->lpVtbl->AddRef(This)
6784#define IMFVideoProcessorControl_Release(This) (This)->lpVtbl->Release(This)
6785/*** IMFVideoProcessorControl methods ***/
6786#define IMFVideoProcessorControl_SetBorderColor(This,pBorderColor) (This)->lpVtbl->SetBorderColor(This,pBorderColor)
6787#define IMFVideoProcessorControl_SetSourceRectangle(This,pSrcRect) (This)->lpVtbl->SetSourceRectangle(This,pSrcRect)
6788#define IMFVideoProcessorControl_SetDestinationRectangle(This,pDstRect) (This)->lpVtbl->SetDestinationRectangle(This,pDstRect)
6789#define IMFVideoProcessorControl_SetMirror(This,eMirror) (This)->lpVtbl->SetMirror(This,eMirror)
6790#define IMFVideoProcessorControl_SetRotation(This,eRotation) (This)->lpVtbl->SetRotation(This,eRotation)
6791#define IMFVideoProcessorControl_SetConstrictionSize(This,pConstrictionSize) (This)->lpVtbl->SetConstrictionSize(This,pConstrictionSize)
6792#else
6793/*** IUnknown methods ***/
6794static inline HRESULT IMFVideoProcessorControl_QueryInterface(IMFVideoProcessorControl* This,REFIID riid,void **ppvObject) {
6795    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6796}
6797static inline ULONG IMFVideoProcessorControl_AddRef(IMFVideoProcessorControl* This) {
6798    return This->lpVtbl->AddRef(This);
6799}
6800static inline ULONG IMFVideoProcessorControl_Release(IMFVideoProcessorControl* This) {
6801    return This->lpVtbl->Release(This);
6802}
6803/*** IMFVideoProcessorControl methods ***/
6804static inline HRESULT IMFVideoProcessorControl_SetBorderColor(IMFVideoProcessorControl* This,MFARGB *pBorderColor) {
6805    return This->lpVtbl->SetBorderColor(This,pBorderColor);
6806}
6807static inline HRESULT IMFVideoProcessorControl_SetSourceRectangle(IMFVideoProcessorControl* This,RECT *pSrcRect) {
6808    return This->lpVtbl->SetSourceRectangle(This,pSrcRect);
6809}
6810static inline HRESULT IMFVideoProcessorControl_SetDestinationRectangle(IMFVideoProcessorControl* This,RECT *pDstRect) {
6811    return This->lpVtbl->SetDestinationRectangle(This,pDstRect);
6812}
6813static inline HRESULT IMFVideoProcessorControl_SetMirror(IMFVideoProcessorControl* This,MF_VIDEO_PROCESSOR_MIRROR eMirror) {
6814    return This->lpVtbl->SetMirror(This,eMirror);
6815}
6816static inline HRESULT IMFVideoProcessorControl_SetRotation(IMFVideoProcessorControl* This,MF_VIDEO_PROCESSOR_ROTATION eRotation) {
6817    return This->lpVtbl->SetRotation(This,eRotation);
6818}
6819static inline HRESULT IMFVideoProcessorControl_SetConstrictionSize(IMFVideoProcessorControl* This,SIZE *pConstrictionSize) {
6820    return This->lpVtbl->SetConstrictionSize(This,pConstrictionSize);
6821}
6822#endif
6823#endif
6824
6825#endif
6826
6827
6828#endif  /* __IMFVideoProcessorControl_INTERFACE_DEFINED__ */
6829
6830#if WINVER >= _WIN32_WINNT_WINBLUE
6831/*****************************************************************************
6832 * IMFVideoProcessorControl2 interface
6833 */
6834#ifndef __IMFVideoProcessorControl2_INTERFACE_DEFINED__
6835#define __IMFVideoProcessorControl2_INTERFACE_DEFINED__
6836
6837DEFINE_GUID(IID_IMFVideoProcessorControl2, 0xbde633d3, 0xe1dc, 0x4a7f, 0xa6,0x93, 0xbb,0xae,0x39,0x9c,0x4a,0x20);
6838#if defined(__cplusplus) && !defined(CINTERFACE)
6839MIDL_INTERFACE("bde633d3-e1dc-4a7f-a693-bbae399c4a20")
6840IMFVideoProcessorControl2 : public IMFVideoProcessorControl
6841{
6842    virtual HRESULT STDMETHODCALLTYPE SetRotationOverride(
6843        UINT uiRotation) = 0;
6844
6845    virtual HRESULT STDMETHODCALLTYPE EnableHardwareEffects(
6846        WINBOOL fEnabled) = 0;
6847
6848    virtual HRESULT STDMETHODCALLTYPE GetSupportedHardwareEffects(
6849        UINT *puiSupport) = 0;
6850
6851};
6852#ifdef __CRT_UUID_DECL
6853__CRT_UUID_DECL(IMFVideoProcessorControl2, 0xbde633d3, 0xe1dc, 0x4a7f, 0xa6,0x93, 0xbb,0xae,0x39,0x9c,0x4a,0x20)
6854#endif
6855#else
6856typedef struct IMFVideoProcessorControl2Vtbl {
6857    BEGIN_INTERFACE
6858
6859    /*** IUnknown methods ***/
6860    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6861        IMFVideoProcessorControl2 *This,
6862        REFIID riid,
6863        void **ppvObject);
6864
6865    ULONG (STDMETHODCALLTYPE *AddRef)(
6866        IMFVideoProcessorControl2 *This);
6867
6868    ULONG (STDMETHODCALLTYPE *Release)(
6869        IMFVideoProcessorControl2 *This);
6870
6871    /*** IMFVideoProcessorControl methods ***/
6872    HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
6873        IMFVideoProcessorControl2 *This,
6874        MFARGB *pBorderColor);
6875
6876    HRESULT (STDMETHODCALLTYPE *SetSourceRectangle)(
6877        IMFVideoProcessorControl2 *This,
6878        RECT *pSrcRect);
6879
6880    HRESULT (STDMETHODCALLTYPE *SetDestinationRectangle)(
6881        IMFVideoProcessorControl2 *This,
6882        RECT *pDstRect);
6883
6884    HRESULT (STDMETHODCALLTYPE *SetMirror)(
6885        IMFVideoProcessorControl2 *This,
6886        MF_VIDEO_PROCESSOR_MIRROR eMirror);
6887
6888    HRESULT (STDMETHODCALLTYPE *SetRotation)(
6889        IMFVideoProcessorControl2 *This,
6890        MF_VIDEO_PROCESSOR_ROTATION eRotation);
6891
6892    HRESULT (STDMETHODCALLTYPE *SetConstrictionSize)(
6893        IMFVideoProcessorControl2 *This,
6894        SIZE *pConstrictionSize);
6895
6896    /*** IMFVideoProcessorControl2 methods ***/
6897    HRESULT (STDMETHODCALLTYPE *SetRotationOverride)(
6898        IMFVideoProcessorControl2 *This,
6899        UINT uiRotation);
6900
6901    HRESULT (STDMETHODCALLTYPE *EnableHardwareEffects)(
6902        IMFVideoProcessorControl2 *This,
6903        WINBOOL fEnabled);
6904
6905    HRESULT (STDMETHODCALLTYPE *GetSupportedHardwareEffects)(
6906        IMFVideoProcessorControl2 *This,
6907        UINT *puiSupport);
6908
6909    END_INTERFACE
6910} IMFVideoProcessorControl2Vtbl;
6911
6912interface IMFVideoProcessorControl2 {
6913    CONST_VTBL IMFVideoProcessorControl2Vtbl* lpVtbl;
6914};
6915
6916#ifdef COBJMACROS
6917#ifndef WIDL_C_INLINE_WRAPPERS
6918/*** IUnknown methods ***/
6919#define IMFVideoProcessorControl2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6920#define IMFVideoProcessorControl2_AddRef(This) (This)->lpVtbl->AddRef(This)
6921#define IMFVideoProcessorControl2_Release(This) (This)->lpVtbl->Release(This)
6922/*** IMFVideoProcessorControl methods ***/
6923#define IMFVideoProcessorControl2_SetBorderColor(This,pBorderColor) (This)->lpVtbl->SetBorderColor(This,pBorderColor)
6924#define IMFVideoProcessorControl2_SetSourceRectangle(This,pSrcRect) (This)->lpVtbl->SetSourceRectangle(This,pSrcRect)
6925#define IMFVideoProcessorControl2_SetDestinationRectangle(This,pDstRect) (This)->lpVtbl->SetDestinationRectangle(This,pDstRect)
6926#define IMFVideoProcessorControl2_SetMirror(This,eMirror) (This)->lpVtbl->SetMirror(This,eMirror)
6927#define IMFVideoProcessorControl2_SetRotation(This,eRotation) (This)->lpVtbl->SetRotation(This,eRotation)
6928#define IMFVideoProcessorControl2_SetConstrictionSize(This,pConstrictionSize) (This)->lpVtbl->SetConstrictionSize(This,pConstrictionSize)
6929/*** IMFVideoProcessorControl2 methods ***/
6930#define IMFVideoProcessorControl2_SetRotationOverride(This,uiRotation) (This)->lpVtbl->SetRotationOverride(This,uiRotation)
6931#define IMFVideoProcessorControl2_EnableHardwareEffects(This,fEnabled) (This)->lpVtbl->EnableHardwareEffects(This,fEnabled)
6932#define IMFVideoProcessorControl2_GetSupportedHardwareEffects(This,puiSupport) (This)->lpVtbl->GetSupportedHardwareEffects(This,puiSupport)
6933#else
6934/*** IUnknown methods ***/
6935static inline HRESULT IMFVideoProcessorControl2_QueryInterface(IMFVideoProcessorControl2* This,REFIID riid,void **ppvObject) {
6936    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6937}
6938static inline ULONG IMFVideoProcessorControl2_AddRef(IMFVideoProcessorControl2* This) {
6939    return This->lpVtbl->AddRef(This);
6940}
6941static inline ULONG IMFVideoProcessorControl2_Release(IMFVideoProcessorControl2* This) {
6942    return This->lpVtbl->Release(This);
6943}
6944/*** IMFVideoProcessorControl methods ***/
6945static inline HRESULT IMFVideoProcessorControl2_SetBorderColor(IMFVideoProcessorControl2* This,MFARGB *pBorderColor) {
6946    return This->lpVtbl->SetBorderColor(This,pBorderColor);
6947}
6948static inline HRESULT IMFVideoProcessorControl2_SetSourceRectangle(IMFVideoProcessorControl2* This,RECT *pSrcRect) {
6949    return This->lpVtbl->SetSourceRectangle(This,pSrcRect);
6950}
6951static inline HRESULT IMFVideoProcessorControl2_SetDestinationRectangle(IMFVideoProcessorControl2* This,RECT *pDstRect) {
6952    return This->lpVtbl->SetDestinationRectangle(This,pDstRect);
6953}
6954static inline HRESULT IMFVideoProcessorControl2_SetMirror(IMFVideoProcessorControl2* This,MF_VIDEO_PROCESSOR_MIRROR eMirror) {
6955    return This->lpVtbl->SetMirror(This,eMirror);
6956}
6957static inline HRESULT IMFVideoProcessorControl2_SetRotation(IMFVideoProcessorControl2* This,MF_VIDEO_PROCESSOR_ROTATION eRotation) {
6958    return This->lpVtbl->SetRotation(This,eRotation);
6959}
6960static inline HRESULT IMFVideoProcessorControl2_SetConstrictionSize(IMFVideoProcessorControl2* This,SIZE *pConstrictionSize) {
6961    return This->lpVtbl->SetConstrictionSize(This,pConstrictionSize);
6962}
6963/*** IMFVideoProcessorControl2 methods ***/
6964static inline HRESULT IMFVideoProcessorControl2_SetRotationOverride(IMFVideoProcessorControl2* This,UINT uiRotation) {
6965    return This->lpVtbl->SetRotationOverride(This,uiRotation);
6966}
6967static inline HRESULT IMFVideoProcessorControl2_EnableHardwareEffects(IMFVideoProcessorControl2* This,WINBOOL fEnabled) {
6968    return This->lpVtbl->EnableHardwareEffects(This,fEnabled);
6969}
6970static inline HRESULT IMFVideoProcessorControl2_GetSupportedHardwareEffects(IMFVideoProcessorControl2* This,UINT *puiSupport) {
6971    return This->lpVtbl->GetSupportedHardwareEffects(This,puiSupport);
6972}
6973#endif
6974#endif
6975
6976#endif
6977
6978
6979#endif  /* __IMFVideoProcessorControl2_INTERFACE_DEFINED__ */
6980
6981#if WINVER >= _WIN32_WINNT_WIN10
6982typedef enum _MFVideoSphericalFormat {
6983    MFVideoSphericalFormat_Unsupported = 0,
6984    MFVideoSphericalFormat_Equirectangular = 1,
6985    MFVideoSphericalFormat_CubeMap = 2,
6986    MFVideoSphericalFormat_3DMesh = 3
6987} MFVideoSphericalFormat;
6988#endif /* WINVER >= _WIN32_WINNT_WIN10 */
6989#if NTDDI_VERSION >= NTDDI_WIN10_RS3
6990EXTERN_GUID(MF_XVP_SAMPLE_LOCK_TIMEOUT, 0xaa4ddb29, 0x5134, 0x4363, 0xac, 0x72, 0x83, 0xec, 0x4b, 0xc1, 0x4, 0x26);
6991typedef enum MFVideoSphericalProjectionMode {
6992    MFVideoSphericalProjectionMode_Spherical = 0,
6993    MFVideoSphericalProjectionMode_Flat = 1
6994} MFVideoSphericalProjectionMode;
6995/*****************************************************************************
6996 * IMFVideoProcessorControl3 interface
6997 */
6998#ifndef __IMFVideoProcessorControl3_INTERFACE_DEFINED__
6999#define __IMFVideoProcessorControl3_INTERFACE_DEFINED__
7000
7001DEFINE_GUID(IID_IMFVideoProcessorControl3, 0x2424b3f2, 0xeb23, 0x40f1, 0x91,0xaa, 0x74,0xbd,0xde,0xea,0x08,0x83);
7002#if defined(__cplusplus) && !defined(CINTERFACE)
7003MIDL_INTERFACE("2424b3f2-eb23-40f1-91aa-74bddeea0883")
7004IMFVideoProcessorControl3 : public IMFVideoProcessorControl2
7005{
7006    virtual HRESULT STDMETHODCALLTYPE GetNaturalOutputType(
7007        IMFMediaType **ppType) = 0;
7008
7009    virtual HRESULT STDMETHODCALLTYPE EnableSphericalVideoProcessing(
7010        WINBOOL fEnable,
7011        MFVideoSphericalFormat eFormat,
7012        MFVideoSphericalProjectionMode eProjectionMode) = 0;
7013
7014    virtual HRESULT STDMETHODCALLTYPE SetSphericalVideoProperties(
7015        float X,
7016        float Y,
7017        float Z,
7018        float W,
7019        float fieldOfView) = 0;
7020
7021    virtual HRESULT STDMETHODCALLTYPE SetOutputDevice(
7022        IUnknown *pOutputDevice) = 0;
7023
7024};
7025#ifdef __CRT_UUID_DECL
7026__CRT_UUID_DECL(IMFVideoProcessorControl3, 0x2424b3f2, 0xeb23, 0x40f1, 0x91,0xaa, 0x74,0xbd,0xde,0xea,0x08,0x83)
7027#endif
7028#else
7029typedef struct IMFVideoProcessorControl3Vtbl {
7030    BEGIN_INTERFACE
7031
7032    /*** IUnknown methods ***/
7033    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7034        IMFVideoProcessorControl3 *This,
7035        REFIID riid,
7036        void **ppvObject);
7037
7038    ULONG (STDMETHODCALLTYPE *AddRef)(
7039        IMFVideoProcessorControl3 *This);
7040
7041    ULONG (STDMETHODCALLTYPE *Release)(
7042        IMFVideoProcessorControl3 *This);
7043
7044    /*** IMFVideoProcessorControl methods ***/
7045    HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
7046        IMFVideoProcessorControl3 *This,
7047        MFARGB *pBorderColor);
7048
7049    HRESULT (STDMETHODCALLTYPE *SetSourceRectangle)(
7050        IMFVideoProcessorControl3 *This,
7051        RECT *pSrcRect);
7052
7053    HRESULT (STDMETHODCALLTYPE *SetDestinationRectangle)(
7054        IMFVideoProcessorControl3 *This,
7055        RECT *pDstRect);
7056
7057    HRESULT (STDMETHODCALLTYPE *SetMirror)(
7058        IMFVideoProcessorControl3 *This,
7059        MF_VIDEO_PROCESSOR_MIRROR eMirror);
7060
7061    HRESULT (STDMETHODCALLTYPE *SetRotation)(
7062        IMFVideoProcessorControl3 *This,
7063        MF_VIDEO_PROCESSOR_ROTATION eRotation);
7064
7065    HRESULT (STDMETHODCALLTYPE *SetConstrictionSize)(
7066        IMFVideoProcessorControl3 *This,
7067        SIZE *pConstrictionSize);
7068
7069    /*** IMFVideoProcessorControl2 methods ***/
7070    HRESULT (STDMETHODCALLTYPE *SetRotationOverride)(
7071        IMFVideoProcessorControl3 *This,
7072        UINT uiRotation);
7073
7074    HRESULT (STDMETHODCALLTYPE *EnableHardwareEffects)(
7075        IMFVideoProcessorControl3 *This,
7076        WINBOOL fEnabled);
7077
7078    HRESULT (STDMETHODCALLTYPE *GetSupportedHardwareEffects)(
7079        IMFVideoProcessorControl3 *This,
7080        UINT *puiSupport);
7081
7082    /*** IMFVideoProcessorControl3 methods ***/
7083    HRESULT (STDMETHODCALLTYPE *GetNaturalOutputType)(
7084        IMFVideoProcessorControl3 *This,
7085        IMFMediaType **ppType);
7086
7087    HRESULT (STDMETHODCALLTYPE *EnableSphericalVideoProcessing)(
7088        IMFVideoProcessorControl3 *This,
7089        WINBOOL fEnable,
7090        MFVideoSphericalFormat eFormat,
7091        MFVideoSphericalProjectionMode eProjectionMode);
7092
7093    HRESULT (STDMETHODCALLTYPE *SetSphericalVideoProperties)(
7094        IMFVideoProcessorControl3 *This,
7095        float X,
7096        float Y,
7097        float Z,
7098        float W,
7099        float fieldOfView);
7100
7101    HRESULT (STDMETHODCALLTYPE *SetOutputDevice)(
7102        IMFVideoProcessorControl3 *This,
7103        IUnknown *pOutputDevice);
7104
7105    END_INTERFACE
7106} IMFVideoProcessorControl3Vtbl;
7107
7108interface IMFVideoProcessorControl3 {
7109    CONST_VTBL IMFVideoProcessorControl3Vtbl* lpVtbl;
7110};
7111
7112#ifdef COBJMACROS
7113#ifndef WIDL_C_INLINE_WRAPPERS
7114/*** IUnknown methods ***/
7115#define IMFVideoProcessorControl3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7116#define IMFVideoProcessorControl3_AddRef(This) (This)->lpVtbl->AddRef(This)
7117#define IMFVideoProcessorControl3_Release(This) (This)->lpVtbl->Release(This)
7118/*** IMFVideoProcessorControl methods ***/
7119#define IMFVideoProcessorControl3_SetBorderColor(This,pBorderColor) (This)->lpVtbl->SetBorderColor(This,pBorderColor)
7120#define IMFVideoProcessorControl3_SetSourceRectangle(This,pSrcRect) (This)->lpVtbl->SetSourceRectangle(This,pSrcRect)
7121#define IMFVideoProcessorControl3_SetDestinationRectangle(This,pDstRect) (This)->lpVtbl->SetDestinationRectangle(This,pDstRect)
7122#define IMFVideoProcessorControl3_SetMirror(This,eMirror) (This)->lpVtbl->SetMirror(This,eMirror)
7123#define IMFVideoProcessorControl3_SetRotation(This,eRotation) (This)->lpVtbl->SetRotation(This,eRotation)
7124#define IMFVideoProcessorControl3_SetConstrictionSize(This,pConstrictionSize) (This)->lpVtbl->SetConstrictionSize(This,pConstrictionSize)
7125/*** IMFVideoProcessorControl2 methods ***/
7126#define IMFVideoProcessorControl3_SetRotationOverride(This,uiRotation) (This)->lpVtbl->SetRotationOverride(This,uiRotation)
7127#define IMFVideoProcessorControl3_EnableHardwareEffects(This,fEnabled) (This)->lpVtbl->EnableHardwareEffects(This,fEnabled)
7128#define IMFVideoProcessorControl3_GetSupportedHardwareEffects(This,puiSupport) (This)->lpVtbl->GetSupportedHardwareEffects(This,puiSupport)
7129/*** IMFVideoProcessorControl3 methods ***/
7130#define IMFVideoProcessorControl3_GetNaturalOutputType(This,ppType) (This)->lpVtbl->GetNaturalOutputType(This,ppType)
7131#define IMFVideoProcessorControl3_EnableSphericalVideoProcessing(This,fEnable,eFormat,eProjectionMode) (This)->lpVtbl->EnableSphericalVideoProcessing(This,fEnable,eFormat,eProjectionMode)
7132#define IMFVideoProcessorControl3_SetSphericalVideoProperties(This,X,Y,Z,W,fieldOfView) (This)->lpVtbl->SetSphericalVideoProperties(This,X,Y,Z,W,fieldOfView)
7133#define IMFVideoProcessorControl3_SetOutputDevice(This,pOutputDevice) (This)->lpVtbl->SetOutputDevice(This,pOutputDevice)
7134#else
7135/*** IUnknown methods ***/
7136static inline HRESULT IMFVideoProcessorControl3_QueryInterface(IMFVideoProcessorControl3* This,REFIID riid,void **ppvObject) {
7137    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7138}
7139static inline ULONG IMFVideoProcessorControl3_AddRef(IMFVideoProcessorControl3* This) {
7140    return This->lpVtbl->AddRef(This);
7141}
7142static inline ULONG IMFVideoProcessorControl3_Release(IMFVideoProcessorControl3* This) {
7143    return This->lpVtbl->Release(This);
7144}
7145/*** IMFVideoProcessorControl methods ***/
7146static inline HRESULT IMFVideoProcessorControl3_SetBorderColor(IMFVideoProcessorControl3* This,MFARGB *pBorderColor) {
7147    return This->lpVtbl->SetBorderColor(This,pBorderColor);
7148}
7149static inline HRESULT IMFVideoProcessorControl3_SetSourceRectangle(IMFVideoProcessorControl3* This,RECT *pSrcRect) {
7150    return This->lpVtbl->SetSourceRectangle(This,pSrcRect);
7151}
7152static inline HRESULT IMFVideoProcessorControl3_SetDestinationRectangle(IMFVideoProcessorControl3* This,RECT *pDstRect) {
7153    return This->lpVtbl->SetDestinationRectangle(This,pDstRect);
7154}
7155static inline HRESULT IMFVideoProcessorControl3_SetMirror(IMFVideoProcessorControl3* This,MF_VIDEO_PROCESSOR_MIRROR eMirror) {
7156    return This->lpVtbl->SetMirror(This,eMirror);
7157}
7158static inline HRESULT IMFVideoProcessorControl3_SetRotation(IMFVideoProcessorControl3* This,MF_VIDEO_PROCESSOR_ROTATION eRotation) {
7159    return This->lpVtbl->SetRotation(This,eRotation);
7160}
7161static inline HRESULT IMFVideoProcessorControl3_SetConstrictionSize(IMFVideoProcessorControl3* This,SIZE *pConstrictionSize) {
7162    return This->lpVtbl->SetConstrictionSize(This,pConstrictionSize);
7163}
7164/*** IMFVideoProcessorControl2 methods ***/
7165static inline HRESULT IMFVideoProcessorControl3_SetRotationOverride(IMFVideoProcessorControl3* This,UINT uiRotation) {
7166    return This->lpVtbl->SetRotationOverride(This,uiRotation);
7167}
7168static inline HRESULT IMFVideoProcessorControl3_EnableHardwareEffects(IMFVideoProcessorControl3* This,WINBOOL fEnabled) {
7169    return This->lpVtbl->EnableHardwareEffects(This,fEnabled);
7170}
7171static inline HRESULT IMFVideoProcessorControl3_GetSupportedHardwareEffects(IMFVideoProcessorControl3* This,UINT *puiSupport) {
7172    return This->lpVtbl->GetSupportedHardwareEffects(This,puiSupport);
7173}
7174/*** IMFVideoProcessorControl3 methods ***/
7175static inline HRESULT IMFVideoProcessorControl3_GetNaturalOutputType(IMFVideoProcessorControl3* This,IMFMediaType **ppType) {
7176    return This->lpVtbl->GetNaturalOutputType(This,ppType);
7177}
7178static inline HRESULT IMFVideoProcessorControl3_EnableSphericalVideoProcessing(IMFVideoProcessorControl3* This,WINBOOL fEnable,MFVideoSphericalFormat eFormat,MFVideoSphericalProjectionMode eProjectionMode) {
7179    return This->lpVtbl->EnableSphericalVideoProcessing(This,fEnable,eFormat,eProjectionMode);
7180}
7181static inline HRESULT IMFVideoProcessorControl3_SetSphericalVideoProperties(IMFVideoProcessorControl3* This,float X,float Y,float Z,float W,float fieldOfView) {
7182    return This->lpVtbl->SetSphericalVideoProperties(This,X,Y,Z,W,fieldOfView);
7183}
7184static inline HRESULT IMFVideoProcessorControl3_SetOutputDevice(IMFVideoProcessorControl3* This,IUnknown *pOutputDevice) {
7185    return This->lpVtbl->SetOutputDevice(This,pOutputDevice);
7186}
7187#endif
7188#endif
7189
7190#endif
7191
7192
7193#endif  /* __IMFVideoProcessorControl3_INTERFACE_DEFINED__ */
7194
7195#endif /* NTDDI_VERSION >= NTDDI_WIN10_RS3 */
7196#endif /* WINVER >= _WIN32_WINNT_WINBLUE */
7197#if NTDDI_VERSION >= NTDDI_WIN10_VB
7198/*****************************************************************************
7199 * IMFVideoRendererEffectControl interface
7200 */
7201#ifndef __IMFVideoRendererEffectControl_INTERFACE_DEFINED__
7202#define __IMFVideoRendererEffectControl_INTERFACE_DEFINED__
7203
7204DEFINE_GUID(IID_IMFVideoRendererEffectControl, 0x604d33d7, 0xcf23, 0x41d5, 0x82,0x24, 0x5b,0xbb,0xb1,0xa8,0x74,0x75);
7205#if defined(__cplusplus) && !defined(CINTERFACE)
7206MIDL_INTERFACE("604d33d7-cf23-41d5-8224-5bbbb1a87475")
7207IMFVideoRendererEffectControl : public IUnknown
7208{
7209    virtual HRESULT STDMETHODCALLTYPE OnAppServiceConnectionEstablished(
7210        IUnknown *pAppServiceConnection) = 0;
7211
7212};
7213#ifdef __CRT_UUID_DECL
7214__CRT_UUID_DECL(IMFVideoRendererEffectControl, 0x604d33d7, 0xcf23, 0x41d5, 0x82,0x24, 0x5b,0xbb,0xb1,0xa8,0x74,0x75)
7215#endif
7216#else
7217typedef struct IMFVideoRendererEffectControlVtbl {
7218    BEGIN_INTERFACE
7219
7220    /*** IUnknown methods ***/
7221    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7222        IMFVideoRendererEffectControl *This,
7223        REFIID riid,
7224        void **ppvObject);
7225
7226    ULONG (STDMETHODCALLTYPE *AddRef)(
7227        IMFVideoRendererEffectControl *This);
7228
7229    ULONG (STDMETHODCALLTYPE *Release)(
7230        IMFVideoRendererEffectControl *This);
7231
7232    /*** IMFVideoRendererEffectControl methods ***/
7233    HRESULT (STDMETHODCALLTYPE *OnAppServiceConnectionEstablished)(
7234        IMFVideoRendererEffectControl *This,
7235        IUnknown *pAppServiceConnection);
7236
7237    END_INTERFACE
7238} IMFVideoRendererEffectControlVtbl;
7239
7240interface IMFVideoRendererEffectControl {
7241    CONST_VTBL IMFVideoRendererEffectControlVtbl* lpVtbl;
7242};
7243
7244#ifdef COBJMACROS
7245#ifndef WIDL_C_INLINE_WRAPPERS
7246/*** IUnknown methods ***/
7247#define IMFVideoRendererEffectControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7248#define IMFVideoRendererEffectControl_AddRef(This) (This)->lpVtbl->AddRef(This)
7249#define IMFVideoRendererEffectControl_Release(This) (This)->lpVtbl->Release(This)
7250/*** IMFVideoRendererEffectControl methods ***/
7251#define IMFVideoRendererEffectControl_OnAppServiceConnectionEstablished(This,pAppServiceConnection) (This)->lpVtbl->OnAppServiceConnectionEstablished(This,pAppServiceConnection)
7252#else
7253/*** IUnknown methods ***/
7254static inline HRESULT IMFVideoRendererEffectControl_QueryInterface(IMFVideoRendererEffectControl* This,REFIID riid,void **ppvObject) {
7255    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7256}
7257static inline ULONG IMFVideoRendererEffectControl_AddRef(IMFVideoRendererEffectControl* This) {
7258    return This->lpVtbl->AddRef(This);
7259}
7260static inline ULONG IMFVideoRendererEffectControl_Release(IMFVideoRendererEffectControl* This) {
7261    return This->lpVtbl->Release(This);
7262}
7263/*** IMFVideoRendererEffectControl methods ***/
7264static inline HRESULT IMFVideoRendererEffectControl_OnAppServiceConnectionEstablished(IMFVideoRendererEffectControl* This,IUnknown *pAppServiceConnection) {
7265    return This->lpVtbl->OnAppServiceConnectionEstablished(This,pAppServiceConnection);
7266}
7267#endif
7268#endif
7269
7270#endif
7271
7272
7273#endif  /* __IMFVideoRendererEffectControl_INTERFACE_DEFINED__ */
7274
7275#endif /* WINVER >= NTDDI_WIN10_VB */
7276#endif /* WINVER >= _WIN32_WINNT_WIN8 */
7277HRESULT WINAPI MFCreate3GPMediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
7278HRESULT WINAPI MFCreateAggregateSource(IMFCollection *pSourceCollection,IMFMediaSource **ppAggSource);
7279
7280HRESULT WINAPI MFCreateAlignedMemoryBuffer(DWORD cbMaxLength,DWORD fAlignmentFlags,IMFMediaBuffer **ppBuffer);
7281HRESULT WINAPI MFCreateASFContentInfo(IMFASFContentInfo **ppIContentInfo);
7282HRESULT WINAPI MFCreateASFIndexer(IMFASFIndexer **ppIIndexer);
7283HRESULT WINAPI MFCreateASFIndexerByteStream(IMFByteStream *pIContentByteStream,QWORD cbIndexStartOffset,IMFByteStream **pIIndexByteStream);
7284HRESULT WINAPI MFCreateASFMediaSink(IMFByteStream *pIByteStream,IMFMediaSink **ppIMediaSink);
7285HRESULT WINAPI MFCreateASFMediaSinkActivate(LPCWSTR pwszFileName,IMFASFContentInfo *pContentInfo,IMFActivate **ppIActivate);
7286HRESULT WINAPI MFCreateASFMultiplexer(IMFASFMultiplexer **ppIMultiplexer);
7287HRESULT WINAPI MFCreateASFProfile(IMFASFProfile **ppIProfile);
7288HRESULT WINAPI MFCreateASFProfileFromPresentationDescriptor(IMFPresentationDescriptor *pIPD,IMFASFProfile **ppIProfile);
7289HRESULT WINAPI MFCreateASFSplitter(IMFASFSplitter **ppISplitter);
7290HRESULT WINAPI MFCreateAudioRenderer(IMFAttributes *pAudioAttributes, IMFMediaSink **ppSink);
7291HRESULT WINAPI MFCreateAudioRendererActivate(IMFActivate **ppActivate);
7292HRESULT WINAPI MFCreateDeviceSource(IMFAttributes *pAttributes,IMFMediaSource **ppSource);
7293HRESULT WINAPI MFCreateMediaSession(IMFAttributes *pConfiguration,IMFMediaSession **ppMS);
7294HRESULT WINAPI MFCreateMP3MediaSink(IMFByteStream *pTargetByteStream,IMFMediaSink **ppMediaSink);
7295HRESULT WINAPI MFCreateMPEG4MediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
7296HRESULT WINAPI MFCreateNetSchemePlugin(REFIID riid,LPVOID *ppvHandler);
7297HRESULT WINAPI MFCreatePMPServer(DWORD dwCreationFlags,IMFPMPServer **ppPMPServer);
7298HRESULT WINAPI MFCreatePMPMediaSession(DWORD dwCreationFlags,IMFAttributes *pConfiguration,IMFMediaSession **ppMediaSession,IMFActivate **ppEnablerActivate);
7299HRESULT WINAPI MFCreatePathFromURL(LPCWSTR pwszFileURL,LPWSTR *ppwszFilePath);
7300HRESULT WINAPI MFCreatePresentationClock(IMFPresentationClock **ppPresentationClock);
7301HRESULT WINAPI MFCreatePresentationDescriptor(DWORD cStreamDescriptors,IMFStreamDescriptor **apStreamDescriptors,IMFPresentationDescriptor **ppPresentationDescriptor);
7302HRESULT WINAPI MFCreatePresentationDescriptorFromASFProfile(IMFASFProfile *pIProfile,IMFPresentationDescriptor **ppIPD);
7303HRESULT WINAPI MFCreateProxyLocator(LPCWSTR pszProtocol,IPropertyStore *pProxyConfig,IMFNetProxyLocator **ppProxyLocator);
7304HRESULT WINAPI MFCreateRemoteDesktopPlugin(IMFRemoteDesktopPlugin **ppPlugin);
7305HRESULT WINAPI MFCreateSample(IMFSample **ppIMFSample);
7306HRESULT WINAPI MFCreateSampleCopierMFT(IMFTransform **ppCopierMFT);
7307HRESULT WINAPI MFCreateSampleGrabberSinkActivate(IMFMediaType *pIMFMediaType,IMFSampleGrabberSinkCallback *pIMFSampleGrabberSinkCallback,IMFActivate **ppIActivate);
7308HRESULT WINAPI MFCreateSequencerSource(IUnknown *pReserved,IMFSequencerSource **ppSequencerSource);
7309HRESULT WINAPI MFCreateSimpleTypeHandler(IMFMediaTypeHandler **ppHandler);
7310HRESULT WINAPI MFCreateStandardQualityManager(IMFQualityManager **ppQualityManager);
7311HRESULT WINAPI MFCreateStreamDescriptor(DWORD dwStreamIdentifier,DWORD cMediaTypes,IMFMediaType **apMediaTypes,IMFStreamDescriptor **ppDescriptor);
7312HRESULT WINAPI MFCreateSourceResolver(IMFSourceResolver **ppISourceResolver);
7313HRESULT WINAPI MFCreateSystemTimeSource(IMFPresentationTimeSource **ppSystemTimeSource);
7314HRESULT WINAPI MFCreateTopoLoader(IMFTopoLoader **ppObj);
7315HRESULT WINAPI MFCreateTopology(IMFTopology **ppTopo);
7316HRESULT WINAPI MFCreateTopologyNode(MF_TOPOLOGY_TYPE NodeType,IMFTopologyNode **ppNode);
7317HRESULT WINAPI MFCreateVideoRenderer(REFIID riidRenderer,void **ppVideoRenderer);
7318HRESULT WINAPI MFCreateVideoRendererActivate(HWND hwndVideo,IMFActivate **ppActivate);
7319HRESULT WINAPI MFGetService(IUnknown *punkObject,REFGUID guidService,REFIID riid,LPVOID *ppvObject);
7320HRESULT WINAPI MFGetSupportedMimeTypes(PROPVARIANT *pPropVarMimeTypeArray);
7321HRESULT WINAPI MFGetSupportedSchemes(PROPVARIANT *pPropVarSchemeArray);
7322MFTIME WINAPI MFGetSystemTime(void);
7323HRESULT WINAPI MFShutdownObject(IUnknown *pUnk);
7324HRESULT WINAPI CreateNamedPropertyStore(INamedPropertyStore **ppStore);
7325HRESULT WINAPI CreatePropertyStore(IPropertyStore **ppStore);
7326#if (WINVER >= 0x0601)
7327
7328HRESULT WINAPI MFCreateTranscodeProfile(IMFTranscodeProfile **ppTranscodeProfile);
7329HRESULT WINAPI MFCreateTranscodeSinkActivate(IMFActivate **ppActivate);
7330HRESULT WINAPI MFCreateTranscodeTopology(IMFMediaSource *pSrc,LPCWSTR pwszOutputFilePath,IMFTranscodeProfile *pProfile,IMFTopology **ppTranscodeTopo);
7331HRESULT WINAPI MFEnumDeviceSources(IMFAttributes *pAttributes,IMFActivate ***pppSourceActivate,UINT32 *pcSourceActivate);
7332HRESULT WINAPI MFGetTopoNodeCurrentType(IMFTopologyNode *pNode,DWORD dwStreamIndex,WINBOOL fOutput,IMFMediaType **ppType);
7333HRESULT WINAPI MFTranscodeGetAudioOutputAvailableTypes(REFGUID guidSubType,DWORD dwMFTFlags,IMFAttributes *pCodecConfig,IMFCollection **ppAvailableTypes);
7334#endif
7335EXTERN_GUID(MFNETSOURCE_STATISTICS, 0x3cb1f274, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
7336EXTERN_GUID(MFNETSOURCE_STATISTICS_SERVICE, 0x3cb1f275, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
7337EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_MIXER_CLSID, 0xba491360, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
7338EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_MIXER_ACTIVATE, 0xba491361, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
7339EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_MIXER_FLAGS, 0xba491362, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
7340EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_CLSID, 0xba491364, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
7341EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_ACTIVATE, 0xba491365, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
7342EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_FLAGS, 0xba491366, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
7343EXTERN_GUID(MF_AUDIO_RENDERER_ATTRIBUTE_SESSION_ID, 0xede4b5e3, 0xf805, 0x4d6c, 0x99, 0xb3, 0xdb, 0x01, 0xbf, 0x95, 0xdf, 0xab);
7344EXTERN_GUID(MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ID, 0xb10aaec3, 0xef71, 0x4cc3, 0xb8, 0x73, 0x5, 0xa9, 0xa0, 0x8b, 0x9f, 0x8e);
7345EXTERN_GUID(MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ROLE, 0x6ba644ff, 0x27c5, 0x4d02, 0x98, 0x87, 0xc2, 0x86, 0x19, 0xfd, 0xb9, 0x1b);
7346EXTERN_GUID(MF_AUDIO_RENDERER_ATTRIBUTE_STREAM_CATEGORY, 0xa9770471, 0x92ec, 0x4df4, 0x94, 0xfe, 0x81, 0xc3, 0x6f, 0xc, 0x3a, 0x7a);
7347EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME, 0x60d0e559,0x52f8,0x4fa2,0xbb,0xce,0xac,0xdb,0x34,0xa8,0xec,0x1);
7348EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE, 0x56a819ca,0xc78,0x4de4,0xa0,0xa7,0x3d,0xda,0xba,0xf,0x24,0xd4);
7349EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_GUID, 0x14dd9a1c, 0x7cff, 0x41be, 0xb1, 0xb9, 0xba, 0x1a, 0xc6, 0xec, 0xb5, 0x71);
7350EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID, 0x30da9258,0xfeb9,0x47a7,0xa4,0x53,0x76,0x3a,0x7a,0x8e,0x1c,0x5f);
7351EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ROLE, 0xbc9d118e,0x8c67,0x4a18,0x85,0xd4,0x12,0xd3,0x0,0x40,0x5,0x52);
7352EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY, 0x77f0ae69,0xc3bd,0x4509,0x94,0x1d,0x46,0x7e,0x4d,0x24,0x89,0x9e);
7353EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_HW_SOURCE, 0xde7046ba,0x54d6,0x4487,0xa2,0xa4,0xec,0x7c,0xd,0x1b,0xd1,0x63);
7354EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_MAX_BUFFERS, 0x7dd9b730,0x4f2d,0x41d5,0x8f,0x95,0xc,0xc9,0xa9,0x12,0xba,0x26);
7355EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK, 0x58f0aad8,0x22bf,0x4f8a,0xbb,0x3d,0xd2,0xc4,0x97,0x8c,0x6e,0x2f);
7356EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, 0xc60ac5fe,0x252a,0x478f,0xa0,0xef,0xbc,0x8f,0xa5,0xf7,0xca,0xd3);
7357EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID, 0x8ac3587a,0x4ae7,0x42d8,0x99,0xe0,0x0a,0x60,0x13,0xee,0xf9,0x0f);
7358EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_SYMBOLIC_LINK, 0x98d24b5e, 0x5930, 0x4614, 0xb5, 0xa1, 0xf6, 0x0, 0xf9, 0x35, 0x5a, 0x78);
7359EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_PROVIDER_DEVICE_ID, 0x36689d42, 0xa06c, 0x40ae, 0x84, 0xcf, 0xf5, 0xa0, 0x34, 0x6, 0x7c, 0xc4);
7360EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_XADDRESS, 0xbca0be52, 0xc327, 0x44c7, 0x9b, 0x7d, 0x7f, 0xa8, 0xd9, 0xb5, 0xbc, 0xda);
7361EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_STREAM_URL, 0x9d7b40d2, 0x3617, 0x4043, 0x93, 0xe3, 0x8d, 0x6d, 0xa9, 0xbb, 0x34, 0x92);
7362EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_USERNAME,0x5d01add, 0x949f, 0x46eb, 0xbc, 0x8e, 0x8b, 0xd, 0x2b, 0x32, 0xd7, 0x9d);
7363EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_PASSWORD, 0xa0fd7e16, 0x42d9, 0x49df, 0x84, 0xc0, 0xe8, 0x2c, 0x5e, 0xab, 0x88, 0x74);
7364EXTERN_GUID(MF_METADATA_PROVIDER_SERVICE, 0xdb214084, 0x58a4, 0x4d2e, 0xb8, 0x4f, 0x6f, 0x75, 0x5b, 0x2f, 0x7a, 0xd);
7365EXTERN_GUID(MF_PROPERTY_HANDLER_SERVICE, 0xa3face02, 0x32b8, 0x41dd, 0x90, 0xe7, 0x5f, 0xef, 0x7c, 0x89, 0x91, 0xb5);
7366EXTERN_GUID(MF_RATE_CONTROL_SERVICE, 0x866fa297, 0xb802, 0x4bf8, 0x9d, 0xc9, 0x5e, 0x3b, 0x6a, 0x9f, 0x53, 0xc9);
7367EXTERN_GUID(MF_SAMPLEGRABBERSINK_IGNORE_CLOCK, 0x0efda2c0, 0x2b69, 0x4e2e, 0xab, 0x8d, 0x46, 0xdc, 0xbf, 0xf7, 0xd2, 0x5d);
7368EXTERN_GUID(MF_SD_LANGUAGE, 0xaf2180, 0xbdc2, 0x423c, 0xab, 0xca, 0xf5, 0x3, 0x59, 0x3b, 0xc1, 0x21);
7369EXTERN_GUID(MF_SD_PROTECTED, 0xaf2181, 0xbdc2, 0x423c, 0xab, 0xca, 0xf5, 0x3, 0x59, 0x3b, 0xc1, 0x21);
7370EXTERN_GUID(MF_SD_STREAM_NAME, 0x4f1b099d, 0xd314, 0x41e5, 0xa7, 0x81, 0x7f, 0xef, 0xaa, 0x4c, 0x50, 0x1f);
7371EXTERN_GUID(MF_SD_MUTUALLY_EXCLUSIVE, 0x23ef79c, 0x388d, 0x487f, 0xac, 0x17, 0x69, 0x6c, 0xd6, 0xe3, 0xc6, 0xf5);
7372EXTERN_GUID(MF_TOPONODE_DRAIN, 0x494bbce9, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7373EXTERN_GUID(MF_TOPONODE_D3DAWARE, 0x494bbced, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7374EXTERN_GUID(MF_TOPOLOGY_RESOLUTION_STATUS, 0x494bbcde, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7375EXTERN_GUID(MF_TOPONODE_ERRORCODE, 0x494bbcee, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7376EXTERN_GUID(MF_TOPONODE_CONNECT_METHOD, 0x494bbcf1, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7377EXTERN_GUID(MF_TOPONODE_LOCKED, 0x494bbcf7, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7378EXTERN_GUID(MF_TOPONODE_WORKQUEUE_ID, 0x494bbcf8, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7379EXTERN_GUID(MF_TOPONODE_WORKQUEUE_MMCSS_CLASS, 0x494bbcf9, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7380EXTERN_GUID(MF_TOPONODE_DECRYPTOR, 0x494bbcfa, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7381EXTERN_GUID(MF_TOPONODE_DISCARDABLE, 0x494bbcfb, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7382EXTERN_GUID(MF_TOPONODE_ERROR_MAJORTYPE, 0x494bbcfd, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7383EXTERN_GUID(MF_TOPONODE_ERROR_SUBTYPE, 0x494bbcfe, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7384EXTERN_GUID(MF_TOPONODE_WORKQUEUE_MMCSS_TASKID, 0x494bbcff, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7385EXTERN_GUID(MF_TOPONODE_WORKQUEUE_MMCSS_PRIORITY, 0x5001f840, 0x2816, 0x48f4, 0x93, 0x64, 0xad, 0x1e, 0xf6, 0x61, 0xa1, 0x23);
7386EXTERN_GUID(MF_TOPONODE_WORKQUEUE_ITEM_PRIORITY, 0xa1ff99be, 0x5e97, 0x4a53, 0xb4, 0x94, 0x56, 0x8c, 0x64, 0x2c, 0x0f, 0xf3);
7387EXTERN_GUID(MF_TOPONODE_MARKIN_HERE, 0x494bbd00, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7388EXTERN_GUID(MF_TOPONODE_MARKOUT_HERE, 0x494bbd01, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7389EXTERN_GUID(MF_TOPONODE_DECODER, 0x494bbd02, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
7390EXTERN_GUID(MF_TOPONODE_MEDIASTART, 0x835c58ea, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
7391EXTERN_GUID(MF_TOPONODE_MEDIASTOP, 0x835c58eb, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
7392EXTERN_GUID(MF_TOPONODE_SOURCE, 0x835c58ec, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
7393EXTERN_GUID(MF_TOPONODE_PRESENTATION_DESCRIPTOR, 0x835c58ed, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
7394EXTERN_GUID(MF_TOPONODE_STREAM_DESCRIPTOR, 0x835c58ee, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
7395EXTERN_GUID(MF_TOPONODE_SEQUENCE_ELEMENTID, 0x835c58ef, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
7396EXTERN_GUID(MF_TOPONODE_TRANSFORM_OBJECTID, 0x88dcc0c9, 0x293e, 0x4e8b, 0x9a, 0xeb, 0xa, 0xd6, 0x4c, 0xc0, 0x16, 0xb0);
7397EXTERN_GUID(MF_TOPONODE_STREAMID, 0x14932f9b, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
7398EXTERN_GUID(MF_TOPONODE_NOSHUTDOWN_ON_REMOVE, 0x14932f9c, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
7399EXTERN_GUID(MF_TOPONODE_RATELESS, 0x14932f9d, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
7400EXTERN_GUID(MF_TOPONODE_DISABLE_PREROLL, 0x14932f9e, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
7401EXTERN_GUID(MF_TOPONODE_PRIMARYOUTPUT, 0x6304ef99, 0x16b2, 0x4ebe, 0x9d, 0x67, 0xe4, 0xc5, 0x39, 0xb3, 0xa2, 0x59);
7402EXTERN_GUID(MF_TRANSCODE_SKIP_METADATA_TRANSFER, 0x4e4469ef, 0xb571, 0x4959, 0x8f, 0x83, 0x3d, 0xcf, 0xba, 0x33, 0xa3, 0x93);
7403EXTERN_GUID(MF_TRANSCODE_TOPOLOGYMODE, 0x3e3df610, 0x394a, 0x40b2, 0x9d, 0xea, 0x3b, 0xab, 0x65, 0xb, 0xeb, 0xf2);
7404EXTERN_GUID(MF_TRANSCODE_ADJUST_PROFILE, 0x9c37c21b, 0x60f, 0x487c, 0xa6, 0x90, 0x80, 0xd7, 0xf5, 0xd, 0x1c, 0x72);
7405EXTERN_GUID(MF_TRANSCODE_ENCODINGPROFILE, 0x6947787c, 0xf508, 0x4ea9, 0xb1, 0xe9, 0xa1, 0xfe, 0x3a, 0x49, 0xfb, 0xc9);
7406EXTERN_GUID(MF_TRANSCODE_QUALITYVSSPEED, 0x98332df8, 0x03cd, 0x476b, 0x89, 0xfa, 0x3f, 0x9e, 0x44, 0x2d, 0xec, 0x9f);
7407EXTERN_GUID(MF_TRANSCODE_DONOT_INSERT_ENCODER, 0xf45aa7ce, 0xab24, 0x4012, 0xa1, 0x1b, 0xdc, 0x82, 0x20, 0x20, 0x14, 0x10);
7408EXTERN_GUID(MR_AUDIO_POLICY_SERVICE, 0x911fd737, 0x6775, 0x4ab0, 0xa6, 0x14, 0x29, 0x78, 0x62, 0xfd, 0xac, 0x88);
7409EXTERN_GUID(MR_CAPTURE_POLICY_VOLUME_SERVICE, 0x24030acd, 0x107a, 0x4265, 0x97, 0x5c, 0x41, 0x4e, 0x33, 0xe6, 0x5f, 0x2a);
7410EXTERN_GUID(MR_POLICY_VOLUME_SERVICE, 0x1abaa2ac, 0x9d3b, 0x47c6, 0xab, 0x48, 0xc5, 0x95, 0x6, 0xde, 0x78, 0x4d);
7411EXTERN_GUID(MR_STREAM_VOLUME_SERVICE, 0xf8b5fa2f, 0x32ef, 0x46f5, 0xb1, 0x72, 0x13, 0x21, 0x21, 0x2f, 0xb2, 0xc4);
7412EXTERN_GUID(CLSID_VideoProcessorMFT, 0x88753b26, 0x5b24, 0x49bd, 0xb2, 0xe7, 0xc, 0x44, 0x5c, 0x78, 0xc9, 0x82);
7413EXTERN_GUID(CLSID_FrameServerNetworkCameraSource, 0x7a213aa7, 0x866f, 0x414a, 0x8c, 0x1a, 0x27, 0x5c, 0x72, 0x83, 0xa3, 0x95);
7414EXTERN_GUID(CLSID_MSH264DecoderMFT, 0x62ce7e72, 0x4c71, 0x4d20, 0xb1, 0x5d, 0x45, 0x28, 0x31, 0xa8, 0x7d, 0x9d);
7415EXTERN_GUID(CLSID_MSH264EncoderMFT, 0x6ca50344, 0x051a, 0x4ded, 0x97, 0x79, 0xa4, 0x33, 0x05, 0x16, 0x5e, 0x35);
7416EXTERN_GUID(CLSID_MSDDPlusDecMFT, 0x177c0afe, 0x900b, 0x48d4, 0x9e, 0x4c, 0x57, 0xad, 0xd2, 0x50, 0xb3, 0xd4);
7417EXTERN_GUID(CLSID_MP3DecMediaObject, 0xbbeea841, 0x0a63, 0x4f52, 0xa7, 0xab, 0xa9, 0xb3, 0xa8, 0x4e, 0xd3, 0x8a);
7418EXTERN_GUID(CLSID_MSAACDecMFT, 0x32d186a7, 0x218f, 0x4c75, 0x88, 0x76, 0xdd, 0x77, 0x27, 0x3a, 0x89, 0x99);
7419EXTERN_GUID(CLSID_MSH265DecoderMFT, 0x420a51a3, 0xd605, 0x430c, 0xb4, 0xfc, 0x45, 0x27, 0x4f, 0xa6, 0xc5, 0x62);
7420EXTERN_GUID(CLSID_WMVDecoderMFT, 0x82d353df, 0x90bd, 0x4382, 0x8b, 0xc2, 0x3f, 0x61, 0x92, 0xb7, 0x6e, 0x34);
7421EXTERN_GUID(CLSID_WMADecMediaObject, 0x2eeb4adf, 0x4578, 0x4d10, 0xbc, 0xa7, 0xbb, 0x95, 0x5f, 0x56, 0x32, 0x0a);
7422EXTERN_GUID(CLSID_MSMPEGAudDecMFT, 0x70707b39, 0xb2ca, 0x4015, 0xab, 0xea, 0xf8, 0x44, 0x7d, 0x22, 0xd8, 0x8b);
7423EXTERN_GUID(CLSID_MSMPEGDecoderMFT, 0x2d709e52, 0x123f, 0x49b5, 0x9c, 0xbc, 0x9a, 0xf5, 0xcd, 0xe2, 0x8f, 0xb9);
7424EXTERN_GUID(CLSID_AudioResamplerMediaObject, 0xf447b69e, 0x1884, 0x4a7e, 0x80, 0x55, 0x34, 0x6f, 0x74, 0xd6, 0xed, 0xb3);
7425EXTERN_GUID(CLSID_MSVPxDecoder, 0xe3aaf548, 0xc9a4, 0x4c6e, 0x23, 0x4d, 0x5a, 0xda, 0x37, 0x4b, 0x00, 0x00);
7426EXTERN_GUID(CLSID_MSOpusDecoder, 0x63e17c10, 0x2d43, 0x4c42, 0x8f, 0xe3, 0x8d, 0x8b, 0x63, 0xe4, 0x6a, 0x6a);
7427/* Begin additional prototypes for all interfaces */
7428
7429ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
7430unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
7431unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
7432void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
7433ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
7434unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
7435unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
7436void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
7437
7438/* End additional prototypes */
7439
7440#ifdef __cplusplus
7441}
7442#endif
7443
7444#endif /* __mfidl_h__ */