// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use ctypes::c_void;
use shared::d3d9::{IDirect3DDevice9Ex, IDirect3DSurface9};
use shared::d3d9types::{D3DCOLOR, D3DFORMAT, D3DPOOL};
use shared::guiddef::GUID;
use shared::minwindef::{BOOL, DWORD, FLOAT, INT, UINT};
use shared::windef::{RECT, SIZE};
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::winnt::{HANDLE, HRESULT, ULONGLONG};
DEFINE_GUID!{IID_IDXVAHD_Device,
0 x95f12dfd,
0 xd77e,
0 x49be,
0 x81,
0 x5f,
0 x57,
0 xd5,
0 x79,
0 x63,
0 x4d,
0 x6d}
DEFINE_GUID!{IID_IDXVAHD_VideoProcessor,
0 x95f4edf4,
0 x6e03,
0 x4cd7,
0 xbe,
0 x1b,
0 x30,
0 x75,
0 xd6,
0 x65,
0 xaa,
0 x52}
ENUM !{
enum DXVAHD_FRAME_FORMAT {
DXVAHD_FRAME_FORMAT_PROGRESSIVE =
0 ,
DXVAHD_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST =
1 ,
DXVAHD_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST =
2 ,
}}
ENUM !{
enum DXVAHD_DEVICE_USAGE {
DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL =
0 ,
DXVAHD_DEVICE_USAGE_OPTIMAL_SPEED =
1 ,
DXVAHD_DEVICE_USAGE_OPTIMAL_QUALITY =
2 ,
}}
ENUM !{
enum DXVAHD_SURFACE_TYPE {
DXVAHD_SURFACE_TYPE_VIDEO_INPUT =
0 ,
DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE =
1 ,
DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT =
2 ,
}}
ENUM !{
enum DXVAHD_DEVICE_TYPE {
DXVAHD_DEVICE_TYPE_HARDWARE =
0 ,
DXVAHD_DEVICE_TYPE_SOFTWARE =
1 ,
DXVAHD_DEVICE_TYPE_REFERENCE =
2 ,
DXVAHD_DEVICE_TYPE_OTHER =
3 ,
}}
ENUM !{
enum DXVAHD_DEVICE_CAPS {
DXVAHD_DEVICE_CAPS_LINEAR_SPACE =
0 x1,
DXVAHD_DEVICE_CAPS_xvYCC =
0 x2,
DXVAHD_DEVICE_CAPS_RGB_RANGE_CONVERSION =
0 x4,
DXVAHD_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION =
0 x8,
}}
ENUM !{
enum DXVAHD_FEATURE_CAPS {
DXVAHD_FEATURE_CAPS_ALPHA_FILL =
0 x1,
DXVAHD_FEATURE_CAPS_CONSTRICTION =
0 x2,
DXVAHD_FEATURE_CAPS_LUMA_KEY =
0 x4,
DXVAHD_FEATURE_CAPS_ALPHA_PALETTE =
0 x8,
}}
ENUM !{
enum DXVAHD_FILTER_CAPS {
DXVAHD_FILTER_CAPS_BRIGHTNESS =
0 x1,
DXVAHD_FILTER_CAPS_CONTRAST =
0 x2,
DXVAHD_FILTER_CAPS_HUE =
0 x4,
DXVAHD_FILTER_CAPS_SATURATION =
0 x8,
DXVAHD_FILTER_CAPS_NOISE_REDUCTION =
0 x10,
DXVAHD_FILTER_CAPS_EDGE_ENHANCEMENT =
0 x20,
DXVAHD_FILTER_CAPS_ANAMORPHIC_SCALING =
0 x40,
}}
ENUM !{
enum DXVAHD_INPUT_FORMAT_CAPS {
DXVAHD_INPUT_FORMAT_CAPS_RGB_INTERLACED =
0 x1,
DXVAHD_INPUT_FORMAT_CAPS_RGB_PROCAMP =
0 x2,
DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY =
0 x4,
DXVAHD_INPUT_FORMAT_CAPS_PALETTE_INTERLACED =
0 x8,
}}
ENUM !{
enum DXVAHD_PROCESSOR_CAPS {
DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BLEND =
0 x1,
DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BOB =
0 x2,
DXVAHD_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE =
0 x4,
DXVAHD_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION =
0 x8,
DXVAHD_PROCESSOR_CAPS_INVERSE_TELECINE =
0 x10,
DXVAHD_PROCESSOR_CAPS_FRAME_RATE_CONVERSION =
0 x20,
}}
ENUM !{
enum DXVAHD_ITELECINE_CAPS {
DXVAHD_ITELECINE_CAPS_32 =
0 x1,
DXVAHD_ITELECINE_CAPS_22 =
0 x2,
DXVAHD_ITELECINE_CAPS_2224 =
0 x4,
DXVAHD_ITELECINE_CAPS_2332 =
0 x8,
DXVAHD_ITELECINE_CAPS_32322 =
0 x10,
DXVAHD_ITELECINE_CAPS_55 =
0 x20,
DXVAHD_ITELECINE_CAPS_64 =
0 x40,
DXVAHD_ITELECINE_CAPS_87 =
0 x80,
DXVAHD_ITELECINE_CAPS_222222222223 =
0 x100,
DXVAHD_ITELECINE_CAPS_OTHER =
0 x80000000,
}}
ENUM !{
enum DXVAHD_FILTER {
DXVAHD_FILTER_BRIGHTNESS =
0 ,
DXVAHD_FILTER_CONTRAST =
1 ,
DXVAHD_FILTER_HUE =
2 ,
DXVAHD_FILTER_SATURATION =
3 ,
DXVAHD_FILTER_NOISE_REDUCTION =
4 ,
DXVAHD_FILTER_EDGE_ENHANCEMENT =
5 ,
DXVAHD_FILTER_ANAMORPHIC_SCALING =
6 ,
}}
ENUM !{
enum DXVAHD_BLT_STATE {
DXVAHD_BLT_STATE_TARGET_RECT =
0 ,
DXVAHD_BLT_STATE_BACKGROUND_COLOR =
1 ,
DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE =
2 ,
DXVAHD_BLT_STATE_ALPHA_FILL =
3 ,
DXVAHD_BLT_STATE_CONSTRICTION =
4 ,
DXVAHD_BLT_STATE_PRIVATE =
1000 ,
}}
ENUM !{
enum DXVAHD_ALPHA_FILL_MODE {
DXVAHD_ALPHA_FILL_MODE_OPAQUE =
0 ,
DXVAHD_ALPHA_FILL_MODE_BACKGROUND =
1 ,
DXVAHD_ALPHA_FILL_MODE_DESTINATION =
2 ,
DXVAHD_ALPHA_FILL_MODE_SOURCE_STREAM =
3 ,
}}
ENUM !{
enum DXVAHD_STREAM_STATE {
DXVAHD_STREAM_STATE_D3DFORMAT =
0 ,
DXVAHD_STREAM_STATE_FRAME_FORMAT =
1 ,
DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE =
2 ,
DXVAHD_STREAM_STATE_OUTPUT_RATE =
3 ,
DXVAHD_STREAM_STATE_SOURCE_RECT =
4 ,
DXVAHD_STREAM_STATE_DESTINATION_RECT =
5 ,
DXVAHD_STREAM_STATE_ALPHA =
6 ,
DXVAHD_STREAM_STATE_PALETTE =
7 ,
DXVAHD_STREAM_STATE_LUMA_KEY =
8 ,
DXVAHD_STREAM_STATE_ASPECT_RATIO =
9 ,
DXVAHD_STREAM_STATE_FILTER_BRIGHTNESS =
100 ,
DXVAHD_STREAM_STATE_FILTER_CONTRAST =
101 ,
DXVAHD_STREAM_STATE_FILTER_HUE =
102 ,
DXVAHD_STREAM_STATE_FILTER_SATURATION =
103 ,
DXVAHD_STREAM_STATE_FILTER_NOISE_REDUCTION =
104 ,
DXVAHD_STREAM_STATE_FILTER_EDGE_ENHANCEMENT =
105 ,
DXVAHD_STREAM_STATE_FILTER_ANAMORPHIC_SCALING =
106 ,
DXVAHD_STREAM_STATE_PRIVATE =
1000 ,
}}
ENUM !{
enum DXVAHD_OUTPUT_RATE {
DXVAHD_OUTPUT_RATE_NORMAL =
0 ,
DXVAHD_OUTPUT_RATE_HALF =
1 ,
DXVAHD_OUTPUT_RATE_CUSTOM =
2 ,
}}
STRUCT !{
struct DXVAHD_RATIONAL {
Numerator: UINT,
Denominator: UINT,
}}
STRUCT !{
struct DXVAHD_COLOR_RGBA {
R: FLOAT,
G: FLOAT,
B: FLOAT,
A: FLOAT,
}}
STRUCT !{
struct DXVAHD_COLOR_YCbCrA {
Y: FLOAT,
Cb: FLOAT,
Cr: FLOAT,
A: FLOAT,
}}
UNION!{union DXVAHD_COLOR {
[u32;
4 ],
RGB RGB_mut: DXVAHD_COLOR_RGBA,
YCbCr YCbCr_mut: DXVAHD_COLOR_YCbCrA,
}}
STRUCT !{
struct DXVAHD_CONTENT_DESC {
InputFrameFormat: DXVAHD_FRAME_FORMAT,
InputFrameRate: DXVAHD_RATIONAL,
InputWidth: UINT,
InputHeight: UINT,
OutputFrameRate: DXVAHD_RATIONAL,
OutputWidth: UINT,
OutputHeight: UINT,
}}
STRUCT !{
struct DXVAHD_VPDEVCAPS {
DeviceType: DXVAHD_DEVICE_TYPE,
DeviceCaps: UINT,
FeatureCaps: UINT,
FilterCaps: UINT,
InputFormatCaps: UINT,
InputPool: D3DPOOL,
OutputFormatCount: UINT,
InputFormatCount: UINT,
VideoProcessorCount: UINT,
MaxInputStreams: UINT,
MaxStreamStates: UINT,
}}
STRUCT !{
struct DXVAHD_VPCAPS {
VPGuid: GUID,
PastFrames: UINT,
FutureFrames: UINT,
ProcessorCaps: UINT,
ITelecineCaps: UINT,
CustomRateCount: UINT,
}}
STRUCT !{
struct DXVAHD_CUSTOM_RATE_DATA {
CustomRate: DXVAHD_RATIONAL,
OutputFrames: UINT,
InputInterlaced: BOOL,
InputFramesOrFields: UINT,
}}
STRUCT !{
struct DXVAHD_FILTER_RANGE_DATA {
Minimum: INT,
Maximum: INT,
Default: INT,
Multiplier: FLOAT,
}}
STRUCT !{
struct DXVAHD_BLT_STATE_TARGET_RECT_DATA {
Enable: BOOL,
TargetRect: RECT,
}}
STRUCT !{
struct DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA {
YCbCr: BOOL,
BackgroundColor: DXVAHD_COLOR,
}}
STRUCT !{
struct DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA {
Value: UINT,
}}
BITFIELD!{DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA Value: UINT [
Usage set_Usage[
0 ..
1 ],
RGB_Range set_RGB_Range[
1 ..
2 ],
YCbCr_Matrix set_YCbCr_Matrix[
2 ..
3 ],
YCbCr_xvYCC set_YCbCr_xvYCC[
3 ..
4 ],
Reserved set_Reserved[
4 ..
32 ],
]}
STRUCT !{
struct DXVAHD_BLT_STATE_ALPHA_FILL_DATA {
Mode: DXVAHD_ALPHA_FILL_MODE,
StreamNumber: UINT,
}}
STRUCT !{
struct DXVAHD_BLT_STATE_CONSTRICTION_DATA {
Enable: BOOL,
Size: SIZE,
}}
STRUCT !{
struct DXVAHD_BLT_STATE_PRIVATE_DATA {
Guid: GUID,
DataSize: UINT,
pData: *
mut c_void,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_D3DFORMAT_DATA {
Format: D3DFORMAT,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA {
FrameFormat: DXVAHD_FRAME_FORMAT,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA {
Value: UINT,
}}
BITFIELD!{DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA Value: UINT [
Type set_Type[
0 ..
1 ],
RGB_Range set_RGB_Range[
1 ..
2 ],
YCbCr_Matrix set_YCbCr_Matrix[
2 ..
3 ],
YCbCr_xvYCC set_YCbCr_xvYCC[
3 ..
4 ],
Reserved set_Reserved[
4 ..
32 ],
]}
STRUCT !{
struct DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA {
RepeatFrame: BOOL,
OutputRate: DXVAHD_OUTPUT_RATE,
CustomRate: DXVAHD_RATIONAL,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_SOURCE_RECT_DATA {
Enable: BOOL,
SourceRect: RECT,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA {
Enable: BOOL,
DestinationRect: RECT,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_ALPHA_DATA {
Enable: BOOL,
Alpha: FLOAT,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_PALETTE_DATA {
Count: UINT,
pEntries: *
mut D3DCOLOR,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_LUMA_KEY_DATA {
Enable: BOOL,
Lower: FLOAT,
Upper: FLOAT,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA {
Enable: BOOL,
SourceAspectRatio: DXVAHD_RATIONAL,
DestinationAspectRatio: DXVAHD_RATIONAL,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_FILTER_DATA {
Enable: BOOL,
Level: INT,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_PRIVATE_DATA {
Guid: GUID,
DataSize: UINT,
pData: *
mut c_void,
}}
STRUCT !{
struct DXVAHD_STREAM_DATA {
Enable: BOOL,
OutputIndex: UINT,
InputFrameOrField: UINT,
PastFrames: UINT,
FutureFrames: UINT,
ppPastSurfaces: *
mut *
mut IDirect3DSurface9,
pInputSurface: *
mut IDirect3DSurface9,
ppFutureSurfaces: *
mut *
mut IDirect3DSurface9,
}}
STRUCT !{
struct DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA {
Enable: BOOL,
ITelecineFlags: UINT,
Frames: UINT,
InputField: UINT,
}}
RIDL!{
#[ uuid(
0 x95f12dfd,
0 xd77e,
0 x49be,
0 x81,
0 x5f,
0 x57,
0 xd5,
0 x79,
0 x63,
0 x4d,
0 x6d)]
interface IDXVAHD_Device(IDXVAHD_DeviceVtbl): IUnknown(IUnknownVtbl) {
fn CreateVideoSurface(
Width: UINT,
Height: UINT,
Format: D3DFORMAT,
Pool: D3DPOOL,
Usage: DWORD,
Type : DXVAHD_SURFACE_TYPE,
NumSurfaces: UINT,
ppSurfaces: *
mut *
mut IDirect3DSurface9,
pSharedHandle: *
mut HANDLE,
) -> HRESULT,
fn GetVideoProcessorDeviceCaps(
pCaps: *
mut DXVAHD_VPDEVCAPS,
) -> HRESULT,
fn GetVideoProcessorOutputFormats(
Count: UINT,
pFormats: *
mut D3DFORMAT,
) -> HRESULT,
fn GetVideoProcessorInputFormats(
Count: UINT,
pFormats: *
mut D3DFORMAT,
) -> HRESULT,
fn GetVideoProcessorCaps(
Count: UINT,
pCaps: *
mut DXVAHD_VPCAPS,
) -> HRESULT,
fn GetVideoProcessorCustomRates(
pVPGuid: *
const GUID,
Count: UINT,
pRates: *
mut DXVAHD_CUSTOM_RATE_DATA,
) -> HRESULT,
fn GetVideoProcessorFilterRange(
Filter: DXVAHD_FILTER,
pRange: *
mut DXVAHD_FILTER_RANGE_DATA,
) -> HRESULT,
fn CreateVideoProcessor(
pVPGuid: *
const GUID,
ppVideoProcessor: *
mut *
mut IDXVAHD_VideoProcessor,
) -> HRESULT,
}}
RIDL!{
#[ uuid(
0 x95f4edf4,
0 x6e03,
0 x4cd7,
0 xbe,
0 x1b,
0 x30,
0 x75,
0 xd6,
0 x65,
0 xaa,
0 x52)]
interface IDXVAHD_VideoProcessor(IDXVAHD_VideoProcessorVtbl): IUnknown(IUnknownVtb
l) {
fn SetVideoProcessBltState(
State: DXVAHD_BLT_STATE,
DataSize: UINT,
pData: *const c_void,
) -> HRESULT,
fn GetVideoProcessBltState(
State: DXVAHD_BLT_STATE,
DataSize: UINT,
pData: *mut c_void,
) -> HRESULT,
fn SetVideoProcessStreamState(
StreamNumber: UINT,
State: DXVAHD_STREAM_STATE,
DataSize: UINT,
pData: *const c_void,
) -> HRESULT,
fn GetVideoProcessStreamState(
StreamNumber: UINT,
State: DXVAHD_STREAM_STATE,
DataSize: UINT,
pData: *mut c_void,
) -> HRESULT,
fn VideoProcessBltHD(
pOutputSurface: *mut IDirect3DSurface9,
OutputFrame: UINT,
StreamCount: UINT,
pStreams: *const DXVAHD_STREAM_DATA,
) -> HRESULT,
}}
FN !{stdcall PDXVAHDSW_CreateDevice(
pD3DDevice: *mut IDirect3DDevice9Ex,
phDevice: *mut HANDLE,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_ProposeVideoPrivateFormat(
hDevice: HANDLE,
pFormat: *mut D3DFORMAT,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_GetVideoProcessorDeviceCaps(
hDevice: HANDLE,
pContentDesc: *const DXVAHD_CONTENT_DESC,
Usage: DXVAHD_DEVICE_USAGE,
pCaps: *mut DXVAHD_VPDEVCAPS,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_GetVideoProcessorOutputFormats(
hDevice: HANDLE,
pContentDesc: *const DXVAHD_CONTENT_DESC,
Usage: DXVAHD_DEVICE_USAGE,
Count: UINT,
pFormats: *mut D3DFORMAT,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_GetVideoProcessorInputFormats(
hDevice: HANDLE,
pContentDesc: *const DXVAHD_CONTENT_DESC,
Usage: DXVAHD_DEVICE_USAGE,
Count: UINT,
pFormats: *mut D3DFORMAT,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_GetVideoProcessorCaps(
hDevice: HANDLE,
pContentDesc: *const DXVAHD_CONTENT_DESC,
Usage: DXVAHD_DEVICE_USAGE,
Count: UINT,
pCaps: *mut DXVAHD_VPCAPS,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_GetVideoProcessorCustomRates(
hDevice: HANDLE,
pVPGuid: *const GUID,
Count: UINT,
pRates: *mut DXVAHD_CUSTOM_RATE_DATA,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_GetVideoProcessorFilterRange(
hDevice: HANDLE,
Filter: DXVAHD_FILTER,
pRange: *mut DXVAHD_FILTER_RANGE_DATA,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_DestroyDevice(
hDevice: HANDLE,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_CreateVideoProcessor(
hDevice: HANDLE,
pVPGuid: *const GUID,
phVideoProcessor: *mut HANDLE,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_SetVideoProcessBltState(
hVideoProcessor: HANDLE,
State: DXVAHD_BLT_STATE,
DataSize: UINT,
pData: *const c_void,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_GetVideoProcessBltStatePrivate(
hVideoProcessor: HANDLE,
pData: *mut DXVAHD_BLT_STATE_PRIVATE_DATA,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_SetVideoProcessStreamState(
hVideoProcessor: HANDLE,
StreamNumber: UINT,
State: DXVAHD_STREAM_STATE,
DataSize: UINT,
pData: *const c_void,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_GetVideoProcessStreamStatePrivate(
hVideoProcessor: HANDLE,
StreamNumber: UINT,
pData: *mut DXVAHD_STREAM_STATE_PRIVATE_DATA,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_VideoProcessBltHD(
hVideoProcessor: HANDLE,
pOutputSurface: *mut IDirect3DSurface9,
OutputFrame: UINT,
StreamCount: UINT,
pStreams: *const DXVAHD_STREAM_DATA,
) -> HRESULT}
FN !{stdcall PDXVAHDSW_DestroyVideoProcessor(
hVideoProcessor: HANDLE,
) -> HRESULT}
STRUCT !{struct DXVAHDSW_CALLBACKS {
CreateDevice: PDXVAHDSW_CreateDevice,
ProposeVideoPrivateFormat: PDXVAHDSW_ProposeVideoPrivateFormat,
GetVideoProcessorDeviceCaps: PDXVAHDSW_GetVideoProcessorDeviceCaps,
GetVideoProcessorOutputFormats: PDXVAHDSW_GetVideoProcessorOutputFormats,
GetVideoProcessorInputFormats: PDXVAHDSW_GetVideoProcessorInputFormats,
GetVideoProcessorCaps: PDXVAHDSW_GetVideoProcessorCaps,
GetVideoProcessorCustomRates: PDXVAHDSW_GetVideoProcessorCustomRates,
GetVideoProcessorFilterRange: PDXVAHDSW_GetVideoProcessorFilterRange,
DestroyDevice: PDXVAHDSW_DestroyDevice,
CreateVideoProcessor: PDXVAHDSW_CreateVideoProcessor,
SetVideoProcessBltState: PDXVAHDSW_SetVideoProcessBltState,
GetVideoProcessBltStatePrivate: PDXVAHDSW_GetVideoProcessBltStatePrivate,
SetVideoProcessStreamState: PDXVAHDSW_SetVideoProcessStreamState,
GetVideoProcessStreamStatePrivate: PDXVAHDSW_GetVideoProcessStreamStatePrivate,
VideoProcessBltHD: PDXVAHDSW_VideoProcessBltHD,
DestroyVideoProcessor: PDXVAHDSW_DestroyVideoProcessor,
}}
FN !{stdcall PDXVAHDSW_Plugin(
Size: UINT,
pCallbacks: *mut c_void,
) -> HRESULT}
DEFINE_GUID!{DXVAHDControlGuid,
0 xa0386e75, 0 xf70c, 0 x464c, 0 xa9, 0 xce, 0 x33, 0 xc4, 0 x4e, 0 x09, 0 x16, 0 x23}
DEFINE_GUID!{DXVAHDETWGUID_CREATEVIDEOPROCESSOR,
0 x681e3d1e, 0 x5674, 0 x4fb3, 0 xa5, 0 x03, 0 x2f, 0 x20, 0 x55, 0 xe9, 0 x1f, 0 x60}
DEFINE_GUID!{DXVAHDETWGUID_VIDEOPROCESSBLTSTATE,
0 x76c94b5a, 0 x193f, 0 x4692, 0 x94, 0 x84, 0 xa4, 0 xd9, 0 x99, 0 xda, 0 x81, 0 xa8}
DEFINE_GUID!{DXVAHDETWGUID_VIDEOPROCESSSTREAMSTATE,
0 x262c0b02, 0 x209d, 0 x47ed, 0 x94, 0 xd8, 0 x82, 0 xae, 0 x02, 0 xb8, 0 x4a, 0 xa7}
DEFINE_GUID!{DXVAHDETWGUID_VIDEOPROCESSBLTHD,
0 xbef3d435, 0 x78c7, 0 x4de3, 0 x97, 0 x07, 0 xcd, 0 x1b, 0 x08, 0 x3b, 0 x16, 0 x0a}
DEFINE_GUID!{DXVAHDETWGUID_VIDEOPROCESSBLTHD_STREAM,
0 x27ae473e, 0 xa5fc, 0 x4be5, 0 xb4, 0 xe3, 0 xf2, 0 x49, 0 x94, 0 xd3, 0 xc4, 0 x95}
DEFINE_GUID!{DXVAHDETWGUID_DESTROYVIDEOPROCESSOR,
0 xf943f0a0, 0 x3f16, 0 x43e0, 0 x80, 0 x93, 0 x10, 0 x5a, 0 x98, 0 x6a, 0 xa5, 0 xf1}
STRUCT !{struct DXVAHDETW_CREATEVIDEOPROCESSOR {
pObject: ULONGLONG,
pD3D9Ex: ULONGLONG,
VPGuid: GUID,
}}
STRUCT !{struct DXVAHDETW_VIDEOPROCESSBLTSTATE {
pObject: ULONGLONG,
State: DXVAHD_BLT_STATE,
DataSize: UINT,
SetState: BOOL,
}}
STRUCT !{struct DXVAHDETW_VIDEOPROCESSSTREAMSTATE {
pObject: ULONGLONG,
StreamNumber: UINT,
State: DXVAHD_STREAM_STATE,
DataSize: UINT,
SetState: BOOL,
}}
STRUCT !{struct DXVAHDETW_VIDEOPROCESSBLTHD {
pObject: ULONGLONG,
pOutputSurface: ULONGLONG,
TargetRect: RECT,
OutputFormat: D3DFORMAT,
ColorSpace: UINT,
OutputFrame: UINT,
StreamCount: UINT,
Enter: BOOL,
}}
STRUCT !{struct DXVAHDETW_VIDEOPROCESSBLTHD_STREAM {
pObject: ULONGLONG,
pInputSurface: ULONGLONG,
SourceRect: RECT,
DestinationRect: RECT,
InputFormat: D3DFORMAT,
FrameFormat: DXVAHD_FRAME_FORMAT,
ColorSpace: UINT,
StreamNumber: UINT,
OutputIndex: UINT,
InputFrameOrField: UINT,
PastFrames: UINT,
FutureFrames: UINT,
}}
STRUCT !{struct DXVAHDETW_DESTROYVIDEOPROCESSOR {
pObject: ULONGLONG,
}}
extern "system" {
pub fn DXVAHD_CreateDevice(
pD3DDevice: *mut IDirect3DDevice9Ex,
pContentDesc: *const DXVAHD_CONTENT_DESC,
Usage: DXVAHD_DEVICE_USAGE,
pPlugin: PDXVAHDSW_Plugin,
ppDevice: *mut *mut IDXVAHD_Device,
) -> HRESULT;
}
FN !{stdcall PDXVAHD_CreateDevice(
pD3DDevice: *mut IDirect3DDevice9Ex,
pContentDesc: *const DXVAHD_CONTENT_DESC,
Usage: DXVAHD_DEVICE_USAGE,
pPlugin: PDXVAHDSW_Plugin,
ppDevice: *mut *mut IDXVAHD_Device,
) -> HRESULT}
Messung V0.5 in Prozent C=98 H=98 G=97
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland