zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

vmr9.h (88019B) - Raw


      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__
     23 typedef interface IVMRImagePresenter9 IVMRImagePresenter9;
     24 #ifdef __cplusplus
     25 interface IVMRImagePresenter9;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IVMRSurfaceAllocator9_FWD_DEFINED__
     30 #define __IVMRSurfaceAllocator9_FWD_DEFINED__
     31 typedef interface IVMRSurfaceAllocator9 IVMRSurfaceAllocator9;
     32 #ifdef __cplusplus
     33 interface IVMRSurfaceAllocator9;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
     38 #define __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
     39 typedef interface IVMRSurfaceAllocatorEx9 IVMRSurfaceAllocatorEx9;
     40 #ifdef __cplusplus
     41 interface IVMRSurfaceAllocatorEx9;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
     46 #define __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
     47 typedef interface IVMRSurfaceAllocatorNotify9 IVMRSurfaceAllocatorNotify9;
     48 #ifdef __cplusplus
     49 interface IVMRSurfaceAllocatorNotify9;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IVMRWindowlessControl9_FWD_DEFINED__
     54 #define __IVMRWindowlessControl9_FWD_DEFINED__
     55 typedef interface IVMRWindowlessControl9 IVMRWindowlessControl9;
     56 #ifdef __cplusplus
     57 interface IVMRWindowlessControl9;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IVMRMixerControl9_FWD_DEFINED__
     62 #define __IVMRMixerControl9_FWD_DEFINED__
     63 typedef interface IVMRMixerControl9 IVMRMixerControl9;
     64 #ifdef __cplusplus
     65 interface IVMRMixerControl9;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IVMRMixerBitmap9_FWD_DEFINED__
     70 #define __IVMRMixerBitmap9_FWD_DEFINED__
     71 typedef interface IVMRMixerBitmap9 IVMRMixerBitmap9;
     72 #ifdef __cplusplus
     73 interface IVMRMixerBitmap9;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IVMRSurface9_FWD_DEFINED__
     78 #define __IVMRSurface9_FWD_DEFINED__
     79 typedef interface IVMRSurface9 IVMRSurface9;
     80 #ifdef __cplusplus
     81 interface IVMRSurface9;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IVMRImagePresenterConfig9_FWD_DEFINED__
     86 #define __IVMRImagePresenterConfig9_FWD_DEFINED__
     87 typedef interface IVMRImagePresenterConfig9 IVMRImagePresenterConfig9;
     88 #ifdef __cplusplus
     89 interface IVMRImagePresenterConfig9;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IVMRVideoStreamControl9_FWD_DEFINED__
     94 #define __IVMRVideoStreamControl9_FWD_DEFINED__
     95 typedef interface IVMRVideoStreamControl9 IVMRVideoStreamControl9;
     96 #ifdef __cplusplus
     97 interface IVMRVideoStreamControl9;
     98 #endif /* __cplusplus */
     99 #endif
    100 
    101 #ifndef __IVMRFilterConfig9_FWD_DEFINED__
    102 #define __IVMRFilterConfig9_FWD_DEFINED__
    103 typedef interface IVMRFilterConfig9 IVMRFilterConfig9;
    104 #ifdef __cplusplus
    105 interface IVMRFilterConfig9;
    106 #endif /* __cplusplus */
    107 #endif
    108 
    109 #ifndef __IVMRAspectRatioControl9_FWD_DEFINED__
    110 #define __IVMRAspectRatioControl9_FWD_DEFINED__
    111 typedef interface IVMRAspectRatioControl9 IVMRAspectRatioControl9;
    112 #ifdef __cplusplus
    113 interface IVMRAspectRatioControl9;
    114 #endif /* __cplusplus */
    115 #endif
    116 
    117 #ifndef __IVMRMonitorConfig9_FWD_DEFINED__
    118 #define __IVMRMonitorConfig9_FWD_DEFINED__
    119 typedef interface IVMRMonitorConfig9 IVMRMonitorConfig9;
    120 #ifdef __cplusplus
    121 interface IVMRMonitorConfig9;
    122 #endif /* __cplusplus */
    123 #endif
    124 
    125 #ifndef __IVMRDeinterlaceControl9_FWD_DEFINED__
    126 #define __IVMRDeinterlaceControl9_FWD_DEFINED__
    127 typedef interface IVMRDeinterlaceControl9 IVMRDeinterlaceControl9;
    128 #ifdef __cplusplus
    129 interface IVMRDeinterlaceControl9;
    130 #endif /* __cplusplus */
    131 #endif
    132 
    133 #ifndef __IVMRImageCompositor9_FWD_DEFINED__
    134 #define __IVMRImageCompositor9_FWD_DEFINED__
    135 typedef interface IVMRImageCompositor9 IVMRImageCompositor9;
    136 #ifdef __cplusplus
    137 interface IVMRImageCompositor9;
    138 #endif /* __cplusplus */
    139 #endif
    140 
    141 /* Headers for imported files */
    142 
    143 #include <unknwn.h>
    144 
    145 #ifdef __cplusplus
    146 extern "C" {
    147 #endif
    148 
    149 #if 0
    150 #ifndef __IDirect3DSurface9_FWD_DEFINED__
    151 #define __IDirect3DSurface9_FWD_DEFINED__
    152 typedef interface IDirect3DSurface9 IDirect3DSurface9;
    153 #ifdef __cplusplus
    154 interface IDirect3DSurface9;
    155 #endif /* __cplusplus */
    156 #endif
    157 
    158 #ifndef __IDirect3DDevice9_FWD_DEFINED__
    159 #define __IDirect3DDevice9_FWD_DEFINED__
    160 typedef interface IDirect3DDevice9 IDirect3DDevice9;
    161 #ifdef __cplusplus
    162 interface IDirect3DDevice9;
    163 #endif /* __cplusplus */
    164 #endif
    165 
    166 typedef LONGLONG REFERENCE_TIME;
    167 typedef DWORD D3DFORMAT;
    168 typedef DWORD D3DPOOL;
    169 typedef HANDLE HMONITOR;
    170 typedef struct __WIDL_vmr9_generated_name_0000000C {
    171     char dummy;
    172 } AM_MEDIA_TYPE;
    173 typedef struct __WIDL_vmr9_generated_name_0000000D {
    174     char dummy;
    175 } D3DCOLOR;
    176 #endif
    177 #ifndef __IVMRSurface9_FWD_DEFINED__
    178 #define __IVMRSurface9_FWD_DEFINED__
    179 typedef interface IVMRSurface9 IVMRSurface9;
    180 #ifdef __cplusplus
    181 interface IVMRSurface9;
    182 #endif /* __cplusplus */
    183 #endif
    184 
    185 #ifndef __IVMRSurfaceAllocator9_FWD_DEFINED__
    186 #define __IVMRSurfaceAllocator9_FWD_DEFINED__
    187 typedef interface IVMRSurfaceAllocator9 IVMRSurfaceAllocator9;
    188 #ifdef __cplusplus
    189 interface IVMRSurfaceAllocator9;
    190 #endif /* __cplusplus */
    191 #endif
    192 
    193 #ifndef __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
    194 #define __IVMRSurfaceAllocatorEx9_FWD_DEFINED__
    195 typedef interface IVMRSurfaceAllocatorEx9 IVMRSurfaceAllocatorEx9;
    196 #ifdef __cplusplus
    197 interface IVMRSurfaceAllocatorEx9;
    198 #endif /* __cplusplus */
    199 #endif
    200 
    201 #ifndef __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
    202 #define __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__
    203 typedef interface IVMRSurfaceAllocatorNotify9 IVMRSurfaceAllocatorNotify9;
    204 #ifdef __cplusplus
    205 interface IVMRSurfaceAllocatorNotify9;
    206 #endif /* __cplusplus */
    207 #endif
    208 
    209 #ifndef __IVMRImagePresenter9_FWD_DEFINED__
    210 #define __IVMRImagePresenter9_FWD_DEFINED__
    211 typedef interface IVMRImagePresenter9 IVMRImagePresenter9;
    212 #ifdef __cplusplus
    213 interface IVMRImagePresenter9;
    214 #endif /* __cplusplus */
    215 #endif
    216 
    217 #ifndef __IVMRImagePresenterConfig9_FWD_DEFINED__
    218 #define __IVMRImagePresenterConfig9_FWD_DEFINED__
    219 typedef interface IVMRImagePresenterConfig9 IVMRImagePresenterConfig9;
    220 #ifdef __cplusplus
    221 interface IVMRImagePresenterConfig9;
    222 #endif /* __cplusplus */
    223 #endif
    224 
    225 #ifndef __IVMRMonitorConfig9_FWD_DEFINED__
    226 #define __IVMRMonitorConfig9_FWD_DEFINED__
    227 typedef interface IVMRMonitorConfig9 IVMRMonitorConfig9;
    228 #ifdef __cplusplus
    229 interface IVMRMonitorConfig9;
    230 #endif /* __cplusplus */
    231 #endif
    232 
    233 #ifndef __IVMRWindowlessControl9_FWD_DEFINED__
    234 #define __IVMRWindowlessControl9_FWD_DEFINED__
    235 typedef interface IVMRWindowlessControl9 IVMRWindowlessControl9;
    236 #ifdef __cplusplus
    237 interface IVMRWindowlessControl9;
    238 #endif /* __cplusplus */
    239 #endif
    240 
    241 #ifndef __IVMRMixerControl9_FWD_DEFINED__
    242 #define __IVMRMixerControl9_FWD_DEFINED__
    243 typedef interface IVMRMixerControl9 IVMRMixerControl9;
    244 #ifdef __cplusplus
    245 interface IVMRMixerControl9;
    246 #endif /* __cplusplus */
    247 #endif
    248 
    249 #ifndef __IVMRImageCompositor9_FWD_DEFINED__
    250 #define __IVMRImageCompositor9_FWD_DEFINED__
    251 typedef interface IVMRImageCompositor9 IVMRImageCompositor9;
    252 #ifdef __cplusplus
    253 interface IVMRImageCompositor9;
    254 #endif /* __cplusplus */
    255 #endif
    256 
    257 #ifndef __IVMRMixerBitmap9_FWD_DEFINED__
    258 #define __IVMRMixerBitmap9_FWD_DEFINED__
    259 typedef interface IVMRMixerBitmap9 IVMRMixerBitmap9;
    260 #ifdef __cplusplus
    261 interface IVMRMixerBitmap9;
    262 #endif /* __cplusplus */
    263 #endif
    264 
    265 #ifndef __IVMRFilterConfig9_FWD_DEFINED__
    266 #define __IVMRFilterConfig9_FWD_DEFINED__
    267 typedef interface IVMRFilterConfig9 IVMRFilterConfig9;
    268 #ifdef __cplusplus
    269 interface IVMRFilterConfig9;
    270 #endif /* __cplusplus */
    271 #endif
    272 
    273 #ifndef __IVMRAspectRatioControl9_FWD_DEFINED__
    274 #define __IVMRAspectRatioControl9_FWD_DEFINED__
    275 typedef interface IVMRAspectRatioControl9 IVMRAspectRatioControl9;
    276 #ifdef __cplusplus
    277 interface IVMRAspectRatioControl9;
    278 #endif /* __cplusplus */
    279 #endif
    280 
    281 #ifndef __IVMRVideoStreamControl9_FWD_DEFINED__
    282 #define __IVMRVideoStreamControl9_FWD_DEFINED__
    283 typedef interface IVMRVideoStreamControl9 IVMRVideoStreamControl9;
    284 #ifdef __cplusplus
    285 interface IVMRVideoStreamControl9;
    286 #endif /* __cplusplus */
    287 #endif
    288 
    289 typedef enum _VMR9PresentationFlags {
    290     VMR9Sample_SyncPoint = 0x1,
    291     VMR9Sample_Preroll = 0x2,
    292     VMR9Sample_Discontinuity = 0x4,
    293     VMR9Sample_TimeValid = 0x8,
    294     VMR9Sample_SrcDstRectsValid = 0x10
    295 } VMR9PresentationFlags;
    296 typedef 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 
    313 DEFINE_GUID(IID_IVMRImagePresenter9, 0x69188c61, 0x12a3, 0x40f0, 0x8f,0xfc, 0x34,0x2e,0x7b,0x43,0x3f,0xd7);
    314 #if defined(__cplusplus) && !defined(CINTERFACE)
    315 MIDL_INTERFACE("69188c61-12a3-40f0-8ffc-342e7b433fd7")
    316 IVMRImagePresenter9 : 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
    333 typedef 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 
    365 interface 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 ***/
    381 static inline HRESULT IVMRImagePresenter9_QueryInterface(IVMRImagePresenter9* This,REFIID riid,void **ppvObject) {
    382     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    383 }
    384 static inline ULONG IVMRImagePresenter9_AddRef(IVMRImagePresenter9* This) {
    385     return This->lpVtbl->AddRef(This);
    386 }
    387 static inline ULONG IVMRImagePresenter9_Release(IVMRImagePresenter9* This) {
    388     return This->lpVtbl->Release(This);
    389 }
    390 /*** IVMRImagePresenter9 methods ***/
    391 static inline HRESULT IVMRImagePresenter9_StartPresenting(IVMRImagePresenter9* This,DWORD_PTR id) {
    392     return This->lpVtbl->StartPresenting(This,id);
    393 }
    394 static inline HRESULT IVMRImagePresenter9_StopPresenting(IVMRImagePresenter9* This,DWORD_PTR id) {
    395     return This->lpVtbl->StopPresenting(This,id);
    396 }
    397 static 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 
    408 typedef 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;
    417 typedef 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 
    433 DEFINE_GUID(IID_IVMRSurfaceAllocator9, 0x8d5148ea, 0x3f5d, 0x46cf, 0x9d,0xf1, 0xd1,0xb8,0x96,0xee,0xdb,0x1f);
    434 #if defined(__cplusplus) && !defined(CINTERFACE)
    435 MIDL_INTERFACE("8d5148ea-3f5d-46cf-9df1-d1b896eedb1f")
    436 IVMRSurfaceAllocator9 : 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
    460 typedef 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 
    500 interface 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 ***/
    517 static inline HRESULT IVMRSurfaceAllocator9_QueryInterface(IVMRSurfaceAllocator9* This,REFIID riid,void **ppvObject) {
    518     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    519 }
    520 static inline ULONG IVMRSurfaceAllocator9_AddRef(IVMRSurfaceAllocator9* This) {
    521     return This->lpVtbl->AddRef(This);
    522 }
    523 static inline ULONG IVMRSurfaceAllocator9_Release(IVMRSurfaceAllocator9* This) {
    524     return This->lpVtbl->Release(This);
    525 }
    526 /*** IVMRSurfaceAllocator9 methods ***/
    527 static inline HRESULT IVMRSurfaceAllocator9_InitializeDevice(IVMRSurfaceAllocator9* This,DWORD_PTR id,VMR9AllocationInfo *allocinfo,DWORD *numbuffers) {
    528     return This->lpVtbl->InitializeDevice(This,id,allocinfo,numbuffers);
    529 }
    530 static inline HRESULT IVMRSurfaceAllocator9_TerminateDevice(IVMRSurfaceAllocator9* This,DWORD_PTR id) {
    531     return This->lpVtbl->TerminateDevice(This,id);
    532 }
    533 static 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 }
    536 static 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 
    553 DEFINE_GUID(IID_IVMRSurfaceAllocatorEx9, 0x6de9a68a, 0xa928, 0x4522, 0xbf,0x57, 0x65,0x5a,0xe3,0x86,0x64,0x56);
    554 #if defined(__cplusplus) && !defined(CINTERFACE)
    555 MIDL_INTERFACE("6de9a68a-a928-4522-bf57-655ae3866456")
    556 IVMRSurfaceAllocatorEx9 : 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
    570 typedef 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 
    619 interface 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 ***/
    638 static inline HRESULT IVMRSurfaceAllocatorEx9_QueryInterface(IVMRSurfaceAllocatorEx9* This,REFIID riid,void **ppvObject) {
    639     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    640 }
    641 static inline ULONG IVMRSurfaceAllocatorEx9_AddRef(IVMRSurfaceAllocatorEx9* This) {
    642     return This->lpVtbl->AddRef(This);
    643 }
    644 static inline ULONG IVMRSurfaceAllocatorEx9_Release(IVMRSurfaceAllocatorEx9* This) {
    645     return This->lpVtbl->Release(This);
    646 }
    647 /*** IVMRSurfaceAllocator9 methods ***/
    648 static inline HRESULT IVMRSurfaceAllocatorEx9_InitializeDevice(IVMRSurfaceAllocatorEx9* This,DWORD_PTR id,VMR9AllocationInfo *allocinfo,DWORD *numbuffers) {
    649     return This->lpVtbl->InitializeDevice(This,id,allocinfo,numbuffers);
    650 }
    651 static inline HRESULT IVMRSurfaceAllocatorEx9_TerminateDevice(IVMRSurfaceAllocatorEx9* This,DWORD_PTR id) {
    652     return This->lpVtbl->TerminateDevice(This,id);
    653 }
    654 static 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 }
    657 static inline HRESULT IVMRSurfaceAllocatorEx9_AdviseNotify(IVMRSurfaceAllocatorEx9* This,IVMRSurfaceAllocatorNotify9 *allocnotify) {
    658     return This->lpVtbl->AdviseNotify(This,allocnotify);
    659 }
    660 /*** IVMRSurfaceAllocatorEx9 methods ***/
    661 static 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 
    678 DEFINE_GUID(IID_IVMRSurfaceAllocatorNotify9, 0xdca3f5df, 0xbb3a, 0x4d03, 0xbd,0x81, 0x84,0x61,0x4b,0xfb,0xfa,0x0c);
    679 #if defined(__cplusplus) && !defined(CINTERFACE)
    680 MIDL_INTERFACE("dca3f5df-bb3a-4d03-bd81-84614bfbfa0c")
    681 IVMRSurfaceAllocatorNotify9 : 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
    710 typedef 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 
    756 interface 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 ***/
    774 static inline HRESULT IVMRSurfaceAllocatorNotify9_QueryInterface(IVMRSurfaceAllocatorNotify9* This,REFIID riid,void **ppvObject) {
    775     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    776 }
    777 static inline ULONG IVMRSurfaceAllocatorNotify9_AddRef(IVMRSurfaceAllocatorNotify9* This) {
    778     return This->lpVtbl->AddRef(This);
    779 }
    780 static inline ULONG IVMRSurfaceAllocatorNotify9_Release(IVMRSurfaceAllocatorNotify9* This) {
    781     return This->lpVtbl->Release(This);
    782 }
    783 /*** IVMRSurfaceAllocatorNotify9 methods ***/
    784 static inline HRESULT IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator(IVMRSurfaceAllocatorNotify9* This,DWORD_PTR id,IVMRSurfaceAllocator9 *alloc) {
    785     return This->lpVtbl->AdviseSurfaceAllocator(This,id,alloc);
    786 }
    787 static inline HRESULT IVMRSurfaceAllocatorNotify9_SetD3DDevice(IVMRSurfaceAllocatorNotify9* This,IDirect3DDevice9 *device,HMONITOR monitor) {
    788     return This->lpVtbl->SetD3DDevice(This,device,monitor);
    789 }
    790 static inline HRESULT IVMRSurfaceAllocatorNotify9_ChangeD3DDevice(IVMRSurfaceAllocatorNotify9* This,IDirect3DDevice9 *device,HMONITOR monitor) {
    791     return This->lpVtbl->ChangeD3DDevice(This,device,monitor);
    792 }
    793 static inline HRESULT IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper(IVMRSurfaceAllocatorNotify9* This,VMR9AllocationInfo *allocinfo,DWORD *numbuffers,IDirect3DSurface9 **surface) {
    794     return This->lpVtbl->AllocateSurfaceHelper(This,allocinfo,numbuffers,surface);
    795 }
    796 static 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 
    807 typedef 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 
    817 DEFINE_GUID(IID_IVMRWindowlessControl9, 0x8f537d09, 0xf85e, 0x4414, 0xb2,0x3b, 0x50,0x2e,0x54,0xc7,0x99,0x27);
    818 #if defined(__cplusplus) && !defined(CINTERFACE)
    819 MIDL_INTERFACE("8f537d09-f85e-4414-b23b-502e54c79927")
    820 IVMRWindowlessControl9 : 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
    874 typedef 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 
    952 interface 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 ***/
    978 static inline HRESULT IVMRWindowlessControl9_QueryInterface(IVMRWindowlessControl9* This,REFIID riid,void **ppvObject) {
    979     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    980 }
    981 static inline ULONG IVMRWindowlessControl9_AddRef(IVMRWindowlessControl9* This) {
    982     return This->lpVtbl->AddRef(This);
    983 }
    984 static inline ULONG IVMRWindowlessControl9_Release(IVMRWindowlessControl9* This) {
    985     return This->lpVtbl->Release(This);
    986 }
    987 /*** IVMRWindowlessControl9 methods ***/
    988 static 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 }
    991 static inline HRESULT IVMRWindowlessControl9_GetMinIdealVideoSize(IVMRWindowlessControl9* This,LONG *width,LONG *height) {
    992     return This->lpVtbl->GetMinIdealVideoSize(This,width,height);
    993 }
    994 static inline HRESULT IVMRWindowlessControl9_GetMaxIdealVideoSize(IVMRWindowlessControl9* This,LONG *width,LONG *height) {
    995     return This->lpVtbl->GetMaxIdealVideoSize(This,width,height);
    996 }
    997 static inline HRESULT IVMRWindowlessControl9_SetVideoPosition(IVMRWindowlessControl9* This,const RECT *source,const RECT *dest) {
    998     return This->lpVtbl->SetVideoPosition(This,source,dest);
    999 }
   1000 static inline HRESULT IVMRWindowlessControl9_GetVideoPosition(IVMRWindowlessControl9* This,RECT *source,RECT *dest) {
   1001     return This->lpVtbl->GetVideoPosition(This,source,dest);
   1002 }
   1003 static inline HRESULT IVMRWindowlessControl9_GetAspectRatioMode(IVMRWindowlessControl9* This,DWORD *mode) {
   1004     return This->lpVtbl->GetAspectRatioMode(This,mode);
   1005 }
   1006 static inline HRESULT IVMRWindowlessControl9_SetAspectRatioMode(IVMRWindowlessControl9* This,DWORD mode) {
   1007     return This->lpVtbl->SetAspectRatioMode(This,mode);
   1008 }
   1009 static inline HRESULT IVMRWindowlessControl9_SetVideoClippingWindow(IVMRWindowlessControl9* This,HWND hwnd) {
   1010     return This->lpVtbl->SetVideoClippingWindow(This,hwnd);
   1011 }
   1012 static inline HRESULT IVMRWindowlessControl9_RepaintVideo(IVMRWindowlessControl9* This,HWND hwnd,HDC hdc) {
   1013     return This->lpVtbl->RepaintVideo(This,hwnd,hdc);
   1014 }
   1015 static inline HRESULT IVMRWindowlessControl9_DisplayModeChanged(IVMRWindowlessControl9* This) {
   1016     return This->lpVtbl->DisplayModeChanged(This);
   1017 }
   1018 static inline HRESULT IVMRWindowlessControl9_GetCurrentImage(IVMRWindowlessControl9* This,BYTE **dib) {
   1019     return This->lpVtbl->GetCurrentImage(This,dib);
   1020 }
   1021 static inline HRESULT IVMRWindowlessControl9_SetBorderColor(IVMRWindowlessControl9* This,COLORREF color) {
   1022     return This->lpVtbl->SetBorderColor(This,color);
   1023 }
   1024 static 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 
   1035 typedef 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;
   1056 typedef struct _VMR9NormalizedRect {
   1057     FLOAT left;
   1058     FLOAT top;
   1059     FLOAT right;
   1060     FLOAT bottom;
   1061 } VMR9NormalizedRect;
   1062 typedef enum _VMR9ProcAmpControlFlags {
   1063     ProcAmpControl9_Brightness = 0x1,
   1064     ProcAmpControl9_Contrast = 0x2,
   1065     ProcAmpControl9_Hue = 0x4,
   1066     ProcAmpControl9_Saturation = 0x8,
   1067     ProcAmpControl9_Mask = 0xf
   1068 } VMR9ProcAmpControlFlags;
   1069 typedef struct _VMR9ProcAmpControl {
   1070     DWORD dwSize;
   1071     DWORD dwFlags;
   1072     FLOAT Brightness;
   1073     FLOAT Contrast;
   1074     FLOAT Hue;
   1075     FLOAT Saturation;
   1076 } VMR9ProcAmpControl;
   1077 typedef 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 
   1091 DEFINE_GUID(IID_IVMRMixerControl9, 0x1a777eaa, 0x47c8, 0x4930, 0xb2,0xc9, 0x8f,0xee,0x1c,0x1b,0x0f,0x3b);
   1092 #if defined(__cplusplus) && !defined(CINTERFACE)
   1093 MIDL_INTERFACE("1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b")
   1094 IVMRMixerControl9 : 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
   1149 typedef 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 
   1229 interface 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 ***/
   1255 static inline HRESULT IVMRMixerControl9_QueryInterface(IVMRMixerControl9* This,REFIID riid,void **ppvObject) {
   1256     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1257 }
   1258 static inline ULONG IVMRMixerControl9_AddRef(IVMRMixerControl9* This) {
   1259     return This->lpVtbl->AddRef(This);
   1260 }
   1261 static inline ULONG IVMRMixerControl9_Release(IVMRMixerControl9* This) {
   1262     return This->lpVtbl->Release(This);
   1263 }
   1264 /*** IVMRMixerControl9 methods ***/
   1265 static inline HRESULT IVMRMixerControl9_SetAlpha(IVMRMixerControl9* This,DWORD streamid,FLOAT alpha) {
   1266     return This->lpVtbl->SetAlpha(This,streamid,alpha);
   1267 }
   1268 static inline HRESULT IVMRMixerControl9_GetAlpha(IVMRMixerControl9* This,DWORD streamid,FLOAT *alpha) {
   1269     return This->lpVtbl->GetAlpha(This,streamid,alpha);
   1270 }
   1271 static inline HRESULT IVMRMixerControl9_SetZOrder(IVMRMixerControl9* This,DWORD streamid,DWORD zorder) {
   1272     return This->lpVtbl->SetZOrder(This,streamid,zorder);
   1273 }
   1274 static inline HRESULT IVMRMixerControl9_GetZOrder(IVMRMixerControl9* This,DWORD streamid,DWORD *zorder) {
   1275     return This->lpVtbl->GetZOrder(This,streamid,zorder);
   1276 }
   1277 static inline HRESULT IVMRMixerControl9_SetOutputRect(IVMRMixerControl9* This,DWORD streamid,const VMR9NormalizedRect *rect) {
   1278     return This->lpVtbl->SetOutputRect(This,streamid,rect);
   1279 }
   1280 static inline HRESULT IVMRMixerControl9_GetOutputRect(IVMRMixerControl9* This,DWORD streamid,VMR9NormalizedRect *rect) {
   1281     return This->lpVtbl->GetOutputRect(This,streamid,rect);
   1282 }
   1283 static inline HRESULT IVMRMixerControl9_SetBackgroundClr(IVMRMixerControl9* This,COLORREF back) {
   1284     return This->lpVtbl->SetBackgroundClr(This,back);
   1285 }
   1286 static inline HRESULT IVMRMixerControl9_GetBackgroundClr(IVMRMixerControl9* This,COLORREF *back) {
   1287     return This->lpVtbl->GetBackgroundClr(This,back);
   1288 }
   1289 static inline HRESULT IVMRMixerControl9_SetMixingPrefs(IVMRMixerControl9* This,DWORD mixingprefs) {
   1290     return This->lpVtbl->SetMixingPrefs(This,mixingprefs);
   1291 }
   1292 static inline HRESULT IVMRMixerControl9_GetMixingPrefs(IVMRMixerControl9* This,DWORD *mixingprefs) {
   1293     return This->lpVtbl->GetMixingPrefs(This,mixingprefs);
   1294 }
   1295 static inline HRESULT IVMRMixerControl9_SetProcAmpControl(IVMRMixerControl9* This,DWORD streamid,VMR9ProcAmpControl *control) {
   1296     return This->lpVtbl->SetProcAmpControl(This,streamid,control);
   1297 }
   1298 static inline HRESULT IVMRMixerControl9_GetProcAmpControl(IVMRMixerControl9* This,DWORD streamid,VMR9ProcAmpControl *control) {
   1299     return This->lpVtbl->GetProcAmpControl(This,streamid,control);
   1300 }
   1301 static 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 
   1312 typedef 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;
   1322 typedef 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 
   1336 DEFINE_GUID(IID_IVMRMixerBitmap9, 0xced175e5, 0x1935, 0x4820, 0x81,0xbd, 0xff,0x6a,0xd0,0x0c,0x91,0x08);
   1337 #if defined(__cplusplus) && !defined(CINTERFACE)
   1338 MIDL_INTERFACE("ced175e5-1935-4820-81bd-ff6ad00c9108")
   1339 IVMRMixerBitmap9 : 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
   1355 typedef 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 
   1386 interface 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 ***/
   1402 static inline HRESULT IVMRMixerBitmap9_QueryInterface(IVMRMixerBitmap9* This,REFIID riid,void **ppvObject) {
   1403     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1404 }
   1405 static inline ULONG IVMRMixerBitmap9_AddRef(IVMRMixerBitmap9* This) {
   1406     return This->lpVtbl->AddRef(This);
   1407 }
   1408 static inline ULONG IVMRMixerBitmap9_Release(IVMRMixerBitmap9* This) {
   1409     return This->lpVtbl->Release(This);
   1410 }
   1411 /*** IVMRMixerBitmap9 methods ***/
   1412 static inline HRESULT IVMRMixerBitmap9_SetAlphaBitmap(IVMRMixerBitmap9* This,const VMR9AlphaBitmap *bitmap) {
   1413     return This->lpVtbl->SetAlphaBitmap(This,bitmap);
   1414 }
   1415 static inline HRESULT IVMRMixerBitmap9_UpdateAlphaBitmapParameters(IVMRMixerBitmap9* This,const VMR9AlphaBitmap *bitmap) {
   1416     return This->lpVtbl->UpdateAlphaBitmapParameters(This,bitmap);
   1417 }
   1418 static 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 
   1435 DEFINE_GUID(IID_IVMRSurface9, 0xdfc581a1, 0x6e1f, 0x4c3a, 0x8d,0x0a, 0x5e,0x97,0x92,0xea,0x2a,0xfc);
   1436 #if defined(__cplusplus) && !defined(CINTERFACE)
   1437 MIDL_INTERFACE("dfc581a1-6e1f-4c3a-8d0a-5e9792ea2afc")
   1438 IVMRSurface9 : 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
   1457 typedef 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 
   1490 interface 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 ***/
   1507 static inline HRESULT IVMRSurface9_QueryInterface(IVMRSurface9* This,REFIID riid,void **ppvObject) {
   1508     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1509 }
   1510 static inline ULONG IVMRSurface9_AddRef(IVMRSurface9* This) {
   1511     return This->lpVtbl->AddRef(This);
   1512 }
   1513 static inline ULONG IVMRSurface9_Release(IVMRSurface9* This) {
   1514     return This->lpVtbl->Release(This);
   1515 }
   1516 /*** IVMRSurface9 methods ***/
   1517 static inline HRESULT IVMRSurface9_IsSurfaceLocked(IVMRSurface9* This) {
   1518     return This->lpVtbl->IsSurfaceLocked(This);
   1519 }
   1520 static inline HRESULT IVMRSurface9_LockSurface(IVMRSurface9* This,BYTE **surface) {
   1521     return This->lpVtbl->LockSurface(This,surface);
   1522 }
   1523 static inline HRESULT IVMRSurface9_UnlockSurface(IVMRSurface9* This) {
   1524     return This->lpVtbl->UnlockSurface(This);
   1525 }
   1526 static 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 
   1537 typedef 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 
   1547 DEFINE_GUID(IID_IVMRImagePresenterConfig9, 0x45c15cab, 0x6e22, 0x420a, 0x80,0x43, 0xae,0x1f,0x0a,0xc0,0x2c,0x7d);
   1548 #if defined(__cplusplus) && !defined(CINTERFACE)
   1549 MIDL_INTERFACE("45c15cab-6e22-420a-8043-ae1f0ac02c7d")
   1550 IVMRImagePresenterConfig9 : 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
   1563 typedef 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 
   1590 interface 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 ***/
   1605 static inline HRESULT IVMRImagePresenterConfig9_QueryInterface(IVMRImagePresenterConfig9* This,REFIID riid,void **ppvObject) {
   1606     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1607 }
   1608 static inline ULONG IVMRImagePresenterConfig9_AddRef(IVMRImagePresenterConfig9* This) {
   1609     return This->lpVtbl->AddRef(This);
   1610 }
   1611 static inline ULONG IVMRImagePresenterConfig9_Release(IVMRImagePresenterConfig9* This) {
   1612     return This->lpVtbl->Release(This);
   1613 }
   1614 /*** IVMRImagePresenterConfig9 methods ***/
   1615 static inline HRESULT IVMRImagePresenterConfig9_SetRenderingPrefs(IVMRImagePresenterConfig9* This,DWORD renderflags) {
   1616     return This->lpVtbl->SetRenderingPrefs(This,renderflags);
   1617 }
   1618 static 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 
   1635 DEFINE_GUID(IID_IVMRVideoStreamControl9, 0xd0cfe38b, 0x93e7, 0x4772, 0x89,0x57, 0x04,0x00,0xc4,0x9a,0x44,0x85);
   1636 #if defined(__cplusplus) && !defined(CINTERFACE)
   1637 MIDL_INTERFACE("d0cfe38b-93e7-4772-8957-0400c49a4485")
   1638 IVMRVideoStreamControl9 : 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
   1651 typedef 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 
   1678 interface 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 ***/
   1693 static inline HRESULT IVMRVideoStreamControl9_QueryInterface(IVMRVideoStreamControl9* This,REFIID riid,void **ppvObject) {
   1694     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1695 }
   1696 static inline ULONG IVMRVideoStreamControl9_AddRef(IVMRVideoStreamControl9* This) {
   1697     return This->lpVtbl->AddRef(This);
   1698 }
   1699 static inline ULONG IVMRVideoStreamControl9_Release(IVMRVideoStreamControl9* This) {
   1700     return This->lpVtbl->Release(This);
   1701 }
   1702 /*** IVMRVideoStreamControl9 methods ***/
   1703 static inline HRESULT IVMRVideoStreamControl9_SetStreamActiveState(IVMRVideoStreamControl9* This,WINBOOL active) {
   1704     return This->lpVtbl->SetStreamActiveState(This,active);
   1705 }
   1706 static 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 
   1717 typedef 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 
   1729 DEFINE_GUID(IID_IVMRFilterConfig9, 0x5a804648, 0x4f66, 0x4867, 0x9c,0x43, 0x4f,0x5c,0x82,0x2c,0xf1,0xb8);
   1730 #if defined(__cplusplus) && !defined(CINTERFACE)
   1731 MIDL_INTERFACE("5a804648-4f66-4867-9c43-4f5c822cf1b8")
   1732 IVMRFilterConfig9 : 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
   1760 typedef 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 
   1807 interface 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 ***/
   1827 static inline HRESULT IVMRFilterConfig9_QueryInterface(IVMRFilterConfig9* This,REFIID riid,void **ppvObject) {
   1828     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1829 }
   1830 static inline ULONG IVMRFilterConfig9_AddRef(IVMRFilterConfig9* This) {
   1831     return This->lpVtbl->AddRef(This);
   1832 }
   1833 static inline ULONG IVMRFilterConfig9_Release(IVMRFilterConfig9* This) {
   1834     return This->lpVtbl->Release(This);
   1835 }
   1836 /*** IVMRFilterConfig9 methods ***/
   1837 static inline HRESULT IVMRFilterConfig9_SetImageCompositor(IVMRFilterConfig9* This,IVMRImageCompositor9 *compositor) {
   1838     return This->lpVtbl->SetImageCompositor(This,compositor);
   1839 }
   1840 static inline HRESULT IVMRFilterConfig9_SetNumberOfStreams(IVMRFilterConfig9* This,DWORD max) {
   1841     return This->lpVtbl->SetNumberOfStreams(This,max);
   1842 }
   1843 static inline HRESULT IVMRFilterConfig9_GetNumberOfStreams(IVMRFilterConfig9* This,DWORD *max) {
   1844     return This->lpVtbl->GetNumberOfStreams(This,max);
   1845 }
   1846 static inline HRESULT IVMRFilterConfig9_SetRenderingPrefs(IVMRFilterConfig9* This,DWORD renderflags) {
   1847     return This->lpVtbl->SetRenderingPrefs(This,renderflags);
   1848 }
   1849 static inline HRESULT IVMRFilterConfig9_GetRenderingPrefs(IVMRFilterConfig9* This,DWORD *renderflags) {
   1850     return This->lpVtbl->GetRenderingPrefs(This,renderflags);
   1851 }
   1852 static inline HRESULT IVMRFilterConfig9_SetRenderingMode(IVMRFilterConfig9* This,DWORD mode) {
   1853     return This->lpVtbl->SetRenderingMode(This,mode);
   1854 }
   1855 static 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 
   1872 DEFINE_GUID(IID_IVMRAspectRatioControl9, 0x00d96c29, 0xbbde, 0x4efc, 0x99,0x01, 0xbb,0x50,0x36,0x39,0x21,0x46);
   1873 #if defined(__cplusplus) && !defined(CINTERFACE)
   1874 MIDL_INTERFACE("00d96c29-bbde-4efc-9901-bb5036392146")
   1875 IVMRAspectRatioControl9 : 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
   1888 typedef 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 
   1915 interface 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 ***/
   1930 static inline HRESULT IVMRAspectRatioControl9_QueryInterface(IVMRAspectRatioControl9* This,REFIID riid,void **ppvObject) {
   1931     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1932 }
   1933 static inline ULONG IVMRAspectRatioControl9_AddRef(IVMRAspectRatioControl9* This) {
   1934     return This->lpVtbl->AddRef(This);
   1935 }
   1936 static inline ULONG IVMRAspectRatioControl9_Release(IVMRAspectRatioControl9* This) {
   1937     return This->lpVtbl->Release(This);
   1938 }
   1939 /*** IVMRAspectRatioControl9 methods ***/
   1940 static inline HRESULT IVMRAspectRatioControl9_GetAspectRatioMode(IVMRAspectRatioControl9* This,DWORD *mode) {
   1941     return This->lpVtbl->GetAspectRatioMode(This,mode);
   1942 }
   1943 static 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 
   1954 typedef 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 
   1973 DEFINE_GUID(IID_IVMRMonitorConfig9, 0x46c2e457, 0x8ba0, 0x4eef, 0xb8,0x0b, 0x06,0x80,0xf0,0x97,0x87,0x49);
   1974 #if defined(__cplusplus) && !defined(CINTERFACE)
   1975 MIDL_INTERFACE("46c2e457-8ba0-4eef-b80b-0680f0978749")
   1976 IVMRMonitorConfig9 : 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
   2000 typedef 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 
   2041 interface 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 ***/
   2059 static inline HRESULT IVMRMonitorConfig9_QueryInterface(IVMRMonitorConfig9* This,REFIID riid,void **ppvObject) {
   2060     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2061 }
   2062 static inline ULONG IVMRMonitorConfig9_AddRef(IVMRMonitorConfig9* This) {
   2063     return This->lpVtbl->AddRef(This);
   2064 }
   2065 static inline ULONG IVMRMonitorConfig9_Release(IVMRMonitorConfig9* This) {
   2066     return This->lpVtbl->Release(This);
   2067 }
   2068 /*** IVMRMonitorConfig9 methods ***/
   2069 static inline HRESULT IVMRMonitorConfig9_SetMonitor(IVMRMonitorConfig9* This,UINT uDev) {
   2070     return This->lpVtbl->SetMonitor(This,uDev);
   2071 }
   2072 static inline HRESULT IVMRMonitorConfig9_GetMonitor(IVMRMonitorConfig9* This,UINT *uDev) {
   2073     return This->lpVtbl->GetMonitor(This,uDev);
   2074 }
   2075 static inline HRESULT IVMRMonitorConfig9_SetDefaultMonitor(IVMRMonitorConfig9* This,UINT uDev) {
   2076     return This->lpVtbl->SetDefaultMonitor(This,uDev);
   2077 }
   2078 static inline HRESULT IVMRMonitorConfig9_GetDefaultMonitor(IVMRMonitorConfig9* This,UINT *uDev) {
   2079     return This->lpVtbl->GetDefaultMonitor(This,uDev);
   2080 }
   2081 static 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 
   2092 typedef enum _VMR9DeinterlacePrefs {
   2093     DeinterlacePref9_NextBest = 0x1,
   2094     DeinterlacePref9_BOB = 0x2,
   2095     DeinterlacePref9_Weave = 0x4,
   2096     DeinterlacePref9_Mask = 0x7
   2097 } VMR9DeinterlacePrefs;
   2098 typedef 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;
   2108 typedef struct _VMR9Frequency {
   2109     DWORD dwNumerator;
   2110     DWORD dwDenominator;
   2111 } VMR9Frequency;
   2112 typedef 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;
   2120 typedef 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;
   2129 typedef 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 
   2142 DEFINE_GUID(IID_IVMRDeinterlaceControl9, 0xa215fb8d, 0x13c2, 0x4f7f, 0x99,0x3c, 0x00,0x3d,0x62,0x71,0xa4,0x59);
   2143 #if defined(__cplusplus) && !defined(CINTERFACE)
   2144 MIDL_INTERFACE("a215fb8d-13c2-4f7f-993c-003d6271a459")
   2145 IVMRDeinterlaceControl9 : 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
   2180 typedef 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 
   2234 interface 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 ***/
   2254 static inline HRESULT IVMRDeinterlaceControl9_QueryInterface(IVMRDeinterlaceControl9* This,REFIID riid,void **ppvObject) {
   2255     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2256 }
   2257 static inline ULONG IVMRDeinterlaceControl9_AddRef(IVMRDeinterlaceControl9* This) {
   2258     return This->lpVtbl->AddRef(This);
   2259 }
   2260 static inline ULONG IVMRDeinterlaceControl9_Release(IVMRDeinterlaceControl9* This) {
   2261     return This->lpVtbl->Release(This);
   2262 }
   2263 /*** IVMRDeinterlaceControl9 methods ***/
   2264 static inline HRESULT IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes(IVMRDeinterlaceControl9* This,VMR9VideoDesc *desc,DWORD *nummodes,GUID *modes) {
   2265     return This->lpVtbl->GetNumberOfDeinterlaceModes(This,desc,nummodes,modes);
   2266 }
   2267 static inline HRESULT IVMRDeinterlaceControl9_GetDeinterlaceModeCaps(IVMRDeinterlaceControl9* This,GUID *mode,VMR9VideoDesc *desc,VMR9DeinterlaceCaps *caps) {
   2268     return This->lpVtbl->GetDeinterlaceModeCaps(This,mode,desc,caps);
   2269 }
   2270 static inline HRESULT IVMRDeinterlaceControl9_GetDeinterlaceMode(IVMRDeinterlaceControl9* This,DWORD streamid,GUID *mode) {
   2271     return This->lpVtbl->GetDeinterlaceMode(This,streamid,mode);
   2272 }
   2273 static inline HRESULT IVMRDeinterlaceControl9_SetDeinterlaceMode(IVMRDeinterlaceControl9* This,DWORD streamid,GUID *mode) {
   2274     return This->lpVtbl->SetDeinterlaceMode(This,streamid,mode);
   2275 }
   2276 static inline HRESULT IVMRDeinterlaceControl9_GetDeinterlacePrefs(IVMRDeinterlaceControl9* This,DWORD *prefs) {
   2277     return This->lpVtbl->GetDeinterlacePrefs(This,prefs);
   2278 }
   2279 static inline HRESULT IVMRDeinterlaceControl9_SetDeinterlacePrefs(IVMRDeinterlaceControl9* This,DWORD prefs) {
   2280     return This->lpVtbl->SetDeinterlacePrefs(This,prefs);
   2281 }
   2282 static 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 
   2293 typedef 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 
   2310 DEFINE_GUID(IID_IVMRImageCompositor9, 0x4a5c89eb, 0xdf51, 0x4654, 0xac,0x2a, 0xe4,0x8e,0x02,0xbb,0xab,0xf6);
   2311 #if defined(__cplusplus) && !defined(CINTERFACE)
   2312 MIDL_INTERFACE("4a5c89eb-df51-4654-ac2a-e48e02bbabf6")
   2313 IVMRImageCompositor9 : 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
   2341 typedef 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 
   2385 interface 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 ***/
   2402 static inline HRESULT IVMRImageCompositor9_QueryInterface(IVMRImageCompositor9* This,REFIID riid,void **ppvObject) {
   2403     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2404 }
   2405 static inline ULONG IVMRImageCompositor9_AddRef(IVMRImageCompositor9* This) {
   2406     return This->lpVtbl->AddRef(This);
   2407 }
   2408 static inline ULONG IVMRImageCompositor9_Release(IVMRImageCompositor9* This) {
   2409     return This->lpVtbl->Release(This);
   2410 }
   2411 /*** IVMRImageCompositor9 methods ***/
   2412 static inline HRESULT IVMRImageCompositor9_InitCompositionDevice(IVMRImageCompositor9* This,IUnknown *d3ddev) {
   2413     return This->lpVtbl->InitCompositionDevice(This,d3ddev);
   2414 }
   2415 static inline HRESULT IVMRImageCompositor9_TermCompositionDevice(IVMRImageCompositor9* This,IUnknown *d3ddev) {
   2416     return This->lpVtbl->TermCompositionDevice(This,d3ddev);
   2417 }
   2418 static inline HRESULT IVMRImageCompositor9_SetStreamMediaType(IVMRImageCompositor9* This,DWORD stream,AM_MEDIA_TYPE *mt,WINBOOL texture) {
   2419     return This->lpVtbl->SetStreamMediaType(This,stream,mt,texture);
   2420 }
   2421 static 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__ */