1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6 #ifndef _INC_DXAVHD
7 #define _INC_DXAVHD
8 #if (_WIN32_WINNT >= 0x0601)
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 #ifndef CALLBACK
14 #if defined(_ARM_)
15 #define CALLBACK
16 #else
17 #define CALLBACK __stdcall
18 #endif
19 #endif
20
21 typedef struct IDXVAHD_Device IDXVAHD_Device;
22 typedef struct IDXVAHD_VideoProcessor IDXVAHD_VideoProcessor;
23
24 typedef enum _DXVAHD_ALPHA_FILL_MODE {
25 DXVAHD_ALPHA_FILL_MODE_OPAQUE = 0,
26 DXVAHD_ALPHA_FILL_MODE_BACKGROUND = 1,
27 DXVAHD_ALPHA_FILL_MODE_DESTINATION = 2,
28 DXVAHD_ALPHA_FILL_MODE_SOURCE_STREAM = 3
29 } DXVAHD_ALPHA_FILL_MODE;
30
31 typedef struct _DXVAHD_COLOR_YCbCrA {
32 FLOAT Y;
33 FLOAT Cb;
34 FLOAT Cr;
35 FLOAT A;
36 } DXVAHD_COLOR_YCbCrA;
37
38 typedef struct _DXVAHD_COLOR_RGBA {
39 FLOAT R;
40 FLOAT G;
41 FLOAT B;
42 FLOAT A;
43 } DXVAHD_COLOR_RGBA;
44
45 typedef union _DXVAHD_COLOR {
46 DXVAHD_COLOR_RGBA RGB;
47 DXVAHD_COLOR_YCbCrA YCbCr;
48 } DXVAHD_COLOR;
49
50 typedef struct _DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA {
51 WINBOOL YCbCr;
52 DXVAHD_COLOR BackgroundColor;
53 } DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA;
54
55 typedef enum _DXVAHD_BLT_STATE {
56 DXVAHD_BLT_STATE_TARGET_RECT = 0,
57 DXVAHD_BLT_STATE_BACKGROUND_COLOR = 1,
58 DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE = 2,
59 DXVAHD_BLT_STATE_ALPHA_FILL = 3,
60 DXVAHD_BLT_STATE_CONSTRICTION = 4,
61 DXVAHD_BLT_STATE_PRIVATE = 1000
62 } DXVAHD_BLT_STATE;
63
64 typedef enum _DXVAHD_DEVICE_CAPS {
65 DXVAHD_DEVICE_CAPS_LINEAR_SPACE = 0x1,
66 DXVAHD_DEVICE_CAPS_xvYCC = 0x2,
67 DXVAHD_DEVICE_CAPS_RGB_RANGE_CONVERSION = 0x4,
68 DXVAHD_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION = 0x8
69 } DXVAHD_DEVICE_CAPS;
70
71 typedef enum _DXVAHD_DEVICE_TYPE {
72 DXVAHD_DEVICE_TYPE_HARDWARE = 0,
73 DXVAHD_DEVICE_TYPE_SOFTWARE = 1,
74 DXVAHD_DEVICE_TYPE_REFERENCE = 2,
75 DXVAHD_DEVICE_TYPE_OTHER = 3
76 } DXVAHD_DEVICE_TYPE;
77
78 typedef enum _DXVAHD_DEVICE_USAGE {
79 DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL = 0,
80 DXVAHD_DEVICE_USAGE_OPTIMAL_SPEED = 1,
81 DXVAHD_DEVICE_USAGE_OPTIMAL_QUALITY = 2
82 } DXVAHD_DEVICE_USAGE;
83
84
85 typedef enum _DXVAHD_FEATURE_CAPS {
86 DXVAHD_FEATURE_CAPS_ALPHA_FILL = 0x1,
87 DXVAHD_FEATURE_CAPS_CONSTRICTION = 0x2,
88 DXVAHD_FEATURE_CAPS_LUMA_KEY = 0x4,
89 DXVAHD_FEATURE_CAPS_ALPHA_PALETTE = 0x8
90 } DXVAHD_FEATURE_CAPS;
91
92 typedef enum _DXVAHD_FILTER {
93 DXVAHD_FILTER_BRIGHTNESS = 0,
94 DXVAHD_FILTER_CONTRAST = 1,
95 DXVAHD_FILTER_HUE = 2,
96 DXVAHD_FILTER_SATURATION = 3,
97 DXVAHD_FILTER_NOISE_REDUCTION = 4,
98 DXVAHD_FILTER_EDGE_ENHANCEMENT = 5,
99 DXVAHD_FILTER_ANAMORPHIC_SCALING = 6
100 } DXVAHD_FILTER;
101
102 typedef enum _DXVAHD_FILTER_CAPS {
103 DXVAHD_FILTER_CAPS_BRIGHTNESS = 0x1,
104 DXVAHD_FILTER_CAPS_CONTRAST = 0x2,
105 DXVAHD_FILTER_CAPS_HUE = 0x4,
106 DXVAHD_FILTER_CAPS_SATURATION = 0x8,
107 DXVAHD_FILTER_CAPS_NOISE_REDUCTION = 0x10,
108 DXVAHD_FILTER_CAPS_EDGE_ENHANCEMENT = 0x20,
109 DXVAHD_FILTER_CAPS_ANAMORPHIC_SCALING = 0x40
110 } DXVAHD_FILTER_CAPS;
111
112 typedef enum _DXVAHD_FRAME_FORMAT {
113 DXVAHD_FRAME_FORMAT_PROGRESSIVE = 0,
114 DXVAHD_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1,
115 DXVAHD_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2
116 } DXVAHD_FRAME_FORMAT;
117
118 typedef enum _DXVAHD_INPUT_FORMAT_CAPS {
119 DXVAHD_INPUT_FORMAT_CAPS_RGB_INTERLACED = 0x1,
120 DXVAHD_INPUT_FORMAT_CAPS_RGB_PROCAMP = 0x2,
121 DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY = 0x4,
122 DXVAHD_INPUT_FORMAT_CAPS_PALETTE_INTERLACED = 0x8
123 } DXVAHD_INPUT_FORMAT_CAPS;
124
125 typedef enum _DXVAHD_ITELECINE_CAPS {
126 DXVAHD_ITELECINE_CAPS_32 = 0x1,
127 DXVAHD_ITELECINE_CAPS_22 = 0x2,
128 DXVAHD_ITELECINE_CAPS_2224 = 0x4,
129 DXVAHD_ITELECINE_CAPS_2332 = 0x8,
130 DXVAHD_ITELECINE_CAPS_32322 = 0x10,
131 DXVAHD_ITELECINE_CAPS_55 = 0x20,
132 DXVAHD_ITELECINE_CAPS_64 = 0x40,
133 DXVAHD_ITELECINE_CAPS_87 = 0x80,
134 DXVAHD_ITELECINE_CAPS_222222222223 = 0x100,
135 DXVAHD_ITELECINE_CAPS_OTHER = 0x80000000
136 } DXVAHD_ITELECINE_CAPS;
137
138 typedef enum _DXVAHD_OUTPUT_RATE {
139 DXVAHD_OUTPUT_RATE_NORMAL = 0,
140 DXVAHD_OUTPUT_RATE_HALF = 1,
141 DXVAHD_OUTPUT_RATE_CUSTOM = 2
142 } DXVAHD_OUTPUT_RATE;
143
144 typedef enum _DXVAHD_PROCESSOR_CAPS {
145 DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BLEND = 0x1,
146 DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BOB = 0x2,
147 DXVAHD_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE = 0x4,
148 DXVAHD_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION = 0x8,
149 DXVAHD_PROCESSOR_CAPS_INVERSE_TELECINE = 0x10,
150 DXVAHD_PROCESSOR_CAPS_FRAME_RATE_CONVERSION = 0x20
151 } DXVAHD_PROCESSOR_CAPS;
152
153 typedef enum _DXVAHD_STREAM_STATE {
154 DXVAHD_STREAM_STATE_D3DFORMAT = 0,
155 DXVAHD_STREAM_STATE_FRAME_FORMAT = 1,
156 DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE = 2,
157 DXVAHD_STREAM_STATE_OUTPUT_RATE = 3,
158 DXVAHD_STREAM_STATE_SOURCE_RECT = 4,
159 DXVAHD_STREAM_STATE_DESTINATION_RECT = 5,
160 DXVAHD_STREAM_STATE_ALPHA = 6,
161 DXVAHD_STREAM_STATE_PALETTE = 7,
162 DXVAHD_STREAM_STATE_LUMA_KEY = 8,
163 DXVAHD_STREAM_STATE_ASPECT_RATIO = 9,
164 DXVAHD_STREAM_STATE_FILTER_BRIGHTNESS = 100,
165 DXVAHD_STREAM_STATE_FILTER_CONTRAST = 101,
166 DXVAHD_STREAM_STATE_FILTER_HUE = 102,
167 DXVAHD_STREAM_STATE_FILTER_SATURATION = 103,
168 DXVAHD_STREAM_STATE_FILTER_NOISE_REDUCTION = 104,
169 DXVAHD_STREAM_STATE_FILTER_EDGE_ENHANCEMENT = 105,
170 DXVAHD_STREAM_STATE_FILTER_ANAMORPHIC_SCALING = 106,
171 DXVAHD_STREAM_STATE_PRIVATE = 1000
172 } DXVAHD_STREAM_STATE;
173
174 typedef enum _DXVAHD_SURFACE_TYPE {
175 DXVAHD_SURFACE_TYPE_VIDEO_INPUT = 0,
176 DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE = 1,
177 DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT = 2
178 } DXVAHD_SURFACE_TYPE;
179
180 typedef struct _DXVAHD_VPDEVCAPS {
181 DXVAHD_DEVICE_TYPE DeviceType;
182 UINT DeviceCaps;
183 UINT FeatureCaps;
184 UINT FilterCaps;
185 UINT InputFormatCaps;
186 D3DPOOL InputPool;
187 UINT OutputFormatCount;
188 UINT InputFormatCount;
189 UINT VideoProcessorCount;
190 UINT MaxInputStreams;
191 UINT MaxStreamStates;
192 } DXVAHD_VPDEVCAPS;
193
194 typedef struct _DXVAHD_BLT_STATE_ALPHA_FILL_DATA {
195 DXVAHD_ALPHA_FILL_MODE Mode;
196 UINT StreamNumber;
197 } DXVAHD_BLT_STATE_ALPHA_FILL_DATA;
198
199 typedef struct _DXVAHD_BLT_STATE_CONSTRICTION_DATA {
200 WINBOOL Enable;
201 SIZE Size;
202 } DXVAHD_BLT_STATE_CONSTRICTION_DATA;
203
204 typedef struct _DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA {
205 UINT Usage :1;
206 UINT RGB_Range :1;
207 UINT YCbCr_Matrix :1;
208 UINT YCbCr_xvYCC :1;
209 } DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA;
210
211 typedef struct _DXVAHD_BLT_STATE_PRIVATE_DATA {
212 GUID Guid;
213 UINT DataSize;
214 void *pData;
215 } DXVAHD_BLT_STATE_PRIVATE_DATA;
216
217 typedef struct _DXVAHD_BLT_STATE_TARGET_RECT_DATA {
218 WINBOOL Enable;
219 RECT TargetRect;
220 } DXVAHD_BLT_STATE_TARGET_RECT_DATA;
221
222 typedef struct _DXVAHD_RATIONAL {
223 UINT Numerator;
224 UINT Denominator;
225 } DXVAHD_RATIONAL;
226
227 typedef struct _DXVAHD_CONTENT_DESC {
228 DXVAHD_FRAME_FORMAT InputFrameFormat;
229 DXVAHD_RATIONAL InputFrameRate;
230 UINT InputWidth;
231 UINT InputHeight;
232 DXVAHD_RATIONAL OutputFrameRate;
233 UINT OutputWidth;
234 UINT OutputHeight;
235 } DXVAHD_CONTENT_DESC;
236
237 typedef struct _DXVAHD_CUSTOM_RATE_DATA {
238 DXVAHD_RATIONAL CustomRate;
239 UINT OutputFrames;
240 WINBOOL InputInterlaced;
241 UINT InputFramesOrFields;
242 } DXVAHD_CUSTOM_RATE_DATA;
243
244 typedef struct _DXVAHD_FILTER_RANGE_DATA {
245 INT Minimum;
246 INT Maximum;
247 INT Default;
248 FLOAT Multiplier;
249 } DXVAHD_FILTER_RANGE_DATA;
250
251 typedef struct _DXVAHD_STREAM_DATA {
252 WINBOOL Enable;
253 UINT OutputIndex;
254 UINT InputFrameOrField;
255 UINT PastFrames;
256 UINT FutureFrames;
257 IDirect3DSurface9 **ppPastSurfaces;
258 IDirect3DSurface9 *pInputSurface;
259 IDirect3DSurface9 **ppFutureSurfaces;
260 } DXVAHD_STREAM_DATA;
261
262 typedef struct _DXVAHD_VPCAPS {
263 GUID VPGuid;
264 UINT PastFrames;
265 UINT FutureFrames;
266 UINT ProcessorCaps;
267 UINT ITelecineCaps;
268 UINT CustomRateCount;
269 } DXVAHD_VPCAPS;
270
271 typedef struct _DXVAHD_STREAM_STATE_ALPHA_DATA {
272 WINBOOL Enable;
273 FLOAT Alpha;
274 } DXVAHD_STREAM_STATE_ALPHA_DATA;
275
276 typedef struct _DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA {
277 WINBOOL Enable;
278 DXVAHD_RATIONAL SourceAspectRatio;
279 DXVAHD_RATIONAL DestinationAspectRatio;
280 } DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA, *PDXVAHD_STREAM_STATE_ASPECT_RATIO_DATA;
281
282 typedef struct _DXVAHD_STREAM_STATE_D3DFORMAT_DATA {
283 D3DFORMAT Format;
284 } DXVAHD_STREAM_STATE_D3DFORMAT_DATA;
285
286 typedef struct _DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA {
287 WINBOOL Enable;
288 RECT DestinationRect;
289 } DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA;
290
291 typedef struct _DXVAHD_STREAM_STATE_FILTER_DATA {
292 WINBOOL Enable;
293 INT Level;
294 } DXVAHD_STREAM_STATE_FILTER_DATA;
295
296 typedef struct _DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA {
297 DXVAHD_FRAME_FORMAT FrameFormat;
298 } DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA;
299
300 typedef struct _DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA {
301 UINT Type :1;
302 UINT RGB_Range :1;
303 UINT YCbCr_Matrix :1;
304 UINT YCbCr_xvYCC :1;
305 } DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA;
306
307 typedef struct _DXVAHD_STREAM_STATE_LUMA_KEY_DATA {
308 WINBOOL Enable;
309 FLOAT Lower;
310 FLOAT Upper;
311 } DXVAHD_STREAM_STATE_LUMA_KEY_DATA;
312
313 typedef struct _DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA {
314 WINBOOL RepeatFrame;
315 DXVAHD_OUTPUT_RATE OutputRate;
316 DXVAHD_RATIONAL CustomRate;
317 } DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA;
318
319 typedef struct _DXVAHD_STREAM_STATE_SOURCE_RECT_DATA {
320 WINBOOL Enable;
321 RECT SourceRect;
322 } DXVAHD_STREAM_STATE_SOURCE_RECT_DATA;
323
324 typedef struct _DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA {
325 WINBOOL Enable;
326 UINT ITelecineFlags;
327 UINT Frames;
328 UINT InputField;
329 } DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA;
330
331 typedef struct _DXVAHD_STREAM_STATE_PRIVATE_DATA {
332 GUID Guid;
333 UINT DataSize;
334 void *pData;
335 } DXVAHD_STREAM_STATE_PRIVATE_DATA;
336
337 typedef struct _DXVAHD_STREAM_STATE_PALETTE_DATA {
338 UINT Count;
339 D3DCOLOR *pEntries;
340 } DXVAHD_STREAM_STATE_PALETTE_DATA;
341
342 typedef HRESULT ( CALLBACK *PDXVAHDSW_CreateDevice )(IDirect3DDevice9Ex *pD3DDevice,HANDLE *phDevice);
343 typedef HRESULT ( CALLBACK *PDXVAHDSW_ProposeVideoPrivateFormat )(HANDLE hDevice,D3DFORMAT *pFormat);
344 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorDeviceCaps )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,DXVAHD_VPDEVCAPS *pCaps);
345 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorOutputFormats )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,UINT Count,D3DFORMAT *pFormats);
346 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorInputFormats )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,UINT Count,D3DFORMAT *pFormats);
347 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorCaps )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,UINT Count,DXVAHD_VPCAPS *pCaps);
348 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorCustomRates )(HANDLE hDevice,const GUID *pVPGuid,UINT Count,DXVAHD_CUSTOM_RATE_DATA *pRates);
349 typedef HRESULT ( CALLBACK *PDXVAHDSW_SetVideoProcessBltState )(HANDLE hVideoProcessor,DXVAHD_BLT_STATE State,UINT DataSize,const void *pData);
350 typedef HRESULT ( CALLBACK *PDXVAHDSW_CreateVideoProcessor )(HANDLE hDevice,const GUID *pVPGuid,HANDLE *phVideoProcessor);
351 typedef HRESULT ( CALLBACK *PDXVAHDSW_DestroyDevice )(HANDLE hDevice);
352 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorFilterRange )(HANDLE hDevice,DXVAHD_FILTER Filter,DXVAHD_FILTER_RANGE_DATA *pRange);
353 typedef HRESULT ( CALLBACK *PDXVAHDSW_DestroyVideoProcessor )(HANDLE hVideoProcessor);
354 typedef HRESULT ( CALLBACK *PDXVAHDSW_VideoProcessBltHD )(HANDLE hVideoProcessor,IDirect3DSurface9 *pOutputSurface,UINT OutputFrame,UINT StreamCount,const DXVAHD_STREAM_DATA *pStreams);
355 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessStreamStatePrivate )(HANDLE hVideoProcessor,UINT StreamNumber,DXVAHD_STREAM_STATE_PRIVATE_DATA *pData);
356 typedef HRESULT ( CALLBACK *PDXVAHDSW_SetVideoProcessStreamState )(HANDLE hVideoProcessor,UINT StreamNumber,DXVAHD_STREAM_STATE State,UINT DataSize,const void *pData);
357 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessBltStatePrivate )(HANDLE hVideoProcessor,DXVAHD_BLT_STATE_PRIVATE_DATA *pData);
358 typedef HRESULT ( CALLBACK *PDXVAHDSW_Plugin )(UINT Size,void *pCallbacks);
359
360 typedef struct _DXVAHDSW_CALLBACKS {
361 PDXVAHDSW_CreateDevice CreateDevice;
362 PDXVAHDSW_ProposeVideoPrivateFormat ProposeVideoPrivateFormat;
363 PDXVAHDSW_GetVideoProcessorDeviceCaps GetVideoProcessorDeviceCaps;
364 PDXVAHDSW_GetVideoProcessorOutputFormats GetVideoProcessorOutputFormats;
365 PDXVAHDSW_GetVideoProcessorInputFormats GetVideoProcessorInputFormats;
366 PDXVAHDSW_GetVideoProcessorCaps GetVideoProcessorCaps;
367 PDXVAHDSW_GetVideoProcessorCustomRates GetVideoProcessorCustomRates;
368 PDXVAHDSW_GetVideoProcessorFilterRange GetVideoProcessorFilterRange;
369 PDXVAHDSW_DestroyDevice DestroyDevice;
370 PDXVAHDSW_CreateVideoProcessor CreateVideoProcessor;
371 PDXVAHDSW_SetVideoProcessBltState SetVideoProcessBltState;
372 PDXVAHDSW_GetVideoProcessBltStatePrivate GetVideoProcessBltStatePrivate;
373 PDXVAHDSW_SetVideoProcessStreamState SetVideoProcessStreamState;
374 PDXVAHDSW_GetVideoProcessStreamStatePrivate GetVideoProcessStreamStatePrivate;
375 PDXVAHDSW_VideoProcessBltHD VideoProcessBltHD;
376 PDXVAHDSW_DestroyVideoProcessor DestroyVideoProcessor;
377 } DXVAHDSW_CALLBACKS;
378
379 HRESULT DXVAHD_CreateDevice(IDirect3DDevice9Ex *pD3DDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,PDXVAHDSW_Plugin pPlugin,IDXVAHD_Device **ppDevice);
380
381 #ifdef __cplusplus
382 }
383 #endif
384
385 #undef INTERFACE
386 #define INTERFACE IDXVAHD_Device
387 #ifdef __GNUC__
388 #warning COM interfaces layout in this header has not been verified.
389 #warning COM interfaces with incorrect layout may not work at all.
390 __MINGW_BROKEN_INTERFACE(INTERFACE)
391 #endif
DECLARE_INTERFACE_(IDXVAHD_Device,IUnknown)392 DECLARE_INTERFACE_(IDXVAHD_Device,IUnknown)
393 {
394 BEGIN_INTERFACE
395
396 /* IUnknown methods */
397 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
398 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
399 STDMETHOD_(ULONG, Release)(THIS) PURE;
400
401 /* IDXVAHD_Device methods */
402 STDMETHOD_(HRESULT,CreateVideoProcessor)(THIS_ const GUID *pVPGuid,IDXVAHD_VideoProcessor **ppVideoProcessor) PURE;
403 STDMETHOD_(HRESULT,CreateVideoSurface)(THIS_ UINT Width,UINT Height,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DXVAHD_SURFACE_TYPE Type,UINT NumSurfaces,IDirect3DSurface9 **ppSurfaces,HANDLE *pSharedHandle) PURE;
404 STDMETHOD_(HRESULT,GetVideoProcessorCaps)(THIS_ UINT Count,DXVAHD_VPCAPS *pCaps) PURE;
405 STDMETHOD_(HRESULT,GetVideoProcessorCustomRates)(THIS_ const GUID *pVPGuid,UINT Count,DXVAHD_CUSTOM_RATE_DATA *pRates) PURE;
406 STDMETHOD_(HRESULT,GetVideoProcessorDeviceCaps)(THIS_ DXVAHD_VPDEVCAPS *pCaps) PURE;
407 STDMETHOD_(HRESULT,GetVideoProcessorFilterRange)(THIS_ DXVAHD_FILTER Filter,DXVAHD_FILTER_RANGE_DATA *pRange) PURE;
408 STDMETHOD_(HRESULT,GetVideoProcessorInputFormats)(THIS_ UINT Count,D3DFORMAT *pFormats) PURE;
409 STDMETHOD_(HRESULT,GetVideoProcessorOutputFormats)(THIS_ UINT Count,D3DFORMAT *pFormats) PURE;
410
411 END_INTERFACE
412 };
413 #ifdef COBJMACROS
414 #define IDXVAHD_Device_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
415 #define IDXVAHD_Device_AddRef(This) (This)->lpVtbl->AddRef(This)
416 #define IDXVAHD_Device_Release(This) (This)->lpVtbl->Release(This)
417 #define IDXVAHD_Device_CreateVideoProcessor(This,pVPGuid,ppVideoProcessor) (This)->lpVtbl->CreateVideoProcessor(This,pVPGuid,ppVideoProcessor)
418 #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)
419 #define IDXVAHD_Device_GetVideoProcessorCaps(This,Count,pCaps) (This)->lpVtbl->GetVideoProcessorCaps(This,Count,pCaps)
420 #define IDXVAHD_Device_GetVideoProcessorCustomRates(This,pVPGuid,Count,pRates) (This)->lpVtbl->GetVideoProcessorCustomRates(This,pVPGuid,Count,pRates)
421 #define IDXVAHD_Device_GetVideoProcessorDeviceCaps(This,pCaps) (This)->lpVtbl->GetVideoProcessorDeviceCaps(This,pCaps)
422 #define IDXVAHD_Device_GetVideoProcessorFilterRange(This,Filter,pRange) (This)->lpVtbl->GetVideoProcessorFilterRange(This,Filter,pRange)
423 #define IDXVAHD_Device_GetVideoProcessorInputFormats(This,Count,pFormats) (This)->lpVtbl->GetVideoProcessorInputFormats(This,Count,pFormats)
424 #define IDXVAHD_Device_GetVideoProcessorOutputFormats(This,Count,pFormats) (This)->lpVtbl->GetVideoProcessorOutputFormats(This,Count,pFormats)
425 #endif /*COBJMACROS*/
426
427 #undef INTERFACE
428 #define INTERFACE IDXVAHD_VideoProcessor
429 #ifdef __GNUC__
430 #warning COM interfaces layout in this header has not been verified.
431 #warning COM interfaces with incorrect layout may not work at all.
432 __MINGW_BROKEN_INTERFACE(INTERFACE)
433 #endif
DECLARE_INTERFACE_(IDXVAHD_VideoProcessor,IUnknown)434 DECLARE_INTERFACE_(IDXVAHD_VideoProcessor,IUnknown)
435 {
436 BEGIN_INTERFACE
437
438 /* IUnknown methods */
439 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
440 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
441 STDMETHOD_(ULONG, Release)(THIS) PURE;
442
443 /* IDXVAHD_VideoProcessor methods */
444 STDMETHOD_(HRESULT,GetVideoProcessBltState)(THIS_ DXVAHD_BLT_STATE State,UINT DataSize,void *pData) PURE;
445 STDMETHOD_(HRESULT,GetVideoProcessStreamState)(THIS_ UINT StreamNumber,DXVAHD_STREAM_STATE State,UINT DataSize,void *pData) PURE;
446 STDMETHOD_(HRESULT,SetVideoProcessBltState)(THIS_ DXVAHD_BLT_STATE State,UINT DataSize,const void *pData) PURE;
447 STDMETHOD_(HRESULT,SetVideoProcessStreamState)(THIS_ UINT StreamNumber,DXVAHD_STREAM_STATE State,UINT DataSize,const void *pData) PURE;
448 STDMETHOD_(HRESULT,VideoProcessBltHD)(THIS_ IDirect3DSurface9 *pOutputSurface,UINT OutputFrame,UINT StreamCount,const DXVAHD_STREAM_DATA *pStreams) PURE;
449
450 END_INTERFACE
451 };
452 #ifdef COBJMACROS
453 #define IDXVAHD_VideoProcessor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
454 #define IDXVAHD_VideoProcessor_AddRef(This) (This)->lpVtbl->AddRef(This)
455 #define IDXVAHD_VideoProcessor_Release(This) (This)->lpVtbl->Release(This)
456 #define IDXVAHD_VideoProcessor_GetVideoProcessBltState(This,State,DataSize,pData) (This)->lpVtbl->GetVideoProcessBltState(This,State,DataSize,pData)
457 #define IDXVAHD_VideoProcessor_GetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData) (This)->lpVtbl->GetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData)
458 #define IDXVAHD_VideoProcessor_SetVideoProcessBltState(This,State,DataSize,pData) (This)->lpVtbl->SetVideoProcessBltState(This,State,DataSize,pData)
459 #define IDXVAHD_VideoProcessor_SetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData) (This)->lpVtbl->SetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData)
460 #define IDXVAHD_VideoProcessor_VideoProcessBltHD(This,pOutputSurface,OutputFrame,StreamCount,pStreams) (This)->lpVtbl->VideoProcessBltHD(This,pOutputSurface,OutputFrame,StreamCount,pStreams)
461 #endif /*COBJMACROS*/
462
463 #endif /*(_WIN32_WINNT >= 0x0601)*/
464 #endif /*_INC_DXAVHD*/
465