• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*** Autogenerated by WIDL 4.12.1 from include/dxva2api.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 __dxva2api_h__
17 #define __dxva2api_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IDirect3DDeviceManager9_FWD_DEFINED__
22 #define __IDirect3DDeviceManager9_FWD_DEFINED__
23 typedef interface IDirect3DDeviceManager9 IDirect3DDeviceManager9;
24 #ifdef __cplusplus
25 interface IDirect3DDeviceManager9;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IDirectXVideoDecoder_FWD_DEFINED__
30 #define __IDirectXVideoDecoder_FWD_DEFINED__
31 typedef interface IDirectXVideoDecoder IDirectXVideoDecoder;
32 #ifdef __cplusplus
33 interface IDirectXVideoDecoder;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IDirectXVideoAccelerationService_FWD_DEFINED__
38 #define __IDirectXVideoAccelerationService_FWD_DEFINED__
39 typedef interface IDirectXVideoAccelerationService IDirectXVideoAccelerationService;
40 #ifdef __cplusplus
41 interface IDirectXVideoAccelerationService;
42 #endif /* __cplusplus */
43 #endif
44 
45 #ifndef __IDirectXVideoDecoderService_FWD_DEFINED__
46 #define __IDirectXVideoDecoderService_FWD_DEFINED__
47 typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService;
48 #ifdef __cplusplus
49 interface IDirectXVideoDecoderService;
50 #endif /* __cplusplus */
51 #endif
52 
53 /* Headers for imported files */
54 
55 #include <unknwn.h>
56 
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60 
61 #if 0
62 typedef DWORD IDirect3DDevice9;
63 typedef DWORD IDirect3DSurface9;
64 typedef DWORD D3DFORMAT;
65 typedef DWORD D3DPOOL;
66 #endif
67 #ifndef __IDirectXVideoDecoderService_FWD_DEFINED__
68 #define __IDirectXVideoDecoderService_FWD_DEFINED__
69 typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService;
70 #ifdef __cplusplus
71 interface IDirectXVideoDecoderService;
72 #endif /* __cplusplus */
73 #endif
74 
75 #ifndef __REFERENCE_TIME_DEFINED
76 #define __REFERENCE_TIME_DEFINED
77 typedef LONGLONG REFERENCE_TIME;
78 #endif /*__REFERENCE_TIME_DEFINED*/
79 #define DXVA2_ProcAmp_None 0x0000
80 #define DXVA2_ProcAmp_Brightness 0x0001
81 #define DXVA2_ProcAmp_Contrast 0x0002
82 #define DXVA2_ProcAmp_Hue 0x0004
83 #define DXVA2_ProcAmp_Saturation 0x0008
84 
85 #define DXVA2_E_NOT_INITIALIZED     MAKE_HRESULT(1, 4, 4096)
86 #define DXVA2_E_NEW_VIDEO_DEVICE    MAKE_HRESULT(1, 4, 4097)
87 #define DXVA2_E_VIDEO_DEVICE_LOCKED MAKE_HRESULT(1, 4, 4098)
88 #define DXVA2_E_NOT_AVAILABLE       MAKE_HRESULT(1, 4, 4099)
89 
90 DEFINE_GUID(DXVA2_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0,0x4563, 0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66);
91 DEFINE_GUID(DXVA2_ModeMPEG2_IDCT, 0xbf22ad00, 0x03ea,0x4690, 0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e);
92 DEFINE_GUID(DXVA2_ModeMPEG2_VLD, 0xee27417f, 0x5e28,0x4e65, 0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9);
93 DEFINE_GUID(DXVA2_ModeH264_A, 0x1b81be64, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
94 DEFINE_GUID(DXVA2_ModeH264_B, 0x1b81be65, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
95 DEFINE_GUID(DXVA2_ModeH264_C, 0x1b81be66, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
96 DEFINE_GUID(DXVA2_ModeH264_D, 0x1b81be67, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
97 DEFINE_GUID(DXVA2_ModeH264_E, 0x1b81be68, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
98 DEFINE_GUID(DXVA2_ModeH264_F, 0x1b81be69, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
99 DEFINE_GUID(DXVA2_ModeWMV8_A, 0x1b81be80, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
100 DEFINE_GUID(DXVA2_ModeWMV8_B, 0x1b81be81, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
101 DEFINE_GUID(DXVA2_ModeWMV9_A, 0x1b81be90, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
102 DEFINE_GUID(DXVA2_ModeWMV9_B, 0x1b81be91, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
103 DEFINE_GUID(DXVA2_ModeWMV9_C, 0x1b81be94, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
104 DEFINE_GUID(DXVA2_ModeVC1_A, 0x1b81beA0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
105 DEFINE_GUID(DXVA2_ModeVC1_B, 0x1b81beA1, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
106 DEFINE_GUID(DXVA2_ModeVC1_C, 0x1b81beA2, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
107 DEFINE_GUID(DXVA2_ModeVC1_D, 0x1b81beA3, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
108 
109 typedef enum _DXVA2_SampleFormat {
110   DXVA2_SampleFormatMask                  = 0x00FF,
111   DXVA2_SampleUnknown                     = 0,
112   DXVA2_SampleProgressiveFrame            = 2,
113   DXVA2_SampleFieldInterleavedEvenFirst   = 3,
114   DXVA2_SampleFieldInterleavedOddFirst    = 4,
115   DXVA2_SampleFieldSingleEven             = 5,
116   DXVA2_SampleFieldSingleOdd              = 6,
117   DXVA2_SampleSubStream                   = 7
118 } DXVA2_SampleFormat;
119 
120 typedef enum _DXVA2_VideoChromaSubSampling {
121   DXVA2_VideoChromaSubsamplingMask                              = 0x0F,
122   DXVA2_VideoChromaSubsampling_Unknown                          = 0,
123   DXVA2_VideoChromaSubsampling_ProgressiveChroma                = 0x8,
124   DXVA2_VideoChromaSubsampling_Horizontally_Cosited             = 0x4,
125   DXVA2_VideoChromaSubsampling_Vertically_Cosited               = 0x2,
126   DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes   = 0x1,
127   DXVA2_VideoChromaSubsampling_MPEG2                            =
128               DXVA2_VideoChromaSubsampling_Horizontally_Cosited |
129               DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,
130   DXVA2_VideoChromaSubsampling_MPEG1                            =
131               DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,
132   DXVA2_VideoChromaSubsampling_DV_PAL                           =
133               DXVA2_VideoChromaSubsampling_Horizontally_Cosited |
134               DXVA2_VideoChromaSubsampling_Vertically_Cosited,
135   DXVA2_VideoChromaSubsampling_Cosited                          =
136               DXVA2_VideoChromaSubsampling_Horizontally_Cosited |
137               DXVA2_VideoChromaSubsampling_Vertically_Cosited |
138               DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes
139 } DXVA2_VideoChromaSubSampling;
140 
141 typedef enum _DXVA2_NominalRange {
142   DXVA2_NominalRangeMask       = 0x07,
143   DXVA2_NominalRange_Unknown   = 0,
144   DXVA2_NominalRange_Normal    = 1,
145   DXVA2_NominalRange_Wide      = 2,
146   DXVA2_NominalRange_0_255     = 1,
147   DXVA2_NominalRange_16_235    = 2,
148   DXVA2_NominalRange_48_208    = 3
149 } DXVA2_NominalRange;
150 
151 typedef enum _DXVA2_VideoLighting {
152   DXVA2_VideoLightingMask       = 0x0F,
153   DXVA2_VideoLighting_Unknown   = 0,
154   DXVA2_VideoLighting_bright    = 1,
155   DXVA2_VideoLighting_office    = 2,
156   DXVA2_VideoLighting_dim       = 3,
157   DXVA2_VideoLighting_dark      = 4
158 } DXVA2_VideoLighting;
159 
160 typedef enum _DXVA2_VideoPrimaries {
161   DXVA2_VideoPrimariesMask             = 0x001f,
162   DXVA2_VideoPrimaries_Unknown         = 0,
163   DXVA2_VideoPrimaries_reserved        = 1,
164   DXVA2_VideoPrimaries_BT709           = 2,
165   DXVA2_VideoPrimaries_BT470_2_SysM    = 3,
166   DXVA2_VideoPrimaries_BT470_2_SysBG   = 4,
167   DXVA2_VideoPrimaries_SMPTE170M       = 5,
168   DXVA2_VideoPrimaries_SMPTE240M       = 6,
169   DXVA2_VideoPrimaries_EBU3213         = 7,
170   DXVA2_VideoPrimaries_SMPTE_C         = 8
171 } DXVA2_VideoPrimaries;
172 
173 typedef enum _DXVA2_VideoTransferFunction {
174   DXVA2_VideoTransFuncMask       = 0x001f,
175   DXVA2_VideoTransFunc_Unknown   = 0,
176   DXVA2_VideoTransFunc_10        = 1,
177   DXVA2_VideoTransFunc_18        = 2,
178   DXVA2_VideoTransFunc_20        = 3,
179   DXVA2_VideoTransFunc_22        = 4,
180   DXVA2_VideoTransFunc_709       = 5,
181   DXVA2_VideoTransFunc_240M      = 6,
182   DXVA2_VideoTransFunc_sRGB      = 7,
183   DXVA2_VideoTransFunc_28        = 8
184 } DXVA2_VideoTransferFunction;
185 
186 typedef enum  {
187   DXVA2_SurfaceType_DecoderRenderTarget      = 0,
188   DXVA2_SurfaceType_ProcessorRenderTarget    = 1,
189   DXVA2_SurfaceType_D3DRenderTargetTexture   = 2
190 } DXVA2_SurfaceType;
191 
192 typedef enum _DXVA2_VideoTransferMatrix {
193   DXVA2_VideoTransferMatrixMask         = 0x07,
194   DXVA2_VideoTransferMatrix_Unknown     = 0,
195   DXVA2_VideoTransferMatrix_BT709       = 1,
196   DXVA2_VideoTransferMatrix_BT601       = 2,
197   DXVA2_VideoTransferMatrix_SMPTE240M   = 3
198 } DXVA2_VideoTransferMatrix;
199 
200 typedef struct _DXVA2_AYUVSample16 {
201   USHORT Cr;
202   USHORT Cb;
203   USHORT Y;
204   USHORT Alpha;
205 } DXVA2_AYUVSample16;
206 
207 typedef struct _DXVA2_AYUVSample8 {
208   UCHAR Cr;
209   UCHAR Cb;
210   UCHAR Y;
211   UCHAR Alpha;
212 } DXVA2_AYUVSample8;
213 typedef struct _DXVA2_ConfigPictureDecode {
214     GUID guidConfigBitstreamEncryption;
215     GUID guidConfigMBcontrolEncryption;
216     GUID guidConfigResidDiffEncryption;
217     UINT ConfigBitstreamRaw;
218     UINT ConfigMBcontrolRasterOrder;
219     UINT ConfigResidDiffHost;
220     UINT ConfigSpatialResid8;
221     UINT ConfigResid8Subtraction;
222     UINT ConfigSpatialHost8or9Clipping;
223     UINT ConfigSpatialResidInterleaved;
224     UINT ConfigIntraResidUnsigned;
225     UINT ConfigResidDiffAccelerator;
226     UINT ConfigHostInverseScan;
227     UINT ConfigSpecificIDCT;
228     UINT Config4GroupedCoefs;
229     USHORT ConfigMinRenderTargetBuffCount;
230     USHORT ConfigDecoderSpecific;
231 } DXVA2_ConfigPictureDecode;
232 typedef struct _DXVA2_DecodeBufferDesc {
233     DWORD CompressedBufferType;
234     UINT BufferIndex;
235     UINT DataOffset;
236     UINT DataSize;
237     UINT FirstMBaddress;
238     UINT NumMBsInBuffer;
239     UINT Width;
240     UINT Height;
241     UINT Stride;
242     UINT ReservedBits;
243     PVOID pvPVPState;
244 } DXVA2_DecodeBufferDesc;
245 typedef struct _DXVA2_DecodeExtensionData {
246     UINT Function;
247     PVOID pPrivateInputData;
248     UINT PrivateInputDataSize;
249     PVOID pPrivateOutputData;
250     UINT PrivateOutputDataSize;
251 } DXVA2_DecodeExtensionData;
252 typedef struct _DXVA2_DecodeExecuteParams {
253     UINT NumCompBuffers;
254     DXVA2_DecodeBufferDesc *pCompressedBuffers;
255     DXVA2_DecodeExtensionData *pExtensionData;
256 } DXVA2_DecodeExecuteParams;
257 typedef struct _DXVA2_ExtendedFormat {
258     __C89_NAMELESS union {
259         __C89_NAMELESS struct {
260             UINT SampleFormat : 8;
261             UINT VideoChromaSubsampling : 4;
262             UINT NominalRange : 3;
263             UINT VideoTransferMatrix : 3;
264             UINT VideoLighting : 4;
265             UINT VideoPrimaries : 5;
266             UINT VideoTransferFunction : 5;
267         } __C89_NAMELESSSTRUCTNAME;
268         UINT value;
269     } __C89_NAMELESSUNIONNAME;
270 } DXVA2_ExtendedFormat;
271 typedef struct _DXVA2_Fixed32 {
272   __C89_NAMELESS union {
273     __C89_NAMELESS struct {
274       USHORT Fraction;
275       SHORT  Value;
276     } DUMMYSTRUCTNAME;
277     LONG   ll;
278   } DUMMYUNIONNAME;
279 } DXVA2_Fixed32;
280 
281 typedef struct _DXVA2_FilterValues {
282   DXVA2_Fixed32 Level;
283   DXVA2_Fixed32 Threshold;
284   DXVA2_Fixed32 Radius;
285 } DXVA2_FilterValues;
286 typedef struct _DXVA2_Frequency {
287     UINT Numerator;
288     UINT Denominator;
289 } DXVA2_Frequency;
290 typedef struct _DXVA2_ProcAmpValues {
291   DXVA2_Fixed32 Brightness;
292   DXVA2_Fixed32 Contrast;
293   DXVA2_Fixed32 Hue;
294   DXVA2_Fixed32 Saturation;
295 } DXVA2_ProcAmpValues;
296 
297 typedef struct _DXVA2_ValueRange {
298   DXVA2_Fixed32 MinValue;
299   DXVA2_Fixed32 MaxValue;
300   DXVA2_Fixed32 DefaultValue;
301   DXVA2_Fixed32 StepSize;
302 } DXVA2_ValueRange;
303 typedef struct _DXVA2_VideoDesc {
304     UINT SampleWidth;
305     UINT SampleHeight;
306     DXVA2_ExtendedFormat SampleFormat;
307     D3DFORMAT Format;
308     DXVA2_Frequency InputSampleFreq;
309     DXVA2_Frequency OutputFrameFreq;
310     UINT UABProtectionLevel;
311     UINT Reserved;
312 } DXVA2_VideoDesc;
313 /* DeviceCaps
314 DXVA2_VPDev_EmulatedDXVA1
315 DXVA2_VPDev_HardwareDevice
316 DXVA2_VPDev_SoftwareDevice
317 */
318 /* DeinterlaceTechnology
319 DXVA2_DeinterlaceTech_Unknown
320 DXVA2_DeinterlaceTech_BOBLineReplicate
321 DXVA2_DeinterlaceTech_BOBVerticalStretch
322 DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap
323 DXVA2_DeinterlaceTech_MedianFiltering
324 DXVA2_DeinterlaceTech_EdgeFiltering
325 DXVA2_DeinterlaceTech_FieldAdaptive
326 DXVA2_DeinterlaceTech_PixelAdaptive
327 DXVA2_DeinterlaceTech_MotionVectorSteered
328 DXVA2_DeinterlaceTech_InverseTelecine
329 */
330 
331 /* VideoProcessorOperations
332 DXVA2_VideoProcess_YUV2RGB
333 DXVA2_VideoProcess_StretchX
334 DXVA2_VideoProcess_StretchY
335 DXVA2_VideoProcess_AlphaBlend
336 DXVA2_VideoProcess_SubRects
337 DXVA2_VideoProcess_SubStreams
338 DXVA2_VideoProcess_SubStreamsExtended
339 DXVA2_VideoProcess_YUV2RGBExtended
340 DXVA2_VideoProcess_AlphaBlendExtended
341 DXVA2_VideoProcess_Constriction
342 DXVA2_VideoProcess_NoiseFilter
343 DXVA2_VideoProcess_DetailFilter
344 DXVA2_VideoProcess_PlanarAlpha
345 DXVA2_VideoProcess_LinearScaling
346 DXVA2_VideoProcess_GammaCompensated
347 DXVA2_VideoProcess_MaintainsOriginalFieldData
348 */
349 
350 /*NoiseFilterTechnology
351 DXVA2_NoiseFilterTech_Unsupported
352 DXVA2_NoiseFilterTech_Unknown
353 DXVA2_NoiseFilterTech_Median
354 DXVA2_NoiseFilterTech_Temporal
355 DXVA2_NoiseFilterTech_BlockNoise
356 DXVA2_NoiseFilterTech_MosquitoNoise
357 */
358 
359 /* DetailFilterTechnology
360 DXVA2_DetailFilterTech_Unsupported
361 DXVA2_DetailFilterTech_Unknown
362 DXVA2_DetailFilterTech_Edge
363 DXVA2_DetailFilterTech_Sharpening
364 */
365 typedef struct _DXVA2_VideoProcessBltParams {
366   REFERENCE_TIME       TargetFrame;
367   RECT                 TargetRect;
368   SIZE                 ConstrictionSize;
369   UINT                 StreamingFlags;
370   DXVA2_AYUVSample16   BackgroundColor;
371   DXVA2_ExtendedFormat DestFormat;
372   DXVA2_ProcAmpValues  ProcAmpValues;
373   DXVA2_Fixed32        Alpha;
374   DXVA2_FilterValues   NoiseFilterLuma;
375   DXVA2_FilterValues   NoiseFilterChroma;
376   DXVA2_FilterValues   DetailFilterLuma;
377   DXVA2_FilterValues   DetailFilterChroma;
378   DWORD                DestData;
379 } DXVA2_VideoProcessBltParams;
380 
381 #ifdef _D3D9_H_
382 typedef struct _DXVA2_VideoProcessorCaps {
383   UINT    DeviceCaps;
384   D3DPOOL InputPool;
385   UINT    NumForwardRefSamples;
386   UINT    NumBackwardRefSamples;
387   UINT    Reserved;
388   UINT    DeinterlaceTechnology;
389   UINT    ProcAmpControlCaps;
390   UINT    VideoProcessorOperations;
391   UINT    NoiseFilterTechnology;
392   UINT    DetailFilterTechnology;
393 } DXVA2_VideoProcessorCaps;
394 #endif
395 
396 /* SampleData
397 DXVA2_SampleData_RFF
398 DXVA2_SampleData_TFF
399 DXVA2_SampleData_RFF_TFF_Present
400 */
401 
402 #ifdef _D3D9_H_
403 typedef struct _DXVA2_VideoSample {
404   REFERENCE_TIME       Start;
405   REFERENCE_TIME       End;
406   DXVA2_ExtendedFormat SampleFormat;
407   IDirect3DSurface9*   SrcSurface;
408   RECT                 SrcRect;
409   RECT                 DstRect;
410   DXVA2_AYUVSample8    Pal[16];
411   DXVA2_Fixed32        PlanarAlpha;
412   DWORD                SampleData;
413 } DXVA2_VideoSample;
414 #endif
415 
416 /* Constants */
417 
418 #define DXVA2_VideoDecoderRenderTarget 0
419 #define DXVA2_VideoProcessorRenderTarget 1
420 #define DXVA2_VideoSoftwareRenderTarget 2
421 
422 /* CompressedBufferType */
423 #define DXVA2_PictureParametersBufferType 0
424 #define DXVA2_MacroBlockControlBufferType 1
425 #define DXVA2_ResidualDifferenceBufferType 2
426 #define DXVA2_DeblockingControlBufferType 3
427 #define DXVA2_InverseQuantizationMatrixBufferType 4
428 #define DXVA2_SliceControlBufferType 5
429 #define DXVA2_BitStreamDateBufferType 6
430 #define DXVA2_MotionVectorBuffer 7
431 #define DXVA2_FilmGrainBuffer 8
432 
DXVA2_Fixed32OpaqueAlpha(void)433 __forceinline const DXVA2_Fixed32 DXVA2_Fixed32OpaqueAlpha (void) {
434   DXVA2_Fixed32 f32;
435   f32.ll = 0 + (1 << 16);
436   return f32;
437 }
438 
DXVA2_Fixed32TransparentAlpha(void)439 __forceinline const DXVA2_Fixed32 DXVA2_Fixed32TransparentAlpha (void) {
440   DXVA2_Fixed32 f32;
441   f32.ll = 0;
442   return f32;
443 }
444 
DXVA2FixedToFloat(const DXVA2_Fixed32 f32)445 __forceinline float DXVA2FixedToFloat (const DXVA2_Fixed32 f32) {
446   return (float)f32.Value + (float)f32.Fraction / (1 << 16);
447 }
448 
DXVA2FloatToFixed(const float f)449 __forceinline DXVA2_Fixed32 DXVA2FloatToFixed (const float f) {
450   DXVA2_Fixed32 f32;
451   f32.Value    = ((ULONG) (f * (1 << 16))) >> 16;
452   f32.Fraction = ((ULONG) (f * (1 << 16))) & 0xFFFF;
453   return f32;
454 }
455 #ifdef _D3D9_H_
456 HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9(UINT *pResetToken,IDirect3DDeviceManager9 **ppDXVAManager);
457 HRESULT WINAPI DXVA2CreateVideoService(IDirect3DDevice9 *pDD,REFIID riid,void **ppService);
458 /*****************************************************************************
459  * IDirect3DDeviceManager9 interface
460  */
461 #ifndef __IDirect3DDeviceManager9_INTERFACE_DEFINED__
462 #define __IDirect3DDeviceManager9_INTERFACE_DEFINED__
463 
464 DEFINE_GUID(IID_IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75);
465 #if defined(__cplusplus) && !defined(CINTERFACE)
466 MIDL_INTERFACE("a0cade0f-06d5-4cf4-a1c7-f3cdd725aa75")
467 IDirect3DDeviceManager9 : public IUnknown
468 {
469     virtual HRESULT STDMETHODCALLTYPE ResetDevice(
470         IDirect3DDevice9 *pDevice,
471         UINT resetToken) = 0;
472 
473     virtual HRESULT STDMETHODCALLTYPE OpenDeviceHandle(
474         HANDLE *phDevice) = 0;
475 
476     virtual HRESULT STDMETHODCALLTYPE CloseDeviceHandle(
477         HANDLE hDevice) = 0;
478 
479     virtual HRESULT STDMETHODCALLTYPE TestDevice(
480         HANDLE hDevice) = 0;
481 
482     virtual HRESULT STDMETHODCALLTYPE LockDevice(
483         HANDLE hDevice,
484         IDirect3DDevice9 **ppDevice,
485         WINBOOL fBlock) = 0;
486 
487     virtual HRESULT STDMETHODCALLTYPE UnlockDevice(
488         HANDLE hDevice,
489         WINBOOL fSaveState) = 0;
490 
491     virtual HRESULT STDMETHODCALLTYPE GetVideoService(
492         HANDLE hDevice,
493         REFIID riid,
494         void **ppService) = 0;
495 
496 };
497 #ifdef __CRT_UUID_DECL
498 __CRT_UUID_DECL(IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75)
499 #endif
500 #else
501 typedef struct IDirect3DDeviceManager9Vtbl {
502     BEGIN_INTERFACE
503 
504     /*** IUnknown methods ***/
505     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
506         IDirect3DDeviceManager9 *This,
507         REFIID riid,
508         void **ppvObject);
509 
510     ULONG (STDMETHODCALLTYPE *AddRef)(
511         IDirect3DDeviceManager9 *This);
512 
513     ULONG (STDMETHODCALLTYPE *Release)(
514         IDirect3DDeviceManager9 *This);
515 
516     /*** IDirect3DDeviceManager9 methods ***/
517     HRESULT (STDMETHODCALLTYPE *ResetDevice)(
518         IDirect3DDeviceManager9 *This,
519         IDirect3DDevice9 *pDevice,
520         UINT resetToken);
521 
522     HRESULT (STDMETHODCALLTYPE *OpenDeviceHandle)(
523         IDirect3DDeviceManager9 *This,
524         HANDLE *phDevice);
525 
526     HRESULT (STDMETHODCALLTYPE *CloseDeviceHandle)(
527         IDirect3DDeviceManager9 *This,
528         HANDLE hDevice);
529 
530     HRESULT (STDMETHODCALLTYPE *TestDevice)(
531         IDirect3DDeviceManager9 *This,
532         HANDLE hDevice);
533 
534     HRESULT (STDMETHODCALLTYPE *LockDevice)(
535         IDirect3DDeviceManager9 *This,
536         HANDLE hDevice,
537         IDirect3DDevice9 **ppDevice,
538         WINBOOL fBlock);
539 
540     HRESULT (STDMETHODCALLTYPE *UnlockDevice)(
541         IDirect3DDeviceManager9 *This,
542         HANDLE hDevice,
543         WINBOOL fSaveState);
544 
545     HRESULT (STDMETHODCALLTYPE *GetVideoService)(
546         IDirect3DDeviceManager9 *This,
547         HANDLE hDevice,
548         REFIID riid,
549         void **ppService);
550 
551     END_INTERFACE
552 } IDirect3DDeviceManager9Vtbl;
553 
554 interface IDirect3DDeviceManager9 {
555     CONST_VTBL IDirect3DDeviceManager9Vtbl* lpVtbl;
556 };
557 
558 #ifdef COBJMACROS
559 #ifndef WIDL_C_INLINE_WRAPPERS
560 /*** IUnknown methods ***/
561 #define IDirect3DDeviceManager9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
562 #define IDirect3DDeviceManager9_AddRef(This) (This)->lpVtbl->AddRef(This)
563 #define IDirect3DDeviceManager9_Release(This) (This)->lpVtbl->Release(This)
564 /*** IDirect3DDeviceManager9 methods ***/
565 #define IDirect3DDeviceManager9_ResetDevice(This,pDevice,resetToken) (This)->lpVtbl->ResetDevice(This,pDevice,resetToken)
566 #define IDirect3DDeviceManager9_OpenDeviceHandle(This,phDevice) (This)->lpVtbl->OpenDeviceHandle(This,phDevice)
567 #define IDirect3DDeviceManager9_CloseDeviceHandle(This,hDevice) (This)->lpVtbl->CloseDeviceHandle(This,hDevice)
568 #define IDirect3DDeviceManager9_TestDevice(This,hDevice) (This)->lpVtbl->TestDevice(This,hDevice)
569 #define IDirect3DDeviceManager9_LockDevice(This,hDevice,ppDevice,fBlock) (This)->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock)
570 #define IDirect3DDeviceManager9_UnlockDevice(This,hDevice,fSaveState) (This)->lpVtbl->UnlockDevice(This,hDevice,fSaveState)
571 #define IDirect3DDeviceManager9_GetVideoService(This,hDevice,riid,ppService) (This)->lpVtbl->GetVideoService(This,hDevice,riid,ppService)
572 #else
573 /*** IUnknown methods ***/
574 static FORCEINLINE HRESULT IDirect3DDeviceManager9_QueryInterface(IDirect3DDeviceManager9* This,REFIID riid,void **ppvObject) {
575     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
576 }
577 static FORCEINLINE ULONG IDirect3DDeviceManager9_AddRef(IDirect3DDeviceManager9* This) {
578     return This->lpVtbl->AddRef(This);
579 }
580 static FORCEINLINE ULONG IDirect3DDeviceManager9_Release(IDirect3DDeviceManager9* This) {
581     return This->lpVtbl->Release(This);
582 }
583 /*** IDirect3DDeviceManager9 methods ***/
584 static FORCEINLINE HRESULT IDirect3DDeviceManager9_ResetDevice(IDirect3DDeviceManager9* This,IDirect3DDevice9 *pDevice,UINT resetToken) {
585     return This->lpVtbl->ResetDevice(This,pDevice,resetToken);
586 }
587 static FORCEINLINE HRESULT IDirect3DDeviceManager9_OpenDeviceHandle(IDirect3DDeviceManager9* This,HANDLE *phDevice) {
588     return This->lpVtbl->OpenDeviceHandle(This,phDevice);
589 }
590 static FORCEINLINE HRESULT IDirect3DDeviceManager9_CloseDeviceHandle(IDirect3DDeviceManager9* This,HANDLE hDevice) {
591     return This->lpVtbl->CloseDeviceHandle(This,hDevice);
592 }
593 static FORCEINLINE HRESULT IDirect3DDeviceManager9_TestDevice(IDirect3DDeviceManager9* This,HANDLE hDevice) {
594     return This->lpVtbl->TestDevice(This,hDevice);
595 }
596 static FORCEINLINE HRESULT IDirect3DDeviceManager9_LockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,IDirect3DDevice9 **ppDevice,WINBOOL fBlock) {
597     return This->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock);
598 }
599 static FORCEINLINE HRESULT IDirect3DDeviceManager9_UnlockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,WINBOOL fSaveState) {
600     return This->lpVtbl->UnlockDevice(This,hDevice,fSaveState);
601 }
602 static FORCEINLINE HRESULT IDirect3DDeviceManager9_GetVideoService(IDirect3DDeviceManager9* This,HANDLE hDevice,REFIID riid,void **ppService) {
603     return This->lpVtbl->GetVideoService(This,hDevice,riid,ppService);
604 }
605 #endif
606 #endif
607 
608 #endif
609 
610 
611 #endif  /* __IDirect3DDeviceManager9_INTERFACE_DEFINED__ */
612 
613 /*****************************************************************************
614  * IDirectXVideoDecoder interface
615  */
616 #ifndef __IDirectXVideoDecoder_INTERFACE_DEFINED__
617 #define __IDirectXVideoDecoder_INTERFACE_DEFINED__
618 
619 DEFINE_GUID(IID_IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d);
620 #if defined(__cplusplus) && !defined(CINTERFACE)
621 MIDL_INTERFACE("f2b0810a-fd00-43c9-918c-df94e2d8ef7d")
622 IDirectXVideoDecoder : public IUnknown
623 {
624     virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderService(
625         IDirectXVideoDecoderService **ppService) = 0;
626 
627     virtual HRESULT STDMETHODCALLTYPE GetCreationParameters(
628         GUID *pDeviceGuid,
629         DXVA2_VideoDesc *pVideoDesc,
630         DXVA2_ConfigPictureDecode *pConfig,
631         IDirect3DSurface9 ***pDecoderRenderTargets,
632         UINT *pNumSurfaces) = 0;
633 
634     virtual HRESULT STDMETHODCALLTYPE GetBuffer(
635         UINT BufferType,
636         void **ppBuffer,
637         UINT *pBufferSize) = 0;
638 
639     virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
640         UINT BufferType) = 0;
641 
642     virtual HRESULT STDMETHODCALLTYPE BeginFrame(
643         IDirect3DSurface9 *pRenderTarget,
644         void *pvPVPData) = 0;
645 
646     virtual HRESULT STDMETHODCALLTYPE EndFrame(
647         HANDLE *pHandleComplete) = 0;
648 
649     virtual HRESULT STDMETHODCALLTYPE Execute(
650         const DXVA2_DecodeExecuteParams *pExecuteParams) = 0;
651 
652 };
653 #ifdef __CRT_UUID_DECL
654 __CRT_UUID_DECL(IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d)
655 #endif
656 #else
657 typedef struct IDirectXVideoDecoderVtbl {
658     BEGIN_INTERFACE
659 
660     /*** IUnknown methods ***/
661     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
662         IDirectXVideoDecoder *This,
663         REFIID riid,
664         void **ppvObject);
665 
666     ULONG (STDMETHODCALLTYPE *AddRef)(
667         IDirectXVideoDecoder *This);
668 
669     ULONG (STDMETHODCALLTYPE *Release)(
670         IDirectXVideoDecoder *This);
671 
672     /*** IDirectXVideoDecoder methods ***/
673     HRESULT (STDMETHODCALLTYPE *GetVideoDecoderService)(
674         IDirectXVideoDecoder *This,
675         IDirectXVideoDecoderService **ppService);
676 
677     HRESULT (STDMETHODCALLTYPE *GetCreationParameters)(
678         IDirectXVideoDecoder *This,
679         GUID *pDeviceGuid,
680         DXVA2_VideoDesc *pVideoDesc,
681         DXVA2_ConfigPictureDecode *pConfig,
682         IDirect3DSurface9 ***pDecoderRenderTargets,
683         UINT *pNumSurfaces);
684 
685     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
686         IDirectXVideoDecoder *This,
687         UINT BufferType,
688         void **ppBuffer,
689         UINT *pBufferSize);
690 
691     HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
692         IDirectXVideoDecoder *This,
693         UINT BufferType);
694 
695     HRESULT (STDMETHODCALLTYPE *BeginFrame)(
696         IDirectXVideoDecoder *This,
697         IDirect3DSurface9 *pRenderTarget,
698         void *pvPVPData);
699 
700     HRESULT (STDMETHODCALLTYPE *EndFrame)(
701         IDirectXVideoDecoder *This,
702         HANDLE *pHandleComplete);
703 
704     HRESULT (STDMETHODCALLTYPE *Execute)(
705         IDirectXVideoDecoder *This,
706         const DXVA2_DecodeExecuteParams *pExecuteParams);
707 
708     END_INTERFACE
709 } IDirectXVideoDecoderVtbl;
710 
711 interface IDirectXVideoDecoder {
712     CONST_VTBL IDirectXVideoDecoderVtbl* lpVtbl;
713 };
714 
715 #ifdef COBJMACROS
716 #ifndef WIDL_C_INLINE_WRAPPERS
717 /*** IUnknown methods ***/
718 #define IDirectXVideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
719 #define IDirectXVideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
720 #define IDirectXVideoDecoder_Release(This) (This)->lpVtbl->Release(This)
721 /*** IDirectXVideoDecoder methods ***/
722 #define IDirectXVideoDecoder_GetVideoDecoderService(This,ppService) (This)->lpVtbl->GetVideoDecoderService(This,ppService)
723 #define IDirectXVideoDecoder_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces)
724 #define IDirectXVideoDecoder_GetBuffer(This,BufferType,ppBuffer,pBufferSize) (This)->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize)
725 #define IDirectXVideoDecoder_ReleaseBuffer(This,BufferType) (This)->lpVtbl->ReleaseBuffer(This,BufferType)
726 #define IDirectXVideoDecoder_BeginFrame(This,pRenderTarget,pvPVPData) (This)->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData)
727 #define IDirectXVideoDecoder_EndFrame(This,pHandleComplete) (This)->lpVtbl->EndFrame(This,pHandleComplete)
728 #define IDirectXVideoDecoder_Execute(This,pExecuteParams) (This)->lpVtbl->Execute(This,pExecuteParams)
729 #else
730 /*** IUnknown methods ***/
731 static FORCEINLINE HRESULT IDirectXVideoDecoder_QueryInterface(IDirectXVideoDecoder* This,REFIID riid,void **ppvObject) {
732     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
733 }
734 static FORCEINLINE ULONG IDirectXVideoDecoder_AddRef(IDirectXVideoDecoder* This) {
735     return This->lpVtbl->AddRef(This);
736 }
737 static FORCEINLINE ULONG IDirectXVideoDecoder_Release(IDirectXVideoDecoder* This) {
738     return This->lpVtbl->Release(This);
739 }
740 /*** IDirectXVideoDecoder methods ***/
741 static FORCEINLINE HRESULT IDirectXVideoDecoder_GetVideoDecoderService(IDirectXVideoDecoder* This,IDirectXVideoDecoderService **ppService) {
742     return This->lpVtbl->GetVideoDecoderService(This,ppService);
743 }
744 static FORCEINLINE HRESULT IDirectXVideoDecoder_GetCreationParameters(IDirectXVideoDecoder* This,GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 ***pDecoderRenderTargets,UINT *pNumSurfaces) {
745     return This->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces);
746 }
747 static FORCEINLINE HRESULT IDirectXVideoDecoder_GetBuffer(IDirectXVideoDecoder* This,UINT BufferType,void **ppBuffer,UINT *pBufferSize) {
748     return This->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize);
749 }
750 static FORCEINLINE HRESULT IDirectXVideoDecoder_ReleaseBuffer(IDirectXVideoDecoder* This,UINT BufferType) {
751     return This->lpVtbl->ReleaseBuffer(This,BufferType);
752 }
753 static FORCEINLINE HRESULT IDirectXVideoDecoder_BeginFrame(IDirectXVideoDecoder* This,IDirect3DSurface9 *pRenderTarget,void *pvPVPData) {
754     return This->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData);
755 }
756 static FORCEINLINE HRESULT IDirectXVideoDecoder_EndFrame(IDirectXVideoDecoder* This,HANDLE *pHandleComplete) {
757     return This->lpVtbl->EndFrame(This,pHandleComplete);
758 }
759 static FORCEINLINE HRESULT IDirectXVideoDecoder_Execute(IDirectXVideoDecoder* This,const DXVA2_DecodeExecuteParams *pExecuteParams) {
760     return This->lpVtbl->Execute(This,pExecuteParams);
761 }
762 #endif
763 #endif
764 
765 #endif
766 
767 
768 #endif  /* __IDirectXVideoDecoder_INTERFACE_DEFINED__ */
769 
770 /*****************************************************************************
771  * IDirectXVideoAccelerationService interface
772  */
773 #ifndef __IDirectXVideoAccelerationService_INTERFACE_DEFINED__
774 #define __IDirectXVideoAccelerationService_INTERFACE_DEFINED__
775 
776 DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02);
777 #if defined(__cplusplus) && !defined(CINTERFACE)
778 MIDL_INTERFACE("fc51a550-d5e7-11d9-af55-00054e43ff02")
779 IDirectXVideoAccelerationService : public IUnknown
780 {
781     virtual HRESULT STDMETHODCALLTYPE CreateSurface(
782         UINT Width,
783         UINT Height,
784         UINT BackBuffers,
785         D3DFORMAT Format,
786         D3DPOOL Pool,
787         DWORD Usage,
788         DWORD DxvaType,
789         IDirect3DSurface9 **ppSurface,
790         HANDLE *pSharedHandle) = 0;
791 
792 };
793 #ifdef __CRT_UUID_DECL
794 __CRT_UUID_DECL(IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02)
795 #endif
796 #else
797 typedef struct IDirectXVideoAccelerationServiceVtbl {
798     BEGIN_INTERFACE
799 
800     /*** IUnknown methods ***/
801     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
802         IDirectXVideoAccelerationService *This,
803         REFIID riid,
804         void **ppvObject);
805 
806     ULONG (STDMETHODCALLTYPE *AddRef)(
807         IDirectXVideoAccelerationService *This);
808 
809     ULONG (STDMETHODCALLTYPE *Release)(
810         IDirectXVideoAccelerationService *This);
811 
812     /*** IDirectXVideoAccelerationService methods ***/
813     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
814         IDirectXVideoAccelerationService *This,
815         UINT Width,
816         UINT Height,
817         UINT BackBuffers,
818         D3DFORMAT Format,
819         D3DPOOL Pool,
820         DWORD Usage,
821         DWORD DxvaType,
822         IDirect3DSurface9 **ppSurface,
823         HANDLE *pSharedHandle);
824 
825     END_INTERFACE
826 } IDirectXVideoAccelerationServiceVtbl;
827 
828 interface IDirectXVideoAccelerationService {
829     CONST_VTBL IDirectXVideoAccelerationServiceVtbl* lpVtbl;
830 };
831 
832 #ifdef COBJMACROS
833 #ifndef WIDL_C_INLINE_WRAPPERS
834 /*** IUnknown methods ***/
835 #define IDirectXVideoAccelerationService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
836 #define IDirectXVideoAccelerationService_AddRef(This) (This)->lpVtbl->AddRef(This)
837 #define IDirectXVideoAccelerationService_Release(This) (This)->lpVtbl->Release(This)
838 /*** IDirectXVideoAccelerationService methods ***/
839 #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)
840 #else
841 /*** IUnknown methods ***/
842 static FORCEINLINE HRESULT IDirectXVideoAccelerationService_QueryInterface(IDirectXVideoAccelerationService* This,REFIID riid,void **ppvObject) {
843     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
844 }
845 static FORCEINLINE ULONG IDirectXVideoAccelerationService_AddRef(IDirectXVideoAccelerationService* This) {
846     return This->lpVtbl->AddRef(This);
847 }
848 static FORCEINLINE ULONG IDirectXVideoAccelerationService_Release(IDirectXVideoAccelerationService* This) {
849     return This->lpVtbl->Release(This);
850 }
851 /*** IDirectXVideoAccelerationService methods ***/
852 static FORCEINLINE HRESULT IDirectXVideoAccelerationService_CreateSurface(IDirectXVideoAccelerationService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) {
853     return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle);
854 }
855 #endif
856 #endif
857 
858 #endif
859 
860 
861 #endif  /* __IDirectXVideoAccelerationService_INTERFACE_DEFINED__ */
862 
863 /*****************************************************************************
864  * IDirectXVideoDecoderService interface
865  */
866 #ifndef __IDirectXVideoDecoderService_INTERFACE_DEFINED__
867 #define __IDirectXVideoDecoderService_INTERFACE_DEFINED__
868 
869 DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02);
870 #if defined(__cplusplus) && !defined(CINTERFACE)
871 MIDL_INTERFACE("fc51a551-d5e7-11d9-af55-00054e43ff02")
872 IDirectXVideoDecoderService : public IDirectXVideoAccelerationService
873 {
874     virtual HRESULT STDMETHODCALLTYPE GetDecoderDeviceGuids(
875         UINT *pCount,
876         GUID **pGuids) = 0;
877 
878     virtual HRESULT STDMETHODCALLTYPE GetDecoderRenderTargets(
879         REFGUID Guid,
880         UINT *pCount,
881         D3DFORMAT **pFormats) = 0;
882 
883     virtual HRESULT STDMETHODCALLTYPE GetDecoderConfigurations(
884         REFGUID Guid,
885         const DXVA2_VideoDesc *pVideoDesc,
886         void *pReserved,
887         UINT *pCount,
888         DXVA2_ConfigPictureDecode **ppConfigs) = 0;
889 
890     virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
891         REFGUID Guid,
892         const DXVA2_VideoDesc *pVideoDesc,
893         const DXVA2_ConfigPictureDecode *pConfig,
894         IDirect3DSurface9 **ppDecoderRenderTargets,
895         UINT NumRenderTargets,
896         IDirectXVideoDecoder **ppDecode) = 0;
897 
898 };
899 #ifdef __CRT_UUID_DECL
900 __CRT_UUID_DECL(IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02)
901 #endif
902 #else
903 typedef struct IDirectXVideoDecoderServiceVtbl {
904     BEGIN_INTERFACE
905 
906     /*** IUnknown methods ***/
907     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
908         IDirectXVideoDecoderService *This,
909         REFIID riid,
910         void **ppvObject);
911 
912     ULONG (STDMETHODCALLTYPE *AddRef)(
913         IDirectXVideoDecoderService *This);
914 
915     ULONG (STDMETHODCALLTYPE *Release)(
916         IDirectXVideoDecoderService *This);
917 
918     /*** IDirectXVideoAccelerationService methods ***/
919     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
920         IDirectXVideoDecoderService *This,
921         UINT Width,
922         UINT Height,
923         UINT BackBuffers,
924         D3DFORMAT Format,
925         D3DPOOL Pool,
926         DWORD Usage,
927         DWORD DxvaType,
928         IDirect3DSurface9 **ppSurface,
929         HANDLE *pSharedHandle);
930 
931     /*** IDirectXVideoDecoderService methods ***/
932     HRESULT (STDMETHODCALLTYPE *GetDecoderDeviceGuids)(
933         IDirectXVideoDecoderService *This,
934         UINT *pCount,
935         GUID **pGuids);
936 
937     HRESULT (STDMETHODCALLTYPE *GetDecoderRenderTargets)(
938         IDirectXVideoDecoderService *This,
939         REFGUID Guid,
940         UINT *pCount,
941         D3DFORMAT **pFormats);
942 
943     HRESULT (STDMETHODCALLTYPE *GetDecoderConfigurations)(
944         IDirectXVideoDecoderService *This,
945         REFGUID Guid,
946         const DXVA2_VideoDesc *pVideoDesc,
947         void *pReserved,
948         UINT *pCount,
949         DXVA2_ConfigPictureDecode **ppConfigs);
950 
951     HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
952         IDirectXVideoDecoderService *This,
953         REFGUID Guid,
954         const DXVA2_VideoDesc *pVideoDesc,
955         const DXVA2_ConfigPictureDecode *pConfig,
956         IDirect3DSurface9 **ppDecoderRenderTargets,
957         UINT NumRenderTargets,
958         IDirectXVideoDecoder **ppDecode);
959 
960     END_INTERFACE
961 } IDirectXVideoDecoderServiceVtbl;
962 
963 interface IDirectXVideoDecoderService {
964     CONST_VTBL IDirectXVideoDecoderServiceVtbl* lpVtbl;
965 };
966 
967 #ifdef COBJMACROS
968 #ifndef WIDL_C_INLINE_WRAPPERS
969 /*** IUnknown methods ***/
970 #define IDirectXVideoDecoderService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
971 #define IDirectXVideoDecoderService_AddRef(This) (This)->lpVtbl->AddRef(This)
972 #define IDirectXVideoDecoderService_Release(This) (This)->lpVtbl->Release(This)
973 /*** IDirectXVideoAccelerationService methods ***/
974 #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)
975 /*** IDirectXVideoDecoderService methods ***/
976 #define IDirectXVideoDecoderService_GetDecoderDeviceGuids(This,pCount,pGuids) (This)->lpVtbl->GetDecoderDeviceGuids(This,pCount,pGuids)
977 #define IDirectXVideoDecoderService_GetDecoderRenderTargets(This,Guid,pCount,pFormats) (This)->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats)
978 #define IDirectXVideoDecoderService_GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs) (This)->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs)
979 #define IDirectXVideoDecoderService_CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode) (This)->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode)
980 #else
981 /*** IUnknown methods ***/
982 static FORCEINLINE HRESULT IDirectXVideoDecoderService_QueryInterface(IDirectXVideoDecoderService* This,REFIID riid,void **ppvObject) {
983     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
984 }
985 static FORCEINLINE ULONG IDirectXVideoDecoderService_AddRef(IDirectXVideoDecoderService* This) {
986     return This->lpVtbl->AddRef(This);
987 }
988 static FORCEINLINE ULONG IDirectXVideoDecoderService_Release(IDirectXVideoDecoderService* This) {
989     return This->lpVtbl->Release(This);
990 }
991 /*** IDirectXVideoAccelerationService methods ***/
992 static FORCEINLINE HRESULT IDirectXVideoDecoderService_CreateSurface(IDirectXVideoDecoderService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) {
993     return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle);
994 }
995 /*** IDirectXVideoDecoderService methods ***/
996 static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderDeviceGuids(IDirectXVideoDecoderService* This,UINT *pCount,GUID **pGuids) {
997     return This->lpVtbl->GetDecoderDeviceGuids(This,pCount,pGuids);
998 }
999 static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderRenderTargets(IDirectXVideoDecoderService* This,REFGUID Guid,UINT *pCount,D3DFORMAT **pFormats) {
1000     return This->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats);
1001 }
1002 static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderConfigurations(IDirectXVideoDecoderService* This,REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,void *pReserved,UINT *pCount,DXVA2_ConfigPictureDecode **ppConfigs) {
1003     return This->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs);
1004 }
1005 static FORCEINLINE HRESULT IDirectXVideoDecoderService_CreateVideoDecoder(IDirectXVideoDecoderService* This,REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,const DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 **ppDecoderRenderTargets,UINT NumRenderTargets,IDirectXVideoDecoder **ppDecode) {
1006     return This->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode);
1007 }
1008 #endif
1009 #endif
1010 
1011 #endif
1012 
1013 
1014 #endif  /* __IDirectXVideoDecoderService_INTERFACE_DEFINED__ */
1015 
1016 #endif /* _D3D9_H_ */
1017 /* Begin additional prototypes for all interfaces */
1018 
1019 
1020 /* End additional prototypes */
1021 
1022 #ifdef __cplusplus
1023 }
1024 #endif
1025 
1026 #endif /* __dxva2api_h__ */
1027