master
   1/*** Autogenerated by WIDL 10.4 from include/mediaobj.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 __mediaobj_h__
  17#define __mediaobj_h__
  18
  19/* Forward declarations */
  20
  21#ifndef __IEnumDMO_FWD_DEFINED__
  22#define __IEnumDMO_FWD_DEFINED__
  23typedef interface IEnumDMO IEnumDMO;
  24#ifdef __cplusplus
  25interface IEnumDMO;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IMediaBuffer_FWD_DEFINED__
  30#define __IMediaBuffer_FWD_DEFINED__
  31typedef interface IMediaBuffer IMediaBuffer;
  32#ifdef __cplusplus
  33interface IMediaBuffer;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IMediaObject_FWD_DEFINED__
  38#define __IMediaObject_FWD_DEFINED__
  39typedef interface IMediaObject IMediaObject;
  40#ifdef __cplusplus
  41interface IMediaObject;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IMediaObjectInPlace_FWD_DEFINED__
  46#define __IMediaObjectInPlace_FWD_DEFINED__
  47typedef interface IMediaObjectInPlace IMediaObjectInPlace;
  48#ifdef __cplusplus
  49interface IMediaObjectInPlace;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IDMOQualityControl_FWD_DEFINED__
  54#define __IDMOQualityControl_FWD_DEFINED__
  55typedef interface IDMOQualityControl IDMOQualityControl;
  56#ifdef __cplusplus
  57interface IDMOQualityControl;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__
  62#define __IDMOVideoOutputOptimizations_FWD_DEFINED__
  63typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations;
  64#ifdef __cplusplus
  65interface IDMOVideoOutputOptimizations;
  66#endif /* __cplusplus */
  67#endif
  68
  69/* Headers for imported files */
  70
  71#include <unknwn.h>
  72#include <objidl.h>
  73
  74#ifdef __cplusplus
  75extern "C" {
  76#endif
  77
  78#ifdef __strmif_h__
  79typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE;
  80#else
  81typedef struct _DMOMediaType {
  82    GUID majortype;
  83    GUID subtype;
  84    WINBOOL bFixedSizeSamples;
  85    WINBOOL bTemporalCompression;
  86    ULONG lSampleSize;
  87    GUID formattype;
  88    IUnknown *pUnk;
  89    ULONG cbFormat;
  90    BYTE *pbFormat;
  91} DMO_MEDIA_TYPE;
  92typedef LONGLONG REFERENCE_TIME;
  93#endif
  94/*****************************************************************************
  95 * IEnumDMO interface
  96 */
  97#ifndef __IEnumDMO_INTERFACE_DEFINED__
  98#define __IEnumDMO_INTERFACE_DEFINED__
  99
 100DEFINE_GUID(IID_IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f);
 101#if defined(__cplusplus) && !defined(CINTERFACE)
 102MIDL_INTERFACE("2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f")
 103IEnumDMO : public IUnknown
 104{
 105    virtual HRESULT STDMETHODCALLTYPE Next(
 106        DWORD cItemsToFetch,
 107        CLSID *pCLSID,
 108        WCHAR **Names,
 109        DWORD *pcItemsFetched) = 0;
 110
 111    virtual HRESULT STDMETHODCALLTYPE Skip(
 112        DWORD cItemsToSkip) = 0;
 113
 114    virtual HRESULT STDMETHODCALLTYPE Reset(
 115        ) = 0;
 116
 117    virtual HRESULT STDMETHODCALLTYPE Clone(
 118        IEnumDMO **ppEnum) = 0;
 119
 120};
 121#ifdef __CRT_UUID_DECL
 122__CRT_UUID_DECL(IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f)
 123#endif
 124#else
 125typedef struct IEnumDMOVtbl {
 126    BEGIN_INTERFACE
 127
 128    /*** IUnknown methods ***/
 129    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 130        IEnumDMO *This,
 131        REFIID riid,
 132        void **ppvObject);
 133
 134    ULONG (STDMETHODCALLTYPE *AddRef)(
 135        IEnumDMO *This);
 136
 137    ULONG (STDMETHODCALLTYPE *Release)(
 138        IEnumDMO *This);
 139
 140    /*** IEnumDMO methods ***/
 141    HRESULT (STDMETHODCALLTYPE *Next)(
 142        IEnumDMO *This,
 143        DWORD cItemsToFetch,
 144        CLSID *pCLSID,
 145        WCHAR **Names,
 146        DWORD *pcItemsFetched);
 147
 148    HRESULT (STDMETHODCALLTYPE *Skip)(
 149        IEnumDMO *This,
 150        DWORD cItemsToSkip);
 151
 152    HRESULT (STDMETHODCALLTYPE *Reset)(
 153        IEnumDMO *This);
 154
 155    HRESULT (STDMETHODCALLTYPE *Clone)(
 156        IEnumDMO *This,
 157        IEnumDMO **ppEnum);
 158
 159    END_INTERFACE
 160} IEnumDMOVtbl;
 161
 162interface IEnumDMO {
 163    CONST_VTBL IEnumDMOVtbl* lpVtbl;
 164};
 165
 166#ifdef COBJMACROS
 167#ifndef WIDL_C_INLINE_WRAPPERS
 168/*** IUnknown methods ***/
 169#define IEnumDMO_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 170#define IEnumDMO_AddRef(This) (This)->lpVtbl->AddRef(This)
 171#define IEnumDMO_Release(This) (This)->lpVtbl->Release(This)
 172/*** IEnumDMO methods ***/
 173#define IEnumDMO_Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched) (This)->lpVtbl->Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched)
 174#define IEnumDMO_Skip(This,cItemsToSkip) (This)->lpVtbl->Skip(This,cItemsToSkip)
 175#define IEnumDMO_Reset(This) (This)->lpVtbl->Reset(This)
 176#define IEnumDMO_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
 177#else
 178/*** IUnknown methods ***/
 179static inline HRESULT IEnumDMO_QueryInterface(IEnumDMO* This,REFIID riid,void **ppvObject) {
 180    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 181}
 182static inline ULONG IEnumDMO_AddRef(IEnumDMO* This) {
 183    return This->lpVtbl->AddRef(This);
 184}
 185static inline ULONG IEnumDMO_Release(IEnumDMO* This) {
 186    return This->lpVtbl->Release(This);
 187}
 188/*** IEnumDMO methods ***/
 189static inline HRESULT IEnumDMO_Next(IEnumDMO* This,DWORD cItemsToFetch,CLSID *pCLSID,WCHAR **Names,DWORD *pcItemsFetched) {
 190    return This->lpVtbl->Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched);
 191}
 192static inline HRESULT IEnumDMO_Skip(IEnumDMO* This,DWORD cItemsToSkip) {
 193    return This->lpVtbl->Skip(This,cItemsToSkip);
 194}
 195static inline HRESULT IEnumDMO_Reset(IEnumDMO* This) {
 196    return This->lpVtbl->Reset(This);
 197}
 198static inline HRESULT IEnumDMO_Clone(IEnumDMO* This,IEnumDMO **ppEnum) {
 199    return This->lpVtbl->Clone(This,ppEnum);
 200}
 201#endif
 202#endif
 203
 204#endif
 205
 206
 207#endif  /* __IEnumDMO_INTERFACE_DEFINED__ */
 208
 209/*****************************************************************************
 210 * IMediaBuffer interface
 211 */
 212#ifndef __IMediaBuffer_INTERFACE_DEFINED__
 213#define __IMediaBuffer_INTERFACE_DEFINED__
 214
 215DEFINE_GUID(IID_IMediaBuffer, 0x59eff8b9, 0x938c, 0x4a26, 0x82,0xf2, 0x95,0xcb,0x84,0xcd,0xc8,0x37);
 216#if defined(__cplusplus) && !defined(CINTERFACE)
 217MIDL_INTERFACE("59eff8b9-938c-4a26-82f2-95cb84cdc837")
 218IMediaBuffer : public IUnknown
 219{
 220    virtual HRESULT STDMETHODCALLTYPE SetLength(
 221        DWORD cbLength) = 0;
 222
 223    virtual HRESULT STDMETHODCALLTYPE GetMaxLength(
 224        DWORD *pcbMaxLength) = 0;
 225
 226    virtual HRESULT STDMETHODCALLTYPE GetBufferAndLength(
 227        BYTE **ppBuffer,
 228        DWORD *pcbLength) = 0;
 229
 230};
 231#ifdef __CRT_UUID_DECL
 232__CRT_UUID_DECL(IMediaBuffer, 0x59eff8b9, 0x938c, 0x4a26, 0x82,0xf2, 0x95,0xcb,0x84,0xcd,0xc8,0x37)
 233#endif
 234#else
 235typedef struct IMediaBufferVtbl {
 236    BEGIN_INTERFACE
 237
 238    /*** IUnknown methods ***/
 239    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 240        IMediaBuffer *This,
 241        REFIID riid,
 242        void **ppvObject);
 243
 244    ULONG (STDMETHODCALLTYPE *AddRef)(
 245        IMediaBuffer *This);
 246
 247    ULONG (STDMETHODCALLTYPE *Release)(
 248        IMediaBuffer *This);
 249
 250    /*** IMediaBuffer methods ***/
 251    HRESULT (STDMETHODCALLTYPE *SetLength)(
 252        IMediaBuffer *This,
 253        DWORD cbLength);
 254
 255    HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
 256        IMediaBuffer *This,
 257        DWORD *pcbMaxLength);
 258
 259    HRESULT (STDMETHODCALLTYPE *GetBufferAndLength)(
 260        IMediaBuffer *This,
 261        BYTE **ppBuffer,
 262        DWORD *pcbLength);
 263
 264    END_INTERFACE
 265} IMediaBufferVtbl;
 266
 267interface IMediaBuffer {
 268    CONST_VTBL IMediaBufferVtbl* lpVtbl;
 269};
 270
 271#ifdef COBJMACROS
 272#ifndef WIDL_C_INLINE_WRAPPERS
 273/*** IUnknown methods ***/
 274#define IMediaBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 275#define IMediaBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
 276#define IMediaBuffer_Release(This) (This)->lpVtbl->Release(This)
 277/*** IMediaBuffer methods ***/
 278#define IMediaBuffer_SetLength(This,cbLength) (This)->lpVtbl->SetLength(This,cbLength)
 279#define IMediaBuffer_GetMaxLength(This,pcbMaxLength) (This)->lpVtbl->GetMaxLength(This,pcbMaxLength)
 280#define IMediaBuffer_GetBufferAndLength(This,ppBuffer,pcbLength) (This)->lpVtbl->GetBufferAndLength(This,ppBuffer,pcbLength)
 281#else
 282/*** IUnknown methods ***/
 283static inline HRESULT IMediaBuffer_QueryInterface(IMediaBuffer* This,REFIID riid,void **ppvObject) {
 284    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 285}
 286static inline ULONG IMediaBuffer_AddRef(IMediaBuffer* This) {
 287    return This->lpVtbl->AddRef(This);
 288}
 289static inline ULONG IMediaBuffer_Release(IMediaBuffer* This) {
 290    return This->lpVtbl->Release(This);
 291}
 292/*** IMediaBuffer methods ***/
 293static inline HRESULT IMediaBuffer_SetLength(IMediaBuffer* This,DWORD cbLength) {
 294    return This->lpVtbl->SetLength(This,cbLength);
 295}
 296static inline HRESULT IMediaBuffer_GetMaxLength(IMediaBuffer* This,DWORD *pcbMaxLength) {
 297    return This->lpVtbl->GetMaxLength(This,pcbMaxLength);
 298}
 299static inline HRESULT IMediaBuffer_GetBufferAndLength(IMediaBuffer* This,BYTE **ppBuffer,DWORD *pcbLength) {
 300    return This->lpVtbl->GetBufferAndLength(This,ppBuffer,pcbLength);
 301}
 302#endif
 303#endif
 304
 305#endif
 306
 307
 308#endif  /* __IMediaBuffer_INTERFACE_DEFINED__ */
 309
 310enum _DMO_INPUT_STATUS_FLAGS {
 311    DMO_INPUT_STATUSF_ACCEPT_DATA = 0x1
 312};
 313enum _DMO_INPUT_DATA_BUFFER_FLAGS {
 314    DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
 315    DMO_INPUT_DATA_BUFFERF_TIME = 0x2,
 316    DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x4
 317};
 318enum _DMO_PROCESS_OUTPUT_FLAGS {
 319    DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x1
 320};
 321typedef struct _DMO_OUTPUT_DATA_BUFFER {
 322    IMediaBuffer *pBuffer;
 323    DWORD dwStatus;
 324    REFERENCE_TIME rtTimestamp;
 325    REFERENCE_TIME rtTimelength;
 326} DMO_OUTPUT_DATA_BUFFER;
 327typedef struct _DMO_OUTPUT_DATA_BUFFER *PDMO_OUTPUT_DATA_BUFFER;
 328enum _DMO_INPLACE_PROCESS_FLAGS {
 329    DMO_INPLACE_NORMAL = 0x0,
 330    DMO_INPLACE_ZERO = 0x1
 331};
 332enum _DMO_SET_TYPE_FLAGS {
 333    DMO_SET_TYPEF_TEST_ONLY = 0x1,
 334    DMO_SET_TYPEF_CLEAR = 0x2
 335};
 336enum _DMO_OUTPUT_DATA_BUFFERF_FLAGS {
 337    DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x1,
 338    DMO_OUTPUT_DATA_BUFFERF_TIME = 0x2,
 339    DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x4,
 340    DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x1000000
 341};
 342/*****************************************************************************
 343 * IMediaObject interface
 344 */
 345#ifndef __IMediaObject_INTERFACE_DEFINED__
 346#define __IMediaObject_INTERFACE_DEFINED__
 347
 348DEFINE_GUID(IID_IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4);
 349#if defined(__cplusplus) && !defined(CINTERFACE)
 350MIDL_INTERFACE("d8ad0f58-5494-4102-97c5-ec798e59bcf4")
 351IMediaObject : public IUnknown
 352{
 353    virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
 354        DWORD *pcInputStreams,
 355        DWORD *pcOutputStreams) = 0;
 356
 357    virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo(
 358        DWORD dwInputStreamIndex,
 359        DWORD *pdwFlags) = 0;
 360
 361    virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo(
 362        DWORD dwOutputStreamIndex,
 363        DWORD *pdwFlags) = 0;
 364
 365    virtual HRESULT STDMETHODCALLTYPE GetInputType(
 366        DWORD dwInputStreamIndex,
 367        DWORD dwTypeIndex,
 368        DMO_MEDIA_TYPE *pmt) = 0;
 369
 370    virtual HRESULT STDMETHODCALLTYPE GetOutputType(
 371        DWORD dwOutputStreamIndex,
 372        DWORD dwTypeIndex,
 373        DMO_MEDIA_TYPE *pmt) = 0;
 374
 375    virtual HRESULT STDMETHODCALLTYPE SetInputType(
 376        DWORD dwInputStreamIndex,
 377        const DMO_MEDIA_TYPE *pmt,
 378        DWORD dwFlags) = 0;
 379
 380    virtual HRESULT STDMETHODCALLTYPE SetOutputType(
 381        DWORD dwOutputStreamIndex,
 382        const DMO_MEDIA_TYPE *pmt,
 383        DWORD dwFlags) = 0;
 384
 385    virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType(
 386        DWORD dwInputStreamIndex,
 387        DMO_MEDIA_TYPE *pmt) = 0;
 388
 389    virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType(
 390        DWORD dwOutputStreamIndex,
 391        DMO_MEDIA_TYPE *pmt) = 0;
 392
 393    virtual HRESULT STDMETHODCALLTYPE GetInputSizeInfo(
 394        DWORD dwInputStreamIndex,
 395        DWORD *pcbSize,
 396        DWORD *pcbMaxLookahead,
 397        DWORD *pcbAlignment) = 0;
 398
 399    virtual HRESULT STDMETHODCALLTYPE GetOutputSizeInfo(
 400        DWORD dwOutputStreamIndex,
 401        DWORD *pcbSize,
 402        DWORD *pcbAlignment) = 0;
 403
 404    virtual HRESULT STDMETHODCALLTYPE GetInputMaxLatency(
 405        DWORD dwInputStreamIndex,
 406        REFERENCE_TIME *prtMaxLatency) = 0;
 407
 408    virtual HRESULT STDMETHODCALLTYPE SetInputMaxLatency(
 409        DWORD dwInputStreamIndex,
 410        REFERENCE_TIME rtMaxLatency) = 0;
 411
 412    virtual HRESULT STDMETHODCALLTYPE Flush(
 413        ) = 0;
 414
 415    virtual HRESULT STDMETHODCALLTYPE Discontinuity(
 416        DWORD dwInputStreamIndex) = 0;
 417
 418    virtual HRESULT STDMETHODCALLTYPE AllocateStreamingResources(
 419        ) = 0;
 420
 421    virtual HRESULT STDMETHODCALLTYPE FreeStreamingResources(
 422        ) = 0;
 423
 424    virtual HRESULT STDMETHODCALLTYPE GetInputStatus(
 425        DWORD dwInputStreamIndex,
 426        DWORD *dwFlags) = 0;
 427
 428    virtual HRESULT STDMETHODCALLTYPE ProcessInput(
 429        DWORD dwInputStreamIndex,
 430        IMediaBuffer *pBuffer,
 431        DWORD dwFlags,
 432        REFERENCE_TIME rtTimestamp,
 433        REFERENCE_TIME rtTimelength) = 0;
 434
 435    virtual HRESULT STDMETHODCALLTYPE ProcessOutput(
 436        DWORD dwFlags,
 437        DWORD cOutputBufferCount,
 438        DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
 439        DWORD *pdwStatus) = 0;
 440
 441    virtual HRESULT STDMETHODCALLTYPE Lock(
 442        LONG bLock) = 0;
 443
 444};
 445#ifdef __CRT_UUID_DECL
 446__CRT_UUID_DECL(IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4)
 447#endif
 448#else
 449typedef struct IMediaObjectVtbl {
 450    BEGIN_INTERFACE
 451
 452    /*** IUnknown methods ***/
 453    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 454        IMediaObject *This,
 455        REFIID riid,
 456        void **ppvObject);
 457
 458    ULONG (STDMETHODCALLTYPE *AddRef)(
 459        IMediaObject *This);
 460
 461    ULONG (STDMETHODCALLTYPE *Release)(
 462        IMediaObject *This);
 463
 464    /*** IMediaObject methods ***/
 465    HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
 466        IMediaObject *This,
 467        DWORD *pcInputStreams,
 468        DWORD *pcOutputStreams);
 469
 470    HRESULT (STDMETHODCALLTYPE *GetInputStreamInfo)(
 471        IMediaObject *This,
 472        DWORD dwInputStreamIndex,
 473        DWORD *pdwFlags);
 474
 475    HRESULT (STDMETHODCALLTYPE *GetOutputStreamInfo)(
 476        IMediaObject *This,
 477        DWORD dwOutputStreamIndex,
 478        DWORD *pdwFlags);
 479
 480    HRESULT (STDMETHODCALLTYPE *GetInputType)(
 481        IMediaObject *This,
 482        DWORD dwInputStreamIndex,
 483        DWORD dwTypeIndex,
 484        DMO_MEDIA_TYPE *pmt);
 485
 486    HRESULT (STDMETHODCALLTYPE *GetOutputType)(
 487        IMediaObject *This,
 488        DWORD dwOutputStreamIndex,
 489        DWORD dwTypeIndex,
 490        DMO_MEDIA_TYPE *pmt);
 491
 492    HRESULT (STDMETHODCALLTYPE *SetInputType)(
 493        IMediaObject *This,
 494        DWORD dwInputStreamIndex,
 495        const DMO_MEDIA_TYPE *pmt,
 496        DWORD dwFlags);
 497
 498    HRESULT (STDMETHODCALLTYPE *SetOutputType)(
 499        IMediaObject *This,
 500        DWORD dwOutputStreamIndex,
 501        const DMO_MEDIA_TYPE *pmt,
 502        DWORD dwFlags);
 503
 504    HRESULT (STDMETHODCALLTYPE *GetInputCurrentType)(
 505        IMediaObject *This,
 506        DWORD dwInputStreamIndex,
 507        DMO_MEDIA_TYPE *pmt);
 508
 509    HRESULT (STDMETHODCALLTYPE *GetOutputCurrentType)(
 510        IMediaObject *This,
 511        DWORD dwOutputStreamIndex,
 512        DMO_MEDIA_TYPE *pmt);
 513
 514    HRESULT (STDMETHODCALLTYPE *GetInputSizeInfo)(
 515        IMediaObject *This,
 516        DWORD dwInputStreamIndex,
 517        DWORD *pcbSize,
 518        DWORD *pcbMaxLookahead,
 519        DWORD *pcbAlignment);
 520
 521    HRESULT (STDMETHODCALLTYPE *GetOutputSizeInfo)(
 522        IMediaObject *This,
 523        DWORD dwOutputStreamIndex,
 524        DWORD *pcbSize,
 525        DWORD *pcbAlignment);
 526
 527    HRESULT (STDMETHODCALLTYPE *GetInputMaxLatency)(
 528        IMediaObject *This,
 529        DWORD dwInputStreamIndex,
 530        REFERENCE_TIME *prtMaxLatency);
 531
 532    HRESULT (STDMETHODCALLTYPE *SetInputMaxLatency)(
 533        IMediaObject *This,
 534        DWORD dwInputStreamIndex,
 535        REFERENCE_TIME rtMaxLatency);
 536
 537    HRESULT (STDMETHODCALLTYPE *Flush)(
 538        IMediaObject *This);
 539
 540    HRESULT (STDMETHODCALLTYPE *Discontinuity)(
 541        IMediaObject *This,
 542        DWORD dwInputStreamIndex);
 543
 544    HRESULT (STDMETHODCALLTYPE *AllocateStreamingResources)(
 545        IMediaObject *This);
 546
 547    HRESULT (STDMETHODCALLTYPE *FreeStreamingResources)(
 548        IMediaObject *This);
 549
 550    HRESULT (STDMETHODCALLTYPE *GetInputStatus)(
 551        IMediaObject *This,
 552        DWORD dwInputStreamIndex,
 553        DWORD *dwFlags);
 554
 555    HRESULT (STDMETHODCALLTYPE *ProcessInput)(
 556        IMediaObject *This,
 557        DWORD dwInputStreamIndex,
 558        IMediaBuffer *pBuffer,
 559        DWORD dwFlags,
 560        REFERENCE_TIME rtTimestamp,
 561        REFERENCE_TIME rtTimelength);
 562
 563    HRESULT (STDMETHODCALLTYPE *ProcessOutput)(
 564        IMediaObject *This,
 565        DWORD dwFlags,
 566        DWORD cOutputBufferCount,
 567        DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
 568        DWORD *pdwStatus);
 569
 570    HRESULT (STDMETHODCALLTYPE *Lock)(
 571        IMediaObject *This,
 572        LONG bLock);
 573
 574    END_INTERFACE
 575} IMediaObjectVtbl;
 576
 577interface IMediaObject {
 578    CONST_VTBL IMediaObjectVtbl* lpVtbl;
 579};
 580
 581#ifdef COBJMACROS
 582#ifndef WIDL_C_INLINE_WRAPPERS
 583/*** IUnknown methods ***/
 584#define IMediaObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 585#define IMediaObject_AddRef(This) (This)->lpVtbl->AddRef(This)
 586#define IMediaObject_Release(This) (This)->lpVtbl->Release(This)
 587/*** IMediaObject methods ***/
 588#define IMediaObject_GetStreamCount(This,pcInputStreams,pcOutputStreams) (This)->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams)
 589#define IMediaObject_GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) (This)->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags)
 590#define IMediaObject_GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) (This)->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags)
 591#define IMediaObject_GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt)
 592#define IMediaObject_GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt)
 593#define IMediaObject_SetInputType(This,dwInputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags)
 594#define IMediaObject_SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags)
 595#define IMediaObject_GetInputCurrentType(This,dwInputStreamIndex,pmt) (This)->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt)
 596#define IMediaObject_GetOutputCurrentType(This,dwOutputStreamIndex,pmt) (This)->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt)
 597#define IMediaObject_GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) (This)->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment)
 598#define IMediaObject_GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) (This)->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment)
 599#define IMediaObject_GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) (This)->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency)
 600#define IMediaObject_SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) (This)->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency)
 601#define IMediaObject_Flush(This) (This)->lpVtbl->Flush(This)
 602#define IMediaObject_Discontinuity(This,dwInputStreamIndex) (This)->lpVtbl->Discontinuity(This,dwInputStreamIndex)
 603#define IMediaObject_AllocateStreamingResources(This) (This)->lpVtbl->AllocateStreamingResources(This)
 604#define IMediaObject_FreeStreamingResources(This) (This)->lpVtbl->FreeStreamingResources(This)
 605#define IMediaObject_GetInputStatus(This,dwInputStreamIndex,dwFlags) (This)->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags)
 606#define IMediaObject_ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) (This)->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength)
 607#define IMediaObject_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) (This)->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus)
 608#define IMediaObject_Lock(This,bLock) (This)->lpVtbl->Lock(This,bLock)
 609#else
 610/*** IUnknown methods ***/
 611static inline HRESULT IMediaObject_QueryInterface(IMediaObject* This,REFIID riid,void **ppvObject) {
 612    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 613}
 614static inline ULONG IMediaObject_AddRef(IMediaObject* This) {
 615    return This->lpVtbl->AddRef(This);
 616}
 617static inline ULONG IMediaObject_Release(IMediaObject* This) {
 618    return This->lpVtbl->Release(This);
 619}
 620/*** IMediaObject methods ***/
 621static inline HRESULT IMediaObject_GetStreamCount(IMediaObject* This,DWORD *pcInputStreams,DWORD *pcOutputStreams) {
 622    return This->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams);
 623}
 624static inline HRESULT IMediaObject_GetInputStreamInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pdwFlags) {
 625    return This->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags);
 626}
 627static inline HRESULT IMediaObject_GetOutputStreamInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pdwFlags) {
 628    return This->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags);
 629}
 630static inline HRESULT IMediaObject_GetInputType(IMediaObject* This,DWORD dwInputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) {
 631    return This->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt);
 632}
 633static inline HRESULT IMediaObject_GetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) {
 634    return This->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt);
 635}
 636static inline HRESULT IMediaObject_SetInputType(IMediaObject* This,DWORD dwInputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) {
 637    return This->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags);
 638}
 639static inline HRESULT IMediaObject_SetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) {
 640    return This->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags);
 641}
 642static inline HRESULT IMediaObject_GetInputCurrentType(IMediaObject* This,DWORD dwInputStreamIndex,DMO_MEDIA_TYPE *pmt) {
 643    return This->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt);
 644}
 645static inline HRESULT IMediaObject_GetOutputCurrentType(IMediaObject* This,DWORD dwOutputStreamIndex,DMO_MEDIA_TYPE *pmt) {
 646    return This->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt);
 647}
 648static inline HRESULT IMediaObject_GetInputSizeInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pcbSize,DWORD *pcbMaxLookahead,DWORD *pcbAlignment) {
 649    return This->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment);
 650}
 651static inline HRESULT IMediaObject_GetOutputSizeInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pcbSize,DWORD *pcbAlignment) {
 652    return This->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment);
 653}
 654static inline HRESULT IMediaObject_GetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME *prtMaxLatency) {
 655    return This->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency);
 656}
 657static inline HRESULT IMediaObject_SetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME rtMaxLatency) {
 658    return This->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency);
 659}
 660static inline HRESULT IMediaObject_Flush(IMediaObject* This) {
 661    return This->lpVtbl->Flush(This);
 662}
 663static inline HRESULT IMediaObject_Discontinuity(IMediaObject* This,DWORD dwInputStreamIndex) {
 664    return This->lpVtbl->Discontinuity(This,dwInputStreamIndex);
 665}
 666static inline HRESULT IMediaObject_AllocateStreamingResources(IMediaObject* This) {
 667    return This->lpVtbl->AllocateStreamingResources(This);
 668}
 669static inline HRESULT IMediaObject_FreeStreamingResources(IMediaObject* This) {
 670    return This->lpVtbl->FreeStreamingResources(This);
 671}
 672static inline HRESULT IMediaObject_GetInputStatus(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *dwFlags) {
 673    return This->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags);
 674}
 675static inline HRESULT IMediaObject_ProcessInput(IMediaObject* This,DWORD dwInputStreamIndex,IMediaBuffer *pBuffer,DWORD dwFlags,REFERENCE_TIME rtTimestamp,REFERENCE_TIME rtTimelength) {
 676    return This->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength);
 677}
 678static inline HRESULT IMediaObject_ProcessOutput(IMediaObject* This,DWORD dwFlags,DWORD cOutputBufferCount,DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,DWORD *pdwStatus) {
 679    return This->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus);
 680}
 681static inline HRESULT IMediaObject_Lock(IMediaObject* This,LONG bLock) {
 682    return This->lpVtbl->Lock(This,bLock);
 683}
 684#endif
 685#endif
 686
 687#endif
 688
 689
 690#endif  /* __IMediaObject_INTERFACE_DEFINED__ */
 691
 692/*****************************************************************************
 693 * IMediaObjectInPlace interface
 694 */
 695#ifndef __IMediaObjectInPlace_INTERFACE_DEFINED__
 696#define __IMediaObjectInPlace_INTERFACE_DEFINED__
 697
 698DEFINE_GUID(IID_IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41);
 699#if defined(__cplusplus) && !defined(CINTERFACE)
 700MIDL_INTERFACE("651b9ad0-0fc7-4aa9-9538-d89931010741")
 701IMediaObjectInPlace : public IUnknown
 702{
 703    virtual HRESULT STDMETHODCALLTYPE Process(
 704        ULONG ulSize,
 705        BYTE *pData,
 706        REFERENCE_TIME refTimeStart,
 707        DWORD dwFlags) = 0;
 708
 709    virtual HRESULT STDMETHODCALLTYPE Clone(
 710        IMediaObjectInPlace **ppMediaObject) = 0;
 711
 712    virtual HRESULT STDMETHODCALLTYPE GetLatency(
 713        REFERENCE_TIME *pLatencyTime) = 0;
 714
 715};
 716#ifdef __CRT_UUID_DECL
 717__CRT_UUID_DECL(IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41)
 718#endif
 719#else
 720typedef struct IMediaObjectInPlaceVtbl {
 721    BEGIN_INTERFACE
 722
 723    /*** IUnknown methods ***/
 724    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 725        IMediaObjectInPlace *This,
 726        REFIID riid,
 727        void **ppvObject);
 728
 729    ULONG (STDMETHODCALLTYPE *AddRef)(
 730        IMediaObjectInPlace *This);
 731
 732    ULONG (STDMETHODCALLTYPE *Release)(
 733        IMediaObjectInPlace *This);
 734
 735    /*** IMediaObjectInPlace methods ***/
 736    HRESULT (STDMETHODCALLTYPE *Process)(
 737        IMediaObjectInPlace *This,
 738        ULONG ulSize,
 739        BYTE *pData,
 740        REFERENCE_TIME refTimeStart,
 741        DWORD dwFlags);
 742
 743    HRESULT (STDMETHODCALLTYPE *Clone)(
 744        IMediaObjectInPlace *This,
 745        IMediaObjectInPlace **ppMediaObject);
 746
 747    HRESULT (STDMETHODCALLTYPE *GetLatency)(
 748        IMediaObjectInPlace *This,
 749        REFERENCE_TIME *pLatencyTime);
 750
 751    END_INTERFACE
 752} IMediaObjectInPlaceVtbl;
 753
 754interface IMediaObjectInPlace {
 755    CONST_VTBL IMediaObjectInPlaceVtbl* lpVtbl;
 756};
 757
 758#ifdef COBJMACROS
 759#ifndef WIDL_C_INLINE_WRAPPERS
 760/*** IUnknown methods ***/
 761#define IMediaObjectInPlace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 762#define IMediaObjectInPlace_AddRef(This) (This)->lpVtbl->AddRef(This)
 763#define IMediaObjectInPlace_Release(This) (This)->lpVtbl->Release(This)
 764/*** IMediaObjectInPlace methods ***/
 765#define IMediaObjectInPlace_Process(This,ulSize,pData,refTimeStart,dwFlags) (This)->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags)
 766#define IMediaObjectInPlace_Clone(This,ppMediaObject) (This)->lpVtbl->Clone(This,ppMediaObject)
 767#define IMediaObjectInPlace_GetLatency(This,pLatencyTime) (This)->lpVtbl->GetLatency(This,pLatencyTime)
 768#else
 769/*** IUnknown methods ***/
 770static inline HRESULT IMediaObjectInPlace_QueryInterface(IMediaObjectInPlace* This,REFIID riid,void **ppvObject) {
 771    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 772}
 773static inline ULONG IMediaObjectInPlace_AddRef(IMediaObjectInPlace* This) {
 774    return This->lpVtbl->AddRef(This);
 775}
 776static inline ULONG IMediaObjectInPlace_Release(IMediaObjectInPlace* This) {
 777    return This->lpVtbl->Release(This);
 778}
 779/*** IMediaObjectInPlace methods ***/
 780static inline HRESULT IMediaObjectInPlace_Process(IMediaObjectInPlace* This,ULONG ulSize,BYTE *pData,REFERENCE_TIME refTimeStart,DWORD dwFlags) {
 781    return This->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags);
 782}
 783static inline HRESULT IMediaObjectInPlace_Clone(IMediaObjectInPlace* This,IMediaObjectInPlace **ppMediaObject) {
 784    return This->lpVtbl->Clone(This,ppMediaObject);
 785}
 786static inline HRESULT IMediaObjectInPlace_GetLatency(IMediaObjectInPlace* This,REFERENCE_TIME *pLatencyTime) {
 787    return This->lpVtbl->GetLatency(This,pLatencyTime);
 788}
 789#endif
 790#endif
 791
 792#endif
 793
 794
 795#endif  /* __IMediaObjectInPlace_INTERFACE_DEFINED__ */
 796
 797enum _DMO_QUALITY_STATUS_FLAGS {
 798    DMO_QUALITY_STATUS_ENABLED = 0x1
 799};
 800/*****************************************************************************
 801 * IDMOQualityControl interface
 802 */
 803#ifndef __IDMOQualityControl_INTERFACE_DEFINED__
 804#define __IDMOQualityControl_INTERFACE_DEFINED__
 805
 806DEFINE_GUID(IID_IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60);
 807#if defined(__cplusplus) && !defined(CINTERFACE)
 808MIDL_INTERFACE("65abea96-cf36-453f-af8a-705e98f16260")
 809IDMOQualityControl : public IUnknown
 810{
 811    virtual HRESULT STDMETHODCALLTYPE SetNow(
 812        REFERENCE_TIME now) = 0;
 813
 814    virtual HRESULT STDMETHODCALLTYPE SetStatus(
 815        DWORD flags) = 0;
 816
 817    virtual HRESULT STDMETHODCALLTYPE GetStatus(
 818        DWORD *flags) = 0;
 819
 820};
 821#ifdef __CRT_UUID_DECL
 822__CRT_UUID_DECL(IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60)
 823#endif
 824#else
 825typedef struct IDMOQualityControlVtbl {
 826    BEGIN_INTERFACE
 827
 828    /*** IUnknown methods ***/
 829    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 830        IDMOQualityControl *This,
 831        REFIID riid,
 832        void **ppvObject);
 833
 834    ULONG (STDMETHODCALLTYPE *AddRef)(
 835        IDMOQualityControl *This);
 836
 837    ULONG (STDMETHODCALLTYPE *Release)(
 838        IDMOQualityControl *This);
 839
 840    /*** IDMOQualityControl methods ***/
 841    HRESULT (STDMETHODCALLTYPE *SetNow)(
 842        IDMOQualityControl *This,
 843        REFERENCE_TIME now);
 844
 845    HRESULT (STDMETHODCALLTYPE *SetStatus)(
 846        IDMOQualityControl *This,
 847        DWORD flags);
 848
 849    HRESULT (STDMETHODCALLTYPE *GetStatus)(
 850        IDMOQualityControl *This,
 851        DWORD *flags);
 852
 853    END_INTERFACE
 854} IDMOQualityControlVtbl;
 855
 856interface IDMOQualityControl {
 857    CONST_VTBL IDMOQualityControlVtbl* lpVtbl;
 858};
 859
 860#ifdef COBJMACROS
 861#ifndef WIDL_C_INLINE_WRAPPERS
 862/*** IUnknown methods ***/
 863#define IDMOQualityControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 864#define IDMOQualityControl_AddRef(This) (This)->lpVtbl->AddRef(This)
 865#define IDMOQualityControl_Release(This) (This)->lpVtbl->Release(This)
 866/*** IDMOQualityControl methods ***/
 867#define IDMOQualityControl_SetNow(This,now) (This)->lpVtbl->SetNow(This,now)
 868#define IDMOQualityControl_SetStatus(This,flags) (This)->lpVtbl->SetStatus(This,flags)
 869#define IDMOQualityControl_GetStatus(This,flags) (This)->lpVtbl->GetStatus(This,flags)
 870#else
 871/*** IUnknown methods ***/
 872static inline HRESULT IDMOQualityControl_QueryInterface(IDMOQualityControl* This,REFIID riid,void **ppvObject) {
 873    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 874}
 875static inline ULONG IDMOQualityControl_AddRef(IDMOQualityControl* This) {
 876    return This->lpVtbl->AddRef(This);
 877}
 878static inline ULONG IDMOQualityControl_Release(IDMOQualityControl* This) {
 879    return This->lpVtbl->Release(This);
 880}
 881/*** IDMOQualityControl methods ***/
 882static inline HRESULT IDMOQualityControl_SetNow(IDMOQualityControl* This,REFERENCE_TIME now) {
 883    return This->lpVtbl->SetNow(This,now);
 884}
 885static inline HRESULT IDMOQualityControl_SetStatus(IDMOQualityControl* This,DWORD flags) {
 886    return This->lpVtbl->SetStatus(This,flags);
 887}
 888static inline HRESULT IDMOQualityControl_GetStatus(IDMOQualityControl* This,DWORD *flags) {
 889    return This->lpVtbl->GetStatus(This,flags);
 890}
 891#endif
 892#endif
 893
 894#endif
 895
 896
 897#endif  /* __IDMOQualityControl_INTERFACE_DEFINED__ */
 898
 899enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS {
 900    DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x1
 901};
 902/*****************************************************************************
 903 * IDMOVideoOutputOptimizations interface
 904 */
 905#ifndef __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
 906#define __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__
 907
 908DEFINE_GUID(IID_IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac);
 909#if defined(__cplusplus) && !defined(CINTERFACE)
 910MIDL_INTERFACE("be8f4f4e-5b16-4d29-b350-7f6b5d9298ac")
 911IDMOVideoOutputOptimizations : public IUnknown
 912{
 913    virtual HRESULT STDMETHODCALLTYPE QueryOperationModePreferences(
 914        ULONG index,
 915        DWORD *flags) = 0;
 916
 917    virtual HRESULT STDMETHODCALLTYPE SetOperationMode(
 918        ULONG index,
 919        DWORD flags) = 0;
 920
 921    virtual HRESULT STDMETHODCALLTYPE GetCurrentOperationMode(
 922        ULONG index,
 923        DWORD *flags) = 0;
 924
 925    virtual HRESULT STDMETHODCALLTYPE GetCurrentSampleRequirements(
 926        ULONG index,
 927        DWORD *flags) = 0;
 928
 929};
 930#ifdef __CRT_UUID_DECL
 931__CRT_UUID_DECL(IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac)
 932#endif
 933#else
 934typedef struct IDMOVideoOutputOptimizationsVtbl {
 935    BEGIN_INTERFACE
 936
 937    /*** IUnknown methods ***/
 938    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 939        IDMOVideoOutputOptimizations *This,
 940        REFIID riid,
 941        void **ppvObject);
 942
 943    ULONG (STDMETHODCALLTYPE *AddRef)(
 944        IDMOVideoOutputOptimizations *This);
 945
 946    ULONG (STDMETHODCALLTYPE *Release)(
 947        IDMOVideoOutputOptimizations *This);
 948
 949    /*** IDMOVideoOutputOptimizations methods ***/
 950    HRESULT (STDMETHODCALLTYPE *QueryOperationModePreferences)(
 951        IDMOVideoOutputOptimizations *This,
 952        ULONG index,
 953        DWORD *flags);
 954
 955    HRESULT (STDMETHODCALLTYPE *SetOperationMode)(
 956        IDMOVideoOutputOptimizations *This,
 957        ULONG index,
 958        DWORD flags);
 959
 960    HRESULT (STDMETHODCALLTYPE *GetCurrentOperationMode)(
 961        IDMOVideoOutputOptimizations *This,
 962        ULONG index,
 963        DWORD *flags);
 964
 965    HRESULT (STDMETHODCALLTYPE *GetCurrentSampleRequirements)(
 966        IDMOVideoOutputOptimizations *This,
 967        ULONG index,
 968        DWORD *flags);
 969
 970    END_INTERFACE
 971} IDMOVideoOutputOptimizationsVtbl;
 972
 973interface IDMOVideoOutputOptimizations {
 974    CONST_VTBL IDMOVideoOutputOptimizationsVtbl* lpVtbl;
 975};
 976
 977#ifdef COBJMACROS
 978#ifndef WIDL_C_INLINE_WRAPPERS
 979/*** IUnknown methods ***/
 980#define IDMOVideoOutputOptimizations_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 981#define IDMOVideoOutputOptimizations_AddRef(This) (This)->lpVtbl->AddRef(This)
 982#define IDMOVideoOutputOptimizations_Release(This) (This)->lpVtbl->Release(This)
 983/*** IDMOVideoOutputOptimizations methods ***/
 984#define IDMOVideoOutputOptimizations_QueryOperationModePreferences(This,index,flags) (This)->lpVtbl->QueryOperationModePreferences(This,index,flags)
 985#define IDMOVideoOutputOptimizations_SetOperationMode(This,index,flags) (This)->lpVtbl->SetOperationMode(This,index,flags)
 986#define IDMOVideoOutputOptimizations_GetCurrentOperationMode(This,index,flags) (This)->lpVtbl->GetCurrentOperationMode(This,index,flags)
 987#define IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(This,index,flags) (This)->lpVtbl->GetCurrentSampleRequirements(This,index,flags)
 988#else
 989/*** IUnknown methods ***/
 990static inline HRESULT IDMOVideoOutputOptimizations_QueryInterface(IDMOVideoOutputOptimizations* This,REFIID riid,void **ppvObject) {
 991    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 992}
 993static inline ULONG IDMOVideoOutputOptimizations_AddRef(IDMOVideoOutputOptimizations* This) {
 994    return This->lpVtbl->AddRef(This);
 995}
 996static inline ULONG IDMOVideoOutputOptimizations_Release(IDMOVideoOutputOptimizations* This) {
 997    return This->lpVtbl->Release(This);
 998}
 999/*** IDMOVideoOutputOptimizations methods ***/
1000static inline HRESULT IDMOVideoOutputOptimizations_QueryOperationModePreferences(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
1001    return This->lpVtbl->QueryOperationModePreferences(This,index,flags);
1002}
1003static inline HRESULT IDMOVideoOutputOptimizations_SetOperationMode(IDMOVideoOutputOptimizations* This,ULONG index,DWORD flags) {
1004    return This->lpVtbl->SetOperationMode(This,index,flags);
1005}
1006static inline HRESULT IDMOVideoOutputOptimizations_GetCurrentOperationMode(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
1007    return This->lpVtbl->GetCurrentOperationMode(This,index,flags);
1008}
1009static inline HRESULT IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) {
1010    return This->lpVtbl->GetCurrentSampleRequirements(This,index,flags);
1011}
1012#endif
1013#endif
1014
1015#endif
1016
1017
1018#endif  /* __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ */
1019
1020/* Begin additional prototypes for all interfaces */
1021
1022
1023/* End additional prototypes */
1024
1025#ifdef __cplusplus
1026}
1027#endif
1028
1029#endif /* __mediaobj_h__ */