]> git.proxmox.com Git - rustc.git/blob - vendor/winapi/src/um/dxvahd.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / vendor / winapi / src / um / dxvahd.rs
1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use ctypes::c_void;
7 use shared::d3d9::{IDirect3DDevice9Ex, IDirect3DSurface9};
8 use shared::d3d9types::{D3DCOLOR, D3DFORMAT, D3DPOOL};
9 use shared::guiddef::GUID;
10 use shared::minwindef::{BOOL, DWORD, FLOAT, INT, UINT};
11 use shared::windef::{RECT, SIZE};
12 use um::unknwnbase::{IUnknown, IUnknownVtbl};
13 use um::winnt::{HANDLE, HRESULT, ULONGLONG};
14 DEFINE_GUID!{IID_IDXVAHD_Device,
15 0x95f12dfd, 0xd77e, 0x49be, 0x81, 0x5f, 0x57, 0xd5, 0x79, 0x63, 0x4d, 0x6d}
16 DEFINE_GUID!{IID_IDXVAHD_VideoProcessor,
17 0x95f4edf4, 0x6e03, 0x4cd7, 0xbe, 0x1b, 0x30, 0x75, 0xd6, 0x65, 0xaa, 0x52}
18 ENUM!{enum DXVAHD_FRAME_FORMAT {
19 DXVAHD_FRAME_FORMAT_PROGRESSIVE = 0,
20 DXVAHD_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1,
21 DXVAHD_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2,
22 }}
23 ENUM!{enum DXVAHD_DEVICE_USAGE {
24 DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL = 0,
25 DXVAHD_DEVICE_USAGE_OPTIMAL_SPEED = 1,
26 DXVAHD_DEVICE_USAGE_OPTIMAL_QUALITY = 2,
27 }}
28 ENUM!{enum DXVAHD_SURFACE_TYPE {
29 DXVAHD_SURFACE_TYPE_VIDEO_INPUT = 0,
30 DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE = 1,
31 DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT = 2,
32 }}
33 ENUM!{enum DXVAHD_DEVICE_TYPE {
34 DXVAHD_DEVICE_TYPE_HARDWARE = 0,
35 DXVAHD_DEVICE_TYPE_SOFTWARE = 1,
36 DXVAHD_DEVICE_TYPE_REFERENCE = 2,
37 DXVAHD_DEVICE_TYPE_OTHER = 3,
38 }}
39 ENUM!{enum DXVAHD_DEVICE_CAPS {
40 DXVAHD_DEVICE_CAPS_LINEAR_SPACE = 0x1,
41 DXVAHD_DEVICE_CAPS_xvYCC = 0x2,
42 DXVAHD_DEVICE_CAPS_RGB_RANGE_CONVERSION = 0x4,
43 DXVAHD_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION = 0x8,
44 }}
45 ENUM!{enum DXVAHD_FEATURE_CAPS {
46 DXVAHD_FEATURE_CAPS_ALPHA_FILL = 0x1,
47 DXVAHD_FEATURE_CAPS_CONSTRICTION = 0x2,
48 DXVAHD_FEATURE_CAPS_LUMA_KEY = 0x4,
49 DXVAHD_FEATURE_CAPS_ALPHA_PALETTE = 0x8,
50 }}
51 ENUM!{enum DXVAHD_FILTER_CAPS {
52 DXVAHD_FILTER_CAPS_BRIGHTNESS = 0x1,
53 DXVAHD_FILTER_CAPS_CONTRAST = 0x2,
54 DXVAHD_FILTER_CAPS_HUE = 0x4,
55 DXVAHD_FILTER_CAPS_SATURATION = 0x8,
56 DXVAHD_FILTER_CAPS_NOISE_REDUCTION = 0x10,
57 DXVAHD_FILTER_CAPS_EDGE_ENHANCEMENT = 0x20,
58 DXVAHD_FILTER_CAPS_ANAMORPHIC_SCALING = 0x40,
59 }}
60 ENUM!{enum DXVAHD_INPUT_FORMAT_CAPS {
61 DXVAHD_INPUT_FORMAT_CAPS_RGB_INTERLACED = 0x1,
62 DXVAHD_INPUT_FORMAT_CAPS_RGB_PROCAMP = 0x2,
63 DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY = 0x4,
64 DXVAHD_INPUT_FORMAT_CAPS_PALETTE_INTERLACED = 0x8,
65 }}
66 ENUM!{enum DXVAHD_PROCESSOR_CAPS {
67 DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BLEND = 0x1,
68 DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BOB = 0x2,
69 DXVAHD_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE = 0x4,
70 DXVAHD_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION = 0x8,
71 DXVAHD_PROCESSOR_CAPS_INVERSE_TELECINE = 0x10,
72 DXVAHD_PROCESSOR_CAPS_FRAME_RATE_CONVERSION = 0x20,
73 }}
74 ENUM!{enum DXVAHD_ITELECINE_CAPS {
75 DXVAHD_ITELECINE_CAPS_32 = 0x1,
76 DXVAHD_ITELECINE_CAPS_22 = 0x2,
77 DXVAHD_ITELECINE_CAPS_2224 = 0x4,
78 DXVAHD_ITELECINE_CAPS_2332 = 0x8,
79 DXVAHD_ITELECINE_CAPS_32322 = 0x10,
80 DXVAHD_ITELECINE_CAPS_55 = 0x20,
81 DXVAHD_ITELECINE_CAPS_64 = 0x40,
82 DXVAHD_ITELECINE_CAPS_87 = 0x80,
83 DXVAHD_ITELECINE_CAPS_222222222223 = 0x100,
84 DXVAHD_ITELECINE_CAPS_OTHER = 0x80000000,
85 }}
86 ENUM!{enum DXVAHD_FILTER {
87 DXVAHD_FILTER_BRIGHTNESS = 0,
88 DXVAHD_FILTER_CONTRAST = 1,
89 DXVAHD_FILTER_HUE = 2,
90 DXVAHD_FILTER_SATURATION = 3,
91 DXVAHD_FILTER_NOISE_REDUCTION = 4,
92 DXVAHD_FILTER_EDGE_ENHANCEMENT = 5,
93 DXVAHD_FILTER_ANAMORPHIC_SCALING = 6,
94 }}
95 ENUM!{enum DXVAHD_BLT_STATE {
96 DXVAHD_BLT_STATE_TARGET_RECT = 0,
97 DXVAHD_BLT_STATE_BACKGROUND_COLOR = 1,
98 DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE = 2,
99 DXVAHD_BLT_STATE_ALPHA_FILL = 3,
100 DXVAHD_BLT_STATE_CONSTRICTION = 4,
101 DXVAHD_BLT_STATE_PRIVATE = 1000,
102 }}
103 ENUM!{enum DXVAHD_ALPHA_FILL_MODE {
104 DXVAHD_ALPHA_FILL_MODE_OPAQUE = 0,
105 DXVAHD_ALPHA_FILL_MODE_BACKGROUND = 1,
106 DXVAHD_ALPHA_FILL_MODE_DESTINATION = 2,
107 DXVAHD_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
108 }}
109 ENUM!{enum DXVAHD_STREAM_STATE {
110 DXVAHD_STREAM_STATE_D3DFORMAT = 0,
111 DXVAHD_STREAM_STATE_FRAME_FORMAT = 1,
112 DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE = 2,
113 DXVAHD_STREAM_STATE_OUTPUT_RATE = 3,
114 DXVAHD_STREAM_STATE_SOURCE_RECT = 4,
115 DXVAHD_STREAM_STATE_DESTINATION_RECT = 5,
116 DXVAHD_STREAM_STATE_ALPHA = 6,
117 DXVAHD_STREAM_STATE_PALETTE = 7,
118 DXVAHD_STREAM_STATE_LUMA_KEY = 8,
119 DXVAHD_STREAM_STATE_ASPECT_RATIO = 9,
120 DXVAHD_STREAM_STATE_FILTER_BRIGHTNESS = 100,
121 DXVAHD_STREAM_STATE_FILTER_CONTRAST = 101,
122 DXVAHD_STREAM_STATE_FILTER_HUE = 102,
123 DXVAHD_STREAM_STATE_FILTER_SATURATION = 103,
124 DXVAHD_STREAM_STATE_FILTER_NOISE_REDUCTION = 104,
125 DXVAHD_STREAM_STATE_FILTER_EDGE_ENHANCEMENT = 105,
126 DXVAHD_STREAM_STATE_FILTER_ANAMORPHIC_SCALING = 106,
127 DXVAHD_STREAM_STATE_PRIVATE = 1000,
128 }}
129 ENUM!{enum DXVAHD_OUTPUT_RATE {
130 DXVAHD_OUTPUT_RATE_NORMAL = 0,
131 DXVAHD_OUTPUT_RATE_HALF = 1,
132 DXVAHD_OUTPUT_RATE_CUSTOM = 2,
133 }}
134 STRUCT!{struct DXVAHD_RATIONAL {
135 Numerator: UINT,
136 Denominator: UINT,
137 }}
138 STRUCT!{struct DXVAHD_COLOR_RGBA {
139 R: FLOAT,
140 G: FLOAT,
141 B: FLOAT,
142 A: FLOAT,
143 }}
144 STRUCT!{struct DXVAHD_COLOR_YCbCrA {
145 Y: FLOAT,
146 Cb: FLOAT,
147 Cr: FLOAT,
148 A: FLOAT,
149 }}
150 UNION!{union DXVAHD_COLOR {
151 [u32; 4],
152 RGB RGB_mut: DXVAHD_COLOR_RGBA,
153 YCbCr YCbCr_mut: DXVAHD_COLOR_YCbCrA,
154 }}
155 STRUCT!{struct DXVAHD_CONTENT_DESC {
156 InputFrameFormat: DXVAHD_FRAME_FORMAT,
157 InputFrameRate: DXVAHD_RATIONAL,
158 InputWidth: UINT,
159 InputHeight: UINT,
160 OutputFrameRate: DXVAHD_RATIONAL,
161 OutputWidth: UINT,
162 OutputHeight: UINT,
163 }}
164 STRUCT!{struct DXVAHD_VPDEVCAPS {
165 DeviceType: DXVAHD_DEVICE_TYPE,
166 DeviceCaps: UINT,
167 FeatureCaps: UINT,
168 FilterCaps: UINT,
169 InputFormatCaps: UINT,
170 InputPool: D3DPOOL,
171 OutputFormatCount: UINT,
172 InputFormatCount: UINT,
173 VideoProcessorCount: UINT,
174 MaxInputStreams: UINT,
175 MaxStreamStates: UINT,
176 }}
177 STRUCT!{struct DXVAHD_VPCAPS {
178 VPGuid: GUID,
179 PastFrames: UINT,
180 FutureFrames: UINT,
181 ProcessorCaps: UINT,
182 ITelecineCaps: UINT,
183 CustomRateCount: UINT,
184 }}
185 STRUCT!{struct DXVAHD_CUSTOM_RATE_DATA {
186 CustomRate: DXVAHD_RATIONAL,
187 OutputFrames: UINT,
188 InputInterlaced: BOOL,
189 InputFramesOrFields: UINT,
190 }}
191 STRUCT!{struct DXVAHD_FILTER_RANGE_DATA {
192 Minimum: INT,
193 Maximum: INT,
194 Default: INT,
195 Multiplier: FLOAT,
196 }}
197 STRUCT!{struct DXVAHD_BLT_STATE_TARGET_RECT_DATA {
198 Enable: BOOL,
199 TargetRect: RECT,
200 }}
201 STRUCT!{struct DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA {
202 YCbCr: BOOL,
203 BackgroundColor: DXVAHD_COLOR,
204 }}
205 STRUCT!{struct DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA {
206 Value: UINT,
207 }}
208 BITFIELD!{DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA Value: UINT [
209 Usage set_Usage[0..1],
210 RGB_Range set_RGB_Range[1..2],
211 YCbCr_Matrix set_YCbCr_Matrix[2..3],
212 YCbCr_xvYCC set_YCbCr_xvYCC[3..4],
213 Reserved set_Reserved[4..32],
214 ]}
215 STRUCT!{struct DXVAHD_BLT_STATE_ALPHA_FILL_DATA {
216 Mode: DXVAHD_ALPHA_FILL_MODE,
217 StreamNumber: UINT,
218 }}
219 STRUCT!{struct DXVAHD_BLT_STATE_CONSTRICTION_DATA {
220 Enable: BOOL,
221 Size: SIZE,
222 }}
223 STRUCT!{struct DXVAHD_BLT_STATE_PRIVATE_DATA {
224 Guid: GUID,
225 DataSize: UINT,
226 pData: *mut c_void,
227 }}
228 STRUCT!{struct DXVAHD_STREAM_STATE_D3DFORMAT_DATA {
229 Format: D3DFORMAT,
230 }}
231 STRUCT!{struct DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA {
232 FrameFormat: DXVAHD_FRAME_FORMAT,
233 }}
234 STRUCT!{struct DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA {
235 Value: UINT,
236 }}
237 BITFIELD!{DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA Value: UINT [
238 Type set_Type[0..1],
239 RGB_Range set_RGB_Range[1..2],
240 YCbCr_Matrix set_YCbCr_Matrix[2..3],
241 YCbCr_xvYCC set_YCbCr_xvYCC[3..4],
242 Reserved set_Reserved[4..32],
243 ]}
244 STRUCT!{struct DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA {
245 RepeatFrame: BOOL,
246 OutputRate: DXVAHD_OUTPUT_RATE,
247 CustomRate: DXVAHD_RATIONAL,
248 }}
249 STRUCT!{struct DXVAHD_STREAM_STATE_SOURCE_RECT_DATA {
250 Enable: BOOL,
251 SourceRect: RECT,
252 }}
253 STRUCT!{struct DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA {
254 Enable: BOOL,
255 DestinationRect: RECT,
256 }}
257 STRUCT!{struct DXVAHD_STREAM_STATE_ALPHA_DATA {
258 Enable: BOOL,
259 Alpha: FLOAT,
260 }}
261 STRUCT!{struct DXVAHD_STREAM_STATE_PALETTE_DATA {
262 Count: UINT,
263 pEntries: *mut D3DCOLOR,
264 }}
265 STRUCT!{struct DXVAHD_STREAM_STATE_LUMA_KEY_DATA {
266 Enable: BOOL,
267 Lower: FLOAT,
268 Upper: FLOAT,
269 }}
270 STRUCT!{struct DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA {
271 Enable: BOOL,
272 SourceAspectRatio: DXVAHD_RATIONAL,
273 DestinationAspectRatio: DXVAHD_RATIONAL,
274 }}
275 STRUCT!{struct DXVAHD_STREAM_STATE_FILTER_DATA {
276 Enable: BOOL,
277 Level: INT,
278 }}
279 STRUCT!{struct DXVAHD_STREAM_STATE_PRIVATE_DATA {
280 Guid: GUID,
281 DataSize: UINT,
282 pData: *mut c_void,
283 }}
284 STRUCT!{struct DXVAHD_STREAM_DATA {
285 Enable: BOOL,
286 OutputIndex: UINT,
287 InputFrameOrField: UINT,
288 PastFrames: UINT,
289 FutureFrames: UINT,
290 ppPastSurfaces: *mut *mut IDirect3DSurface9,
291 pInputSurface: *mut IDirect3DSurface9,
292 ppFutureSurfaces: *mut *mut IDirect3DSurface9,
293 }}
294 STRUCT!{struct DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA {
295 Enable: BOOL,
296 ITelecineFlags: UINT,
297 Frames: UINT,
298 InputField: UINT,
299 }}
300 RIDL!{#[uuid(0x95f12dfd, 0xd77e, 0x49be, 0x81, 0x5f, 0x57, 0xd5, 0x79, 0x63, 0x4d, 0x6d)]
301 interface IDXVAHD_Device(IDXVAHD_DeviceVtbl): IUnknown(IUnknownVtbl) {
302 fn CreateVideoSurface(
303 Width: UINT,
304 Height: UINT,
305 Format: D3DFORMAT,
306 Pool: D3DPOOL,
307 Usage: DWORD,
308 Type: DXVAHD_SURFACE_TYPE,
309 NumSurfaces: UINT,
310 ppSurfaces: *mut *mut IDirect3DSurface9,
311 pSharedHandle: *mut HANDLE,
312 ) -> HRESULT,
313 fn GetVideoProcessorDeviceCaps(
314 pCaps: *mut DXVAHD_VPDEVCAPS,
315 ) -> HRESULT,
316 fn GetVideoProcessorOutputFormats(
317 Count: UINT,
318 pFormats: *mut D3DFORMAT,
319 ) -> HRESULT,
320 fn GetVideoProcessorInputFormats(
321 Count: UINT,
322 pFormats: *mut D3DFORMAT,
323 ) -> HRESULT,
324 fn GetVideoProcessorCaps(
325 Count: UINT,
326 pCaps: *mut DXVAHD_VPCAPS,
327 ) -> HRESULT,
328 fn GetVideoProcessorCustomRates(
329 pVPGuid: *const GUID,
330 Count: UINT,
331 pRates: *mut DXVAHD_CUSTOM_RATE_DATA,
332 ) -> HRESULT,
333 fn GetVideoProcessorFilterRange(
334 Filter: DXVAHD_FILTER,
335 pRange: *mut DXVAHD_FILTER_RANGE_DATA,
336 ) -> HRESULT,
337 fn CreateVideoProcessor(
338 pVPGuid: *const GUID,
339 ppVideoProcessor: *mut *mut IDXVAHD_VideoProcessor,
340 ) -> HRESULT,
341 }}
342 RIDL!{#[uuid(0x95f4edf4, 0x6e03, 0x4cd7, 0xbe, 0x1b, 0x30, 0x75, 0xd6, 0x65, 0xaa, 0x52)]
343 interface IDXVAHD_VideoProcessor(IDXVAHD_VideoProcessorVtbl): IUnknown(IUnknownVtbl) {
344 fn SetVideoProcessBltState(
345 State: DXVAHD_BLT_STATE,
346 DataSize: UINT,
347 pData: *const c_void,
348 ) -> HRESULT,
349 fn GetVideoProcessBltState(
350 State: DXVAHD_BLT_STATE,
351 DataSize: UINT,
352 pData: *mut c_void,
353 ) -> HRESULT,
354 fn SetVideoProcessStreamState(
355 StreamNumber: UINT,
356 State: DXVAHD_STREAM_STATE,
357 DataSize: UINT,
358 pData: *const c_void,
359 ) -> HRESULT,
360 fn GetVideoProcessStreamState(
361 StreamNumber: UINT,
362 State: DXVAHD_STREAM_STATE,
363 DataSize: UINT,
364 pData: *mut c_void,
365 ) -> HRESULT,
366 fn VideoProcessBltHD(
367 pOutputSurface: *mut IDirect3DSurface9,
368 OutputFrame: UINT,
369 StreamCount: UINT,
370 pStreams: *const DXVAHD_STREAM_DATA,
371 ) -> HRESULT,
372 }}
373 FN!{stdcall PDXVAHDSW_CreateDevice(
374 pD3DDevice: *mut IDirect3DDevice9Ex,
375 phDevice: *mut HANDLE,
376 ) -> HRESULT}
377 FN!{stdcall PDXVAHDSW_ProposeVideoPrivateFormat(
378 hDevice: HANDLE,
379 pFormat: *mut D3DFORMAT,
380 ) -> HRESULT}
381 FN!{stdcall PDXVAHDSW_GetVideoProcessorDeviceCaps(
382 hDevice: HANDLE,
383 pContentDesc: *const DXVAHD_CONTENT_DESC,
384 Usage: DXVAHD_DEVICE_USAGE,
385 pCaps: *mut DXVAHD_VPDEVCAPS,
386 ) -> HRESULT}
387 FN!{stdcall PDXVAHDSW_GetVideoProcessorOutputFormats(
388 hDevice: HANDLE,
389 pContentDesc: *const DXVAHD_CONTENT_DESC,
390 Usage: DXVAHD_DEVICE_USAGE,
391 Count: UINT,
392 pFormats: *mut D3DFORMAT,
393 ) -> HRESULT}
394 FN!{stdcall PDXVAHDSW_GetVideoProcessorInputFormats(
395 hDevice: HANDLE,
396 pContentDesc: *const DXVAHD_CONTENT_DESC,
397 Usage: DXVAHD_DEVICE_USAGE,
398 Count: UINT,
399 pFormats: *mut D3DFORMAT,
400 ) -> HRESULT}
401 FN!{stdcall PDXVAHDSW_GetVideoProcessorCaps(
402 hDevice: HANDLE,
403 pContentDesc: *const DXVAHD_CONTENT_DESC,
404 Usage: DXVAHD_DEVICE_USAGE,
405 Count: UINT,
406 pCaps: *mut DXVAHD_VPCAPS,
407 ) -> HRESULT}
408 FN!{stdcall PDXVAHDSW_GetVideoProcessorCustomRates(
409 hDevice: HANDLE,
410 pVPGuid: *const GUID,
411 Count: UINT,
412 pRates: *mut DXVAHD_CUSTOM_RATE_DATA,
413 ) -> HRESULT}
414 FN!{stdcall PDXVAHDSW_GetVideoProcessorFilterRange(
415 hDevice: HANDLE,
416 Filter: DXVAHD_FILTER,
417 pRange: *mut DXVAHD_FILTER_RANGE_DATA,
418 ) -> HRESULT}
419 FN!{stdcall PDXVAHDSW_DestroyDevice(
420 hDevice: HANDLE,
421 ) -> HRESULT}
422 FN!{stdcall PDXVAHDSW_CreateVideoProcessor(
423 hDevice: HANDLE,
424 pVPGuid: *const GUID,
425 phVideoProcessor: *mut HANDLE,
426 ) -> HRESULT}
427 FN!{stdcall PDXVAHDSW_SetVideoProcessBltState(
428 hVideoProcessor: HANDLE,
429 State: DXVAHD_BLT_STATE,
430 DataSize: UINT,
431 pData: *const c_void,
432 ) -> HRESULT}
433 FN!{stdcall PDXVAHDSW_GetVideoProcessBltStatePrivate(
434 hVideoProcessor: HANDLE,
435 pData: *mut DXVAHD_BLT_STATE_PRIVATE_DATA,
436 ) -> HRESULT}
437 FN!{stdcall PDXVAHDSW_SetVideoProcessStreamState(
438 hVideoProcessor: HANDLE,
439 StreamNumber: UINT,
440 State: DXVAHD_STREAM_STATE,
441 DataSize: UINT,
442 pData: *const c_void,
443 ) -> HRESULT}
444 FN!{stdcall PDXVAHDSW_GetVideoProcessStreamStatePrivate(
445 hVideoProcessor: HANDLE,
446 StreamNumber: UINT,
447 pData: *mut DXVAHD_STREAM_STATE_PRIVATE_DATA,
448 ) -> HRESULT}
449 FN!{stdcall PDXVAHDSW_VideoProcessBltHD(
450 hVideoProcessor: HANDLE,
451 pOutputSurface: *mut IDirect3DSurface9,
452 OutputFrame: UINT,
453 StreamCount: UINT,
454 pStreams: *const DXVAHD_STREAM_DATA,
455 ) -> HRESULT}
456 FN!{stdcall PDXVAHDSW_DestroyVideoProcessor(
457 hVideoProcessor: HANDLE,
458 ) -> HRESULT}
459 STRUCT!{struct DXVAHDSW_CALLBACKS {
460 CreateDevice: PDXVAHDSW_CreateDevice,
461 ProposeVideoPrivateFormat: PDXVAHDSW_ProposeVideoPrivateFormat,
462 GetVideoProcessorDeviceCaps: PDXVAHDSW_GetVideoProcessorDeviceCaps,
463 GetVideoProcessorOutputFormats: PDXVAHDSW_GetVideoProcessorOutputFormats,
464 GetVideoProcessorInputFormats: PDXVAHDSW_GetVideoProcessorInputFormats,
465 GetVideoProcessorCaps: PDXVAHDSW_GetVideoProcessorCaps,
466 GetVideoProcessorCustomRates: PDXVAHDSW_GetVideoProcessorCustomRates,
467 GetVideoProcessorFilterRange: PDXVAHDSW_GetVideoProcessorFilterRange,
468 DestroyDevice: PDXVAHDSW_DestroyDevice,
469 CreateVideoProcessor: PDXVAHDSW_CreateVideoProcessor,
470 SetVideoProcessBltState: PDXVAHDSW_SetVideoProcessBltState,
471 GetVideoProcessBltStatePrivate: PDXVAHDSW_GetVideoProcessBltStatePrivate,
472 SetVideoProcessStreamState: PDXVAHDSW_SetVideoProcessStreamState,
473 GetVideoProcessStreamStatePrivate: PDXVAHDSW_GetVideoProcessStreamStatePrivate,
474 VideoProcessBltHD: PDXVAHDSW_VideoProcessBltHD,
475 DestroyVideoProcessor: PDXVAHDSW_DestroyVideoProcessor,
476 }}
477 FN!{stdcall PDXVAHDSW_Plugin(
478 Size: UINT,
479 pCallbacks: *mut c_void,
480 ) -> HRESULT}
481 DEFINE_GUID!{DXVAHDControlGuid,
482 0xa0386e75, 0xf70c, 0x464c, 0xa9, 0xce, 0x33, 0xc4, 0x4e, 0x09, 0x16, 0x23}
483 DEFINE_GUID!{DXVAHDETWGUID_CREATEVIDEOPROCESSOR,
484 0x681e3d1e, 0x5674, 0x4fb3, 0xa5, 0x03, 0x2f, 0x20, 0x55, 0xe9, 0x1f, 0x60}
485 DEFINE_GUID!{DXVAHDETWGUID_VIDEOPROCESSBLTSTATE,
486 0x76c94b5a, 0x193f, 0x4692, 0x94, 0x84, 0xa4, 0xd9, 0x99, 0xda, 0x81, 0xa8}
487 DEFINE_GUID!{DXVAHDETWGUID_VIDEOPROCESSSTREAMSTATE,
488 0x262c0b02, 0x209d, 0x47ed, 0x94, 0xd8, 0x82, 0xae, 0x02, 0xb8, 0x4a, 0xa7}
489 DEFINE_GUID!{DXVAHDETWGUID_VIDEOPROCESSBLTHD,
490 0xbef3d435, 0x78c7, 0x4de3, 0x97, 0x07, 0xcd, 0x1b, 0x08, 0x3b, 0x16, 0x0a}
491 DEFINE_GUID!{DXVAHDETWGUID_VIDEOPROCESSBLTHD_STREAM,
492 0x27ae473e, 0xa5fc, 0x4be5, 0xb4, 0xe3, 0xf2, 0x49, 0x94, 0xd3, 0xc4, 0x95}
493 DEFINE_GUID!{DXVAHDETWGUID_DESTROYVIDEOPROCESSOR,
494 0xf943f0a0, 0x3f16, 0x43e0, 0x80, 0x93, 0x10, 0x5a, 0x98, 0x6a, 0xa5, 0xf1}
495 STRUCT!{struct DXVAHDETW_CREATEVIDEOPROCESSOR {
496 pObject: ULONGLONG,
497 pD3D9Ex: ULONGLONG,
498 VPGuid: GUID,
499 }}
500 STRUCT!{struct DXVAHDETW_VIDEOPROCESSBLTSTATE {
501 pObject: ULONGLONG,
502 State: DXVAHD_BLT_STATE,
503 DataSize: UINT,
504 SetState: BOOL,
505 }}
506 STRUCT!{struct DXVAHDETW_VIDEOPROCESSSTREAMSTATE {
507 pObject: ULONGLONG,
508 StreamNumber: UINT,
509 State: DXVAHD_STREAM_STATE,
510 DataSize: UINT,
511 SetState: BOOL,
512 }}
513 STRUCT!{struct DXVAHDETW_VIDEOPROCESSBLTHD {
514 pObject: ULONGLONG,
515 pOutputSurface: ULONGLONG,
516 TargetRect: RECT,
517 OutputFormat: D3DFORMAT,
518 ColorSpace: UINT,
519 OutputFrame: UINT,
520 StreamCount: UINT,
521 Enter: BOOL,
522 }}
523 STRUCT!{struct DXVAHDETW_VIDEOPROCESSBLTHD_STREAM {
524 pObject: ULONGLONG,
525 pInputSurface: ULONGLONG,
526 SourceRect: RECT,
527 DestinationRect: RECT,
528 InputFormat: D3DFORMAT,
529 FrameFormat: DXVAHD_FRAME_FORMAT,
530 ColorSpace: UINT,
531 StreamNumber: UINT,
532 OutputIndex: UINT,
533 InputFrameOrField: UINT,
534 PastFrames: UINT,
535 FutureFrames: UINT,
536 }}
537 STRUCT!{struct DXVAHDETW_DESTROYVIDEOPROCESSOR {
538 pObject: ULONGLONG,
539 }}
540 extern "system" {
541 pub fn DXVAHD_CreateDevice(
542 pD3DDevice: *mut IDirect3DDevice9Ex,
543 pContentDesc: *const DXVAHD_CONTENT_DESC,
544 Usage: DXVAHD_DEVICE_USAGE,
545 pPlugin: PDXVAHDSW_Plugin,
546 ppDevice: *mut *mut IDXVAHD_Device,
547 ) -> HRESULT;
548 }
549 FN!{stdcall PDXVAHD_CreateDevice(
550 pD3DDevice: *mut IDirect3DDevice9Ex,
551 pContentDesc: *const DXVAHD_CONTENT_DESC,
552 Usage: DXVAHD_DEVICE_USAGE,
553 pPlugin: PDXVAHDSW_Plugin,
554 ppDevice: *mut *mut IDXVAHD_Device,
555 ) -> HRESULT}