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