1/*** Autogenerated by WIDL 1.5.25 from include/dxva2api.idl - Do not edit ***/
2
3#ifndef __REQUIRED_RPCNDR_H_VERSION__
4#define __REQUIRED_RPCNDR_H_VERSION__ 475
5#endif
6
7#include <rpc.h>
8#include <rpcndr.h>
9
10#ifndef COM_NO_WINDOWS_H
11#include <windows.h>
12#include <ole2.h>
13#endif
14
15#ifndef __dxva2api_h__
16#define __dxva2api_h__
17
18/* Forward declarations */
19
20#ifndef __IDirect3DDeviceManager9_FWD_DEFINED__
21#define __IDirect3DDeviceManager9_FWD_DEFINED__
22typedef interface IDirect3DDeviceManager9 IDirect3DDeviceManager9;
23#endif
24
25/* Headers for imported files */
26
27#include <unknwn.h>
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33#if 0
34typedef DWORD IDirect3DDevice9;
35typedef DWORD IDirect3DSurface9;
36typedef DWORD D3DFORMAT;
37typedef DWORD D3DPOOL;
38#endif
39#ifndef __REFERENCE_TIME_DEFINED
40#define __REFERENCE_TIME_DEFINED
41typedef LONGLONG REFERENCE_TIME;
42#endif /*__REFERENCE_TIME_DEFINED*/
43#define DXVA2_ProcAmp_None 0x0000
44#define DXVA2_ProcAmp_Brightness 0x0001
45#define DXVA2_ProcAmp_Contrast 0x0002
46#define DXVA2_ProcAmp_Hue 0x0004
47#define DXVA2_ProcAmp_Saturation 0x0008
48
49#define DXVA2_E_NOT_INITIALIZED     MAKE_HRESULT(1, 4, 4096)
50#define DXVA2_E_NEW_VIDEO_DEVICE    MAKE_HRESULT(1, 4, 4097)
51#define DXVA2_E_VIDEO_DEVICE_LOCKED MAKE_HRESULT(1, 4, 4098)
52#define DXVA2_E_NOT_AVAILABLE       MAKE_HRESULT(1, 4, 4099)
53
54DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02);
55DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02);
56
57DEFINE_GUID(DXVA2_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0,0x4563, 0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66);
58DEFINE_GUID(DXVA2_ModeMPEG2_IDCT, 0xbf22ad00, 0x03ea,0x4690, 0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e);
59DEFINE_GUID(DXVA2_ModeMPEG2_VLD, 0xee27417f, 0x5e28,0x4e65, 0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9);
60DEFINE_GUID(DXVA2_ModeH264_A, 0x1b81be64, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
61DEFINE_GUID(DXVA2_ModeH264_B, 0x1b81be65, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
62DEFINE_GUID(DXVA2_ModeH264_C, 0x1b81be66, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
63DEFINE_GUID(DXVA2_ModeH264_D, 0x1b81be67, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
64DEFINE_GUID(DXVA2_ModeH264_E, 0x1b81be68, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
65DEFINE_GUID(DXVA2_ModeH264_F, 0x1b81be69, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
66DEFINE_GUID(DXVA2_ModeWMV8_A, 0x1b81be80, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
67DEFINE_GUID(DXVA2_ModeWMV8_B, 0x1b81be81, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
68DEFINE_GUID(DXVA2_ModeWMV9_A, 0x1b81be90, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
69DEFINE_GUID(DXVA2_ModeWMV9_B, 0x1b81be91, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
70DEFINE_GUID(DXVA2_ModeWMV9_C, 0x1b81be94, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
71DEFINE_GUID(DXVA2_ModeVC1_A, 0x1b81beA0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
72DEFINE_GUID(DXVA2_ModeVC1_B, 0x1b81beA1, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
73DEFINE_GUID(DXVA2_ModeVC1_C, 0x1b81beA2, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
74DEFINE_GUID(DXVA2_ModeVC1_D, 0x1b81beA3, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
75
76typedef struct IDirectXVideoDecoderService IDirectXVideoDecoderService;
77
78typedef enum _DXVA2_SampleFormat {
79  DXVA2_SampleFormatMask                  = 0x00FF,
80  DXVA2_SampleUnknown                     = 0,
81  DXVA2_SampleProgressiveFrame            = 2,
82  DXVA2_SampleFieldInterleavedEvenFirst   = 3,
83  DXVA2_SampleFieldInterleavedOddFirst    = 4,
84  DXVA2_SampleFieldSingleEven             = 5,
85  DXVA2_SampleFieldSingleOdd              = 6,
86  DXVA2_SampleSubStream                   = 7
87} DXVA2_SampleFormat;
88
89typedef enum _DXVA2_VideoChromaSubSampling {
90  DXVA2_VideoChromaSubsamplingMask                              = 0x0F,
91  DXVA2_VideoChromaSubsampling_Unknown                          = 0,
92  DXVA2_VideoChromaSubsampling_ProgressiveChroma                = 0x8,
93  DXVA2_VideoChromaSubsampling_Horizontally_Cosited             = 0x4,
94  DXVA2_VideoChromaSubsampling_Vertically_Cosited               = 0x2,
95  DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes   = 0x1,
96  DXVA2_VideoChromaSubsampling_MPEG2                            =
97              DXVA2_VideoChromaSubsampling_Horizontally_Cosited |
98              DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,
99  DXVA2_VideoChromaSubsampling_MPEG1                            =
100              DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,
101  DXVA2_VideoChromaSubsampling_DV_PAL                           =
102              DXVA2_VideoChromaSubsampling_Horizontally_Cosited |
103              DXVA2_VideoChromaSubsampling_Vertically_Cosited,
104  DXVA2_VideoChromaSubsampling_Cosited                          =
105              DXVA2_VideoChromaSubsampling_Horizontally_Cosited |
106              DXVA2_VideoChromaSubsampling_Vertically_Cosited |
107              DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes
108} DXVA2_VideoChromaSubSampling;
109
110typedef enum _DXVA2_NominalRange {
111  DXVA2_NominalRangeMask       = 0x07,
112  DXVA2_NominalRange_Unknown   = 0,
113  DXVA2_NominalRange_Normal    = 1,
114  DXVA2_NominalRange_Wide      = 2,
115  DXVA2_NominalRange_0_255     = 1,
116  DXVA2_NominalRange_16_235    = 2,
117  DXVA2_NominalRange_48_208    = 3
118} DXVA2_NominalRange;
119
120typedef enum _DXVA2_VideoLighting {
121  DXVA2_VideoLightingMask       = 0x0F,
122  DXVA2_VideoLighting_Unknown   = 0,
123  DXVA2_VideoLighting_bright    = 1,
124  DXVA2_VideoLighting_office    = 2,
125  DXVA2_VideoLighting_dim       = 3,
126  DXVA2_VideoLighting_dark      = 4
127} DXVA2_VideoLighting;
128
129typedef enum _DXVA2_VideoPrimaries {
130  DXVA2_VideoPrimariesMask             = 0x001f,
131  DXVA2_VideoPrimaries_Unknown         = 0,
132  DXVA2_VideoPrimaries_reserved        = 1,
133  DXVA2_VideoPrimaries_BT709           = 2,
134  DXVA2_VideoPrimaries_BT470_2_SysM    = 3,
135  DXVA2_VideoPrimaries_BT470_2_SysBG   = 4,
136  DXVA2_VideoPrimaries_SMPTE170M       = 5,
137  DXVA2_VideoPrimaries_SMPTE240M       = 6,
138  DXVA2_VideoPrimaries_EBU3213         = 7,
139  DXVA2_VideoPrimaries_SMPTE_C         = 8
140} DXVA2_VideoPrimaries;
141
142typedef enum _DXVA2_VideoTransferFunction {
143  DXVA2_VideoTransFuncMask       = 0x001f,
144  DXVA2_VideoTransFunc_Unknown   = 0,
145  DXVA2_VideoTransFunc_10        = 1,
146  DXVA2_VideoTransFunc_18        = 2,
147  DXVA2_VideoTransFunc_20        = 3,
148  DXVA2_VideoTransFunc_22        = 4,
149  DXVA2_VideoTransFunc_709       = 5,
150  DXVA2_VideoTransFunc_240M      = 6,
151  DXVA2_VideoTransFunc_sRGB      = 7,
152  DXVA2_VideoTransFunc_28        = 8
153} DXVA2_VideoTransferFunction;
154
155typedef enum  {
156  DXVA2_SurfaceType_DecoderRenderTarget      = 0,
157  DXVA2_SurfaceType_ProcessorRenderTarget    = 1,
158  DXVA2_SurfaceType_D3DRenderTargetTexture   = 2
159} DXVA2_SurfaceType;
160
161typedef enum _DXVA2_VideoTransferMatrix {
162  DXVA2_VideoTransferMatrixMask         = 0x07,
163  DXVA2_VideoTransferMatrix_Unknown     = 0,
164  DXVA2_VideoTransferMatrix_BT709       = 1,
165  DXVA2_VideoTransferMatrix_BT601       = 2,
166  DXVA2_VideoTransferMatrix_SMPTE240M   = 3
167} DXVA2_VideoTransferMatrix;
168
169typedef struct _DXVA2_AYUVSample16 {
170  USHORT Cr;
171  USHORT Cb;
172  USHORT Y;
173  USHORT Alpha;
174} DXVA2_AYUVSample16;
175
176typedef struct _DXVA2_AYUVSample8 {
177  UCHAR Cr;
178  UCHAR Cb;
179  UCHAR Y;
180  UCHAR Alpha;
181} DXVA2_AYUVSample8;
182
183typedef struct _DXVA2_ConfigPictureDecode {
184  GUID   guidConfigBitstreamEncryption;
185  GUID   guidConfigMBcontrolEncryption;
186  GUID   guidConfigResidDiffEncryption;
187  UINT   ConfigBitstreamRaw;
188  UINT   ConfigMBcontrolRasterOrder;
189  UINT   ConfigResidDiffHost;
190  UINT   ConfigSpatialResid8;
191  UINT   ConfigResid8Subtraction;
192  UINT   ConfigSpatialHost8or9Clipping;
193  UINT   ConfigSpatialResidInterleaved;
194  UINT   ConfigIntraResidUnsigned;
195  UINT   ConfigResidDiffAccelerator;
196  UINT   ConfigHostInverseScan;
197  UINT   ConfigSpecificIDCT;
198  UINT   Config4GroupedCoefs;
199  USHORT ConfigMinRenderTargetBuffCount;
200  USHORT ConfigDecoderSpecific;
201} DXVA2_ConfigPictureDecode;
202
203typedef struct _DXVA2_DecodeBufferDesc {
204  DWORD CompressedBufferType;
205  UINT  BufferIndex;
206  UINT  DataOffset;
207  UINT  DataSize;
208  UINT  FirstMBaddress;
209  UINT  NumMBsInBuffer;
210  UINT  Width;
211  UINT  Height;
212  UINT  Stride;
213  UINT  ReservedBits;
214  PVOID pvPVPState;
215} DXVA2_DecodeBufferDesc;
216
217typedef struct _DXVA2_DecodeExtensionData {
218  UINT  Function;
219  PVOID pPrivateInputData;
220  UINT  PrivateInputDataSize;
221  PVOID pPrivateOutputData;
222  UINT  PrivateOutputDataSize;
223} DXVA2_DecodeExtensionData;
224
225typedef struct _DXVA2_DecodeExecuteParams {
226  UINT                      NumCompBuffers;
227  DXVA2_DecodeBufferDesc    *pCompressedBuffers;
228  DXVA2_DecodeExtensionData *pExtensionData;
229} DXVA2_DecodeExecuteParams;
230
231typedef struct {
232  __C89_NAMELESS union {
233    __C89_NAMELESS struct {
234      UINT SampleFormat            :8;
235      UINT VideoChromaSubsampling  :4;
236      UINT NominalRange            :3;
237      UINT VideoTransferMatrix     :3;
238      UINT VideoLighting           :4;
239      UINT VideoPrimaries          :5;
240      UINT VideoTransferFunction   :5;
241    } DUMMYSTRUCTNAME;
242    UINT   value;
243  } DUMMYUNIONNAME;
244} DXVA2_ExtendedFormat;
245
246typedef struct _DXVA2_Fixed32 {
247  __C89_NAMELESS union {
248    __C89_NAMELESS struct {
249      USHORT Fraction;
250      SHORT  Value;
251    } DUMMYSTRUCTNAME;
252    LONG   ll;
253  } DUMMYUNIONNAME;
254} DXVA2_Fixed32;
255
256typedef struct _DXVA2_FilterValues {
257  DXVA2_Fixed32 Level;
258  DXVA2_Fixed32 Threshold;
259  DXVA2_Fixed32 Radius;
260} DXVA2_FilterValues;
261
262typedef struct _DXVA2_Frequency {
263  UINT Numerator;
264  UINT Denominator;
265} DXVA2_Frequency;
266
267typedef struct _DXVA2_ProcAmpValues {
268  DXVA2_Fixed32 Brightness;
269  DXVA2_Fixed32 Contrast;
270  DXVA2_Fixed32 Hue;
271  DXVA2_Fixed32 Saturation;
272} DXVA2_ProcAmpValues;
273
274typedef struct _DXVA2_ValueRange {
275  DXVA2_Fixed32 MinValue;
276  DXVA2_Fixed32 MaxValue;
277  DXVA2_Fixed32 DefaultValue;
278  DXVA2_Fixed32 StepSize;
279} DXVA2_ValueRange;
280
281typedef struct _DXVA2_VideoDesc {
282  UINT                 SampleWidth;
283  UINT                 SampleHeight;
284  DXVA2_ExtendedFormat SampleFormat;
285  D3DFORMAT            Format;
286  DXVA2_Frequency      InputSampleFreq;
287  DXVA2_Frequency      OutputFrameFreq;
288  UINT                 UABProtectionLevel;
289  UINT                 Reserved;
290} DXVA2_VideoDesc;
291
292/* DeviceCaps
293DXVA2_VPDev_EmulatedDXVA1
294DXVA2_VPDev_HardwareDevice
295DXVA2_VPDev_SoftwareDevice
296*/
297/* DeinterlaceTechnology
298DXVA2_DeinterlaceTech_Unknown
299DXVA2_DeinterlaceTech_BOBLineReplicate
300DXVA2_DeinterlaceTech_BOBVerticalStretch
301DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap
302DXVA2_DeinterlaceTech_MedianFiltering
303DXVA2_DeinterlaceTech_EdgeFiltering
304DXVA2_DeinterlaceTech_FieldAdaptive
305DXVA2_DeinterlaceTech_PixelAdaptive
306DXVA2_DeinterlaceTech_MotionVectorSteered
307DXVA2_DeinterlaceTech_InverseTelecine
308*/
309
310/* VideoProcessorOperations
311DXVA2_VideoProcess_YUV2RGB
312DXVA2_VideoProcess_StretchX
313DXVA2_VideoProcess_StretchY
314DXVA2_VideoProcess_AlphaBlend
315DXVA2_VideoProcess_SubRects
316DXVA2_VideoProcess_SubStreams
317DXVA2_VideoProcess_SubStreamsExtended
318DXVA2_VideoProcess_YUV2RGBExtended
319DXVA2_VideoProcess_AlphaBlendExtended
320DXVA2_VideoProcess_Constriction
321DXVA2_VideoProcess_NoiseFilter
322DXVA2_VideoProcess_DetailFilter
323DXVA2_VideoProcess_PlanarAlpha
324DXVA2_VideoProcess_LinearScaling
325DXVA2_VideoProcess_GammaCompensated
326DXVA2_VideoProcess_MaintainsOriginalFieldData
327*/
328
329/*NoiseFilterTechnology
330DXVA2_NoiseFilterTech_Unsupported
331DXVA2_NoiseFilterTech_Unknown
332DXVA2_NoiseFilterTech_Median
333DXVA2_NoiseFilterTech_Temporal
334DXVA2_NoiseFilterTech_BlockNoise
335DXVA2_NoiseFilterTech_MosquitoNoise
336*/
337
338/* DetailFilterTechnology
339DXVA2_DetailFilterTech_Unsupported
340DXVA2_DetailFilterTech_Unknown
341DXVA2_DetailFilterTech_Edge
342DXVA2_DetailFilterTech_Sharpening
343*/
344typedef struct _DXVA2_VideoProcessBltParams {
345  REFERENCE_TIME       TargetFrame;
346  RECT                 TargetRect;
347  SIZE                 ConstrictionSize;
348  UINT                 StreamingFlags;
349  DXVA2_AYUVSample16   BackgroundColor;
350  DXVA2_ExtendedFormat DestFormat;
351  DXVA2_ProcAmpValues  ProcAmpValues;
352  DXVA2_Fixed32        Alpha;
353  DXVA2_FilterValues   NoiseFilterLuma;
354  DXVA2_FilterValues   NoiseFilterChroma;
355  DXVA2_FilterValues   DetailFilterLuma;
356  DXVA2_FilterValues   DetailFilterChroma;
357  DWORD                DestData;
358} DXVA2_VideoProcessBltParams;
359
360typedef struct _DXVA2_VideoProcessorCaps {
361  UINT    DeviceCaps;
362  D3DPOOL InputPool;
363  UINT    NumForwardRefSamples;
364  UINT    NumBackwardRefSamples;
365  UINT    Reserved;
366  UINT    DeinterlaceTechnology;
367  UINT    ProcAmpControlCaps;
368  UINT    VideoProcessorOperations;
369  UINT    NoiseFilterTechnology;
370  UINT    DetailFilterTechnology;
371} DXVA2_VideoProcessorCaps;
372
373/* SampleData
374DXVA2_SampleData_RFF
375DXVA2_SampleData_TFF
376DXVA2_SampleData_RFF_TFF_Present
377*/
378
379typedef struct _DXVA2_VideoSample {
380  REFERENCE_TIME       Start;
381  REFERENCE_TIME       End;
382  DXVA2_ExtendedFormat SampleFormat;
383  IDirect3DSurface9*   SrcSurface;
384  RECT                 SrcRect;
385  RECT                 DstRect;
386  DXVA2_AYUVSample8    Pal[16];
387  DXVA2_Fixed32        PlanarAlpha;
388  DWORD                SampleData;
389} DXVA2_VideoSample;
390
391/* Constants */
392
393#define DXVA2_VideoDecoderRenderTarget 0
394#define DXVA2_VideoProcessorRenderTarget 1
395#define DXVA2_VideoSoftwareRenderTarget 2
396
397/* CompressedBufferType */
398#define DXVA2_PictureParametersBufferType 0
399#define DXVA2_MacroBlockControlBufferType 1
400#define DXVA2_ResidualDifferenceBufferType 2
401#define DXVA2_DeblockingControlBufferType 3
402#define DXVA2_InverseQuantizationMatrixBufferType 4
403#define DXVA2_SliceControlBufferType 5
404#define DXVA2_BitStreamDateBufferType 6
405#define DXVA2_MotionVectorBuffer 7
406#define DXVA2_FilmGrainBuffer 8
407
408__forceinline const DXVA2_Fixed32 DXVA2_Fixed32OpaqueAlpha (void) {
409  DXVA2_Fixed32 f32;
410  f32.ll = 0 + (1 << 16);
411  return f32;
412}
413
414__forceinline const DXVA2_Fixed32 DXVA2_Fixed32TransparentAlpha (void) {
415  DXVA2_Fixed32 f32;
416  f32.ll = 0;
417  return f32;
418}
419
420__forceinline float DXVA2FixedToFloat (const DXVA2_Fixed32 f32) {
421  return (float)f32.Value + (float)f32.Fraction / (1 << 16);
422}
423
424__forceinline DXVA2_Fixed32 DXVA2FloatToFixed (const float f) {
425  DXVA2_Fixed32 f32;
426  f32.Value    = ((ULONG) (f * (1 << 16))) >> 16;
427  f32.Fraction = ((ULONG) (f * (1 << 16))) & 0xFFFF;
428  return f32;
429}
430
431HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9(UINT *pResetToken,IDirect3DDeviceManager9 **ppDXVAManager);
432HRESULT WINAPI DXVA2CreateVideoService(IDirect3DDevice9 *pDD,REFIID riid,void **ppService);
433/*****************************************************************************
434 * IDirect3DDeviceManager9 interface
435 */
436#ifndef __IDirect3DDeviceManager9_INTERFACE_DEFINED__
437#define __IDirect3DDeviceManager9_INTERFACE_DEFINED__
438
439DEFINE_GUID(IID_IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75);
440#if defined(__cplusplus) && !defined(CINTERFACE)
441MIDL_INTERFACE("a0cade0f-06d5-4cf4-a1c7-f3cdd725aa75")
442IDirect3DDeviceManager9 : public IUnknown
443{
444    virtual HRESULT STDMETHODCALLTYPE ResetDevice(
445        IDirect3DDevice9 *pDevice,
446        UINT resetToken) = 0;
447
448    virtual HRESULT STDMETHODCALLTYPE OpenDeviceHandle(
449        HANDLE *phDevice) = 0;
450
451    virtual HRESULT STDMETHODCALLTYPE CloseDeviceHandle(
452        HANDLE hDevice) = 0;
453
454    virtual HRESULT STDMETHODCALLTYPE TestDevice(
455        HANDLE hDevice) = 0;
456
457    virtual HRESULT STDMETHODCALLTYPE LockDevice(
458        HANDLE hDevice,
459        IDirect3DDevice9 **ppDevice,
460        WINBOOL fBlock) = 0;
461
462    virtual HRESULT STDMETHODCALLTYPE UnlockDevice(
463        HANDLE hDevice,
464        WINBOOL fSaveState) = 0;
465
466    virtual HRESULT STDMETHODCALLTYPE GetVideoService(
467        HANDLE hDevice,
468        REFIID riid,
469        void **ppService) = 0;
470
471};
472#ifdef __CRT_UUID_DECL
473__CRT_UUID_DECL(IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75)
474#endif
475#else
476typedef struct IDirect3DDeviceManager9Vtbl {
477    BEGIN_INTERFACE
478
479    /*** IUnknown methods ***/
480    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
481        IDirect3DDeviceManager9* This,
482        REFIID riid,
483        void **ppvObject);
484
485    ULONG (STDMETHODCALLTYPE *AddRef)(
486        IDirect3DDeviceManager9* This);
487
488    ULONG (STDMETHODCALLTYPE *Release)(
489        IDirect3DDeviceManager9* This);
490
491    /*** IDirect3DDeviceManager9 methods ***/
492    HRESULT (STDMETHODCALLTYPE *ResetDevice)(
493        IDirect3DDeviceManager9* This,
494        IDirect3DDevice9 *pDevice,
495        UINT resetToken);
496
497    HRESULT (STDMETHODCALLTYPE *OpenDeviceHandle)(
498        IDirect3DDeviceManager9* This,
499        HANDLE *phDevice);
500
501    HRESULT (STDMETHODCALLTYPE *CloseDeviceHandle)(
502        IDirect3DDeviceManager9* This,
503        HANDLE hDevice);
504
505    HRESULT (STDMETHODCALLTYPE *TestDevice)(
506        IDirect3DDeviceManager9* This,
507        HANDLE hDevice);
508
509    HRESULT (STDMETHODCALLTYPE *LockDevice)(
510        IDirect3DDeviceManager9* This,
511        HANDLE hDevice,
512        IDirect3DDevice9 **ppDevice,
513        WINBOOL fBlock);
514
515    HRESULT (STDMETHODCALLTYPE *UnlockDevice)(
516        IDirect3DDeviceManager9* This,
517        HANDLE hDevice,
518        WINBOOL fSaveState);
519
520    HRESULT (STDMETHODCALLTYPE *GetVideoService)(
521        IDirect3DDeviceManager9* This,
522        HANDLE hDevice,
523        REFIID riid,
524        void **ppService);
525
526    END_INTERFACE
527} IDirect3DDeviceManager9Vtbl;
528interface IDirect3DDeviceManager9 {
529    CONST_VTBL IDirect3DDeviceManager9Vtbl* lpVtbl;
530};
531
532#ifdef COBJMACROS
533#ifndef WIDL_C_INLINE_WRAPPERS
534/*** IUnknown methods ***/
535#define IDirect3DDeviceManager9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
536#define IDirect3DDeviceManager9_AddRef(This) (This)->lpVtbl->AddRef(This)
537#define IDirect3DDeviceManager9_Release(This) (This)->lpVtbl->Release(This)
538/*** IDirect3DDeviceManager9 methods ***/
539#define IDirect3DDeviceManager9_ResetDevice(This,pDevice,resetToken) (This)->lpVtbl->ResetDevice(This,pDevice,resetToken)
540#define IDirect3DDeviceManager9_OpenDeviceHandle(This,phDevice) (This)->lpVtbl->OpenDeviceHandle(This,phDevice)
541#define IDirect3DDeviceManager9_CloseDeviceHandle(This,hDevice) (This)->lpVtbl->CloseDeviceHandle(This,hDevice)
542#define IDirect3DDeviceManager9_TestDevice(This,hDevice) (This)->lpVtbl->TestDevice(This,hDevice)
543#define IDirect3DDeviceManager9_LockDevice(This,hDevice,ppDevice,fBlock) (This)->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock)
544#define IDirect3DDeviceManager9_UnlockDevice(This,hDevice,fSaveState) (This)->lpVtbl->UnlockDevice(This,hDevice,fSaveState)
545#define IDirect3DDeviceManager9_GetVideoService(This,hDevice,riid,ppService) (This)->lpVtbl->GetVideoService(This,hDevice,riid,ppService)
546#else
547/*** IUnknown methods ***/
548static FORCEINLINE HRESULT IDirect3DDeviceManager9_QueryInterface(IDirect3DDeviceManager9* This,REFIID riid,void **ppvObject) {
549    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
550}
551static FORCEINLINE ULONG IDirect3DDeviceManager9_AddRef(IDirect3DDeviceManager9* This) {
552    return This->lpVtbl->AddRef(This);
553}
554static FORCEINLINE ULONG IDirect3DDeviceManager9_Release(IDirect3DDeviceManager9* This) {
555    return This->lpVtbl->Release(This);
556}
557/*** IDirect3DDeviceManager9 methods ***/
558static FORCEINLINE HRESULT IDirect3DDeviceManager9_ResetDevice(IDirect3DDeviceManager9* This,IDirect3DDevice9 *pDevice,UINT resetToken) {
559    return This->lpVtbl->ResetDevice(This,pDevice,resetToken);
560}
561static FORCEINLINE HRESULT IDirect3DDeviceManager9_OpenDeviceHandle(IDirect3DDeviceManager9* This,HANDLE *phDevice) {
562    return This->lpVtbl->OpenDeviceHandle(This,phDevice);
563}
564static FORCEINLINE HRESULT IDirect3DDeviceManager9_CloseDeviceHandle(IDirect3DDeviceManager9* This,HANDLE hDevice) {
565    return This->lpVtbl->CloseDeviceHandle(This,hDevice);
566}
567static FORCEINLINE HRESULT IDirect3DDeviceManager9_TestDevice(IDirect3DDeviceManager9* This,HANDLE hDevice) {
568    return This->lpVtbl->TestDevice(This,hDevice);
569}
570static FORCEINLINE HRESULT IDirect3DDeviceManager9_LockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,IDirect3DDevice9 **ppDevice,WINBOOL fBlock) {
571    return This->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock);
572}
573static FORCEINLINE HRESULT IDirect3DDeviceManager9_UnlockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,WINBOOL fSaveState) {
574    return This->lpVtbl->UnlockDevice(This,hDevice,fSaveState);
575}
576static FORCEINLINE HRESULT IDirect3DDeviceManager9_GetVideoService(IDirect3DDeviceManager9* This,HANDLE hDevice,REFIID riid,void **ppService) {
577    return This->lpVtbl->GetVideoService(This,hDevice,riid,ppService);
578}
579#endif
580#endif
581
582#endif
583
584HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_ResetDevice_Proxy(
585    IDirect3DDeviceManager9* This,
586    IDirect3DDevice9 *pDevice,
587    UINT resetToken);
588void __RPC_STUB IDirect3DDeviceManager9_ResetDevice_Stub(
589    IRpcStubBuffer* This,
590    IRpcChannelBuffer* pRpcChannelBuffer,
591    PRPC_MESSAGE pRpcMessage,
592    DWORD* pdwStubPhase);
593HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_OpenDeviceHandle_Proxy(
594    IDirect3DDeviceManager9* This,
595    HANDLE *phDevice);
596void __RPC_STUB IDirect3DDeviceManager9_OpenDeviceHandle_Stub(
597    IRpcStubBuffer* This,
598    IRpcChannelBuffer* pRpcChannelBuffer,
599    PRPC_MESSAGE pRpcMessage,
600    DWORD* pdwStubPhase);
601HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_CloseDeviceHandle_Proxy(
602    IDirect3DDeviceManager9* This,
603    HANDLE hDevice);
604void __RPC_STUB IDirect3DDeviceManager9_CloseDeviceHandle_Stub(
605    IRpcStubBuffer* This,
606    IRpcChannelBuffer* pRpcChannelBuffer,
607    PRPC_MESSAGE pRpcMessage,
608    DWORD* pdwStubPhase);
609HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_TestDevice_Proxy(
610    IDirect3DDeviceManager9* This,
611    HANDLE hDevice);
612void __RPC_STUB IDirect3DDeviceManager9_TestDevice_Stub(
613    IRpcStubBuffer* This,
614    IRpcChannelBuffer* pRpcChannelBuffer,
615    PRPC_MESSAGE pRpcMessage,
616    DWORD* pdwStubPhase);
617HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_LockDevice_Proxy(
618    IDirect3DDeviceManager9* This,
619    HANDLE hDevice,
620    IDirect3DDevice9 **ppDevice,
621    WINBOOL fBlock);
622void __RPC_STUB IDirect3DDeviceManager9_LockDevice_Stub(
623    IRpcStubBuffer* This,
624    IRpcChannelBuffer* pRpcChannelBuffer,
625    PRPC_MESSAGE pRpcMessage,
626    DWORD* pdwStubPhase);
627HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_UnlockDevice_Proxy(
628    IDirect3DDeviceManager9* This,
629    HANDLE hDevice,
630    WINBOOL fSaveState);
631void __RPC_STUB IDirect3DDeviceManager9_UnlockDevice_Stub(
632    IRpcStubBuffer* This,
633    IRpcChannelBuffer* pRpcChannelBuffer,
634    PRPC_MESSAGE pRpcMessage,
635    DWORD* pdwStubPhase);
636HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_GetVideoService_Proxy(
637    IDirect3DDeviceManager9* This,
638    HANDLE hDevice,
639    REFIID riid,
640    void **ppService);
641void __RPC_STUB IDirect3DDeviceManager9_GetVideoService_Stub(
642    IRpcStubBuffer* This,
643    IRpcChannelBuffer* pRpcChannelBuffer,
644    PRPC_MESSAGE pRpcMessage,
645    DWORD* pdwStubPhase);
646
647#endif  /* __IDirect3DDeviceManager9_INTERFACE_DEFINED__ */
648
649#undef  INTERFACE
650#define INTERFACE IDirectXVideoDecoder
651DECLARE_INTERFACE_(IDirectXVideoDecoder,IUnknown)
652{
653    BEGIN_INTERFACE
654
655    /* IUnknown methods */
656    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
657    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
658    STDMETHOD_(ULONG, Release)(THIS) PURE;
659
660    /* IDirectXVideoDecoder methods */
661    STDMETHOD_(HRESULT,GetVideoDecoderService)(THIS_ IDirectXVideoDecoderService **ppAccelServices) PURE;
662    STDMETHOD_(HRESULT,GetCreationParameters)(THIS_ GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 ***pppDecoderRenderTargets,UINT *pNumSurfaces) PURE;
663    STDMETHOD_(HRESULT,GetBuffer)(THIS_ UINT BufferType,void **ppBuffer,UINT *pBufferSize) PURE;
664    STDMETHOD_(HRESULT,ReleaseBuffer)(THIS_ UINT BufferType) PURE;
665    STDMETHOD_(HRESULT,BeginFrame)(THIS_ IDirect3DSurface9 *pRenderTarget,void *pvPVPData) PURE;
666    STDMETHOD_(HRESULT,EndFrame)(THIS_ HANDLE *pHandleComplete) PURE;
667    STDMETHOD_(HRESULT,Execute)(THIS_ const DXVA2_DecodeExecuteParams *pExecuteParams) PURE;
668
669    END_INTERFACE
670};
671#ifdef COBJMACROS
672#define IDirectXVideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
673#define IDirectXVideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
674#define IDirectXVideoDecoder_Release(This) (This)->lpVtbl->Release(This)
675#define IDirectXVideoDecoder_GetVideoDecoderService(This,ppAccelServices) (This)->lpVtbl->GetVideoDecoderService(This,ppAccelServices)
676#define IDirectXVideoDecoder_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pppDecoderRenderTargets,pNumSurfaces) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pppDecoderRenderTargets,pNumSurfaces)
677#define IDirectXVideoDecoder_GetBuffer(This,BufferType,ppBuffer,pBufferSize) (This)->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize)
678#define IDirectXVideoDecoder_ReleaseBuffer(This,BufferType) (This)->lpVtbl->ReleaseBuffer(This,BufferType)
679#define IDirectXVideoDecoder_BeginFrame(This,pRenderTarget,pvPVPData) (This)->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData)
680#define IDirectXVideoDecoder_EndFrame(This,pHandleComplete) (This)->lpVtbl->EndFrame(This,pHandleComplete)
681#define IDirectXVideoDecoder_Execute(This,pExecuteParams) (This)->lpVtbl->Execute(This,pExecuteParams)
682#endif /*COBJMACROS*/
683
684#undef  INTERFACE
685#define INTERFACE IDirectXVideoAccelerationService
686DECLARE_INTERFACE_(IDirectXVideoAccelerationService,IUnknown)
687{
688    BEGIN_INTERFACE
689
690    /* IUnknown methods */
691    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
692    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
693    STDMETHOD_(ULONG, Release)(THIS) PURE;
694
695    /* IDirectXVideoAccelerationService methods */
696    STDMETHOD_(HRESULT,CreateSurface)(THIS_ UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) PURE;
697
698    END_INTERFACE
699};
700#ifdef COBJMACROS
701#define IDirectXVideoAccelerationService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
702#define IDirectXVideoAccelerationService_AddRef(This) (This)->lpVtbl->AddRef(This)
703#define IDirectXVideoAccelerationService_Release(This) (This)->lpVtbl->Release(This)
704#define IDirectXVideoAccelerationService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle)
705#endif /*COBJMACROS*/
706
707#undef  INTERFACE
708#define INTERFACE IDirectXVideoDecoderService
709DECLARE_INTERFACE_(IDirectXVideoDecoderService,IDirectXVideoAccelerationService)
710{
711    BEGIN_INTERFACE
712
713    /* IUnknown methods */
714    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
715    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
716    STDMETHOD_(ULONG, Release)(THIS) PURE;
717
718    /* IDirectXVideoAccelerationService methods */
719    STDMETHOD_(HRESULT,CreateSurface)(THIS_ UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) PURE;
720
721    /* IDirectXVideoDecoderService methods */
722    STDMETHOD_(HRESULT,GetDecoderDeviceGuids)(THIS_ UINT *Count,GUID **pGuids) PURE;
723    STDMETHOD_(HRESULT,GetDecoderRenderTargets)(THIS_ REFGUID Guid,UINT *pCount,D3DFORMAT **pFormats) PURE;
724    STDMETHOD_(HRESULT,GetDecoderConfigurations)(THIS_ REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,IUnknown *pReserved,UINT *pCount,DXVA2_ConfigPictureDecode **ppConfigs) PURE;
725    STDMETHOD_(HRESULT,CreateVideoDecoder)(THIS_ REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 **ppDecoderRenderTargets,UINT NumSurfaces,IDirectXVideoDecoder **ppDecode) PURE;
726
727    END_INTERFACE
728};
729#ifdef COBJMACROS
730#define IDirectXVideoDecoderService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
731#define IDirectXVideoDecoderService_AddRef(This) (This)->lpVtbl->AddRef(This)
732#define IDirectXVideoDecoderService_Release(This) (This)->lpVtbl->Release(This)
733#define IDirectXVideoDecoderService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle)
734#define IDirectXVideoDecoderService_GetDecoderDeviceGuids(This,Count,pGuids) (This)->lpVtbl->GetDecoderDeviceGuids(This,Count,pGuids)
735#define IDirectXVideoDecoderService_GetDecoderRenderTargets(This,Guid,pCount,pFormats) (This)->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats)
736#define IDirectXVideoDecoderService_GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs) (This)->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs)
737#define IDirectXVideoDecoderService_CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode) (This)->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode)
738#endif /*COBJMACROS*/
739/* Begin additional prototypes for all interfaces */
740
741
742/* End additional prototypes */
743
744#ifdef __cplusplus
745}
746#endif
747
748#endif /* __dxva2api_h__ */
749