diff options
| author | 3gg <3gg@shellblade.net> | 2025-12-02 16:39:36 -0800 |
|---|---|---|
| committer | 3gg <3gg@shellblade.net> | 2025-12-02 16:39:36 -0800 |
| commit | 6c8ae19be66cee247980a48e736a4e05d14de179 (patch) | |
| tree | d860767907bf0cbe17ec66422e11bea700cf56d9 /contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl | |
| parent | 8f594c8ebd11f0e5f8a0c6369c3fe7383d250cbe (diff) | |
Diffstat (limited to 'contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl')
| -rw-r--r-- | contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl | 3818 |
1 files changed, 3818 insertions, 0 deletions
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl new file mode 100644 index 0000000..b2c930b --- /dev/null +++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl | |||
| @@ -0,0 +1,3818 @@ | |||
| 1 | /*------------------------------------------------------------------------------------- | ||
| 2 | * | ||
| 3 | * Copyright (c) Microsoft Corporation | ||
| 4 | * Licensed under the MIT license | ||
| 5 | * | ||
| 6 | *-------------------------------------------------------------------------------------*/ | ||
| 7 | import "oaidl.idl"; | ||
| 8 | import "ocidl.idl"; | ||
| 9 | |||
| 10 | import "dxgicommon.idl"; | ||
| 11 | import "d3d12.idl"; | ||
| 12 | |||
| 13 | cpp_quote("#include <winapifamily.h>") | ||
| 14 | |||
| 15 | #pragma region App Family | ||
| 16 | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)") | ||
| 17 | |||
| 18 | typedef enum D3D12_VIDEO_FIELD_TYPE | ||
| 19 | { | ||
| 20 | D3D12_VIDEO_FIELD_TYPE_NONE = 0, | ||
| 21 | D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1, | ||
| 22 | D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2, | ||
| 23 | } D3D12_VIDEO_FIELD_TYPE; | ||
| 24 | |||
| 25 | typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT | ||
| 26 | { | ||
| 27 | D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0, | ||
| 28 | D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1, | ||
| 29 | D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2, | ||
| 30 | D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3, | ||
| 31 | D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4, | ||
| 32 | } D3D12_VIDEO_FRAME_STEREO_FORMAT; | ||
| 33 | |||
| 34 | typedef struct D3D12_VIDEO_FORMAT | ||
| 35 | { | ||
| 36 | DXGI_FORMAT Format; | ||
| 37 | DXGI_COLOR_SPACE_TYPE ColorSpace; | ||
| 38 | } D3D12_VIDEO_FORMAT; | ||
| 39 | |||
| 40 | typedef struct D3D12_VIDEO_SAMPLE | ||
| 41 | { | ||
| 42 | UINT Width; | ||
| 43 | UINT Height; | ||
| 44 | D3D12_VIDEO_FORMAT Format; | ||
| 45 | } D3D12_VIDEO_SAMPLE; | ||
| 46 | |||
| 47 | typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE | ||
| 48 | { | ||
| 49 | D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0, | ||
| 50 | D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1, | ||
| 51 | } D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE; | ||
| 52 | |||
| 53 | typedef enum D3D12_FEATURE_VIDEO | ||
| 54 | { | ||
| 55 | D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0, | ||
| 56 | D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1, | ||
| 57 | D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2, | ||
| 58 | D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3, | ||
| 59 | D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5, | ||
| 60 | D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6, | ||
| 61 | D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7, | ||
| 62 | D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8, | ||
| 63 | D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9, | ||
| 64 | D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10, | ||
| 65 | D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11, | ||
| 66 | D3D12_FEATURE_VIDEO_ARCHITECTURE = 17, | ||
| 67 | D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18, | ||
| 68 | D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19, | ||
| 69 | D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20, | ||
| 70 | D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21, | ||
| 71 | D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22, | ||
| 72 | D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23, | ||
| 73 | D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24, | ||
| 74 | D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25, | ||
| 75 | D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26, | ||
| 76 | D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27, | ||
| 77 | D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28, | ||
| 78 | D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29, | ||
| 79 | D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30, | ||
| 80 | D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31, | ||
| 81 | D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32, | ||
| 82 | D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33, | ||
| 83 | D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34, | ||
| 84 | D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35, | ||
| 85 | D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36, | ||
| 86 | D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37, | ||
| 87 | D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38, | ||
| 88 | D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39, | ||
| 89 | D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40, | ||
| 90 | D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41, | ||
| 91 | D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42, | ||
| 92 | D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43, | ||
| 93 | D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44, | ||
| 94 | D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45, | ||
| 95 | D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46, | ||
| 96 | D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47, | ||
| 97 | D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48, | ||
| 98 | D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49, | ||
| 99 | D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50, | ||
| 100 | D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51, | ||
| 101 | D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52, | ||
| 102 | D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55, | ||
| 103 | D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56, | ||
| 104 | D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57, | ||
| 105 | |||
| 106 | } D3D12_FEATURE_VIDEO; | ||
| 107 | |||
| 108 | typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE | ||
| 109 | { | ||
| 110 | D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0, | ||
| 111 | } D3D12_BITSTREAM_ENCRYPTION_TYPE; | ||
| 112 | |||
| 113 | typedef struct D3D12_VIDEO_DECODE_CONFIGURATION | ||
| 114 | { | ||
| 115 | GUID DecodeProfile; | ||
| 116 | D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption; | ||
| 117 | D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType; | ||
| 118 | } D3D12_VIDEO_DECODE_CONFIGURATION; | ||
| 119 | |||
| 120 | typedef struct D3D12_VIDEO_DECODER_DESC | ||
| 121 | { | ||
| 122 | UINT NodeMask; | ||
| 123 | D3D12_VIDEO_DECODE_CONFIGURATION Configuration; | ||
| 124 | } D3D12_VIDEO_DECODER_DESC; | ||
| 125 | |||
| 126 | typedef struct D3D12_VIDEO_DECODER_HEAP_DESC | ||
| 127 | { | ||
| 128 | UINT NodeMask; | ||
| 129 | D3D12_VIDEO_DECODE_CONFIGURATION Configuration; | ||
| 130 | UINT DecodeWidth; | ||
| 131 | UINT DecodeHeight; | ||
| 132 | DXGI_FORMAT Format; | ||
| 133 | DXGI_RATIONAL FrameRate; | ||
| 134 | UINT BitRate; | ||
| 135 | UINT MaxDecodePictureBufferCount; | ||
| 136 | } D3D12_VIDEO_DECODER_HEAP_DESC; | ||
| 137 | |||
| 138 | typedef struct D3D12_VIDEO_SIZE_RANGE | ||
| 139 | { | ||
| 140 | UINT MaxWidth; | ||
| 141 | UINT MaxHeight; | ||
| 142 | UINT MinWidth; | ||
| 143 | UINT MinHeight; | ||
| 144 | } D3D12_VIDEO_SIZE_RANGE; | ||
| 145 | |||
| 146 | typedef enum D3D12_VIDEO_PROCESS_FILTER | ||
| 147 | { | ||
| 148 | D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0, | ||
| 149 | D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1, | ||
| 150 | D3D12_VIDEO_PROCESS_FILTER_HUE = 2, | ||
| 151 | D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3, | ||
| 152 | D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4, | ||
| 153 | D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5, | ||
| 154 | D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6, | ||
| 155 | D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7, | ||
| 156 | } D3D12_VIDEO_PROCESS_FILTER; | ||
| 157 | |||
| 158 | typedef enum D3D12_VIDEO_PROCESS_FILTER_FLAGS | ||
| 159 | { | ||
| 160 | D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0, | ||
| 161 | D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = (1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS), | ||
| 162 | D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = (1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST), | ||
| 163 | D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = (1 << D3D12_VIDEO_PROCESS_FILTER_HUE), | ||
| 164 | D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = (1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION), | ||
| 165 | D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = (1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION), | ||
| 166 | D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT), | ||
| 167 | D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = (1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING), | ||
| 168 | D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT), | ||
| 169 | |||
| 170 | } D3D12_VIDEO_PROCESS_FILTER_FLAGS; | ||
| 171 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )") | ||
| 172 | |||
| 173 | typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS | ||
| 174 | { | ||
| 175 | D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0, | ||
| 176 | D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1, | ||
| 177 | D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000, | ||
| 178 | |||
| 179 | } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS; | ||
| 180 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )") | ||
| 181 | |||
| 182 | typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING | ||
| 183 | { | ||
| 184 | BOOL Enable; | ||
| 185 | FLOAT Alpha; | ||
| 186 | } D3D12_VIDEO_PROCESS_ALPHA_BLENDING; | ||
| 187 | |||
| 188 | typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY | ||
| 189 | { | ||
| 190 | BOOL Enable; | ||
| 191 | FLOAT Lower; | ||
| 192 | FLOAT Upper; | ||
| 193 | } D3D12_VIDEO_PROCESS_LUMA_KEY; | ||
| 194 | |||
| 195 | typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC | ||
| 196 | { | ||
| 197 | DXGI_FORMAT Format; | ||
| 198 | DXGI_COLOR_SPACE_TYPE ColorSpace; | ||
| 199 | DXGI_RATIONAL SourceAspectRatio; | ||
| 200 | DXGI_RATIONAL DestinationAspectRatio; | ||
| 201 | DXGI_RATIONAL FrameRate; | ||
| 202 | D3D12_VIDEO_SIZE_RANGE SourceSizeRange; | ||
| 203 | D3D12_VIDEO_SIZE_RANGE DestinationSizeRange; | ||
| 204 | BOOL EnableOrientation; | ||
| 205 | D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags; | ||
| 206 | D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat; | ||
| 207 | D3D12_VIDEO_FIELD_TYPE FieldType; | ||
| 208 | D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode; | ||
| 209 | BOOL EnableAlphaBlending; | ||
| 210 | D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey; | ||
| 211 | UINT NumPastFrames; | ||
| 212 | UINT NumFutureFrames; | ||
| 213 | BOOL EnableAutoProcessing; | ||
| 214 | } D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC; | ||
| 215 | |||
| 216 | typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE | ||
| 217 | { | ||
| 218 | D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0, | ||
| 219 | D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1, | ||
| 220 | D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2, | ||
| 221 | D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3, | ||
| 222 | } D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE; | ||
| 223 | |||
| 224 | typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC | ||
| 225 | { | ||
| 226 | DXGI_FORMAT Format; | ||
| 227 | DXGI_COLOR_SPACE_TYPE ColorSpace; | ||
| 228 | D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode; | ||
| 229 | UINT AlphaFillModeSourceStreamIndex; | ||
| 230 | FLOAT BackgroundColor[4]; | ||
| 231 | DXGI_RATIONAL FrameRate; | ||
| 232 | BOOL EnableStereo; | ||
| 233 | } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC; | ||
| 234 | |||
| 235 | [uuid(0946B7C9-EBF6-4047-BB73-8683E27DBB1F), object, local, pointer_default(unique)] | ||
| 236 | interface ID3D12VideoDecoderHeap | ||
| 237 | : ID3D12Pageable | ||
| 238 | { | ||
| 239 | D3D12_VIDEO_DECODER_HEAP_DESC GetDesc(); | ||
| 240 | } | ||
| 241 | |||
| 242 | [uuid(1F052807-0B46-4ACC-8A89-364F793718A4), object, local, pointer_default(unique)] | ||
| 243 | interface ID3D12VideoDevice | ||
| 244 | : IUnknown | ||
| 245 | { | ||
| 246 | HRESULT CheckFeatureSupport( | ||
| 247 | D3D12_FEATURE_VIDEO FeatureVideo, | ||
| 248 | [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData, | ||
| 249 | UINT FeatureSupportDataSize | ||
| 250 | ); | ||
| 251 | |||
| 252 | HRESULT CreateVideoDecoder( | ||
| 253 | [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc, | ||
| 254 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder, | ||
| 255 | [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder | ||
| 256 | ); | ||
| 257 | |||
| 258 | HRESULT CreateVideoDecoderHeap( | ||
| 259 | [annotation("_In_")]const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc, | ||
| 260 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap, | ||
| 261 | [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap | ||
| 262 | ); | ||
| 263 | |||
| 264 | HRESULT CreateVideoProcessor( | ||
| 265 | UINT NodeMask, | ||
| 266 | [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc, | ||
| 267 | UINT NumInputStreamDescs, | ||
| 268 | [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs, | ||
| 269 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor, | ||
| 270 | [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor | ||
| 271 | ); | ||
| 272 | } | ||
| 273 | |||
| 274 | [uuid(C59B6BDC-7720-4074-A136-17A156037470), object, local, pointer_default(unique)] | ||
| 275 | interface ID3D12VideoDecoder | ||
| 276 | : ID3D12Pageable | ||
| 277 | { | ||
| 278 | D3D12_VIDEO_DECODER_DESC GetDesc(); | ||
| 279 | } | ||
| 280 | |||
| 281 | typedef enum D3D12_VIDEO_DECODE_TIER | ||
| 282 | { | ||
| 283 | D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0, | ||
| 284 | D3D12_VIDEO_DECODE_TIER_1 = 1, | ||
| 285 | D3D12_VIDEO_DECODE_TIER_2 = 2, | ||
| 286 | D3D12_VIDEO_DECODE_TIER_3 = 3, | ||
| 287 | } D3D12_VIDEO_DECODE_TIER; | ||
| 288 | |||
| 289 | typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS | ||
| 290 | { | ||
| 291 | D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0, | ||
| 292 | D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1, | ||
| 293 | |||
| 294 | } D3D12_VIDEO_DECODE_SUPPORT_FLAGS; | ||
| 295 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )") | ||
| 296 | |||
| 297 | typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS | ||
| 298 | { | ||
| 299 | D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0x0, | ||
| 300 | D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1, | ||
| 301 | D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2, | ||
| 302 | D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4, | ||
| 303 | D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8, | ||
| 304 | |||
| 305 | } D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS; | ||
| 306 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )") | ||
| 307 | |||
| 308 | typedef enum D3D12_VIDEO_DECODE_STATUS | ||
| 309 | { | ||
| 310 | D3D12_VIDEO_DECODE_STATUS_OK = 0, | ||
| 311 | D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1, | ||
| 312 | D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2, | ||
| 313 | D3D12_VIDEO_DECODE_STATUS_RESTART = 3, | ||
| 314 | D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4, | ||
| 315 | } D3D12_VIDEO_DECODE_STATUS; | ||
| 316 | |||
| 317 | typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE | ||
| 318 | { | ||
| 319 | D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0, | ||
| 320 | D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1, | ||
| 321 | D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2, | ||
| 322 | D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3, | ||
| 323 | } D3D12_VIDEO_DECODE_ARGUMENT_TYPE; | ||
| 324 | |||
| 325 | typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT | ||
| 326 | { | ||
| 327 | UINT NodeIndex; // input | ||
| 328 | D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input | ||
| 329 | UINT Width; // input | ||
| 330 | UINT Height; // input | ||
| 331 | DXGI_FORMAT DecodeFormat; // input | ||
| 332 | DXGI_RATIONAL FrameRate; // input | ||
| 333 | UINT BitRate; // input | ||
| 334 | D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags; // output | ||
| 335 | D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags; // output | ||
| 336 | D3D12_VIDEO_DECODE_TIER DecodeTier; // output | ||
| 337 | } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT; | ||
| 338 | |||
| 339 | typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT | ||
| 340 | { | ||
| 341 | UINT NodeIndex; // input | ||
| 342 | UINT ProfileCount; // output | ||
| 343 | } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT; | ||
| 344 | |||
| 345 | typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES | ||
| 346 | { | ||
| 347 | UINT NodeIndex; // input | ||
| 348 | UINT ProfileCount; // input | ||
| 349 | [annotation("_Field_size_full_(ProfileCount)")] GUID *pProfiles; // output. The list of supported profiles. The caller allocates storage for the profile list before calling CheckFeatureSupport. | ||
| 350 | } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES; | ||
| 351 | |||
| 352 | typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT | ||
| 353 | { | ||
| 354 | UINT NodeIndex; // input | ||
| 355 | D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input | ||
| 356 | UINT FormatCount; // output | ||
| 357 | } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT; | ||
| 358 | |||
| 359 | typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS | ||
| 360 | { | ||
| 361 | UINT NodeIndex; // input | ||
| 362 | D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input | ||
| 363 | UINT FormatCount; // input | ||
| 364 | [annotation("_Field_size_full_(FormatCount)")] DXGI_FORMAT *pOutputFormats; // output. The list of supported video formats. The caller allocates storage for the format list before calling CheckFeatureSupport. | ||
| 365 | } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS; | ||
| 366 | |||
| 367 | typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE | ||
| 368 | { | ||
| 369 | BOOL IOCoherent; | ||
| 370 | } D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE; | ||
| 371 | |||
| 372 | typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT | ||
| 373 | { | ||
| 374 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0, | ||
| 375 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1, | ||
| 376 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2, | ||
| 377 | |||
| 378 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0, | ||
| 379 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1, | ||
| 380 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2, | ||
| 381 | |||
| 382 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3, | ||
| 383 | } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT; | ||
| 384 | |||
| 385 | typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS | ||
| 386 | { | ||
| 387 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0x0, | ||
| 388 | |||
| 389 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y), | ||
| 390 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U), | ||
| 391 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V), | ||
| 392 | |||
| 393 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R), | ||
| 394 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G), | ||
| 395 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B), | ||
| 396 | |||
| 397 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A), | ||
| 398 | } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS; | ||
| 399 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )") | ||
| 400 | |||
| 401 | typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM | ||
| 402 | { | ||
| 403 | UINT NodeIndex; // in | ||
| 404 | GUID DecodeProfile; // in | ||
| 405 | UINT Width; // in | ||
| 406 | UINT Height; // in | ||
| 407 | DXGI_FORMAT DecodeFormat; // in | ||
| 408 | D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components; // out | ||
| 409 | UINT BinCount; // out | ||
| 410 | UINT CounterBitDepth; // out | ||
| 411 | } D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM; | ||
| 412 | |||
| 413 | typedef enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS | ||
| 414 | { | ||
| 415 | D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0x0, | ||
| 416 | D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1, | ||
| 417 | |||
| 418 | } D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS; | ||
| 419 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )") | ||
| 420 | |||
| 421 | typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS | ||
| 422 | { | ||
| 423 | D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0, | ||
| 424 | D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1, | ||
| 425 | D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2, | ||
| 426 | D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4, | ||
| 427 | |||
| 428 | } D3D12_VIDEO_SCALE_SUPPORT_FLAGS; | ||
| 429 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )") | ||
| 430 | |||
| 431 | typedef struct D3D12_VIDEO_SCALE_SUPPORT | ||
| 432 | { | ||
| 433 | D3D12_VIDEO_SIZE_RANGE OutputSizeRange; | ||
| 434 | D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags; | ||
| 435 | } D3D12_VIDEO_SCALE_SUPPORT; | ||
| 436 | |||
| 437 | typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT | ||
| 438 | { | ||
| 439 | UINT NodeIndex; // input | ||
| 440 | D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input | ||
| 441 | D3D12_VIDEO_SAMPLE DecodeSample; // input | ||
| 442 | D3D12_VIDEO_FORMAT OutputFormat; // input | ||
| 443 | DXGI_RATIONAL FrameRate; // input | ||
| 444 | UINT BitRate; // input | ||
| 445 | D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags; // output | ||
| 446 | D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output | ||
| 447 | } D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT; | ||
| 448 | |||
| 449 | typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE | ||
| 450 | { | ||
| 451 | D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input | ||
| 452 | UINT64 MemoryPoolL0Size; // output | ||
| 453 | UINT64 MemoryPoolL1Size; // output | ||
| 454 | } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE; | ||
| 455 | |||
| 456 | typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE | ||
| 457 | { | ||
| 458 | UINT NodeMask; | ||
| 459 | const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input | ||
| 460 | UINT NumInputStreamDescs; // input | ||
| 461 | const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input | ||
| 462 | UINT64 MemoryPoolL0Size; // output | ||
| 463 | UINT64 MemoryPoolL1Size; // output | ||
| 464 | } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE; | ||
| 465 | |||
| 466 | typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS | ||
| 467 | { | ||
| 468 | UINT64 Status; // see D3D12_VIDEO_DECODE_STATUS | ||
| 469 | UINT64 NumMacroblocksAffected; | ||
| 470 | DXGI_RATIONAL FrameRate; | ||
| 471 | UINT BitRate; | ||
| 472 | } D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS; | ||
| 473 | |||
| 474 | typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT | ||
| 475 | { | ||
| 476 | D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type; | ||
| 477 | UINT Size; | ||
| 478 | [annotation("_Field_size_bytes_full_(Size)")] void *pData; | ||
| 479 | } D3D12_VIDEO_DECODE_FRAME_ARGUMENT; | ||
| 480 | |||
| 481 | typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES | ||
| 482 | { | ||
| 483 | UINT NumTexture2Ds; | ||
| 484 | [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds; | ||
| 485 | [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources; | ||
| 486 | [annotation("_Field_size_full_opt_(NumTexture2Ds)")] ID3D12VideoDecoderHeap** ppHeaps; // If null, assume single decoder heap from input args. | ||
| 487 | } D3D12_VIDEO_DECODE_REFERENCE_FRAMES; | ||
| 488 | |||
| 489 | typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM | ||
| 490 | { | ||
| 491 | ID3D12Resource* pBuffer; | ||
| 492 | UINT64 Offset; | ||
| 493 | UINT64 Size; | ||
| 494 | } D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM; | ||
| 495 | |||
| 496 | typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS | ||
| 497 | { | ||
| 498 | BOOL Enable; | ||
| 499 | ID3D12Resource* pReferenceTexture2D; | ||
| 500 | UINT ReferenceSubresource; | ||
| 501 | DXGI_COLOR_SPACE_TYPE OutputColorSpace; | ||
| 502 | DXGI_COLOR_SPACE_TYPE DecodeColorSpace; | ||
| 503 | } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS; | ||
| 504 | |||
| 505 | typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS | ||
| 506 | { | ||
| 507 | UINT NumFrameArguments; | ||
| 508 | D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[D3D12_VIDEO_DECODE_MAX_ARGUMENTS]; | ||
| 509 | D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames; | ||
| 510 | D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream; | ||
| 511 | ID3D12VideoDecoderHeap *pHeap; | ||
| 512 | } D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS; | ||
| 513 | |||
| 514 | typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS | ||
| 515 | { | ||
| 516 | ID3D12Resource* pOutputTexture2D; | ||
| 517 | UINT OutputSubresource; | ||
| 518 | D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments; | ||
| 519 | } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS; | ||
| 520 | |||
| 521 | [uuid(304FDB32-BEDE-410A-8545-943AC6A46138), object, local, pointer_default(unique)] | ||
| 522 | interface ID3D12VideoProcessor | ||
| 523 | : ID3D12Pageable | ||
| 524 | { | ||
| 525 | UINT GetNodeMask(); | ||
| 526 | UINT GetNumInputStreamDescs(); | ||
| 527 | HRESULT GetInputStreamDescs(UINT NumInputStreamDescs, [annotation("_Out_writes_(NumInputStreamDescs)")] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs); | ||
| 528 | D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc(); | ||
| 529 | } | ||
| 530 | |||
| 531 | typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS | ||
| 532 | { | ||
| 533 | D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0, | ||
| 534 | D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1, | ||
| 535 | D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2, | ||
| 536 | D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4, | ||
| 537 | D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8, | ||
| 538 | D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10, | ||
| 539 | D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20, | ||
| 540 | D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40, | ||
| 541 | |||
| 542 | } D3D12_VIDEO_PROCESS_FEATURE_FLAGS; | ||
| 543 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )") | ||
| 544 | |||
| 545 | typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS | ||
| 546 | { | ||
| 547 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0, | ||
| 548 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01, | ||
| 549 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02, | ||
| 550 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04, | ||
| 551 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08, | ||
| 552 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10, | ||
| 553 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20, | ||
| 554 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40, | ||
| 555 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80, | ||
| 556 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000, | ||
| 557 | |||
| 558 | } D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS; | ||
| 559 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )") | ||
| 560 | |||
| 561 | typedef enum D3D12_VIDEO_PROCESS_ORIENTATION | ||
| 562 | { | ||
| 563 | D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0, | ||
| 564 | D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1, | ||
| 565 | D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2, | ||
| 566 | D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3, | ||
| 567 | D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4, | ||
| 568 | D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5, | ||
| 569 | D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6, | ||
| 570 | D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7, | ||
| 571 | } D3D12_VIDEO_PROCESS_ORIENTATION; | ||
| 572 | |||
| 573 | typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS | ||
| 574 | { | ||
| 575 | D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0, | ||
| 576 | D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1, | ||
| 577 | D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2, | ||
| 578 | |||
| 579 | } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS; | ||
| 580 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )") | ||
| 581 | |||
| 582 | typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE | ||
| 583 | { | ||
| 584 | INT Minimum; | ||
| 585 | INT Maximum; | ||
| 586 | INT Default; | ||
| 587 | FLOAT Multiplier; | ||
| 588 | } D3D12_VIDEO_PROCESS_FILTER_RANGE; | ||
| 589 | |||
| 590 | typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS | ||
| 591 | { | ||
| 592 | D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0, | ||
| 593 | D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1, | ||
| 594 | |||
| 595 | } D3D12_VIDEO_PROCESS_SUPPORT_FLAGS; | ||
| 596 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )") | ||
| 597 | |||
| 598 | typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT | ||
| 599 | { | ||
| 600 | UINT NodeIndex; // input | ||
| 601 | D3D12_VIDEO_SAMPLE InputSample; // input | ||
| 602 | D3D12_VIDEO_FIELD_TYPE InputFieldType; // input | ||
| 603 | D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat; // input | ||
| 604 | DXGI_RATIONAL InputFrameRate; // input | ||
| 605 | D3D12_VIDEO_FORMAT OutputFormat; // input | ||
| 606 | D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat; // input | ||
| 607 | DXGI_RATIONAL OutputFrameRate; // input | ||
| 608 | D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags; // output | ||
| 609 | D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output | ||
| 610 | D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // output | ||
| 611 | D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport; // output | ||
| 612 | D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport; // output | ||
| 613 | D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport; // output | ||
| 614 | D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS]; // output | ||
| 615 | } D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT; | ||
| 616 | |||
| 617 | typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS | ||
| 618 | { | ||
| 619 | UINT NodeIndex; // input | ||
| 620 | UINT MaxInputStreams; // output | ||
| 621 | } D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS; | ||
| 622 | |||
| 623 | typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO | ||
| 624 | { | ||
| 625 | UINT NodeIndex; // input | ||
| 626 | D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode; // input | ||
| 627 | D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters; // input | ||
| 628 | D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // input | ||
| 629 | DXGI_RATIONAL InputFrameRate; // input | ||
| 630 | DXGI_RATIONAL OutputFrameRate; // input | ||
| 631 | BOOL EnableAutoProcessing; // input | ||
| 632 | UINT PastFrames; // output | ||
| 633 | UINT FutureFrames; // output | ||
| 634 | } D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO; | ||
| 635 | |||
| 636 | typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET | ||
| 637 | { | ||
| 638 | UINT NumPastFrames; | ||
| 639 | ID3D12Resource **ppPastFrames; | ||
| 640 | UINT *pPastSubresources; | ||
| 641 | UINT NumFutureFrames; | ||
| 642 | ID3D12Resource **ppFutureFrames; | ||
| 643 | UINT *pFutureSubresources; | ||
| 644 | } D3D12_VIDEO_PROCESS_REFERENCE_SET; | ||
| 645 | |||
| 646 | typedef struct D3D12_VIDEO_PROCESS_TRANSFORM | ||
| 647 | { | ||
| 648 | D3D12_RECT SourceRectangle; | ||
| 649 | D3D12_RECT DestinationRectangle; | ||
| 650 | D3D12_VIDEO_PROCESS_ORIENTATION Orientation; | ||
| 651 | } D3D12_VIDEO_PROCESS_TRANSFORM; | ||
| 652 | |||
| 653 | typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE | ||
| 654 | { | ||
| 655 | UINT OutputIndex; | ||
| 656 | UINT InputFrameOrField; | ||
| 657 | } D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE; | ||
| 658 | |||
| 659 | typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM | ||
| 660 | { | ||
| 661 | ID3D12Resource *pTexture2D; | ||
| 662 | UINT Subresource; | ||
| 663 | D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet; | ||
| 664 | } D3D12_VIDEO_PROCESS_INPUT_STREAM; | ||
| 665 | |||
| 666 | typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS | ||
| 667 | { | ||
| 668 | D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS]; | ||
| 669 | D3D12_VIDEO_PROCESS_TRANSFORM Transform; | ||
| 670 | D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags; | ||
| 671 | D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo; | ||
| 672 | INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS]; | ||
| 673 | D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending; | ||
| 674 | } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS; | ||
| 675 | |||
| 676 | typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM | ||
| 677 | { | ||
| 678 | ID3D12Resource* pTexture2D; | ||
| 679 | UINT Subresource; | ||
| 680 | } D3D12_VIDEO_PROCESS_OUTPUT_STREAM; | ||
| 681 | |||
| 682 | typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS | ||
| 683 | { | ||
| 684 | D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS]; | ||
| 685 | D3D12_RECT TargetRectangle; | ||
| 686 | } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS; | ||
| 687 | |||
| 688 | [uuid(3B60536E-AD29-4E64-A269-F853837E5E53), object, local, pointer_default(unique)] | ||
| 689 | interface ID3D12VideoDecodeCommandList | ||
| 690 | : ID3D12CommandList | ||
| 691 | { | ||
| 692 | HRESULT Close(); | ||
| 693 | |||
| 694 | HRESULT Reset( | ||
| 695 | [annotation("_In_")] ID3D12CommandAllocator* pAllocator | ||
| 696 | ); | ||
| 697 | |||
| 698 | void ClearState(); | ||
| 699 | |||
| 700 | void ResourceBarrier( | ||
| 701 | [annotation("_In_")] UINT NumBarriers, | ||
| 702 | [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers | ||
| 703 | ); | ||
| 704 | |||
| 705 | void DiscardResource( | ||
| 706 | [annotation("_In_")] ID3D12Resource* pResource, | ||
| 707 | [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion | ||
| 708 | ); | ||
| 709 | |||
| 710 | void BeginQuery( | ||
| 711 | [annotation("_In_")] ID3D12QueryHeap* pQueryHeap, | ||
| 712 | [annotation("_In_")] D3D12_QUERY_TYPE Type, | ||
| 713 | [annotation("_In_")] UINT Index | ||
| 714 | ); | ||
| 715 | |||
| 716 | void EndQuery( | ||
| 717 | [annotation("_In_")] ID3D12QueryHeap* pQueryHeap, | ||
| 718 | [annotation("_In_")] D3D12_QUERY_TYPE Type, | ||
| 719 | [annotation("_In_")] UINT Index | ||
| 720 | ); | ||
| 721 | |||
| 722 | void ResolveQueryData( | ||
| 723 | [annotation("_In_")] ID3D12QueryHeap* pQueryHeap, | ||
| 724 | [annotation("_In_")] D3D12_QUERY_TYPE Type, | ||
| 725 | [annotation("_In_")] UINT StartIndex, | ||
| 726 | [annotation("_In_")] UINT NumQueries, | ||
| 727 | [annotation("_In_")] ID3D12Resource* pDestinationBuffer, | ||
| 728 | [annotation("_In_")] UINT64 AlignedDestinationBufferOffset | ||
| 729 | ); | ||
| 730 | |||
| 731 | void SetPredication( | ||
| 732 | [annotation("_In_opt_")] ID3D12Resource* pBuffer, | ||
| 733 | [annotation("_In_")] UINT64 AlignedBufferOffset, | ||
| 734 | [annotation("_In_")] D3D12_PREDICATION_OP Operation | ||
| 735 | ); | ||
| 736 | |||
| 737 | void SetMarker( | ||
| 738 | UINT Metadata, | ||
| 739 | [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, | ||
| 740 | UINT Size); | ||
| 741 | |||
| 742 | void BeginEvent( | ||
| 743 | UINT Metadata, | ||
| 744 | [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, | ||
| 745 | UINT Size); | ||
| 746 | |||
| 747 | void EndEvent(); | ||
| 748 | |||
| 749 | void DecodeFrame( | ||
| 750 | [annotation("_In_")] ID3D12VideoDecoder* pDecoder, | ||
| 751 | [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments, | ||
| 752 | [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments | ||
| 753 | ); | ||
| 754 | |||
| 755 | void WriteBufferImmediate( | ||
| 756 | UINT Count, | ||
| 757 | [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams, | ||
| 758 | [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes | ||
| 759 | ); | ||
| 760 | } | ||
| 761 | |||
| 762 | [uuid(AEB2543A-167F-4682-ACC8-D159ED4A6209), object, local, pointer_default(unique)] | ||
| 763 | interface ID3D12VideoProcessCommandList | ||
| 764 | : ID3D12CommandList | ||
| 765 | { | ||
| 766 | HRESULT Close(); | ||
| 767 | |||
| 768 | HRESULT Reset( | ||
| 769 | [annotation("_In_")] ID3D12CommandAllocator* pAllocator | ||
| 770 | ); | ||
| 771 | |||
| 772 | void ClearState(); | ||
| 773 | |||
| 774 | void ResourceBarrier( | ||
| 775 | [annotation("_In_")] UINT NumBarriers, | ||
| 776 | [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers | ||
| 777 | ); | ||
| 778 | |||
| 779 | void DiscardResource( | ||
| 780 | [annotation("_In_")] ID3D12Resource* pResource, | ||
| 781 | [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion | ||
| 782 | ); | ||
| 783 | |||
| 784 | void BeginQuery( | ||
| 785 | [annotation("_In_")] ID3D12QueryHeap* pQueryHeap, | ||
| 786 | [annotation("_In_")] D3D12_QUERY_TYPE Type, | ||
| 787 | [annotation("_In_")] UINT Index | ||
| 788 | ); | ||
| 789 | |||
| 790 | void EndQuery( | ||
| 791 | [annotation("_In_")] ID3D12QueryHeap* pQueryHeap, | ||
| 792 | [annotation("_In_")] D3D12_QUERY_TYPE Type, | ||
| 793 | [annotation("_In_")] UINT Index | ||
| 794 | ); | ||
| 795 | |||
| 796 | void ResolveQueryData( | ||
| 797 | [annotation("_In_")] ID3D12QueryHeap* pQueryHeap, | ||
| 798 | [annotation("_In_")] D3D12_QUERY_TYPE Type, | ||
| 799 | [annotation("_In_")] UINT StartIndex, | ||
| 800 | [annotation("_In_")] UINT NumQueries, | ||
| 801 | [annotation("_In_")] ID3D12Resource* pDestinationBuffer, | ||
| 802 | [annotation("_In_")] UINT64 AlignedDestinationBufferOffset | ||
| 803 | ); | ||
| 804 | |||
| 805 | void SetPredication( | ||
| 806 | [annotation("_In_opt_")] ID3D12Resource* pBuffer, | ||
| 807 | [annotation("_In_")] UINT64 AlignedBufferOffset, | ||
| 808 | [annotation("_In_")] D3D12_PREDICATION_OP Operation | ||
| 809 | ); | ||
| 810 | |||
| 811 | void SetMarker( | ||
| 812 | UINT Metadata, | ||
| 813 | [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, | ||
| 814 | UINT Size); | ||
| 815 | |||
| 816 | void BeginEvent( | ||
| 817 | UINT Metadata, | ||
| 818 | [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, | ||
| 819 | UINT Size); | ||
| 820 | |||
| 821 | void EndEvent(); | ||
| 822 | |||
| 823 | void ProcessFrames( | ||
| 824 | [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor, | ||
| 825 | [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments, | ||
| 826 | UINT NumInputStreams, | ||
| 827 | [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments | ||
| 828 | ); | ||
| 829 | |||
| 830 | void WriteBufferImmediate( | ||
| 831 | UINT Count, | ||
| 832 | [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams, | ||
| 833 | [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes | ||
| 834 | ); | ||
| 835 | } | ||
| 836 | |||
| 837 | typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM | ||
| 838 | { | ||
| 839 | UINT64 Offset; | ||
| 840 | ID3D12Resource* pBuffer; | ||
| 841 | } D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM; | ||
| 842 | |||
| 843 | typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 | ||
| 844 | { | ||
| 845 | BOOL Enable; | ||
| 846 | ID3D12Resource* pReferenceTexture2D; | ||
| 847 | UINT ReferenceSubresource; | ||
| 848 | DXGI_COLOR_SPACE_TYPE OutputColorSpace; | ||
| 849 | DXGI_COLOR_SPACE_TYPE DecodeColorSpace; | ||
| 850 | UINT OutputWidth; | ||
| 851 | UINT OutputHeight; | ||
| 852 | } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1; | ||
| 853 | |||
| 854 | typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 | ||
| 855 | { | ||
| 856 | ID3D12Resource* pOutputTexture2D; | ||
| 857 | UINT OutputSubresource; | ||
| 858 | D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments; | ||
| 859 | D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS]; | ||
| 860 | } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1; | ||
| 861 | |||
| 862 | [uuid(D52F011B-B56E-453C-A05A-A7F311C8F472), object, local, pointer_default(unique)] | ||
| 863 | interface ID3D12VideoDecodeCommandList1 | ||
| 864 | : ID3D12VideoDecodeCommandList | ||
| 865 | { | ||
| 866 | void DecodeFrame1( | ||
| 867 | [annotation("_In_")] ID3D12VideoDecoder* pDecoder, | ||
| 868 | [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments, | ||
| 869 | [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments | ||
| 870 | ); | ||
| 871 | } | ||
| 872 | |||
| 873 | typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 | ||
| 874 | { | ||
| 875 | D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS]; | ||
| 876 | D3D12_VIDEO_PROCESS_TRANSFORM Transform; | ||
| 877 | D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags; | ||
| 878 | D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo; | ||
| 879 | INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS]; | ||
| 880 | D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending; | ||
| 881 | D3D12_VIDEO_FIELD_TYPE FieldType; | ||
| 882 | } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1; | ||
| 883 | |||
| 884 | [uuid(542C5C4D-7596-434F-8C93-4EFA6766F267), object, local, pointer_default(unique)] | ||
| 885 | interface ID3D12VideoProcessCommandList1 : ID3D12VideoProcessCommandList | ||
| 886 | { | ||
| 887 | void ProcessFrames1( | ||
| 888 | [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor, | ||
| 889 | [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments, | ||
| 890 | UINT NumInputStreams, | ||
| 891 | [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments | ||
| 892 | ); | ||
| 893 | } | ||
| 894 | |||
| 895 | typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE | ||
| 896 | { | ||
| 897 | D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0, | ||
| 898 | D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1, | ||
| 899 | } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE; | ||
| 900 | |||
| 901 | typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS | ||
| 902 | { | ||
| 903 | D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0, | ||
| 904 | D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8), | ||
| 905 | D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16), | ||
| 906 | |||
| 907 | } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS; | ||
| 908 | cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )" ) | ||
| 909 | |||
| 910 | typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION | ||
| 911 | { | ||
| 912 | D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0, | ||
| 913 | } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION; | ||
| 914 | |||
| 915 | typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS | ||
| 916 | { | ||
| 917 | D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0, | ||
| 918 | D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL), | ||
| 919 | |||
| 920 | } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS; | ||
| 921 | cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )" ) | ||
| 922 | |||
| 923 | // D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT | ||
| 924 | typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT | ||
| 925 | { | ||
| 926 | UINT NodeIndex; // input | ||
| 927 | BOOL VideoDecodeSupport; // output | ||
| 928 | BOOL VideoProcessSupport; // output | ||
| 929 | BOOL VideoEncodeSupport; // output | ||
| 930 | } D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT; | ||
| 931 | |||
| 932 | // D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR | ||
| 933 | typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR | ||
| 934 | { | ||
| 935 | UINT NodeIndex; // input | ||
| 936 | DXGI_FORMAT InputFormat; // input | ||
| 937 | D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags; // output | ||
| 938 | D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags; // output | ||
| 939 | D3D12_VIDEO_SIZE_RANGE SizeRange; // output | ||
| 940 | } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR; | ||
| 941 | |||
| 942 | // D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE | ||
| 943 | typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE | ||
| 944 | { | ||
| 945 | UINT NodeIndex; // input | ||
| 946 | DXGI_FORMAT InputFormat; // input | ||
| 947 | D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize; // input | ||
| 948 | D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision; // input | ||
| 949 | D3D12_VIDEO_SIZE_RANGE SizeRange; // input | ||
| 950 | BOOL Protected; // input | ||
| 951 | UINT64 MotionVectorHeapMemoryPoolL0Size; // output | ||
| 952 | UINT64 MotionVectorHeapMemoryPoolL1Size; // output | ||
| 953 | UINT64 MotionEstimatorMemoryPoolL0Size; // output | ||
| 954 | UINT64 MotionEstimatorMemoryPoolL1Size; // output | ||
| 955 | } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE; | ||
| 956 | |||
| 957 | typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC | ||
| 958 | { | ||
| 959 | UINT NodeMask; | ||
| 960 | DXGI_FORMAT InputFormat; | ||
| 961 | D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize; | ||
| 962 | D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision; | ||
| 963 | D3D12_VIDEO_SIZE_RANGE SizeRange; | ||
| 964 | |||
| 965 | } D3D12_VIDEO_MOTION_ESTIMATOR_DESC; | ||
| 966 | |||
| 967 | [uuid(33FDAE0E-098B-428F-87BB-34B695DE08F8), object, local, pointer_default(unique)] | ||
| 968 | interface ID3D12VideoMotionEstimator | ||
| 969 | : ID3D12Pageable | ||
| 970 | { | ||
| 971 | D3D12_VIDEO_MOTION_ESTIMATOR_DESC GetDesc(); | ||
| 972 | |||
| 973 | HRESULT GetProtectedResourceSession( | ||
| 974 | [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession | ||
| 975 | [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession); | ||
| 976 | } | ||
| 977 | |||
| 978 | typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC | ||
| 979 | { | ||
| 980 | UINT NodeMask; | ||
| 981 | DXGI_FORMAT InputFormat; | ||
| 982 | D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize; | ||
| 983 | D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision; | ||
| 984 | D3D12_VIDEO_SIZE_RANGE SizeRange; | ||
| 985 | |||
| 986 | } D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC; | ||
| 987 | |||
| 988 | [uuid(5BE17987-743A-4061-834B-23D22DAEA505), object, local, pointer_default(unique)] | ||
| 989 | interface ID3D12VideoMotionVectorHeap | ||
| 990 | : ID3D12Pageable | ||
| 991 | { | ||
| 992 | D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC GetDesc(); | ||
| 993 | |||
| 994 | HRESULT GetProtectedResourceSession( | ||
| 995 | [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession | ||
| 996 | [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession); | ||
| 997 | } | ||
| 998 | |||
| 999 | [uuid(981611AD-A144-4C83-9890-F30E26D658AB), object, local, pointer_default(unique)] | ||
| 1000 | interface ID3D12VideoDevice1 | ||
| 1001 | : ID3D12VideoDevice | ||
| 1002 | { | ||
| 1003 | HRESULT CreateVideoMotionEstimator( | ||
| 1004 | [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_DESC* pDesc, | ||
| 1005 | [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession, | ||
| 1006 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionEstimator, | ||
| 1007 | [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionEstimator | ||
| 1008 | ); | ||
| 1009 | |||
| 1010 | HRESULT CreateVideoMotionVectorHeap( | ||
| 1011 | [annotation("_In_")] const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* pDesc, | ||
| 1012 | [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession, | ||
| 1013 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionVectorHeap, | ||
| 1014 | [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionVectorHeap | ||
| 1015 | ); | ||
| 1016 | } | ||
| 1017 | |||
| 1018 | typedef struct D3D12_RESOURCE_COORDINATE | ||
| 1019 | { | ||
| 1020 | // Coordinate values below index pixels. | ||
| 1021 | UINT64 X; // Used for buffer, 1D, 2D, 3D | ||
| 1022 | UINT Y; // Used for 2D, 3D | ||
| 1023 | UINT Z; // Used for 3D | ||
| 1024 | UINT SubresourceIndex; // indexes into mips, arrays, and planes. Used for 1D, 2D, 3D | ||
| 1025 | } D3D12_RESOURCE_COORDINATE; | ||
| 1026 | |||
| 1027 | typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT | ||
| 1028 | { | ||
| 1029 | ID3D12VideoMotionVectorHeap* pMotionVectorHeap; | ||
| 1030 | } D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT; | ||
| 1031 | |||
| 1032 | typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT | ||
| 1033 | { | ||
| 1034 | ID3D12Resource* pInputTexture2D; | ||
| 1035 | UINT InputSubresourceIndex; | ||
| 1036 | ID3D12Resource* pReferenceTexture2D; | ||
| 1037 | UINT ReferenceSubresourceIndex; | ||
| 1038 | ID3D12VideoMotionVectorHeap* pHintMotionVectorHeap; | ||
| 1039 | } D3D12_VIDEO_MOTION_ESTIMATOR_INPUT; | ||
| 1040 | |||
| 1041 | typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT | ||
| 1042 | { | ||
| 1043 | ID3D12Resource* pMotionVectorTexture2D; | ||
| 1044 | D3D12_RESOURCE_COORDINATE MotionVectorCoordinate; | ||
| 1045 | } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT; | ||
| 1046 | |||
| 1047 | typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT | ||
| 1048 | { | ||
| 1049 | ID3D12VideoMotionVectorHeap* pMotionVectorHeap; | ||
| 1050 | UINT PixelWidth; | ||
| 1051 | UINT PixelHeight; | ||
| 1052 | } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT; | ||
| 1053 | |||
| 1054 | [uuid(8455293A-0CBD-4831-9B39-FBDBAB724723), object, local, pointer_default(unique)] | ||
| 1055 | interface ID3D12VideoEncodeCommandList | ||
| 1056 | : ID3D12CommandList | ||
| 1057 | { | ||
| 1058 | HRESULT Close(); | ||
| 1059 | |||
| 1060 | HRESULT Reset( | ||
| 1061 | [annotation("_In_")] ID3D12CommandAllocator* pAllocator | ||
| 1062 | ); | ||
| 1063 | |||
| 1064 | void ClearState(); | ||
| 1065 | |||
| 1066 | void ResourceBarrier( | ||
| 1067 | [annotation("_In_")] UINT NumBarriers, | ||
| 1068 | [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers | ||
| 1069 | ); | ||
| 1070 | |||
| 1071 | void DiscardResource( | ||
| 1072 | [annotation("_In_")] ID3D12Resource* pResource, | ||
| 1073 | [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion | ||
| 1074 | ); | ||
| 1075 | |||
| 1076 | void BeginQuery( | ||
| 1077 | [annotation("_In_")] ID3D12QueryHeap* pQueryHeap, | ||
| 1078 | [annotation("_In_")] D3D12_QUERY_TYPE Type, | ||
| 1079 | [annotation("_In_")] UINT Index | ||
| 1080 | ); | ||
| 1081 | |||
| 1082 | void EndQuery( | ||
| 1083 | [annotation("_In_")] ID3D12QueryHeap* pQueryHeap, | ||
| 1084 | [annotation("_In_")] D3D12_QUERY_TYPE Type, | ||
| 1085 | [annotation("_In_")] UINT Index | ||
| 1086 | ); | ||
| 1087 | |||
| 1088 | void ResolveQueryData( | ||
| 1089 | [annotation("_In_")] ID3D12QueryHeap* pQueryHeap, | ||
| 1090 | [annotation("_In_")] D3D12_QUERY_TYPE Type, | ||
| 1091 | [annotation("_In_")] UINT StartIndex, | ||
| 1092 | [annotation("_In_")] UINT NumQueries, | ||
| 1093 | [annotation("_In_")] ID3D12Resource* pDestinationBuffer, | ||
| 1094 | [annotation("_In_")] UINT64 AlignedDestinationBufferOffset | ||
| 1095 | ); | ||
| 1096 | |||
| 1097 | void SetPredication( | ||
| 1098 | [annotation("_In_opt_")] ID3D12Resource* pBuffer, | ||
| 1099 | [annotation("_In_")] UINT64 AlignedBufferOffset, | ||
| 1100 | [annotation("_In_")] D3D12_PREDICATION_OP Operation | ||
| 1101 | ); | ||
| 1102 | |||
| 1103 | void SetMarker( | ||
| 1104 | UINT Metadata, | ||
| 1105 | [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, | ||
| 1106 | UINT Size); | ||
| 1107 | |||
| 1108 | void BeginEvent( | ||
| 1109 | UINT Metadata, | ||
| 1110 | [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, | ||
| 1111 | UINT Size); | ||
| 1112 | |||
| 1113 | void EndEvent(); | ||
| 1114 | |||
| 1115 | void EstimateMotion( | ||
| 1116 | [annotation("_In_")] ID3D12VideoMotionEstimator* pMotionEstimator, | ||
| 1117 | [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* pOutputArguments, | ||
| 1118 | [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* pInputArguments | ||
| 1119 | ); | ||
| 1120 | |||
| 1121 | void ResolveMotionVectorHeap( | ||
| 1122 | const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* pOutputArguments, | ||
| 1123 | const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* pInputArguments | ||
| 1124 | ); | ||
| 1125 | |||
| 1126 | void WriteBufferImmediate( | ||
| 1127 | UINT Count, | ||
| 1128 | [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams, | ||
| 1129 | [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes | ||
| 1130 | ); | ||
| 1131 | |||
| 1132 | void SetProtectedResourceSession( | ||
| 1133 | [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession | ||
| 1134 | ); | ||
| 1135 | } | ||
| 1136 | |||
| 1137 | typedef enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS | ||
| 1138 | { | ||
| 1139 | D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0x0, | ||
| 1140 | D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1, | ||
| 1141 | |||
| 1142 | } D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS; | ||
| 1143 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )") | ||
| 1144 | |||
| 1145 | // D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES | ||
| 1146 | typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES | ||
| 1147 | { | ||
| 1148 | UINT NodeIndex; // input | ||
| 1149 | D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input | ||
| 1150 | D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output | ||
| 1151 | } D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES; | ||
| 1152 | |||
| 1153 | // D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES | ||
| 1154 | typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES | ||
| 1155 | { | ||
| 1156 | UINT NodeIndex; // input | ||
| 1157 | D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output | ||
| 1158 | } D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES; | ||
| 1159 | |||
| 1160 | // D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES | ||
| 1161 | typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES | ||
| 1162 | { | ||
| 1163 | UINT NodeIndex; // input | ||
| 1164 | D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output | ||
| 1165 | } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES; | ||
| 1166 | |||
| 1167 | //D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 | ||
| 1168 | typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1 | ||
| 1169 | { | ||
| 1170 | D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input | ||
| 1171 | BOOL Protected; // input | ||
| 1172 | UINT64 MemoryPoolL0Size; // output | ||
| 1173 | UINT64 MemoryPoolL1Size; // output | ||
| 1174 | } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1; | ||
| 1175 | |||
| 1176 | // D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 | ||
| 1177 | typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1 | ||
| 1178 | { | ||
| 1179 | UINT NodeMask; | ||
| 1180 | const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input | ||
| 1181 | UINT NumInputStreamDescs; // input | ||
| 1182 | const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input | ||
| 1183 | BOOL Protected; // input | ||
| 1184 | UINT64 MemoryPoolL0Size; // output | ||
| 1185 | UINT64 MemoryPoolL1Size; // output | ||
| 1186 | } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1; | ||
| 1187 | |||
| 1188 | typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE | ||
| 1189 | { | ||
| 1190 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0, | ||
| 1191 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1, | ||
| 1192 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2, | ||
| 1193 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3, | ||
| 1194 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4, | ||
| 1195 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5, | ||
| 1196 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6, | ||
| 1197 | } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE; | ||
| 1198 | |||
| 1199 | typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE | ||
| 1200 | { | ||
| 1201 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0, | ||
| 1202 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1, | ||
| 1203 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2, | ||
| 1204 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3, | ||
| 1205 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4, | ||
| 1206 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5, | ||
| 1207 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6, | ||
| 1208 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7, | ||
| 1209 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8, | ||
| 1210 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9, | ||
| 1211 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10, | ||
| 1212 | } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE; | ||
| 1213 | |||
| 1214 | typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS | ||
| 1215 | { | ||
| 1216 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0x00000000, | ||
| 1217 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x00000001, | ||
| 1218 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x00000002 | ||
| 1219 | } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS; | ||
| 1220 | |||
| 1221 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )") | ||
| 1222 | |||
| 1223 | typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT | ||
| 1224 | { | ||
| 1225 | UINT NodeIndex; // in | ||
| 1226 | UINT CommandCount; // out | ||
| 1227 | } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT; | ||
| 1228 | |||
| 1229 | typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO | ||
| 1230 | { | ||
| 1231 | GUID CommandId; | ||
| 1232 | LPCWSTR Name; | ||
| 1233 | D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags; | ||
| 1234 | } D3D12_VIDEO_EXTENSION_COMMAND_INFO; | ||
| 1235 | |||
| 1236 | typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS | ||
| 1237 | { | ||
| 1238 | UINT NodeIndex; | ||
| 1239 | UINT CommandCount; | ||
| 1240 | [annotation("_Field_size_full_(CommandCount)")] D3D12_VIDEO_EXTENSION_COMMAND_INFO* pCommandInfos; | ||
| 1241 | } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS; | ||
| 1242 | |||
| 1243 | typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT | ||
| 1244 | { | ||
| 1245 | GUID CommandId; // in | ||
| 1246 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in | ||
| 1247 | UINT ParameterCount; // out | ||
| 1248 | UINT ParameterPacking; // out | ||
| 1249 | } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT; | ||
| 1250 | |||
| 1251 | typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO | ||
| 1252 | { | ||
| 1253 | LPCWSTR Name; | ||
| 1254 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type; | ||
| 1255 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags; | ||
| 1256 | } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO; | ||
| 1257 | |||
| 1258 | typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS | ||
| 1259 | { | ||
| 1260 | GUID CommandId; // in | ||
| 1261 | D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in | ||
| 1262 | UINT ParameterCount; // in | ||
| 1263 | [annotation("_Field_size_full_(ParameterCount)")] D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO* pParameterInfos; // out | ||
| 1264 | } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS; | ||
| 1265 | |||
| 1266 | typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT | ||
| 1267 | { | ||
| 1268 | UINT NodeIndex; | ||
| 1269 | GUID CommandId; | ||
| 1270 | [annotation("_Field_size_bytes_full_opt_(InputDataSizeInBytes)")] const void *pInputData; | ||
| 1271 | SIZE_T InputDataSizeInBytes; | ||
| 1272 | [annotation("_Field_size_bytes_full_opt_(OutputDataSizeInBytes)")] void *pOutputData; | ||
| 1273 | SIZE_T OutputDataSizeInBytes; | ||
| 1274 | } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT; | ||
| 1275 | |||
| 1276 | typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE | ||
| 1277 | { | ||
| 1278 | UINT NodeIndex; | ||
| 1279 | GUID CommandId; | ||
| 1280 | [annotation("_Field_size_bytes_full_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters; | ||
| 1281 | SIZE_T CreationParametersSizeInBytes; | ||
| 1282 | UINT64 MemoryPoolL0Size; // output | ||
| 1283 | UINT64 MemoryPoolL1Size; // output | ||
| 1284 | } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE; | ||
| 1285 | |||
| 1286 | typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC | ||
| 1287 | { | ||
| 1288 | UINT NodeMask; | ||
| 1289 | GUID CommandId; | ||
| 1290 | } D3D12_VIDEO_EXTENSION_COMMAND_DESC; | ||
| 1291 | |||
| 1292 | [uuid(79A2E5FB-CCD2-469A-9FDE-195D10951F7E), object, local, pointer_default(unique)] | ||
| 1293 | interface ID3D12VideoDecoder1 | ||
| 1294 | : ID3D12VideoDecoder | ||
| 1295 | { | ||
| 1296 | HRESULT GetProtectedResourceSession( | ||
| 1297 | [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession | ||
| 1298 | [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession); | ||
| 1299 | } | ||
| 1300 | |||
| 1301 | [uuid(DA1D98C5-539F-41B2-BF6B-1198A03B6D26), object, local, pointer_default(unique)] | ||
| 1302 | interface ID3D12VideoDecoderHeap1 | ||
| 1303 | : ID3D12VideoDecoderHeap | ||
| 1304 | { | ||
| 1305 | HRESULT GetProtectedResourceSession( | ||
| 1306 | [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession | ||
| 1307 | [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession); | ||
| 1308 | } | ||
| 1309 | |||
| 1310 | [uuid(F3CFE615-553F-425C-86D8-EE8C1B1FB01C), object, local, pointer_default(unique)] | ||
| 1311 | interface ID3D12VideoProcessor1 | ||
| 1312 | : ID3D12VideoProcessor | ||
| 1313 | { | ||
| 1314 | HRESULT GetProtectedResourceSession( | ||
| 1315 | [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession | ||
| 1316 | [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession); | ||
| 1317 | } | ||
| 1318 | |||
| 1319 | [uuid(554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4), object, local, pointer_default(unique)] | ||
| 1320 | interface ID3D12VideoExtensionCommand | ||
| 1321 | : ID3D12Pageable | ||
| 1322 | { | ||
| 1323 | D3D12_VIDEO_EXTENSION_COMMAND_DESC GetDesc(); | ||
| 1324 | |||
| 1325 | HRESULT GetProtectedResourceSession( | ||
| 1326 | [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession | ||
| 1327 | [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession); | ||
| 1328 | } | ||
| 1329 | |||
| 1330 | [uuid(F019AC49-F838-4A95-9B17-579437C8F513), object, local, pointer_default(unique)] | ||
| 1331 | interface ID3D12VideoDevice2 | ||
| 1332 | : ID3D12VideoDevice1 | ||
| 1333 | { | ||
| 1334 | HRESULT CreateVideoDecoder1( | ||
| 1335 | [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc, | ||
| 1336 | [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession, | ||
| 1337 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder1, | ||
| 1338 | [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder | ||
| 1339 | ); | ||
| 1340 | |||
| 1341 | HRESULT CreateVideoDecoderHeap1( | ||
| 1342 | [annotation("_In_")] const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc, | ||
| 1343 | [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession, | ||
| 1344 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap1, | ||
| 1345 | [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap | ||
| 1346 | ); | ||
| 1347 | |||
| 1348 | HRESULT CreateVideoProcessor1( | ||
| 1349 | UINT NodeMask, | ||
| 1350 | [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc, | ||
| 1351 | UINT NumInputStreamDescs, | ||
| 1352 | [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs, | ||
| 1353 | [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession, | ||
| 1354 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor1, | ||
| 1355 | [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor | ||
| 1356 | ); | ||
| 1357 | |||
| 1358 | HRESULT CreateVideoExtensionCommand( | ||
| 1359 | [annotation("_In_")] const D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc, | ||
| 1360 | [annotation("_In_reads_bytes_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters, | ||
| 1361 | SIZE_T CreationParametersDataSizeInBytes, | ||
| 1362 | [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedResourceSession, | ||
| 1363 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoExtensionCommand, | ||
| 1364 | [annotation("_COM_Outptr_")] void** ppVideoExtensionCommand); | ||
| 1365 | |||
| 1366 | HRESULT ExecuteExtensionCommand( | ||
| 1367 | [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand, | ||
| 1368 | [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, | ||
| 1369 | SIZE_T ExecutionParametersSizeInBytes, | ||
| 1370 | [annotation("_Out_writes_bytes_(OutputDataSizeInBytes)")] void *pOutputData, | ||
| 1371 | SIZE_T OutputDataSizeInBytes | ||
| 1372 | ); | ||
| 1373 | } | ||
| 1374 | |||
| 1375 | [uuid(6e120880-c114-4153-8036-d247051e1729), object, local, pointer_default(unique)] | ||
| 1376 | interface ID3D12VideoDecodeCommandList2 | ||
| 1377 | : ID3D12VideoDecodeCommandList1 | ||
| 1378 | { | ||
| 1379 | void SetProtectedResourceSession( | ||
| 1380 | [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession | ||
| 1381 | ); | ||
| 1382 | |||
| 1383 | void InitializeExtensionCommand( | ||
| 1384 | [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand, | ||
| 1385 | [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters, | ||
| 1386 | SIZE_T InitializationParametersSizeInBytes); | ||
| 1387 | |||
| 1388 | void ExecuteExtensionCommand( | ||
| 1389 | [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand, | ||
| 1390 | [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, | ||
| 1391 | SIZE_T ExecutionParametersSizeInBytes); | ||
| 1392 | } | ||
| 1393 | |||
| 1394 | [uuid(2aee8c37-9562-42da-8abf-61efeb2e4513), object, local, pointer_default(unique)] | ||
| 1395 | interface ID3D12VideoDecodeCommandList3 | ||
| 1396 | : ID3D12VideoDecodeCommandList2 | ||
| 1397 | { | ||
| 1398 | void Barrier( | ||
| 1399 | UINT32 NumBarrierGroups, | ||
| 1400 | [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups | ||
| 1401 | ); | ||
| 1402 | } | ||
| 1403 | |||
| 1404 | |||
| 1405 | |||
| 1406 | [uuid(db525ae4-6ad6-473c-baa7-59b2e37082e4), object, local, pointer_default(unique)] | ||
| 1407 | interface ID3D12VideoProcessCommandList2 | ||
| 1408 | : ID3D12VideoProcessCommandList1 | ||
| 1409 | { | ||
| 1410 | |||
| 1411 | void SetProtectedResourceSession( | ||
| 1412 | [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession | ||
| 1413 | ); | ||
| 1414 | |||
| 1415 | void InitializeExtensionCommand( | ||
| 1416 | [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand, | ||
| 1417 | [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters, | ||
| 1418 | SIZE_T InitializationParametersSizeInBytes); | ||
| 1419 | |||
| 1420 | void ExecuteExtensionCommand( | ||
| 1421 | [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand, | ||
| 1422 | [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, | ||
| 1423 | SIZE_T ExecutionParametersSizeInBytes); | ||
| 1424 | } | ||
| 1425 | |||
| 1426 | [uuid(1a0a4ca4-9f08-40ce-9558-b411fd2666ff), object, local, pointer_default(unique)] | ||
| 1427 | interface ID3D12VideoProcessCommandList3 | ||
| 1428 | : ID3D12VideoProcessCommandList2 | ||
| 1429 | { | ||
| 1430 | void Barrier( | ||
| 1431 | UINT32 NumBarrierGroups, | ||
| 1432 | [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups | ||
| 1433 | ); | ||
| 1434 | } | ||
| 1435 | |||
| 1436 | |||
| 1437 | |||
| 1438 | [uuid(94971eca-2bdb-4769-88cf-3675ea757ebc), object, local, pointer_default(unique)] | ||
| 1439 | interface ID3D12VideoEncodeCommandList1 | ||
| 1440 | : ID3D12VideoEncodeCommandList | ||
| 1441 | { | ||
| 1442 | void InitializeExtensionCommand( | ||
| 1443 | [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand, | ||
| 1444 | [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters, | ||
| 1445 | SIZE_T InitializationParametersSizeInBytes); | ||
| 1446 | |||
| 1447 | void ExecuteExtensionCommand( | ||
| 1448 | [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand, | ||
| 1449 | [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, | ||
| 1450 | SIZE_T ExecutionParametersSizeInBytes); | ||
| 1451 | } | ||
| 1452 | |||
| 1453 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9); ") | ||
| 1454 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); ") | ||
| 1455 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") | ||
| 1456 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);") | ||
| 1457 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);") | ||
| 1458 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);") | ||
| 1459 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") | ||
| 1460 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") | ||
| 1461 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);") | ||
| 1462 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);") | ||
| 1463 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);") | ||
| 1464 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);") | ||
| 1465 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);") | ||
| 1466 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);") | ||
| 1467 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);") | ||
| 1468 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);") | ||
| 1469 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);") | ||
| 1470 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);") | ||
| 1471 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);") | ||
| 1472 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);") | ||
| 1473 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);") | ||
| 1474 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);") | ||
| 1475 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);") | ||
| 1476 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);") | ||
| 1477 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);") | ||
| 1478 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);") | ||
| 1479 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);") | ||
| 1480 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);") | ||
| 1481 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);") | ||
| 1482 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);") | ||
| 1483 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4); ") | ||
| 1484 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd); ") | ||
| 1485 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97); ") | ||
| 1486 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d); ") | ||
| 1487 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac); ") | ||
| 1488 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21); ") | ||
| 1489 | cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);") | ||
| 1490 | |||
| 1491 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 1492 | // Video Encoder | ||
| 1493 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 1494 | |||
| 1495 | typedef enum D3D12_VIDEO_ENCODER_AV1_PROFILE | ||
| 1496 | { | ||
| 1497 | D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0, | ||
| 1498 | D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1, | ||
| 1499 | D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2, | ||
| 1500 | } D3D12_VIDEO_ENCODER_AV1_PROFILE; | ||
| 1501 | |||
| 1502 | typedef enum D3D12_VIDEO_ENCODER_AV1_LEVELS | ||
| 1503 | { // These values are defined according to the AV1 codec standard spec | ||
| 1504 | D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0, | ||
| 1505 | D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1, | ||
| 1506 | D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2, | ||
| 1507 | D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3, | ||
| 1508 | D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4, | ||
| 1509 | D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5, | ||
| 1510 | D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6, | ||
| 1511 | D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7, | ||
| 1512 | D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8, | ||
| 1513 | D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9, | ||
| 1514 | D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10, | ||
| 1515 | D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11, | ||
| 1516 | D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12, | ||
| 1517 | D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13, | ||
| 1518 | D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14, | ||
| 1519 | D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15, | ||
| 1520 | D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16, | ||
| 1521 | D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17, | ||
| 1522 | D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18, | ||
| 1523 | D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19, | ||
| 1524 | D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20, | ||
| 1525 | D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21, | ||
| 1526 | D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22, | ||
| 1527 | D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23, | ||
| 1528 | } D3D12_VIDEO_ENCODER_AV1_LEVELS; | ||
| 1529 | |||
| 1530 | typedef enum D3D12_VIDEO_ENCODER_AV1_TIER | ||
| 1531 | { | ||
| 1532 | D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0, | ||
| 1533 | D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1, | ||
| 1534 | } D3D12_VIDEO_ENCODER_AV1_TIER; | ||
| 1535 | |||
| 1536 | typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS | ||
| 1537 | { | ||
| 1538 | D3D12_VIDEO_ENCODER_AV1_LEVELS Level; | ||
| 1539 | D3D12_VIDEO_ENCODER_AV1_TIER Tier; | ||
| 1540 | } D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS; | ||
| 1541 | |||
| 1542 | typedef enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS | ||
| 1543 | { | ||
| 1544 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0x0, | ||
| 1545 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1, | ||
| 1546 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2, | ||
| 1547 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4, | ||
| 1548 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8, | ||
| 1549 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10, | ||
| 1550 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20, | ||
| 1551 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40, | ||
| 1552 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80, | ||
| 1553 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100, | ||
| 1554 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200, | ||
| 1555 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400, | ||
| 1556 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800, | ||
| 1557 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000, | ||
| 1558 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000, | ||
| 1559 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000, | ||
| 1560 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000, | ||
| 1561 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000, | ||
| 1562 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000, | ||
| 1563 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000, | ||
| 1564 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000, | ||
| 1565 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000, | ||
| 1566 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000, | ||
| 1567 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000, | ||
| 1568 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000, | ||
| 1569 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000, | ||
| 1570 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000, | ||
| 1571 | } D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS; | ||
| 1572 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)") | ||
| 1573 | |||
| 1574 | typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE { | ||
| 1575 | D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0, | ||
| 1576 | D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1, | ||
| 1577 | D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2, | ||
| 1578 | } D3D12_VIDEO_ENCODER_AV1_TX_MODE; | ||
| 1579 | |||
| 1580 | typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS { | ||
| 1581 | D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0x0, | ||
| 1582 | D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4), | ||
| 1583 | D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST), | ||
| 1584 | D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT), | ||
| 1585 | } D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS; | ||
| 1586 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)") | ||
| 1587 | |||
| 1588 | typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS { | ||
| 1589 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0, | ||
| 1590 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1, | ||
| 1591 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2, | ||
| 1592 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3, | ||
| 1593 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4, | ||
| 1594 | } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS; | ||
| 1595 | |||
| 1596 | typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS { | ||
| 1597 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0x0, | ||
| 1598 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP), | ||
| 1599 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH), | ||
| 1600 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP), | ||
| 1601 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR), | ||
| 1602 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE), | ||
| 1603 | } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS; | ||
| 1604 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)") | ||
| 1605 | |||
| 1606 | typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE { | ||
| 1607 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0, | ||
| 1608 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1, | ||
| 1609 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2, | ||
| 1610 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3, | ||
| 1611 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4, | ||
| 1612 | } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE; | ||
| 1613 | |||
| 1614 | typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE { | ||
| 1615 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0, | ||
| 1616 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1, | ||
| 1617 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2, | ||
| 1618 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3, | ||
| 1619 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4, | ||
| 1620 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5, | ||
| 1621 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6, | ||
| 1622 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7, | ||
| 1623 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8, | ||
| 1624 | } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE; | ||
| 1625 | |||
| 1626 | typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS { | ||
| 1627 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0, | ||
| 1628 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED), | ||
| 1629 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q), | ||
| 1630 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V), | ||
| 1631 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H), | ||
| 1632 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U), | ||
| 1633 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V), | ||
| 1634 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME), | ||
| 1635 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP), | ||
| 1636 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV), | ||
| 1637 | } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS; | ||
| 1638 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)") | ||
| 1639 | |||
| 1640 | typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE { | ||
| 1641 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0, | ||
| 1642 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1, | ||
| 1643 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2, | ||
| 1644 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3, | ||
| 1645 | } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE; | ||
| 1646 | |||
| 1647 | typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE { | ||
| 1648 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0, | ||
| 1649 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1, | ||
| 1650 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2, | ||
| 1651 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3, | ||
| 1652 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4, | ||
| 1653 | } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE; | ||
| 1654 | |||
| 1655 | typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS { | ||
| 1656 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0x0, | ||
| 1657 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1, | ||
| 1658 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2, | ||
| 1659 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4, | ||
| 1660 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8, | ||
| 1661 | } D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS; | ||
| 1662 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)") | ||
| 1663 | |||
| 1664 | typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION | ||
| 1665 | { | ||
| 1666 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0, | ||
| 1667 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1, | ||
| 1668 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2, | ||
| 1669 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3, | ||
| 1670 | } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION; | ||
| 1671 | |||
| 1672 | typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS { | ||
| 1673 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0, // None is supported, reference warp motion arguments are ignored and is_global syntax is false for all references | ||
| 1674 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY), | ||
| 1675 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION), | ||
| 1676 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM), | ||
| 1677 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE), | ||
| 1678 | } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS; | ||
| 1679 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)") | ||
| 1680 | |||
| 1681 | typedef enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS { | ||
| 1682 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0, | ||
| 1683 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1, | ||
| 1684 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2, | ||
| 1685 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4, | ||
| 1686 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8, | ||
| 1687 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10, | ||
| 1688 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20, | ||
| 1689 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40, | ||
| 1690 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80, | ||
| 1691 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100, | ||
| 1692 | } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS; | ||
| 1693 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)") | ||
| 1694 | |||
| 1695 | typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT { | ||
| 1696 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags; | ||
| 1697 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags; | ||
| 1698 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters; | ||
| 1699 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[3][3]; | ||
| 1700 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes; | ||
| 1701 | D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[4]; // Different for D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE types | ||
| 1702 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize; | ||
| 1703 | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags; | ||
| 1704 | UINT MaxTemporalLayers; | ||
| 1705 | UINT MaxSpatialLayers; | ||
| 1706 | } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT; | ||
| 1707 | |||
| 1708 | typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE | ||
| 1709 | { | ||
| 1710 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0, | ||
| 1711 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1, | ||
| 1712 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2, | ||
| 1713 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3, | ||
| 1714 | } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE; | ||
| 1715 | |||
| 1716 | typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS { | ||
| 1717 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0x0, | ||
| 1718 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME), | ||
| 1719 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME), | ||
| 1720 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME), | ||
| 1721 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME), | ||
| 1722 | } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS; | ||
| 1723 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)") | ||
| 1724 | |||
| 1725 | typedef enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE | ||
| 1726 | { | ||
| 1727 | D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0, | ||
| 1728 | D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1, | ||
| 1729 | } D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE; | ||
| 1730 | |||
| 1731 | typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT { | ||
| 1732 | D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode; | ||
| 1733 | UINT MaxUniqueReferencesPerFrame; | ||
| 1734 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes; | ||
| 1735 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags; | ||
| 1736 | } D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT; | ||
| 1737 | |||
| 1738 | typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION { | ||
| 1739 | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags; | ||
| 1740 | UINT OrderHintBitsMinus1; | ||
| 1741 | } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION; | ||
| 1742 | |||
| 1743 | typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE | ||
| 1744 | { | ||
| 1745 | UINT IntraDistance; | ||
| 1746 | UINT InterFramePeriod; | ||
| 1747 | } D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE; | ||
| 1748 | |||
| 1749 | typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO | ||
| 1750 | { | ||
| 1751 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType; | ||
| 1752 | INT TransformationMatrix[8]; | ||
| 1753 | BOOL InvalidAffineSet; // Valid or invalid on affine set | ||
| 1754 | } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO; | ||
| 1755 | |||
| 1756 | typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR | ||
| 1757 | { | ||
| 1758 | UINT ReconstructedPictureResourceIndex; | ||
| 1759 | UINT TemporalLayerIndexPlus1; | ||
| 1760 | UINT SpatialLayerIndexPlus1; | ||
| 1761 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType; | ||
| 1762 | // Only used if supported in D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS, ignored by driver otherwise | ||
| 1763 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo; | ||
| 1764 | UINT OrderHint; | ||
| 1765 | UINT PictureIndex; | ||
| 1766 | } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR; | ||
| 1767 | |||
| 1768 | typedef enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS | ||
| 1769 | { | ||
| 1770 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0x0, | ||
| 1771 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1, | ||
| 1772 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2, | ||
| 1773 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4, | ||
| 1774 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8, | ||
| 1775 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10, | ||
| 1776 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20, | ||
| 1777 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40, | ||
| 1778 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80, | ||
| 1779 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100, | ||
| 1780 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200, | ||
| 1781 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400, | ||
| 1782 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800, | ||
| 1783 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000, | ||
| 1784 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000, | ||
| 1785 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000, | ||
| 1786 | |||
| 1787 | } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS; | ||
| 1788 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)") | ||
| 1789 | |||
| 1790 | typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG { | ||
| 1791 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[3]; | ||
| 1792 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[3]; | ||
| 1793 | } D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG; | ||
| 1794 | |||
| 1795 | typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA { | ||
| 1796 | UINT64 EnabledFeatures; // D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS | ||
| 1797 | // For the enabled features in EnabledFeatures, the array below | ||
| 1798 | // is indexed by D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE - 1 | ||
| 1799 | INT64 FeatureValue[8]; | ||
| 1800 | } D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA; | ||
| 1801 | |||
| 1802 | typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG { | ||
| 1803 | UINT64 UpdateMap; | ||
| 1804 | UINT64 TemporalUpdate; | ||
| 1805 | UINT64 UpdateData; | ||
| 1806 | UINT64 NumSegments; | ||
| 1807 | D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[8]; | ||
| 1808 | } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG; | ||
| 1809 | |||
| 1810 | typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP { | ||
| 1811 | UINT SegmentsMapByteSize; | ||
| 1812 | UINT8* pSegmentsMap; | ||
| 1813 | } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP; | ||
| 1814 | |||
| 1815 | typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG { | ||
| 1816 | UINT64 LoopFilterLevel[2]; | ||
| 1817 | UINT64 LoopFilterLevelU; | ||
| 1818 | UINT64 LoopFilterLevelV; | ||
| 1819 | UINT64 LoopFilterSharpnessLevel; | ||
| 1820 | UINT64 LoopFilterDeltaEnabled; | ||
| 1821 | // loop_filter_delta_update = UpdateRefDelta || UpdateModeDelta | ||
| 1822 | UINT64 UpdateRefDelta; | ||
| 1823 | INT64 RefDeltas[8]; | ||
| 1824 | UINT64 UpdateModeDelta; | ||
| 1825 | INT64 ModeDeltas[2]; | ||
| 1826 | } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG; | ||
| 1827 | |||
| 1828 | typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG { | ||
| 1829 | UINT64 DeltaLFPresent; | ||
| 1830 | UINT64 DeltaLFMulti; | ||
| 1831 | UINT64 DeltaLFRes; | ||
| 1832 | } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG; | ||
| 1833 | |||
| 1834 | typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG { | ||
| 1835 | UINT64 BaseQIndex; | ||
| 1836 | INT64 YDCDeltaQ; | ||
| 1837 | INT64 UDCDeltaQ; | ||
| 1838 | INT64 UACDeltaQ; | ||
| 1839 | INT64 VDCDeltaQ; | ||
| 1840 | INT64 VACDeltaQ; | ||
| 1841 | UINT64 UsingQMatrix; | ||
| 1842 | UINT64 QMY; | ||
| 1843 | UINT64 QMU; | ||
| 1844 | UINT64 QMV; | ||
| 1845 | } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG; | ||
| 1846 | |||
| 1847 | typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG { | ||
| 1848 | UINT64 DeltaQPresent; | ||
| 1849 | UINT64 DeltaQRes; | ||
| 1850 | } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG; | ||
| 1851 | |||
| 1852 | typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG { | ||
| 1853 | UINT64 CdefBits; | ||
| 1854 | UINT64 CdefDampingMinus3; | ||
| 1855 | UINT64 CdefYPriStrength[8]; | ||
| 1856 | UINT64 CdefUVPriStrength[8]; | ||
| 1857 | UINT64 CdefYSecStrength[8]; | ||
| 1858 | UINT64 CdefUVSecStrength[8]; | ||
| 1859 | } D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG; | ||
| 1860 | |||
| 1861 | typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA | ||
| 1862 | { | ||
| 1863 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags; | ||
| 1864 | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType; | ||
| 1865 | D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType; | ||
| 1866 | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter; | ||
| 1867 | D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig; | ||
| 1868 | D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode; | ||
| 1869 | UINT SuperResDenominator; | ||
| 1870 | UINT OrderHint; | ||
| 1871 | UINT PictureIndex; | ||
| 1872 | UINT TemporalLayerIndexPlus1; | ||
| 1873 | UINT SpatialLayerIndexPlus1; | ||
| 1874 | D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[8]; | ||
| 1875 | UINT ReferenceIndices[7]; | ||
| 1876 | UINT PrimaryRefFrame; | ||
| 1877 | UINT RefreshFrameFlags; | ||
| 1878 | D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter; | ||
| 1879 | D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta; | ||
| 1880 | D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization; | ||
| 1881 | D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta; | ||
| 1882 | D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF; | ||
| 1883 | UINT QPMapValuesCount; | ||
| 1884 | [annotation("_Field_size_full_(QPMapValuesCount)")] INT16* pRateControlQPMap; | ||
| 1885 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation; | ||
| 1886 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap; | ||
| 1887 | } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA; | ||
| 1888 | |||
| 1889 | typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES | ||
| 1890 | { | ||
| 1891 | UINT64 RowCount; | ||
| 1892 | UINT64 ColCount; | ||
| 1893 | UINT64 RowHeights[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS]; | ||
| 1894 | UINT64 ColWidths[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS]; | ||
| 1895 | UINT64 ContextUpdateTileId; | ||
| 1896 | } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES; | ||
| 1897 | |||
| 1898 | typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES | ||
| 1899 | { | ||
| 1900 | UINT64 CompoundPredictionType; // D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE | ||
| 1901 | D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter; | ||
| 1902 | D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta; | ||
| 1903 | D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization; | ||
| 1904 | D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta; | ||
| 1905 | D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF; | ||
| 1906 | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig; | ||
| 1907 | UINT64 PrimaryRefFrame; // Aligned to 64 for use of post encode metadata with predication | ||
| 1908 | UINT64 ReferenceIndices[7]; // Aligned to 64 for use of post encode metadata with predication | ||
| 1909 | } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES; | ||
| 1910 | |||
| 1911 | // | ||
| 1912 | // Rate control API | ||
| 1913 | // | ||
| 1914 | |||
| 1915 | typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE | ||
| 1916 | { | ||
| 1917 | D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0, | ||
| 1918 | D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1, | ||
| 1919 | D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2, | ||
| 1920 | D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3, | ||
| 1921 | D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4, | ||
| 1922 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE; | ||
| 1923 | |||
| 1924 | typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS | ||
| 1925 | { | ||
| 1926 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0x0, | ||
| 1927 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1, | ||
| 1928 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2, | ||
| 1929 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4, | ||
| 1930 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8, | ||
| 1931 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10, | ||
| 1932 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20, | ||
| 1933 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40, | ||
| 1934 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80, | ||
| 1935 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100, | ||
| 1936 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS; | ||
| 1937 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)") | ||
| 1938 | |||
| 1939 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP { | ||
| 1940 | UINT ConstantQP_FullIntracodedFrame; | ||
| 1941 | UINT ConstantQP_InterPredictedFrame_PrevRefOnly; | ||
| 1942 | UINT ConstantQP_InterPredictedFrame_BiDirectionalRef; | ||
| 1943 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP; | ||
| 1944 | |||
| 1945 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 { | ||
| 1946 | UINT ConstantQP_FullIntracodedFrame; | ||
| 1947 | UINT ConstantQP_InterPredictedFrame_PrevRefOnly; | ||
| 1948 | UINT ConstantQP_InterPredictedFrame_BiDirectionalRef; | ||
| 1949 | UINT QualityVsSpeed; | ||
| 1950 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1; | ||
| 1951 | |||
| 1952 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR { | ||
| 1953 | UINT InitialQP; | ||
| 1954 | UINT MinQP; | ||
| 1955 | UINT MaxQP; | ||
| 1956 | UINT64 MaxFrameBitSize; | ||
| 1957 | UINT64 TargetBitRate; | ||
| 1958 | UINT64 VBVCapacity; | ||
| 1959 | UINT64 InitialVBVFullness; | ||
| 1960 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR; | ||
| 1961 | |||
| 1962 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 { | ||
| 1963 | UINT InitialQP; | ||
| 1964 | UINT MinQP; | ||
| 1965 | UINT MaxQP; | ||
| 1966 | UINT64 MaxFrameBitSize; | ||
| 1967 | UINT64 TargetBitRate; | ||
| 1968 | UINT64 VBVCapacity; | ||
| 1969 | UINT64 InitialVBVFullness; | ||
| 1970 | UINT QualityVsSpeed; | ||
| 1971 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1; | ||
| 1972 | |||
| 1973 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR { | ||
| 1974 | UINT InitialQP; | ||
| 1975 | UINT MinQP; | ||
| 1976 | UINT MaxQP; | ||
| 1977 | UINT64 MaxFrameBitSize; | ||
| 1978 | UINT64 TargetAvgBitRate; | ||
| 1979 | UINT64 PeakBitRate; | ||
| 1980 | UINT64 VBVCapacity; | ||
| 1981 | UINT64 InitialVBVFullness; | ||
| 1982 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR; | ||
| 1983 | |||
| 1984 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 { | ||
| 1985 | UINT InitialQP; | ||
| 1986 | UINT MinQP; | ||
| 1987 | UINT MaxQP; | ||
| 1988 | UINT64 MaxFrameBitSize; | ||
| 1989 | UINT64 TargetAvgBitRate; | ||
| 1990 | UINT64 PeakBitRate; | ||
| 1991 | UINT64 VBVCapacity; | ||
| 1992 | UINT64 InitialVBVFullness; | ||
| 1993 | UINT QualityVsSpeed; | ||
| 1994 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1; | ||
| 1995 | |||
| 1996 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR { | ||
| 1997 | UINT InitialQP; | ||
| 1998 | UINT MinQP; | ||
| 1999 | UINT MaxQP; | ||
| 2000 | UINT64 MaxFrameBitSize; | ||
| 2001 | UINT64 TargetAvgBitRate; | ||
| 2002 | UINT64 PeakBitRate; | ||
| 2003 | UINT ConstantQualityTarget; | ||
| 2004 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR; | ||
| 2005 | |||
| 2006 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1 | ||
| 2007 | { | ||
| 2008 | UINT InitialQP; | ||
| 2009 | UINT MinQP; | ||
| 2010 | UINT MaxQP; | ||
| 2011 | UINT64 MaxFrameBitSize; | ||
| 2012 | UINT64 TargetAvgBitRate; | ||
| 2013 | UINT64 PeakBitRate; | ||
| 2014 | UINT ConstantQualityTarget; | ||
| 2015 | UINT64 VBVCapacity; | ||
| 2016 | UINT64 InitialVBVFullness; | ||
| 2017 | UINT QualityVsSpeed; | ||
| 2018 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1; | ||
| 2019 | |||
| 2020 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP { | ||
| 2021 | UINT QualityVsSpeed; | ||
| 2022 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP; | ||
| 2023 | |||
| 2024 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS | ||
| 2025 | { | ||
| 2026 | UINT DataSize; | ||
| 2027 | union | ||
| 2028 | { | ||
| 2029 | const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP* pConfiguration_CQP; | ||
| 2030 | const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR* pConfiguration_CBR; | ||
| 2031 | const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR* pConfiguration_VBR; | ||
| 2032 | const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR* pConfiguration_QVBR; | ||
| 2033 | const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1* pConfiguration_CQP1; | ||
| 2034 | const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1* pConfiguration_CBR1; | ||
| 2035 | const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1* pConfiguration_VBR1; | ||
| 2036 | const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1* pConfiguration_QVBR1; | ||
| 2037 | const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP* pConfiguration_AbsoluteQPMap; | ||
| 2038 | }; | ||
| 2039 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS; | ||
| 2040 | |||
| 2041 | typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL { | ||
| 2042 | D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode; | ||
| 2043 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags; | ||
| 2044 | D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams; | ||
| 2045 | DXGI_RATIONAL TargetFrameRate; | ||
| 2046 | } D3D12_VIDEO_ENCODER_RATE_CONTROL; | ||
| 2047 | |||
| 2048 | // | ||
| 2049 | // Video Encoder support API | ||
| 2050 | // | ||
| 2051 | |||
| 2052 | typedef enum D3D12_VIDEO_ENCODER_CODEC | ||
| 2053 | { | ||
| 2054 | D3D12_VIDEO_ENCODER_CODEC_H264 = 0, | ||
| 2055 | D3D12_VIDEO_ENCODER_CODEC_HEVC = 1, | ||
| 2056 | D3D12_VIDEO_ENCODER_CODEC_AV1 = 2, | ||
| 2057 | } D3D12_VIDEO_ENCODER_CODEC; | ||
| 2058 | |||
| 2059 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC | ||
| 2060 | { | ||
| 2061 | UINT NodeIndex; // input | ||
| 2062 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2063 | BOOL IsSupported; // output | ||
| 2064 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC; | ||
| 2065 | |||
| 2066 | typedef enum D3D12_VIDEO_ENCODER_PROFILE_H264 | ||
| 2067 | { | ||
| 2068 | D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0, | ||
| 2069 | D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1, | ||
| 2070 | D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2, | ||
| 2071 | } D3D12_VIDEO_ENCODER_PROFILE_H264; | ||
| 2072 | |||
| 2073 | typedef enum D3D12_VIDEO_ENCODER_PROFILE_HEVC | ||
| 2074 | { | ||
| 2075 | D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0, | ||
| 2076 | D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1, | ||
| 2077 | D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2, | ||
| 2078 | D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3, | ||
| 2079 | D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4, | ||
| 2080 | D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5, | ||
| 2081 | D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6, | ||
| 2082 | D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7, | ||
| 2083 | D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8, | ||
| 2084 | } D3D12_VIDEO_ENCODER_PROFILE_HEVC; | ||
| 2085 | |||
| 2086 | typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC | ||
| 2087 | { | ||
| 2088 | UINT DataSize; | ||
| 2089 | union | ||
| 2090 | { | ||
| 2091 | D3D12_VIDEO_ENCODER_PROFILE_H264* pH264Profile; | ||
| 2092 | D3D12_VIDEO_ENCODER_PROFILE_HEVC* pHEVCProfile; | ||
| 2093 | D3D12_VIDEO_ENCODER_AV1_PROFILE* pAV1Profile; | ||
| 2094 | }; | ||
| 2095 | } D3D12_VIDEO_ENCODER_PROFILE_DESC; | ||
| 2096 | |||
| 2097 | typedef enum D3D12_VIDEO_ENCODER_LEVELS_H264 | ||
| 2098 | { | ||
| 2099 | D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0, | ||
| 2100 | D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1, | ||
| 2101 | D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2, | ||
| 2102 | D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3, | ||
| 2103 | D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4, | ||
| 2104 | D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5, | ||
| 2105 | D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6, | ||
| 2106 | D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7, | ||
| 2107 | D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8, | ||
| 2108 | D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9, | ||
| 2109 | D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10, | ||
| 2110 | D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11, | ||
| 2111 | D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12, | ||
| 2112 | D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13, | ||
| 2113 | D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14, | ||
| 2114 | D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15, | ||
| 2115 | D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16, | ||
| 2116 | D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17, | ||
| 2117 | D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18, | ||
| 2118 | D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19, | ||
| 2119 | } D3D12_VIDEO_ENCODER_LEVELS_H264; | ||
| 2120 | |||
| 2121 | typedef enum D3D12_VIDEO_ENCODER_TIER_HEVC | ||
| 2122 | { | ||
| 2123 | D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0, | ||
| 2124 | D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1, | ||
| 2125 | } D3D12_VIDEO_ENCODER_TIER_HEVC; | ||
| 2126 | |||
| 2127 | typedef enum D3D12_VIDEO_ENCODER_LEVELS_HEVC | ||
| 2128 | { | ||
| 2129 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0, | ||
| 2130 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1, | ||
| 2131 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2, | ||
| 2132 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3, | ||
| 2133 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4, | ||
| 2134 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5, | ||
| 2135 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6, | ||
| 2136 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7, | ||
| 2137 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8, | ||
| 2138 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9, | ||
| 2139 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10, | ||
| 2140 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11, | ||
| 2141 | D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12, | ||
| 2142 | } D3D12_VIDEO_ENCODER_LEVELS_HEVC; | ||
| 2143 | |||
| 2144 | typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC | ||
| 2145 | { | ||
| 2146 | D3D12_VIDEO_ENCODER_LEVELS_HEVC Level; | ||
| 2147 | D3D12_VIDEO_ENCODER_TIER_HEVC Tier; | ||
| 2148 | } D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC; | ||
| 2149 | |||
| 2150 | typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING | ||
| 2151 | { | ||
| 2152 | UINT DataSize; | ||
| 2153 | union | ||
| 2154 | { | ||
| 2155 | D3D12_VIDEO_ENCODER_LEVELS_H264* pH264LevelSetting; | ||
| 2156 | D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC* pHEVCLevelSetting; | ||
| 2157 | D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS* pAV1LevelSetting; | ||
| 2158 | }; | ||
| 2159 | } D3D12_VIDEO_ENCODER_LEVEL_SETTING; | ||
| 2160 | |||
| 2161 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL | ||
| 2162 | { | ||
| 2163 | UINT NodeIndex; // input | ||
| 2164 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2165 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input | ||
| 2166 | BOOL IsSupported; // output | ||
| 2167 | D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel; // output | ||
| 2168 | D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel; // output | ||
| 2169 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL; | ||
| 2170 | |||
| 2171 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC | ||
| 2172 | { | ||
| 2173 | UINT Width; | ||
| 2174 | UINT Height; | ||
| 2175 | } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC; | ||
| 2176 | |||
| 2177 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC | ||
| 2178 | { | ||
| 2179 | UINT WidthRatio; | ||
| 2180 | UINT HeightRatio; | ||
| 2181 | } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC; | ||
| 2182 | |||
| 2183 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT | ||
| 2184 | { | ||
| 2185 | UINT NodeIndex; // input | ||
| 2186 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2187 | UINT ResolutionRatiosCount; // output | ||
| 2188 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT; | ||
| 2189 | |||
| 2190 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION | ||
| 2191 | { | ||
| 2192 | UINT NodeIndex; // input | ||
| 2193 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2194 | UINT ResolutionRatiosCount; // input | ||
| 2195 | BOOL IsSupported; // output | ||
| 2196 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported; // output | ||
| 2197 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported; // output | ||
| 2198 | UINT ResolutionWidthMultipleRequirement; // output | ||
| 2199 | UINT ResolutionHeightMultipleRequirement; // output | ||
| 2200 | [annotation("_Field_size_full_(ResolutionRatiosCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC* pResolutionRatios; | ||
| 2201 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION; | ||
| 2202 | |||
| 2203 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT | ||
| 2204 | { | ||
| 2205 | UINT NodeIndex; // input | ||
| 2206 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2207 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input | ||
| 2208 | DXGI_FORMAT Format; // input | ||
| 2209 | BOOL IsSupported; // output | ||
| 2210 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT; | ||
| 2211 | |||
| 2212 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE | ||
| 2213 | { | ||
| 2214 | UINT NodeIndex; // input | ||
| 2215 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2216 | D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode; // input | ||
| 2217 | BOOL IsSupported; // output | ||
| 2218 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE; | ||
| 2219 | |||
| 2220 | typedef enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE | ||
| 2221 | { | ||
| 2222 | D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0, | ||
| 2223 | D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1, | ||
| 2224 | } D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE; | ||
| 2225 | |||
| 2226 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE { | ||
| 2227 | UINT NodeIndex; // input | ||
| 2228 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2229 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input | ||
| 2230 | D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input | ||
| 2231 | D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode; // input | ||
| 2232 | BOOL IsSupported; // output | ||
| 2233 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE; | ||
| 2234 | |||
| 2235 | typedef enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE | ||
| 2236 | { | ||
| 2237 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0, | ||
| 2238 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1, | ||
| 2239 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2, | ||
| 2240 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3, | ||
| 2241 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4, | ||
| 2242 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5, | ||
| 2243 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6, | ||
| 2244 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7, | ||
| 2245 | } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE; | ||
| 2246 | |||
| 2247 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE | ||
| 2248 | { | ||
| 2249 | UINT NodeIndex; // input | ||
| 2250 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2251 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input | ||
| 2252 | D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input | ||
| 2253 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input | ||
| 2254 | BOOL IsSupported; // output | ||
| 2255 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE; | ||
| 2256 | |||
| 2257 | typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS | ||
| 2258 | { | ||
| 2259 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0x0, | ||
| 2260 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1, | ||
| 2261 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2, | ||
| 2262 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4, | ||
| 2263 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8, | ||
| 2264 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10, | ||
| 2265 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20, | ||
| 2266 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40, | ||
| 2267 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80, | ||
| 2268 | |||
| 2269 | } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS; | ||
| 2270 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)") | ||
| 2271 | |||
| 2272 | typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT | ||
| 2273 | { | ||
| 2274 | BOOL Use128SuperBlocks; | ||
| 2275 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration; | ||
| 2276 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags; | ||
| 2277 | UINT MinTileRows; | ||
| 2278 | UINT MaxTileRows; | ||
| 2279 | UINT MinTileCols; | ||
| 2280 | UINT MaxTileCols; | ||
| 2281 | UINT MinTileWidth; | ||
| 2282 | UINT MaxTileWidth; | ||
| 2283 | UINT MinTileArea; | ||
| 2284 | UINT MaxTileArea; | ||
| 2285 | UINT TileSizeBytesMinus1; | ||
| 2286 | } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT; | ||
| 2287 | |||
| 2288 | typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT { | ||
| 2289 | UINT DataSize; | ||
| 2290 | union | ||
| 2291 | { | ||
| 2292 | D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT* pAV1Support; | ||
| 2293 | }; | ||
| 2294 | } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT; | ||
| 2295 | |||
| 2296 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG | ||
| 2297 | { | ||
| 2298 | UINT NodeIndex; // input | ||
| 2299 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2300 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input | ||
| 2301 | D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input | ||
| 2302 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input | ||
| 2303 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution; // input | ||
| 2304 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport; // input/output | ||
| 2305 | BOOL IsSupported; // output | ||
| 2306 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG; | ||
| 2307 | |||
| 2308 | typedef enum D3D12_VIDEO_ENCODER_HEAP_FLAGS | ||
| 2309 | { | ||
| 2310 | D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0x0, | ||
| 2311 | D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1, | ||
| 2312 | D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2, | ||
| 2313 | D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4, | ||
| 2314 | D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8, | ||
| 2315 | } D3D12_VIDEO_ENCODER_HEAP_FLAGS; | ||
| 2316 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)") | ||
| 2317 | |||
| 2318 | typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC | ||
| 2319 | { | ||
| 2320 | UINT NodeMask; | ||
| 2321 | D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags; | ||
| 2322 | D3D12_VIDEO_ENCODER_CODEC EncodeCodec; | ||
| 2323 | D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile; | ||
| 2324 | D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel; | ||
| 2325 | UINT ResolutionsListCount; | ||
| 2326 | [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList; | ||
| 2327 | } D3D12_VIDEO_ENCODER_HEAP_DESC; | ||
| 2328 | |||
| 2329 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE { | ||
| 2330 | D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc; // input | ||
| 2331 | BOOL IsSupported; // output | ||
| 2332 | UINT64 MemoryPoolL0Size; // output | ||
| 2333 | UINT64 MemoryPoolL1Size; // output | ||
| 2334 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE; | ||
| 2335 | |||
| 2336 | typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS | ||
| 2337 | { | ||
| 2338 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0x0, | ||
| 2339 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1, | ||
| 2340 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2, | ||
| 2341 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4, | ||
| 2342 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8, | ||
| 2343 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10, | ||
| 2344 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20, | ||
| 2345 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40, | ||
| 2346 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80, | ||
| 2347 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS; | ||
| 2348 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)") | ||
| 2349 | |||
| 2350 | typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES { | ||
| 2351 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0, | ||
| 2352 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1, | ||
| 2353 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2, | ||
| 2354 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3, | ||
| 2355 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4, | ||
| 2356 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5, | ||
| 2357 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6, | ||
| 2358 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES; | ||
| 2359 | |||
| 2360 | typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS { | ||
| 2361 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0x0, | ||
| 2362 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED), | ||
| 2363 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_1_DISABLE_ALL_SLICE_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES), | ||
| 2364 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS), | ||
| 2365 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_3_USE_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING), | ||
| 2366 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_4_DISABLE_CHROMA_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES), | ||
| 2367 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES), | ||
| 2368 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING), | ||
| 2369 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS; | ||
| 2370 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)") | ||
| 2371 | |||
| 2372 | typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 { | ||
| 2373 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags; | ||
| 2374 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes; | ||
| 2375 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264; | ||
| 2376 | |||
| 2377 | typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS | ||
| 2378 | { | ||
| 2379 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0x0, | ||
| 2380 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1, | ||
| 2381 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2, | ||
| 2382 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4, | ||
| 2383 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8, | ||
| 2384 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10, | ||
| 2385 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20, | ||
| 2386 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40, | ||
| 2387 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80, | ||
| 2388 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100, | ||
| 2389 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200, | ||
| 2390 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400, | ||
| 2391 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800, | ||
| 2392 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000, | ||
| 2393 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000, | ||
| 2394 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000, | ||
| 2395 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000, | ||
| 2396 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000, | ||
| 2397 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000, | ||
| 2398 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000, | ||
| 2399 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000, | ||
| 2400 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000, | ||
| 2401 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000, | ||
| 2402 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000, | ||
| 2403 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000, | ||
| 2404 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000, | ||
| 2405 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000, | ||
| 2406 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000, | ||
| 2407 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000, | ||
| 2408 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000, | ||
| 2409 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000, | ||
| 2410 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000, | ||
| 2411 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000, // 2^31 - 32 bit integer enum type | ||
| 2412 | |||
| 2413 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS; | ||
| 2414 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)") | ||
| 2415 | |||
| 2416 | typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE { | ||
| 2417 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0, | ||
| 2418 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1, | ||
| 2419 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2, | ||
| 2420 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3, | ||
| 2421 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE; | ||
| 2422 | |||
| 2423 | typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE { | ||
| 2424 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0, | ||
| 2425 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1, | ||
| 2426 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2, | ||
| 2427 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3, | ||
| 2428 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE; | ||
| 2429 | |||
| 2430 | typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC { | ||
| 2431 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags; | ||
| 2432 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize; | ||
| 2433 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize; | ||
| 2434 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize; | ||
| 2435 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize; | ||
| 2436 | UCHAR max_transform_hierarchy_depth_inter; | ||
| 2437 | UCHAR max_transform_hierarchy_depth_intra; | ||
| 2438 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC; | ||
| 2439 | |||
| 2440 | |||
| 2441 | typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 | ||
| 2442 | { | ||
| 2443 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0x0, | ||
| 2444 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1, | ||
| 2445 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2, | ||
| 2446 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1; | ||
| 2447 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)") | ||
| 2448 | |||
| 2449 | typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 { | ||
| 2450 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags; | ||
| 2451 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize; | ||
| 2452 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize; | ||
| 2453 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize; | ||
| 2454 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize; | ||
| 2455 | UCHAR max_transform_hierarchy_depth_inter; | ||
| 2456 | UCHAR max_transform_hierarchy_depth_intra; | ||
| 2457 | UINT allowed_diff_cu_chroma_qp_offset_depth_values; | ||
| 2458 | UINT allowed_log2_sao_offset_scale_luma_values; | ||
| 2459 | UINT allowed_log2_sao_offset_scale_chroma_values; | ||
| 2460 | UINT allowed_log2_max_transform_skip_block_size_minus2_values; | ||
| 2461 | UINT allowed_chroma_qp_offset_list_len_minus1_values; | ||
| 2462 | UINT allowed_cb_qp_offset_list_values[6]; | ||
| 2463 | UINT allowed_cr_qp_offset_list_values[6]; | ||
| 2464 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1; | ||
| 2465 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1; | ||
| 2466 | |||
| 2467 | typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT { | ||
| 2468 | UINT DataSize; | ||
| 2469 | union | ||
| 2470 | { | ||
| 2471 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264* pH264Support; | ||
| 2472 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC* pHEVCSupport; | ||
| 2473 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1* pHEVCSupport1; | ||
| 2474 | D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT* pAV1Support; | ||
| 2475 | }; | ||
| 2476 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT; | ||
| 2477 | |||
| 2478 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT { | ||
| 2479 | UINT NodeIndex; // input | ||
| 2480 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2481 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input | ||
| 2482 | BOOL IsSupported; // output | ||
| 2483 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits; // input/output | ||
| 2484 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT; | ||
| 2485 | |||
| 2486 | typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 { | ||
| 2487 | UINT MaxL0ReferencesForP; | ||
| 2488 | UINT MaxL0ReferencesForB; | ||
| 2489 | UINT MaxL1ReferencesForB; | ||
| 2490 | UINT MaxLongTermReferences; | ||
| 2491 | UINT MaxDPBCapacity; | ||
| 2492 | } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264; | ||
| 2493 | |||
| 2494 | typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC { | ||
| 2495 | UINT MaxL0ReferencesForP; | ||
| 2496 | UINT MaxL0ReferencesForB; | ||
| 2497 | UINT MaxL1ReferencesForB; | ||
| 2498 | UINT MaxLongTermReferences; | ||
| 2499 | UINT MaxDPBCapacity; | ||
| 2500 | } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC; | ||
| 2501 | |||
| 2502 | typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT { | ||
| 2503 | UINT DataSize; | ||
| 2504 | union | ||
| 2505 | { | ||
| 2506 | D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264* pH264Support; | ||
| 2507 | D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC* pHEVCSupport; | ||
| 2508 | D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT* pAV1Support; | ||
| 2509 | }; | ||
| 2510 | } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT; | ||
| 2511 | |||
| 2512 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT { | ||
| 2513 | UINT NodeIndex; // input | ||
| 2514 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2515 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input | ||
| 2516 | BOOL IsSupported; // output | ||
| 2517 | D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport; // output | ||
| 2518 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT; | ||
| 2519 | |||
| 2520 | typedef enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS | ||
| 2521 | { | ||
| 2522 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0x0, | ||
| 2523 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1, | ||
| 2524 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2, | ||
| 2525 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4, | ||
| 2526 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8, | ||
| 2527 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10, | ||
| 2528 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20, | ||
| 2529 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40, | ||
| 2530 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80, | ||
| 2531 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100, | ||
| 2532 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200, | ||
| 2533 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400, | ||
| 2534 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800, | ||
| 2535 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000, | ||
| 2536 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000, | ||
| 2537 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000, | ||
| 2538 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000, | ||
| 2539 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000, | ||
| 2540 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000, | ||
| 2541 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000, | ||
| 2542 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000, | ||
| 2543 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000, | ||
| 2544 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000, | ||
| 2545 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000, | ||
| 2546 | D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000, | ||
| 2547 | } D3D12_VIDEO_ENCODER_SUPPORT_FLAGS; | ||
| 2548 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)") | ||
| 2549 | |||
| 2550 | typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS | ||
| 2551 | { | ||
| 2552 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0x0, | ||
| 2553 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1, | ||
| 2554 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2, | ||
| 2555 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4, | ||
| 2556 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8, | ||
| 2557 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS; | ||
| 2558 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)") | ||
| 2559 | |||
| 2560 | typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES { | ||
| 2561 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0, | ||
| 2562 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1, | ||
| 2563 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2, | ||
| 2564 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES; | ||
| 2565 | |||
| 2566 | typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 | ||
| 2567 | { | ||
| 2568 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags; | ||
| 2569 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig; | ||
| 2570 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig; | ||
| 2571 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264; | ||
| 2572 | |||
| 2573 | typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS | ||
| 2574 | { | ||
| 2575 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0x0, | ||
| 2576 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1, | ||
| 2577 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2, | ||
| 2578 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4, | ||
| 2579 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8, | ||
| 2580 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10, | ||
| 2581 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20, | ||
| 2582 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40, | ||
| 2583 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80, | ||
| 2584 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100, | ||
| 2585 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200, | ||
| 2586 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400, | ||
| 2587 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800, | ||
| 2588 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000, | ||
| 2589 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000, | ||
| 2590 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000, | ||
| 2591 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000, | ||
| 2592 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000, | ||
| 2593 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS; | ||
| 2594 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)") | ||
| 2595 | |||
| 2596 | typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC { | ||
| 2597 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags; | ||
| 2598 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize; | ||
| 2599 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize; | ||
| 2600 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize; | ||
| 2601 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize; | ||
| 2602 | UCHAR max_transform_hierarchy_depth_inter; | ||
| 2603 | UCHAR max_transform_hierarchy_depth_intra; | ||
| 2604 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC; | ||
| 2605 | |||
| 2606 | typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION | ||
| 2607 | { | ||
| 2608 | UINT DataSize; | ||
| 2609 | union | ||
| 2610 | { | ||
| 2611 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264* pH264Config; | ||
| 2612 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC* pHEVCConfig; | ||
| 2613 | D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION* pAV1Config; | ||
| 2614 | }; | ||
| 2615 | } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION; | ||
| 2616 | |||
| 2617 | typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH | ||
| 2618 | { | ||
| 2619 | D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode; | ||
| 2620 | UINT IntraRefreshDuration; | ||
| 2621 | } D3D12_VIDEO_ENCODER_INTRA_REFRESH; | ||
| 2622 | |||
| 2623 | |||
| 2624 | typedef enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE | ||
| 2625 | { | ||
| 2626 | D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0, | ||
| 2627 | D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1, | ||
| 2628 | D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2, | ||
| 2629 | D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3, | ||
| 2630 | D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4, | ||
| 2631 | } D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE; | ||
| 2632 | |||
| 2633 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS | ||
| 2634 | { | ||
| 2635 | UINT MaxSubregionsNumber; | ||
| 2636 | UINT MaxIntraRefreshFrameDuration; | ||
| 2637 | UINT SubregionBlockPixelsSize; | ||
| 2638 | UINT QPMapRegionPixelsSize; | ||
| 2639 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS; | ||
| 2640 | |||
| 2641 | typedef enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS | ||
| 2642 | { | ||
| 2643 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0x0, | ||
| 2644 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1, | ||
| 2645 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8, | ||
| 2646 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10, | ||
| 2647 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20, | ||
| 2648 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40, | ||
| 2649 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80, | ||
| 2650 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100, | ||
| 2651 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200, | ||
| 2652 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800, | ||
| 2653 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000, | ||
| 2654 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000, | ||
| 2655 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000, | ||
| 2656 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000, | ||
| 2657 | D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000, | ||
| 2658 | } D3D12_VIDEO_ENCODER_VALIDATION_FLAGS; | ||
| 2659 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)") | ||
| 2660 | |||
| 2661 | typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | ||
| 2662 | { | ||
| 2663 | UINT GOPLength; | ||
| 2664 | UINT PPicturePeriod; | ||
| 2665 | UCHAR pic_order_cnt_type; | ||
| 2666 | UCHAR log2_max_frame_num_minus4; | ||
| 2667 | UCHAR log2_max_pic_order_cnt_lsb_minus4; | ||
| 2668 | } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264; | ||
| 2669 | |||
| 2670 | typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC | ||
| 2671 | { | ||
| 2672 | UINT GOPLength; | ||
| 2673 | UINT PPicturePeriod; | ||
| 2674 | UCHAR log2_max_pic_order_cnt_lsb_minus4; | ||
| 2675 | } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC; | ||
| 2676 | |||
| 2677 | typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE | ||
| 2678 | { | ||
| 2679 | UINT DataSize; | ||
| 2680 | union | ||
| 2681 | { | ||
| 2682 | D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264* pH264GroupOfPictures; | ||
| 2683 | D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC* pHEVCGroupOfPictures; | ||
| 2684 | D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE* pAV1SequenceStructure; | ||
| 2685 | }; | ||
| 2686 | } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE; | ||
| 2687 | |||
| 2688 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT | ||
| 2689 | { | ||
| 2690 | // input | ||
| 2691 | UINT NodeIndex; | ||
| 2692 | D3D12_VIDEO_ENCODER_CODEC Codec; | ||
| 2693 | DXGI_FORMAT InputFormat; | ||
| 2694 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; | ||
| 2695 | D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence; | ||
| 2696 | D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl; | ||
| 2697 | D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh; | ||
| 2698 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding; | ||
| 2699 | UINT ResolutionsListCount; | ||
| 2700 | const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList; | ||
| 2701 | UINT MaxReferenceFramesInDPB; | ||
| 2702 | |||
| 2703 | // single value output | ||
| 2704 | D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags; | ||
| 2705 | D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags; | ||
| 2706 | D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile; | ||
| 2707 | D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel; // assuming max resolution from input list | ||
| 2708 | |||
| 2709 | // resolution dependent output | ||
| 2710 | [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport; | ||
| 2711 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT; | ||
| 2712 | |||
| 2713 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES | ||
| 2714 | { | ||
| 2715 | // Mutually exclusive options according to selected mode | ||
| 2716 | union | ||
| 2717 | { | ||
| 2718 | // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION | ||
| 2719 | UINT MaxBytesPerSlice; | ||
| 2720 | |||
| 2721 | // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED | ||
| 2722 | UINT NumberOfCodingUnitsPerSlice; | ||
| 2723 | |||
| 2724 | // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION | ||
| 2725 | UINT NumberOfRowsPerSlice; | ||
| 2726 | |||
| 2727 | // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME | ||
| 2728 | UINT NumberOfSlicesPerFrame; | ||
| 2729 | }; | ||
| 2730 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES; | ||
| 2731 | |||
| 2732 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA | ||
| 2733 | { | ||
| 2734 | UINT DataSize; | ||
| 2735 | union | ||
| 2736 | { | ||
| 2737 | const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_H264; | ||
| 2738 | const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_HEVC; | ||
| 2739 | const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES* pTilesPartition_AV1; | ||
| 2740 | }; | ||
| 2741 | |||
| 2742 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA; | ||
| 2743 | |||
| 2744 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 | ||
| 2745 | { | ||
| 2746 | /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT */ | ||
| 2747 | UINT NodeIndex; | ||
| 2748 | D3D12_VIDEO_ENCODER_CODEC Codec; | ||
| 2749 | DXGI_FORMAT InputFormat; | ||
| 2750 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; | ||
| 2751 | D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence; | ||
| 2752 | D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl; | ||
| 2753 | D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh; | ||
| 2754 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding; | ||
| 2755 | UINT ResolutionsListCount; | ||
| 2756 | const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList; | ||
| 2757 | UINT MaxReferenceFramesInDPB; | ||
| 2758 | D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags; | ||
| 2759 | D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags; | ||
| 2760 | D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile; | ||
| 2761 | D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel; | ||
| 2762 | [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport; | ||
| 2763 | |||
| 2764 | /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 */ | ||
| 2765 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData; // input | ||
| 2766 | UINT MaxQualityVsSpeed; | ||
| 2767 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1; | ||
| 2768 | |||
| 2769 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS | ||
| 2770 | { | ||
| 2771 | UINT NodeIndex; // input | ||
| 2772 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 2773 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input | ||
| 2774 | DXGI_FORMAT InputFormat; // input | ||
| 2775 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input | ||
| 2776 | |||
| 2777 | BOOL IsSupported; // output | ||
| 2778 | UINT CompressedBitstreamBufferAccessAlignment; // output | ||
| 2779 | UINT EncoderMetadataBufferAccessAlignment; // output | ||
| 2780 | UINT MaxEncoderOutputMetadataBufferSize; // output | ||
| 2781 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS; | ||
| 2782 | |||
| 2783 | // | ||
| 2784 | // Video Encoder creation API | ||
| 2785 | // | ||
| 2786 | |||
| 2787 | typedef enum D3D12_VIDEO_ENCODER_FLAGS | ||
| 2788 | { | ||
| 2789 | D3D12_VIDEO_ENCODER_FLAG_NONE = 0x0, | ||
| 2790 | } D3D12_VIDEO_ENCODER_FLAGS; | ||
| 2791 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)") | ||
| 2792 | |||
| 2793 | typedef struct D3D12_VIDEO_ENCODER_DESC | ||
| 2794 | { | ||
| 2795 | UINT NodeMask; | ||
| 2796 | D3D12_VIDEO_ENCODER_FLAGS Flags; | ||
| 2797 | D3D12_VIDEO_ENCODER_CODEC EncodeCodec; | ||
| 2798 | D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile; | ||
| 2799 | DXGI_FORMAT InputFormat; | ||
| 2800 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; | ||
| 2801 | D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision; | ||
| 2802 | } D3D12_VIDEO_ENCODER_DESC; | ||
| 2803 | |||
| 2804 | [uuid(2E0D212D-8DF9-44A6-A770-BB289B182737), object, local, pointer_default(unique)] | ||
| 2805 | interface ID3D12VideoEncoder | ||
| 2806 | : ID3D12Pageable | ||
| 2807 | { | ||
| 2808 | UINT GetNodeMask(); | ||
| 2809 | D3D12_VIDEO_ENCODER_FLAGS GetEncoderFlags(); | ||
| 2810 | D3D12_VIDEO_ENCODER_CODEC GetCodec(); | ||
| 2811 | HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile); | ||
| 2812 | HRESULT GetCodecConfiguration([annotation("_Inout_")] D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig); | ||
| 2813 | DXGI_FORMAT GetInputFormat(); | ||
| 2814 | D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE GetMaxMotionEstimationPrecision(); | ||
| 2815 | } | ||
| 2816 | |||
| 2817 | [uuid(22B35D96-876A-44C0-B25E-FB8C9C7F1C4A), object, local, pointer_default(unique)] | ||
| 2818 | interface ID3D12VideoEncoderHeap | ||
| 2819 | : ID3D12Pageable | ||
| 2820 | { | ||
| 2821 | UINT GetNodeMask(); | ||
| 2822 | D3D12_VIDEO_ENCODER_HEAP_FLAGS GetEncoderHeapFlags(); | ||
| 2823 | D3D12_VIDEO_ENCODER_CODEC GetCodec(); | ||
| 2824 | HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile); | ||
| 2825 | HRESULT GetCodecLevel([annotation("_Inout_")] D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel); | ||
| 2826 | UINT GetResolutionListCount(); | ||
| 2827 | HRESULT GetResolutionList( | ||
| 2828 | const UINT ResolutionsListCount, | ||
| 2829 | [annotation("_Out_writes_(ResolutionsListCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList); | ||
| 2830 | } | ||
| 2831 | |||
| 2832 | [uuid(4243ADB4-3A32-4666-973C-0CCC5625DC44), object, local, pointer_default(unique)] | ||
| 2833 | interface ID3D12VideoDevice3 | ||
| 2834 | : ID3D12VideoDevice2 | ||
| 2835 | { | ||
| 2836 | |||
| 2837 | HRESULT CreateVideoEncoder( | ||
| 2838 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_DESC* pDesc, | ||
| 2839 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoder, | ||
| 2840 | [annotation("_COM_Outptr_")] void** ppVideoEncoder); | ||
| 2841 | |||
| 2842 | HRESULT CreateVideoEncoderHeap( | ||
| 2843 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC* pDesc, | ||
| 2844 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap, | ||
| 2845 | [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap); | ||
| 2846 | |||
| 2847 | } | ||
| 2848 | |||
| 2849 | // | ||
| 2850 | // Video Encoder operation API | ||
| 2851 | // | ||
| 2852 | |||
| 2853 | |||
| 2854 | typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 | ||
| 2855 | { | ||
| 2856 | D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0, | ||
| 2857 | D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1, | ||
| 2858 | D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2, | ||
| 2859 | D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3, | ||
| 2860 | } D3D12_VIDEO_ENCODER_FRAME_TYPE_H264; | ||
| 2861 | |||
| 2862 | |||
| 2863 | typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 | ||
| 2864 | { | ||
| 2865 | UINT ReconstructedPictureResourceIndex; | ||
| 2866 | BOOL IsLongTermReference; | ||
| 2867 | UINT LongTermPictureIdx; | ||
| 2868 | UINT PictureOrderCountNumber; | ||
| 2869 | UINT FrameDecodingOrderNumber; | ||
| 2870 | UINT TemporalLayerIndex; | ||
| 2871 | } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264; | ||
| 2872 | |||
| 2873 | typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS | ||
| 2874 | { | ||
| 2875 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0x0, | ||
| 2876 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1, | ||
| 2877 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2, | ||
| 2878 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS; | ||
| 2879 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)") | ||
| 2880 | |||
| 2881 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION | ||
| 2882 | { | ||
| 2883 | UCHAR memory_management_control_operation; | ||
| 2884 | UINT difference_of_pic_nums_minus1; | ||
| 2885 | UINT long_term_pic_num; | ||
| 2886 | UINT long_term_frame_idx; | ||
| 2887 | UINT max_long_term_frame_idx_plus1; | ||
| 2888 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION; | ||
| 2889 | |||
| 2890 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION | ||
| 2891 | { | ||
| 2892 | UCHAR modification_of_pic_nums_idc; | ||
| 2893 | UINT abs_diff_pic_num_minus1; | ||
| 2894 | UINT long_term_pic_num; | ||
| 2895 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION; | ||
| 2896 | |||
| 2897 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 | ||
| 2898 | { | ||
| 2899 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags; | ||
| 2900 | D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType; | ||
| 2901 | UINT pic_parameter_set_id; | ||
| 2902 | UINT idr_pic_id; | ||
| 2903 | UINT PictureOrderCountNumber; | ||
| 2904 | UINT FrameDecodingOrderNumber; | ||
| 2905 | UINT TemporalLayerIndex; | ||
| 2906 | UINT List0ReferenceFramesCount; | ||
| 2907 | [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames; | ||
| 2908 | UINT List1ReferenceFramesCount; | ||
| 2909 | [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames; | ||
| 2910 | UINT ReferenceFramesReconPictureDescriptorsCount; | ||
| 2911 | [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* pReferenceFramesReconPictureDescriptors; | ||
| 2912 | UCHAR adaptive_ref_pic_marking_mode_flag; | ||
| 2913 | UINT RefPicMarkingOperationsCommandsCount; | ||
| 2914 | [annotation("_Field_size_full_(RefPicMarkingOperationsCommandsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* pRefPicMarkingOperationsCommands; | ||
| 2915 | UINT List0RefPicModificationsCount; | ||
| 2916 | [annotation("_Field_size_full_(List0RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList0RefPicModifications; | ||
| 2917 | UINT List1RefPicModificationsCount; | ||
| 2918 | [annotation("_Field_size_full_(List1RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList1RefPicModifications; | ||
| 2919 | UINT QPMapValuesCount; | ||
| 2920 | [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap; | ||
| 2921 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264; | ||
| 2922 | |||
| 2923 | typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC | ||
| 2924 | { | ||
| 2925 | D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0, | ||
| 2926 | D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1, | ||
| 2927 | D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2, | ||
| 2928 | D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3, | ||
| 2929 | } D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC; | ||
| 2930 | |||
| 2931 | typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC | ||
| 2932 | { | ||
| 2933 | UINT ReconstructedPictureResourceIndex; | ||
| 2934 | BOOL IsRefUsedByCurrentPic; | ||
| 2935 | BOOL IsLongTermReference; | ||
| 2936 | UINT PictureOrderCountNumber; | ||
| 2937 | UINT TemporalLayerIndex; | ||
| 2938 | } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC; | ||
| 2939 | |||
| 2940 | typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS | ||
| 2941 | { | ||
| 2942 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0x0, | ||
| 2943 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1, | ||
| 2944 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2, | ||
| 2945 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4, | ||
| 2946 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8, | ||
| 2947 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS; | ||
| 2948 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)") | ||
| 2949 | |||
| 2950 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC | ||
| 2951 | { | ||
| 2952 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags; | ||
| 2953 | D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType; | ||
| 2954 | UINT slice_pic_parameter_set_id; | ||
| 2955 | UINT PictureOrderCountNumber; | ||
| 2956 | UINT TemporalLayerIndex; | ||
| 2957 | UINT List0ReferenceFramesCount; | ||
| 2958 | [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames; | ||
| 2959 | UINT List1ReferenceFramesCount; | ||
| 2960 | [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames; | ||
| 2961 | UINT ReferenceFramesReconPictureDescriptorsCount; | ||
| 2962 | [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors; | ||
| 2963 | UINT List0RefPicModificationsCount; | ||
| 2964 | [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications; | ||
| 2965 | UINT List1RefPicModificationsCount; | ||
| 2966 | [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications; | ||
| 2967 | UINT QPMapValuesCount; | ||
| 2968 | [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap; | ||
| 2969 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC; | ||
| 2970 | |||
| 2971 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 | ||
| 2972 | { | ||
| 2973 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags; | ||
| 2974 | D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType; | ||
| 2975 | UINT slice_pic_parameter_set_id; | ||
| 2976 | UINT PictureOrderCountNumber; | ||
| 2977 | UINT TemporalLayerIndex; | ||
| 2978 | UINT List0ReferenceFramesCount; | ||
| 2979 | [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames; | ||
| 2980 | UINT List1ReferenceFramesCount; | ||
| 2981 | [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames; | ||
| 2982 | UINT ReferenceFramesReconPictureDescriptorsCount; | ||
| 2983 | [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors; | ||
| 2984 | UINT List0RefPicModificationsCount; | ||
| 2985 | [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications; | ||
| 2986 | UINT List1RefPicModificationsCount; | ||
| 2987 | [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications; | ||
| 2988 | UINT QPMapValuesCount; | ||
| 2989 | [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap; | ||
| 2990 | UCHAR diff_cu_chroma_qp_offset_depth; | ||
| 2991 | UCHAR log2_sao_offset_scale_luma; | ||
| 2992 | UCHAR log2_sao_offset_scale_chroma; | ||
| 2993 | UCHAR log2_max_transform_skip_block_size_minus2; | ||
| 2994 | UCHAR chroma_qp_offset_list_len_minus1; | ||
| 2995 | CHAR cb_qp_offset_list[6]; | ||
| 2996 | CHAR cr_qp_offset_list[6]; | ||
| 2997 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1; | ||
| 2998 | |||
| 2999 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA | ||
| 3000 | { | ||
| 3001 | UINT DataSize; | ||
| 3002 | union | ||
| 3003 | { | ||
| 3004 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData; | ||
| 3005 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC* pHEVCPicData; | ||
| 3006 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1* pHEVCPicData1; | ||
| 3007 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData; | ||
| 3008 | }; | ||
| 3009 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA; | ||
| 3010 | |||
| 3011 | typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES | ||
| 3012 | { | ||
| 3013 | UINT NumTexture2Ds; | ||
| 3014 | [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds; | ||
| 3015 | [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources; | ||
| 3016 | } D3D12_VIDEO_ENCODE_REFERENCE_FRAMES; | ||
| 3017 | |||
| 3018 | typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS | ||
| 3019 | { | ||
| 3020 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0x0, | ||
| 3021 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1, | ||
| 3022 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2, | ||
| 3023 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4, | ||
| 3024 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8, | ||
| 3025 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS; | ||
| 3026 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)") | ||
| 3027 | |||
| 3028 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC | ||
| 3029 | { | ||
| 3030 | UINT IntraRefreshFrameIndex; | ||
| 3031 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags; | ||
| 3032 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData; | ||
| 3033 | D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames; | ||
| 3034 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC; | ||
| 3035 | |||
| 3036 | typedef enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS | ||
| 3037 | { | ||
| 3038 | D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0x0, | ||
| 3039 | D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1, | ||
| 3040 | D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2, | ||
| 3041 | D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4, | ||
| 3042 | D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8, | ||
| 3043 | D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10, | ||
| 3044 | } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS; | ||
| 3045 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)") | ||
| 3046 | |||
| 3047 | typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC | ||
| 3048 | { | ||
| 3049 | D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags; | ||
| 3050 | D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig; | ||
| 3051 | D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl; | ||
| 3052 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; | ||
| 3053 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode; | ||
| 3054 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData; | ||
| 3055 | D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence; | ||
| 3056 | } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC; | ||
| 3057 | |||
| 3058 | // | ||
| 3059 | // Video Encoder operation commands API | ||
| 3060 | // | ||
| 3061 | |||
| 3062 | typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS | ||
| 3063 | { | ||
| 3064 | D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc; | ||
| 3065 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc; | ||
| 3066 | ID3D12Resource *pInputFrame; | ||
| 3067 | UINT InputFrameSubresource; | ||
| 3068 | UINT CurrentFrameBitstreamMetadataSize; | ||
| 3069 | } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS; | ||
| 3070 | |||
| 3071 | typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM | ||
| 3072 | { | ||
| 3073 | ID3D12Resource* pBuffer; | ||
| 3074 | UINT64 FrameStartOffset; | ||
| 3075 | } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM; | ||
| 3076 | |||
| 3077 | typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE | ||
| 3078 | { | ||
| 3079 | ID3D12Resource *pReconstructedPicture; | ||
| 3080 | UINT ReconstructedPictureSubresource; | ||
| 3081 | } D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE; | ||
| 3082 | |||
| 3083 | typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA | ||
| 3084 | { | ||
| 3085 | UINT64 bSize; | ||
| 3086 | UINT64 bStartOffset; | ||
| 3087 | UINT64 bHeaderSize; | ||
| 3088 | } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA; | ||
| 3089 | |||
| 3090 | typedef enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS | ||
| 3091 | { | ||
| 3092 | D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0x0, | ||
| 3093 | D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1, | ||
| 3094 | D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2, | ||
| 3095 | D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4, | ||
| 3096 | D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8, | ||
| 3097 | D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10, | ||
| 3098 | } D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS; | ||
| 3099 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)") | ||
| 3100 | |||
| 3101 | typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS | ||
| 3102 | { | ||
| 3103 | UINT64 AverageQP; | ||
| 3104 | UINT64 IntraCodingUnitsCount; | ||
| 3105 | UINT64 InterCodingUnitsCount; | ||
| 3106 | UINT64 SkipCodingUnitsCount; | ||
| 3107 | UINT64 AverageMotionEstimationXDirection; | ||
| 3108 | UINT64 AverageMotionEstimationYDirection; | ||
| 3109 | } D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS; | ||
| 3110 | |||
| 3111 | typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA | ||
| 3112 | { | ||
| 3113 | UINT64 EncodeErrorFlags; // D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS | ||
| 3114 | D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats; | ||
| 3115 | UINT64 EncodedBitstreamWrittenBytesCount; | ||
| 3116 | UINT64 WrittenSubregionsCount; | ||
| 3117 | } D3D12_VIDEO_ENCODER_OUTPUT_METADATA; | ||
| 3118 | |||
| 3119 | typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER | ||
| 3120 | { | ||
| 3121 | ID3D12Resource* pBuffer; | ||
| 3122 | UINT64 Offset; | ||
| 3123 | } D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER; | ||
| 3124 | |||
| 3125 | typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS | ||
| 3126 | { | ||
| 3127 | D3D12_VIDEO_ENCODER_CODEC EncoderCodec; | ||
| 3128 | D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile; | ||
| 3129 | DXGI_FORMAT EncoderInputFormat; | ||
| 3130 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution; | ||
| 3131 | D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata; | ||
| 3132 | } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS; | ||
| 3133 | |||
| 3134 | typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS | ||
| 3135 | { | ||
| 3136 | D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata; | ||
| 3137 | } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS; | ||
| 3138 | |||
| 3139 | typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS | ||
| 3140 | { | ||
| 3141 | D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream; | ||
| 3142 | D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture; | ||
| 3143 | D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata; | ||
| 3144 | } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS; | ||
| 3145 | |||
| 3146 | [uuid(895491e2-e701-46a9-9a1f-8d3480ed867a), object, local, pointer_default(unique)] | ||
| 3147 | interface ID3D12VideoEncodeCommandList2 | ||
| 3148 | : ID3D12VideoEncodeCommandList1 | ||
| 3149 | { | ||
| 3150 | void EncodeFrame( | ||
| 3151 | [annotation("_In_")] ID3D12VideoEncoder* pEncoder, | ||
| 3152 | [annotation("_In_")] ID3D12VideoEncoderHeap *pHeap, | ||
| 3153 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments, | ||
| 3154 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments); | ||
| 3155 | |||
| 3156 | void ResolveEncoderOutputMetadata( | ||
| 3157 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS* pInputArguments, | ||
| 3158 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS* pOutputArguments); | ||
| 3159 | } | ||
| 3160 | |||
| 3161 | |||
| 3162 | [uuid(7f027b22-1515-4e85-aa0d-026486580576), object, local, pointer_default(unique)] | ||
| 3163 | interface ID3D12VideoEncodeCommandList3 | ||
| 3164 | : ID3D12VideoEncodeCommandList2 | ||
| 3165 | { | ||
| 3166 | |||
| 3167 | void Barrier( | ||
| 3168 | UINT32 NumBarrierGroups, | ||
| 3169 | [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups | ||
| 3170 | ); | ||
| 3171 | } | ||
| 3172 | |||
| 3173 | |||
| 3174 | |||
| 3175 | typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1 | ||
| 3176 | { | ||
| 3177 | UINT NodeMask; | ||
| 3178 | D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags; | ||
| 3179 | D3D12_VIDEO_ENCODER_CODEC EncodeCodec; | ||
| 3180 | D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile; | ||
| 3181 | D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel; | ||
| 3182 | UINT ResolutionsListCount; | ||
| 3183 | [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList; | ||
| 3184 | UINT Pow2DownscaleFactor; | ||
| 3185 | } D3D12_VIDEO_ENCODER_HEAP_DESC1; | ||
| 3186 | |||
| 3187 | [uuid(ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9), object, local, pointer_default(unique)] | ||
| 3188 | interface ID3D12VideoEncoderHeap1 | ||
| 3189 | : ID3D12VideoEncoderHeap | ||
| 3190 | { | ||
| 3191 | UINT GetPow2DownscaleFactor(); | ||
| 3192 | } | ||
| 3193 | |||
| 3194 | [uuid(e59ad09e-f1ae-42bb-8983-9f6e5586c4eb), object, local, pointer_default(unique)] | ||
| 3195 | interface ID3D12VideoDevice4 | ||
| 3196 | : ID3D12VideoDevice3 | ||
| 3197 | { | ||
| 3198 | HRESULT CreateVideoEncoderHeap1( | ||
| 3199 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC1* pDesc, | ||
| 3200 | [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap1, | ||
| 3201 | [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap); | ||
| 3202 | |||
| 3203 | } | ||
| 3204 | |||
| 3205 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1 { | ||
| 3206 | D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc; // input | ||
| 3207 | BOOL IsSupported; // output | ||
| 3208 | UINT64 MemoryPoolL0Size; // output | ||
| 3209 | UINT64 MemoryPoolL1Size; // output | ||
| 3210 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1; | ||
| 3211 | |||
| 3212 | typedef enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS | ||
| 3213 | { | ||
| 3214 | D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0x0, | ||
| 3215 | D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1, | ||
| 3216 | D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2, | ||
| 3217 | D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4, | ||
| 3218 | D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8, | ||
| 3219 | D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10, | ||
| 3220 | } D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS; | ||
| 3221 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )") | ||
| 3222 | |||
| 3223 | // Binary back-compat with D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS | ||
| 3224 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 | ||
| 3225 | { | ||
| 3226 | UINT NodeIndex; // input | ||
| 3227 | D3D12_VIDEO_ENCODER_CODEC Codec; // input | ||
| 3228 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input | ||
| 3229 | DXGI_FORMAT InputFormat; // input | ||
| 3230 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input | ||
| 3231 | |||
| 3232 | BOOL IsSupported; // output | ||
| 3233 | UINT CompressedBitstreamBufferAccessAlignment; // output | ||
| 3234 | UINT EncoderMetadataBufferAccessAlignment; // output | ||
| 3235 | UINT MaxEncoderOutputMetadataBufferSize; // output | ||
| 3236 | D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata; // input | ||
| 3237 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; // input | ||
| 3238 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions; // output | ||
| 3239 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions; // output | ||
| 3240 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions; // output | ||
| 3241 | UINT EncoderOutputMetadataFramePSNRComponentsNumber; // output | ||
| 3242 | UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber; // output | ||
| 3243 | UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize; // output | ||
| 3244 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1; | ||
| 3245 | |||
| 3246 | typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT | ||
| 3247 | { | ||
| 3248 | float PSNRY; | ||
| 3249 | float PSNRU; | ||
| 3250 | float PSNRV; | ||
| 3251 | } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT; | ||
| 3252 | |||
| 3253 | typedef enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE | ||
| 3254 | { | ||
| 3255 | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0, | ||
| 3256 | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1, | ||
| 3257 | } D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE; | ||
| 3258 | |||
| 3259 | typedef enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE | ||
| 3260 | { | ||
| 3261 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0, | ||
| 3262 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1, | ||
| 3263 | } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE; | ||
| 3264 | |||
| 3265 | typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO | ||
| 3266 | { | ||
| 3267 | D3D12_VIDEO_ENCODER_CODEC Codec; | ||
| 3268 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; | ||
| 3269 | D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; | ||
| 3270 | DXGI_FORMAT InputFormat; | ||
| 3271 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution; | ||
| 3272 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; | ||
| 3273 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding; | ||
| 3274 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData; | ||
| 3275 | } D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO; | ||
| 3276 | |||
| 3277 | typedef enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE | ||
| 3278 | { | ||
| 3279 | D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0, | ||
| 3280 | D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1, | ||
| 3281 | D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2, | ||
| 3282 | } D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE; | ||
| 3283 | |||
| 3284 | typedef enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE | ||
| 3285 | { | ||
| 3286 | D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0, | ||
| 3287 | D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1, | ||
| 3288 | D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2, | ||
| 3289 | } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE; | ||
| 3290 | |||
| 3291 | // D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT | ||
| 3292 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT | ||
| 3293 | { | ||
| 3294 | UINT NodeIndex; | ||
| 3295 | D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo; | ||
| 3296 | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource; | ||
| 3297 | BOOL IsSupported; | ||
| 3298 | UINT MapSourcePreferenceRanking; | ||
| 3299 | UINT BlockSize; | ||
| 3300 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT; | ||
| 3301 | |||
| 3302 | typedef enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS | ||
| 3303 | { | ||
| 3304 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0x0, | ||
| 3305 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1, | ||
| 3306 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2, | ||
| 3307 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4, | ||
| 3308 | } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS; | ||
| 3309 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )") | ||
| 3310 | |||
| 3311 | // D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS | ||
| 3312 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS | ||
| 3313 | { | ||
| 3314 | UINT NodeIndex; | ||
| 3315 | D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo; | ||
| 3316 | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource; | ||
| 3317 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType; | ||
| 3318 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags; | ||
| 3319 | UINT MapSourcePreferenceRanking; | ||
| 3320 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS; | ||
| 3321 | |||
| 3322 | typedef enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION | ||
| 3323 | { | ||
| 3324 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0, | ||
| 3325 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1, | ||
| 3326 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2, | ||
| 3327 | } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION; | ||
| 3328 | |||
| 3329 | typedef enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS { | ||
| 3330 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0x0, | ||
| 3331 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL), // 0x1 | ||
| 3332 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL), // 0x2 | ||
| 3333 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL), // 0x4 | ||
| 3334 | } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS; | ||
| 3335 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )") | ||
| 3336 | |||
| 3337 | typedef enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS | ||
| 3338 | { | ||
| 3339 | D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0x0, | ||
| 3340 | D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1, | ||
| 3341 | D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2, | ||
| 3342 | D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4, | ||
| 3343 | |||
| 3344 | |||
| 3345 | } D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS; | ||
| 3346 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )") | ||
| 3347 | |||
| 3348 | // D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH | ||
| 3349 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH | ||
| 3350 | { | ||
| 3351 | UINT NodeIndex; | ||
| 3352 | D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo; | ||
| 3353 | D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode; | ||
| 3354 | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource; | ||
| 3355 | BOOL BidirectionalRefFrameEnabled; | ||
| 3356 | D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags; | ||
| 3357 | UINT MaxMotionHints; | ||
| 3358 | UINT MinDeviation; | ||
| 3359 | UINT MaxDeviation; | ||
| 3360 | UINT MapSourcePreferenceRanking; | ||
| 3361 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport; | ||
| 3362 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH; | ||
| 3363 | |||
| 3364 | // D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT | ||
| 3365 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT | ||
| 3366 | { | ||
| 3367 | UINT NodeIndex; | ||
| 3368 | D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo; | ||
| 3369 | D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType; | ||
| 3370 | BOOL IsSupported; | ||
| 3371 | UINT64 MaxResolvedBufferAllocationSize; | ||
| 3372 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT; | ||
| 3373 | |||
| 3374 | typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION | ||
| 3375 | { | ||
| 3376 | BOOL Enabled; | ||
| 3377 | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource; | ||
| 3378 | } D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION; | ||
| 3379 | |||
| 3380 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP | ||
| 3381 | { | ||
| 3382 | // Reuse existing D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1.QPMapRegionPixelsSize for BlockSize | ||
| 3383 | UINT MapSourcePreferenceRanking; | ||
| 3384 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP; | ||
| 3385 | |||
| 3386 | typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION | ||
| 3387 | { | ||
| 3388 | BOOL Enabled; | ||
| 3389 | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource; | ||
| 3390 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType; | ||
| 3391 | } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION; | ||
| 3392 | |||
| 3393 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS | ||
| 3394 | { | ||
| 3395 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags; | ||
| 3396 | UINT MapSourcePreferenceRanking; | ||
| 3397 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS; | ||
| 3398 | |||
| 3399 | typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION | ||
| 3400 | { | ||
| 3401 | BOOL Enabled; | ||
| 3402 | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource; | ||
| 3403 | D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode; | ||
| 3404 | BOOL BidirectionalRefFrameEnabled; | ||
| 3405 | } D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION; | ||
| 3406 | |||
| 3407 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH | ||
| 3408 | { | ||
| 3409 | UINT MaxMotionHints; | ||
| 3410 | UINT MinDeviation; | ||
| 3411 | UINT MaxDeviation; | ||
| 3412 | UINT MapSourcePreferenceRanking; | ||
| 3413 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags; | ||
| 3414 | D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags; | ||
| 3415 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH; | ||
| 3416 | |||
| 3417 | typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS | ||
| 3418 | { | ||
| 3419 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0x0, | ||
| 3420 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1, | ||
| 3421 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2, | ||
| 3422 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4, | ||
| 3423 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8, | ||
| 3424 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10, | ||
| 3425 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20, | ||
| 3426 | |||
| 3427 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED = | ||
| 3428 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED | | ||
| 3429 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED | | ||
| 3430 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED, | ||
| 3431 | |||
| 3432 | } D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS; | ||
| 3433 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )") | ||
| 3434 | |||
| 3435 | // D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS | ||
| 3436 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS | ||
| 3437 | { | ||
| 3438 | UINT NodeIndex; | ||
| 3439 | D3D12_VIDEO_ENCODER_CODEC Codec; | ||
| 3440 | D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; | ||
| 3441 | D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; | ||
| 3442 | DXGI_FORMAT InputFormat; | ||
| 3443 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution; | ||
| 3444 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; | ||
| 3445 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding; | ||
| 3446 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData; | ||
| 3447 | D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap; | ||
| 3448 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions; | ||
| 3449 | D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch; | ||
| 3450 | UINT Pow2DownscaleFactor; | ||
| 3451 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags; | ||
| 3452 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS; | ||
| 3453 | |||
| 3454 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS | ||
| 3455 | { | ||
| 3456 | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags; | ||
| 3457 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS; | ||
| 3458 | |||
| 3459 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 | ||
| 3460 | { | ||
| 3461 | /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS */ | ||
| 3462 | UINT MaxSubregionsNumber; | ||
| 3463 | UINT MaxIntraRefreshFrameDuration; | ||
| 3464 | UINT SubregionBlockPixelsSize; | ||
| 3465 | UINT QPMapRegionPixelsSize; | ||
| 3466 | |||
| 3467 | /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 */ | ||
| 3468 | D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap; | ||
| 3469 | D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions; | ||
| 3470 | D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch; | ||
| 3471 | D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis; | ||
| 3472 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1; | ||
| 3473 | |||
| 3474 | typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION | ||
| 3475 | { | ||
| 3476 | BOOL Enabled; | ||
| 3477 | UINT Pow2DownscaleFactor; | ||
| 3478 | } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION; | ||
| 3479 | |||
| 3480 | // D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 | ||
| 3481 | typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2 | ||
| 3482 | { | ||
| 3483 | /* | ||
| 3484 | * Below params match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 binary size | ||
| 3485 | * please note pResolutionDependentSupport type changes from D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS to D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 | ||
| 3486 | */ | ||
| 3487 | |||
| 3488 | UINT NodeIndex; | ||
| 3489 | D3D12_VIDEO_ENCODER_CODEC Codec; | ||
| 3490 | DXGI_FORMAT InputFormat; | ||
| 3491 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; | ||
| 3492 | D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence; | ||
| 3493 | D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl; | ||
| 3494 | D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh; | ||
| 3495 | D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding; | ||
| 3496 | UINT ResolutionsListCount; | ||
| 3497 | const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList; | ||
| 3498 | UINT MaxReferenceFramesInDPB; | ||
| 3499 | D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags; | ||
| 3500 | D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags; | ||
| 3501 | D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile; | ||
| 3502 | D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel; | ||
| 3503 | [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1* pResolutionDependentSupport; | ||
| 3504 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData; | ||
| 3505 | UINT MaxQualityVsSpeed; | ||
| 3506 | |||
| 3507 | /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2 */ | ||
| 3508 | D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap; | ||
| 3509 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions; | ||
| 3510 | D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch; | ||
| 3511 | D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis; | ||
| 3512 | } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2; | ||
| 3513 | |||
| 3514 | typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO | ||
| 3515 | { | ||
| 3516 | BOOL FullFrameIdentical; | ||
| 3517 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType; | ||
| 3518 | UINT NumDirtyRects; | ||
| 3519 | [annotation("_Field_size_full_(NumDirtyRects)")] RECT* pDirtyRects; | ||
| 3520 | UINT SourceDPBFrameReference; | ||
| 3521 | } D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO; | ||
| 3522 | |||
| 3523 | typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS | ||
| 3524 | { | ||
| 3525 | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource; | ||
| 3526 | union | ||
| 3527 | { | ||
| 3528 | // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE | ||
| 3529 | ID3D12Resource* pOpaqueLayoutBuffer; | ||
| 3530 | // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER | ||
| 3531 | D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO* pCPUBuffer; | ||
| 3532 | }; | ||
| 3533 | } D3D12_VIDEO_ENCODER_DIRTY_REGIONS; | ||
| 3534 | |||
| 3535 | typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP | ||
| 3536 | { | ||
| 3537 | ID3D12Resource* pOpaqueQuantizationMap; | ||
| 3538 | } D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP; | ||
| 3539 | |||
| 3540 | typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG | ||
| 3541 | { | ||
| 3542 | D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode; | ||
| 3543 | UINT SearchDeviationLimit; | ||
| 3544 | } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG; | ||
| 3545 | |||
| 3546 | typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT | ||
| 3547 | { | ||
| 3548 | POINT SourcePoint; | ||
| 3549 | RECT DestRect; | ||
| 3550 | } D3D12_VIDEO_ENCODER_MOVE_RECT; | ||
| 3551 | |||
| 3552 | typedef enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS | ||
| 3553 | { | ||
| 3554 | D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0x0, | ||
| 3555 | D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1, | ||
| 3556 | } D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS; | ||
| 3557 | |||
| 3558 | typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO | ||
| 3559 | { | ||
| 3560 | UINT NumMoveRegions; | ||
| 3561 | [annotation("_Field_size_full_(NumMoveRegions)")] D3D12_VIDEO_ENCODER_MOVE_RECT* pMoveRegions; | ||
| 3562 | D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration; | ||
| 3563 | UINT SourceDPBFrameReference; | ||
| 3564 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision; | ||
| 3565 | D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags; | ||
| 3566 | } D3D12_VIDEO_ENCODER_MOVEREGION_INFO; | ||
| 3567 | |||
| 3568 | typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS | ||
| 3569 | { | ||
| 3570 | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource; | ||
| 3571 | union | ||
| 3572 | { | ||
| 3573 | // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE | ||
| 3574 | ID3D12Resource* pOpaqueLayoutBuffer; | ||
| 3575 | // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER | ||
| 3576 | D3D12_VIDEO_ENCODER_MOVEREGION_INFO* pCPUBuffer; | ||
| 3577 | }; | ||
| 3578 | } D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS; | ||
| 3579 | |||
| 3580 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2 | ||
| 3581 | { | ||
| 3582 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags; | ||
| 3583 | D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType; | ||
| 3584 | UINT slice_pic_parameter_set_id; | ||
| 3585 | UINT PictureOrderCountNumber; | ||
| 3586 | UINT TemporalLayerIndex; | ||
| 3587 | UINT List0ReferenceFramesCount; | ||
| 3588 | [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames; | ||
| 3589 | UINT List1ReferenceFramesCount; | ||
| 3590 | [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames; | ||
| 3591 | UINT ReferenceFramesReconPictureDescriptorsCount; | ||
| 3592 | [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors; | ||
| 3593 | UINT List0RefPicModificationsCount; | ||
| 3594 | [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications; | ||
| 3595 | UINT List1RefPicModificationsCount; | ||
| 3596 | [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications; | ||
| 3597 | UINT QPMapValuesCount; | ||
| 3598 | [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap; | ||
| 3599 | UCHAR diff_cu_chroma_qp_offset_depth; | ||
| 3600 | UCHAR log2_sao_offset_scale_luma; | ||
| 3601 | UCHAR log2_sao_offset_scale_chroma; | ||
| 3602 | UCHAR log2_max_transform_skip_block_size_minus2; | ||
| 3603 | UCHAR chroma_qp_offset_list_len_minus1; | ||
| 3604 | CHAR cb_qp_offset_list[6]; | ||
| 3605 | CHAR cr_qp_offset_list[6]; | ||
| 3606 | UINT num_ref_idx_l0_active_minus1; | ||
| 3607 | UINT num_ref_idx_l1_active_minus1; | ||
| 3608 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2; | ||
| 3609 | |||
| 3610 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 | ||
| 3611 | { | ||
| 3612 | UINT DataSize; | ||
| 3613 | union | ||
| 3614 | { | ||
| 3615 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData; | ||
| 3616 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2* pHEVCPicData; | ||
| 3617 | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData; | ||
| 3618 | }; | ||
| 3619 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1; | ||
| 3620 | |||
| 3621 | typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS | ||
| 3622 | { | ||
| 3623 | ID3D12Resource* pDownscaledFrame; | ||
| 3624 | UINT64 Subresource; | ||
| 3625 | D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences; | ||
| 3626 | } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS; | ||
| 3627 | |||
| 3628 | typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 | ||
| 3629 | { | ||
| 3630 | UINT IntraRefreshFrameIndex; | ||
| 3631 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags; | ||
| 3632 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData; | ||
| 3633 | D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames; | ||
| 3634 | D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors; | ||
| 3635 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects; | ||
| 3636 | D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap; | ||
| 3637 | D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis; | ||
| 3638 | } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1; | ||
| 3639 | |||
| 3640 | typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 | ||
| 3641 | { | ||
| 3642 | D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc; | ||
| 3643 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc; | ||
| 3644 | ID3D12Resource* pInputFrame; | ||
| 3645 | UINT InputFrameSubresource; | ||
| 3646 | UINT CurrentFrameBitstreamMetadataSize; | ||
| 3647 | D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata; | ||
| 3648 | } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1; | ||
| 3649 | |||
| 3650 | typedef enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE | ||
| 3651 | { | ||
| 3652 | D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0, | ||
| 3653 | D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1, | ||
| 3654 | } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE; | ||
| 3655 | |||
| 3656 | typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM | ||
| 3657 | { | ||
| 3658 | D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode; | ||
| 3659 | UINT ExpectedSubregionCount; | ||
| 3660 | UINT64* pSubregionBitstreamsBaseOffsets; | ||
| 3661 | ID3D12Resource** ppSubregionBitstreams; | ||
| 3662 | ID3D12Resource** ppSubregionSizes; | ||
| 3663 | ID3D12Resource** ppSubregionOffsets; | ||
| 3664 | ID3D12Fence** ppSubregionFences; | ||
| 3665 | UINT64* pSubregionFenceValues; | ||
| 3666 | } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM; | ||
| 3667 | |||
| 3668 | typedef enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE | ||
| 3669 | { | ||
| 3670 | D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0, | ||
| 3671 | D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1, | ||
| 3672 | } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE; | ||
| 3673 | |||
| 3674 | typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 | ||
| 3675 | { | ||
| 3676 | D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode; | ||
| 3677 | union | ||
| 3678 | { | ||
| 3679 | D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer; | ||
| 3680 | D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers; | ||
| 3681 | }; | ||
| 3682 | } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1; | ||
| 3683 | |||
| 3684 | typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 | ||
| 3685 | { | ||
| 3686 | D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream; | ||
| 3687 | D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture; | ||
| 3688 | D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata; | ||
| 3689 | D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture; | ||
| 3690 | } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1; | ||
| 3691 | |||
| 3692 | typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 | ||
| 3693 | { | ||
| 3694 | D3D12_VIDEO_ENCODER_CODEC EncoderCodec; | ||
| 3695 | D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile; | ||
| 3696 | DXGI_FORMAT EncoderInputFormat; | ||
| 3697 | D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution; | ||
| 3698 | D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata; | ||
| 3699 | D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata; | ||
| 3700 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; | ||
| 3701 | } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1; | ||
| 3702 | |||
| 3703 | typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 | ||
| 3704 | { | ||
| 3705 | D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata; | ||
| 3706 | ID3D12Resource* pOutputQPMap; | ||
| 3707 | ID3D12Resource* pOutputSATDMap; | ||
| 3708 | ID3D12Resource* pOutputBitAllocationMap; | ||
| 3709 | D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData; | ||
| 3710 | D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData; | ||
| 3711 | } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1; | ||
| 3712 | |||
| 3713 | typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX | ||
| 3714 | { | ||
| 3715 | ID3D12Resource* pQuantizationMap; | ||
| 3716 | } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX; | ||
| 3717 | |||
| 3718 | typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS | ||
| 3719 | { | ||
| 3720 | BOOL FullFrameIdentical; | ||
| 3721 | D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType; | ||
| 3722 | ID3D12Resource* pDirtyRegionsMap; | ||
| 3723 | UINT SourceDPBFrameReference; | ||
| 3724 | } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS; | ||
| 3725 | |||
| 3726 | typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS | ||
| 3727 | { | ||
| 3728 | D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration; | ||
| 3729 | UINT NumHintsPerPixel; | ||
| 3730 | [annotation("_Field_size_full_(NumHintsPerPixel)")] ID3D12Resource** ppMotionVectorMaps; | ||
| 3731 | [annotation("_Field_size_full_(NumHintsPerPixel)")] UINT* pMotionVectorMapsSubresources; | ||
| 3732 | [annotation("_Field_size_full_(NumHintsPerPixel)")] ID3D12Resource** ppMotionVectorMapsMetadata; | ||
| 3733 | [annotation("_Field_size_full_(NumHintsPerPixel)")] UINT* pMotionVectorMapsMetadataSubresources; | ||
| 3734 | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision; | ||
| 3735 | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration; | ||
| 3736 | } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS; | ||
| 3737 | |||
| 3738 | typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA | ||
| 3739 | { | ||
| 3740 | D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType; | ||
| 3741 | union | ||
| 3742 | { | ||
| 3743 | // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX | ||
| 3744 | D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization; | ||
| 3745 | // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS | ||
| 3746 | D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions; | ||
| 3747 | // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS | ||
| 3748 | D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors; | ||
| 3749 | }; | ||
| 3750 | } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA; | ||
| 3751 | |||
| 3752 | typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS | ||
| 3753 | { | ||
| 3754 | D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo; | ||
| 3755 | D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData; | ||
| 3756 | } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS; | ||
| 3757 | |||
| 3758 | typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS | ||
| 3759 | { | ||
| 3760 | ID3D12Resource* pOpaqueLayoutBuffer; | ||
| 3761 | } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS; | ||
| 3762 | |||
| 3763 | // Change this interface UUID when changing the base class in the inheritance | ||
| 3764 | [uuid(69aeb5b7-55f2-4012-8b73-3a88d65a204c), object, local, pointer_default(unique)] | ||
| 3765 | interface ID3D12VideoEncodeCommandList4 | ||
| 3766 | : ID3D12VideoEncodeCommandList3 | ||
| 3767 | { | ||
| 3768 | void EncodeFrame1( | ||
| 3769 | [annotation("_In_")] ID3D12VideoEncoder* pEncoder, | ||
| 3770 | [annotation("_In_")] ID3D12VideoEncoderHeap1* pHeap, | ||
| 3771 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1* pInputArguments, | ||
| 3772 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1* pOutputArguments); | ||
| 3773 | |||
| 3774 | void ResolveEncoderOutputMetadata1( | ||
| 3775 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1* pInputArguments, | ||
| 3776 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1* pOutputArguments); | ||
| 3777 | |||
| 3778 | void ResolveInputParamLayout( | ||
| 3779 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS* pInputArguments, | ||
| 3780 | [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS* pOutputArguments); | ||
| 3781 | } | ||
| 3782 | |||
| 3783 | |||
| 3784 | |||
| 3785 | cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */") | ||
| 3786 | #pragma endregion | ||
| 3787 | |||
| 3788 | |||
| 3789 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);" ) | ||
| 3790 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);" ) | ||
| 3791 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);" ) | ||
| 3792 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);" ) | ||
| 3793 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);" ) | ||
| 3794 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);" ) | ||
| 3795 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);" ) | ||
| 3796 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);" ) | ||
| 3797 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);" ) | ||
| 3798 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);" ) | ||
| 3799 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);" ) | ||
| 3800 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);" ) | ||
| 3801 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);" ) | ||
| 3802 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);" ) | ||
| 3803 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);" ) | ||
| 3804 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);" ) | ||
| 3805 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);" ) | ||
| 3806 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);" ) | ||
| 3807 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);" ) | ||
| 3808 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);" ) | ||
| 3809 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);" ) | ||
| 3810 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);" ) | ||
| 3811 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);" ) | ||
| 3812 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);" ) | ||
| 3813 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);" ) | ||
| 3814 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);" ) | ||
| 3815 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);" ) | ||
| 3816 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);" ) | ||
| 3817 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);" ) | ||
| 3818 | cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);" ) | ||
