1/*** Autogenerated by WIDL 10.4 from include/vmr9.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 __vmr9_h__
  17#define __vmr9_h__
  18
  19/* Forward declarations */
  20
  21#ifndef __IVMRImagePresenter9_FWD_DEFINED__
  22#define __IVMRImagePresenter9_FWD_DEFINED__
  23typedef interface IVMRImagePresenter9 IVMRImagePresenter9;
  24#ifdef __cplusplus
  25interface IVMRImagePresenter9;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IVMRSurfaceAllocator9_FWD_DEFINED__
  30#define __IVMRSurfaceAllocator9_FWD_DEFINED__
  31typedef interface IVMRSurfaceAllocator9 IVMRSurfaceAllocator9;
  32#ifdef __cplusplus
  33interface IVMRSurfaceAllocator9;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
  38#define __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
  39typedef interface IVMRSurfaceAllocatorEx9 IVMRSurfaceAllocatorEx9;
  40#ifdef __cplusplus
  41interface IVMRSurfaceAllocatorEx9;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
  46#define __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
  47typedef interface IVMRSurfaceAllocatorNotify9 IVMRSurfaceAllocatorNotify9;
  48#ifdef __cplusplus
  49interface IVMRSurfaceAllocatorNotify9;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IVMRWindowlessControl9_FWD_DEFINED__
  54#define __IVMRWindowlessControl9_FWD_DEFINED__
  55typedef interface IVMRWindowlessControl9 IVMRWindowlessControl9;
  56#ifdef __cplusplus
  57interface IVMRWindowlessControl9;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IVMRMixerControl9_FWD_DEFINED__
  62#define __IVMRMixerControl9_FWD_DEFINED__
  63typedef interface IVMRMixerControl9 IVMRMixerControl9;
  64#ifdef __cplusplus
  65interface IVMRMixerControl9;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IVMRMixerBitmap9_FWD_DEFINED__
  70#define __IVMRMixerBitmap9_FWD_DEFINED__
  71typedef interface IVMRMixerBitmap9 IVMRMixerBitmap9;
  72#ifdef __cplusplus
  73interface IVMRMixerBitmap9;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IVMRSurface9_FWD_DEFINED__
  78#define __IVMRSurface9_FWD_DEFINED__
  79typedef interface IVMRSurface9 IVMRSurface9;
  80#ifdef __cplusplus
  81interface IVMRSurface9;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IVMRImagePresenterConfig9_FWD_DEFINED__
  86#define __IVMRImagePresenterConfig9_FWD_DEFINED__
  87typedef interface IVMRImagePresenterConfig9 IVMRImagePresenterConfig9;
  88#ifdef __cplusplus
  89interface IVMRImagePresenterConfig9;
  90#endif /* __cplusplus */
  91#endif
  92
  93#ifndef __IVMRVideoStreamControl9_FWD_DEFINED__
  94#define __IVMRVideoStreamControl9_FWD_DEFINED__
  95typedef interface IVMRVideoStreamControl9 IVMRVideoStreamControl9;
  96#ifdef __cplusplus
  97interface IVMRVideoStreamControl9;
  98#endif /* __cplusplus */
  99#endif
 100
 101#ifndef __IVMRFilterConfig9_FWD_DEFINED__
 102#define __IVMRFilterConfig9_FWD_DEFINED__
 103typedef interface IVMRFilterConfig9 IVMRFilterConfig9;
 104#ifdef __cplusplus
 105interface IVMRFilterConfig9;
 106#endif /* __cplusplus */
 107#endif
 108
 109#ifndef __IVMRAspectRatioControl9_FWD_DEFINED__
 110#define __IVMRAspectRatioControl9_FWD_DEFINED__
 111typedef interface IVMRAspectRatioControl9 IVMRAspectRatioControl9;
 112#ifdef __cplusplus
 113interface IVMRAspectRatioControl9;
 114#endif /* __cplusplus */
 115#endif
 116
 117#ifndef __IVMRMonitorConfig9_FWD_DEFINED__
 118#define __IVMRMonitorConfig9_FWD_DEFINED__
 119typedef interface IVMRMonitorConfig9 IVMRMonitorConfig9;
 120#ifdef __cplusplus
 121interface IVMRMonitorConfig9;
 122#endif /* __cplusplus */
 123#endif
 124
 125#ifndef __IVMRDeinterlaceControl9_FWD_DEFINED__
 126#define __IVMRDeinterlaceControl9_FWD_DEFINED__
 127typedef interface IVMRDeinterlaceControl9 IVMRDeinterlaceControl9;
 128#ifdef __cplusplus
 129interface IVMRDeinterlaceControl9;
 130#endif /* __cplusplus */
 131#endif
 132
 133#ifndef __IVMRImageCompositor9_FWD_DEFINED__
 134#define __IVMRImageCompositor9_FWD_DEFINED__
 135typedef interface IVMRImageCompositor9 IVMRImageCompositor9;
 136#ifdef __cplusplus
 137interface IVMRImageCompositor9;
 138#endif /* __cplusplus */
 139#endif
 140
 141/* Headers for imported files */
 142
 143#include <unknwn.h>
 144
 145#ifdef __cplusplus
 146extern "C" {
 147#endif
 148
 149#if 0
 150#ifndef __IDirect3DSurface9_FWD_DEFINED__
 151#define __IDirect3DSurface9_FWD_DEFINED__
 152typedef interface IDirect3DSurface9 IDirect3DSurface9;
 153#ifdef __cplusplus
 154interface IDirect3DSurface9;
 155#endif /* __cplusplus */
 156#endif
 157
 158#ifndef __IDirect3DDevice9_FWD_DEFINED__
 159#define __IDirect3DDevice9_FWD_DEFINED__
 160typedef interface IDirect3DDevice9 IDirect3DDevice9;
 161#ifdef __cplusplus
 162interface IDirect3DDevice9;
 163#endif /* __cplusplus */
 164#endif
 165
 166typedef LONGLONG REFERENCE_TIME;
 167typedef DWORD D3DFORMAT;
 168typedef DWORD D3DPOOL;
 169typedef HANDLE HMONITOR;
 170typedef struct __WIDL_vmr9_generated_name_0000000C {
 171    char dummy;
 172} AM_MEDIA_TYPE;
 173typedef struct __WIDL_vmr9_generated_name_0000000D {
 174    char dummy;
 175} D3DCOLOR;
 176#endif
 177#ifndef __IVMRSurface9_FWD_DEFINED__
 178#define __IVMRSurface9_FWD_DEFINED__
 179typedef interface IVMRSurface9 IVMRSurface9;
 180#ifdef __cplusplus
 181interface IVMRSurface9;
 182#endif /* __cplusplus */
 183#endif
 184
 185#ifndef __IVMRSurfaceAllocator9_FWD_DEFINED__
 186#define __IVMRSurfaceAllocator9_FWD_DEFINED__
 187typedef interface IVMRSurfaceAllocator9 IVMRSurfaceAllocator9;
 188#ifdef __cplusplus
 189interface IVMRSurfaceAllocator9;
 190#endif /* __cplusplus */
 191#endif
 192
 193#ifndef __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
 194#define __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
 195typedef interface IVMRSurfaceAllocatorEx9 IVMRSurfaceAllocatorEx9;
 196#ifdef __cplusplus
 197interface IVMRSurfaceAllocatorEx9;
 198#endif /* __cplusplus */
 199#endif
 200
 201#ifndef __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
 202#define __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
 203typedef interface IVMRSurfaceAllocatorNotify9 IVMRSurfaceAllocatorNotify9;
 204#ifdef __cplusplus
 205interface IVMRSurfaceAllocatorNotify9;
 206#endif /* __cplusplus */
 207#endif
 208
 209#ifndef __IVMRImagePresenter9_FWD_DEFINED__
 210#define __IVMRImagePresenter9_FWD_DEFINED__
 211typedef interface IVMRImagePresenter9 IVMRImagePresenter9;
 212#ifdef __cplusplus
 213interface IVMRImagePresenter9;
 214#endif /* __cplusplus */
 215#endif
 216
 217#ifndef __IVMRImagePresenterConfig9_FWD_DEFINED__
 218#define __IVMRImagePresenterConfig9_FWD_DEFINED__
 219typedef interface IVMRImagePresenterConfig9 IVMRImagePresenterConfig9;
 220#ifdef __cplusplus
 221interface IVMRImagePresenterConfig9;
 222#endif /* __cplusplus */
 223#endif
 224
 225#ifndef __IVMRMonitorConfig9_FWD_DEFINED__
 226#define __IVMRMonitorConfig9_FWD_DEFINED__
 227typedef interface IVMRMonitorConfig9 IVMRMonitorConfig9;
 228#ifdef __cplusplus
 229interface IVMRMonitorConfig9;
 230#endif /* __cplusplus */
 231#endif
 232
 233#ifndef __IVMRWindowlessControl9_FWD_DEFINED__
 234#define __IVMRWindowlessControl9_FWD_DEFINED__
 235typedef interface IVMRWindowlessControl9 IVMRWindowlessControl9;
 236#ifdef __cplusplus
 237interface IVMRWindowlessControl9;
 238#endif /* __cplusplus */
 239#endif
 240
 241#ifndef __IVMRMixerControl9_FWD_DEFINED__
 242#define __IVMRMixerControl9_FWD_DEFINED__
 243typedef interface IVMRMixerControl9 IVMRMixerControl9;
 244#ifdef __cplusplus
 245interface IVMRMixerControl9;
 246#endif /* __cplusplus */
 247#endif
 248
 249#ifndef __IVMRImageCompositor9_FWD_DEFINED__
 250#define __IVMRImageCompositor9_FWD_DEFINED__
 251typedef interface IVMRImageCompositor9 IVMRImageCompositor9;
 252#ifdef __cplusplus
 253interface IVMRImageCompositor9;
 254#endif /* __cplusplus */
 255#endif
 256
 257#ifndef __IVMRMixerBitmap9_FWD_DEFINED__
 258#define __IVMRMixerBitmap9_FWD_DEFINED__
 259typedef interface IVMRMixerBitmap9 IVMRMixerBitmap9;
 260#ifdef __cplusplus
 261interface IVMRMixerBitmap9;
 262#endif /* __cplusplus */
 263#endif
 264
 265#ifndef __IVMRFilterConfig9_FWD_DEFINED__
 266#define __IVMRFilterConfig9_FWD_DEFINED__
 267typedef interface IVMRFilterConfig9 IVMRFilterConfig9;
 268#ifdef __cplusplus
 269interface IVMRFilterConfig9;
 270#endif /* __cplusplus */
 271#endif
 272
 273#ifndef __IVMRAspectRatioControl9_FWD_DEFINED__
 274#define __IVMRAspectRatioControl9_FWD_DEFINED__
 275typedef interface IVMRAspectRatioControl9 IVMRAspectRatioControl9;
 276#ifdef __cplusplus
 277interface IVMRAspectRatioControl9;
 278#endif /* __cplusplus */
 279#endif
 280
 281#ifndef __IVMRVideoStreamControl9_FWD_DEFINED__
 282#define __IVMRVideoStreamControl9_FWD_DEFINED__
 283typedef interface IVMRVideoStreamControl9 IVMRVideoStreamControl9;
 284#ifdef __cplusplus
 285interface IVMRVideoStreamControl9;
 286#endif /* __cplusplus */
 287#endif
 288
 289typedef enum _VMR9PresentationFlags {
 290    VMR9Sample_SyncPoint = 0x1,
 291    VMR9Sample_Preroll = 0x2,
 292    VMR9Sample_Discontinuity = 0x4,
 293    VMR9Sample_TimeValid = 0x8,
 294    VMR9Sample_SrcDstRectsValid = 0x10
 295} VMR9PresentationFlags;
 296typedef struct _VMR9PresentationInfo {
 297    DWORD dwFlags;
 298    IDirect3DSurface9 *lpSurf;
 299    REFERENCE_TIME rtStart;
 300    REFERENCE_TIME rtEnd;
 301    SIZE szAspectRatio;
 302    RECT rcSrc;
 303    RECT rcDst;
 304    DWORD dwReserved1;
 305    DWORD dwReserved2;
 306} VMR9PresentationInfo;
 307/*****************************************************************************
 308 * IVMRImagePresenter9 interface
 309 */
 310#ifndef __IVMRImagePresenter9_INTERFACE_DEFINED__
 311#define __IVMRImagePresenter9_INTERFACE_DEFINED__
 312
 313DEFINE_GUID(IID_IVMRImagePresenter9, 0x69188c61, 0x12a3, 0x40f0, 0x8f,0xfc, 0x34,0x2e,0x7b,0x43,0x3f,0xd7);
 314#if defined(__cplusplus) && !defined(CINTERFACE)
 315MIDL_INTERFACE("69188c61-12a3-40f0-8ffc-342e7b433fd7")
 316IVMRImagePresenter9 : public IUnknown
 317{
 318    virtual HRESULT STDMETHODCALLTYPE StartPresenting(
 319        DWORD_PTR id) = 0;
 320
 321    virtual HRESULT STDMETHODCALLTYPE StopPresenting(
 322        DWORD_PTR id) = 0;
 323
 324    virtual HRESULT STDMETHODCALLTYPE PresentImage(
 325        DWORD_PTR id,
 326        VMR9PresentationInfo *info) = 0;
 327
 328};
 329#ifdef __CRT_UUID_DECL
 330__CRT_UUID_DECL(IVMRImagePresenter9, 0x69188c61, 0x12a3, 0x40f0, 0x8f,0xfc, 0x34,0x2e,0x7b,0x43,0x3f,0xd7)
 331#endif
 332#else
 333typedef struct IVMRImagePresenter9Vtbl {
 334    BEGIN_INTERFACE
 335
 336    /*** IUnknown methods ***/
 337    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 338        IVMRImagePresenter9 *This,
 339        REFIID riid,
 340        void **ppvObject);
 341
 342    ULONG (STDMETHODCALLTYPE *AddRef)(
 343        IVMRImagePresenter9 *This);
 344
 345    ULONG (STDMETHODCALLTYPE *Release)(
 346        IVMRImagePresenter9 *This);
 347
 348    /*** IVMRImagePresenter9 methods ***/
 349    HRESULT (STDMETHODCALLTYPE *StartPresenting)(
 350        IVMRImagePresenter9 *This,
 351        DWORD_PTR id);
 352
 353    HRESULT (STDMETHODCALLTYPE *StopPresenting)(
 354        IVMRImagePresenter9 *This,
 355        DWORD_PTR id);
 356
 357    HRESULT (STDMETHODCALLTYPE *PresentImage)(
 358        IVMRImagePresenter9 *This,
 359        DWORD_PTR id,
 360        VMR9PresentationInfo *info);
 361
 362    END_INTERFACE
 363} IVMRImagePresenter9Vtbl;
 364
 365interface IVMRImagePresenter9 {
 366    CONST_VTBL IVMRImagePresenter9Vtbl* lpVtbl;
 367};
 368
 369#ifdef COBJMACROS
 370#ifndef WIDL_C_INLINE_WRAPPERS
 371/*** IUnknown methods ***/
 372#define IVMRImagePresenter9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 373#define IVMRImagePresenter9_AddRef(This) (This)->lpVtbl->AddRef(This)
 374#define IVMRImagePresenter9_Release(This) (This)->lpVtbl->Release(This)
 375/*** IVMRImagePresenter9 methods ***/
 376#define IVMRImagePresenter9_StartPresenting(This,id) (This)->lpVtbl->StartPresenting(This,id)
 377#define IVMRImagePresenter9_StopPresenting(This,id) (This)->lpVtbl->StopPresenting(This,id)
 378#define IVMRImagePresenter9_PresentImage(This,id,info) (This)->lpVtbl->PresentImage(This,id,info)
 379#else
 380/*** IUnknown methods ***/
 381static inline HRESULT IVMRImagePresenter9_QueryInterface(IVMRImagePresenter9* This,REFIID riid,void **ppvObject) {
 382    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 383}
 384static inline ULONG IVMRImagePresenter9_AddRef(IVMRImagePresenter9* This) {
 385    return This->lpVtbl->AddRef(This);
 386}
 387static inline ULONG IVMRImagePresenter9_Release(IVMRImagePresenter9* This) {
 388    return This->lpVtbl->Release(This);
 389}
 390/*** IVMRImagePresenter9 methods ***/
 391static inline HRESULT IVMRImagePresenter9_StartPresenting(IVMRImagePresenter9* This,DWORD_PTR id) {
 392    return This->lpVtbl->StartPresenting(This,id);
 393}
 394static inline HRESULT IVMRImagePresenter9_StopPresenting(IVMRImagePresenter9* This,DWORD_PTR id) {
 395    return This->lpVtbl->StopPresenting(This,id);
 396}
 397static inline HRESULT IVMRImagePresenter9_PresentImage(IVMRImagePresenter9* This,DWORD_PTR id,VMR9PresentationInfo *info) {
 398    return This->lpVtbl->PresentImage(This,id,info);
 399}
 400#endif
 401#endif
 402
 403#endif
 404
 405
 406#endif  /* __IVMRImagePresenter9_INTERFACE_DEFINED__ */
 407
 408typedef enum _VMR9SurfaceAllocationFlags {
 409    VMR9AllocFlag_3DRenderTarget = 0x1,
 410    VMR9AllocFlag_DXVATarget = 0x2,
 411    VMR9AllocFlag_TextureSurface = 0x4,
 412    VMR9AllocFlag_OffscreenSurface = 0x8,
 413    VMR9AllocFlag_RGBDynamicSwitch = 0x10,
 414    VMR9AllocFlag_UsageReserved = 0xe0,
 415    VMR9AllocFlag_UsageMask = 0xff
 416} VMR9SurfaceAllocationFlags;
 417typedef struct _VMR9AllocationInfo {
 418    DWORD dwFlags;
 419    DWORD dwWidth;
 420    DWORD dwHeight;
 421    D3DFORMAT Format;
 422    D3DPOOL Pool;
 423    DWORD MinBuffers;
 424    SIZE szAspectRatio;
 425    SIZE szNativeSize;
 426} VMR9AllocationInfo;
 427/*****************************************************************************
 428 * IVMRSurfaceAllocator9 interface
 429 */
 430#ifndef __IVMRSurfaceAllocator9_INTERFACE_DEFINED__
 431#define __IVMRSurfaceAllocator9_INTERFACE_DEFINED__
 432
 433DEFINE_GUID(IID_IVMRSurfaceAllocator9, 0x8d5148ea, 0x3f5d, 0x46cf, 0x9d,0xf1, 0xd1,0xb8,0x96,0xee,0xdb,0x1f);
 434#if defined(__cplusplus) && !defined(CINTERFACE)
 435MIDL_INTERFACE("8d5148ea-3f5d-46cf-9df1-d1b896eedb1f")
 436IVMRSurfaceAllocator9 : public IUnknown
 437{
 438    virtual HRESULT STDMETHODCALLTYPE InitializeDevice(
 439        DWORD_PTR id,
 440        VMR9AllocationInfo *allocinfo,
 441        DWORD *numbuffers) = 0;
 442
 443    virtual HRESULT STDMETHODCALLTYPE TerminateDevice(
 444        DWORD_PTR id) = 0;
 445
 446    virtual HRESULT STDMETHODCALLTYPE GetSurface(
 447        DWORD_PTR id,
 448        DWORD surfaceindex,
 449        DWORD flags,
 450        IDirect3DSurface9 **surface) = 0;
 451
 452    virtual HRESULT STDMETHODCALLTYPE AdviseNotify(
 453        IVMRSurfaceAllocatorNotify9 *allocnotify) = 0;
 454
 455};
 456#ifdef __CRT_UUID_DECL
 457__CRT_UUID_DECL(IVMRSurfaceAllocator9, 0x8d5148ea, 0x3f5d, 0x46cf, 0x9d,0xf1, 0xd1,0xb8,0x96,0xee,0xdb,0x1f)
 458#endif
 459#else
 460typedef struct IVMRSurfaceAllocator9Vtbl {
 461    BEGIN_INTERFACE
 462
 463    /*** IUnknown methods ***/
 464    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 465        IVMRSurfaceAllocator9 *This,
 466        REFIID riid,
 467        void **ppvObject);
 468
 469    ULONG (STDMETHODCALLTYPE *AddRef)(
 470        IVMRSurfaceAllocator9 *This);
 471
 472    ULONG (STDMETHODCALLTYPE *Release)(
 473        IVMRSurfaceAllocator9 *This);
 474
 475    /*** IVMRSurfaceAllocator9 methods ***/
 476    HRESULT (STDMETHODCALLTYPE *InitializeDevice)(
 477        IVMRSurfaceAllocator9 *This,
 478        DWORD_PTR id,
 479        VMR9AllocationInfo *allocinfo,
 480        DWORD *numbuffers);
 481
 482    HRESULT (STDMETHODCALLTYPE *TerminateDevice)(
 483        IVMRSurfaceAllocator9 *This,
 484        DWORD_PTR id);
 485
 486    HRESULT (STDMETHODCALLTYPE *GetSurface)(
 487        IVMRSurfaceAllocator9 *This,
 488        DWORD_PTR id,
 489        DWORD surfaceindex,
 490        DWORD flags,
 491        IDirect3DSurface9 **surface);
 492
 493    HRESULT (STDMETHODCALLTYPE *AdviseNotify)(
 494        IVMRSurfaceAllocator9 *This,
 495        IVMRSurfaceAllocatorNotify9 *allocnotify);
 496
 497    END_INTERFACE
 498} IVMRSurfaceAllocator9Vtbl;
 499
 500interface IVMRSurfaceAllocator9 {
 501    CONST_VTBL IVMRSurfaceAllocator9Vtbl* lpVtbl;
 502};
 503
 504#ifdef COBJMACROS
 505#ifndef WIDL_C_INLINE_WRAPPERS
 506/*** IUnknown methods ***/
 507#define IVMRSurfaceAllocator9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 508#define IVMRSurfaceAllocator9_AddRef(This) (This)->lpVtbl->AddRef(This)
 509#define IVMRSurfaceAllocator9_Release(This) (This)->lpVtbl->Release(This)
 510/*** IVMRSurfaceAllocator9 methods ***/
 511#define IVMRSurfaceAllocator9_InitializeDevice(This,id,allocinfo,numbuffers) (This)->lpVtbl->InitializeDevice(This,id,allocinfo,numbuffers)
 512#define IVMRSurfaceAllocator9_TerminateDevice(This,id) (This)->lpVtbl->TerminateDevice(This,id)
 513#define IVMRSurfaceAllocator9_GetSurface(This,id,surfaceindex,flags,surface) (This)->lpVtbl->GetSurface(This,id,surfaceindex,flags,surface)
 514#define IVMRSurfaceAllocator9_AdviseNotify(This,allocnotify) (This)->lpVtbl->AdviseNotify(This,allocnotify)
 515#else
 516/*** IUnknown methods ***/
 517static inline HRESULT IVMRSurfaceAllocator9_QueryInterface(IVMRSurfaceAllocator9* This,REFIID riid,void **ppvObject) {
 518    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 519}
 520static inline ULONG IVMRSurfaceAllocator9_AddRef(IVMRSurfaceAllocator9* This) {
 521    return This->lpVtbl->AddRef(This);
 522}
 523static inline ULONG IVMRSurfaceAllocator9_Release(IVMRSurfaceAllocator9* This) {
 524    return This->lpVtbl->Release(This);
 525}
 526/*** IVMRSurfaceAllocator9 methods ***/
 527static inline HRESULT IVMRSurfaceAllocator9_InitializeDevice(IVMRSurfaceAllocator9* This,DWORD_PTR id,VMR9AllocationInfo *allocinfo,DWORD *numbuffers) {
 528    return This->lpVtbl->InitializeDevice(This,id,allocinfo,numbuffers);
 529}
 530static inline HRESULT IVMRSurfaceAllocator9_TerminateDevice(IVMRSurfaceAllocator9* This,DWORD_PTR id) {
 531    return This->lpVtbl->TerminateDevice(This,id);
 532}
 533static inline HRESULT IVMRSurfaceAllocator9_GetSurface(IVMRSurfaceAllocator9* This,DWORD_PTR id,DWORD surfaceindex,DWORD flags,IDirect3DSurface9 **surface) {
 534    return This->lpVtbl->GetSurface(This,id,surfaceindex,flags,surface);
 535}
 536static inline HRESULT IVMRSurfaceAllocator9_AdviseNotify(IVMRSurfaceAllocator9* This,IVMRSurfaceAllocatorNotify9 *allocnotify) {
 537    return This->lpVtbl->AdviseNotify(This,allocnotify);
 538}
 539#endif
 540#endif
 541
 542#endif
 543
 544
 545#endif  /* __IVMRSurfaceAllocator9_INTERFACE_DEFINED__ */
 546
 547/*****************************************************************************
 548 * IVMRSurfaceAllocatorEx9 interface
 549 */
 550#ifndef __IVMRSurfaceAllocatorEx9_INTERFACE_DEFINED__
 551#define __IVMRSurfaceAllocatorEx9_INTERFACE_DEFINED__
 552
 553DEFINE_GUID(IID_IVMRSurfaceAllocatorEx9, 0x6de9a68a, 0xa928, 0x4522, 0xbf,0x57, 0x65,0x5a,0xe3,0x86,0x64,0x56);
 554#if defined(__cplusplus) && !defined(CINTERFACE)
 555MIDL_INTERFACE("6de9a68a-a928-4522-bf57-655ae3866456")
 556IVMRSurfaceAllocatorEx9 : public IVMRSurfaceAllocator9
 557{
 558    virtual HRESULT STDMETHODCALLTYPE GetSurfaceEx(
 559        DWORD_PTR id,
 560        DWORD surfaceindex,
 561        DWORD flags,
 562        IDirect3DSurface9 **surface,
 563        RECT *dest) = 0;
 564
 565};
 566#ifdef __CRT_UUID_DECL
 567__CRT_UUID_DECL(IVMRSurfaceAllocatorEx9, 0x6de9a68a, 0xa928, 0x4522, 0xbf,0x57, 0x65,0x5a,0xe3,0x86,0x64,0x56)
 568#endif
 569#else
 570typedef struct IVMRSurfaceAllocatorEx9Vtbl {
 571    BEGIN_INTERFACE
 572
 573    /*** IUnknown methods ***/
 574    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 575        IVMRSurfaceAllocatorEx9 *This,
 576        REFIID riid,
 577        void **ppvObject);
 578
 579    ULONG (STDMETHODCALLTYPE *AddRef)(
 580        IVMRSurfaceAllocatorEx9 *This);
 581
 582    ULONG (STDMETHODCALLTYPE *Release)(
 583        IVMRSurfaceAllocatorEx9 *This);
 584
 585    /*** IVMRSurfaceAllocator9 methods ***/
 586    HRESULT (STDMETHODCALLTYPE *InitializeDevice)(
 587        IVMRSurfaceAllocatorEx9 *This,
 588        DWORD_PTR id,
 589        VMR9AllocationInfo *allocinfo,
 590        DWORD *numbuffers);
 591
 592    HRESULT (STDMETHODCALLTYPE *TerminateDevice)(
 593        IVMRSurfaceAllocatorEx9 *This,
 594        DWORD_PTR id);
 595
 596    HRESULT (STDMETHODCALLTYPE *GetSurface)(
 597        IVMRSurfaceAllocatorEx9 *This,
 598        DWORD_PTR id,
 599        DWORD surfaceindex,
 600        DWORD flags,
 601        IDirect3DSurface9 **surface);
 602
 603    HRESULT (STDMETHODCALLTYPE *AdviseNotify)(
 604        IVMRSurfaceAllocatorEx9 *This,
 605        IVMRSurfaceAllocatorNotify9 *allocnotify);
 606
 607    /*** IVMRSurfaceAllocatorEx9 methods ***/
 608    HRESULT (STDMETHODCALLTYPE *GetSurfaceEx)(
 609        IVMRSurfaceAllocatorEx9 *This,
 610        DWORD_PTR id,
 611        DWORD surfaceindex,
 612        DWORD flags,
 613        IDirect3DSurface9 **surface,
 614        RECT *dest);
 615
 616    END_INTERFACE
 617} IVMRSurfaceAllocatorEx9Vtbl;
 618
 619interface IVMRSurfaceAllocatorEx9 {
 620    CONST_VTBL IVMRSurfaceAllocatorEx9Vtbl* lpVtbl;
 621};
 622
 623#ifdef COBJMACROS
 624#ifndef WIDL_C_INLINE_WRAPPERS
 625/*** IUnknown methods ***/
 626#define IVMRSurfaceAllocatorEx9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 627#define IVMRSurfaceAllocatorEx9_AddRef(This) (This)->lpVtbl->AddRef(This)
 628#define IVMRSurfaceAllocatorEx9_Release(This) (This)->lpVtbl->Release(This)
 629/*** IVMRSurfaceAllocator9 methods ***/
 630#define IVMRSurfaceAllocatorEx9_InitializeDevice(This,id,allocinfo,numbuffers) (This)->lpVtbl->InitializeDevice(This,id,allocinfo,numbuffers)
 631#define IVMRSurfaceAllocatorEx9_TerminateDevice(This,id) (This)->lpVtbl->TerminateDevice(This,id)
 632#define IVMRSurfaceAllocatorEx9_GetSurface(This,id,surfaceindex,flags,surface) (This)->lpVtbl->GetSurface(This,id,surfaceindex,flags,surface)
 633#define IVMRSurfaceAllocatorEx9_AdviseNotify(This,allocnotify) (This)->lpVtbl->AdviseNotify(This,allocnotify)
 634/*** IVMRSurfaceAllocatorEx9 methods ***/
 635#define IVMRSurfaceAllocatorEx9_GetSurfaceEx(This,id,surfaceindex,flags,surface,dest) (This)->lpVtbl->GetSurfaceEx(This,id,surfaceindex,flags,surface,dest)
 636#else
 637/*** IUnknown methods ***/
 638static inline HRESULT IVMRSurfaceAllocatorEx9_QueryInterface(IVMRSurfaceAllocatorEx9* This,REFIID riid,void **ppvObject) {
 639    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 640}
 641static inline ULONG IVMRSurfaceAllocatorEx9_AddRef(IVMRSurfaceAllocatorEx9* This) {
 642    return This->lpVtbl->AddRef(This);
 643}
 644static inline ULONG IVMRSurfaceAllocatorEx9_Release(IVMRSurfaceAllocatorEx9* This) {
 645    return This->lpVtbl->Release(This);
 646}
 647/*** IVMRSurfaceAllocator9 methods ***/
 648static inline HRESULT IVMRSurfaceAllocatorEx9_InitializeDevice(IVMRSurfaceAllocatorEx9* This,DWORD_PTR id,VMR9AllocationInfo *allocinfo,DWORD *numbuffers) {
 649    return This->lpVtbl->InitializeDevice(This,id,allocinfo,numbuffers);
 650}
 651static inline HRESULT IVMRSurfaceAllocatorEx9_TerminateDevice(IVMRSurfaceAllocatorEx9* This,DWORD_PTR id) {
 652    return This->lpVtbl->TerminateDevice(This,id);
 653}
 654static inline HRESULT IVMRSurfaceAllocatorEx9_GetSurface(IVMRSurfaceAllocatorEx9* This,DWORD_PTR id,DWORD surfaceindex,DWORD flags,IDirect3DSurface9 **surface) {
 655    return This->lpVtbl->GetSurface(This,id,surfaceindex,flags,surface);
 656}
 657static inline HRESULT IVMRSurfaceAllocatorEx9_AdviseNotify(IVMRSurfaceAllocatorEx9* This,IVMRSurfaceAllocatorNotify9 *allocnotify) {
 658    return This->lpVtbl->AdviseNotify(This,allocnotify);
 659}
 660/*** IVMRSurfaceAllocatorEx9 methods ***/
 661static inline HRESULT IVMRSurfaceAllocatorEx9_GetSurfaceEx(IVMRSurfaceAllocatorEx9* This,DWORD_PTR id,DWORD surfaceindex,DWORD flags,IDirect3DSurface9 **surface,RECT *dest) {
 662    return This->lpVtbl->GetSurfaceEx(This,id,surfaceindex,flags,surface,dest);
 663}
 664#endif
 665#endif
 666
 667#endif
 668
 669
 670#endif  /* __IVMRSurfaceAllocatorEx9_INTERFACE_DEFINED__ */
 671
 672/*****************************************************************************
 673 * IVMRSurfaceAllocatorNotify9 interface
 674 */
 675#ifndef __IVMRSurfaceAllocatorNotify9_INTERFACE_DEFINED__
 676#define __IVMRSurfaceAllocatorNotify9_INTERFACE_DEFINED__
 677
 678DEFINE_GUID(IID_IVMRSurfaceAllocatorNotify9, 0xdca3f5df, 0xbb3a, 0x4d03, 0xbd,0x81, 0x84,0x61,0x4b,0xfb,0xfa,0x0c);
 679#if defined(__cplusplus) && !defined(CINTERFACE)
 680MIDL_INTERFACE("dca3f5df-bb3a-4d03-bd81-84614bfbfa0c")
 681IVMRSurfaceAllocatorNotify9 : public IUnknown
 682{
 683    virtual HRESULT STDMETHODCALLTYPE AdviseSurfaceAllocator(
 684        DWORD_PTR id,
 685        IVMRSurfaceAllocator9 *alloc) = 0;
 686
 687    virtual HRESULT STDMETHODCALLTYPE SetD3DDevice(
 688        IDirect3DDevice9 *device,
 689        HMONITOR monitor) = 0;
 690
 691    virtual HRESULT STDMETHODCALLTYPE ChangeD3DDevice(
 692        IDirect3DDevice9 *device,
 693        HMONITOR monitor) = 0;
 694
 695    virtual HRESULT STDMETHODCALLTYPE AllocateSurfaceHelper(
 696        VMR9AllocationInfo *allocinfo,
 697        DWORD *numbuffers,
 698        IDirect3DSurface9 **surface) = 0;
 699
 700    virtual HRESULT STDMETHODCALLTYPE NotifyEvent(
 701        LONG code,
 702        LONG_PTR param1,
 703        LONG_PTR param2) = 0;
 704
 705};
 706#ifdef __CRT_UUID_DECL
 707__CRT_UUID_DECL(IVMRSurfaceAllocatorNotify9, 0xdca3f5df, 0xbb3a, 0x4d03, 0xbd,0x81, 0x84,0x61,0x4b,0xfb,0xfa,0x0c)
 708#endif
 709#else
 710typedef struct IVMRSurfaceAllocatorNotify9Vtbl {
 711    BEGIN_INTERFACE
 712
 713    /*** IUnknown methods ***/
 714    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 715        IVMRSurfaceAllocatorNotify9 *This,
 716        REFIID riid,
 717        void **ppvObject);
 718
 719    ULONG (STDMETHODCALLTYPE *AddRef)(
 720        IVMRSurfaceAllocatorNotify9 *This);
 721
 722    ULONG (STDMETHODCALLTYPE *Release)(
 723        IVMRSurfaceAllocatorNotify9 *This);
 724
 725    /*** IVMRSurfaceAllocatorNotify9 methods ***/
 726    HRESULT (STDMETHODCALLTYPE *AdviseSurfaceAllocator)(
 727        IVMRSurfaceAllocatorNotify9 *This,
 728        DWORD_PTR id,
 729        IVMRSurfaceAllocator9 *alloc);
 730
 731    HRESULT (STDMETHODCALLTYPE *SetD3DDevice)(
 732        IVMRSurfaceAllocatorNotify9 *This,
 733        IDirect3DDevice9 *device,
 734        HMONITOR monitor);
 735
 736    HRESULT (STDMETHODCALLTYPE *ChangeD3DDevice)(
 737        IVMRSurfaceAllocatorNotify9 *This,
 738        IDirect3DDevice9 *device,
 739        HMONITOR monitor);
 740
 741    HRESULT (STDMETHODCALLTYPE *AllocateSurfaceHelper)(
 742        IVMRSurfaceAllocatorNotify9 *This,
 743        VMR9AllocationInfo *allocinfo,
 744        DWORD *numbuffers,
 745        IDirect3DSurface9 **surface);
 746
 747    HRESULT (STDMETHODCALLTYPE *NotifyEvent)(
 748        IVMRSurfaceAllocatorNotify9 *This,
 749        LONG code,
 750        LONG_PTR param1,
 751        LONG_PTR param2);
 752
 753    END_INTERFACE
 754} IVMRSurfaceAllocatorNotify9Vtbl;
 755
 756interface IVMRSurfaceAllocatorNotify9 {
 757    CONST_VTBL IVMRSurfaceAllocatorNotify9Vtbl* lpVtbl;
 758};
 759
 760#ifdef COBJMACROS
 761#ifndef WIDL_C_INLINE_WRAPPERS
 762/*** IUnknown methods ***/
 763#define IVMRSurfaceAllocatorNotify9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 764#define IVMRSurfaceAllocatorNotify9_AddRef(This) (This)->lpVtbl->AddRef(This)
 765#define IVMRSurfaceAllocatorNotify9_Release(This) (This)->lpVtbl->Release(This)
 766/*** IVMRSurfaceAllocatorNotify9 methods ***/
 767#define IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator(This,id,alloc) (This)->lpVtbl->AdviseSurfaceAllocator(This,id,alloc)
 768#define IVMRSurfaceAllocatorNotify9_SetD3DDevice(This,device,monitor) (This)->lpVtbl->SetD3DDevice(This,device,monitor)
 769#define IVMRSurfaceAllocatorNotify9_ChangeD3DDevice(This,device,monitor) (This)->lpVtbl->ChangeD3DDevice(This,device,monitor)
 770#define IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper(This,allocinfo,numbuffers,surface) (This)->lpVtbl->AllocateSurfaceHelper(This,allocinfo,numbuffers,surface)
 771#define IVMRSurfaceAllocatorNotify9_NotifyEvent(This,code,param1,param2) (This)->lpVtbl->NotifyEvent(This,code,param1,param2)
 772#else
 773/*** IUnknown methods ***/
 774static inline HRESULT IVMRSurfaceAllocatorNotify9_QueryInterface(IVMRSurfaceAllocatorNotify9* This,REFIID riid,void **ppvObject) {
 775    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 776}
 777static inline ULONG IVMRSurfaceAllocatorNotify9_AddRef(IVMRSurfaceAllocatorNotify9* This) {
 778    return This->lpVtbl->AddRef(This);
 779}
 780static inline ULONG IVMRSurfaceAllocatorNotify9_Release(IVMRSurfaceAllocatorNotify9* This) {
 781    return This->lpVtbl->Release(This);
 782}
 783/*** IVMRSurfaceAllocatorNotify9 methods ***/
 784static inline HRESULT IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator(IVMRSurfaceAllocatorNotify9* This,DWORD_PTR id,IVMRSurfaceAllocator9 *alloc) {
 785    return This->lpVtbl->AdviseSurfaceAllocator(This,id,alloc);
 786}
 787static inline HRESULT IVMRSurfaceAllocatorNotify9_SetD3DDevice(IVMRSurfaceAllocatorNotify9* This,IDirect3DDevice9 *device,HMONITOR monitor) {
 788    return This->lpVtbl->SetD3DDevice(This,device,monitor);
 789}
 790static inline HRESULT IVMRSurfaceAllocatorNotify9_ChangeD3DDevice(IVMRSurfaceAllocatorNotify9* This,IDirect3DDevice9 *device,HMONITOR monitor) {
 791    return This->lpVtbl->ChangeD3DDevice(This,device,monitor);
 792}
 793static inline HRESULT IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper(IVMRSurfaceAllocatorNotify9* This,VMR9AllocationInfo *allocinfo,DWORD *numbuffers,IDirect3DSurface9 **surface) {
 794    return This->lpVtbl->AllocateSurfaceHelper(This,allocinfo,numbuffers,surface);
 795}
 796static inline HRESULT IVMRSurfaceAllocatorNotify9_NotifyEvent(IVMRSurfaceAllocatorNotify9* This,LONG code,LONG_PTR param1,LONG_PTR param2) {
 797    return This->lpVtbl->NotifyEvent(This,code,param1,param2);
 798}
 799#endif
 800#endif
 801
 802#endif
 803
 804
 805#endif  /* __IVMRSurfaceAllocatorNotify9_INTERFACE_DEFINED__ */
 806
 807typedef enum _VMR9AspectRatioMode {
 808    VMR9ARMode_None = 0,
 809    VMR9ARMode_LetterBox = 1
 810} VMR9AspectRatioMode;
 811/*****************************************************************************
 812 * IVMRWindowlessControl9 interface
 813 */
 814#ifndef __IVMRWindowlessControl9_INTERFACE_DEFINED__
 815#define __IVMRWindowlessControl9_INTERFACE_DEFINED__
 816
 817DEFINE_GUID(IID_IVMRWindowlessControl9, 0x8f537d09, 0xf85e, 0x4414, 0xb2,0x3b, 0x50,0x2e,0x54,0xc7,0x99,0x27);
 818#if defined(__cplusplus) && !defined(CINTERFACE)
 819MIDL_INTERFACE("8f537d09-f85e-4414-b23b-502e54c79927")
 820IVMRWindowlessControl9 : public IUnknown
 821{
 822    virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize(
 823        LONG *width,
 824        LONG *height,
 825        LONG *arwidth,
 826        LONG *arheight) = 0;
 827
 828    virtual HRESULT STDMETHODCALLTYPE GetMinIdealVideoSize(
 829        LONG *width,
 830        LONG *height) = 0;
 831
 832    virtual HRESULT STDMETHODCALLTYPE GetMaxIdealVideoSize(
 833        LONG *width,
 834        LONG *height) = 0;
 835
 836    virtual HRESULT STDMETHODCALLTYPE SetVideoPosition(
 837        const RECT *source,
 838        const RECT *dest) = 0;
 839
 840    virtual HRESULT STDMETHODCALLTYPE GetVideoPosition(
 841        RECT *source,
 842        RECT *dest) = 0;
 843
 844    virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode(
 845        DWORD *mode) = 0;
 846
 847    virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode(
 848        DWORD mode) = 0;
 849
 850    virtual HRESULT STDMETHODCALLTYPE SetVideoClippingWindow(
 851        HWND hwnd) = 0;
 852
 853    virtual HRESULT STDMETHODCALLTYPE RepaintVideo(
 854        HWND hwnd,
 855        HDC hdc) = 0;
 856
 857    virtual HRESULT STDMETHODCALLTYPE DisplayModeChanged(
 858        ) = 0;
 859
 860    virtual HRESULT STDMETHODCALLTYPE GetCurrentImage(
 861        BYTE **dib) = 0;
 862
 863    virtual HRESULT STDMETHODCALLTYPE SetBorderColor(
 864        COLORREF color) = 0;
 865
 866    virtual HRESULT STDMETHODCALLTYPE GetBorderColor(
 867        COLORREF *color) = 0;
 868
 869};
 870#ifdef __CRT_UUID_DECL
 871__CRT_UUID_DECL(IVMRWindowlessControl9, 0x8f537d09, 0xf85e, 0x4414, 0xb2,0x3b, 0x50,0x2e,0x54,0xc7,0x99,0x27)
 872#endif
 873#else
 874typedef struct IVMRWindowlessControl9Vtbl {
 875    BEGIN_INTERFACE
 876
 877    /*** IUnknown methods ***/
 878    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 879        IVMRWindowlessControl9 *This,
 880        REFIID riid,
 881        void **ppvObject);
 882
 883    ULONG (STDMETHODCALLTYPE *AddRef)(
 884        IVMRWindowlessControl9 *This);
 885
 886    ULONG (STDMETHODCALLTYPE *Release)(
 887        IVMRWindowlessControl9 *This);
 888
 889    /*** IVMRWindowlessControl9 methods ***/
 890    HRESULT (STDMETHODCALLTYPE *GetNativeVideoSize)(
 891        IVMRWindowlessControl9 *This,
 892        LONG *width,
 893        LONG *height,
 894        LONG *arwidth,
 895        LONG *arheight);
 896
 897    HRESULT (STDMETHODCALLTYPE *GetMinIdealVideoSize)(
 898        IVMRWindowlessControl9 *This,
 899        LONG *width,
 900        LONG *height);
 901
 902    HRESULT (STDMETHODCALLTYPE *GetMaxIdealVideoSize)(
 903        IVMRWindowlessControl9 *This,
 904        LONG *width,
 905        LONG *height);
 906
 907    HRESULT (STDMETHODCALLTYPE *SetVideoPosition)(
 908        IVMRWindowlessControl9 *This,
 909        const RECT *source,
 910        const RECT *dest);
 911
 912    HRESULT (STDMETHODCALLTYPE *GetVideoPosition)(
 913        IVMRWindowlessControl9 *This,
 914        RECT *source,
 915        RECT *dest);
 916
 917    HRESULT (STDMETHODCALLTYPE *GetAspectRatioMode)(
 918        IVMRWindowlessControl9 *This,
 919        DWORD *mode);
 920
 921    HRESULT (STDMETHODCALLTYPE *SetAspectRatioMode)(
 922        IVMRWindowlessControl9 *This,
 923        DWORD mode);
 924
 925    HRESULT (STDMETHODCALLTYPE *SetVideoClippingWindow)(
 926        IVMRWindowlessControl9 *This,
 927        HWND hwnd);
 928
 929    HRESULT (STDMETHODCALLTYPE *RepaintVideo)(
 930        IVMRWindowlessControl9 *This,
 931        HWND hwnd,
 932        HDC hdc);
 933
 934    HRESULT (STDMETHODCALLTYPE *DisplayModeChanged)(
 935        IVMRWindowlessControl9 *This);
 936
 937    HRESULT (STDMETHODCALLTYPE *GetCurrentImage)(
 938        IVMRWindowlessControl9 *This,
 939        BYTE **dib);
 940
 941    HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
 942        IVMRWindowlessControl9 *This,
 943        COLORREF color);
 944
 945    HRESULT (STDMETHODCALLTYPE *GetBorderColor)(
 946        IVMRWindowlessControl9 *This,
 947        COLORREF *color);
 948
 949    END_INTERFACE
 950} IVMRWindowlessControl9Vtbl;
 951
 952interface IVMRWindowlessControl9 {
 953    CONST_VTBL IVMRWindowlessControl9Vtbl* lpVtbl;
 954};
 955
 956#ifdef COBJMACROS
 957#ifndef WIDL_C_INLINE_WRAPPERS
 958/*** IUnknown methods ***/
 959#define IVMRWindowlessControl9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 960#define IVMRWindowlessControl9_AddRef(This) (This)->lpVtbl->AddRef(This)
 961#define IVMRWindowlessControl9_Release(This) (This)->lpVtbl->Release(This)
 962/*** IVMRWindowlessControl9 methods ***/
 963#define IVMRWindowlessControl9_GetNativeVideoSize(This,width,height,arwidth,arheight) (This)->lpVtbl->GetNativeVideoSize(This,width,height,arwidth,arheight)
 964#define IVMRWindowlessControl9_GetMinIdealVideoSize(This,width,height) (This)->lpVtbl->GetMinIdealVideoSize(This,width,height)
 965#define IVMRWindowlessControl9_GetMaxIdealVideoSize(This,width,height) (This)->lpVtbl->GetMaxIdealVideoSize(This,width,height)
 966#define IVMRWindowlessControl9_SetVideoPosition(This,source,dest) (This)->lpVtbl->SetVideoPosition(This,source,dest)
 967#define IVMRWindowlessControl9_GetVideoPosition(This,source,dest) (This)->lpVtbl->GetVideoPosition(This,source,dest)
 968#define IVMRWindowlessControl9_GetAspectRatioMode(This,mode) (This)->lpVtbl->GetAspectRatioMode(This,mode)
 969#define IVMRWindowlessControl9_SetAspectRatioMode(This,mode) (This)->lpVtbl->SetAspectRatioMode(This,mode)
 970#define IVMRWindowlessControl9_SetVideoClippingWindow(This,hwnd) (This)->lpVtbl->SetVideoClippingWindow(This,hwnd)
 971#define IVMRWindowlessControl9_RepaintVideo(This,hwnd,hdc) (This)->lpVtbl->RepaintVideo(This,hwnd,hdc)
 972#define IVMRWindowlessControl9_DisplayModeChanged(This) (This)->lpVtbl->DisplayModeChanged(This)
 973#define IVMRWindowlessControl9_GetCurrentImage(This,dib) (This)->lpVtbl->GetCurrentImage(This,dib)
 974#define IVMRWindowlessControl9_SetBorderColor(This,color) (This)->lpVtbl->SetBorderColor(This,color)
 975#define IVMRWindowlessControl9_GetBorderColor(This,color) (This)->lpVtbl->GetBorderColor(This,color)
 976#else
 977/*** IUnknown methods ***/
 978static inline HRESULT IVMRWindowlessControl9_QueryInterface(IVMRWindowlessControl9* This,REFIID riid,void **ppvObject) {
 979    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 980}
 981static inline ULONG IVMRWindowlessControl9_AddRef(IVMRWindowlessControl9* This) {
 982    return This->lpVtbl->AddRef(This);
 983}
 984static inline ULONG IVMRWindowlessControl9_Release(IVMRWindowlessControl9* This) {
 985    return This->lpVtbl->Release(This);
 986}
 987/*** IVMRWindowlessControl9 methods ***/
 988static inline HRESULT IVMRWindowlessControl9_GetNativeVideoSize(IVMRWindowlessControl9* This,LONG *width,LONG *height,LONG *arwidth,LONG *arheight) {
 989    return This->lpVtbl->GetNativeVideoSize(This,width,height,arwidth,arheight);
 990}
 991static inline HRESULT IVMRWindowlessControl9_GetMinIdealVideoSize(IVMRWindowlessControl9* This,LONG *width,LONG *height) {
 992    return This->lpVtbl->GetMinIdealVideoSize(This,width,height);
 993}
 994static inline HRESULT IVMRWindowlessControl9_GetMaxIdealVideoSize(IVMRWindowlessControl9* This,LONG *width,LONG *height) {
 995    return This->lpVtbl->GetMaxIdealVideoSize(This,width,height);
 996}
 997static inline HRESULT IVMRWindowlessControl9_SetVideoPosition(IVMRWindowlessControl9* This,const RECT *source,const RECT *dest) {
 998    return This->lpVtbl->SetVideoPosition(This,source,dest);
 999}
1000static inline HRESULT IVMRWindowlessControl9_GetVideoPosition(IVMRWindowlessControl9* This,RECT *source,RECT *dest) {
1001    return This->lpVtbl->GetVideoPosition(This,source,dest);
1002}
1003static inline HRESULT IVMRWindowlessControl9_GetAspectRatioMode(IVMRWindowlessControl9* This,DWORD *mode) {
1004    return This->lpVtbl->GetAspectRatioMode(This,mode);
1005}
1006static inline HRESULT IVMRWindowlessControl9_SetAspectRatioMode(IVMRWindowlessControl9* This,DWORD mode) {
1007    return This->lpVtbl->SetAspectRatioMode(This,mode);
1008}
1009static inline HRESULT IVMRWindowlessControl9_SetVideoClippingWindow(IVMRWindowlessControl9* This,HWND hwnd) {
1010    return This->lpVtbl->SetVideoClippingWindow(This,hwnd);
1011}
1012static inline HRESULT IVMRWindowlessControl9_RepaintVideo(IVMRWindowlessControl9* This,HWND hwnd,HDC hdc) {
1013    return This->lpVtbl->RepaintVideo(This,hwnd,hdc);
1014}
1015static inline HRESULT IVMRWindowlessControl9_DisplayModeChanged(IVMRWindowlessControl9* This) {
1016    return This->lpVtbl->DisplayModeChanged(This);
1017}
1018static inline HRESULT IVMRWindowlessControl9_GetCurrentImage(IVMRWindowlessControl9* This,BYTE **dib) {
1019    return This->lpVtbl->GetCurrentImage(This,dib);
1020}
1021static inline HRESULT IVMRWindowlessControl9_SetBorderColor(IVMRWindowlessControl9* This,COLORREF color) {
1022    return This->lpVtbl->SetBorderColor(This,color);
1023}
1024static inline HRESULT IVMRWindowlessControl9_GetBorderColor(IVMRWindowlessControl9* This,COLORREF *color) {
1025    return This->lpVtbl->GetBorderColor(This,color);
1026}
1027#endif
1028#endif
1029
1030#endif
1031
1032
1033#endif  /* __IVMRWindowlessControl9_INTERFACE_DEFINED__ */
1034
1035typedef enum _VMR9MixerPrefs {
1036    MixerPref9_NoDecimation = 0x1,
1037    MixerPref9_DecimateOutput = 0x2,
1038    MixerPref9_ARAdjustXorY = 0x4,
1039    MixerPref9_NonSquareMixing = 0x8,
1040    MixerPref9_DecimateMask = 0xf,
1041    MixerPref9_BiLinearFiltering = 0x10,
1042    MixerPref9_PointFiltering = 0x20,
1043    MixerPref9_AnisotropicFiltering = 0x40,
1044    MixerPref9_PyramidalQuadFiltering = 0x80,
1045    MixerPref9_GaussianQuadFiltering = 0x100,
1046    MixerPref9_FilteringReserved = 0xe00,
1047    MixerPref9_FilteringMask = 0xff0,
1048    MixerPref9_RenderTargetRGB = 0x1000,
1049    MixerPref9_RenderTargetYUV = 0x2000,
1050    MixerPref9_RenderTargetReserved = 0xfc000,
1051    MixerPref9_DynamicSwitchToBOB = 0x100000,
1052    MixerPref9_DynamicDecimateBy2 = 0x200000,
1053    MixerPref9_DynamicReserved = 0xc00000,
1054    MixerPref9_DynamicMask = 0xf00000
1055} VMR9MixerPrefs;
1056typedef struct _VMR9NormalizedRect {
1057    FLOAT left;
1058    FLOAT top;
1059    FLOAT right;
1060    FLOAT bottom;
1061} VMR9NormalizedRect;
1062typedef enum _VMR9ProcAmpControlFlags {
1063    ProcAmpControl9_Brightness = 0x1,
1064    ProcAmpControl9_Contrast = 0x2,
1065    ProcAmpControl9_Hue = 0x4,
1066    ProcAmpControl9_Saturation = 0x8,
1067    ProcAmpControl9_Mask = 0xf
1068} VMR9ProcAmpControlFlags;
1069typedef struct _VMR9ProcAmpControl {
1070    DWORD dwSize;
1071    DWORD dwFlags;
1072    FLOAT Brightness;
1073    FLOAT Contrast;
1074    FLOAT Hue;
1075    FLOAT Saturation;
1076} VMR9ProcAmpControl;
1077typedef struct _VMR9ProcAmpControlRange {
1078    DWORD dwSize;
1079    VMR9ProcAmpControlFlags dwProperty;
1080    FLOAT MinValue;
1081    FLOAT MaxValue;
1082    FLOAT DefaultValue;
1083    FLOAT StepSize;
1084} VMR9ProcAmpControlRange;
1085/*****************************************************************************
1086 * IVMRMixerControl9 interface
1087 */
1088#ifndef __IVMRMixerControl9_INTERFACE_DEFINED__
1089#define __IVMRMixerControl9_INTERFACE_DEFINED__
1090
1091DEFINE_GUID(IID_IVMRMixerControl9, 0x1a777eaa, 0x47c8, 0x4930, 0xb2,0xc9, 0x8f,0xee,0x1c,0x1b,0x0f,0x3b);
1092#if defined(__cplusplus) && !defined(CINTERFACE)
1093MIDL_INTERFACE("1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b")
1094IVMRMixerControl9 : public IUnknown
1095{
1096    virtual HRESULT STDMETHODCALLTYPE SetAlpha(
1097        DWORD streamid,
1098        FLOAT alpha) = 0;
1099
1100    virtual HRESULT STDMETHODCALLTYPE GetAlpha(
1101        DWORD streamid,
1102        FLOAT *alpha) = 0;
1103
1104    virtual HRESULT STDMETHODCALLTYPE SetZOrder(
1105        DWORD streamid,
1106        DWORD zorder) = 0;
1107
1108    virtual HRESULT STDMETHODCALLTYPE GetZOrder(
1109        DWORD streamid,
1110        DWORD *zorder) = 0;
1111
1112    virtual HRESULT STDMETHODCALLTYPE SetOutputRect(
1113        DWORD streamid,
1114        const VMR9NormalizedRect *rect) = 0;
1115
1116    virtual HRESULT STDMETHODCALLTYPE GetOutputRect(
1117        DWORD streamid,
1118        VMR9NormalizedRect *rect) = 0;
1119
1120    virtual HRESULT STDMETHODCALLTYPE SetBackgroundClr(
1121        COLORREF back) = 0;
1122
1123    virtual HRESULT STDMETHODCALLTYPE GetBackgroundClr(
1124        COLORREF *back) = 0;
1125
1126    virtual HRESULT STDMETHODCALLTYPE SetMixingPrefs(
1127        DWORD mixingprefs) = 0;
1128
1129    virtual HRESULT STDMETHODCALLTYPE GetMixingPrefs(
1130        DWORD *mixingprefs) = 0;
1131
1132    virtual HRESULT STDMETHODCALLTYPE SetProcAmpControl(
1133        DWORD streamid,
1134        VMR9ProcAmpControl *control) = 0;
1135
1136    virtual HRESULT STDMETHODCALLTYPE GetProcAmpControl(
1137        DWORD streamid,
1138        VMR9ProcAmpControl *control) = 0;
1139
1140    virtual HRESULT STDMETHODCALLTYPE GetProcAmpControlRange(
1141        DWORD streamid,
1142        VMR9ProcAmpControlRange *controlrange) = 0;
1143
1144};
1145#ifdef __CRT_UUID_DECL
1146__CRT_UUID_DECL(IVMRMixerControl9, 0x1a777eaa, 0x47c8, 0x4930, 0xb2,0xc9, 0x8f,0xee,0x1c,0x1b,0x0f,0x3b)
1147#endif
1148#else
1149typedef struct IVMRMixerControl9Vtbl {
1150    BEGIN_INTERFACE
1151
1152    /*** IUnknown methods ***/
1153    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1154        IVMRMixerControl9 *This,
1155        REFIID riid,
1156        void **ppvObject);
1157
1158    ULONG (STDMETHODCALLTYPE *AddRef)(
1159        IVMRMixerControl9 *This);
1160
1161    ULONG (STDMETHODCALLTYPE *Release)(
1162        IVMRMixerControl9 *This);
1163
1164    /*** IVMRMixerControl9 methods ***/
1165    HRESULT (STDMETHODCALLTYPE *SetAlpha)(
1166        IVMRMixerControl9 *This,
1167        DWORD streamid,
1168        FLOAT alpha);
1169
1170    HRESULT (STDMETHODCALLTYPE *GetAlpha)(
1171        IVMRMixerControl9 *This,
1172        DWORD streamid,
1173        FLOAT *alpha);
1174
1175    HRESULT (STDMETHODCALLTYPE *SetZOrder)(
1176        IVMRMixerControl9 *This,
1177        DWORD streamid,
1178        DWORD zorder);
1179
1180    HRESULT (STDMETHODCALLTYPE *GetZOrder)(
1181        IVMRMixerControl9 *This,
1182        DWORD streamid,
1183        DWORD *zorder);
1184
1185    HRESULT (STDMETHODCALLTYPE *SetOutputRect)(
1186        IVMRMixerControl9 *This,
1187        DWORD streamid,
1188        const VMR9NormalizedRect *rect);
1189
1190    HRESULT (STDMETHODCALLTYPE *GetOutputRect)(
1191        IVMRMixerControl9 *This,
1192        DWORD streamid,
1193        VMR9NormalizedRect *rect);
1194
1195    HRESULT (STDMETHODCALLTYPE *SetBackgroundClr)(
1196        IVMRMixerControl9 *This,
1197        COLORREF back);
1198
1199    HRESULT (STDMETHODCALLTYPE *GetBackgroundClr)(
1200        IVMRMixerControl9 *This,
1201        COLORREF *back);
1202
1203    HRESULT (STDMETHODCALLTYPE *SetMixingPrefs)(
1204        IVMRMixerControl9 *This,
1205        DWORD mixingprefs);
1206
1207    HRESULT (STDMETHODCALLTYPE *GetMixingPrefs)(
1208        IVMRMixerControl9 *This,
1209        DWORD *mixingprefs);
1210
1211    HRESULT (STDMETHODCALLTYPE *SetProcAmpControl)(
1212        IVMRMixerControl9 *This,
1213        DWORD streamid,
1214        VMR9ProcAmpControl *control);
1215
1216    HRESULT (STDMETHODCALLTYPE *GetProcAmpControl)(
1217        IVMRMixerControl9 *This,
1218        DWORD streamid,
1219        VMR9ProcAmpControl *control);
1220
1221    HRESULT (STDMETHODCALLTYPE *GetProcAmpControlRange)(
1222        IVMRMixerControl9 *This,
1223        DWORD streamid,
1224        VMR9ProcAmpControlRange *controlrange);
1225
1226    END_INTERFACE
1227} IVMRMixerControl9Vtbl;
1228
1229interface IVMRMixerControl9 {
1230    CONST_VTBL IVMRMixerControl9Vtbl* lpVtbl;
1231};
1232
1233#ifdef COBJMACROS
1234#ifndef WIDL_C_INLINE_WRAPPERS
1235/*** IUnknown methods ***/
1236#define IVMRMixerControl9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1237#define IVMRMixerControl9_AddRef(This) (This)->lpVtbl->AddRef(This)
1238#define IVMRMixerControl9_Release(This) (This)->lpVtbl->Release(This)
1239/*** IVMRMixerControl9 methods ***/
1240#define IVMRMixerControl9_SetAlpha(This,streamid,alpha) (This)->lpVtbl->SetAlpha(This,streamid,alpha)
1241#define IVMRMixerControl9_GetAlpha(This,streamid,alpha) (This)->lpVtbl->GetAlpha(This,streamid,alpha)
1242#define IVMRMixerControl9_SetZOrder(This,streamid,zorder) (This)->lpVtbl->SetZOrder(This,streamid,zorder)
1243#define IVMRMixerControl9_GetZOrder(This,streamid,zorder) (This)->lpVtbl->GetZOrder(This,streamid,zorder)
1244#define IVMRMixerControl9_SetOutputRect(This,streamid,rect) (This)->lpVtbl->SetOutputRect(This,streamid,rect)
1245#define IVMRMixerControl9_GetOutputRect(This,streamid,rect) (This)->lpVtbl->GetOutputRect(This,streamid,rect)
1246#define IVMRMixerControl9_SetBackgroundClr(This,back) (This)->lpVtbl->SetBackgroundClr(This,back)
1247#define IVMRMixerControl9_GetBackgroundClr(This,back) (This)->lpVtbl->GetBackgroundClr(This,back)
1248#define IVMRMixerControl9_SetMixingPrefs(This,mixingprefs) (This)->lpVtbl->SetMixingPrefs(This,mixingprefs)
1249#define IVMRMixerControl9_GetMixingPrefs(This,mixingprefs) (This)->lpVtbl->GetMixingPrefs(This,mixingprefs)
1250#define IVMRMixerControl9_SetProcAmpControl(This,streamid,control) (This)->lpVtbl->SetProcAmpControl(This,streamid,control)
1251#define IVMRMixerControl9_GetProcAmpControl(This,streamid,control) (This)->lpVtbl->GetProcAmpControl(This,streamid,control)
1252#define IVMRMixerControl9_GetProcAmpControlRange(This,streamid,controlrange) (This)->lpVtbl->GetProcAmpControlRange(This,streamid,controlrange)
1253#else
1254/*** IUnknown methods ***/
1255static inline HRESULT IVMRMixerControl9_QueryInterface(IVMRMixerControl9* This,REFIID riid,void **ppvObject) {
1256    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1257}
1258static inline ULONG IVMRMixerControl9_AddRef(IVMRMixerControl9* This) {
1259    return This->lpVtbl->AddRef(This);
1260}
1261static inline ULONG IVMRMixerControl9_Release(IVMRMixerControl9* This) {
1262    return This->lpVtbl->Release(This);
1263}
1264/*** IVMRMixerControl9 methods ***/
1265static inline HRESULT IVMRMixerControl9_SetAlpha(IVMRMixerControl9* This,DWORD streamid,FLOAT alpha) {
1266    return This->lpVtbl->SetAlpha(This,streamid,alpha);
1267}
1268static inline HRESULT IVMRMixerControl9_GetAlpha(IVMRMixerControl9* This,DWORD streamid,FLOAT *alpha) {
1269    return This->lpVtbl->GetAlpha(This,streamid,alpha);
1270}
1271static inline HRESULT IVMRMixerControl9_SetZOrder(IVMRMixerControl9* This,DWORD streamid,DWORD zorder) {
1272    return This->lpVtbl->SetZOrder(This,streamid,zorder);
1273}
1274static inline HRESULT IVMRMixerControl9_GetZOrder(IVMRMixerControl9* This,DWORD streamid,DWORD *zorder) {
1275    return This->lpVtbl->GetZOrder(This,streamid,zorder);
1276}
1277static inline HRESULT IVMRMixerControl9_SetOutputRect(IVMRMixerControl9* This,DWORD streamid,const VMR9NormalizedRect *rect) {
1278    return This->lpVtbl->SetOutputRect(This,streamid,rect);
1279}
1280static inline HRESULT IVMRMixerControl9_GetOutputRect(IVMRMixerControl9* This,DWORD streamid,VMR9NormalizedRect *rect) {
1281    return This->lpVtbl->GetOutputRect(This,streamid,rect);
1282}
1283static inline HRESULT IVMRMixerControl9_SetBackgroundClr(IVMRMixerControl9* This,COLORREF back) {
1284    return This->lpVtbl->SetBackgroundClr(This,back);
1285}
1286static inline HRESULT IVMRMixerControl9_GetBackgroundClr(IVMRMixerControl9* This,COLORREF *back) {
1287    return This->lpVtbl->GetBackgroundClr(This,back);
1288}
1289static inline HRESULT IVMRMixerControl9_SetMixingPrefs(IVMRMixerControl9* This,DWORD mixingprefs) {
1290    return This->lpVtbl->SetMixingPrefs(This,mixingprefs);
1291}
1292static inline HRESULT IVMRMixerControl9_GetMixingPrefs(IVMRMixerControl9* This,DWORD *mixingprefs) {
1293    return This->lpVtbl->GetMixingPrefs(This,mixingprefs);
1294}
1295static inline HRESULT IVMRMixerControl9_SetProcAmpControl(IVMRMixerControl9* This,DWORD streamid,VMR9ProcAmpControl *control) {
1296    return This->lpVtbl->SetProcAmpControl(This,streamid,control);
1297}
1298static inline HRESULT IVMRMixerControl9_GetProcAmpControl(IVMRMixerControl9* This,DWORD streamid,VMR9ProcAmpControl *control) {
1299    return This->lpVtbl->GetProcAmpControl(This,streamid,control);
1300}
1301static inline HRESULT IVMRMixerControl9_GetProcAmpControlRange(IVMRMixerControl9* This,DWORD streamid,VMR9ProcAmpControlRange *controlrange) {
1302    return This->lpVtbl->GetProcAmpControlRange(This,streamid,controlrange);
1303}
1304#endif
1305#endif
1306
1307#endif
1308
1309
1310#endif  /* __IVMRMixerControl9_INTERFACE_DEFINED__ */
1311
1312typedef struct _VMR9AlphaBitmap {
1313    DWORD dwFlags;
1314    HDC hdc;
1315    IDirect3DSurface9 *pDDS;
1316    RECT rSrc;
1317    VMR9NormalizedRect rDest;
1318    FLOAT fAlpha;
1319    COLORREF clrSrcKey;
1320    DWORD dwFilterMode;
1321} VMR9AlphaBitmap;
1322typedef enum _VMR9AlphaBitmapFlags {
1323    VMR9AlphaBitmap_Disable = 0x1,
1324    VMR9AlphaBitmap_hDC = 0x2,
1325    VMR9AlphaBitmap_EntireDDS = 0x4,
1326    VMR9AlphaBitmap_SrcColorKey = 0x8,
1327    VMR9AlphaBitmap_SrcRect = 0x10,
1328    VMR9AlphaBitmap_FilterMode = 0x20
1329} VMR9AlphaBitmapFlags;
1330/*****************************************************************************
1331 * IVMRMixerBitmap9 interface
1332 */
1333#ifndef __IVMRMixerBitmap9_INTERFACE_DEFINED__
1334#define __IVMRMixerBitmap9_INTERFACE_DEFINED__
1335
1336DEFINE_GUID(IID_IVMRMixerBitmap9, 0xced175e5, 0x1935, 0x4820, 0x81,0xbd, 0xff,0x6a,0xd0,0x0c,0x91,0x08);
1337#if defined(__cplusplus) && !defined(CINTERFACE)
1338MIDL_INTERFACE("ced175e5-1935-4820-81bd-ff6ad00c9108")
1339IVMRMixerBitmap9 : public IUnknown
1340{
1341    virtual HRESULT STDMETHODCALLTYPE SetAlphaBitmap(
1342        const VMR9AlphaBitmap *bitmap) = 0;
1343
1344    virtual HRESULT STDMETHODCALLTYPE UpdateAlphaBitmapParameters(
1345        const VMR9AlphaBitmap *bitmap) = 0;
1346
1347    virtual HRESULT STDMETHODCALLTYPE GetAlphaBitmapParameters(
1348        VMR9AlphaBitmap *bitmap) = 0;
1349
1350};
1351#ifdef __CRT_UUID_DECL
1352__CRT_UUID_DECL(IVMRMixerBitmap9, 0xced175e5, 0x1935, 0x4820, 0x81,0xbd, 0xff,0x6a,0xd0,0x0c,0x91,0x08)
1353#endif
1354#else
1355typedef struct IVMRMixerBitmap9Vtbl {
1356    BEGIN_INTERFACE
1357
1358    /*** IUnknown methods ***/
1359    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1360        IVMRMixerBitmap9 *This,
1361        REFIID riid,
1362        void **ppvObject);
1363
1364    ULONG (STDMETHODCALLTYPE *AddRef)(
1365        IVMRMixerBitmap9 *This);
1366
1367    ULONG (STDMETHODCALLTYPE *Release)(
1368        IVMRMixerBitmap9 *This);
1369
1370    /*** IVMRMixerBitmap9 methods ***/
1371    HRESULT (STDMETHODCALLTYPE *SetAlphaBitmap)(
1372        IVMRMixerBitmap9 *This,
1373        const VMR9AlphaBitmap *bitmap);
1374
1375    HRESULT (STDMETHODCALLTYPE *UpdateAlphaBitmapParameters)(
1376        IVMRMixerBitmap9 *This,
1377        const VMR9AlphaBitmap *bitmap);
1378
1379    HRESULT (STDMETHODCALLTYPE *GetAlphaBitmapParameters)(
1380        IVMRMixerBitmap9 *This,
1381        VMR9AlphaBitmap *bitmap);
1382
1383    END_INTERFACE
1384} IVMRMixerBitmap9Vtbl;
1385
1386interface IVMRMixerBitmap9 {
1387    CONST_VTBL IVMRMixerBitmap9Vtbl* lpVtbl;
1388};
1389
1390#ifdef COBJMACROS
1391#ifndef WIDL_C_INLINE_WRAPPERS
1392/*** IUnknown methods ***/
1393#define IVMRMixerBitmap9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1394#define IVMRMixerBitmap9_AddRef(This) (This)->lpVtbl->AddRef(This)
1395#define IVMRMixerBitmap9_Release(This) (This)->lpVtbl->Release(This)
1396/*** IVMRMixerBitmap9 methods ***/
1397#define IVMRMixerBitmap9_SetAlphaBitmap(This,bitmap) (This)->lpVtbl->SetAlphaBitmap(This,bitmap)
1398#define IVMRMixerBitmap9_UpdateAlphaBitmapParameters(This,bitmap) (This)->lpVtbl->UpdateAlphaBitmapParameters(This,bitmap)
1399#define IVMRMixerBitmap9_GetAlphaBitmapParameters(This,bitmap) (This)->lpVtbl->GetAlphaBitmapParameters(This,bitmap)
1400#else
1401/*** IUnknown methods ***/
1402static inline HRESULT IVMRMixerBitmap9_QueryInterface(IVMRMixerBitmap9* This,REFIID riid,void **ppvObject) {
1403    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1404}
1405static inline ULONG IVMRMixerBitmap9_AddRef(IVMRMixerBitmap9* This) {
1406    return This->lpVtbl->AddRef(This);
1407}
1408static inline ULONG IVMRMixerBitmap9_Release(IVMRMixerBitmap9* This) {
1409    return This->lpVtbl->Release(This);
1410}
1411/*** IVMRMixerBitmap9 methods ***/
1412static inline HRESULT IVMRMixerBitmap9_SetAlphaBitmap(IVMRMixerBitmap9* This,const VMR9AlphaBitmap *bitmap) {
1413    return This->lpVtbl->SetAlphaBitmap(This,bitmap);
1414}
1415static inline HRESULT IVMRMixerBitmap9_UpdateAlphaBitmapParameters(IVMRMixerBitmap9* This,const VMR9AlphaBitmap *bitmap) {
1416    return This->lpVtbl->UpdateAlphaBitmapParameters(This,bitmap);
1417}
1418static inline HRESULT IVMRMixerBitmap9_GetAlphaBitmapParameters(IVMRMixerBitmap9* This,VMR9AlphaBitmap *bitmap) {
1419    return This->lpVtbl->GetAlphaBitmapParameters(This,bitmap);
1420}
1421#endif
1422#endif
1423
1424#endif
1425
1426
1427#endif  /* __IVMRMixerBitmap9_INTERFACE_DEFINED__ */
1428
1429/*****************************************************************************
1430 * IVMRSurface9 interface
1431 */
1432#ifndef __IVMRSurface9_INTERFACE_DEFINED__
1433#define __IVMRSurface9_INTERFACE_DEFINED__
1434
1435DEFINE_GUID(IID_IVMRSurface9, 0xdfc581a1, 0x6e1f, 0x4c3a, 0x8d,0x0a, 0x5e,0x97,0x92,0xea,0x2a,0xfc);
1436#if defined(__cplusplus) && !defined(CINTERFACE)
1437MIDL_INTERFACE("dfc581a1-6e1f-4c3a-8d0a-5e9792ea2afc")
1438IVMRSurface9 : public IUnknown
1439{
1440    virtual HRESULT STDMETHODCALLTYPE IsSurfaceLocked(
1441        ) = 0;
1442
1443    virtual HRESULT STDMETHODCALLTYPE LockSurface(
1444        BYTE **surface) = 0;
1445
1446    virtual HRESULT STDMETHODCALLTYPE UnlockSurface(
1447        ) = 0;
1448
1449    virtual HRESULT STDMETHODCALLTYPE GetSurface(
1450        IDirect3DSurface9 **surface) = 0;
1451
1452};
1453#ifdef __CRT_UUID_DECL
1454__CRT_UUID_DECL(IVMRSurface9, 0xdfc581a1, 0x6e1f, 0x4c3a, 0x8d,0x0a, 0x5e,0x97,0x92,0xea,0x2a,0xfc)
1455#endif
1456#else
1457typedef struct IVMRSurface9Vtbl {
1458    BEGIN_INTERFACE
1459
1460    /*** IUnknown methods ***/
1461    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1462        IVMRSurface9 *This,
1463        REFIID riid,
1464        void **ppvObject);
1465
1466    ULONG (STDMETHODCALLTYPE *AddRef)(
1467        IVMRSurface9 *This);
1468
1469    ULONG (STDMETHODCALLTYPE *Release)(
1470        IVMRSurface9 *This);
1471
1472    /*** IVMRSurface9 methods ***/
1473    HRESULT (STDMETHODCALLTYPE *IsSurfaceLocked)(
1474        IVMRSurface9 *This);
1475
1476    HRESULT (STDMETHODCALLTYPE *LockSurface)(
1477        IVMRSurface9 *This,
1478        BYTE **surface);
1479
1480    HRESULT (STDMETHODCALLTYPE *UnlockSurface)(
1481        IVMRSurface9 *This);
1482
1483    HRESULT (STDMETHODCALLTYPE *GetSurface)(
1484        IVMRSurface9 *This,
1485        IDirect3DSurface9 **surface);
1486
1487    END_INTERFACE
1488} IVMRSurface9Vtbl;
1489
1490interface IVMRSurface9 {
1491    CONST_VTBL IVMRSurface9Vtbl* lpVtbl;
1492};
1493
1494#ifdef COBJMACROS
1495#ifndef WIDL_C_INLINE_WRAPPERS
1496/*** IUnknown methods ***/
1497#define IVMRSurface9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1498#define IVMRSurface9_AddRef(This) (This)->lpVtbl->AddRef(This)
1499#define IVMRSurface9_Release(This) (This)->lpVtbl->Release(This)
1500/*** IVMRSurface9 methods ***/
1501#define IVMRSurface9_IsSurfaceLocked(This) (This)->lpVtbl->IsSurfaceLocked(This)
1502#define IVMRSurface9_LockSurface(This,surface) (This)->lpVtbl->LockSurface(This,surface)
1503#define IVMRSurface9_UnlockSurface(This) (This)->lpVtbl->UnlockSurface(This)
1504#define IVMRSurface9_GetSurface(This,surface) (This)->lpVtbl->GetSurface(This,surface)
1505#else
1506/*** IUnknown methods ***/
1507static inline HRESULT IVMRSurface9_QueryInterface(IVMRSurface9* This,REFIID riid,void **ppvObject) {
1508    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1509}
1510static inline ULONG IVMRSurface9_AddRef(IVMRSurface9* This) {
1511    return This->lpVtbl->AddRef(This);
1512}
1513static inline ULONG IVMRSurface9_Release(IVMRSurface9* This) {
1514    return This->lpVtbl->Release(This);
1515}
1516/*** IVMRSurface9 methods ***/
1517static inline HRESULT IVMRSurface9_IsSurfaceLocked(IVMRSurface9* This) {
1518    return This->lpVtbl->IsSurfaceLocked(This);
1519}
1520static inline HRESULT IVMRSurface9_LockSurface(IVMRSurface9* This,BYTE **surface) {
1521    return This->lpVtbl->LockSurface(This,surface);
1522}
1523static inline HRESULT IVMRSurface9_UnlockSurface(IVMRSurface9* This) {
1524    return This->lpVtbl->UnlockSurface(This);
1525}
1526static inline HRESULT IVMRSurface9_GetSurface(IVMRSurface9* This,IDirect3DSurface9 **surface) {
1527    return This->lpVtbl->GetSurface(This,surface);
1528}
1529#endif
1530#endif
1531
1532#endif
1533
1534
1535#endif  /* __IVMRSurface9_INTERFACE_DEFINED__ */
1536
1537typedef enum _VMR9RenderPrefs {
1538    RenderPrefs9_DoNotRenderBorder = 0x1,
1539    RenderPrefs9_Mask = 0x1
1540} VMR9RenderPrefs;
1541/*****************************************************************************
1542 * IVMRImagePresenterConfig9 interface
1543 */
1544#ifndef __IVMRImagePresenterConfig9_INTERFACE_DEFINED__
1545#define __IVMRImagePresenterConfig9_INTERFACE_DEFINED__
1546
1547DEFINE_GUID(IID_IVMRImagePresenterConfig9, 0x45c15cab, 0x6e22, 0x420a, 0x80,0x43, 0xae,0x1f,0x0a,0xc0,0x2c,0x7d);
1548#if defined(__cplusplus) && !defined(CINTERFACE)
1549MIDL_INTERFACE("45c15cab-6e22-420a-8043-ae1f0ac02c7d")
1550IVMRImagePresenterConfig9 : public IUnknown
1551{
1552    virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs(
1553        DWORD renderflags) = 0;
1554
1555    virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs(
1556        DWORD *renderflags) = 0;
1557
1558};
1559#ifdef __CRT_UUID_DECL
1560__CRT_UUID_DECL(IVMRImagePresenterConfig9, 0x45c15cab, 0x6e22, 0x420a, 0x80,0x43, 0xae,0x1f,0x0a,0xc0,0x2c,0x7d)
1561#endif
1562#else
1563typedef struct IVMRImagePresenterConfig9Vtbl {
1564    BEGIN_INTERFACE
1565
1566    /*** IUnknown methods ***/
1567    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1568        IVMRImagePresenterConfig9 *This,
1569        REFIID riid,
1570        void **ppvObject);
1571
1572    ULONG (STDMETHODCALLTYPE *AddRef)(
1573        IVMRImagePresenterConfig9 *This);
1574
1575    ULONG (STDMETHODCALLTYPE *Release)(
1576        IVMRImagePresenterConfig9 *This);
1577
1578    /*** IVMRImagePresenterConfig9 methods ***/
1579    HRESULT (STDMETHODCALLTYPE *SetRenderingPrefs)(
1580        IVMRImagePresenterConfig9 *This,
1581        DWORD renderflags);
1582
1583    HRESULT (STDMETHODCALLTYPE *GetRenderingPrefs)(
1584        IVMRImagePresenterConfig9 *This,
1585        DWORD *renderflags);
1586
1587    END_INTERFACE
1588} IVMRImagePresenterConfig9Vtbl;
1589
1590interface IVMRImagePresenterConfig9 {
1591    CONST_VTBL IVMRImagePresenterConfig9Vtbl* lpVtbl;
1592};
1593
1594#ifdef COBJMACROS
1595#ifndef WIDL_C_INLINE_WRAPPERS
1596/*** IUnknown methods ***/
1597#define IVMRImagePresenterConfig9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1598#define IVMRImagePresenterConfig9_AddRef(This) (This)->lpVtbl->AddRef(This)
1599#define IVMRImagePresenterConfig9_Release(This) (This)->lpVtbl->Release(This)
1600/*** IVMRImagePresenterConfig9 methods ***/
1601#define IVMRImagePresenterConfig9_SetRenderingPrefs(This,renderflags) (This)->lpVtbl->SetRenderingPrefs(This,renderflags)
1602#define IVMRImagePresenterConfig9_GetRenderingPrefs(This,renderflags) (This)->lpVtbl->GetRenderingPrefs(This,renderflags)
1603#else
1604/*** IUnknown methods ***/
1605static inline HRESULT IVMRImagePresenterConfig9_QueryInterface(IVMRImagePresenterConfig9* This,REFIID riid,void **ppvObject) {
1606    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1607}
1608static inline ULONG IVMRImagePresenterConfig9_AddRef(IVMRImagePresenterConfig9* This) {
1609    return This->lpVtbl->AddRef(This);
1610}
1611static inline ULONG IVMRImagePresenterConfig9_Release(IVMRImagePresenterConfig9* This) {
1612    return This->lpVtbl->Release(This);
1613}
1614/*** IVMRImagePresenterConfig9 methods ***/
1615static inline HRESULT IVMRImagePresenterConfig9_SetRenderingPrefs(IVMRImagePresenterConfig9* This,DWORD renderflags) {
1616    return This->lpVtbl->SetRenderingPrefs(This,renderflags);
1617}
1618static inline HRESULT IVMRImagePresenterConfig9_GetRenderingPrefs(IVMRImagePresenterConfig9* This,DWORD *renderflags) {
1619    return This->lpVtbl->GetRenderingPrefs(This,renderflags);
1620}
1621#endif
1622#endif
1623
1624#endif
1625
1626
1627#endif  /* __IVMRImagePresenterConfig9_INTERFACE_DEFINED__ */
1628
1629/*****************************************************************************
1630 * IVMRVideoStreamControl9 interface
1631 */
1632#ifndef __IVMRVideoStreamControl9_INTERFACE_DEFINED__
1633#define __IVMRVideoStreamControl9_INTERFACE_DEFINED__
1634
1635DEFINE_GUID(IID_IVMRVideoStreamControl9, 0xd0cfe38b, 0x93e7, 0x4772, 0x89,0x57, 0x04,0x00,0xc4,0x9a,0x44,0x85);
1636#if defined(__cplusplus) && !defined(CINTERFACE)
1637MIDL_INTERFACE("d0cfe38b-93e7-4772-8957-0400c49a4485")
1638IVMRVideoStreamControl9 : public IUnknown
1639{
1640    virtual HRESULT STDMETHODCALLTYPE SetStreamActiveState(
1641        WINBOOL active) = 0;
1642
1643    virtual HRESULT STDMETHODCALLTYPE GetStreamActiveState(
1644        WINBOOL *active) = 0;
1645
1646};
1647#ifdef __CRT_UUID_DECL
1648__CRT_UUID_DECL(IVMRVideoStreamControl9, 0xd0cfe38b, 0x93e7, 0x4772, 0x89,0x57, 0x04,0x00,0xc4,0x9a,0x44,0x85)
1649#endif
1650#else
1651typedef struct IVMRVideoStreamControl9Vtbl {
1652    BEGIN_INTERFACE
1653
1654    /*** IUnknown methods ***/
1655    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1656        IVMRVideoStreamControl9 *This,
1657        REFIID riid,
1658        void **ppvObject);
1659
1660    ULONG (STDMETHODCALLTYPE *AddRef)(
1661        IVMRVideoStreamControl9 *This);
1662
1663    ULONG (STDMETHODCALLTYPE *Release)(
1664        IVMRVideoStreamControl9 *This);
1665
1666    /*** IVMRVideoStreamControl9 methods ***/
1667    HRESULT (STDMETHODCALLTYPE *SetStreamActiveState)(
1668        IVMRVideoStreamControl9 *This,
1669        WINBOOL active);
1670
1671    HRESULT (STDMETHODCALLTYPE *GetStreamActiveState)(
1672        IVMRVideoStreamControl9 *This,
1673        WINBOOL *active);
1674
1675    END_INTERFACE
1676} IVMRVideoStreamControl9Vtbl;
1677
1678interface IVMRVideoStreamControl9 {
1679    CONST_VTBL IVMRVideoStreamControl9Vtbl* lpVtbl;
1680};
1681
1682#ifdef COBJMACROS
1683#ifndef WIDL_C_INLINE_WRAPPERS
1684/*** IUnknown methods ***/
1685#define IVMRVideoStreamControl9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1686#define IVMRVideoStreamControl9_AddRef(This) (This)->lpVtbl->AddRef(This)
1687#define IVMRVideoStreamControl9_Release(This) (This)->lpVtbl->Release(This)
1688/*** IVMRVideoStreamControl9 methods ***/
1689#define IVMRVideoStreamControl9_SetStreamActiveState(This,active) (This)->lpVtbl->SetStreamActiveState(This,active)
1690#define IVMRVideoStreamControl9_GetStreamActiveState(This,active) (This)->lpVtbl->GetStreamActiveState(This,active)
1691#else
1692/*** IUnknown methods ***/
1693static inline HRESULT IVMRVideoStreamControl9_QueryInterface(IVMRVideoStreamControl9* This,REFIID riid,void **ppvObject) {
1694    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1695}
1696static inline ULONG IVMRVideoStreamControl9_AddRef(IVMRVideoStreamControl9* This) {
1697    return This->lpVtbl->AddRef(This);
1698}
1699static inline ULONG IVMRVideoStreamControl9_Release(IVMRVideoStreamControl9* This) {
1700    return This->lpVtbl->Release(This);
1701}
1702/*** IVMRVideoStreamControl9 methods ***/
1703static inline HRESULT IVMRVideoStreamControl9_SetStreamActiveState(IVMRVideoStreamControl9* This,WINBOOL active) {
1704    return This->lpVtbl->SetStreamActiveState(This,active);
1705}
1706static inline HRESULT IVMRVideoStreamControl9_GetStreamActiveState(IVMRVideoStreamControl9* This,WINBOOL *active) {
1707    return This->lpVtbl->GetStreamActiveState(This,active);
1708}
1709#endif
1710#endif
1711
1712#endif
1713
1714
1715#endif  /* __IVMRVideoStreamControl9_INTERFACE_DEFINED__ */
1716
1717typedef enum _VMR9Mode {
1718    VMR9Mode_Windowed = 0x1,
1719    VMR9Mode_Windowless = 0x2,
1720    VMR9Mode_Renderless = 0x4,
1721    VMR9Mode_Mask = 0x7
1722} VMR9Mode;
1723/*****************************************************************************
1724 * IVMRFilterConfig9 interface
1725 */
1726#ifndef __IVMRFilterConfig9_INTERFACE_DEFINED__
1727#define __IVMRFilterConfig9_INTERFACE_DEFINED__
1728
1729DEFINE_GUID(IID_IVMRFilterConfig9, 0x5a804648, 0x4f66, 0x4867, 0x9c,0x43, 0x4f,0x5c,0x82,0x2c,0xf1,0xb8);
1730#if defined(__cplusplus) && !defined(CINTERFACE)
1731MIDL_INTERFACE("5a804648-4f66-4867-9c43-4f5c822cf1b8")
1732IVMRFilterConfig9 : public IUnknown
1733{
1734    virtual HRESULT STDMETHODCALLTYPE SetImageCompositor(
1735        IVMRImageCompositor9 *compositor) = 0;
1736
1737    virtual HRESULT STDMETHODCALLTYPE SetNumberOfStreams(
1738        DWORD max) = 0;
1739
1740    virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams(
1741        DWORD *max) = 0;
1742
1743    virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs(
1744        DWORD renderflags) = 0;
1745
1746    virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs(
1747        DWORD *renderflags) = 0;
1748
1749    virtual HRESULT STDMETHODCALLTYPE SetRenderingMode(
1750        DWORD mode) = 0;
1751
1752    virtual HRESULT STDMETHODCALLTYPE GetRenderingMode(
1753        DWORD *mode) = 0;
1754
1755};
1756#ifdef __CRT_UUID_DECL
1757__CRT_UUID_DECL(IVMRFilterConfig9, 0x5a804648, 0x4f66, 0x4867, 0x9c,0x43, 0x4f,0x5c,0x82,0x2c,0xf1,0xb8)
1758#endif
1759#else
1760typedef struct IVMRFilterConfig9Vtbl {
1761    BEGIN_INTERFACE
1762
1763    /*** IUnknown methods ***/
1764    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1765        IVMRFilterConfig9 *This,
1766        REFIID riid,
1767        void **ppvObject);
1768
1769    ULONG (STDMETHODCALLTYPE *AddRef)(
1770        IVMRFilterConfig9 *This);
1771
1772    ULONG (STDMETHODCALLTYPE *Release)(
1773        IVMRFilterConfig9 *This);
1774
1775    /*** IVMRFilterConfig9 methods ***/
1776    HRESULT (STDMETHODCALLTYPE *SetImageCompositor)(
1777        IVMRFilterConfig9 *This,
1778        IVMRImageCompositor9 *compositor);
1779
1780    HRESULT (STDMETHODCALLTYPE *SetNumberOfStreams)(
1781        IVMRFilterConfig9 *This,
1782        DWORD max);
1783
1784    HRESULT (STDMETHODCALLTYPE *GetNumberOfStreams)(
1785        IVMRFilterConfig9 *This,
1786        DWORD *max);
1787
1788    HRESULT (STDMETHODCALLTYPE *SetRenderingPrefs)(
1789        IVMRFilterConfig9 *This,
1790        DWORD renderflags);
1791
1792    HRESULT (STDMETHODCALLTYPE *GetRenderingPrefs)(
1793        IVMRFilterConfig9 *This,
1794        DWORD *renderflags);
1795
1796    HRESULT (STDMETHODCALLTYPE *SetRenderingMode)(
1797        IVMRFilterConfig9 *This,
1798        DWORD mode);
1799
1800    HRESULT (STDMETHODCALLTYPE *GetRenderingMode)(
1801        IVMRFilterConfig9 *This,
1802        DWORD *mode);
1803
1804    END_INTERFACE
1805} IVMRFilterConfig9Vtbl;
1806
1807interface IVMRFilterConfig9 {
1808    CONST_VTBL IVMRFilterConfig9Vtbl* lpVtbl;
1809};
1810
1811#ifdef COBJMACROS
1812#ifndef WIDL_C_INLINE_WRAPPERS
1813/*** IUnknown methods ***/
1814#define IVMRFilterConfig9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1815#define IVMRFilterConfig9_AddRef(This) (This)->lpVtbl->AddRef(This)
1816#define IVMRFilterConfig9_Release(This) (This)->lpVtbl->Release(This)
1817/*** IVMRFilterConfig9 methods ***/
1818#define IVMRFilterConfig9_SetImageCompositor(This,compositor) (This)->lpVtbl->SetImageCompositor(This,compositor)
1819#define IVMRFilterConfig9_SetNumberOfStreams(This,max) (This)->lpVtbl->SetNumberOfStreams(This,max)
1820#define IVMRFilterConfig9_GetNumberOfStreams(This,max) (This)->lpVtbl->GetNumberOfStreams(This,max)
1821#define IVMRFilterConfig9_SetRenderingPrefs(This,renderflags) (This)->lpVtbl->SetRenderingPrefs(This,renderflags)
1822#define IVMRFilterConfig9_GetRenderingPrefs(This,renderflags) (This)->lpVtbl->GetRenderingPrefs(This,renderflags)
1823#define IVMRFilterConfig9_SetRenderingMode(This,mode) (This)->lpVtbl->SetRenderingMode(This,mode)
1824#define IVMRFilterConfig9_GetRenderingMode(This,mode) (This)->lpVtbl->GetRenderingMode(This,mode)
1825#else
1826/*** IUnknown methods ***/
1827static inline HRESULT IVMRFilterConfig9_QueryInterface(IVMRFilterConfig9* This,REFIID riid,void **ppvObject) {
1828    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1829}
1830static inline ULONG IVMRFilterConfig9_AddRef(IVMRFilterConfig9* This) {
1831    return This->lpVtbl->AddRef(This);
1832}
1833static inline ULONG IVMRFilterConfig9_Release(IVMRFilterConfig9* This) {
1834    return This->lpVtbl->Release(This);
1835}
1836/*** IVMRFilterConfig9 methods ***/
1837static inline HRESULT IVMRFilterConfig9_SetImageCompositor(IVMRFilterConfig9* This,IVMRImageCompositor9 *compositor) {
1838    return This->lpVtbl->SetImageCompositor(This,compositor);
1839}
1840static inline HRESULT IVMRFilterConfig9_SetNumberOfStreams(IVMRFilterConfig9* This,DWORD max) {
1841    return This->lpVtbl->SetNumberOfStreams(This,max);
1842}
1843static inline HRESULT IVMRFilterConfig9_GetNumberOfStreams(IVMRFilterConfig9* This,DWORD *max) {
1844    return This->lpVtbl->GetNumberOfStreams(This,max);
1845}
1846static inline HRESULT IVMRFilterConfig9_SetRenderingPrefs(IVMRFilterConfig9* This,DWORD renderflags) {
1847    return This->lpVtbl->SetRenderingPrefs(This,renderflags);
1848}
1849static inline HRESULT IVMRFilterConfig9_GetRenderingPrefs(IVMRFilterConfig9* This,DWORD *renderflags) {
1850    return This->lpVtbl->GetRenderingPrefs(This,renderflags);
1851}
1852static inline HRESULT IVMRFilterConfig9_SetRenderingMode(IVMRFilterConfig9* This,DWORD mode) {
1853    return This->lpVtbl->SetRenderingMode(This,mode);
1854}
1855static inline HRESULT IVMRFilterConfig9_GetRenderingMode(IVMRFilterConfig9* This,DWORD *mode) {
1856    return This->lpVtbl->GetRenderingMode(This,mode);
1857}
1858#endif
1859#endif
1860
1861#endif
1862
1863
1864#endif  /* __IVMRFilterConfig9_INTERFACE_DEFINED__ */
1865
1866/*****************************************************************************
1867 * IVMRAspectRatioControl9 interface
1868 */
1869#ifndef __IVMRAspectRatioControl9_INTERFACE_DEFINED__
1870#define __IVMRAspectRatioControl9_INTERFACE_DEFINED__
1871
1872DEFINE_GUID(IID_IVMRAspectRatioControl9, 0x00d96c29, 0xbbde, 0x4efc, 0x99,0x01, 0xbb,0x50,0x36,0x39,0x21,0x46);
1873#if defined(__cplusplus) && !defined(CINTERFACE)
1874MIDL_INTERFACE("00d96c29-bbde-4efc-9901-bb5036392146")
1875IVMRAspectRatioControl9 : public IUnknown
1876{
1877    virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode(
1878        DWORD *mode) = 0;
1879
1880    virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode(
1881        DWORD mode) = 0;
1882
1883};
1884#ifdef __CRT_UUID_DECL
1885__CRT_UUID_DECL(IVMRAspectRatioControl9, 0x00d96c29, 0xbbde, 0x4efc, 0x99,0x01, 0xbb,0x50,0x36,0x39,0x21,0x46)
1886#endif
1887#else
1888typedef struct IVMRAspectRatioControl9Vtbl {
1889    BEGIN_INTERFACE
1890
1891    /*** IUnknown methods ***/
1892    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1893        IVMRAspectRatioControl9 *This,
1894        REFIID riid,
1895        void **ppvObject);
1896
1897    ULONG (STDMETHODCALLTYPE *AddRef)(
1898        IVMRAspectRatioControl9 *This);
1899
1900    ULONG (STDMETHODCALLTYPE *Release)(
1901        IVMRAspectRatioControl9 *This);
1902
1903    /*** IVMRAspectRatioControl9 methods ***/
1904    HRESULT (STDMETHODCALLTYPE *GetAspectRatioMode)(
1905        IVMRAspectRatioControl9 *This,
1906        DWORD *mode);
1907
1908    HRESULT (STDMETHODCALLTYPE *SetAspectRatioMode)(
1909        IVMRAspectRatioControl9 *This,
1910        DWORD mode);
1911
1912    END_INTERFACE
1913} IVMRAspectRatioControl9Vtbl;
1914
1915interface IVMRAspectRatioControl9 {
1916    CONST_VTBL IVMRAspectRatioControl9Vtbl* lpVtbl;
1917};
1918
1919#ifdef COBJMACROS
1920#ifndef WIDL_C_INLINE_WRAPPERS
1921/*** IUnknown methods ***/
1922#define IVMRAspectRatioControl9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1923#define IVMRAspectRatioControl9_AddRef(This) (This)->lpVtbl->AddRef(This)
1924#define IVMRAspectRatioControl9_Release(This) (This)->lpVtbl->Release(This)
1925/*** IVMRAspectRatioControl9 methods ***/
1926#define IVMRAspectRatioControl9_GetAspectRatioMode(This,mode) (This)->lpVtbl->GetAspectRatioMode(This,mode)
1927#define IVMRAspectRatioControl9_SetAspectRatioMode(This,mode) (This)->lpVtbl->SetAspectRatioMode(This,mode)
1928#else
1929/*** IUnknown methods ***/
1930static inline HRESULT IVMRAspectRatioControl9_QueryInterface(IVMRAspectRatioControl9* This,REFIID riid,void **ppvObject) {
1931    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1932}
1933static inline ULONG IVMRAspectRatioControl9_AddRef(IVMRAspectRatioControl9* This) {
1934    return This->lpVtbl->AddRef(This);
1935}
1936static inline ULONG IVMRAspectRatioControl9_Release(IVMRAspectRatioControl9* This) {
1937    return This->lpVtbl->Release(This);
1938}
1939/*** IVMRAspectRatioControl9 methods ***/
1940static inline HRESULT IVMRAspectRatioControl9_GetAspectRatioMode(IVMRAspectRatioControl9* This,DWORD *mode) {
1941    return This->lpVtbl->GetAspectRatioMode(This,mode);
1942}
1943static inline HRESULT IVMRAspectRatioControl9_SetAspectRatioMode(IVMRAspectRatioControl9* This,DWORD mode) {
1944    return This->lpVtbl->SetAspectRatioMode(This,mode);
1945}
1946#endif
1947#endif
1948
1949#endif
1950
1951
1952#endif  /* __IVMRAspectRatioControl9_INTERFACE_DEFINED__ */
1953
1954typedef struct _VMR9MonitorInfo {
1955    UINT uDevID;
1956    RECT rcMonitor;
1957    HMONITOR hMon;
1958    DWORD dwFlags;
1959    WCHAR szDevice[32];
1960    WCHAR szDescription[512];
1961    LARGE_INTEGER liDriverVersion;
1962    DWORD dwVendorId;
1963    DWORD dwDeviceId;
1964    DWORD dwSubSysId;
1965    DWORD dwRevision;
1966} VMR9MonitorInfo;
1967/*****************************************************************************
1968 * IVMRMonitorConfig9 interface
1969 */
1970#ifndef __IVMRMonitorConfig9_INTERFACE_DEFINED__
1971#define __IVMRMonitorConfig9_INTERFACE_DEFINED__
1972
1973DEFINE_GUID(IID_IVMRMonitorConfig9, 0x46c2e457, 0x8ba0, 0x4eef, 0xb8,0x0b, 0x06,0x80,0xf0,0x97,0x87,0x49);
1974#if defined(__cplusplus) && !defined(CINTERFACE)
1975MIDL_INTERFACE("46c2e457-8ba0-4eef-b80b-0680f0978749")
1976IVMRMonitorConfig9 : public IUnknown
1977{
1978    virtual HRESULT STDMETHODCALLTYPE SetMonitor(
1979        UINT uDev) = 0;
1980
1981    virtual HRESULT STDMETHODCALLTYPE GetMonitor(
1982        UINT *uDev) = 0;
1983
1984    virtual HRESULT STDMETHODCALLTYPE SetDefaultMonitor(
1985        UINT uDev) = 0;
1986
1987    virtual HRESULT STDMETHODCALLTYPE GetDefaultMonitor(
1988        UINT *uDev) = 0;
1989
1990    virtual HRESULT STDMETHODCALLTYPE GetAvailableMonitors(
1991        VMR9MonitorInfo *info,
1992        DWORD arraysize,
1993        DWORD *numdev) = 0;
1994
1995};
1996#ifdef __CRT_UUID_DECL
1997__CRT_UUID_DECL(IVMRMonitorConfig9, 0x46c2e457, 0x8ba0, 0x4eef, 0xb8,0x0b, 0x06,0x80,0xf0,0x97,0x87,0x49)
1998#endif
1999#else
2000typedef struct IVMRMonitorConfig9Vtbl {
2001    BEGIN_INTERFACE
2002
2003    /*** IUnknown methods ***/
2004    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2005        IVMRMonitorConfig9 *This,
2006        REFIID riid,
2007        void **ppvObject);
2008
2009    ULONG (STDMETHODCALLTYPE *AddRef)(
2010        IVMRMonitorConfig9 *This);
2011
2012    ULONG (STDMETHODCALLTYPE *Release)(
2013        IVMRMonitorConfig9 *This);
2014
2015    /*** IVMRMonitorConfig9 methods ***/
2016    HRESULT (STDMETHODCALLTYPE *SetMonitor)(
2017        IVMRMonitorConfig9 *This,
2018        UINT uDev);
2019
2020    HRESULT (STDMETHODCALLTYPE *GetMonitor)(
2021        IVMRMonitorConfig9 *This,
2022        UINT *uDev);
2023
2024    HRESULT (STDMETHODCALLTYPE *SetDefaultMonitor)(
2025        IVMRMonitorConfig9 *This,
2026        UINT uDev);
2027
2028    HRESULT (STDMETHODCALLTYPE *GetDefaultMonitor)(
2029        IVMRMonitorConfig9 *This,
2030        UINT *uDev);
2031
2032    HRESULT (STDMETHODCALLTYPE *GetAvailableMonitors)(
2033        IVMRMonitorConfig9 *This,
2034        VMR9MonitorInfo *info,
2035        DWORD arraysize,
2036        DWORD *numdev);
2037
2038    END_INTERFACE
2039} IVMRMonitorConfig9Vtbl;
2040
2041interface IVMRMonitorConfig9 {
2042    CONST_VTBL IVMRMonitorConfig9Vtbl* lpVtbl;
2043};
2044
2045#ifdef COBJMACROS
2046#ifndef WIDL_C_INLINE_WRAPPERS
2047/*** IUnknown methods ***/
2048#define IVMRMonitorConfig9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2049#define IVMRMonitorConfig9_AddRef(This) (This)->lpVtbl->AddRef(This)
2050#define IVMRMonitorConfig9_Release(This) (This)->lpVtbl->Release(This)
2051/*** IVMRMonitorConfig9 methods ***/
2052#define IVMRMonitorConfig9_SetMonitor(This,uDev) (This)->lpVtbl->SetMonitor(This,uDev)
2053#define IVMRMonitorConfig9_GetMonitor(This,uDev) (This)->lpVtbl->GetMonitor(This,uDev)
2054#define IVMRMonitorConfig9_SetDefaultMonitor(This,uDev) (This)->lpVtbl->SetDefaultMonitor(This,uDev)
2055#define IVMRMonitorConfig9_GetDefaultMonitor(This,uDev) (This)->lpVtbl->GetDefaultMonitor(This,uDev)
2056#define IVMRMonitorConfig9_GetAvailableMonitors(This,info,arraysize,numdev) (This)->lpVtbl->GetAvailableMonitors(This,info,arraysize,numdev)
2057#else
2058/*** IUnknown methods ***/
2059static inline HRESULT IVMRMonitorConfig9_QueryInterface(IVMRMonitorConfig9* This,REFIID riid,void **ppvObject) {
2060    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2061}
2062static inline ULONG IVMRMonitorConfig9_AddRef(IVMRMonitorConfig9* This) {
2063    return This->lpVtbl->AddRef(This);
2064}
2065static inline ULONG IVMRMonitorConfig9_Release(IVMRMonitorConfig9* This) {
2066    return This->lpVtbl->Release(This);
2067}
2068/*** IVMRMonitorConfig9 methods ***/
2069static inline HRESULT IVMRMonitorConfig9_SetMonitor(IVMRMonitorConfig9* This,UINT uDev) {
2070    return This->lpVtbl->SetMonitor(This,uDev);
2071}
2072static inline HRESULT IVMRMonitorConfig9_GetMonitor(IVMRMonitorConfig9* This,UINT *uDev) {
2073    return This->lpVtbl->GetMonitor(This,uDev);
2074}
2075static inline HRESULT IVMRMonitorConfig9_SetDefaultMonitor(IVMRMonitorConfig9* This,UINT uDev) {
2076    return This->lpVtbl->SetDefaultMonitor(This,uDev);
2077}
2078static inline HRESULT IVMRMonitorConfig9_GetDefaultMonitor(IVMRMonitorConfig9* This,UINT *uDev) {
2079    return This->lpVtbl->GetDefaultMonitor(This,uDev);
2080}
2081static inline HRESULT IVMRMonitorConfig9_GetAvailableMonitors(IVMRMonitorConfig9* This,VMR9MonitorInfo *info,DWORD arraysize,DWORD *numdev) {
2082    return This->lpVtbl->GetAvailableMonitors(This,info,arraysize,numdev);
2083}
2084#endif
2085#endif
2086
2087#endif
2088
2089
2090#endif  /* __IVMRMonitorConfig9_INTERFACE_DEFINED__ */
2091
2092typedef enum _VMR9DeinterlacePrefs {
2093    DeinterlacePref9_NextBest = 0x1,
2094    DeinterlacePref9_BOB = 0x2,
2095    DeinterlacePref9_Weave = 0x4,
2096    DeinterlacePref9_Mask = 0x7
2097} VMR9DeinterlacePrefs;
2098typedef enum _VMR9DeinterlaceTech {
2099    DeinterlaceTech9_Unknown = 0,
2100    DeinterlaceTech9_BOBLineReplicate = 0x1,
2101    DeinterlaceTech9_BOBVerticalStretch = 0x2,
2102    DeinterlaceTech9_MedianFiltering = 0x4,
2103    DeinterlaceTech9_EdgeFiltering = 0x10,
2104    DeinterlaceTech9_FieldAdaptive = 0x20,
2105    DeinterlaceTech9_PixelAdaptive = 0x40,
2106    DeinterlaceTech9_MotionVectorSteered = 0x80
2107} VMR9DeinterlaceTech;
2108typedef struct _VMR9Frequency {
2109    DWORD dwNumerator;
2110    DWORD dwDenominator;
2111} VMR9Frequency;
2112typedef enum _VMR9_SampleFormat {
2113    VMR9_SampleReserved = 1,
2114    VMR9_SampleProgressiveFrame = 2,
2115    VMR9_SampleFieldInterleavedEvenFirst = 3,
2116    VMR9_SampleFieldInterleavedOddFirst = 4,
2117    VMR9_SampleFieldSingleEven = 5,
2118    VMR9_SampleFieldSingleOdd = 6
2119} VMR9_SampleFormat;
2120typedef struct _VMR9VideoDesc {
2121    DWORD dwSize;
2122    DWORD dwSampleWidth;
2123    DWORD dwSampleHeight;
2124    VMR9_SampleFormat SampleFormat;
2125    DWORD dwFourCC;
2126    VMR9Frequency InputSampleFreq;
2127    VMR9Frequency OutputFrameFreq;
2128} VMR9VideoDesc;
2129typedef struct _VMR9DeinterlaceCaps {
2130    DWORD dwSize;
2131    DWORD dwNumPreviousOutputFrames;
2132    DWORD dwNumForwardRefSamples;
2133    DWORD dwNumBackwardRefSamples;
2134    VMR9DeinterlaceTech DeinterlaceTechnology;
2135} VMR9DeinterlaceCaps;
2136/*****************************************************************************
2137 * IVMRDeinterlaceControl9 interface
2138 */
2139#ifndef __IVMRDeinterlaceControl9_INTERFACE_DEFINED__
2140#define __IVMRDeinterlaceControl9_INTERFACE_DEFINED__
2141
2142DEFINE_GUID(IID_IVMRDeinterlaceControl9, 0xa215fb8d, 0x13c2, 0x4f7f, 0x99,0x3c, 0x00,0x3d,0x62,0x71,0xa4,0x59);
2143#if defined(__cplusplus) && !defined(CINTERFACE)
2144MIDL_INTERFACE("a215fb8d-13c2-4f7f-993c-003d6271a459")
2145IVMRDeinterlaceControl9 : public IUnknown
2146{
2147    virtual HRESULT STDMETHODCALLTYPE GetNumberOfDeinterlaceModes(
2148        VMR9VideoDesc *desc,
2149        DWORD *nummodes,
2150        GUID *modes) = 0;
2151
2152    virtual HRESULT STDMETHODCALLTYPE GetDeinterlaceModeCaps(
2153        GUID *mode,
2154        VMR9VideoDesc *desc,
2155        VMR9DeinterlaceCaps *caps) = 0;
2156
2157    virtual HRESULT STDMETHODCALLTYPE GetDeinterlaceMode(
2158        DWORD streamid,
2159        GUID *mode) = 0;
2160
2161    virtual HRESULT STDMETHODCALLTYPE SetDeinterlaceMode(
2162        DWORD streamid,
2163        GUID *mode) = 0;
2164
2165    virtual HRESULT STDMETHODCALLTYPE GetDeinterlacePrefs(
2166        DWORD *prefs) = 0;
2167
2168    virtual HRESULT STDMETHODCALLTYPE SetDeinterlacePrefs(
2169        DWORD prefs) = 0;
2170
2171    virtual HRESULT STDMETHODCALLTYPE GetActualDeinterlaceMode(
2172        DWORD streamid,
2173        GUID *mode) = 0;
2174
2175};
2176#ifdef __CRT_UUID_DECL
2177__CRT_UUID_DECL(IVMRDeinterlaceControl9, 0xa215fb8d, 0x13c2, 0x4f7f, 0x99,0x3c, 0x00,0x3d,0x62,0x71,0xa4,0x59)
2178#endif
2179#else
2180typedef struct IVMRDeinterlaceControl9Vtbl {
2181    BEGIN_INTERFACE
2182
2183    /*** IUnknown methods ***/
2184    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2185        IVMRDeinterlaceControl9 *This,
2186        REFIID riid,
2187        void **ppvObject);
2188
2189    ULONG (STDMETHODCALLTYPE *AddRef)(
2190        IVMRDeinterlaceControl9 *This);
2191
2192    ULONG (STDMETHODCALLTYPE *Release)(
2193        IVMRDeinterlaceControl9 *This);
2194
2195    /*** IVMRDeinterlaceControl9 methods ***/
2196    HRESULT (STDMETHODCALLTYPE *GetNumberOfDeinterlaceModes)(
2197        IVMRDeinterlaceControl9 *This,
2198        VMR9VideoDesc *desc,
2199        DWORD *nummodes,
2200        GUID *modes);
2201
2202    HRESULT (STDMETHODCALLTYPE *GetDeinterlaceModeCaps)(
2203        IVMRDeinterlaceControl9 *This,
2204        GUID *mode,
2205        VMR9VideoDesc *desc,
2206        VMR9DeinterlaceCaps *caps);
2207
2208    HRESULT (STDMETHODCALLTYPE *GetDeinterlaceMode)(
2209        IVMRDeinterlaceControl9 *This,
2210        DWORD streamid,
2211        GUID *mode);
2212
2213    HRESULT (STDMETHODCALLTYPE *SetDeinterlaceMode)(
2214        IVMRDeinterlaceControl9 *This,
2215        DWORD streamid,
2216        GUID *mode);
2217
2218    HRESULT (STDMETHODCALLTYPE *GetDeinterlacePrefs)(
2219        IVMRDeinterlaceControl9 *This,
2220        DWORD *prefs);
2221
2222    HRESULT (STDMETHODCALLTYPE *SetDeinterlacePrefs)(
2223        IVMRDeinterlaceControl9 *This,
2224        DWORD prefs);
2225
2226    HRESULT (STDMETHODCALLTYPE *GetActualDeinterlaceMode)(
2227        IVMRDeinterlaceControl9 *This,
2228        DWORD streamid,
2229        GUID *mode);
2230
2231    END_INTERFACE
2232} IVMRDeinterlaceControl9Vtbl;
2233
2234interface IVMRDeinterlaceControl9 {
2235    CONST_VTBL IVMRDeinterlaceControl9Vtbl* lpVtbl;
2236};
2237
2238#ifdef COBJMACROS
2239#ifndef WIDL_C_INLINE_WRAPPERS
2240/*** IUnknown methods ***/
2241#define IVMRDeinterlaceControl9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2242#define IVMRDeinterlaceControl9_AddRef(This) (This)->lpVtbl->AddRef(This)
2243#define IVMRDeinterlaceControl9_Release(This) (This)->lpVtbl->Release(This)
2244/*** IVMRDeinterlaceControl9 methods ***/
2245#define IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes(This,desc,nummodes,modes) (This)->lpVtbl->GetNumberOfDeinterlaceModes(This,desc,nummodes,modes)
2246#define IVMRDeinterlaceControl9_GetDeinterlaceModeCaps(This,mode,desc,caps) (This)->lpVtbl->GetDeinterlaceModeCaps(This,mode,desc,caps)
2247#define IVMRDeinterlaceControl9_GetDeinterlaceMode(This,streamid,mode) (This)->lpVtbl->GetDeinterlaceMode(This,streamid,mode)
2248#define IVMRDeinterlaceControl9_SetDeinterlaceMode(This,streamid,mode) (This)->lpVtbl->SetDeinterlaceMode(This,streamid,mode)
2249#define IVMRDeinterlaceControl9_GetDeinterlacePrefs(This,prefs) (This)->lpVtbl->GetDeinterlacePrefs(This,prefs)
2250#define IVMRDeinterlaceControl9_SetDeinterlacePrefs(This,prefs) (This)->lpVtbl->SetDeinterlacePrefs(This,prefs)
2251#define IVMRDeinterlaceControl9_GetActualDeinterlaceMode(This,streamid,mode) (This)->lpVtbl->GetActualDeinterlaceMode(This,streamid,mode)
2252#else
2253/*** IUnknown methods ***/
2254static inline HRESULT IVMRDeinterlaceControl9_QueryInterface(IVMRDeinterlaceControl9* This,REFIID riid,void **ppvObject) {
2255    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2256}
2257static inline ULONG IVMRDeinterlaceControl9_AddRef(IVMRDeinterlaceControl9* This) {
2258    return This->lpVtbl->AddRef(This);
2259}
2260static inline ULONG IVMRDeinterlaceControl9_Release(IVMRDeinterlaceControl9* This) {
2261    return This->lpVtbl->Release(This);
2262}
2263/*** IVMRDeinterlaceControl9 methods ***/
2264static inline HRESULT IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes(IVMRDeinterlaceControl9* This,VMR9VideoDesc *desc,DWORD *nummodes,GUID *modes) {
2265    return This->lpVtbl->GetNumberOfDeinterlaceModes(This,desc,nummodes,modes);
2266}
2267static inline HRESULT IVMRDeinterlaceControl9_GetDeinterlaceModeCaps(IVMRDeinterlaceControl9* This,GUID *mode,VMR9VideoDesc *desc,VMR9DeinterlaceCaps *caps) {
2268    return This->lpVtbl->GetDeinterlaceModeCaps(This,mode,desc,caps);
2269}
2270static inline HRESULT IVMRDeinterlaceControl9_GetDeinterlaceMode(IVMRDeinterlaceControl9* This,DWORD streamid,GUID *mode) {
2271    return This->lpVtbl->GetDeinterlaceMode(This,streamid,mode);
2272}
2273static inline HRESULT IVMRDeinterlaceControl9_SetDeinterlaceMode(IVMRDeinterlaceControl9* This,DWORD streamid,GUID *mode) {
2274    return This->lpVtbl->SetDeinterlaceMode(This,streamid,mode);
2275}
2276static inline HRESULT IVMRDeinterlaceControl9_GetDeinterlacePrefs(IVMRDeinterlaceControl9* This,DWORD *prefs) {
2277    return This->lpVtbl->GetDeinterlacePrefs(This,prefs);
2278}
2279static inline HRESULT IVMRDeinterlaceControl9_SetDeinterlacePrefs(IVMRDeinterlaceControl9* This,DWORD prefs) {
2280    return This->lpVtbl->SetDeinterlacePrefs(This,prefs);
2281}
2282static inline HRESULT IVMRDeinterlaceControl9_GetActualDeinterlaceMode(IVMRDeinterlaceControl9* This,DWORD streamid,GUID *mode) {
2283    return This->lpVtbl->GetActualDeinterlaceMode(This,streamid,mode);
2284}
2285#endif
2286#endif
2287
2288#endif
2289
2290
2291#endif  /* __IVMRDeinterlaceControl9_INTERFACE_DEFINED__ */
2292
2293typedef struct _VMR9VideoStreamInfo {
2294    IDirect3DSurface9 *pddsVideoSurface;
2295    DWORD dwWidth;
2296    DWORD dwHeight;
2297    DWORD dwStrmID;
2298    FLOAT fAlpha;
2299    VMR9NormalizedRect rNormal;
2300    REFERENCE_TIME rtStart;
2301    REFERENCE_TIME rtEnd;
2302    VMR9_SampleFormat SampleFormat;
2303} VMR9VideoStreamInfo;
2304/*****************************************************************************
2305 * IVMRImageCompositor9 interface
2306 */
2307#ifndef __IVMRImageCompositor9_INTERFACE_DEFINED__
2308#define __IVMRImageCompositor9_INTERFACE_DEFINED__
2309
2310DEFINE_GUID(IID_IVMRImageCompositor9, 0x4a5c89eb, 0xdf51, 0x4654, 0xac,0x2a, 0xe4,0x8e,0x02,0xbb,0xab,0xf6);
2311#if defined(__cplusplus) && !defined(CINTERFACE)
2312MIDL_INTERFACE("4a5c89eb-df51-4654-ac2a-e48e02bbabf6")
2313IVMRImageCompositor9 : public IUnknown
2314{
2315    virtual HRESULT STDMETHODCALLTYPE InitCompositionDevice(
2316        IUnknown *d3ddev) = 0;
2317
2318    virtual HRESULT STDMETHODCALLTYPE TermCompositionDevice(
2319        IUnknown *d3ddev) = 0;
2320
2321    virtual HRESULT STDMETHODCALLTYPE SetStreamMediaType(
2322        DWORD stream,
2323        AM_MEDIA_TYPE *mt,
2324        WINBOOL texture) = 0;
2325
2326    virtual HRESULT STDMETHODCALLTYPE CompositeImage(
2327        IUnknown *d3ddev,
2328        IDirect3DSurface9 *d3dtarget,
2329        AM_MEDIA_TYPE *mttarget,
2330        REFERENCE_TIME start,
2331        REFERENCE_TIME stop,
2332        D3DCOLOR back,
2333        VMR9VideoStreamInfo *info,
2334        UINT streams) = 0;
2335
2336};
2337#ifdef __CRT_UUID_DECL
2338__CRT_UUID_DECL(IVMRImageCompositor9, 0x4a5c89eb, 0xdf51, 0x4654, 0xac,0x2a, 0xe4,0x8e,0x02,0xbb,0xab,0xf6)
2339#endif
2340#else
2341typedef struct IVMRImageCompositor9Vtbl {
2342    BEGIN_INTERFACE
2343
2344    /*** IUnknown methods ***/
2345    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2346        IVMRImageCompositor9 *This,
2347        REFIID riid,
2348        void **ppvObject);
2349
2350    ULONG (STDMETHODCALLTYPE *AddRef)(
2351        IVMRImageCompositor9 *This);
2352
2353    ULONG (STDMETHODCALLTYPE *Release)(
2354        IVMRImageCompositor9 *This);
2355
2356    /*** IVMRImageCompositor9 methods ***/
2357    HRESULT (STDMETHODCALLTYPE *InitCompositionDevice)(
2358        IVMRImageCompositor9 *This,
2359        IUnknown *d3ddev);
2360
2361    HRESULT (STDMETHODCALLTYPE *TermCompositionDevice)(
2362        IVMRImageCompositor9 *This,
2363        IUnknown *d3ddev);
2364
2365    HRESULT (STDMETHODCALLTYPE *SetStreamMediaType)(
2366        IVMRImageCompositor9 *This,
2367        DWORD stream,
2368        AM_MEDIA_TYPE *mt,
2369        WINBOOL texture);
2370
2371    HRESULT (STDMETHODCALLTYPE *CompositeImage)(
2372        IVMRImageCompositor9 *This,
2373        IUnknown *d3ddev,
2374        IDirect3DSurface9 *d3dtarget,
2375        AM_MEDIA_TYPE *mttarget,
2376        REFERENCE_TIME start,
2377        REFERENCE_TIME stop,
2378        D3DCOLOR back,
2379        VMR9VideoStreamInfo *info,
2380        UINT streams);
2381
2382    END_INTERFACE
2383} IVMRImageCompositor9Vtbl;
2384
2385interface IVMRImageCompositor9 {
2386    CONST_VTBL IVMRImageCompositor9Vtbl* lpVtbl;
2387};
2388
2389#ifdef COBJMACROS
2390#ifndef WIDL_C_INLINE_WRAPPERS
2391/*** IUnknown methods ***/
2392#define IVMRImageCompositor9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2393#define IVMRImageCompositor9_AddRef(This) (This)->lpVtbl->AddRef(This)
2394#define IVMRImageCompositor9_Release(This) (This)->lpVtbl->Release(This)
2395/*** IVMRImageCompositor9 methods ***/
2396#define IVMRImageCompositor9_InitCompositionDevice(This,d3ddev) (This)->lpVtbl->InitCompositionDevice(This,d3ddev)
2397#define IVMRImageCompositor9_TermCompositionDevice(This,d3ddev) (This)->lpVtbl->TermCompositionDevice(This,d3ddev)
2398#define IVMRImageCompositor9_SetStreamMediaType(This,stream,mt,texture) (This)->lpVtbl->SetStreamMediaType(This,stream,mt,texture)
2399#define IVMRImageCompositor9_CompositeImage(This,d3ddev,d3dtarget,mttarget,start,stop,back,info,streams) (This)->lpVtbl->CompositeImage(This,d3ddev,d3dtarget,mttarget,start,stop,back,info,streams)
2400#else
2401/*** IUnknown methods ***/
2402static inline HRESULT IVMRImageCompositor9_QueryInterface(IVMRImageCompositor9* This,REFIID riid,void **ppvObject) {
2403    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2404}
2405static inline ULONG IVMRImageCompositor9_AddRef(IVMRImageCompositor9* This) {
2406    return This->lpVtbl->AddRef(This);
2407}
2408static inline ULONG IVMRImageCompositor9_Release(IVMRImageCompositor9* This) {
2409    return This->lpVtbl->Release(This);
2410}
2411/*** IVMRImageCompositor9 methods ***/
2412static inline HRESULT IVMRImageCompositor9_InitCompositionDevice(IVMRImageCompositor9* This,IUnknown *d3ddev) {
2413    return This->lpVtbl->InitCompositionDevice(This,d3ddev);
2414}
2415static inline HRESULT IVMRImageCompositor9_TermCompositionDevice(IVMRImageCompositor9* This,IUnknown *d3ddev) {
2416    return This->lpVtbl->TermCompositionDevice(This,d3ddev);
2417}
2418static inline HRESULT IVMRImageCompositor9_SetStreamMediaType(IVMRImageCompositor9* This,DWORD stream,AM_MEDIA_TYPE *mt,WINBOOL texture) {
2419    return This->lpVtbl->SetStreamMediaType(This,stream,mt,texture);
2420}
2421static inline HRESULT IVMRImageCompositor9_CompositeImage(IVMRImageCompositor9* This,IUnknown *d3ddev,IDirect3DSurface9 *d3dtarget,AM_MEDIA_TYPE *mttarget,REFERENCE_TIME start,REFERENCE_TIME stop,D3DCOLOR back,VMR9VideoStreamInfo *info,UINT streams) {
2422    return This->lpVtbl->CompositeImage(This,d3ddev,d3dtarget,mttarget,start,stop,back,info,streams);
2423}
2424#endif
2425#endif
2426
2427#endif
2428
2429
2430#endif  /* __IVMRImageCompositor9_INTERFACE_DEFINED__ */
2431
2432/* Begin additional prototypes for all interfaces */
2433
2434
2435/* End additional prototypes */
2436
2437#ifdef __cplusplus
2438}
2439#endif
2440
2441#endif /* __vmr9_h__ */