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.
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
129 ENUM
!{enum DXVAHD_OUTPUT_RATE
{
130 DXVAHD_OUTPUT_RATE_NORMAL
= 0,
131 DXVAHD_OUTPUT_RATE_HALF
= 1,
132 DXVAHD_OUTPUT_RATE_CUSTOM
= 2,
134 STRUCT
!{struct DXVAHD_RATIONAL
{
138 STRUCT
!{struct DXVAHD_COLOR_RGBA
{
144 STRUCT
!{struct DXVAHD_COLOR_YCbCrA
{
150 UNION
!{union DXVAHD_COLOR
{
152 RGB RGB_mut
: DXVAHD_COLOR_RGBA
,
153 YCbCr YCbCr_mut
: DXVAHD_COLOR_YCbCrA
,
155 STRUCT
!{struct DXVAHD_CONTENT_DESC
{
156 InputFrameFormat
: DXVAHD_FRAME_FORMAT
,
157 InputFrameRate
: DXVAHD_RATIONAL
,
160 OutputFrameRate
: DXVAHD_RATIONAL
,
164 STRUCT
!{struct DXVAHD_VPDEVCAPS
{
165 DeviceType
: DXVAHD_DEVICE_TYPE
,
169 InputFormatCaps
: UINT
,
171 OutputFormatCount
: UINT
,
172 InputFormatCount
: UINT
,
173 VideoProcessorCount
: UINT
,
174 MaxInputStreams
: UINT
,
175 MaxStreamStates
: UINT
,
177 STRUCT
!{struct DXVAHD_VPCAPS
{
183 CustomRateCount
: UINT
,
185 STRUCT
!{struct DXVAHD_CUSTOM_RATE_DATA
{
186 CustomRate
: DXVAHD_RATIONAL
,
188 InputInterlaced
: BOOL
,
189 InputFramesOrFields
: UINT
,
191 STRUCT
!{struct DXVAHD_FILTER_RANGE_DATA
{
197 STRUCT
!{struct DXVAHD_BLT_STATE_TARGET_RECT_DATA
{
201 STRUCT
!{struct DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA
{
203 BackgroundColor
: DXVAHD_COLOR
,
205 STRUCT
!{struct DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA
{
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],
215 STRUCT
!{struct DXVAHD_BLT_STATE_ALPHA_FILL_DATA
{
216 Mode
: DXVAHD_ALPHA_FILL_MODE
,
219 STRUCT
!{struct DXVAHD_BLT_STATE_CONSTRICTION_DATA
{
223 STRUCT
!{struct DXVAHD_BLT_STATE_PRIVATE_DATA
{
228 STRUCT
!{struct DXVAHD_STREAM_STATE_D3DFORMAT_DATA
{
231 STRUCT
!{struct DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA
{
232 FrameFormat
: DXVAHD_FRAME_FORMAT
,
234 STRUCT
!{struct DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA
{
237 BITFIELD
!{DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA Value
: UINT
[
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],
244 STRUCT
!{struct DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA
{
246 OutputRate
: DXVAHD_OUTPUT_RATE
,
247 CustomRate
: DXVAHD_RATIONAL
,
249 STRUCT
!{struct DXVAHD_STREAM_STATE_SOURCE_RECT_DATA
{
253 STRUCT
!{struct DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA
{
255 DestinationRect
: RECT
,
257 STRUCT
!{struct DXVAHD_STREAM_STATE_ALPHA_DATA
{
261 STRUCT
!{struct DXVAHD_STREAM_STATE_PALETTE_DATA
{
263 pEntries
: *mut D3DCOLOR
,
265 STRUCT
!{struct DXVAHD_STREAM_STATE_LUMA_KEY_DATA
{
270 STRUCT
!{struct DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA
{
272 SourceAspectRatio
: DXVAHD_RATIONAL
,
273 DestinationAspectRatio
: DXVAHD_RATIONAL
,
275 STRUCT
!{struct DXVAHD_STREAM_STATE_FILTER_DATA
{
279 STRUCT
!{struct DXVAHD_STREAM_STATE_PRIVATE_DATA
{
284 STRUCT
!{struct DXVAHD_STREAM_DATA
{
287 InputFrameOrField
: UINT
,
290 ppPastSurfaces
: *mut *mut IDirect3DSurface9
,
291 pInputSurface
: *mut IDirect3DSurface9
,
292 ppFutureSurfaces
: *mut *mut IDirect3DSurface9
,
294 STRUCT
!{struct DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA
{
296 ITelecineFlags
: UINT
,
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(
308 Type
: DXVAHD_SURFACE_TYPE
,
310 ppSurfaces
: *mut *mut IDirect3DSurface9
,
311 pSharedHandle
: *mut HANDLE
,
313 fn GetVideoProcessorDeviceCaps(
314 pCaps
: *mut DXVAHD_VPDEVCAPS
,
316 fn GetVideoProcessorOutputFormats(
318 pFormats
: *mut D3DFORMAT
,
320 fn GetVideoProcessorInputFormats(
322 pFormats
: *mut D3DFORMAT
,
324 fn GetVideoProcessorCaps(
326 pCaps
: *mut DXVAHD_VPCAPS
,
328 fn GetVideoProcessorCustomRates(
329 pVPGuid
: *const GUID
,
331 pRates
: *mut DXVAHD_CUSTOM_RATE_DATA
,
333 fn GetVideoProcessorFilterRange(
334 Filter
: DXVAHD_FILTER
,
335 pRange
: *mut DXVAHD_FILTER_RANGE_DATA
,
337 fn CreateVideoProcessor(
338 pVPGuid
: *const GUID
,
339 ppVideoProcessor
: *mut *mut IDXVAHD_VideoProcessor
,
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
,
347 pData
: *const c_void
,
349 fn GetVideoProcessBltState(
350 State
: DXVAHD_BLT_STATE
,
354 fn SetVideoProcessStreamState(
356 State
: DXVAHD_STREAM_STATE
,
358 pData
: *const c_void
,
360 fn GetVideoProcessStreamState(
362 State
: DXVAHD_STREAM_STATE
,
366 fn VideoProcessBltHD(
367 pOutputSurface
: *mut IDirect3DSurface9
,
370 pStreams
: *const DXVAHD_STREAM_DATA
,
373 FN
!{stdcall
PDXVAHDSW_CreateDevice(
374 pD3DDevice
: *mut IDirect3DDevice9Ex
,
375 phDevice
: *mut HANDLE
,
377 FN
!{stdcall
PDXVAHDSW_ProposeVideoPrivateFormat(
379 pFormat
: *mut D3DFORMAT
,
381 FN
!{stdcall
PDXVAHDSW_GetVideoProcessorDeviceCaps(
383 pContentDesc
: *const DXVAHD_CONTENT_DESC
,
384 Usage
: DXVAHD_DEVICE_USAGE
,
385 pCaps
: *mut DXVAHD_VPDEVCAPS
,
387 FN
!{stdcall
PDXVAHDSW_GetVideoProcessorOutputFormats(
389 pContentDesc
: *const DXVAHD_CONTENT_DESC
,
390 Usage
: DXVAHD_DEVICE_USAGE
,
392 pFormats
: *mut D3DFORMAT
,
394 FN
!{stdcall
PDXVAHDSW_GetVideoProcessorInputFormats(
396 pContentDesc
: *const DXVAHD_CONTENT_DESC
,
397 Usage
: DXVAHD_DEVICE_USAGE
,
399 pFormats
: *mut D3DFORMAT
,
401 FN
!{stdcall
PDXVAHDSW_GetVideoProcessorCaps(
403 pContentDesc
: *const DXVAHD_CONTENT_DESC
,
404 Usage
: DXVAHD_DEVICE_USAGE
,
406 pCaps
: *mut DXVAHD_VPCAPS
,
408 FN
!{stdcall
PDXVAHDSW_GetVideoProcessorCustomRates(
410 pVPGuid
: *const GUID
,
412 pRates
: *mut DXVAHD_CUSTOM_RATE_DATA
,
414 FN
!{stdcall
PDXVAHDSW_GetVideoProcessorFilterRange(
416 Filter
: DXVAHD_FILTER
,
417 pRange
: *mut DXVAHD_FILTER_RANGE_DATA
,
419 FN
!{stdcall
PDXVAHDSW_DestroyDevice(
422 FN
!{stdcall
PDXVAHDSW_CreateVideoProcessor(
424 pVPGuid
: *const GUID
,
425 phVideoProcessor
: *mut HANDLE
,
427 FN
!{stdcall
PDXVAHDSW_SetVideoProcessBltState(
428 hVideoProcessor
: HANDLE
,
429 State
: DXVAHD_BLT_STATE
,
431 pData
: *const c_void
,
433 FN
!{stdcall
PDXVAHDSW_GetVideoProcessBltStatePrivate(
434 hVideoProcessor
: HANDLE
,
435 pData
: *mut DXVAHD_BLT_STATE_PRIVATE_DATA
,
437 FN
!{stdcall
PDXVAHDSW_SetVideoProcessStreamState(
438 hVideoProcessor
: HANDLE
,
440 State
: DXVAHD_STREAM_STATE
,
442 pData
: *const c_void
,
444 FN
!{stdcall
PDXVAHDSW_GetVideoProcessStreamStatePrivate(
445 hVideoProcessor
: HANDLE
,
447 pData
: *mut DXVAHD_STREAM_STATE_PRIVATE_DATA
,
449 FN
!{stdcall
PDXVAHDSW_VideoProcessBltHD(
450 hVideoProcessor
: HANDLE
,
451 pOutputSurface
: *mut IDirect3DSurface9
,
454 pStreams
: *const DXVAHD_STREAM_DATA
,
456 FN
!{stdcall
PDXVAHDSW_DestroyVideoProcessor(
457 hVideoProcessor
: HANDLE
,
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
,
477 FN
!{stdcall
PDXVAHDSW_Plugin(
479 pCallbacks
: *mut c_void
,
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
{
500 STRUCT
!{struct DXVAHDETW_VIDEOPROCESSBLTSTATE
{
502 State
: DXVAHD_BLT_STATE
,
506 STRUCT
!{struct DXVAHDETW_VIDEOPROCESSSTREAMSTATE
{
509 State
: DXVAHD_STREAM_STATE
,
513 STRUCT
!{struct DXVAHDETW_VIDEOPROCESSBLTHD
{
515 pOutputSurface
: ULONGLONG
,
517 OutputFormat
: D3DFORMAT
,
523 STRUCT
!{struct DXVAHDETW_VIDEOPROCESSBLTHD_STREAM
{
525 pInputSurface
: ULONGLONG
,
527 DestinationRect
: RECT
,
528 InputFormat
: D3DFORMAT
,
529 FrameFormat
: DXVAHD_FRAME_FORMAT
,
533 InputFrameOrField
: UINT
,
537 STRUCT
!{struct DXVAHDETW_DESTROYVIDEOPROCESSOR
{
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
,
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
,