1 /*** Autogenerated by WIDL 6.4 from include/dxvahd.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 __dxvahd_h__
17 #define __dxvahd_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IDXVAHD_Device_FWD_DEFINED__
22 #define __IDXVAHD_Device_FWD_DEFINED__
23 typedef interface IDXVAHD_Device IDXVAHD_Device;
24 #ifdef __cplusplus
25 interface IDXVAHD_Device;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IDXVAHD_VideoProcessor_FWD_DEFINED__
30 #define __IDXVAHD_VideoProcessor_FWD_DEFINED__
31 typedef interface IDXVAHD_VideoProcessor IDXVAHD_VideoProcessor;
32 #ifdef __cplusplus
33 interface IDXVAHD_VideoProcessor;
34 #endif /* __cplusplus */
35 #endif
36 
37 /* Headers for imported files */
38 
39 #include <unknwn.h>
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 #include <winapifamily.h>
46 
47 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
48 
49 #if (_WIN32_WINNT >= 0x0601)
50 #if 0
51 #ifndef __IDirect3DSurface9_FWD_DEFINED__
52 #define __IDirect3DSurface9_FWD_DEFINED__
53 typedef interface IDirect3DSurface9 IDirect3DSurface9;
54 #ifdef __cplusplus
55 interface IDirect3DSurface9;
56 #endif /* __cplusplus */
57 #endif
58 
59 #ifndef __IDirect3DDevice9Ex_FWD_DEFINED__
60 #define __IDirect3DDevice9Ex_FWD_DEFINED__
61 typedef interface IDirect3DDevice9Ex IDirect3DDevice9Ex;
62 #ifdef __cplusplus
63 interface IDirect3DDevice9Ex;
64 #endif /* __cplusplus */
65 #endif
66 
67 typedef DWORD D3DFORMAT;
68 typedef DWORD D3DPOOL;
69 typedef struct __WIDL_dxvahd_generated_name_0000000C {
70     char dummy;
71 } D3DCOLOR;
72 #endif
73 #ifndef CALLBACK
74 #if defined(_ARM_)
75 #define CALLBACK
76 #else
77 #define CALLBACK __stdcall
78 #endif
79 #endif
80 #ifndef __IDXVAHD_Device_FWD_DEFINED__
81 #define __IDXVAHD_Device_FWD_DEFINED__
82 typedef interface IDXVAHD_Device IDXVAHD_Device;
83 #ifdef __cplusplus
84 interface IDXVAHD_Device;
85 #endif /* __cplusplus */
86 #endif
87 
88 #ifndef __IDXVAHD_VideoProcessor_FWD_DEFINED__
89 #define __IDXVAHD_VideoProcessor_FWD_DEFINED__
90 typedef interface IDXVAHD_VideoProcessor IDXVAHD_VideoProcessor;
91 #ifdef __cplusplus
92 interface IDXVAHD_VideoProcessor;
93 #endif /* __cplusplus */
94 #endif
95 
96 typedef enum _DXVAHD_ALPHA_FILL_MODE {
97     DXVAHD_ALPHA_FILL_MODE_OPAQUE = 0,
98     DXVAHD_ALPHA_FILL_MODE_BACKGROUND = 1,
99     DXVAHD_ALPHA_FILL_MODE_DESTINATION = 2,
100     DXVAHD_ALPHA_FILL_MODE_SOURCE_STREAM = 3
101 } DXVAHD_ALPHA_FILL_MODE;
102 typedef struct _DXVAHD_COLOR_YCbCrA {
103     FLOAT Y;
104     FLOAT Cb;
105     FLOAT Cr;
106     FLOAT A;
107 } DXVAHD_COLOR_YCbCrA;
108 typedef struct _DXVAHD_COLOR_RGBA {
109     FLOAT R;
110     FLOAT G;
111     FLOAT B;
112     FLOAT A;
113 } DXVAHD_COLOR_RGBA;
114 typedef union _DXVAHD_COLOR {
115     DXVAHD_COLOR_RGBA RGB;
116     DXVAHD_COLOR_YCbCrA YCbCr;
117 } DXVAHD_COLOR;
118 typedef struct _DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA {
119     WINBOOL YCbCr;
120     DXVAHD_COLOR BackgroundColor;
121 } DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA;
122 typedef enum _DXVAHD_BLT_STATE {
123     DXVAHD_BLT_STATE_TARGET_RECT = 0,
124     DXVAHD_BLT_STATE_BACKGROUND_COLOR = 1,
125     DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE = 2,
126     DXVAHD_BLT_STATE_ALPHA_FILL = 3,
127     DXVAHD_BLT_STATE_CONSTRICTION = 4,
128     DXVAHD_BLT_STATE_PRIVATE = 1000
129 } DXVAHD_BLT_STATE;
130 typedef enum _DXVAHD_DEVICE_CAPS {
131     DXVAHD_DEVICE_CAPS_LINEAR_SPACE = 0x1,
132     DXVAHD_DEVICE_CAPS_xvYCC = 0x2,
133     DXVAHD_DEVICE_CAPS_RGB_RANGE_CONVERSION = 0x4,
134     DXVAHD_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION = 0x8
135 } DXVAHD_DEVICE_CAPS;
136 typedef enum _DXVAHD_DEVICE_TYPE {
137     DXVAHD_DEVICE_TYPE_HARDWARE = 0,
138     DXVAHD_DEVICE_TYPE_SOFTWARE = 1,
139     DXVAHD_DEVICE_TYPE_REFERENCE = 2,
140     DXVAHD_DEVICE_TYPE_OTHER = 3
141 } DXVAHD_DEVICE_TYPE;
142 typedef enum _DXVAHD_DEVICE_USAGE {
143     DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL = 0,
144     DXVAHD_DEVICE_USAGE_OPTIMAL_SPEED = 1,
145     DXVAHD_DEVICE_USAGE_OPTIMAL_QUALITY = 2
146 } DXVAHD_DEVICE_USAGE;
147 typedef enum _DXVAHD_FEATURE_CAPS {
148     DXVAHD_FEATURE_CAPS_ALPHA_FILL = 0x1,
149     DXVAHD_FEATURE_CAPS_CONSTRICTION = 0x2,
150     DXVAHD_FEATURE_CAPS_LUMA_KEY = 0x4,
151     DXVAHD_FEATURE_CAPS_ALPHA_PALETTE = 0x8
152 } DXVAHD_FEATURE_CAPS;
153 typedef enum _DXVAHD_FILTER {
154     DXVAHD_FILTER_BRIGHTNESS = 0,
155     DXVAHD_FILTER_CONTRAST = 1,
156     DXVAHD_FILTER_HUE = 2,
157     DXVAHD_FILTER_SATURATION = 3,
158     DXVAHD_FILTER_NOISE_REDUCTION = 4,
159     DXVAHD_FILTER_EDGE_ENHANCEMENT = 5,
160     DXVAHD_FILTER_ANAMORPHIC_SCALING = 6
161 } DXVAHD_FILTER;
162 typedef enum _DXVAHD_FILTER_CAPS {
163     DXVAHD_FILTER_CAPS_BRIGHTNESS = 0x1,
164     DXVAHD_FILTER_CAPS_CONTRAST = 0x2,
165     DXVAHD_FILTER_CAPS_HUE = 0x4,
166     DXVAHD_FILTER_CAPS_SATURATION = 0x8,
167     DXVAHD_FILTER_CAPS_NOISE_REDUCTION = 0x10,
168     DXVAHD_FILTER_CAPS_EDGE_ENHANCEMENT = 0x20,
169     DXVAHD_FILTER_CAPS_ANAMORPHIC_SCALING = 0x40
170 } DXVAHD_FILTER_CAPS;
171 typedef enum _DXVAHD_FRAME_FORMAT {
172     DXVAHD_FRAME_FORMAT_PROGRESSIVE = 0,
173     DXVAHD_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1,
174     DXVAHD_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2
175 } DXVAHD_FRAME_FORMAT;
176 typedef enum _DXVAHD_INPUT_FORMAT_CAPS {
177     DXVAHD_INPUT_FORMAT_CAPS_RGB_INTERLACED = 0x1,
178     DXVAHD_INPUT_FORMAT_CAPS_RGB_PROCAMP = 0x2,
179     DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY = 0x4,
180     DXVAHD_INPUT_FORMAT_CAPS_PALETTE_INTERLACED = 0x8
181 } DXVAHD_INPUT_FORMAT_CAPS;
182 typedef enum _DXVAHD_ITELECINE_CAPS {
183     DXVAHD_ITELECINE_CAPS_32 = 0x1,
184     DXVAHD_ITELECINE_CAPS_22 = 0x2,
185     DXVAHD_ITELECINE_CAPS_2224 = 0x4,
186     DXVAHD_ITELECINE_CAPS_2332 = 0x8,
187     DXVAHD_ITELECINE_CAPS_32322 = 0x10,
188     DXVAHD_ITELECINE_CAPS_55 = 0x20,
189     DXVAHD_ITELECINE_CAPS_64 = 0x40,
190     DXVAHD_ITELECINE_CAPS_87 = 0x80,
191     DXVAHD_ITELECINE_CAPS_222222222223 = 0x100,
192     DXVAHD_ITELECINE_CAPS_OTHER = 0x80000000
193 } DXVAHD_ITELECINE_CAPS;
194 typedef enum _DXVAHD_OUTPUT_RATE {
195     DXVAHD_OUTPUT_RATE_NORMAL = 0,
196     DXVAHD_OUTPUT_RATE_HALF = 1,
197     DXVAHD_OUTPUT_RATE_CUSTOM = 2
198 } DXVAHD_OUTPUT_RATE;
199 typedef enum _DXVAHD_PROCESSOR_CAPS {
200     DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BLEND = 0x1,
201     DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BOB = 0x2,
202     DXVAHD_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE = 0x4,
203     DXVAHD_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION = 0x8,
204     DXVAHD_PROCESSOR_CAPS_INVERSE_TELECINE = 0x10,
205     DXVAHD_PROCESSOR_CAPS_FRAME_RATE_CONVERSION = 0x20
206 } DXVAHD_PROCESSOR_CAPS;
207 typedef enum _DXVAHD_STREAM_STATE {
208     DXVAHD_STREAM_STATE_D3DFORMAT = 0,
209     DXVAHD_STREAM_STATE_FRAME_FORMAT = 1,
210     DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE = 2,
211     DXVAHD_STREAM_STATE_OUTPUT_RATE = 3,
212     DXVAHD_STREAM_STATE_SOURCE_RECT = 4,
213     DXVAHD_STREAM_STATE_DESTINATION_RECT = 5,
214     DXVAHD_STREAM_STATE_ALPHA = 6,
215     DXVAHD_STREAM_STATE_PALETTE = 7,
216     DXVAHD_STREAM_STATE_LUMA_KEY = 8,
217     DXVAHD_STREAM_STATE_ASPECT_RATIO = 9,
218     DXVAHD_STREAM_STATE_FILTER_BRIGHTNESS = 100,
219     DXVAHD_STREAM_STATE_FILTER_CONTRAST = 101,
220     DXVAHD_STREAM_STATE_FILTER_HUE = 102,
221     DXVAHD_STREAM_STATE_FILTER_SATURATION = 103,
222     DXVAHD_STREAM_STATE_FILTER_NOISE_REDUCTION = 104,
223     DXVAHD_STREAM_STATE_FILTER_EDGE_ENHANCEMENT = 105,
224     DXVAHD_STREAM_STATE_FILTER_ANAMORPHIC_SCALING = 106,
225     DXVAHD_STREAM_STATE_PRIVATE = 1000
226 } DXVAHD_STREAM_STATE;
227 typedef enum _DXVAHD_SURFACE_TYPE {
228     DXVAHD_SURFACE_TYPE_VIDEO_INPUT = 0,
229     DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE = 1,
230     DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT = 2
231 } DXVAHD_SURFACE_TYPE;
232 typedef struct _DXVAHD_VPDEVCAPS {
233     DXVAHD_DEVICE_TYPE DeviceType;
234     UINT DeviceCaps;
235     UINT FeatureCaps;
236     UINT FilterCaps;
237     UINT InputFormatCaps;
238     D3DPOOL InputPool;
239     UINT OutputFormatCount;
240     UINT InputFormatCount;
241     UINT VideoProcessorCount;
242     UINT MaxInputStreams;
243     UINT MaxStreamStates;
244 } DXVAHD_VPDEVCAPS;
245 typedef struct _DXVAHD_BLT_STATE_ALPHA_FILL_DATA {
246     DXVAHD_ALPHA_FILL_MODE Mode;
247     UINT StreamNumber;
248 } DXVAHD_BLT_STATE_ALPHA_FILL_DATA;
249 typedef struct _DXVAHD_BLT_STATE_CONSTRICTION_DATA {
250     WINBOOL Enable;
251     SIZE Size;
252 } DXVAHD_BLT_STATE_CONSTRICTION_DATA;
253 typedef struct _DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA {
254     UINT Usage : 1;
255     UINT RGB_Range : 1;
256     UINT YCbCr_Matrix : 1;
257     UINT YCbCr_xvYCC : 1;
258 } DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA;
259 typedef struct _DXVAHD_BLT_STATE_PRIVATE_DATA {
260     GUID Guid;
261     UINT DataSize;
262     void *pData;
263 } DXVAHD_BLT_STATE_PRIVATE_DATA;
264 typedef struct _DXVAHD_BLT_STATE_TARGET_RECT_DATA {
265     WINBOOL Enable;
266     RECT TargetRect;
267 } DXVAHD_BLT_STATE_TARGET_RECT_DATA;
268 typedef struct _DXVAHD_RATIONAL {
269     UINT Numerator;
270     UINT Denominator;
271 } DXVAHD_RATIONAL;
272 typedef struct _DXVAHD_CONTENT_DESC {
273     DXVAHD_FRAME_FORMAT InputFrameFormat;
274     DXVAHD_RATIONAL InputFrameRate;
275     UINT InputWidth;
276     UINT InputHeight;
277     DXVAHD_RATIONAL OutputFrameRate;
278     UINT OutputWidth;
279     UINT OutputHeight;
280 } DXVAHD_CONTENT_DESC;
281 typedef struct _DXVAHD_CUSTOM_RATE_DATA {
282     DXVAHD_RATIONAL CustomRate;
283     UINT OutputFrames;
284     WINBOOL InputInterlaced;
285     UINT InputFramesOrFields;
286 } DXVAHD_CUSTOM_RATE_DATA;
287 typedef struct _DXVAHD_FILTER_RANGE_DATA {
288     INT Minimum;
289     INT Maximum;
290     INT Default;
291     FLOAT Multiplier;
292 } DXVAHD_FILTER_RANGE_DATA;
293 typedef struct _DXVAHD_STREAM_DATA {
294     WINBOOL Enable;
295     UINT OutputIndex;
296     UINT InputFrameOrField;
297     UINT PastFrames;
298     UINT FutureFrames;
299     IDirect3DSurface9 **ppPastSurfaces;
300     IDirect3DSurface9 *pInputSurface;
301     IDirect3DSurface9 **ppFutureSurfaces;
302 } DXVAHD_STREAM_DATA;
303 typedef struct _DXVAHD_VPCAPS {
304     GUID VPGuid;
305     UINT PastFrames;
306     UINT FutureFrames;
307     UINT ProcessorCaps;
308     UINT ITelecineCaps;
309     UINT CustomRateCount;
310 } DXVAHD_VPCAPS;
311 typedef struct _DXVAHD_STREAM_STATE_ALPHA_DATA {
312     WINBOOL Enable;
313     FLOAT Alpha;
314 } DXVAHD_STREAM_STATE_ALPHA_DATA;
315 typedef struct _DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA {
316     WINBOOL Enable;
317     DXVAHD_RATIONAL SourceAspectRatio;
318     DXVAHD_RATIONAL DestinationAspectRatio;
319 } DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA;
320 typedef struct _DXVAHD_STREAM_STATE_D3DFORMAT_DATA {
321     D3DFORMAT Format;
322 } DXVAHD_STREAM_STATE_D3DFORMAT_DATA;
323 typedef struct _DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA {
324     WINBOOL Enable;
325     RECT DestinationRect;
326 } DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA;
327 typedef struct _DXVAHD_STREAM_STATE_FILTER_DATA {
328     WINBOOL Enable;
329     INT Level;
330 } DXVAHD_STREAM_STATE_FILTER_DATA;
331 typedef struct _DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA {
332     DXVAHD_FRAME_FORMAT FrameFormat;
333 } DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA;
334 typedef struct _DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA {
335     UINT Type : 1;
336     UINT RGB_Range : 1;
337     UINT YCbCr_Matrix : 1;
338     UINT YCbCr_xvYCC : 1;
339 } DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA;
340 typedef struct _DXVAHD_STREAM_STATE_LUMA_KEY_DATA {
341     WINBOOL Enable;
342     FLOAT Lower;
343     FLOAT Upper;
344 } DXVAHD_STREAM_STATE_LUMA_KEY_DATA;
345 typedef struct _DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA {
346     WINBOOL RepeatFrame;
347     DXVAHD_OUTPUT_RATE OutputRate;
348     DXVAHD_RATIONAL CustomRate;
349 } DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA;
350 typedef struct _DXVAHD_STREAM_STATE_SOURCE_RECT_DATA {
351     WINBOOL Enable;
352     RECT SourceRect;
353 } DXVAHD_STREAM_STATE_SOURCE_RECT_DATA;
354 typedef struct _DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA {
355     WINBOOL Enable;
356     UINT ITelecineFlags;
357     UINT Frames;
358     UINT InputField;
359 } DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA;
360 typedef struct _DXVAHD_STREAM_STATE_PRIVATE_DATA {
361     GUID Guid;
362     UINT DataSize;
363     void *pData;
364 } DXVAHD_STREAM_STATE_PRIVATE_DATA;
365 typedef struct _DXVAHD_STREAM_STATE_PALETTE_DATA {
366     UINT Count;
367     D3DCOLOR *pEntries;
368 } DXVAHD_STREAM_STATE_PALETTE_DATA;
369 typedef HRESULT ( CALLBACK *PDXVAHDSW_CreateDevice )(IDirect3DDevice9Ex *pD3DDevice,HANDLE *phDevice);
370 typedef HRESULT ( CALLBACK *PDXVAHDSW_ProposeVideoPrivateFormat )(HANDLE hDevice,D3DFORMAT *pFormat);
371 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorDeviceCaps )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,DXVAHD_VPDEVCAPS *pCaps);
372 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorOutputFormats )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,UINT Count,D3DFORMAT *pFormats);
373 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorInputFormats )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,UINT Count,D3DFORMAT *pFormats);
374 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorCaps )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,UINT Count,DXVAHD_VPCAPS *pCaps);
375 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorCustomRates )(HANDLE hDevice,const GUID *pVPGuid,UINT Count,DXVAHD_CUSTOM_RATE_DATA *pRates);
376 typedef HRESULT ( CALLBACK *PDXVAHDSW_SetVideoProcessBltState )(HANDLE hVideoProcessor,DXVAHD_BLT_STATE State,UINT DataSize,const void *pData);
377 typedef HRESULT ( CALLBACK *PDXVAHDSW_CreateVideoProcessor )(HANDLE hDevice,const GUID *pVPGuid,HANDLE *phVideoProcessor);
378 typedef HRESULT ( CALLBACK *PDXVAHDSW_DestroyDevice )(HANDLE hDevice);
379 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorFilterRange )(HANDLE hDevice,DXVAHD_FILTER Filter,DXVAHD_FILTER_RANGE_DATA *pRange);
380 typedef HRESULT ( CALLBACK *PDXVAHDSW_DestroyVideoProcessor )(HANDLE hVideoProcessor);
381 typedef HRESULT ( CALLBACK *PDXVAHDSW_VideoProcessBltHD )(HANDLE hVideoProcessor,IDirect3DSurface9 *pOutputSurface,UINT OutputFrame,UINT StreamCount,const DXVAHD_STREAM_DATA *pStreams);
382 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessStreamStatePrivate )(HANDLE hVideoProcessor,UINT StreamNumber,DXVAHD_STREAM_STATE_PRIVATE_DATA *pData);
383 typedef HRESULT ( CALLBACK *PDXVAHDSW_SetVideoProcessStreamState )(HANDLE hVideoProcessor,UINT StreamNumber,DXVAHD_STREAM_STATE State,UINT DataSize,const void *pData);
384 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessBltStatePrivate )(HANDLE hVideoProcessor,DXVAHD_BLT_STATE_PRIVATE_DATA *pData);
385 typedef HRESULT ( CALLBACK *PDXVAHDSW_Plugin )(UINT Size,void *pCallbacks);
386 
387 typedef struct _DXVAHDSW_CALLBACKS {
388   PDXVAHDSW_CreateDevice                      CreateDevice;
389   PDXVAHDSW_ProposeVideoPrivateFormat         ProposeVideoPrivateFormat;
390   PDXVAHDSW_GetVideoProcessorDeviceCaps       GetVideoProcessorDeviceCaps;
391   PDXVAHDSW_GetVideoProcessorOutputFormats    GetVideoProcessorOutputFormats;
392   PDXVAHDSW_GetVideoProcessorInputFormats     GetVideoProcessorInputFormats;
393   PDXVAHDSW_GetVideoProcessorCaps             GetVideoProcessorCaps;
394   PDXVAHDSW_GetVideoProcessorCustomRates      GetVideoProcessorCustomRates;
395   PDXVAHDSW_GetVideoProcessorFilterRange      GetVideoProcessorFilterRange;
396   PDXVAHDSW_DestroyDevice                     DestroyDevice;
397   PDXVAHDSW_CreateVideoProcessor              CreateVideoProcessor;
398   PDXVAHDSW_SetVideoProcessBltState           SetVideoProcessBltState;
399   PDXVAHDSW_GetVideoProcessBltStatePrivate    GetVideoProcessBltStatePrivate;
400   PDXVAHDSW_SetVideoProcessStreamState        SetVideoProcessStreamState;
401   PDXVAHDSW_GetVideoProcessStreamStatePrivate GetVideoProcessStreamStatePrivate;
402   PDXVAHDSW_VideoProcessBltHD                 VideoProcessBltHD;
403   PDXVAHDSW_DestroyVideoProcessor             DestroyVideoProcessor;
404 } DXVAHDSW_CALLBACKS;
405 
406 HRESULT DXVAHD_CreateDevice(IDirect3DDevice9Ex *pD3DDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,PDXVAHDSW_Plugin pPlugin,IDXVAHD_Device **ppDevice);
407 
408 #ifdef __GNUC__
409 #warning COM interfaces layout in this header has not been verified.
410 #warning COM interfaces with incorrect layout may not work at all.
__MINGW_BROKEN_INTERFACE(INTERFACE)411 __MINGW_BROKEN_INTERFACE(INTERFACE)
412 #endif
413 /*****************************************************************************
414  * IDXVAHD_Device interface
415  */
416 #ifndef __IDXVAHD_Device_INTERFACE_DEFINED__
417 #define __IDXVAHD_Device_INTERFACE_DEFINED__
418 
419 #if defined(__cplusplus) && !defined(CINTERFACE)
420 interface IDXVAHD_Device : public IUnknown
421 {
422     virtual HRESULT STDMETHODCALLTYPE CreateVideoSurface(
423         UINT Width,
424         UINT Height,
425         D3DFORMAT Format,
426         D3DPOOL Pool,
427         DWORD Usage,
428         DXVAHD_SURFACE_TYPE Type,
429         UINT NumSurfaces,
430         IDirect3DSurface9 **ppSurfaces,
431         HANDLE *pSharedHandle) = 0;
432 
433     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorDeviceCaps(
434         DXVAHD_VPDEVCAPS *pCaps) = 0;
435 
436     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorOutputFormats(
437         UINT Count,
438         D3DFORMAT *pFormats) = 0;
439 
440     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorInputFormats(
441         UINT Count,
442         D3DFORMAT *pFormats) = 0;
443 
444     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCaps(
445         UINT Count,
446         DXVAHD_VPCAPS *pCaps) = 0;
447 
448     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCustomRates(
449         const GUID *pVPGuid,
450         UINT Count,
451         DXVAHD_CUSTOM_RATE_DATA *pRates) = 0;
452 
453     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorFilterRange(
454         DXVAHD_FILTER Filter,
455         DXVAHD_FILTER_RANGE_DATA *pRange) = 0;
456 
457     virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
458         const GUID *pVPGuid,
459         IDXVAHD_VideoProcessor **ppVideoProcessor) = 0;
460 
461 };
462 #else
463 typedef struct IDXVAHD_DeviceVtbl {
464     BEGIN_INTERFACE
465 
466     /*** IUnknown methods ***/
467     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
468         IDXVAHD_Device *This,
469         REFIID riid,
470         void **ppvObject);
471 
472     ULONG (STDMETHODCALLTYPE *AddRef)(
473         IDXVAHD_Device *This);
474 
475     ULONG (STDMETHODCALLTYPE *Release)(
476         IDXVAHD_Device *This);
477 
478     /*** IDXVAHD_Device methods ***/
479     HRESULT (STDMETHODCALLTYPE *CreateVideoSurface)(
480         IDXVAHD_Device *This,
481         UINT Width,
482         UINT Height,
483         D3DFORMAT Format,
484         D3DPOOL Pool,
485         DWORD Usage,
486         DXVAHD_SURFACE_TYPE Type,
487         UINT NumSurfaces,
488         IDirect3DSurface9 **ppSurfaces,
489         HANDLE *pSharedHandle);
490 
491     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorDeviceCaps)(
492         IDXVAHD_Device *This,
493         DXVAHD_VPDEVCAPS *pCaps);
494 
495     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorOutputFormats)(
496         IDXVAHD_Device *This,
497         UINT Count,
498         D3DFORMAT *pFormats);
499 
500     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorInputFormats)(
501         IDXVAHD_Device *This,
502         UINT Count,
503         D3DFORMAT *pFormats);
504 
505     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorCaps)(
506         IDXVAHD_Device *This,
507         UINT Count,
508         DXVAHD_VPCAPS *pCaps);
509 
510     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorCustomRates)(
511         IDXVAHD_Device *This,
512         const GUID *pVPGuid,
513         UINT Count,
514         DXVAHD_CUSTOM_RATE_DATA *pRates);
515 
516     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorFilterRange)(
517         IDXVAHD_Device *This,
518         DXVAHD_FILTER Filter,
519         DXVAHD_FILTER_RANGE_DATA *pRange);
520 
521     HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
522         IDXVAHD_Device *This,
523         const GUID *pVPGuid,
524         IDXVAHD_VideoProcessor **ppVideoProcessor);
525 
526     END_INTERFACE
527 } IDXVAHD_DeviceVtbl;
528 
529 interface IDXVAHD_Device {
530     CONST_VTBL IDXVAHD_DeviceVtbl* lpVtbl;
531 };
532 
533 #ifdef COBJMACROS
534 #ifndef WIDL_C_INLINE_WRAPPERS
535 /*** IUnknown methods ***/
536 #define IDXVAHD_Device_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
537 #define IDXVAHD_Device_AddRef(This) (This)->lpVtbl->AddRef(This)
538 #define IDXVAHD_Device_Release(This) (This)->lpVtbl->Release(This)
539 /*** IDXVAHD_Device methods ***/
540 #define IDXVAHD_Device_CreateVideoSurface(This,Width,Height,Format,Pool,Usage,Type,NumSurfaces,ppSurfaces,pSharedHandle) (This)->lpVtbl->CreateVideoSurface(This,Width,Height,Format,Pool,Usage,Type,NumSurfaces,ppSurfaces,pSharedHandle)
541 #define IDXVAHD_Device_GetVideoProcessorDeviceCaps(This,pCaps) (This)->lpVtbl->GetVideoProcessorDeviceCaps(This,pCaps)
542 #define IDXVAHD_Device_GetVideoProcessorOutputFormats(This,Count,pFormats) (This)->lpVtbl->GetVideoProcessorOutputFormats(This,Count,pFormats)
543 #define IDXVAHD_Device_GetVideoProcessorInputFormats(This,Count,pFormats) (This)->lpVtbl->GetVideoProcessorInputFormats(This,Count,pFormats)
544 #define IDXVAHD_Device_GetVideoProcessorCaps(This,Count,pCaps) (This)->lpVtbl->GetVideoProcessorCaps(This,Count,pCaps)
545 #define IDXVAHD_Device_GetVideoProcessorCustomRates(This,pVPGuid,Count,pRates) (This)->lpVtbl->GetVideoProcessorCustomRates(This,pVPGuid,Count,pRates)
546 #define IDXVAHD_Device_GetVideoProcessorFilterRange(This,Filter,pRange) (This)->lpVtbl->GetVideoProcessorFilterRange(This,Filter,pRange)
547 #define IDXVAHD_Device_CreateVideoProcessor(This,pVPGuid,ppVideoProcessor) (This)->lpVtbl->CreateVideoProcessor(This,pVPGuid,ppVideoProcessor)
548 #else
549 /*** IUnknown methods ***/
550 static FORCEINLINE HRESULT IDXVAHD_Device_QueryInterface(IDXVAHD_Device* This,REFIID riid,void **ppvObject) {
551     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
552 }
553 static FORCEINLINE ULONG IDXVAHD_Device_AddRef(IDXVAHD_Device* This) {
554     return This->lpVtbl->AddRef(This);
555 }
556 static FORCEINLINE ULONG IDXVAHD_Device_Release(IDXVAHD_Device* This) {
557     return This->lpVtbl->Release(This);
558 }
559 /*** IDXVAHD_Device methods ***/
560 static FORCEINLINE HRESULT IDXVAHD_Device_CreateVideoSurface(IDXVAHD_Device* This,UINT Width,UINT Height,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DXVAHD_SURFACE_TYPE Type,UINT NumSurfaces,IDirect3DSurface9 **ppSurfaces,HANDLE *pSharedHandle) {
561     return This->lpVtbl->CreateVideoSurface(This,Width,Height,Format,Pool,Usage,Type,NumSurfaces,ppSurfaces,pSharedHandle);
562 }
563 static FORCEINLINE HRESULT IDXVAHD_Device_GetVideoProcessorDeviceCaps(IDXVAHD_Device* This,DXVAHD_VPDEVCAPS *pCaps) {
564     return This->lpVtbl->GetVideoProcessorDeviceCaps(This,pCaps);
565 }
566 static FORCEINLINE HRESULT IDXVAHD_Device_GetVideoProcessorOutputFormats(IDXVAHD_Device* This,UINT Count,D3DFORMAT *pFormats) {
567     return This->lpVtbl->GetVideoProcessorOutputFormats(This,Count,pFormats);
568 }
569 static FORCEINLINE HRESULT IDXVAHD_Device_GetVideoProcessorInputFormats(IDXVAHD_Device* This,UINT Count,D3DFORMAT *pFormats) {
570     return This->lpVtbl->GetVideoProcessorInputFormats(This,Count,pFormats);
571 }
572 static FORCEINLINE HRESULT IDXVAHD_Device_GetVideoProcessorCaps(IDXVAHD_Device* This,UINT Count,DXVAHD_VPCAPS *pCaps) {
573     return This->lpVtbl->GetVideoProcessorCaps(This,Count,pCaps);
574 }
575 static FORCEINLINE HRESULT IDXVAHD_Device_GetVideoProcessorCustomRates(IDXVAHD_Device* This,const GUID *pVPGuid,UINT Count,DXVAHD_CUSTOM_RATE_DATA *pRates) {
576     return This->lpVtbl->GetVideoProcessorCustomRates(This,pVPGuid,Count,pRates);
577 }
578 static FORCEINLINE HRESULT IDXVAHD_Device_GetVideoProcessorFilterRange(IDXVAHD_Device* This,DXVAHD_FILTER Filter,DXVAHD_FILTER_RANGE_DATA *pRange) {
579     return This->lpVtbl->GetVideoProcessorFilterRange(This,Filter,pRange);
580 }
581 static FORCEINLINE HRESULT IDXVAHD_Device_CreateVideoProcessor(IDXVAHD_Device* This,const GUID *pVPGuid,IDXVAHD_VideoProcessor **ppVideoProcessor) {
582     return This->lpVtbl->CreateVideoProcessor(This,pVPGuid,ppVideoProcessor);
583 }
584 #endif
585 #endif
586 
587 #endif
588 
589 
590 #endif  /* __IDXVAHD_Device_INTERFACE_DEFINED__ */
591 
592 #ifdef __GNUC__
593 #warning COM interfaces layout in this header has not been verified.
594 #warning COM interfaces with incorrect layout may not work at all.
__MINGW_BROKEN_INTERFACE(INTERFACE)595 __MINGW_BROKEN_INTERFACE(INTERFACE)
596 #endif
597 /*****************************************************************************
598  * IDXVAHD_VideoProcessor interface
599  */
600 #ifndef __IDXVAHD_VideoProcessor_INTERFACE_DEFINED__
601 #define __IDXVAHD_VideoProcessor_INTERFACE_DEFINED__
602 
603 #if defined(__cplusplus) && !defined(CINTERFACE)
604 interface IDXVAHD_VideoProcessor : public IUnknown
605 {
606     virtual HRESULT STDMETHODCALLTYPE SetVideoProcessBltState(
607         DXVAHD_BLT_STATE State,
608         UINT DataSize,
609         const void *pData) = 0;
610 
611     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessBltState(
612         DXVAHD_BLT_STATE State,
613         UINT DataSize,
614         void *pData) = 0;
615 
616     virtual HRESULT STDMETHODCALLTYPE SetVideoProcessStreamState(
617         UINT StreamNumber,
618         DXVAHD_STREAM_STATE State,
619         UINT DataSize,
620         const void *pData) = 0;
621 
622     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessStreamState(
623         UINT StreamNumber,
624         DXVAHD_STREAM_STATE State,
625         UINT DataSize,
626         void *pData) = 0;
627 
628     virtual HRESULT STDMETHODCALLTYPE VideoProcessBltHD(
629         IDirect3DSurface9 *pOutputSurface,
630         UINT OutputFrame,
631         UINT StreamCount,
632         const DXVAHD_STREAM_DATA *pStreams) = 0;
633 
634 };
635 #else
636 typedef struct IDXVAHD_VideoProcessorVtbl {
637     BEGIN_INTERFACE
638 
639     /*** IUnknown methods ***/
640     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
641         IDXVAHD_VideoProcessor *This,
642         REFIID riid,
643         void **ppvObject);
644 
645     ULONG (STDMETHODCALLTYPE *AddRef)(
646         IDXVAHD_VideoProcessor *This);
647 
648     ULONG (STDMETHODCALLTYPE *Release)(
649         IDXVAHD_VideoProcessor *This);
650 
651     /*** IDXVAHD_VideoProcessor methods ***/
652     HRESULT (STDMETHODCALLTYPE *SetVideoProcessBltState)(
653         IDXVAHD_VideoProcessor *This,
654         DXVAHD_BLT_STATE State,
655         UINT DataSize,
656         const void *pData);
657 
658     HRESULT (STDMETHODCALLTYPE *GetVideoProcessBltState)(
659         IDXVAHD_VideoProcessor *This,
660         DXVAHD_BLT_STATE State,
661         UINT DataSize,
662         void *pData);
663 
664     HRESULT (STDMETHODCALLTYPE *SetVideoProcessStreamState)(
665         IDXVAHD_VideoProcessor *This,
666         UINT StreamNumber,
667         DXVAHD_STREAM_STATE State,
668         UINT DataSize,
669         const void *pData);
670 
671     HRESULT (STDMETHODCALLTYPE *GetVideoProcessStreamState)(
672         IDXVAHD_VideoProcessor *This,
673         UINT StreamNumber,
674         DXVAHD_STREAM_STATE State,
675         UINT DataSize,
676         void *pData);
677 
678     HRESULT (STDMETHODCALLTYPE *VideoProcessBltHD)(
679         IDXVAHD_VideoProcessor *This,
680         IDirect3DSurface9 *pOutputSurface,
681         UINT OutputFrame,
682         UINT StreamCount,
683         const DXVAHD_STREAM_DATA *pStreams);
684 
685     END_INTERFACE
686 } IDXVAHD_VideoProcessorVtbl;
687 
688 interface IDXVAHD_VideoProcessor {
689     CONST_VTBL IDXVAHD_VideoProcessorVtbl* lpVtbl;
690 };
691 
692 #ifdef COBJMACROS
693 #ifndef WIDL_C_INLINE_WRAPPERS
694 /*** IUnknown methods ***/
695 #define IDXVAHD_VideoProcessor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
696 #define IDXVAHD_VideoProcessor_AddRef(This) (This)->lpVtbl->AddRef(This)
697 #define IDXVAHD_VideoProcessor_Release(This) (This)->lpVtbl->Release(This)
698 /*** IDXVAHD_VideoProcessor methods ***/
699 #define IDXVAHD_VideoProcessor_SetVideoProcessBltState(This,State,DataSize,pData) (This)->lpVtbl->SetVideoProcessBltState(This,State,DataSize,pData)
700 #define IDXVAHD_VideoProcessor_GetVideoProcessBltState(This,State,DataSize,pData) (This)->lpVtbl->GetVideoProcessBltState(This,State,DataSize,pData)
701 #define IDXVAHD_VideoProcessor_SetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData) (This)->lpVtbl->SetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData)
702 #define IDXVAHD_VideoProcessor_GetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData) (This)->lpVtbl->GetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData)
703 #define IDXVAHD_VideoProcessor_VideoProcessBltHD(This,pOutputSurface,OutputFrame,StreamCount,pStreams) (This)->lpVtbl->VideoProcessBltHD(This,pOutputSurface,OutputFrame,StreamCount,pStreams)
704 #else
705 /*** IUnknown methods ***/
706 static FORCEINLINE HRESULT IDXVAHD_VideoProcessor_QueryInterface(IDXVAHD_VideoProcessor* This,REFIID riid,void **ppvObject) {
707     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
708 }
709 static FORCEINLINE ULONG IDXVAHD_VideoProcessor_AddRef(IDXVAHD_VideoProcessor* This) {
710     return This->lpVtbl->AddRef(This);
711 }
712 static FORCEINLINE ULONG IDXVAHD_VideoProcessor_Release(IDXVAHD_VideoProcessor* This) {
713     return This->lpVtbl->Release(This);
714 }
715 /*** IDXVAHD_VideoProcessor methods ***/
716 static FORCEINLINE HRESULT IDXVAHD_VideoProcessor_SetVideoProcessBltState(IDXVAHD_VideoProcessor* This,DXVAHD_BLT_STATE State,UINT DataSize,const void *pData) {
717     return This->lpVtbl->SetVideoProcessBltState(This,State,DataSize,pData);
718 }
719 static FORCEINLINE HRESULT IDXVAHD_VideoProcessor_GetVideoProcessBltState(IDXVAHD_VideoProcessor* This,DXVAHD_BLT_STATE State,UINT DataSize,void *pData) {
720     return This->lpVtbl->GetVideoProcessBltState(This,State,DataSize,pData);
721 }
722 static FORCEINLINE HRESULT IDXVAHD_VideoProcessor_SetVideoProcessStreamState(IDXVAHD_VideoProcessor* This,UINT StreamNumber,DXVAHD_STREAM_STATE State,UINT DataSize,const void *pData) {
723     return This->lpVtbl->SetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData);
724 }
725 static FORCEINLINE HRESULT IDXVAHD_VideoProcessor_GetVideoProcessStreamState(IDXVAHD_VideoProcessor* This,UINT StreamNumber,DXVAHD_STREAM_STATE State,UINT DataSize,void *pData) {
726     return This->lpVtbl->GetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData);
727 }
728 static FORCEINLINE HRESULT IDXVAHD_VideoProcessor_VideoProcessBltHD(IDXVAHD_VideoProcessor* This,IDirect3DSurface9 *pOutputSurface,UINT OutputFrame,UINT StreamCount,const DXVAHD_STREAM_DATA *pStreams) {
729     return This->lpVtbl->VideoProcessBltHD(This,pOutputSurface,OutputFrame,StreamCount,pStreams);
730 }
731 #endif
732 #endif
733 
734 #endif
735 
736 
737 #endif  /* __IDXVAHD_VideoProcessor_INTERFACE_DEFINED__ */
738 
739 #endif /*(_WIN32_WINNT >= 0x0601)*/
740 #endif /*WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)*/
741 /* Begin additional prototypes for all interfaces */
742 
743 
744 /* End additional prototypes */
745 
746 #ifdef __cplusplus
747 }
748 #endif
749 
750 #endif /* __dxvahd_h__ */
751