aboutsummaryrefslogtreecommitdiff
path: root/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2025-12-02 16:39:36 -0800
committer3gg <3gg@shellblade.net>2025-12-02 16:39:36 -0800
commit6c8ae19be66cee247980a48e736a4e05d14de179 (patch)
treed860767907bf0cbe17ec66422e11bea700cf56d9 /contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h
parent8f594c8ebd11f0e5f8a0c6369c3fe7383d250cbe (diff)
Immediate-mode renderer, triangle demo, shader compilation in cmake, Agility SDKHEADmain
Diffstat (limited to 'contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h')
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h10726
1 files changed, 10726 insertions, 0 deletions
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h
new file mode 100644
index 0000000..843e78d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h
@@ -0,0 +1,10726 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12video_h__
39#define __d3d12video_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12VideoDecoderHeap_FWD_DEFINED__
56#define __ID3D12VideoDecoderHeap_FWD_DEFINED__
57typedef interface ID3D12VideoDecoderHeap ID3D12VideoDecoderHeap;
58
59#endif /* __ID3D12VideoDecoderHeap_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12VideoDevice_FWD_DEFINED__
63#define __ID3D12VideoDevice_FWD_DEFINED__
64typedef interface ID3D12VideoDevice ID3D12VideoDevice;
65
66#endif /* __ID3D12VideoDevice_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12VideoDecoder_FWD_DEFINED__
70#define __ID3D12VideoDecoder_FWD_DEFINED__
71typedef interface ID3D12VideoDecoder ID3D12VideoDecoder;
72
73#endif /* __ID3D12VideoDecoder_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12VideoProcessor_FWD_DEFINED__
77#define __ID3D12VideoProcessor_FWD_DEFINED__
78typedef interface ID3D12VideoProcessor ID3D12VideoProcessor;
79
80#endif /* __ID3D12VideoProcessor_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VideoDecodeCommandList_FWD_DEFINED__
84#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
85typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
86
87#endif /* __ID3D12VideoDecodeCommandList_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12VideoProcessCommandList_FWD_DEFINED__
91#define __ID3D12VideoProcessCommandList_FWD_DEFINED__
92typedef interface ID3D12VideoProcessCommandList ID3D12VideoProcessCommandList;
93
94#endif /* __ID3D12VideoProcessCommandList_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
98#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
99typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
100
101#endif /* __ID3D12VideoDecodeCommandList1_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12VideoProcessCommandList1_FWD_DEFINED__
105#define __ID3D12VideoProcessCommandList1_FWD_DEFINED__
106typedef interface ID3D12VideoProcessCommandList1 ID3D12VideoProcessCommandList1;
107
108#endif /* __ID3D12VideoProcessCommandList1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
112#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
113typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
114
115#endif /* __ID3D12VideoMotionEstimator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
119#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
120typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
121
122#endif /* __ID3D12VideoMotionVectorHeap_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
126#define __ID3D12VideoDevice1_FWD_DEFINED__
127typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
128
129#endif /* __ID3D12VideoDevice1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
133#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
134typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
135
136#endif /* __ID3D12VideoEncodeCommandList_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12VideoDecoder1_FWD_DEFINED__
140#define __ID3D12VideoDecoder1_FWD_DEFINED__
141typedef interface ID3D12VideoDecoder1 ID3D12VideoDecoder1;
142
143#endif /* __ID3D12VideoDecoder1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12VideoDecoderHeap1_FWD_DEFINED__
147#define __ID3D12VideoDecoderHeap1_FWD_DEFINED__
148typedef interface ID3D12VideoDecoderHeap1 ID3D12VideoDecoderHeap1;
149
150#endif /* __ID3D12VideoDecoderHeap1_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12VideoProcessor1_FWD_DEFINED__
154#define __ID3D12VideoProcessor1_FWD_DEFINED__
155typedef interface ID3D12VideoProcessor1 ID3D12VideoProcessor1;
156
157#endif /* __ID3D12VideoProcessor1_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
161#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
162typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
163
164#endif /* __ID3D12VideoExtensionCommand_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
168#define __ID3D12VideoDevice2_FWD_DEFINED__
169typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
170
171#endif /* __ID3D12VideoDevice2_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
175#define __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
176typedef interface ID3D12VideoDecodeCommandList2 ID3D12VideoDecodeCommandList2;
177
178#endif /* __ID3D12VideoDecodeCommandList2_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
182#define __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
183typedef interface ID3D12VideoDecodeCommandList3 ID3D12VideoDecodeCommandList3;
184
185#endif /* __ID3D12VideoDecodeCommandList3_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12VideoProcessCommandList2_FWD_DEFINED__
189#define __ID3D12VideoProcessCommandList2_FWD_DEFINED__
190typedef interface ID3D12VideoProcessCommandList2 ID3D12VideoProcessCommandList2;
191
192#endif /* __ID3D12VideoProcessCommandList2_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12VideoProcessCommandList3_FWD_DEFINED__
196#define __ID3D12VideoProcessCommandList3_FWD_DEFINED__
197typedef interface ID3D12VideoProcessCommandList3 ID3D12VideoProcessCommandList3;
198
199#endif /* __ID3D12VideoProcessCommandList3_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
203#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
204typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
205
206#endif /* __ID3D12VideoEncodeCommandList1_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12VideoEncoder_FWD_DEFINED__
210#define __ID3D12VideoEncoder_FWD_DEFINED__
211typedef interface ID3D12VideoEncoder ID3D12VideoEncoder;
212
213#endif /* __ID3D12VideoEncoder_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12VideoEncoderHeap_FWD_DEFINED__
217#define __ID3D12VideoEncoderHeap_FWD_DEFINED__
218typedef interface ID3D12VideoEncoderHeap ID3D12VideoEncoderHeap;
219
220#endif /* __ID3D12VideoEncoderHeap_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12VideoDevice3_FWD_DEFINED__
224#define __ID3D12VideoDevice3_FWD_DEFINED__
225typedef interface ID3D12VideoDevice3 ID3D12VideoDevice3;
226
227#endif /* __ID3D12VideoDevice3_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
231#define __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
232typedef interface ID3D12VideoEncodeCommandList2 ID3D12VideoEncodeCommandList2;
233
234#endif /* __ID3D12VideoEncodeCommandList2_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
238#define __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
239typedef interface ID3D12VideoEncodeCommandList3 ID3D12VideoEncodeCommandList3;
240
241#endif /* __ID3D12VideoEncodeCommandList3_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12VideoEncoderHeap1_FWD_DEFINED__
245#define __ID3D12VideoEncoderHeap1_FWD_DEFINED__
246typedef interface ID3D12VideoEncoderHeap1 ID3D12VideoEncoderHeap1;
247
248#endif /* __ID3D12VideoEncoderHeap1_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12VideoDevice4_FWD_DEFINED__
252#define __ID3D12VideoDevice4_FWD_DEFINED__
253typedef interface ID3D12VideoDevice4 ID3D12VideoDevice4;
254
255#endif /* __ID3D12VideoDevice4_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
259#define __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
260typedef interface ID3D12VideoEncodeCommandList4 ID3D12VideoEncodeCommandList4;
261
262#endif /* __ID3D12VideoEncodeCommandList4_FWD_DEFINED__ */
263
264
265/* header files for imported files */
266#include "oaidl.h"
267#include "ocidl.h"
268#include "dxgicommon.h"
269#include "d3d12.h"
270
271#ifdef __cplusplus
272extern "C"{
273#endif
274
275
276/* interface __MIDL_itf_d3d12video_0000_0000 */
277/* [local] */
278
279#include <winapifamily.h>
280#pragma region App Family
281#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
282typedef
283enum D3D12_VIDEO_FIELD_TYPE
284 {
285 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
286 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
287 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
288 } D3D12_VIDEO_FIELD_TYPE;
289
290typedef
291enum D3D12_VIDEO_FRAME_STEREO_FORMAT
292 {
293 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
294 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
295 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
296 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
297 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
298 } D3D12_VIDEO_FRAME_STEREO_FORMAT;
299
300typedef struct D3D12_VIDEO_FORMAT
301 {
302 DXGI_FORMAT Format;
303 DXGI_COLOR_SPACE_TYPE ColorSpace;
304 } D3D12_VIDEO_FORMAT;
305
306typedef struct D3D12_VIDEO_SAMPLE
307 {
308 UINT Width;
309 UINT Height;
310 D3D12_VIDEO_FORMAT Format;
311 } D3D12_VIDEO_SAMPLE;
312
313typedef
314enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
315 {
316 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
317 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
318 } D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
319
320typedef
321enum D3D12_FEATURE_VIDEO
322 {
323 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
324 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
325 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
326 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
327 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
328 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
329 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
330 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
331 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
332 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
333 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
334 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
335 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
336 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
337 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
338 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
339 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
340 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
341 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
342 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
343 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
344 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
345 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
346 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
347 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
348 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
349 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
350 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
351 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
352 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
353 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
354 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
355 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
356 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
357 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
358 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
359 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
360 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
361 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
362 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
363 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
364 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
365 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
366 D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
367 D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
368 D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
369 D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
370 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
371 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
372 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57
373 } D3D12_FEATURE_VIDEO;
374
375typedef
376enum D3D12_BITSTREAM_ENCRYPTION_TYPE
377 {
378 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
379 } D3D12_BITSTREAM_ENCRYPTION_TYPE;
380
381typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
382 {
383 GUID DecodeProfile;
384 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
385 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
386 } D3D12_VIDEO_DECODE_CONFIGURATION;
387
388typedef struct D3D12_VIDEO_DECODER_DESC
389 {
390 UINT NodeMask;
391 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
392 } D3D12_VIDEO_DECODER_DESC;
393
394typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
395 {
396 UINT NodeMask;
397 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
398 UINT DecodeWidth;
399 UINT DecodeHeight;
400 DXGI_FORMAT Format;
401 DXGI_RATIONAL FrameRate;
402 UINT BitRate;
403 UINT MaxDecodePictureBufferCount;
404 } D3D12_VIDEO_DECODER_HEAP_DESC;
405
406typedef struct D3D12_VIDEO_SIZE_RANGE
407 {
408 UINT MaxWidth;
409 UINT MaxHeight;
410 UINT MinWidth;
411 UINT MinHeight;
412 } D3D12_VIDEO_SIZE_RANGE;
413
414typedef
415enum D3D12_VIDEO_PROCESS_FILTER
416 {
417 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
418 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
419 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
420 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
421 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
422 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
423 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
424 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
425 } D3D12_VIDEO_PROCESS_FILTER;
426
427typedef
428enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
429 {
430 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0,
431 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = ( 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS ) ,
432 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = ( 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST ) ,
433 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = ( 1 << D3D12_VIDEO_PROCESS_FILTER_HUE ) ,
434 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION ) ,
435 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION ) ,
436 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT ) ,
437 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = ( 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING ) ,
438 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT )
439 } D3D12_VIDEO_PROCESS_FILTER_FLAGS;
440
441DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )
442typedef
443enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
444 {
445 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0,
446 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
447 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
448 } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
449
450DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )
451typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
452 {
453 BOOL Enable;
454 FLOAT Alpha;
455 } D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
456
457typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
458 {
459 BOOL Enable;
460 FLOAT Lower;
461 FLOAT Upper;
462 } D3D12_VIDEO_PROCESS_LUMA_KEY;
463
464typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
465 {
466 DXGI_FORMAT Format;
467 DXGI_COLOR_SPACE_TYPE ColorSpace;
468 DXGI_RATIONAL SourceAspectRatio;
469 DXGI_RATIONAL DestinationAspectRatio;
470 DXGI_RATIONAL FrameRate;
471 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
472 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
473 BOOL EnableOrientation;
474 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
475 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
476 D3D12_VIDEO_FIELD_TYPE FieldType;
477 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
478 BOOL EnableAlphaBlending;
479 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
480 UINT NumPastFrames;
481 UINT NumFutureFrames;
482 BOOL EnableAutoProcessing;
483 } D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
484
485typedef
486enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
487 {
488 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
489 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
490 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
491 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
492 } D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
493
494typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
495 {
496 DXGI_FORMAT Format;
497 DXGI_COLOR_SPACE_TYPE ColorSpace;
498 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
499 UINT AlphaFillModeSourceStreamIndex;
500 FLOAT BackgroundColor[ 4 ];
501 DXGI_RATIONAL FrameRate;
502 BOOL EnableStereo;
503 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
504
505
506
507extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_c_ifspec;
508extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_s_ifspec;
509
510#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
511#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
512
513/* interface ID3D12VideoDecoderHeap */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_ID3D12VideoDecoderHeap;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("0946B7C9-EBF6-4047-BB73-8683E27DBB1F")
522 ID3D12VideoDecoderHeap : public ID3D12Pageable
523 {
524 public:
525#if defined(_MSC_VER) || !defined(_WIN32)
526 virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
527#else
528 virtual D3D12_VIDEO_DECODER_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
529 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal) = 0;
530#endif
531
532 };
533
534
535#else /* C style interface */
536
537 typedef struct ID3D12VideoDecoderHeapVtbl
538 {
539 BEGIN_INTERFACE
540
541 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
542 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
543 ID3D12VideoDecoderHeap * This,
544 REFIID riid,
545 _COM_Outptr_ void **ppvObject);
546
547 DECLSPEC_XFGVIRT(IUnknown, AddRef)
548 ULONG ( STDMETHODCALLTYPE *AddRef )(
549 ID3D12VideoDecoderHeap * This);
550
551 DECLSPEC_XFGVIRT(IUnknown, Release)
552 ULONG ( STDMETHODCALLTYPE *Release )(
553 ID3D12VideoDecoderHeap * This);
554
555 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
556 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
557 ID3D12VideoDecoderHeap * This,
558 _In_ REFGUID guid,
559 _Inout_ UINT *pDataSize,
560 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
561
562 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
563 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
564 ID3D12VideoDecoderHeap * This,
565 _In_ REFGUID guid,
566 _In_ UINT DataSize,
567 _In_reads_bytes_opt_( DataSize ) const void *pData);
568
569 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
570 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
571 ID3D12VideoDecoderHeap * This,
572 _In_ REFGUID guid,
573 _In_opt_ const IUnknown *pData);
574
575 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
576 HRESULT ( STDMETHODCALLTYPE *SetName )(
577 ID3D12VideoDecoderHeap * This,
578 _In_z_ LPCWSTR Name);
579
580 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
581 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
582 ID3D12VideoDecoderHeap * This,
583 REFIID riid,
584 _COM_Outptr_opt_ void **ppvDevice);
585
586 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
587#if !defined(_WIN32)
588 D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
589 ID3D12VideoDecoderHeap * This);
590
591#else
592 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
593 ID3D12VideoDecoderHeap * This,
594 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
595
596#endif
597
598 END_INTERFACE
599 } ID3D12VideoDecoderHeapVtbl;
600
601 interface ID3D12VideoDecoderHeap
602 {
603 CONST_VTBL struct ID3D12VideoDecoderHeapVtbl *lpVtbl;
604 };
605
606
607
608#ifdef COBJMACROS
609
610
611#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) \
612 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
613
614#define ID3D12VideoDecoderHeap_AddRef(This) \
615 ( (This)->lpVtbl -> AddRef(This) )
616
617#define ID3D12VideoDecoderHeap_Release(This) \
618 ( (This)->lpVtbl -> Release(This) )
619
620
621#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
622 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
623
624#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,DataSize,pData) \
625 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
626
627#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,pData) \
628 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
629
630#define ID3D12VideoDecoderHeap_SetName(This,Name) \
631 ( (This)->lpVtbl -> SetName(This,Name) )
632
633
634#define ID3D12VideoDecoderHeap_GetDevice(This,riid,ppvDevice) \
635 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
636
637
638#if !defined(_WIN32)
639
640#define ID3D12VideoDecoderHeap_GetDesc(This) \
641 ( (This)->lpVtbl -> GetDesc(This) )
642#else
643#define ID3D12VideoDecoderHeap_GetDesc(This,RetVal) \
644 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
645#endif
646
647#endif /* COBJMACROS */
648
649
650#endif /* C style interface */
651
652
653
654
655#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
656
657
658#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
659#define __ID3D12VideoDevice_INTERFACE_DEFINED__
660
661/* interface ID3D12VideoDevice */
662/* [unique][local][object][uuid] */
663
664
665EXTERN_C const IID IID_ID3D12VideoDevice;
666
667#if defined(__cplusplus) && !defined(CINTERFACE)
668
669 MIDL_INTERFACE("1F052807-0B46-4ACC-8A89-364F793718A4")
670 ID3D12VideoDevice : public IUnknown
671 {
672 public:
673 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
674 D3D12_FEATURE_VIDEO FeatureVideo,
675 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
676 UINT FeatureSupportDataSize) = 0;
677
678 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
679 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
680 _In_ REFIID riid,
681 _COM_Outptr_ void **ppVideoDecoder) = 0;
682
683 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
684 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
685 _In_ REFIID riid,
686 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
687
688 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
689 UINT NodeMask,
690 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
691 UINT NumInputStreamDescs,
692 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
693 _In_ REFIID riid,
694 _COM_Outptr_ void **ppVideoProcessor) = 0;
695
696 };
697
698
699#else /* C style interface */
700
701 typedef struct ID3D12VideoDeviceVtbl
702 {
703 BEGIN_INTERFACE
704
705 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
706 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
707 ID3D12VideoDevice * This,
708 REFIID riid,
709 _COM_Outptr_ void **ppvObject);
710
711 DECLSPEC_XFGVIRT(IUnknown, AddRef)
712 ULONG ( STDMETHODCALLTYPE *AddRef )(
713 ID3D12VideoDevice * This);
714
715 DECLSPEC_XFGVIRT(IUnknown, Release)
716 ULONG ( STDMETHODCALLTYPE *Release )(
717 ID3D12VideoDevice * This);
718
719 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
720 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
721 ID3D12VideoDevice * This,
722 D3D12_FEATURE_VIDEO FeatureVideo,
723 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
724 UINT FeatureSupportDataSize);
725
726 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
727 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
728 ID3D12VideoDevice * This,
729 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
730 _In_ REFIID riid,
731 _COM_Outptr_ void **ppVideoDecoder);
732
733 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
734 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
735 ID3D12VideoDevice * This,
736 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
737 _In_ REFIID riid,
738 _COM_Outptr_ void **ppVideoDecoderHeap);
739
740 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
741 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
742 ID3D12VideoDevice * This,
743 UINT NodeMask,
744 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
745 UINT NumInputStreamDescs,
746 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
747 _In_ REFIID riid,
748 _COM_Outptr_ void **ppVideoProcessor);
749
750 END_INTERFACE
751 } ID3D12VideoDeviceVtbl;
752
753 interface ID3D12VideoDevice
754 {
755 CONST_VTBL struct ID3D12VideoDeviceVtbl *lpVtbl;
756 };
757
758
759
760#ifdef COBJMACROS
761
762
763#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) \
764 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
765
766#define ID3D12VideoDevice_AddRef(This) \
767 ( (This)->lpVtbl -> AddRef(This) )
768
769#define ID3D12VideoDevice_Release(This) \
770 ( (This)->lpVtbl -> Release(This) )
771
772
773#define ID3D12VideoDevice_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
774 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
775
776#define ID3D12VideoDevice_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
777 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
778
779#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
780 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
781
782#define ID3D12VideoDevice_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
783 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
784
785#endif /* COBJMACROS */
786
787
788#endif /* C style interface */
789
790
791
792
793#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
794
795
796#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
797#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
798
799/* interface ID3D12VideoDecoder */
800/* [unique][local][object][uuid] */
801
802
803EXTERN_C const IID IID_ID3D12VideoDecoder;
804
805#if defined(__cplusplus) && !defined(CINTERFACE)
806
807 MIDL_INTERFACE("C59B6BDC-7720-4074-A136-17A156037470")
808 ID3D12VideoDecoder : public ID3D12Pageable
809 {
810 public:
811#if defined(_MSC_VER) || !defined(_WIN32)
812 virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
813#else
814 virtual D3D12_VIDEO_DECODER_DESC *STDMETHODCALLTYPE GetDesc(
815 D3D12_VIDEO_DECODER_DESC * RetVal) = 0;
816#endif
817
818 };
819
820
821#else /* C style interface */
822
823 typedef struct ID3D12VideoDecoderVtbl
824 {
825 BEGIN_INTERFACE
826
827 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
828 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
829 ID3D12VideoDecoder * This,
830 REFIID riid,
831 _COM_Outptr_ void **ppvObject);
832
833 DECLSPEC_XFGVIRT(IUnknown, AddRef)
834 ULONG ( STDMETHODCALLTYPE *AddRef )(
835 ID3D12VideoDecoder * This);
836
837 DECLSPEC_XFGVIRT(IUnknown, Release)
838 ULONG ( STDMETHODCALLTYPE *Release )(
839 ID3D12VideoDecoder * This);
840
841 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
842 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
843 ID3D12VideoDecoder * This,
844 _In_ REFGUID guid,
845 _Inout_ UINT *pDataSize,
846 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
847
848 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
849 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
850 ID3D12VideoDecoder * This,
851 _In_ REFGUID guid,
852 _In_ UINT DataSize,
853 _In_reads_bytes_opt_( DataSize ) const void *pData);
854
855 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
856 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
857 ID3D12VideoDecoder * This,
858 _In_ REFGUID guid,
859 _In_opt_ const IUnknown *pData);
860
861 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
862 HRESULT ( STDMETHODCALLTYPE *SetName )(
863 ID3D12VideoDecoder * This,
864 _In_z_ LPCWSTR Name);
865
866 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
867 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
868 ID3D12VideoDecoder * This,
869 REFIID riid,
870 _COM_Outptr_opt_ void **ppvDevice);
871
872 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
873#if !defined(_WIN32)
874 D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
875 ID3D12VideoDecoder * This);
876
877#else
878 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
879 ID3D12VideoDecoder * This,
880 D3D12_VIDEO_DECODER_DESC * RetVal);
881
882#endif
883
884 END_INTERFACE
885 } ID3D12VideoDecoderVtbl;
886
887 interface ID3D12VideoDecoder
888 {
889 CONST_VTBL struct ID3D12VideoDecoderVtbl *lpVtbl;
890 };
891
892
893
894#ifdef COBJMACROS
895
896
897#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) \
898 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
899
900#define ID3D12VideoDecoder_AddRef(This) \
901 ( (This)->lpVtbl -> AddRef(This) )
902
903#define ID3D12VideoDecoder_Release(This) \
904 ( (This)->lpVtbl -> Release(This) )
905
906
907#define ID3D12VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) \
908 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
909
910#define ID3D12VideoDecoder_SetPrivateData(This,guid,DataSize,pData) \
911 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
912
913#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,pData) \
914 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
915
916#define ID3D12VideoDecoder_SetName(This,Name) \
917 ( (This)->lpVtbl -> SetName(This,Name) )
918
919
920#define ID3D12VideoDecoder_GetDevice(This,riid,ppvDevice) \
921 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
922
923
924#if !defined(_WIN32)
925
926#define ID3D12VideoDecoder_GetDesc(This) \
927 ( (This)->lpVtbl -> GetDesc(This) )
928#else
929#define ID3D12VideoDecoder_GetDesc(This,RetVal) \
930 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
931#endif
932
933#endif /* COBJMACROS */
934
935
936#endif /* C style interface */
937
938
939
940
941#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
942
943
944/* interface __MIDL_itf_d3d12video_0000_0003 */
945/* [local] */
946
947typedef
948enum D3D12_VIDEO_DECODE_TIER
949 {
950 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
951 D3D12_VIDEO_DECODE_TIER_1 = 1,
952 D3D12_VIDEO_DECODE_TIER_2 = 2,
953 D3D12_VIDEO_DECODE_TIER_3 = 3
954 } D3D12_VIDEO_DECODE_TIER;
955
956typedef
957enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
958 {
959 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0,
960 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
961 } D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
962
963DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )
964typedef
965enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
966 {
967 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0,
968 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
969 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
970 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
971 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
972 } D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
973
974DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )
975typedef
976enum D3D12_VIDEO_DECODE_STATUS
977 {
978 D3D12_VIDEO_DECODE_STATUS_OK = 0,
979 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
980 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
981 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
982 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4
983 } D3D12_VIDEO_DECODE_STATUS;
984
985typedef
986enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
987 {
988 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
989 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
990 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
991 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3
992 } D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
993
994typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
995 {
996 UINT NodeIndex;
997 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
998 UINT Width;
999 UINT Height;
1000 DXGI_FORMAT DecodeFormat;
1001 DXGI_RATIONAL FrameRate;
1002 UINT BitRate;
1003 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
1004 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
1005 D3D12_VIDEO_DECODE_TIER DecodeTier;
1006 } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
1007
1008typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
1009 {
1010 UINT NodeIndex;
1011 UINT ProfileCount;
1012 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
1013
1014typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
1015 {
1016 UINT NodeIndex;
1017 UINT ProfileCount;
1018 _Field_size_full_(ProfileCount) GUID *pProfiles;
1019 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
1020
1021typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
1022 {
1023 UINT NodeIndex;
1024 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1025 UINT FormatCount;
1026 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
1027
1028typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
1029 {
1030 UINT NodeIndex;
1031 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1032 UINT FormatCount;
1033 _Field_size_full_(FormatCount) DXGI_FORMAT *pOutputFormats;
1034 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
1035
1036typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
1037 {
1038 BOOL IOCoherent;
1039 } D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
1040
1041typedef
1042enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
1043 {
1044 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
1045 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
1046 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
1047 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
1048 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
1049 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
1050 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3
1051 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
1052
1053typedef
1054enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
1055 {
1056 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0,
1057 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y ) ,
1058 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U ) ,
1059 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V ) ,
1060 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R ) ,
1061 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G ) ,
1062 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B ) ,
1063 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A )
1064 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
1065
1066DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )
1067typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
1068 {
1069 UINT NodeIndex;
1070 GUID DecodeProfile;
1071 UINT Width;
1072 UINT Height;
1073 DXGI_FORMAT DecodeFormat;
1074 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;
1075 UINT BinCount;
1076 UINT CounterBitDepth;
1077 } D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
1078
1079typedef
1080enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
1081 {
1082 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0,
1083 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1
1084 } D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
1085
1086DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )
1087typedef
1088enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
1089 {
1090 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0,
1091 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
1092 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
1093 D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4
1094 } D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
1095
1096DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )
1097typedef struct D3D12_VIDEO_SCALE_SUPPORT
1098 {
1099 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
1100 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
1101 } D3D12_VIDEO_SCALE_SUPPORT;
1102
1103typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
1104 {
1105 UINT NodeIndex;
1106 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1107 D3D12_VIDEO_SAMPLE DecodeSample;
1108 D3D12_VIDEO_FORMAT OutputFormat;
1109 DXGI_RATIONAL FrameRate;
1110 UINT BitRate;
1111 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;
1112 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1113 } D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
1114
1115typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
1116 {
1117 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
1118 UINT64 MemoryPoolL0Size;
1119 UINT64 MemoryPoolL1Size;
1120 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
1121
1122typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
1123 {
1124 UINT NodeMask;
1125 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
1126 UINT NumInputStreamDescs;
1127 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
1128 UINT64 MemoryPoolL0Size;
1129 UINT64 MemoryPoolL1Size;
1130 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
1131
1132typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
1133 {
1134 UINT64 Status;
1135 UINT64 NumMacroblocksAffected;
1136 DXGI_RATIONAL FrameRate;
1137 UINT BitRate;
1138 } D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
1139
1140typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
1141 {
1142 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
1143 UINT Size;
1144 _Field_size_bytes_full_(Size) void *pData;
1145 } D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
1146
1147typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
1148 {
1149 UINT NumTexture2Ds;
1150 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
1151 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
1152 _Field_size_full_opt_(NumTexture2Ds) ID3D12VideoDecoderHeap **ppHeaps;
1153 } D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
1154
1155typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
1156 {
1157 ID3D12Resource *pBuffer;
1158 UINT64 Offset;
1159 UINT64 Size;
1160 } D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
1161
1162typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
1163 {
1164 BOOL Enable;
1165 ID3D12Resource *pReferenceTexture2D;
1166 UINT ReferenceSubresource;
1167 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
1168 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
1169 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
1170
1171typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
1172 {
1173 UINT NumFrameArguments;
1174 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[ 10 ];
1175 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
1176 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
1177 ID3D12VideoDecoderHeap *pHeap;
1178 } D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
1179
1180typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
1181 {
1182 ID3D12Resource *pOutputTexture2D;
1183 UINT OutputSubresource;
1184 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
1185 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
1186
1187
1188
1189extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_c_ifspec;
1190extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_s_ifspec;
1191
1192#ifndef __ID3D12VideoProcessor_INTERFACE_DEFINED__
1193#define __ID3D12VideoProcessor_INTERFACE_DEFINED__
1194
1195/* interface ID3D12VideoProcessor */
1196/* [unique][local][object][uuid] */
1197
1198
1199EXTERN_C const IID IID_ID3D12VideoProcessor;
1200
1201#if defined(__cplusplus) && !defined(CINTERFACE)
1202
1203 MIDL_INTERFACE("304FDB32-BEDE-410A-8545-943AC6A46138")
1204 ID3D12VideoProcessor : public ID3D12Pageable
1205 {
1206 public:
1207 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
1208
1209 virtual UINT STDMETHODCALLTYPE GetNumInputStreamDescs( void) = 0;
1210
1211 virtual HRESULT STDMETHODCALLTYPE GetInputStreamDescs(
1212 UINT NumInputStreamDescs,
1213 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs) = 0;
1214
1215#if defined(_MSC_VER) || !defined(_WIN32)
1216 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc( void) = 0;
1217#else
1218 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *STDMETHODCALLTYPE GetOutputStreamDesc(
1219 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal) = 0;
1220#endif
1221
1222 };
1223
1224
1225#else /* C style interface */
1226
1227 typedef struct ID3D12VideoProcessorVtbl
1228 {
1229 BEGIN_INTERFACE
1230
1231 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1232 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1233 ID3D12VideoProcessor * This,
1234 REFIID riid,
1235 _COM_Outptr_ void **ppvObject);
1236
1237 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1238 ULONG ( STDMETHODCALLTYPE *AddRef )(
1239 ID3D12VideoProcessor * This);
1240
1241 DECLSPEC_XFGVIRT(IUnknown, Release)
1242 ULONG ( STDMETHODCALLTYPE *Release )(
1243 ID3D12VideoProcessor * This);
1244
1245 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1246 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1247 ID3D12VideoProcessor * This,
1248 _In_ REFGUID guid,
1249 _Inout_ UINT *pDataSize,
1250 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1251
1252 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1253 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1254 ID3D12VideoProcessor * This,
1255 _In_ REFGUID guid,
1256 _In_ UINT DataSize,
1257 _In_reads_bytes_opt_( DataSize ) const void *pData);
1258
1259 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1260 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1261 ID3D12VideoProcessor * This,
1262 _In_ REFGUID guid,
1263 _In_opt_ const IUnknown *pData);
1264
1265 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1266 HRESULT ( STDMETHODCALLTYPE *SetName )(
1267 ID3D12VideoProcessor * This,
1268 _In_z_ LPCWSTR Name);
1269
1270 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1271 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1272 ID3D12VideoProcessor * This,
1273 REFIID riid,
1274 _COM_Outptr_opt_ void **ppvDevice);
1275
1276 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
1277 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
1278 ID3D12VideoProcessor * This);
1279
1280 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
1281 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
1282 ID3D12VideoProcessor * This);
1283
1284 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
1285 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
1286 ID3D12VideoProcessor * This,
1287 UINT NumInputStreamDescs,
1288 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
1289
1290 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
1291#if !defined(_WIN32)
1292 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1293 ID3D12VideoProcessor * This);
1294
1295#else
1296 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1297 ID3D12VideoProcessor * This,
1298 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
1299
1300#endif
1301
1302 END_INTERFACE
1303 } ID3D12VideoProcessorVtbl;
1304
1305 interface ID3D12VideoProcessor
1306 {
1307 CONST_VTBL struct ID3D12VideoProcessorVtbl *lpVtbl;
1308 };
1309
1310
1311
1312#ifdef COBJMACROS
1313
1314
1315#define ID3D12VideoProcessor_QueryInterface(This,riid,ppvObject) \
1316 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1317
1318#define ID3D12VideoProcessor_AddRef(This) \
1319 ( (This)->lpVtbl -> AddRef(This) )
1320
1321#define ID3D12VideoProcessor_Release(This) \
1322 ( (This)->lpVtbl -> Release(This) )
1323
1324
1325#define ID3D12VideoProcessor_GetPrivateData(This,guid,pDataSize,pData) \
1326 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1327
1328#define ID3D12VideoProcessor_SetPrivateData(This,guid,DataSize,pData) \
1329 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1330
1331#define ID3D12VideoProcessor_SetPrivateDataInterface(This,guid,pData) \
1332 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1333
1334#define ID3D12VideoProcessor_SetName(This,Name) \
1335 ( (This)->lpVtbl -> SetName(This,Name) )
1336
1337
1338#define ID3D12VideoProcessor_GetDevice(This,riid,ppvDevice) \
1339 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1340
1341
1342
1343#define ID3D12VideoProcessor_GetNodeMask(This) \
1344 ( (This)->lpVtbl -> GetNodeMask(This) )
1345
1346#define ID3D12VideoProcessor_GetNumInputStreamDescs(This) \
1347 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
1348
1349#define ID3D12VideoProcessor_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
1350 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
1351#if !defined(_WIN32)
1352
1353#define ID3D12VideoProcessor_GetOutputStreamDesc(This) \
1354 ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
1355#else
1356#define ID3D12VideoProcessor_GetOutputStreamDesc(This,RetVal) \
1357 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
1358#endif
1359
1360#endif /* COBJMACROS */
1361
1362
1363#endif /* C style interface */
1364
1365
1366
1367
1368#endif /* __ID3D12VideoProcessor_INTERFACE_DEFINED__ */
1369
1370
1371/* interface __MIDL_itf_d3d12video_0000_0004 */
1372/* [local] */
1373
1374typedef
1375enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
1376 {
1377 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0,
1378 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
1379 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
1380 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
1381 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
1382 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
1383 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
1384 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
1385 } D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
1386
1387DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )
1388typedef
1389enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
1390 {
1391 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0,
1392 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x1,
1393 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x2,
1394 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x4,
1395 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x8,
1396 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
1397 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
1398 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
1399 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
1400 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
1401 } D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
1402
1403DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )
1404typedef
1405enum D3D12_VIDEO_PROCESS_ORIENTATION
1406 {
1407 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
1408 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
1409 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
1410 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
1411 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
1412 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
1413 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
1414 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7
1415 } D3D12_VIDEO_PROCESS_ORIENTATION;
1416
1417typedef
1418enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
1419 {
1420 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0,
1421 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
1422 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
1423 } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
1424
1425DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )
1426typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
1427 {
1428 INT Minimum;
1429 INT Maximum;
1430 INT Default;
1431 FLOAT Multiplier;
1432 } D3D12_VIDEO_PROCESS_FILTER_RANGE;
1433
1434typedef
1435enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
1436 {
1437 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0,
1438 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
1439 } D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
1440
1441DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )
1442typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
1443 {
1444 UINT NodeIndex;
1445 D3D12_VIDEO_SAMPLE InputSample;
1446 D3D12_VIDEO_FIELD_TYPE InputFieldType;
1447 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;
1448 DXGI_RATIONAL InputFrameRate;
1449 D3D12_VIDEO_FORMAT OutputFormat;
1450 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;
1451 DXGI_RATIONAL OutputFrameRate;
1452 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;
1453 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1454 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1455 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;
1456 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;
1457 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;
1458 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[ 32 ];
1459 } D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
1460
1461typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
1462 {
1463 UINT NodeIndex;
1464 UINT MaxInputStreams;
1465 } D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
1466
1467typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
1468 {
1469 UINT NodeIndex;
1470 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
1471 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;
1472 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1473 DXGI_RATIONAL InputFrameRate;
1474 DXGI_RATIONAL OutputFrameRate;
1475 BOOL EnableAutoProcessing;
1476 UINT PastFrames;
1477 UINT FutureFrames;
1478 } D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
1479
1480typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
1481 {
1482 UINT NumPastFrames;
1483 ID3D12Resource **ppPastFrames;
1484 UINT *pPastSubresources;
1485 UINT NumFutureFrames;
1486 ID3D12Resource **ppFutureFrames;
1487 UINT *pFutureSubresources;
1488 } D3D12_VIDEO_PROCESS_REFERENCE_SET;
1489
1490typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
1491 {
1492 D3D12_RECT SourceRectangle;
1493 D3D12_RECT DestinationRectangle;
1494 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
1495 } D3D12_VIDEO_PROCESS_TRANSFORM;
1496
1497typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
1498 {
1499 UINT OutputIndex;
1500 UINT InputFrameOrField;
1501 } D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
1502
1503typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
1504 {
1505 ID3D12Resource *pTexture2D;
1506 UINT Subresource;
1507 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
1508 } D3D12_VIDEO_PROCESS_INPUT_STREAM;
1509
1510typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
1511 {
1512 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
1513 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
1514 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
1515 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
1516 INT FilterLevels[ 32 ];
1517 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
1518 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
1519
1520typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
1521 {
1522 ID3D12Resource *pTexture2D;
1523 UINT Subresource;
1524 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
1525
1526typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
1527 {
1528 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[ 2 ];
1529 D3D12_RECT TargetRectangle;
1530 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
1531
1532
1533
1534extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_c_ifspec;
1535extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_s_ifspec;
1536
1537#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1538#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1539
1540/* interface ID3D12VideoDecodeCommandList */
1541/* [unique][local][object][uuid] */
1542
1543
1544EXTERN_C const IID IID_ID3D12VideoDecodeCommandList;
1545
1546#if defined(__cplusplus) && !defined(CINTERFACE)
1547
1548 MIDL_INTERFACE("3B60536E-AD29-4E64-A269-F853837E5E53")
1549 ID3D12VideoDecodeCommandList : public ID3D12CommandList
1550 {
1551 public:
1552 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1553
1554 virtual HRESULT STDMETHODCALLTYPE Reset(
1555 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1556
1557 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1558
1559 virtual void STDMETHODCALLTYPE ResourceBarrier(
1560 _In_ UINT NumBarriers,
1561 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1562
1563 virtual void STDMETHODCALLTYPE DiscardResource(
1564 _In_ ID3D12Resource *pResource,
1565 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1566
1567 virtual void STDMETHODCALLTYPE BeginQuery(
1568 _In_ ID3D12QueryHeap *pQueryHeap,
1569 _In_ D3D12_QUERY_TYPE Type,
1570 _In_ UINT Index) = 0;
1571
1572 virtual void STDMETHODCALLTYPE EndQuery(
1573 _In_ ID3D12QueryHeap *pQueryHeap,
1574 _In_ D3D12_QUERY_TYPE Type,
1575 _In_ UINT Index) = 0;
1576
1577 virtual void STDMETHODCALLTYPE ResolveQueryData(
1578 _In_ ID3D12QueryHeap *pQueryHeap,
1579 _In_ D3D12_QUERY_TYPE Type,
1580 _In_ UINT StartIndex,
1581 _In_ UINT NumQueries,
1582 _In_ ID3D12Resource *pDestinationBuffer,
1583 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1584
1585 virtual void STDMETHODCALLTYPE SetPredication(
1586 _In_opt_ ID3D12Resource *pBuffer,
1587 _In_ UINT64 AlignedBufferOffset,
1588 _In_ D3D12_PREDICATION_OP Operation) = 0;
1589
1590 virtual void STDMETHODCALLTYPE SetMarker(
1591 UINT Metadata,
1592 _In_reads_bytes_opt_(Size) const void *pData,
1593 UINT Size) = 0;
1594
1595 virtual void STDMETHODCALLTYPE BeginEvent(
1596 UINT Metadata,
1597 _In_reads_bytes_opt_(Size) const void *pData,
1598 UINT Size) = 0;
1599
1600 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1601
1602 virtual void STDMETHODCALLTYPE DecodeFrame(
1603 _In_ ID3D12VideoDecoder *pDecoder,
1604 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1605 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1606
1607 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1608 UINT Count,
1609 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1610 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1611
1612 };
1613
1614
1615#else /* C style interface */
1616
1617 typedef struct ID3D12VideoDecodeCommandListVtbl
1618 {
1619 BEGIN_INTERFACE
1620
1621 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1622 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1623 ID3D12VideoDecodeCommandList * This,
1624 REFIID riid,
1625 _COM_Outptr_ void **ppvObject);
1626
1627 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1628 ULONG ( STDMETHODCALLTYPE *AddRef )(
1629 ID3D12VideoDecodeCommandList * This);
1630
1631 DECLSPEC_XFGVIRT(IUnknown, Release)
1632 ULONG ( STDMETHODCALLTYPE *Release )(
1633 ID3D12VideoDecodeCommandList * This);
1634
1635 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1636 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1637 ID3D12VideoDecodeCommandList * This,
1638 _In_ REFGUID guid,
1639 _Inout_ UINT *pDataSize,
1640 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1641
1642 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1643 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1644 ID3D12VideoDecodeCommandList * This,
1645 _In_ REFGUID guid,
1646 _In_ UINT DataSize,
1647 _In_reads_bytes_opt_( DataSize ) const void *pData);
1648
1649 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1650 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1651 ID3D12VideoDecodeCommandList * This,
1652 _In_ REFGUID guid,
1653 _In_opt_ const IUnknown *pData);
1654
1655 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1656 HRESULT ( STDMETHODCALLTYPE *SetName )(
1657 ID3D12VideoDecodeCommandList * This,
1658 _In_z_ LPCWSTR Name);
1659
1660 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1661 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1662 ID3D12VideoDecodeCommandList * This,
1663 REFIID riid,
1664 _COM_Outptr_opt_ void **ppvDevice);
1665
1666 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1667 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1668 ID3D12VideoDecodeCommandList * This);
1669
1670 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
1671 HRESULT ( STDMETHODCALLTYPE *Close )(
1672 ID3D12VideoDecodeCommandList * This);
1673
1674 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
1675 HRESULT ( STDMETHODCALLTYPE *Reset )(
1676 ID3D12VideoDecodeCommandList * This,
1677 _In_ ID3D12CommandAllocator *pAllocator);
1678
1679 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
1680 void ( STDMETHODCALLTYPE *ClearState )(
1681 ID3D12VideoDecodeCommandList * This);
1682
1683 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
1684 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1685 ID3D12VideoDecodeCommandList * This,
1686 _In_ UINT NumBarriers,
1687 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1688
1689 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
1690 void ( STDMETHODCALLTYPE *DiscardResource )(
1691 ID3D12VideoDecodeCommandList * This,
1692 _In_ ID3D12Resource *pResource,
1693 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1694
1695 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
1696 void ( STDMETHODCALLTYPE *BeginQuery )(
1697 ID3D12VideoDecodeCommandList * This,
1698 _In_ ID3D12QueryHeap *pQueryHeap,
1699 _In_ D3D12_QUERY_TYPE Type,
1700 _In_ UINT Index);
1701
1702 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
1703 void ( STDMETHODCALLTYPE *EndQuery )(
1704 ID3D12VideoDecodeCommandList * This,
1705 _In_ ID3D12QueryHeap *pQueryHeap,
1706 _In_ D3D12_QUERY_TYPE Type,
1707 _In_ UINT Index);
1708
1709 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
1710 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1711 ID3D12VideoDecodeCommandList * This,
1712 _In_ ID3D12QueryHeap *pQueryHeap,
1713 _In_ D3D12_QUERY_TYPE Type,
1714 _In_ UINT StartIndex,
1715 _In_ UINT NumQueries,
1716 _In_ ID3D12Resource *pDestinationBuffer,
1717 _In_ UINT64 AlignedDestinationBufferOffset);
1718
1719 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
1720 void ( STDMETHODCALLTYPE *SetPredication )(
1721 ID3D12VideoDecodeCommandList * This,
1722 _In_opt_ ID3D12Resource *pBuffer,
1723 _In_ UINT64 AlignedBufferOffset,
1724 _In_ D3D12_PREDICATION_OP Operation);
1725
1726 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
1727 void ( STDMETHODCALLTYPE *SetMarker )(
1728 ID3D12VideoDecodeCommandList * This,
1729 UINT Metadata,
1730 _In_reads_bytes_opt_(Size) const void *pData,
1731 UINT Size);
1732
1733 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
1734 void ( STDMETHODCALLTYPE *BeginEvent )(
1735 ID3D12VideoDecodeCommandList * This,
1736 UINT Metadata,
1737 _In_reads_bytes_opt_(Size) const void *pData,
1738 UINT Size);
1739
1740 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
1741 void ( STDMETHODCALLTYPE *EndEvent )(
1742 ID3D12VideoDecodeCommandList * This);
1743
1744 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
1745 void ( STDMETHODCALLTYPE *DecodeFrame )(
1746 ID3D12VideoDecodeCommandList * This,
1747 _In_ ID3D12VideoDecoder *pDecoder,
1748 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1749 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
1750
1751 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
1752 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1753 ID3D12VideoDecodeCommandList * This,
1754 UINT Count,
1755 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1756 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1757
1758 END_INTERFACE
1759 } ID3D12VideoDecodeCommandListVtbl;
1760
1761 interface ID3D12VideoDecodeCommandList
1762 {
1763 CONST_VTBL struct ID3D12VideoDecodeCommandListVtbl *lpVtbl;
1764 };
1765
1766
1767
1768#ifdef COBJMACROS
1769
1770
1771#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) \
1772 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1773
1774#define ID3D12VideoDecodeCommandList_AddRef(This) \
1775 ( (This)->lpVtbl -> AddRef(This) )
1776
1777#define ID3D12VideoDecodeCommandList_Release(This) \
1778 ( (This)->lpVtbl -> Release(This) )
1779
1780
1781#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1782 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1783
1784#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
1785 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1786
1787#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,pData) \
1788 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1789
1790#define ID3D12VideoDecodeCommandList_SetName(This,Name) \
1791 ( (This)->lpVtbl -> SetName(This,Name) )
1792
1793
1794#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,ppvDevice) \
1795 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1796
1797
1798#define ID3D12VideoDecodeCommandList_GetType(This) \
1799 ( (This)->lpVtbl -> GetType(This) )
1800
1801
1802#define ID3D12VideoDecodeCommandList_Close(This) \
1803 ( (This)->lpVtbl -> Close(This) )
1804
1805#define ID3D12VideoDecodeCommandList_Reset(This,pAllocator) \
1806 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1807
1808#define ID3D12VideoDecodeCommandList_ClearState(This) \
1809 ( (This)->lpVtbl -> ClearState(This) )
1810
1811#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1812 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1813
1814#define ID3D12VideoDecodeCommandList_DiscardResource(This,pResource,pRegion) \
1815 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1816
1817#define ID3D12VideoDecodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1818 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1819
1820#define ID3D12VideoDecodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1821 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1822
1823#define ID3D12VideoDecodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1824 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
1825
1826#define ID3D12VideoDecodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
1827 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
1828
1829#define ID3D12VideoDecodeCommandList_SetMarker(This,Metadata,pData,Size) \
1830 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
1831
1832#define ID3D12VideoDecodeCommandList_BeginEvent(This,Metadata,pData,Size) \
1833 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
1834
1835#define ID3D12VideoDecodeCommandList_EndEvent(This) \
1836 ( (This)->lpVtbl -> EndEvent(This) )
1837
1838#define ID3D12VideoDecodeCommandList_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
1839 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
1840
1841#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
1842 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
1843
1844#endif /* COBJMACROS */
1845
1846
1847#endif /* C style interface */
1848
1849
1850
1851
1852#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
1853
1854
1855#ifndef __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1856#define __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1857
1858/* interface ID3D12VideoProcessCommandList */
1859/* [unique][local][object][uuid] */
1860
1861
1862EXTERN_C const IID IID_ID3D12VideoProcessCommandList;
1863
1864#if defined(__cplusplus) && !defined(CINTERFACE)
1865
1866 MIDL_INTERFACE("AEB2543A-167F-4682-ACC8-D159ED4A6209")
1867 ID3D12VideoProcessCommandList : public ID3D12CommandList
1868 {
1869 public:
1870 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1871
1872 virtual HRESULT STDMETHODCALLTYPE Reset(
1873 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1874
1875 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1876
1877 virtual void STDMETHODCALLTYPE ResourceBarrier(
1878 _In_ UINT NumBarriers,
1879 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1880
1881 virtual void STDMETHODCALLTYPE DiscardResource(
1882 _In_ ID3D12Resource *pResource,
1883 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1884
1885 virtual void STDMETHODCALLTYPE BeginQuery(
1886 _In_ ID3D12QueryHeap *pQueryHeap,
1887 _In_ D3D12_QUERY_TYPE Type,
1888 _In_ UINT Index) = 0;
1889
1890 virtual void STDMETHODCALLTYPE EndQuery(
1891 _In_ ID3D12QueryHeap *pQueryHeap,
1892 _In_ D3D12_QUERY_TYPE Type,
1893 _In_ UINT Index) = 0;
1894
1895 virtual void STDMETHODCALLTYPE ResolveQueryData(
1896 _In_ ID3D12QueryHeap *pQueryHeap,
1897 _In_ D3D12_QUERY_TYPE Type,
1898 _In_ UINT StartIndex,
1899 _In_ UINT NumQueries,
1900 _In_ ID3D12Resource *pDestinationBuffer,
1901 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1902
1903 virtual void STDMETHODCALLTYPE SetPredication(
1904 _In_opt_ ID3D12Resource *pBuffer,
1905 _In_ UINT64 AlignedBufferOffset,
1906 _In_ D3D12_PREDICATION_OP Operation) = 0;
1907
1908 virtual void STDMETHODCALLTYPE SetMarker(
1909 UINT Metadata,
1910 _In_reads_bytes_opt_(Size) const void *pData,
1911 UINT Size) = 0;
1912
1913 virtual void STDMETHODCALLTYPE BeginEvent(
1914 UINT Metadata,
1915 _In_reads_bytes_opt_(Size) const void *pData,
1916 UINT Size) = 0;
1917
1918 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1919
1920 virtual void STDMETHODCALLTYPE ProcessFrames(
1921 _In_ ID3D12VideoProcessor *pVideoProcessor,
1922 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1923 UINT NumInputStreams,
1924 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1925
1926 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1927 UINT Count,
1928 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1929 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1930
1931 };
1932
1933
1934#else /* C style interface */
1935
1936 typedef struct ID3D12VideoProcessCommandListVtbl
1937 {
1938 BEGIN_INTERFACE
1939
1940 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1941 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1942 ID3D12VideoProcessCommandList * This,
1943 REFIID riid,
1944 _COM_Outptr_ void **ppvObject);
1945
1946 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1947 ULONG ( STDMETHODCALLTYPE *AddRef )(
1948 ID3D12VideoProcessCommandList * This);
1949
1950 DECLSPEC_XFGVIRT(IUnknown, Release)
1951 ULONG ( STDMETHODCALLTYPE *Release )(
1952 ID3D12VideoProcessCommandList * This);
1953
1954 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1955 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1956 ID3D12VideoProcessCommandList * This,
1957 _In_ REFGUID guid,
1958 _Inout_ UINT *pDataSize,
1959 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1960
1961 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1962 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1963 ID3D12VideoProcessCommandList * This,
1964 _In_ REFGUID guid,
1965 _In_ UINT DataSize,
1966 _In_reads_bytes_opt_( DataSize ) const void *pData);
1967
1968 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1969 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1970 ID3D12VideoProcessCommandList * This,
1971 _In_ REFGUID guid,
1972 _In_opt_ const IUnknown *pData);
1973
1974 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1975 HRESULT ( STDMETHODCALLTYPE *SetName )(
1976 ID3D12VideoProcessCommandList * This,
1977 _In_z_ LPCWSTR Name);
1978
1979 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1980 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1981 ID3D12VideoProcessCommandList * This,
1982 REFIID riid,
1983 _COM_Outptr_opt_ void **ppvDevice);
1984
1985 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1986 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1987 ID3D12VideoProcessCommandList * This);
1988
1989 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
1990 HRESULT ( STDMETHODCALLTYPE *Close )(
1991 ID3D12VideoProcessCommandList * This);
1992
1993 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
1994 HRESULT ( STDMETHODCALLTYPE *Reset )(
1995 ID3D12VideoProcessCommandList * This,
1996 _In_ ID3D12CommandAllocator *pAllocator);
1997
1998 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
1999 void ( STDMETHODCALLTYPE *ClearState )(
2000 ID3D12VideoProcessCommandList * This);
2001
2002 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2003 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2004 ID3D12VideoProcessCommandList * This,
2005 _In_ UINT NumBarriers,
2006 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2007
2008 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2009 void ( STDMETHODCALLTYPE *DiscardResource )(
2010 ID3D12VideoProcessCommandList * This,
2011 _In_ ID3D12Resource *pResource,
2012 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2013
2014 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2015 void ( STDMETHODCALLTYPE *BeginQuery )(
2016 ID3D12VideoProcessCommandList * This,
2017 _In_ ID3D12QueryHeap *pQueryHeap,
2018 _In_ D3D12_QUERY_TYPE Type,
2019 _In_ UINT Index);
2020
2021 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2022 void ( STDMETHODCALLTYPE *EndQuery )(
2023 ID3D12VideoProcessCommandList * This,
2024 _In_ ID3D12QueryHeap *pQueryHeap,
2025 _In_ D3D12_QUERY_TYPE Type,
2026 _In_ UINT Index);
2027
2028 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2029 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2030 ID3D12VideoProcessCommandList * This,
2031 _In_ ID3D12QueryHeap *pQueryHeap,
2032 _In_ D3D12_QUERY_TYPE Type,
2033 _In_ UINT StartIndex,
2034 _In_ UINT NumQueries,
2035 _In_ ID3D12Resource *pDestinationBuffer,
2036 _In_ UINT64 AlignedDestinationBufferOffset);
2037
2038 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2039 void ( STDMETHODCALLTYPE *SetPredication )(
2040 ID3D12VideoProcessCommandList * This,
2041 _In_opt_ ID3D12Resource *pBuffer,
2042 _In_ UINT64 AlignedBufferOffset,
2043 _In_ D3D12_PREDICATION_OP Operation);
2044
2045 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2046 void ( STDMETHODCALLTYPE *SetMarker )(
2047 ID3D12VideoProcessCommandList * This,
2048 UINT Metadata,
2049 _In_reads_bytes_opt_(Size) const void *pData,
2050 UINT Size);
2051
2052 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2053 void ( STDMETHODCALLTYPE *BeginEvent )(
2054 ID3D12VideoProcessCommandList * This,
2055 UINT Metadata,
2056 _In_reads_bytes_opt_(Size) const void *pData,
2057 UINT Size);
2058
2059 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2060 void ( STDMETHODCALLTYPE *EndEvent )(
2061 ID3D12VideoProcessCommandList * This);
2062
2063 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2064 void ( STDMETHODCALLTYPE *ProcessFrames )(
2065 ID3D12VideoProcessCommandList * This,
2066 _In_ ID3D12VideoProcessor *pVideoProcessor,
2067 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2068 UINT NumInputStreams,
2069 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2070
2071 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2072 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2073 ID3D12VideoProcessCommandList * This,
2074 UINT Count,
2075 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2076 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2077
2078 END_INTERFACE
2079 } ID3D12VideoProcessCommandListVtbl;
2080
2081 interface ID3D12VideoProcessCommandList
2082 {
2083 CONST_VTBL struct ID3D12VideoProcessCommandListVtbl *lpVtbl;
2084 };
2085
2086
2087
2088#ifdef COBJMACROS
2089
2090
2091#define ID3D12VideoProcessCommandList_QueryInterface(This,riid,ppvObject) \
2092 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2093
2094#define ID3D12VideoProcessCommandList_AddRef(This) \
2095 ( (This)->lpVtbl -> AddRef(This) )
2096
2097#define ID3D12VideoProcessCommandList_Release(This) \
2098 ( (This)->lpVtbl -> Release(This) )
2099
2100
2101#define ID3D12VideoProcessCommandList_GetPrivateData(This,guid,pDataSize,pData) \
2102 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2103
2104#define ID3D12VideoProcessCommandList_SetPrivateData(This,guid,DataSize,pData) \
2105 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2106
2107#define ID3D12VideoProcessCommandList_SetPrivateDataInterface(This,guid,pData) \
2108 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2109
2110#define ID3D12VideoProcessCommandList_SetName(This,Name) \
2111 ( (This)->lpVtbl -> SetName(This,Name) )
2112
2113
2114#define ID3D12VideoProcessCommandList_GetDevice(This,riid,ppvDevice) \
2115 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2116
2117
2118#define ID3D12VideoProcessCommandList_GetType(This) \
2119 ( (This)->lpVtbl -> GetType(This) )
2120
2121
2122#define ID3D12VideoProcessCommandList_Close(This) \
2123 ( (This)->lpVtbl -> Close(This) )
2124
2125#define ID3D12VideoProcessCommandList_Reset(This,pAllocator) \
2126 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2127
2128#define ID3D12VideoProcessCommandList_ClearState(This) \
2129 ( (This)->lpVtbl -> ClearState(This) )
2130
2131#define ID3D12VideoProcessCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
2132 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2133
2134#define ID3D12VideoProcessCommandList_DiscardResource(This,pResource,pRegion) \
2135 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2136
2137#define ID3D12VideoProcessCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
2138 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2139
2140#define ID3D12VideoProcessCommandList_EndQuery(This,pQueryHeap,Type,Index) \
2141 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2142
2143#define ID3D12VideoProcessCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2144 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2145
2146#define ID3D12VideoProcessCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2147 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2148
2149#define ID3D12VideoProcessCommandList_SetMarker(This,Metadata,pData,Size) \
2150 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2151
2152#define ID3D12VideoProcessCommandList_BeginEvent(This,Metadata,pData,Size) \
2153 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2154
2155#define ID3D12VideoProcessCommandList_EndEvent(This) \
2156 ( (This)->lpVtbl -> EndEvent(This) )
2157
2158#define ID3D12VideoProcessCommandList_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2159 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2160
2161#define ID3D12VideoProcessCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
2162 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2163
2164#endif /* COBJMACROS */
2165
2166
2167#endif /* C style interface */
2168
2169
2170
2171
2172#endif /* __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__ */
2173
2174
2175/* interface __MIDL_itf_d3d12video_0000_0006 */
2176/* [local] */
2177
2178typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
2179 {
2180 UINT64 Offset;
2181 ID3D12Resource *pBuffer;
2182 } D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
2183
2184typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
2185 {
2186 BOOL Enable;
2187 ID3D12Resource *pReferenceTexture2D;
2188 UINT ReferenceSubresource;
2189 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
2190 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
2191 UINT OutputWidth;
2192 UINT OutputHeight;
2193 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
2194
2195typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
2196 {
2197 ID3D12Resource *pOutputTexture2D;
2198 UINT OutputSubresource;
2199 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
2200 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[ 4 ];
2201 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
2202
2203
2204
2205extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_c_ifspec;
2206extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_s_ifspec;
2207
2208#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2209#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2210
2211/* interface ID3D12VideoDecodeCommandList1 */
2212/* [unique][local][object][uuid] */
2213
2214
2215EXTERN_C const IID IID_ID3D12VideoDecodeCommandList1;
2216
2217#if defined(__cplusplus) && !defined(CINTERFACE)
2218
2219 MIDL_INTERFACE("D52F011B-B56E-453C-A05A-A7F311C8F472")
2220 ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
2221 {
2222 public:
2223 virtual void STDMETHODCALLTYPE DecodeFrame1(
2224 _In_ ID3D12VideoDecoder *pDecoder,
2225 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2226 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
2227
2228 };
2229
2230
2231#else /* C style interface */
2232
2233 typedef struct ID3D12VideoDecodeCommandList1Vtbl
2234 {
2235 BEGIN_INTERFACE
2236
2237 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2238 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2239 ID3D12VideoDecodeCommandList1 * This,
2240 REFIID riid,
2241 _COM_Outptr_ void **ppvObject);
2242
2243 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2244 ULONG ( STDMETHODCALLTYPE *AddRef )(
2245 ID3D12VideoDecodeCommandList1 * This);
2246
2247 DECLSPEC_XFGVIRT(IUnknown, Release)
2248 ULONG ( STDMETHODCALLTYPE *Release )(
2249 ID3D12VideoDecodeCommandList1 * This);
2250
2251 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2252 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2253 ID3D12VideoDecodeCommandList1 * This,
2254 _In_ REFGUID guid,
2255 _Inout_ UINT *pDataSize,
2256 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2257
2258 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2259 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2260 ID3D12VideoDecodeCommandList1 * This,
2261 _In_ REFGUID guid,
2262 _In_ UINT DataSize,
2263 _In_reads_bytes_opt_( DataSize ) const void *pData);
2264
2265 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2266 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2267 ID3D12VideoDecodeCommandList1 * This,
2268 _In_ REFGUID guid,
2269 _In_opt_ const IUnknown *pData);
2270
2271 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2272 HRESULT ( STDMETHODCALLTYPE *SetName )(
2273 ID3D12VideoDecodeCommandList1 * This,
2274 _In_z_ LPCWSTR Name);
2275
2276 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2277 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2278 ID3D12VideoDecodeCommandList1 * This,
2279 REFIID riid,
2280 _COM_Outptr_opt_ void **ppvDevice);
2281
2282 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2283 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2284 ID3D12VideoDecodeCommandList1 * This);
2285
2286 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
2287 HRESULT ( STDMETHODCALLTYPE *Close )(
2288 ID3D12VideoDecodeCommandList1 * This);
2289
2290 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
2291 HRESULT ( STDMETHODCALLTYPE *Reset )(
2292 ID3D12VideoDecodeCommandList1 * This,
2293 _In_ ID3D12CommandAllocator *pAllocator);
2294
2295 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
2296 void ( STDMETHODCALLTYPE *ClearState )(
2297 ID3D12VideoDecodeCommandList1 * This);
2298
2299 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
2300 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2301 ID3D12VideoDecodeCommandList1 * This,
2302 _In_ UINT NumBarriers,
2303 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2304
2305 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
2306 void ( STDMETHODCALLTYPE *DiscardResource )(
2307 ID3D12VideoDecodeCommandList1 * This,
2308 _In_ ID3D12Resource *pResource,
2309 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2310
2311 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
2312 void ( STDMETHODCALLTYPE *BeginQuery )(
2313 ID3D12VideoDecodeCommandList1 * This,
2314 _In_ ID3D12QueryHeap *pQueryHeap,
2315 _In_ D3D12_QUERY_TYPE Type,
2316 _In_ UINT Index);
2317
2318 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
2319 void ( STDMETHODCALLTYPE *EndQuery )(
2320 ID3D12VideoDecodeCommandList1 * This,
2321 _In_ ID3D12QueryHeap *pQueryHeap,
2322 _In_ D3D12_QUERY_TYPE Type,
2323 _In_ UINT Index);
2324
2325 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
2326 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2327 ID3D12VideoDecodeCommandList1 * This,
2328 _In_ ID3D12QueryHeap *pQueryHeap,
2329 _In_ D3D12_QUERY_TYPE Type,
2330 _In_ UINT StartIndex,
2331 _In_ UINT NumQueries,
2332 _In_ ID3D12Resource *pDestinationBuffer,
2333 _In_ UINT64 AlignedDestinationBufferOffset);
2334
2335 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
2336 void ( STDMETHODCALLTYPE *SetPredication )(
2337 ID3D12VideoDecodeCommandList1 * This,
2338 _In_opt_ ID3D12Resource *pBuffer,
2339 _In_ UINT64 AlignedBufferOffset,
2340 _In_ D3D12_PREDICATION_OP Operation);
2341
2342 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
2343 void ( STDMETHODCALLTYPE *SetMarker )(
2344 ID3D12VideoDecodeCommandList1 * This,
2345 UINT Metadata,
2346 _In_reads_bytes_opt_(Size) const void *pData,
2347 UINT Size);
2348
2349 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
2350 void ( STDMETHODCALLTYPE *BeginEvent )(
2351 ID3D12VideoDecodeCommandList1 * This,
2352 UINT Metadata,
2353 _In_reads_bytes_opt_(Size) const void *pData,
2354 UINT Size);
2355
2356 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
2357 void ( STDMETHODCALLTYPE *EndEvent )(
2358 ID3D12VideoDecodeCommandList1 * This);
2359
2360 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
2361 void ( STDMETHODCALLTYPE *DecodeFrame )(
2362 ID3D12VideoDecodeCommandList1 * This,
2363 _In_ ID3D12VideoDecoder *pDecoder,
2364 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2365 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2366
2367 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
2368 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2369 ID3D12VideoDecodeCommandList1 * This,
2370 UINT Count,
2371 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2372 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2373
2374 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
2375 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
2376 ID3D12VideoDecodeCommandList1 * This,
2377 _In_ ID3D12VideoDecoder *pDecoder,
2378 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2379 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2380
2381 END_INTERFACE
2382 } ID3D12VideoDecodeCommandList1Vtbl;
2383
2384 interface ID3D12VideoDecodeCommandList1
2385 {
2386 CONST_VTBL struct ID3D12VideoDecodeCommandList1Vtbl *lpVtbl;
2387 };
2388
2389
2390
2391#ifdef COBJMACROS
2392
2393
2394#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) \
2395 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2396
2397#define ID3D12VideoDecodeCommandList1_AddRef(This) \
2398 ( (This)->lpVtbl -> AddRef(This) )
2399
2400#define ID3D12VideoDecodeCommandList1_Release(This) \
2401 ( (This)->lpVtbl -> Release(This) )
2402
2403
2404#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2405 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2406
2407#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2408 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2409
2410#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
2411 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2412
2413#define ID3D12VideoDecodeCommandList1_SetName(This,Name) \
2414 ( (This)->lpVtbl -> SetName(This,Name) )
2415
2416
2417#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,ppvDevice) \
2418 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2419
2420
2421#define ID3D12VideoDecodeCommandList1_GetType(This) \
2422 ( (This)->lpVtbl -> GetType(This) )
2423
2424
2425#define ID3D12VideoDecodeCommandList1_Close(This) \
2426 ( (This)->lpVtbl -> Close(This) )
2427
2428#define ID3D12VideoDecodeCommandList1_Reset(This,pAllocator) \
2429 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2430
2431#define ID3D12VideoDecodeCommandList1_ClearState(This) \
2432 ( (This)->lpVtbl -> ClearState(This) )
2433
2434#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2435 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2436
2437#define ID3D12VideoDecodeCommandList1_DiscardResource(This,pResource,pRegion) \
2438 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2439
2440#define ID3D12VideoDecodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2441 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2442
2443#define ID3D12VideoDecodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2444 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2445
2446#define ID3D12VideoDecodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2447 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2448
2449#define ID3D12VideoDecodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2450 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2451
2452#define ID3D12VideoDecodeCommandList1_SetMarker(This,Metadata,pData,Size) \
2453 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2454
2455#define ID3D12VideoDecodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
2456 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2457
2458#define ID3D12VideoDecodeCommandList1_EndEvent(This) \
2459 ( (This)->lpVtbl -> EndEvent(This) )
2460
2461#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
2462 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
2463
2464#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2465 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2466
2467
2468#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
2469 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
2470
2471#endif /* COBJMACROS */
2472
2473
2474#endif /* C style interface */
2475
2476
2477
2478
2479#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
2480
2481
2482/* interface __MIDL_itf_d3d12video_0000_0007 */
2483/* [local] */
2484
2485typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
2486 {
2487 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
2488 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
2489 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
2490 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
2491 INT FilterLevels[ 32 ];
2492 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
2493 D3D12_VIDEO_FIELD_TYPE FieldType;
2494 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
2495
2496
2497
2498extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_c_ifspec;
2499extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_s_ifspec;
2500
2501#ifndef __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2502#define __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2503
2504/* interface ID3D12VideoProcessCommandList1 */
2505/* [unique][local][object][uuid] */
2506
2507
2508EXTERN_C const IID IID_ID3D12VideoProcessCommandList1;
2509
2510#if defined(__cplusplus) && !defined(CINTERFACE)
2511
2512 MIDL_INTERFACE("542C5C4D-7596-434F-8C93-4EFA6766F267")
2513 ID3D12VideoProcessCommandList1 : public ID3D12VideoProcessCommandList
2514 {
2515 public:
2516 virtual void STDMETHODCALLTYPE ProcessFrames1(
2517 _In_ ID3D12VideoProcessor *pVideoProcessor,
2518 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2519 UINT NumInputStreams,
2520 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments) = 0;
2521
2522 };
2523
2524
2525#else /* C style interface */
2526
2527 typedef struct ID3D12VideoProcessCommandList1Vtbl
2528 {
2529 BEGIN_INTERFACE
2530
2531 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2532 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2533 ID3D12VideoProcessCommandList1 * This,
2534 REFIID riid,
2535 _COM_Outptr_ void **ppvObject);
2536
2537 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2538 ULONG ( STDMETHODCALLTYPE *AddRef )(
2539 ID3D12VideoProcessCommandList1 * This);
2540
2541 DECLSPEC_XFGVIRT(IUnknown, Release)
2542 ULONG ( STDMETHODCALLTYPE *Release )(
2543 ID3D12VideoProcessCommandList1 * This);
2544
2545 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2546 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2547 ID3D12VideoProcessCommandList1 * This,
2548 _In_ REFGUID guid,
2549 _Inout_ UINT *pDataSize,
2550 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2551
2552 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2553 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2554 ID3D12VideoProcessCommandList1 * This,
2555 _In_ REFGUID guid,
2556 _In_ UINT DataSize,
2557 _In_reads_bytes_opt_( DataSize ) const void *pData);
2558
2559 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2560 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2561 ID3D12VideoProcessCommandList1 * This,
2562 _In_ REFGUID guid,
2563 _In_opt_ const IUnknown *pData);
2564
2565 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2566 HRESULT ( STDMETHODCALLTYPE *SetName )(
2567 ID3D12VideoProcessCommandList1 * This,
2568 _In_z_ LPCWSTR Name);
2569
2570 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2571 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2572 ID3D12VideoProcessCommandList1 * This,
2573 REFIID riid,
2574 _COM_Outptr_opt_ void **ppvDevice);
2575
2576 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2577 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2578 ID3D12VideoProcessCommandList1 * This);
2579
2580 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
2581 HRESULT ( STDMETHODCALLTYPE *Close )(
2582 ID3D12VideoProcessCommandList1 * This);
2583
2584 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
2585 HRESULT ( STDMETHODCALLTYPE *Reset )(
2586 ID3D12VideoProcessCommandList1 * This,
2587 _In_ ID3D12CommandAllocator *pAllocator);
2588
2589 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
2590 void ( STDMETHODCALLTYPE *ClearState )(
2591 ID3D12VideoProcessCommandList1 * This);
2592
2593 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2594 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2595 ID3D12VideoProcessCommandList1 * This,
2596 _In_ UINT NumBarriers,
2597 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2598
2599 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2600 void ( STDMETHODCALLTYPE *DiscardResource )(
2601 ID3D12VideoProcessCommandList1 * This,
2602 _In_ ID3D12Resource *pResource,
2603 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2604
2605 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2606 void ( STDMETHODCALLTYPE *BeginQuery )(
2607 ID3D12VideoProcessCommandList1 * This,
2608 _In_ ID3D12QueryHeap *pQueryHeap,
2609 _In_ D3D12_QUERY_TYPE Type,
2610 _In_ UINT Index);
2611
2612 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2613 void ( STDMETHODCALLTYPE *EndQuery )(
2614 ID3D12VideoProcessCommandList1 * This,
2615 _In_ ID3D12QueryHeap *pQueryHeap,
2616 _In_ D3D12_QUERY_TYPE Type,
2617 _In_ UINT Index);
2618
2619 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2620 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2621 ID3D12VideoProcessCommandList1 * This,
2622 _In_ ID3D12QueryHeap *pQueryHeap,
2623 _In_ D3D12_QUERY_TYPE Type,
2624 _In_ UINT StartIndex,
2625 _In_ UINT NumQueries,
2626 _In_ ID3D12Resource *pDestinationBuffer,
2627 _In_ UINT64 AlignedDestinationBufferOffset);
2628
2629 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2630 void ( STDMETHODCALLTYPE *SetPredication )(
2631 ID3D12VideoProcessCommandList1 * This,
2632 _In_opt_ ID3D12Resource *pBuffer,
2633 _In_ UINT64 AlignedBufferOffset,
2634 _In_ D3D12_PREDICATION_OP Operation);
2635
2636 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2637 void ( STDMETHODCALLTYPE *SetMarker )(
2638 ID3D12VideoProcessCommandList1 * This,
2639 UINT Metadata,
2640 _In_reads_bytes_opt_(Size) const void *pData,
2641 UINT Size);
2642
2643 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2644 void ( STDMETHODCALLTYPE *BeginEvent )(
2645 ID3D12VideoProcessCommandList1 * This,
2646 UINT Metadata,
2647 _In_reads_bytes_opt_(Size) const void *pData,
2648 UINT Size);
2649
2650 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2651 void ( STDMETHODCALLTYPE *EndEvent )(
2652 ID3D12VideoProcessCommandList1 * This);
2653
2654 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2655 void ( STDMETHODCALLTYPE *ProcessFrames )(
2656 ID3D12VideoProcessCommandList1 * This,
2657 _In_ ID3D12VideoProcessor *pVideoProcessor,
2658 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2659 UINT NumInputStreams,
2660 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2661
2662 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2663 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2664 ID3D12VideoProcessCommandList1 * This,
2665 UINT Count,
2666 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2667 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2668
2669 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
2670 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
2671 ID3D12VideoProcessCommandList1 * This,
2672 _In_ ID3D12VideoProcessor *pVideoProcessor,
2673 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2674 UINT NumInputStreams,
2675 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
2676
2677 END_INTERFACE
2678 } ID3D12VideoProcessCommandList1Vtbl;
2679
2680 interface ID3D12VideoProcessCommandList1
2681 {
2682 CONST_VTBL struct ID3D12VideoProcessCommandList1Vtbl *lpVtbl;
2683 };
2684
2685
2686
2687#ifdef COBJMACROS
2688
2689
2690#define ID3D12VideoProcessCommandList1_QueryInterface(This,riid,ppvObject) \
2691 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2692
2693#define ID3D12VideoProcessCommandList1_AddRef(This) \
2694 ( (This)->lpVtbl -> AddRef(This) )
2695
2696#define ID3D12VideoProcessCommandList1_Release(This) \
2697 ( (This)->lpVtbl -> Release(This) )
2698
2699
2700#define ID3D12VideoProcessCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2701 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2702
2703#define ID3D12VideoProcessCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2704 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2705
2706#define ID3D12VideoProcessCommandList1_SetPrivateDataInterface(This,guid,pData) \
2707 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2708
2709#define ID3D12VideoProcessCommandList1_SetName(This,Name) \
2710 ( (This)->lpVtbl -> SetName(This,Name) )
2711
2712
2713#define ID3D12VideoProcessCommandList1_GetDevice(This,riid,ppvDevice) \
2714 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2715
2716
2717#define ID3D12VideoProcessCommandList1_GetType(This) \
2718 ( (This)->lpVtbl -> GetType(This) )
2719
2720
2721#define ID3D12VideoProcessCommandList1_Close(This) \
2722 ( (This)->lpVtbl -> Close(This) )
2723
2724#define ID3D12VideoProcessCommandList1_Reset(This,pAllocator) \
2725 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2726
2727#define ID3D12VideoProcessCommandList1_ClearState(This) \
2728 ( (This)->lpVtbl -> ClearState(This) )
2729
2730#define ID3D12VideoProcessCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2731 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2732
2733#define ID3D12VideoProcessCommandList1_DiscardResource(This,pResource,pRegion) \
2734 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2735
2736#define ID3D12VideoProcessCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2737 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2738
2739#define ID3D12VideoProcessCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2740 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2741
2742#define ID3D12VideoProcessCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2743 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2744
2745#define ID3D12VideoProcessCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2746 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2747
2748#define ID3D12VideoProcessCommandList1_SetMarker(This,Metadata,pData,Size) \
2749 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2750
2751#define ID3D12VideoProcessCommandList1_BeginEvent(This,Metadata,pData,Size) \
2752 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2753
2754#define ID3D12VideoProcessCommandList1_EndEvent(This) \
2755 ( (This)->lpVtbl -> EndEvent(This) )
2756
2757#define ID3D12VideoProcessCommandList1_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2758 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2759
2760#define ID3D12VideoProcessCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2761 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2762
2763
2764#define ID3D12VideoProcessCommandList1_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2765 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2766
2767#endif /* COBJMACROS */
2768
2769
2770#endif /* C style interface */
2771
2772
2773
2774
2775#endif /* __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__ */
2776
2777
2778/* interface __MIDL_itf_d3d12video_0000_0008 */
2779/* [local] */
2780
2781typedef
2782enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
2783 {
2784 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
2785 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
2786 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
2787
2788typedef
2789enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
2790 {
2791 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
2792 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 ) ,
2793 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 )
2794 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
2795
2796DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )
2797typedef
2798enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
2799 {
2800 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
2801 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
2802
2803typedef
2804enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
2805 {
2806 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
2807 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL )
2808 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
2809
2810DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )
2811typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
2812 {
2813 UINT NodeIndex;
2814 BOOL VideoDecodeSupport;
2815 BOOL VideoProcessSupport;
2816 BOOL VideoEncodeSupport;
2817 } D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
2818
2819typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
2820 {
2821 UINT NodeIndex;
2822 DXGI_FORMAT InputFormat;
2823 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;
2824 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;
2825 D3D12_VIDEO_SIZE_RANGE SizeRange;
2826 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
2827
2828typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
2829 {
2830 UINT NodeIndex;
2831 DXGI_FORMAT InputFormat;
2832 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2833 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2834 D3D12_VIDEO_SIZE_RANGE SizeRange;
2835 BOOL Protected;
2836 UINT64 MotionVectorHeapMemoryPoolL0Size;
2837 UINT64 MotionVectorHeapMemoryPoolL1Size;
2838 UINT64 MotionEstimatorMemoryPoolL0Size;
2839 UINT64 MotionEstimatorMemoryPoolL1Size;
2840 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
2841
2842typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
2843 {
2844 UINT NodeMask;
2845 DXGI_FORMAT InputFormat;
2846 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2847 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2848 D3D12_VIDEO_SIZE_RANGE SizeRange;
2849 } D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
2850
2851
2852
2853extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_c_ifspec;
2854extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_s_ifspec;
2855
2856#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2857#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2858
2859/* interface ID3D12VideoMotionEstimator */
2860/* [unique][local][object][uuid] */
2861
2862
2863EXTERN_C const IID IID_ID3D12VideoMotionEstimator;
2864
2865#if defined(__cplusplus) && !defined(CINTERFACE)
2866
2867 MIDL_INTERFACE("33FDAE0E-098B-428F-87BB-34B695DE08F8")
2868 ID3D12VideoMotionEstimator : public ID3D12Pageable
2869 {
2870 public:
2871#if defined(_MSC_VER) || !defined(_WIN32)
2872 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2873#else
2874 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC *STDMETHODCALLTYPE GetDesc(
2875 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal) = 0;
2876#endif
2877
2878 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2879 REFIID riid,
2880 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2881
2882 };
2883
2884
2885#else /* C style interface */
2886
2887 typedef struct ID3D12VideoMotionEstimatorVtbl
2888 {
2889 BEGIN_INTERFACE
2890
2891 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2892 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2893 ID3D12VideoMotionEstimator * This,
2894 REFIID riid,
2895 _COM_Outptr_ void **ppvObject);
2896
2897 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2898 ULONG ( STDMETHODCALLTYPE *AddRef )(
2899 ID3D12VideoMotionEstimator * This);
2900
2901 DECLSPEC_XFGVIRT(IUnknown, Release)
2902 ULONG ( STDMETHODCALLTYPE *Release )(
2903 ID3D12VideoMotionEstimator * This);
2904
2905 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2906 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2907 ID3D12VideoMotionEstimator * This,
2908 _In_ REFGUID guid,
2909 _Inout_ UINT *pDataSize,
2910 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2911
2912 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2913 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2914 ID3D12VideoMotionEstimator * This,
2915 _In_ REFGUID guid,
2916 _In_ UINT DataSize,
2917 _In_reads_bytes_opt_( DataSize ) const void *pData);
2918
2919 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2920 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2921 ID3D12VideoMotionEstimator * This,
2922 _In_ REFGUID guid,
2923 _In_opt_ const IUnknown *pData);
2924
2925 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2926 HRESULT ( STDMETHODCALLTYPE *SetName )(
2927 ID3D12VideoMotionEstimator * This,
2928 _In_z_ LPCWSTR Name);
2929
2930 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2931 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2932 ID3D12VideoMotionEstimator * This,
2933 REFIID riid,
2934 _COM_Outptr_opt_ void **ppvDevice);
2935
2936 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetDesc)
2937#if !defined(_WIN32)
2938 D3D12_VIDEO_MOTION_ESTIMATOR_DESC ( STDMETHODCALLTYPE *GetDesc )(
2939 ID3D12VideoMotionEstimator * This);
2940
2941#else
2942 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *( STDMETHODCALLTYPE *GetDesc )(
2943 ID3D12VideoMotionEstimator * This,
2944 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal);
2945
2946#endif
2947
2948 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetProtectedResourceSession)
2949 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2950 ID3D12VideoMotionEstimator * This,
2951 REFIID riid,
2952 _COM_Outptr_opt_ void **ppProtectedSession);
2953
2954 END_INTERFACE
2955 } ID3D12VideoMotionEstimatorVtbl;
2956
2957 interface ID3D12VideoMotionEstimator
2958 {
2959 CONST_VTBL struct ID3D12VideoMotionEstimatorVtbl *lpVtbl;
2960 };
2961
2962
2963
2964#ifdef COBJMACROS
2965
2966
2967#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) \
2968 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2969
2970#define ID3D12VideoMotionEstimator_AddRef(This) \
2971 ( (This)->lpVtbl -> AddRef(This) )
2972
2973#define ID3D12VideoMotionEstimator_Release(This) \
2974 ( (This)->lpVtbl -> Release(This) )
2975
2976
2977#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,pDataSize,pData) \
2978 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2979
2980#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,DataSize,pData) \
2981 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2982
2983#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,pData) \
2984 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2985
2986#define ID3D12VideoMotionEstimator_SetName(This,Name) \
2987 ( (This)->lpVtbl -> SetName(This,Name) )
2988
2989
2990#define ID3D12VideoMotionEstimator_GetDevice(This,riid,ppvDevice) \
2991 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2992
2993
2994#if !defined(_WIN32)
2995
2996#define ID3D12VideoMotionEstimator_GetDesc(This) \
2997 ( (This)->lpVtbl -> GetDesc(This) )
2998#else
2999#define ID3D12VideoMotionEstimator_GetDesc(This,RetVal) \
3000 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3001#endif
3002
3003#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3004 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3005
3006#endif /* COBJMACROS */
3007
3008
3009#endif /* C style interface */
3010
3011
3012
3013
3014#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
3015
3016
3017/* interface __MIDL_itf_d3d12video_0000_0009 */
3018/* [local] */
3019
3020typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
3021 {
3022 UINT NodeMask;
3023 DXGI_FORMAT InputFormat;
3024 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
3025 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
3026 D3D12_VIDEO_SIZE_RANGE SizeRange;
3027 } D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
3028
3029
3030
3031extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_c_ifspec;
3032extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_s_ifspec;
3033
3034#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
3035#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
3036
3037/* interface ID3D12VideoMotionVectorHeap */
3038/* [unique][local][object][uuid] */
3039
3040
3041EXTERN_C const IID IID_ID3D12VideoMotionVectorHeap;
3042
3043#if defined(__cplusplus) && !defined(CINTERFACE)
3044
3045 MIDL_INTERFACE("5BE17987-743A-4061-834B-23D22DAEA505")
3046 ID3D12VideoMotionVectorHeap : public ID3D12Pageable
3047 {
3048 public:
3049#if defined(_MSC_VER) || !defined(_WIN32)
3050 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
3051#else
3052 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
3053 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal) = 0;
3054#endif
3055
3056 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3057 REFIID riid,
3058 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3059
3060 };
3061
3062
3063#else /* C style interface */
3064
3065 typedef struct ID3D12VideoMotionVectorHeapVtbl
3066 {
3067 BEGIN_INTERFACE
3068
3069 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3070 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3071 ID3D12VideoMotionVectorHeap * This,
3072 REFIID riid,
3073 _COM_Outptr_ void **ppvObject);
3074
3075 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3076 ULONG ( STDMETHODCALLTYPE *AddRef )(
3077 ID3D12VideoMotionVectorHeap * This);
3078
3079 DECLSPEC_XFGVIRT(IUnknown, Release)
3080 ULONG ( STDMETHODCALLTYPE *Release )(
3081 ID3D12VideoMotionVectorHeap * This);
3082
3083 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3084 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3085 ID3D12VideoMotionVectorHeap * This,
3086 _In_ REFGUID guid,
3087 _Inout_ UINT *pDataSize,
3088 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3089
3090 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3091 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3092 ID3D12VideoMotionVectorHeap * This,
3093 _In_ REFGUID guid,
3094 _In_ UINT DataSize,
3095 _In_reads_bytes_opt_( DataSize ) const void *pData);
3096
3097 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3098 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3099 ID3D12VideoMotionVectorHeap * This,
3100 _In_ REFGUID guid,
3101 _In_opt_ const IUnknown *pData);
3102
3103 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3104 HRESULT ( STDMETHODCALLTYPE *SetName )(
3105 ID3D12VideoMotionVectorHeap * This,
3106 _In_z_ LPCWSTR Name);
3107
3108 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3109 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3110 ID3D12VideoMotionVectorHeap * This,
3111 REFIID riid,
3112 _COM_Outptr_opt_ void **ppvDevice);
3113
3114 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetDesc)
3115#if !defined(_WIN32)
3116 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
3117 ID3D12VideoMotionVectorHeap * This);
3118
3119#else
3120 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
3121 ID3D12VideoMotionVectorHeap * This,
3122 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal);
3123
3124#endif
3125
3126 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetProtectedResourceSession)
3127 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3128 ID3D12VideoMotionVectorHeap * This,
3129 REFIID riid,
3130 _COM_Outptr_opt_ void **ppProtectedSession);
3131
3132 END_INTERFACE
3133 } ID3D12VideoMotionVectorHeapVtbl;
3134
3135 interface ID3D12VideoMotionVectorHeap
3136 {
3137 CONST_VTBL struct ID3D12VideoMotionVectorHeapVtbl *lpVtbl;
3138 };
3139
3140
3141
3142#ifdef COBJMACROS
3143
3144
3145#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) \
3146 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3147
3148#define ID3D12VideoMotionVectorHeap_AddRef(This) \
3149 ( (This)->lpVtbl -> AddRef(This) )
3150
3151#define ID3D12VideoMotionVectorHeap_Release(This) \
3152 ( (This)->lpVtbl -> Release(This) )
3153
3154
3155#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,pDataSize,pData) \
3156 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3157
3158#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,DataSize,pData) \
3159 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3160
3161#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,pData) \
3162 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3163
3164#define ID3D12VideoMotionVectorHeap_SetName(This,Name) \
3165 ( (This)->lpVtbl -> SetName(This,Name) )
3166
3167
3168#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,ppvDevice) \
3169 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3170
3171
3172#if !defined(_WIN32)
3173
3174#define ID3D12VideoMotionVectorHeap_GetDesc(This) \
3175 ( (This)->lpVtbl -> GetDesc(This) )
3176#else
3177#define ID3D12VideoMotionVectorHeap_GetDesc(This,RetVal) \
3178 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3179#endif
3180
3181#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3182 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3183
3184#endif /* COBJMACROS */
3185
3186
3187#endif /* C style interface */
3188
3189
3190
3191
3192#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
3193
3194
3195#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
3196#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
3197
3198/* interface ID3D12VideoDevice1 */
3199/* [unique][local][object][uuid] */
3200
3201
3202EXTERN_C const IID IID_ID3D12VideoDevice1;
3203
3204#if defined(__cplusplus) && !defined(CINTERFACE)
3205
3206 MIDL_INTERFACE("981611AD-A144-4C83-9890-F30E26D658AB")
3207 ID3D12VideoDevice1 : public ID3D12VideoDevice
3208 {
3209 public:
3210 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
3211 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3212 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3213 _In_ REFIID riid,
3214 _COM_Outptr_ void **ppVideoMotionEstimator) = 0;
3215
3216 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
3217 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3218 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3219 _In_ REFIID riid,
3220 _COM_Outptr_ void **ppVideoMotionVectorHeap) = 0;
3221
3222 };
3223
3224
3225#else /* C style interface */
3226
3227 typedef struct ID3D12VideoDevice1Vtbl
3228 {
3229 BEGIN_INTERFACE
3230
3231 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3232 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3233 ID3D12VideoDevice1 * This,
3234 REFIID riid,
3235 _COM_Outptr_ void **ppvObject);
3236
3237 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3238 ULONG ( STDMETHODCALLTYPE *AddRef )(
3239 ID3D12VideoDevice1 * This);
3240
3241 DECLSPEC_XFGVIRT(IUnknown, Release)
3242 ULONG ( STDMETHODCALLTYPE *Release )(
3243 ID3D12VideoDevice1 * This);
3244
3245 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
3246 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
3247 ID3D12VideoDevice1 * This,
3248 D3D12_FEATURE_VIDEO FeatureVideo,
3249 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
3250 UINT FeatureSupportDataSize);
3251
3252 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
3253 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
3254 ID3D12VideoDevice1 * This,
3255 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
3256 _In_ REFIID riid,
3257 _COM_Outptr_ void **ppVideoDecoder);
3258
3259 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
3260 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
3261 ID3D12VideoDevice1 * This,
3262 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
3263 _In_ REFIID riid,
3264 _COM_Outptr_ void **ppVideoDecoderHeap);
3265
3266 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
3267 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
3268 ID3D12VideoDevice1 * This,
3269 UINT NodeMask,
3270 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
3271 UINT NumInputStreamDescs,
3272 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
3273 _In_ REFIID riid,
3274 _COM_Outptr_ void **ppVideoProcessor);
3275
3276 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
3277 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
3278 ID3D12VideoDevice1 * This,
3279 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3280 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3281 _In_ REFIID riid,
3282 _COM_Outptr_ void **ppVideoMotionEstimator);
3283
3284 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
3285 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
3286 ID3D12VideoDevice1 * This,
3287 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3288 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3289 _In_ REFIID riid,
3290 _COM_Outptr_ void **ppVideoMotionVectorHeap);
3291
3292 END_INTERFACE
3293 } ID3D12VideoDevice1Vtbl;
3294
3295 interface ID3D12VideoDevice1
3296 {
3297 CONST_VTBL struct ID3D12VideoDevice1Vtbl *lpVtbl;
3298 };
3299
3300
3301
3302#ifdef COBJMACROS
3303
3304
3305#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) \
3306 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3307
3308#define ID3D12VideoDevice1_AddRef(This) \
3309 ( (This)->lpVtbl -> AddRef(This) )
3310
3311#define ID3D12VideoDevice1_Release(This) \
3312 ( (This)->lpVtbl -> Release(This) )
3313
3314
3315#define ID3D12VideoDevice1_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
3316 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
3317
3318#define ID3D12VideoDevice1_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
3319 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
3320
3321#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
3322 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
3323
3324#define ID3D12VideoDevice1_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
3325 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
3326
3327
3328#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
3329 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
3330
3331#define ID3D12VideoDevice1_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
3332 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
3333
3334#endif /* COBJMACROS */
3335
3336
3337#endif /* C style interface */
3338
3339
3340
3341
3342#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
3343
3344
3345/* interface __MIDL_itf_d3d12video_0000_0011 */
3346/* [local] */
3347
3348typedef struct D3D12_RESOURCE_COORDINATE
3349 {
3350 UINT64 X;
3351 UINT Y;
3352 UINT Z;
3353 UINT SubresourceIndex;
3354 } D3D12_RESOURCE_COORDINATE;
3355
3356typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
3357 {
3358 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3359 } D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
3360
3361typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
3362 {
3363 ID3D12Resource *pInputTexture2D;
3364 UINT InputSubresourceIndex;
3365 ID3D12Resource *pReferenceTexture2D;
3366 UINT ReferenceSubresourceIndex;
3367 ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
3368 } D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
3369
3370typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
3371 {
3372 ID3D12Resource *pMotionVectorTexture2D;
3373 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
3374 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
3375
3376typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
3377 {
3378 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3379 UINT PixelWidth;
3380 UINT PixelHeight;
3381 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
3382
3383
3384
3385extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_c_ifspec;
3386extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_s_ifspec;
3387
3388#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3389#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3390
3391/* interface ID3D12VideoEncodeCommandList */
3392/* [unique][local][object][uuid] */
3393
3394
3395EXTERN_C const IID IID_ID3D12VideoEncodeCommandList;
3396
3397#if defined(__cplusplus) && !defined(CINTERFACE)
3398
3399 MIDL_INTERFACE("8455293A-0CBD-4831-9B39-FBDBAB724723")
3400 ID3D12VideoEncodeCommandList : public ID3D12CommandList
3401 {
3402 public:
3403 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
3404
3405 virtual HRESULT STDMETHODCALLTYPE Reset(
3406 _In_ ID3D12CommandAllocator *pAllocator) = 0;
3407
3408 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
3409
3410 virtual void STDMETHODCALLTYPE ResourceBarrier(
3411 _In_ UINT NumBarriers,
3412 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
3413
3414 virtual void STDMETHODCALLTYPE DiscardResource(
3415 _In_ ID3D12Resource *pResource,
3416 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
3417
3418 virtual void STDMETHODCALLTYPE BeginQuery(
3419 _In_ ID3D12QueryHeap *pQueryHeap,
3420 _In_ D3D12_QUERY_TYPE Type,
3421 _In_ UINT Index) = 0;
3422
3423 virtual void STDMETHODCALLTYPE EndQuery(
3424 _In_ ID3D12QueryHeap *pQueryHeap,
3425 _In_ D3D12_QUERY_TYPE Type,
3426 _In_ UINT Index) = 0;
3427
3428 virtual void STDMETHODCALLTYPE ResolveQueryData(
3429 _In_ ID3D12QueryHeap *pQueryHeap,
3430 _In_ D3D12_QUERY_TYPE Type,
3431 _In_ UINT StartIndex,
3432 _In_ UINT NumQueries,
3433 _In_ ID3D12Resource *pDestinationBuffer,
3434 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
3435
3436 virtual void STDMETHODCALLTYPE SetPredication(
3437 _In_opt_ ID3D12Resource *pBuffer,
3438 _In_ UINT64 AlignedBufferOffset,
3439 _In_ D3D12_PREDICATION_OP Operation) = 0;
3440
3441 virtual void STDMETHODCALLTYPE SetMarker(
3442 UINT Metadata,
3443 _In_reads_bytes_opt_(Size) const void *pData,
3444 UINT Size) = 0;
3445
3446 virtual void STDMETHODCALLTYPE BeginEvent(
3447 UINT Metadata,
3448 _In_reads_bytes_opt_(Size) const void *pData,
3449 UINT Size) = 0;
3450
3451 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
3452
3453 virtual void STDMETHODCALLTYPE EstimateMotion(
3454 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3455 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3456 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments) = 0;
3457
3458 virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
3459 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3460 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments) = 0;
3461
3462 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
3463 UINT Count,
3464 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3465 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
3466
3467 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
3468 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
3469
3470 };
3471
3472
3473#else /* C style interface */
3474
3475 typedef struct ID3D12VideoEncodeCommandListVtbl
3476 {
3477 BEGIN_INTERFACE
3478
3479 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3480 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3481 ID3D12VideoEncodeCommandList * This,
3482 REFIID riid,
3483 _COM_Outptr_ void **ppvObject);
3484
3485 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3486 ULONG ( STDMETHODCALLTYPE *AddRef )(
3487 ID3D12VideoEncodeCommandList * This);
3488
3489 DECLSPEC_XFGVIRT(IUnknown, Release)
3490 ULONG ( STDMETHODCALLTYPE *Release )(
3491 ID3D12VideoEncodeCommandList * This);
3492
3493 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3494 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3495 ID3D12VideoEncodeCommandList * This,
3496 _In_ REFGUID guid,
3497 _Inout_ UINT *pDataSize,
3498 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3499
3500 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3501 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3502 ID3D12VideoEncodeCommandList * This,
3503 _In_ REFGUID guid,
3504 _In_ UINT DataSize,
3505 _In_reads_bytes_opt_( DataSize ) const void *pData);
3506
3507 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3508 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3509 ID3D12VideoEncodeCommandList * This,
3510 _In_ REFGUID guid,
3511 _In_opt_ const IUnknown *pData);
3512
3513 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3514 HRESULT ( STDMETHODCALLTYPE *SetName )(
3515 ID3D12VideoEncodeCommandList * This,
3516 _In_z_ LPCWSTR Name);
3517
3518 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3519 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3520 ID3D12VideoEncodeCommandList * This,
3521 REFIID riid,
3522 _COM_Outptr_opt_ void **ppvDevice);
3523
3524 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
3525 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
3526 ID3D12VideoEncodeCommandList * This);
3527
3528 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
3529 HRESULT ( STDMETHODCALLTYPE *Close )(
3530 ID3D12VideoEncodeCommandList * This);
3531
3532 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
3533 HRESULT ( STDMETHODCALLTYPE *Reset )(
3534 ID3D12VideoEncodeCommandList * This,
3535 _In_ ID3D12CommandAllocator *pAllocator);
3536
3537 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
3538 void ( STDMETHODCALLTYPE *ClearState )(
3539 ID3D12VideoEncodeCommandList * This);
3540
3541 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
3542 void ( STDMETHODCALLTYPE *ResourceBarrier )(
3543 ID3D12VideoEncodeCommandList * This,
3544 _In_ UINT NumBarriers,
3545 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
3546
3547 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
3548 void ( STDMETHODCALLTYPE *DiscardResource )(
3549 ID3D12VideoEncodeCommandList * This,
3550 _In_ ID3D12Resource *pResource,
3551 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
3552
3553 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
3554 void ( STDMETHODCALLTYPE *BeginQuery )(
3555 ID3D12VideoEncodeCommandList * This,
3556 _In_ ID3D12QueryHeap *pQueryHeap,
3557 _In_ D3D12_QUERY_TYPE Type,
3558 _In_ UINT Index);
3559
3560 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
3561 void ( STDMETHODCALLTYPE *EndQuery )(
3562 ID3D12VideoEncodeCommandList * This,
3563 _In_ ID3D12QueryHeap *pQueryHeap,
3564 _In_ D3D12_QUERY_TYPE Type,
3565 _In_ UINT Index);
3566
3567 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
3568 void ( STDMETHODCALLTYPE *ResolveQueryData )(
3569 ID3D12VideoEncodeCommandList * This,
3570 _In_ ID3D12QueryHeap *pQueryHeap,
3571 _In_ D3D12_QUERY_TYPE Type,
3572 _In_ UINT StartIndex,
3573 _In_ UINT NumQueries,
3574 _In_ ID3D12Resource *pDestinationBuffer,
3575 _In_ UINT64 AlignedDestinationBufferOffset);
3576
3577 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
3578 void ( STDMETHODCALLTYPE *SetPredication )(
3579 ID3D12VideoEncodeCommandList * This,
3580 _In_opt_ ID3D12Resource *pBuffer,
3581 _In_ UINT64 AlignedBufferOffset,
3582 _In_ D3D12_PREDICATION_OP Operation);
3583
3584 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
3585 void ( STDMETHODCALLTYPE *SetMarker )(
3586 ID3D12VideoEncodeCommandList * This,
3587 UINT Metadata,
3588 _In_reads_bytes_opt_(Size) const void *pData,
3589 UINT Size);
3590
3591 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
3592 void ( STDMETHODCALLTYPE *BeginEvent )(
3593 ID3D12VideoEncodeCommandList * This,
3594 UINT Metadata,
3595 _In_reads_bytes_opt_(Size) const void *pData,
3596 UINT Size);
3597
3598 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
3599 void ( STDMETHODCALLTYPE *EndEvent )(
3600 ID3D12VideoEncodeCommandList * This);
3601
3602 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
3603 void ( STDMETHODCALLTYPE *EstimateMotion )(
3604 ID3D12VideoEncodeCommandList * This,
3605 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3606 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3607 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
3608
3609 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
3610 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
3611 ID3D12VideoEncodeCommandList * This,
3612 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3613 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
3614
3615 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
3616 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
3617 ID3D12VideoEncodeCommandList * This,
3618 UINT Count,
3619 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3620 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
3621
3622 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
3623 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
3624 ID3D12VideoEncodeCommandList * This,
3625 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
3626
3627 END_INTERFACE
3628 } ID3D12VideoEncodeCommandListVtbl;
3629
3630 interface ID3D12VideoEncodeCommandList
3631 {
3632 CONST_VTBL struct ID3D12VideoEncodeCommandListVtbl *lpVtbl;
3633 };
3634
3635
3636
3637#ifdef COBJMACROS
3638
3639
3640#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) \
3641 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3642
3643#define ID3D12VideoEncodeCommandList_AddRef(This) \
3644 ( (This)->lpVtbl -> AddRef(This) )
3645
3646#define ID3D12VideoEncodeCommandList_Release(This) \
3647 ( (This)->lpVtbl -> Release(This) )
3648
3649
3650#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
3651 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3652
3653#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
3654 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3655
3656#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,pData) \
3657 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3658
3659#define ID3D12VideoEncodeCommandList_SetName(This,Name) \
3660 ( (This)->lpVtbl -> SetName(This,Name) )
3661
3662
3663#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,ppvDevice) \
3664 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3665
3666
3667#define ID3D12VideoEncodeCommandList_GetType(This) \
3668 ( (This)->lpVtbl -> GetType(This) )
3669
3670
3671#define ID3D12VideoEncodeCommandList_Close(This) \
3672 ( (This)->lpVtbl -> Close(This) )
3673
3674#define ID3D12VideoEncodeCommandList_Reset(This,pAllocator) \
3675 ( (This)->lpVtbl -> Reset(This,pAllocator) )
3676
3677#define ID3D12VideoEncodeCommandList_ClearState(This) \
3678 ( (This)->lpVtbl -> ClearState(This) )
3679
3680#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
3681 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
3682
3683#define ID3D12VideoEncodeCommandList_DiscardResource(This,pResource,pRegion) \
3684 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
3685
3686#define ID3D12VideoEncodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
3687 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
3688
3689#define ID3D12VideoEncodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
3690 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
3691
3692#define ID3D12VideoEncodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
3693 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
3694
3695#define ID3D12VideoEncodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
3696 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
3697
3698#define ID3D12VideoEncodeCommandList_SetMarker(This,Metadata,pData,Size) \
3699 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
3700
3701#define ID3D12VideoEncodeCommandList_BeginEvent(This,Metadata,pData,Size) \
3702 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
3703
3704#define ID3D12VideoEncodeCommandList_EndEvent(This) \
3705 ( (This)->lpVtbl -> EndEvent(This) )
3706
3707#define ID3D12VideoEncodeCommandList_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
3708 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
3709
3710#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
3711 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
3712
3713#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
3714 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
3715
3716#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,pProtectedResourceSession) \
3717 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
3718
3719#endif /* COBJMACROS */
3720
3721
3722#endif /* C style interface */
3723
3724
3725
3726
3727#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
3728
3729
3730/* interface __MIDL_itf_d3d12video_0000_0012 */
3731/* [local] */
3732
3733typedef
3734enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
3735 {
3736 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0,
3737 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1
3738 } D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
3739
3740DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )
3741typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
3742 {
3743 UINT NodeIndex;
3744 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
3745 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3746 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
3747
3748typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
3749 {
3750 UINT NodeIndex;
3751 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3752 } D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
3753
3754typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
3755 {
3756 UINT NodeIndex;
3757 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3758 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
3759
3760typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
3761 {
3762 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
3763 BOOL Protected;
3764 UINT64 MemoryPoolL0Size;
3765 UINT64 MemoryPoolL1Size;
3766 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
3767
3768typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
3769 {
3770 UINT NodeMask;
3771 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
3772 UINT NumInputStreamDescs;
3773 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
3774 BOOL Protected;
3775 UINT64 MemoryPoolL0Size;
3776 UINT64 MemoryPoolL1Size;
3777 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
3778
3779typedef
3780enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
3781 {
3782 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
3783 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3784 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3785 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
3786 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
3787 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
3788 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6
3789 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
3790
3791typedef
3792enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
3793 {
3794 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
3795 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
3796 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
3797 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
3798 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
3799 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
3800 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
3801 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
3802 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
3803 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
3804 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10
3805 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
3806
3807typedef
3808enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
3809 {
3810 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0,
3811 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x1,
3812 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x2
3813 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
3814
3815DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )
3816typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
3817 {
3818 UINT NodeIndex;
3819 UINT CommandCount;
3820 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
3821
3822typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
3823 {
3824 GUID CommandId;
3825 LPCWSTR Name;
3826 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
3827 } D3D12_VIDEO_EXTENSION_COMMAND_INFO;
3828
3829typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
3830 {
3831 UINT NodeIndex;
3832 UINT CommandCount;
3833 _Field_size_full_(CommandCount) D3D12_VIDEO_EXTENSION_COMMAND_INFO *pCommandInfos;
3834 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
3835
3836typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
3837 {
3838 GUID CommandId;
3839 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3840 UINT ParameterCount;
3841 UINT ParameterPacking;
3842 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
3843
3844typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
3845 {
3846 LPCWSTR Name;
3847 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
3848 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
3849 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
3850
3851typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
3852 {
3853 GUID CommandId;
3854 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3855 UINT ParameterCount;
3856 _Field_size_full_(ParameterCount) D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO *pParameterInfos;
3857 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
3858
3859typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
3860 {
3861 UINT NodeIndex;
3862 GUID CommandId;
3863 _Field_size_bytes_full_opt_(InputDataSizeInBytes) const void *pInputData;
3864 SIZE_T InputDataSizeInBytes;
3865 _Field_size_bytes_full_opt_(OutputDataSizeInBytes) void *pOutputData;
3866 SIZE_T OutputDataSizeInBytes;
3867 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
3868
3869typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
3870 {
3871 UINT NodeIndex;
3872 GUID CommandId;
3873 _Field_size_bytes_full_(CreationParametersDataSizeInBytes) const void *pCreationParameters;
3874 SIZE_T CreationParametersSizeInBytes;
3875 UINT64 MemoryPoolL0Size;
3876 UINT64 MemoryPoolL1Size;
3877 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
3878
3879typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
3880 {
3881 UINT NodeMask;
3882 GUID CommandId;
3883 } D3D12_VIDEO_EXTENSION_COMMAND_DESC;
3884
3885
3886
3887extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_c_ifspec;
3888extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_s_ifspec;
3889
3890#ifndef __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3891#define __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3892
3893/* interface ID3D12VideoDecoder1 */
3894/* [unique][local][object][uuid] */
3895
3896
3897EXTERN_C const IID IID_ID3D12VideoDecoder1;
3898
3899#if defined(__cplusplus) && !defined(CINTERFACE)
3900
3901 MIDL_INTERFACE("79A2E5FB-CCD2-469A-9FDE-195D10951F7E")
3902 ID3D12VideoDecoder1 : public ID3D12VideoDecoder
3903 {
3904 public:
3905 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3906 REFIID riid,
3907 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3908
3909 };
3910
3911
3912#else /* C style interface */
3913
3914 typedef struct ID3D12VideoDecoder1Vtbl
3915 {
3916 BEGIN_INTERFACE
3917
3918 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3919 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3920 ID3D12VideoDecoder1 * This,
3921 REFIID riid,
3922 _COM_Outptr_ void **ppvObject);
3923
3924 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3925 ULONG ( STDMETHODCALLTYPE *AddRef )(
3926 ID3D12VideoDecoder1 * This);
3927
3928 DECLSPEC_XFGVIRT(IUnknown, Release)
3929 ULONG ( STDMETHODCALLTYPE *Release )(
3930 ID3D12VideoDecoder1 * This);
3931
3932 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3933 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3934 ID3D12VideoDecoder1 * This,
3935 _In_ REFGUID guid,
3936 _Inout_ UINT *pDataSize,
3937 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3938
3939 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3940 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3941 ID3D12VideoDecoder1 * This,
3942 _In_ REFGUID guid,
3943 _In_ UINT DataSize,
3944 _In_reads_bytes_opt_( DataSize ) const void *pData);
3945
3946 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3947 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3948 ID3D12VideoDecoder1 * This,
3949 _In_ REFGUID guid,
3950 _In_opt_ const IUnknown *pData);
3951
3952 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3953 HRESULT ( STDMETHODCALLTYPE *SetName )(
3954 ID3D12VideoDecoder1 * This,
3955 _In_z_ LPCWSTR Name);
3956
3957 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3958 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3959 ID3D12VideoDecoder1 * This,
3960 REFIID riid,
3961 _COM_Outptr_opt_ void **ppvDevice);
3962
3963 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
3964#if !defined(_WIN32)
3965 D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
3966 ID3D12VideoDecoder1 * This);
3967
3968#else
3969 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
3970 ID3D12VideoDecoder1 * This,
3971 D3D12_VIDEO_DECODER_DESC * RetVal);
3972
3973#endif
3974
3975 DECLSPEC_XFGVIRT(ID3D12VideoDecoder1, GetProtectedResourceSession)
3976 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3977 ID3D12VideoDecoder1 * This,
3978 REFIID riid,
3979 _COM_Outptr_opt_ void **ppProtectedSession);
3980
3981 END_INTERFACE
3982 } ID3D12VideoDecoder1Vtbl;
3983
3984 interface ID3D12VideoDecoder1
3985 {
3986 CONST_VTBL struct ID3D12VideoDecoder1Vtbl *lpVtbl;
3987 };
3988
3989
3990
3991#ifdef COBJMACROS
3992
3993
3994#define ID3D12VideoDecoder1_QueryInterface(This,riid,ppvObject) \
3995 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3996
3997#define ID3D12VideoDecoder1_AddRef(This) \
3998 ( (This)->lpVtbl -> AddRef(This) )
3999
4000#define ID3D12VideoDecoder1_Release(This) \
4001 ( (This)->lpVtbl -> Release(This) )
4002
4003
4004#define ID3D12VideoDecoder1_GetPrivateData(This,guid,pDataSize,pData) \
4005 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4006
4007#define ID3D12VideoDecoder1_SetPrivateData(This,guid,DataSize,pData) \
4008 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4009
4010#define ID3D12VideoDecoder1_SetPrivateDataInterface(This,guid,pData) \
4011 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4012
4013#define ID3D12VideoDecoder1_SetName(This,Name) \
4014 ( (This)->lpVtbl -> SetName(This,Name) )
4015
4016
4017#define ID3D12VideoDecoder1_GetDevice(This,riid,ppvDevice) \
4018 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4019
4020
4021#if !defined(_WIN32)
4022
4023#define ID3D12VideoDecoder1_GetDesc(This) \
4024 ( (This)->lpVtbl -> GetDesc(This) )
4025#else
4026#define ID3D12VideoDecoder1_GetDesc(This,RetVal) \
4027 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4028#endif
4029
4030
4031#define ID3D12VideoDecoder1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4032 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4033
4034#endif /* COBJMACROS */
4035
4036
4037#endif /* C style interface */
4038
4039
4040
4041
4042#endif /* __ID3D12VideoDecoder1_INTERFACE_DEFINED__ */
4043
4044
4045#ifndef __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
4046#define __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
4047
4048/* interface ID3D12VideoDecoderHeap1 */
4049/* [unique][local][object][uuid] */
4050
4051
4052EXTERN_C const IID IID_ID3D12VideoDecoderHeap1;
4053
4054#if defined(__cplusplus) && !defined(CINTERFACE)
4055
4056 MIDL_INTERFACE("DA1D98C5-539F-41B2-BF6B-1198A03B6D26")
4057 ID3D12VideoDecoderHeap1 : public ID3D12VideoDecoderHeap
4058 {
4059 public:
4060 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4061 REFIID riid,
4062 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4063
4064 };
4065
4066
4067#else /* C style interface */
4068
4069 typedef struct ID3D12VideoDecoderHeap1Vtbl
4070 {
4071 BEGIN_INTERFACE
4072
4073 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4074 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4075 ID3D12VideoDecoderHeap1 * This,
4076 REFIID riid,
4077 _COM_Outptr_ void **ppvObject);
4078
4079 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4080 ULONG ( STDMETHODCALLTYPE *AddRef )(
4081 ID3D12VideoDecoderHeap1 * This);
4082
4083 DECLSPEC_XFGVIRT(IUnknown, Release)
4084 ULONG ( STDMETHODCALLTYPE *Release )(
4085 ID3D12VideoDecoderHeap1 * This);
4086
4087 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4088 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4089 ID3D12VideoDecoderHeap1 * This,
4090 _In_ REFGUID guid,
4091 _Inout_ UINT *pDataSize,
4092 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4093
4094 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4095 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4096 ID3D12VideoDecoderHeap1 * This,
4097 _In_ REFGUID guid,
4098 _In_ UINT DataSize,
4099 _In_reads_bytes_opt_( DataSize ) const void *pData);
4100
4101 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4102 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4103 ID3D12VideoDecoderHeap1 * This,
4104 _In_ REFGUID guid,
4105 _In_opt_ const IUnknown *pData);
4106
4107 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4108 HRESULT ( STDMETHODCALLTYPE *SetName )(
4109 ID3D12VideoDecoderHeap1 * This,
4110 _In_z_ LPCWSTR Name);
4111
4112 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4113 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4114 ID3D12VideoDecoderHeap1 * This,
4115 REFIID riid,
4116 _COM_Outptr_opt_ void **ppvDevice);
4117
4118 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
4119#if !defined(_WIN32)
4120 D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
4121 ID3D12VideoDecoderHeap1 * This);
4122
4123#else
4124 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4125 ID3D12VideoDecoderHeap1 * This,
4126 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
4127
4128#endif
4129
4130 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap1, GetProtectedResourceSession)
4131 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4132 ID3D12VideoDecoderHeap1 * This,
4133 REFIID riid,
4134 _COM_Outptr_opt_ void **ppProtectedSession);
4135
4136 END_INTERFACE
4137 } ID3D12VideoDecoderHeap1Vtbl;
4138
4139 interface ID3D12VideoDecoderHeap1
4140 {
4141 CONST_VTBL struct ID3D12VideoDecoderHeap1Vtbl *lpVtbl;
4142 };
4143
4144
4145
4146#ifdef COBJMACROS
4147
4148
4149#define ID3D12VideoDecoderHeap1_QueryInterface(This,riid,ppvObject) \
4150 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4151
4152#define ID3D12VideoDecoderHeap1_AddRef(This) \
4153 ( (This)->lpVtbl -> AddRef(This) )
4154
4155#define ID3D12VideoDecoderHeap1_Release(This) \
4156 ( (This)->lpVtbl -> Release(This) )
4157
4158
4159#define ID3D12VideoDecoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
4160 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4161
4162#define ID3D12VideoDecoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
4163 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4164
4165#define ID3D12VideoDecoderHeap1_SetPrivateDataInterface(This,guid,pData) \
4166 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4167
4168#define ID3D12VideoDecoderHeap1_SetName(This,Name) \
4169 ( (This)->lpVtbl -> SetName(This,Name) )
4170
4171
4172#define ID3D12VideoDecoderHeap1_GetDevice(This,riid,ppvDevice) \
4173 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4174
4175
4176#if !defined(_WIN32)
4177
4178#define ID3D12VideoDecoderHeap1_GetDesc(This) \
4179 ( (This)->lpVtbl -> GetDesc(This) )
4180#else
4181#define ID3D12VideoDecoderHeap1_GetDesc(This,RetVal) \
4182 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4183#endif
4184
4185
4186#define ID3D12VideoDecoderHeap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4187 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4188
4189#endif /* COBJMACROS */
4190
4191
4192#endif /* C style interface */
4193
4194
4195
4196
4197#endif /* __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__ */
4198
4199
4200#ifndef __ID3D12VideoProcessor1_INTERFACE_DEFINED__
4201#define __ID3D12VideoProcessor1_INTERFACE_DEFINED__
4202
4203/* interface ID3D12VideoProcessor1 */
4204/* [unique][local][object][uuid] */
4205
4206
4207EXTERN_C const IID IID_ID3D12VideoProcessor1;
4208
4209#if defined(__cplusplus) && !defined(CINTERFACE)
4210
4211 MIDL_INTERFACE("F3CFE615-553F-425C-86D8-EE8C1B1FB01C")
4212 ID3D12VideoProcessor1 : public ID3D12VideoProcessor
4213 {
4214 public:
4215 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4216 REFIID riid,
4217 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4218
4219 };
4220
4221
4222#else /* C style interface */
4223
4224 typedef struct ID3D12VideoProcessor1Vtbl
4225 {
4226 BEGIN_INTERFACE
4227
4228 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4229 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4230 ID3D12VideoProcessor1 * This,
4231 REFIID riid,
4232 _COM_Outptr_ void **ppvObject);
4233
4234 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4235 ULONG ( STDMETHODCALLTYPE *AddRef )(
4236 ID3D12VideoProcessor1 * This);
4237
4238 DECLSPEC_XFGVIRT(IUnknown, Release)
4239 ULONG ( STDMETHODCALLTYPE *Release )(
4240 ID3D12VideoProcessor1 * This);
4241
4242 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4243 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4244 ID3D12VideoProcessor1 * This,
4245 _In_ REFGUID guid,
4246 _Inout_ UINT *pDataSize,
4247 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4248
4249 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4250 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4251 ID3D12VideoProcessor1 * This,
4252 _In_ REFGUID guid,
4253 _In_ UINT DataSize,
4254 _In_reads_bytes_opt_( DataSize ) const void *pData);
4255
4256 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4257 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4258 ID3D12VideoProcessor1 * This,
4259 _In_ REFGUID guid,
4260 _In_opt_ const IUnknown *pData);
4261
4262 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4263 HRESULT ( STDMETHODCALLTYPE *SetName )(
4264 ID3D12VideoProcessor1 * This,
4265 _In_z_ LPCWSTR Name);
4266
4267 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4268 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4269 ID3D12VideoProcessor1 * This,
4270 REFIID riid,
4271 _COM_Outptr_opt_ void **ppvDevice);
4272
4273 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
4274 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
4275 ID3D12VideoProcessor1 * This);
4276
4277 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
4278 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
4279 ID3D12VideoProcessor1 * This);
4280
4281 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
4282 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
4283 ID3D12VideoProcessor1 * This,
4284 UINT NumInputStreamDescs,
4285 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
4286
4287 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
4288#if !defined(_WIN32)
4289 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4290 ID3D12VideoProcessor1 * This);
4291
4292#else
4293 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4294 ID3D12VideoProcessor1 * This,
4295 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
4296
4297#endif
4298
4299 DECLSPEC_XFGVIRT(ID3D12VideoProcessor1, GetProtectedResourceSession)
4300 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4301 ID3D12VideoProcessor1 * This,
4302 REFIID riid,
4303 _COM_Outptr_opt_ void **ppProtectedSession);
4304
4305 END_INTERFACE
4306 } ID3D12VideoProcessor1Vtbl;
4307
4308 interface ID3D12VideoProcessor1
4309 {
4310 CONST_VTBL struct ID3D12VideoProcessor1Vtbl *lpVtbl;
4311 };
4312
4313
4314
4315#ifdef COBJMACROS
4316
4317
4318#define ID3D12VideoProcessor1_QueryInterface(This,riid,ppvObject) \
4319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4320
4321#define ID3D12VideoProcessor1_AddRef(This) \
4322 ( (This)->lpVtbl -> AddRef(This) )
4323
4324#define ID3D12VideoProcessor1_Release(This) \
4325 ( (This)->lpVtbl -> Release(This) )
4326
4327
4328#define ID3D12VideoProcessor1_GetPrivateData(This,guid,pDataSize,pData) \
4329 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4330
4331#define ID3D12VideoProcessor1_SetPrivateData(This,guid,DataSize,pData) \
4332 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4333
4334#define ID3D12VideoProcessor1_SetPrivateDataInterface(This,guid,pData) \
4335 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4336
4337#define ID3D12VideoProcessor1_SetName(This,Name) \
4338 ( (This)->lpVtbl -> SetName(This,Name) )
4339
4340
4341#define ID3D12VideoProcessor1_GetDevice(This,riid,ppvDevice) \
4342 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4343
4344
4345
4346#define ID3D12VideoProcessor1_GetNodeMask(This) \
4347 ( (This)->lpVtbl -> GetNodeMask(This) )
4348
4349#define ID3D12VideoProcessor1_GetNumInputStreamDescs(This) \
4350 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
4351
4352#define ID3D12VideoProcessor1_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
4353 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
4354#if !defined(_WIN32)
4355
4356#define ID3D12VideoProcessor1_GetOutputStreamDesc(This) \
4357 ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
4358#else
4359#define ID3D12VideoProcessor1_GetOutputStreamDesc(This,RetVal) \
4360 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
4361#endif
4362
4363
4364#define ID3D12VideoProcessor1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4365 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4366
4367#endif /* COBJMACROS */
4368
4369
4370#endif /* C style interface */
4371
4372
4373
4374
4375#endif /* __ID3D12VideoProcessor1_INTERFACE_DEFINED__ */
4376
4377
4378#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4379#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4380
4381/* interface ID3D12VideoExtensionCommand */
4382/* [unique][local][object][uuid] */
4383
4384
4385EXTERN_C const IID IID_ID3D12VideoExtensionCommand;
4386
4387#if defined(__cplusplus) && !defined(CINTERFACE)
4388
4389 MIDL_INTERFACE("554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4")
4390 ID3D12VideoExtensionCommand : public ID3D12Pageable
4391 {
4392 public:
4393#if defined(_MSC_VER) || !defined(_WIN32)
4394 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4395#else
4396 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC *STDMETHODCALLTYPE GetDesc(
4397 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal) = 0;
4398#endif
4399
4400 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4401 REFIID riid,
4402 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4403
4404 };
4405
4406
4407#else /* C style interface */
4408
4409 typedef struct ID3D12VideoExtensionCommandVtbl
4410 {
4411 BEGIN_INTERFACE
4412
4413 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4414 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4415 ID3D12VideoExtensionCommand * This,
4416 REFIID riid,
4417 _COM_Outptr_ void **ppvObject);
4418
4419 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4420 ULONG ( STDMETHODCALLTYPE *AddRef )(
4421 ID3D12VideoExtensionCommand * This);
4422
4423 DECLSPEC_XFGVIRT(IUnknown, Release)
4424 ULONG ( STDMETHODCALLTYPE *Release )(
4425 ID3D12VideoExtensionCommand * This);
4426
4427 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4428 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4429 ID3D12VideoExtensionCommand * This,
4430 _In_ REFGUID guid,
4431 _Inout_ UINT *pDataSize,
4432 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4433
4434 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4435 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4436 ID3D12VideoExtensionCommand * This,
4437 _In_ REFGUID guid,
4438 _In_ UINT DataSize,
4439 _In_reads_bytes_opt_( DataSize ) const void *pData);
4440
4441 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4442 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4443 ID3D12VideoExtensionCommand * This,
4444 _In_ REFGUID guid,
4445 _In_opt_ const IUnknown *pData);
4446
4447 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4448 HRESULT ( STDMETHODCALLTYPE *SetName )(
4449 ID3D12VideoExtensionCommand * This,
4450 _In_z_ LPCWSTR Name);
4451
4452 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4453 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4454 ID3D12VideoExtensionCommand * This,
4455 REFIID riid,
4456 _COM_Outptr_opt_ void **ppvDevice);
4457
4458 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetDesc)
4459#if !defined(_WIN32)
4460 D3D12_VIDEO_EXTENSION_COMMAND_DESC ( STDMETHODCALLTYPE *GetDesc )(
4461 ID3D12VideoExtensionCommand * This);
4462
4463#else
4464 D3D12_VIDEO_EXTENSION_COMMAND_DESC *( STDMETHODCALLTYPE *GetDesc )(
4465 ID3D12VideoExtensionCommand * This,
4466 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal);
4467
4468#endif
4469
4470 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetProtectedResourceSession)
4471 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4472 ID3D12VideoExtensionCommand * This,
4473 REFIID riid,
4474 _COM_Outptr_opt_ void **ppProtectedSession);
4475
4476 END_INTERFACE
4477 } ID3D12VideoExtensionCommandVtbl;
4478
4479 interface ID3D12VideoExtensionCommand
4480 {
4481 CONST_VTBL struct ID3D12VideoExtensionCommandVtbl *lpVtbl;
4482 };
4483
4484
4485
4486#ifdef COBJMACROS
4487
4488
4489#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) \
4490 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4491
4492#define ID3D12VideoExtensionCommand_AddRef(This) \
4493 ( (This)->lpVtbl -> AddRef(This) )
4494
4495#define ID3D12VideoExtensionCommand_Release(This) \
4496 ( (This)->lpVtbl -> Release(This) )
4497
4498
4499#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,pDataSize,pData) \
4500 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4501
4502#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,DataSize,pData) \
4503 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4504
4505#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,pData) \
4506 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4507
4508#define ID3D12VideoExtensionCommand_SetName(This,Name) \
4509 ( (This)->lpVtbl -> SetName(This,Name) )
4510
4511
4512#define ID3D12VideoExtensionCommand_GetDevice(This,riid,ppvDevice) \
4513 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4514
4515
4516#if !defined(_WIN32)
4517
4518#define ID3D12VideoExtensionCommand_GetDesc(This) \
4519 ( (This)->lpVtbl -> GetDesc(This) )
4520#else
4521#define ID3D12VideoExtensionCommand_GetDesc(This,RetVal) \
4522 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4523#endif
4524
4525#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4526 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4527
4528#endif /* COBJMACROS */
4529
4530
4531#endif /* C style interface */
4532
4533
4534
4535
4536#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
4537
4538
4539#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
4540#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
4541
4542/* interface ID3D12VideoDevice2 */
4543/* [unique][local][object][uuid] */
4544
4545
4546EXTERN_C const IID IID_ID3D12VideoDevice2;
4547
4548#if defined(__cplusplus) && !defined(CINTERFACE)
4549
4550 MIDL_INTERFACE("F019AC49-F838-4A95-9B17-579437C8F513")
4551 ID3D12VideoDevice2 : public ID3D12VideoDevice1
4552 {
4553 public:
4554 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
4555 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4556 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4557 _In_ REFIID riid,
4558 _COM_Outptr_ void **ppVideoDecoder) = 0;
4559
4560 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
4561 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4562 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4563 _In_ REFIID riid,
4564 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
4565
4566 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
4567 UINT NodeMask,
4568 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4569 UINT NumInputStreamDescs,
4570 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4571 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4572 _In_ REFIID riid,
4573 _COM_Outptr_ void **ppVideoProcessor) = 0;
4574
4575 virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
4576 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4577 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4578 SIZE_T CreationParametersDataSizeInBytes,
4579 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4580 _In_ REFIID riid,
4581 _COM_Outptr_ void **ppVideoExtensionCommand) = 0;
4582
4583 virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
4584 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4585 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4586 SIZE_T ExecutionParametersSizeInBytes,
4587 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4588 SIZE_T OutputDataSizeInBytes) = 0;
4589
4590 };
4591
4592
4593#else /* C style interface */
4594
4595 typedef struct ID3D12VideoDevice2Vtbl
4596 {
4597 BEGIN_INTERFACE
4598
4599 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4600 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4601 ID3D12VideoDevice2 * This,
4602 REFIID riid,
4603 _COM_Outptr_ void **ppvObject);
4604
4605 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4606 ULONG ( STDMETHODCALLTYPE *AddRef )(
4607 ID3D12VideoDevice2 * This);
4608
4609 DECLSPEC_XFGVIRT(IUnknown, Release)
4610 ULONG ( STDMETHODCALLTYPE *Release )(
4611 ID3D12VideoDevice2 * This);
4612
4613 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
4614 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
4615 ID3D12VideoDevice2 * This,
4616 D3D12_FEATURE_VIDEO FeatureVideo,
4617 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
4618 UINT FeatureSupportDataSize);
4619
4620 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
4621 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
4622 ID3D12VideoDevice2 * This,
4623 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4624 _In_ REFIID riid,
4625 _COM_Outptr_ void **ppVideoDecoder);
4626
4627 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
4628 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
4629 ID3D12VideoDevice2 * This,
4630 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4631 _In_ REFIID riid,
4632 _COM_Outptr_ void **ppVideoDecoderHeap);
4633
4634 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
4635 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
4636 ID3D12VideoDevice2 * This,
4637 UINT NodeMask,
4638 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4639 UINT NumInputStreamDescs,
4640 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4641 _In_ REFIID riid,
4642 _COM_Outptr_ void **ppVideoProcessor);
4643
4644 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
4645 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
4646 ID3D12VideoDevice2 * This,
4647 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
4648 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4649 _In_ REFIID riid,
4650 _COM_Outptr_ void **ppVideoMotionEstimator);
4651
4652 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
4653 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
4654 ID3D12VideoDevice2 * This,
4655 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
4656 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4657 _In_ REFIID riid,
4658 _COM_Outptr_ void **ppVideoMotionVectorHeap);
4659
4660 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
4661 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
4662 ID3D12VideoDevice2 * This,
4663 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4664 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4665 _In_ REFIID riid,
4666 _COM_Outptr_ void **ppVideoDecoder);
4667
4668 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
4669 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
4670 ID3D12VideoDevice2 * This,
4671 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4672 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4673 _In_ REFIID riid,
4674 _COM_Outptr_ void **ppVideoDecoderHeap);
4675
4676 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
4677 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
4678 ID3D12VideoDevice2 * This,
4679 UINT NodeMask,
4680 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4681 UINT NumInputStreamDescs,
4682 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4683 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4684 _In_ REFIID riid,
4685 _COM_Outptr_ void **ppVideoProcessor);
4686
4687 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
4688 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
4689 ID3D12VideoDevice2 * This,
4690 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4691 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4692 SIZE_T CreationParametersDataSizeInBytes,
4693 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4694 _In_ REFIID riid,
4695 _COM_Outptr_ void **ppVideoExtensionCommand);
4696
4697 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
4698 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4699 ID3D12VideoDevice2 * This,
4700 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4701 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4702 SIZE_T ExecutionParametersSizeInBytes,
4703 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4704 SIZE_T OutputDataSizeInBytes);
4705
4706 END_INTERFACE
4707 } ID3D12VideoDevice2Vtbl;
4708
4709 interface ID3D12VideoDevice2
4710 {
4711 CONST_VTBL struct ID3D12VideoDevice2Vtbl *lpVtbl;
4712 };
4713
4714
4715
4716#ifdef COBJMACROS
4717
4718
4719#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) \
4720 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4721
4722#define ID3D12VideoDevice2_AddRef(This) \
4723 ( (This)->lpVtbl -> AddRef(This) )
4724
4725#define ID3D12VideoDevice2_Release(This) \
4726 ( (This)->lpVtbl -> Release(This) )
4727
4728
4729#define ID3D12VideoDevice2_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
4730 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
4731
4732#define ID3D12VideoDevice2_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
4733 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
4734
4735#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
4736 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
4737
4738#define ID3D12VideoDevice2_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
4739 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
4740
4741
4742#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
4743 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
4744
4745#define ID3D12VideoDevice2_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
4746 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
4747
4748
4749#define ID3D12VideoDevice2_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
4750 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
4751
4752#define ID3D12VideoDevice2_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
4753 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
4754
4755#define ID3D12VideoDevice2_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
4756 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
4757
4758#define ID3D12VideoDevice2_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
4759 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
4760
4761#define ID3D12VideoDevice2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
4762 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
4763
4764#endif /* COBJMACROS */
4765
4766
4767#endif /* C style interface */
4768
4769
4770
4771
4772#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
4773
4774
4775#ifndef __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4776#define __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4777
4778/* interface ID3D12VideoDecodeCommandList2 */
4779/* [unique][local][object][uuid] */
4780
4781
4782EXTERN_C const IID IID_ID3D12VideoDecodeCommandList2;
4783
4784#if defined(__cplusplus) && !defined(CINTERFACE)
4785
4786 MIDL_INTERFACE("6e120880-c114-4153-8036-d247051e1729")
4787 ID3D12VideoDecodeCommandList2 : public ID3D12VideoDecodeCommandList1
4788 {
4789 public:
4790 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4791 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4792
4793 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4794 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4795 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4796 SIZE_T InitializationParametersSizeInBytes) = 0;
4797
4798 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4799 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4800 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4801 SIZE_T ExecutionParametersSizeInBytes) = 0;
4802
4803 };
4804
4805
4806#else /* C style interface */
4807
4808 typedef struct ID3D12VideoDecodeCommandList2Vtbl
4809 {
4810 BEGIN_INTERFACE
4811
4812 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4813 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4814 ID3D12VideoDecodeCommandList2 * This,
4815 REFIID riid,
4816 _COM_Outptr_ void **ppvObject);
4817
4818 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4819 ULONG ( STDMETHODCALLTYPE *AddRef )(
4820 ID3D12VideoDecodeCommandList2 * This);
4821
4822 DECLSPEC_XFGVIRT(IUnknown, Release)
4823 ULONG ( STDMETHODCALLTYPE *Release )(
4824 ID3D12VideoDecodeCommandList2 * This);
4825
4826 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4827 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4828 ID3D12VideoDecodeCommandList2 * This,
4829 _In_ REFGUID guid,
4830 _Inout_ UINT *pDataSize,
4831 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4832
4833 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4834 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4835 ID3D12VideoDecodeCommandList2 * This,
4836 _In_ REFGUID guid,
4837 _In_ UINT DataSize,
4838 _In_reads_bytes_opt_( DataSize ) const void *pData);
4839
4840 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4841 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4842 ID3D12VideoDecodeCommandList2 * This,
4843 _In_ REFGUID guid,
4844 _In_opt_ const IUnknown *pData);
4845
4846 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4847 HRESULT ( STDMETHODCALLTYPE *SetName )(
4848 ID3D12VideoDecodeCommandList2 * This,
4849 _In_z_ LPCWSTR Name);
4850
4851 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4852 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4853 ID3D12VideoDecodeCommandList2 * This,
4854 REFIID riid,
4855 _COM_Outptr_opt_ void **ppvDevice);
4856
4857 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4858 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4859 ID3D12VideoDecodeCommandList2 * This);
4860
4861 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
4862 HRESULT ( STDMETHODCALLTYPE *Close )(
4863 ID3D12VideoDecodeCommandList2 * This);
4864
4865 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
4866 HRESULT ( STDMETHODCALLTYPE *Reset )(
4867 ID3D12VideoDecodeCommandList2 * This,
4868 _In_ ID3D12CommandAllocator *pAllocator);
4869
4870 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
4871 void ( STDMETHODCALLTYPE *ClearState )(
4872 ID3D12VideoDecodeCommandList2 * This);
4873
4874 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
4875 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4876 ID3D12VideoDecodeCommandList2 * This,
4877 _In_ UINT NumBarriers,
4878 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4879
4880 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
4881 void ( STDMETHODCALLTYPE *DiscardResource )(
4882 ID3D12VideoDecodeCommandList2 * This,
4883 _In_ ID3D12Resource *pResource,
4884 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4885
4886 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
4887 void ( STDMETHODCALLTYPE *BeginQuery )(
4888 ID3D12VideoDecodeCommandList2 * This,
4889 _In_ ID3D12QueryHeap *pQueryHeap,
4890 _In_ D3D12_QUERY_TYPE Type,
4891 _In_ UINT Index);
4892
4893 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
4894 void ( STDMETHODCALLTYPE *EndQuery )(
4895 ID3D12VideoDecodeCommandList2 * This,
4896 _In_ ID3D12QueryHeap *pQueryHeap,
4897 _In_ D3D12_QUERY_TYPE Type,
4898 _In_ UINT Index);
4899
4900 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
4901 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4902 ID3D12VideoDecodeCommandList2 * This,
4903 _In_ ID3D12QueryHeap *pQueryHeap,
4904 _In_ D3D12_QUERY_TYPE Type,
4905 _In_ UINT StartIndex,
4906 _In_ UINT NumQueries,
4907 _In_ ID3D12Resource *pDestinationBuffer,
4908 _In_ UINT64 AlignedDestinationBufferOffset);
4909
4910 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
4911 void ( STDMETHODCALLTYPE *SetPredication )(
4912 ID3D12VideoDecodeCommandList2 * This,
4913 _In_opt_ ID3D12Resource *pBuffer,
4914 _In_ UINT64 AlignedBufferOffset,
4915 _In_ D3D12_PREDICATION_OP Operation);
4916
4917 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
4918 void ( STDMETHODCALLTYPE *SetMarker )(
4919 ID3D12VideoDecodeCommandList2 * This,
4920 UINT Metadata,
4921 _In_reads_bytes_opt_(Size) const void *pData,
4922 UINT Size);
4923
4924 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
4925 void ( STDMETHODCALLTYPE *BeginEvent )(
4926 ID3D12VideoDecodeCommandList2 * This,
4927 UINT Metadata,
4928 _In_reads_bytes_opt_(Size) const void *pData,
4929 UINT Size);
4930
4931 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
4932 void ( STDMETHODCALLTYPE *EndEvent )(
4933 ID3D12VideoDecodeCommandList2 * This);
4934
4935 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
4936 void ( STDMETHODCALLTYPE *DecodeFrame )(
4937 ID3D12VideoDecodeCommandList2 * This,
4938 _In_ ID3D12VideoDecoder *pDecoder,
4939 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
4940 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4941
4942 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
4943 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
4944 ID3D12VideoDecodeCommandList2 * This,
4945 UINT Count,
4946 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
4947 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
4948
4949 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
4950 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
4951 ID3D12VideoDecodeCommandList2 * This,
4952 _In_ ID3D12VideoDecoder *pDecoder,
4953 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
4954 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4955
4956 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
4957 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
4958 ID3D12VideoDecodeCommandList2 * This,
4959 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
4960
4961 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
4962 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
4963 ID3D12VideoDecodeCommandList2 * This,
4964 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4965 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4966 SIZE_T InitializationParametersSizeInBytes);
4967
4968 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
4969 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4970 ID3D12VideoDecodeCommandList2 * This,
4971 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4972 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4973 SIZE_T ExecutionParametersSizeInBytes);
4974
4975 END_INTERFACE
4976 } ID3D12VideoDecodeCommandList2Vtbl;
4977
4978 interface ID3D12VideoDecodeCommandList2
4979 {
4980 CONST_VTBL struct ID3D12VideoDecodeCommandList2Vtbl *lpVtbl;
4981 };
4982
4983
4984
4985#ifdef COBJMACROS
4986
4987
4988#define ID3D12VideoDecodeCommandList2_QueryInterface(This,riid,ppvObject) \
4989 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4990
4991#define ID3D12VideoDecodeCommandList2_AddRef(This) \
4992 ( (This)->lpVtbl -> AddRef(This) )
4993
4994#define ID3D12VideoDecodeCommandList2_Release(This) \
4995 ( (This)->lpVtbl -> Release(This) )
4996
4997
4998#define ID3D12VideoDecodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
4999 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5000
5001#define ID3D12VideoDecodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5002 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5003
5004#define ID3D12VideoDecodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
5005 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5006
5007#define ID3D12VideoDecodeCommandList2_SetName(This,Name) \
5008 ( (This)->lpVtbl -> SetName(This,Name) )
5009
5010
5011#define ID3D12VideoDecodeCommandList2_GetDevice(This,riid,ppvDevice) \
5012 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5013
5014
5015#define ID3D12VideoDecodeCommandList2_GetType(This) \
5016 ( (This)->lpVtbl -> GetType(This) )
5017
5018
5019#define ID3D12VideoDecodeCommandList2_Close(This) \
5020 ( (This)->lpVtbl -> Close(This) )
5021
5022#define ID3D12VideoDecodeCommandList2_Reset(This,pAllocator) \
5023 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5024
5025#define ID3D12VideoDecodeCommandList2_ClearState(This) \
5026 ( (This)->lpVtbl -> ClearState(This) )
5027
5028#define ID3D12VideoDecodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5029 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5030
5031#define ID3D12VideoDecodeCommandList2_DiscardResource(This,pResource,pRegion) \
5032 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5033
5034#define ID3D12VideoDecodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5035 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5036
5037#define ID3D12VideoDecodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5038 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5039
5040#define ID3D12VideoDecodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5041 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5042
5043#define ID3D12VideoDecodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5044 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5045
5046#define ID3D12VideoDecodeCommandList2_SetMarker(This,Metadata,pData,Size) \
5047 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5048
5049#define ID3D12VideoDecodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
5050 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5051
5052#define ID3D12VideoDecodeCommandList2_EndEvent(This) \
5053 ( (This)->lpVtbl -> EndEvent(This) )
5054
5055#define ID3D12VideoDecodeCommandList2_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
5056 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
5057
5058#define ID3D12VideoDecodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5059 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5060
5061
5062#define ID3D12VideoDecodeCommandList2_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
5063 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
5064
5065
5066#define ID3D12VideoDecodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5067 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5068
5069#define ID3D12VideoDecodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5070 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5071
5072#define ID3D12VideoDecodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5073 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5074
5075#endif /* COBJMACROS */
5076
5077
5078#endif /* C style interface */
5079
5080
5081
5082
5083#endif /* __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__ */
5084
5085
5086#ifndef __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
5087#define __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
5088
5089/* interface ID3D12VideoDecodeCommandList3 */
5090/* [unique][local][object][uuid] */
5091
5092
5093EXTERN_C const IID IID_ID3D12VideoDecodeCommandList3;
5094
5095#if defined(__cplusplus) && !defined(CINTERFACE)
5096
5097 MIDL_INTERFACE("2aee8c37-9562-42da-8abf-61efeb2e4513")
5098 ID3D12VideoDecodeCommandList3 : public ID3D12VideoDecodeCommandList2
5099 {
5100 public:
5101 virtual void STDMETHODCALLTYPE Barrier(
5102 UINT32 NumBarrierGroups,
5103 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
5104
5105 };
5106
5107
5108#else /* C style interface */
5109
5110 typedef struct ID3D12VideoDecodeCommandList3Vtbl
5111 {
5112 BEGIN_INTERFACE
5113
5114 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5115 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5116 ID3D12VideoDecodeCommandList3 * This,
5117 REFIID riid,
5118 _COM_Outptr_ void **ppvObject);
5119
5120 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5121 ULONG ( STDMETHODCALLTYPE *AddRef )(
5122 ID3D12VideoDecodeCommandList3 * This);
5123
5124 DECLSPEC_XFGVIRT(IUnknown, Release)
5125 ULONG ( STDMETHODCALLTYPE *Release )(
5126 ID3D12VideoDecodeCommandList3 * This);
5127
5128 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5129 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5130 ID3D12VideoDecodeCommandList3 * This,
5131 _In_ REFGUID guid,
5132 _Inout_ UINT *pDataSize,
5133 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5134
5135 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5136 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5137 ID3D12VideoDecodeCommandList3 * This,
5138 _In_ REFGUID guid,
5139 _In_ UINT DataSize,
5140 _In_reads_bytes_opt_( DataSize ) const void *pData);
5141
5142 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5143 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5144 ID3D12VideoDecodeCommandList3 * This,
5145 _In_ REFGUID guid,
5146 _In_opt_ const IUnknown *pData);
5147
5148 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5149 HRESULT ( STDMETHODCALLTYPE *SetName )(
5150 ID3D12VideoDecodeCommandList3 * This,
5151 _In_z_ LPCWSTR Name);
5152
5153 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5154 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5155 ID3D12VideoDecodeCommandList3 * This,
5156 REFIID riid,
5157 _COM_Outptr_opt_ void **ppvDevice);
5158
5159 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5160 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5161 ID3D12VideoDecodeCommandList3 * This);
5162
5163 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
5164 HRESULT ( STDMETHODCALLTYPE *Close )(
5165 ID3D12VideoDecodeCommandList3 * This);
5166
5167 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
5168 HRESULT ( STDMETHODCALLTYPE *Reset )(
5169 ID3D12VideoDecodeCommandList3 * This,
5170 _In_ ID3D12CommandAllocator *pAllocator);
5171
5172 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
5173 void ( STDMETHODCALLTYPE *ClearState )(
5174 ID3D12VideoDecodeCommandList3 * This);
5175
5176 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
5177 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5178 ID3D12VideoDecodeCommandList3 * This,
5179 _In_ UINT NumBarriers,
5180 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5181
5182 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
5183 void ( STDMETHODCALLTYPE *DiscardResource )(
5184 ID3D12VideoDecodeCommandList3 * This,
5185 _In_ ID3D12Resource *pResource,
5186 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5187
5188 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
5189 void ( STDMETHODCALLTYPE *BeginQuery )(
5190 ID3D12VideoDecodeCommandList3 * This,
5191 _In_ ID3D12QueryHeap *pQueryHeap,
5192 _In_ D3D12_QUERY_TYPE Type,
5193 _In_ UINT Index);
5194
5195 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
5196 void ( STDMETHODCALLTYPE *EndQuery )(
5197 ID3D12VideoDecodeCommandList3 * This,
5198 _In_ ID3D12QueryHeap *pQueryHeap,
5199 _In_ D3D12_QUERY_TYPE Type,
5200 _In_ UINT Index);
5201
5202 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
5203 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5204 ID3D12VideoDecodeCommandList3 * This,
5205 _In_ ID3D12QueryHeap *pQueryHeap,
5206 _In_ D3D12_QUERY_TYPE Type,
5207 _In_ UINT StartIndex,
5208 _In_ UINT NumQueries,
5209 _In_ ID3D12Resource *pDestinationBuffer,
5210 _In_ UINT64 AlignedDestinationBufferOffset);
5211
5212 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
5213 void ( STDMETHODCALLTYPE *SetPredication )(
5214 ID3D12VideoDecodeCommandList3 * This,
5215 _In_opt_ ID3D12Resource *pBuffer,
5216 _In_ UINT64 AlignedBufferOffset,
5217 _In_ D3D12_PREDICATION_OP Operation);
5218
5219 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
5220 void ( STDMETHODCALLTYPE *SetMarker )(
5221 ID3D12VideoDecodeCommandList3 * This,
5222 UINT Metadata,
5223 _In_reads_bytes_opt_(Size) const void *pData,
5224 UINT Size);
5225
5226 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
5227 void ( STDMETHODCALLTYPE *BeginEvent )(
5228 ID3D12VideoDecodeCommandList3 * This,
5229 UINT Metadata,
5230 _In_reads_bytes_opt_(Size) const void *pData,
5231 UINT Size);
5232
5233 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
5234 void ( STDMETHODCALLTYPE *EndEvent )(
5235 ID3D12VideoDecodeCommandList3 * This);
5236
5237 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
5238 void ( STDMETHODCALLTYPE *DecodeFrame )(
5239 ID3D12VideoDecodeCommandList3 * This,
5240 _In_ ID3D12VideoDecoder *pDecoder,
5241 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5242 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
5243
5244 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
5245 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5246 ID3D12VideoDecodeCommandList3 * This,
5247 UINT Count,
5248 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5249 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5250
5251 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
5252 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
5253 ID3D12VideoDecodeCommandList3 * This,
5254 _In_ ID3D12VideoDecoder *pDecoder,
5255 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
5256 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
5257
5258 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
5259 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5260 ID3D12VideoDecodeCommandList3 * This,
5261 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5262
5263 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
5264 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5265 ID3D12VideoDecodeCommandList3 * This,
5266 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5267 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5268 SIZE_T InitializationParametersSizeInBytes);
5269
5270 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
5271 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5272 ID3D12VideoDecodeCommandList3 * This,
5273 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5274 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5275 SIZE_T ExecutionParametersSizeInBytes);
5276
5277 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList3, Barrier)
5278 void ( STDMETHODCALLTYPE *Barrier )(
5279 ID3D12VideoDecodeCommandList3 * This,
5280 UINT32 NumBarrierGroups,
5281 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
5282
5283 END_INTERFACE
5284 } ID3D12VideoDecodeCommandList3Vtbl;
5285
5286 interface ID3D12VideoDecodeCommandList3
5287 {
5288 CONST_VTBL struct ID3D12VideoDecodeCommandList3Vtbl *lpVtbl;
5289 };
5290
5291
5292
5293#ifdef COBJMACROS
5294
5295
5296#define ID3D12VideoDecodeCommandList3_QueryInterface(This,riid,ppvObject) \
5297 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5298
5299#define ID3D12VideoDecodeCommandList3_AddRef(This) \
5300 ( (This)->lpVtbl -> AddRef(This) )
5301
5302#define ID3D12VideoDecodeCommandList3_Release(This) \
5303 ( (This)->lpVtbl -> Release(This) )
5304
5305
5306#define ID3D12VideoDecodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
5307 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5308
5309#define ID3D12VideoDecodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
5310 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5311
5312#define ID3D12VideoDecodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
5313 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5314
5315#define ID3D12VideoDecodeCommandList3_SetName(This,Name) \
5316 ( (This)->lpVtbl -> SetName(This,Name) )
5317
5318
5319#define ID3D12VideoDecodeCommandList3_GetDevice(This,riid,ppvDevice) \
5320 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5321
5322
5323#define ID3D12VideoDecodeCommandList3_GetType(This) \
5324 ( (This)->lpVtbl -> GetType(This) )
5325
5326
5327#define ID3D12VideoDecodeCommandList3_Close(This) \
5328 ( (This)->lpVtbl -> Close(This) )
5329
5330#define ID3D12VideoDecodeCommandList3_Reset(This,pAllocator) \
5331 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5332
5333#define ID3D12VideoDecodeCommandList3_ClearState(This) \
5334 ( (This)->lpVtbl -> ClearState(This) )
5335
5336#define ID3D12VideoDecodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
5337 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5338
5339#define ID3D12VideoDecodeCommandList3_DiscardResource(This,pResource,pRegion) \
5340 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5341
5342#define ID3D12VideoDecodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
5343 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5344
5345#define ID3D12VideoDecodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
5346 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5347
5348#define ID3D12VideoDecodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5349 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5350
5351#define ID3D12VideoDecodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5352 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5353
5354#define ID3D12VideoDecodeCommandList3_SetMarker(This,Metadata,pData,Size) \
5355 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5356
5357#define ID3D12VideoDecodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
5358 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5359
5360#define ID3D12VideoDecodeCommandList3_EndEvent(This) \
5361 ( (This)->lpVtbl -> EndEvent(This) )
5362
5363#define ID3D12VideoDecodeCommandList3_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
5364 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
5365
5366#define ID3D12VideoDecodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
5367 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5368
5369
5370#define ID3D12VideoDecodeCommandList3_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
5371 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
5372
5373
5374#define ID3D12VideoDecodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
5375 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5376
5377#define ID3D12VideoDecodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5378 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5379
5380#define ID3D12VideoDecodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5381 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5382
5383
5384#define ID3D12VideoDecodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
5385 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
5386
5387#endif /* COBJMACROS */
5388
5389
5390#endif /* C style interface */
5391
5392
5393
5394
5395#endif /* __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__ */
5396
5397
5398#ifndef __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
5399#define __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
5400
5401/* interface ID3D12VideoProcessCommandList2 */
5402/* [unique][local][object][uuid] */
5403
5404
5405EXTERN_C const IID IID_ID3D12VideoProcessCommandList2;
5406
5407#if defined(__cplusplus) && !defined(CINTERFACE)
5408
5409 MIDL_INTERFACE("db525ae4-6ad6-473c-baa7-59b2e37082e4")
5410 ID3D12VideoProcessCommandList2 : public ID3D12VideoProcessCommandList1
5411 {
5412 public:
5413 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
5414 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
5415
5416 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
5417 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5418 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5419 SIZE_T InitializationParametersSizeInBytes) = 0;
5420
5421 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
5422 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5423 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5424 SIZE_T ExecutionParametersSizeInBytes) = 0;
5425
5426 };
5427
5428
5429#else /* C style interface */
5430
5431 typedef struct ID3D12VideoProcessCommandList2Vtbl
5432 {
5433 BEGIN_INTERFACE
5434
5435 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5436 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5437 ID3D12VideoProcessCommandList2 * This,
5438 REFIID riid,
5439 _COM_Outptr_ void **ppvObject);
5440
5441 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5442 ULONG ( STDMETHODCALLTYPE *AddRef )(
5443 ID3D12VideoProcessCommandList2 * This);
5444
5445 DECLSPEC_XFGVIRT(IUnknown, Release)
5446 ULONG ( STDMETHODCALLTYPE *Release )(
5447 ID3D12VideoProcessCommandList2 * This);
5448
5449 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5450 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5451 ID3D12VideoProcessCommandList2 * This,
5452 _In_ REFGUID guid,
5453 _Inout_ UINT *pDataSize,
5454 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5455
5456 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5457 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5458 ID3D12VideoProcessCommandList2 * This,
5459 _In_ REFGUID guid,
5460 _In_ UINT DataSize,
5461 _In_reads_bytes_opt_( DataSize ) const void *pData);
5462
5463 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5464 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5465 ID3D12VideoProcessCommandList2 * This,
5466 _In_ REFGUID guid,
5467 _In_opt_ const IUnknown *pData);
5468
5469 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5470 HRESULT ( STDMETHODCALLTYPE *SetName )(
5471 ID3D12VideoProcessCommandList2 * This,
5472 _In_z_ LPCWSTR Name);
5473
5474 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5475 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5476 ID3D12VideoProcessCommandList2 * This,
5477 REFIID riid,
5478 _COM_Outptr_opt_ void **ppvDevice);
5479
5480 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5481 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5482 ID3D12VideoProcessCommandList2 * This);
5483
5484 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
5485 HRESULT ( STDMETHODCALLTYPE *Close )(
5486 ID3D12VideoProcessCommandList2 * This);
5487
5488 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
5489 HRESULT ( STDMETHODCALLTYPE *Reset )(
5490 ID3D12VideoProcessCommandList2 * This,
5491 _In_ ID3D12CommandAllocator *pAllocator);
5492
5493 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
5494 void ( STDMETHODCALLTYPE *ClearState )(
5495 ID3D12VideoProcessCommandList2 * This);
5496
5497 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
5498 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5499 ID3D12VideoProcessCommandList2 * This,
5500 _In_ UINT NumBarriers,
5501 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5502
5503 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
5504 void ( STDMETHODCALLTYPE *DiscardResource )(
5505 ID3D12VideoProcessCommandList2 * This,
5506 _In_ ID3D12Resource *pResource,
5507 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5508
5509 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
5510 void ( STDMETHODCALLTYPE *BeginQuery )(
5511 ID3D12VideoProcessCommandList2 * This,
5512 _In_ ID3D12QueryHeap *pQueryHeap,
5513 _In_ D3D12_QUERY_TYPE Type,
5514 _In_ UINT Index);
5515
5516 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
5517 void ( STDMETHODCALLTYPE *EndQuery )(
5518 ID3D12VideoProcessCommandList2 * This,
5519 _In_ ID3D12QueryHeap *pQueryHeap,
5520 _In_ D3D12_QUERY_TYPE Type,
5521 _In_ UINT Index);
5522
5523 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
5524 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5525 ID3D12VideoProcessCommandList2 * This,
5526 _In_ ID3D12QueryHeap *pQueryHeap,
5527 _In_ D3D12_QUERY_TYPE Type,
5528 _In_ UINT StartIndex,
5529 _In_ UINT NumQueries,
5530 _In_ ID3D12Resource *pDestinationBuffer,
5531 _In_ UINT64 AlignedDestinationBufferOffset);
5532
5533 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
5534 void ( STDMETHODCALLTYPE *SetPredication )(
5535 ID3D12VideoProcessCommandList2 * This,
5536 _In_opt_ ID3D12Resource *pBuffer,
5537 _In_ UINT64 AlignedBufferOffset,
5538 _In_ D3D12_PREDICATION_OP Operation);
5539
5540 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
5541 void ( STDMETHODCALLTYPE *SetMarker )(
5542 ID3D12VideoProcessCommandList2 * This,
5543 UINT Metadata,
5544 _In_reads_bytes_opt_(Size) const void *pData,
5545 UINT Size);
5546
5547 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5548 void ( STDMETHODCALLTYPE *BeginEvent )(
5549 ID3D12VideoProcessCommandList2 * This,
5550 UINT Metadata,
5551 _In_reads_bytes_opt_(Size) const void *pData,
5552 UINT Size);
5553
5554 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5555 void ( STDMETHODCALLTYPE *EndEvent )(
5556 ID3D12VideoProcessCommandList2 * This);
5557
5558 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5559 void ( STDMETHODCALLTYPE *ProcessFrames )(
5560 ID3D12VideoProcessCommandList2 * This,
5561 _In_ ID3D12VideoProcessor *pVideoProcessor,
5562 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5563 UINT NumInputStreams,
5564 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5565
5566 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5567 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5568 ID3D12VideoProcessCommandList2 * This,
5569 UINT Count,
5570 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5571 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5572
5573 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5574 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5575 ID3D12VideoProcessCommandList2 * This,
5576 _In_ ID3D12VideoProcessor *pVideoProcessor,
5577 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5578 UINT NumInputStreams,
5579 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5580
5581 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5582 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5583 ID3D12VideoProcessCommandList2 * This,
5584 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5585
5586 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5587 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5588 ID3D12VideoProcessCommandList2 * This,
5589 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5590 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5591 SIZE_T InitializationParametersSizeInBytes);
5592
5593 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5594 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5595 ID3D12VideoProcessCommandList2 * This,
5596 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5597 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5598 SIZE_T ExecutionParametersSizeInBytes);
5599
5600 END_INTERFACE
5601 } ID3D12VideoProcessCommandList2Vtbl;
5602
5603 interface ID3D12VideoProcessCommandList2
5604 {
5605 CONST_VTBL struct ID3D12VideoProcessCommandList2Vtbl *lpVtbl;
5606 };
5607
5608
5609
5610#ifdef COBJMACROS
5611
5612
5613#define ID3D12VideoProcessCommandList2_QueryInterface(This,riid,ppvObject) \
5614 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5615
5616#define ID3D12VideoProcessCommandList2_AddRef(This) \
5617 ( (This)->lpVtbl -> AddRef(This) )
5618
5619#define ID3D12VideoProcessCommandList2_Release(This) \
5620 ( (This)->lpVtbl -> Release(This) )
5621
5622
5623#define ID3D12VideoProcessCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
5624 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5625
5626#define ID3D12VideoProcessCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5627 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5628
5629#define ID3D12VideoProcessCommandList2_SetPrivateDataInterface(This,guid,pData) \
5630 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5631
5632#define ID3D12VideoProcessCommandList2_SetName(This,Name) \
5633 ( (This)->lpVtbl -> SetName(This,Name) )
5634
5635
5636#define ID3D12VideoProcessCommandList2_GetDevice(This,riid,ppvDevice) \
5637 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5638
5639
5640#define ID3D12VideoProcessCommandList2_GetType(This) \
5641 ( (This)->lpVtbl -> GetType(This) )
5642
5643
5644#define ID3D12VideoProcessCommandList2_Close(This) \
5645 ( (This)->lpVtbl -> Close(This) )
5646
5647#define ID3D12VideoProcessCommandList2_Reset(This,pAllocator) \
5648 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5649
5650#define ID3D12VideoProcessCommandList2_ClearState(This) \
5651 ( (This)->lpVtbl -> ClearState(This) )
5652
5653#define ID3D12VideoProcessCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5654 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5655
5656#define ID3D12VideoProcessCommandList2_DiscardResource(This,pResource,pRegion) \
5657 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5658
5659#define ID3D12VideoProcessCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5660 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5661
5662#define ID3D12VideoProcessCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5663 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5664
5665#define ID3D12VideoProcessCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5666 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5667
5668#define ID3D12VideoProcessCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5669 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5670
5671#define ID3D12VideoProcessCommandList2_SetMarker(This,Metadata,pData,Size) \
5672 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5673
5674#define ID3D12VideoProcessCommandList2_BeginEvent(This,Metadata,pData,Size) \
5675 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5676
5677#define ID3D12VideoProcessCommandList2_EndEvent(This) \
5678 ( (This)->lpVtbl -> EndEvent(This) )
5679
5680#define ID3D12VideoProcessCommandList2_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5681 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5682
5683#define ID3D12VideoProcessCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5684 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5685
5686
5687#define ID3D12VideoProcessCommandList2_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5688 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5689
5690
5691#define ID3D12VideoProcessCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5692 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5693
5694#define ID3D12VideoProcessCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5695 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5696
5697#define ID3D12VideoProcessCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5698 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5699
5700#endif /* COBJMACROS */
5701
5702
5703#endif /* C style interface */
5704
5705
5706
5707
5708#endif /* __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__ */
5709
5710
5711#ifndef __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
5712#define __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
5713
5714/* interface ID3D12VideoProcessCommandList3 */
5715/* [unique][local][object][uuid] */
5716
5717
5718EXTERN_C const IID IID_ID3D12VideoProcessCommandList3;
5719
5720#if defined(__cplusplus) && !defined(CINTERFACE)
5721
5722 MIDL_INTERFACE("1a0a4ca4-9f08-40ce-9558-b411fd2666ff")
5723 ID3D12VideoProcessCommandList3 : public ID3D12VideoProcessCommandList2
5724 {
5725 public:
5726 virtual void STDMETHODCALLTYPE Barrier(
5727 UINT32 NumBarrierGroups,
5728 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
5729
5730 };
5731
5732
5733#else /* C style interface */
5734
5735 typedef struct ID3D12VideoProcessCommandList3Vtbl
5736 {
5737 BEGIN_INTERFACE
5738
5739 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5740 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5741 ID3D12VideoProcessCommandList3 * This,
5742 REFIID riid,
5743 _COM_Outptr_ void **ppvObject);
5744
5745 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5746 ULONG ( STDMETHODCALLTYPE *AddRef )(
5747 ID3D12VideoProcessCommandList3 * This);
5748
5749 DECLSPEC_XFGVIRT(IUnknown, Release)
5750 ULONG ( STDMETHODCALLTYPE *Release )(
5751 ID3D12VideoProcessCommandList3 * This);
5752
5753 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5754 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5755 ID3D12VideoProcessCommandList3 * This,
5756 _In_ REFGUID guid,
5757 _Inout_ UINT *pDataSize,
5758 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5759
5760 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5761 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5762 ID3D12VideoProcessCommandList3 * This,
5763 _In_ REFGUID guid,
5764 _In_ UINT DataSize,
5765 _In_reads_bytes_opt_( DataSize ) const void *pData);
5766
5767 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5768 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5769 ID3D12VideoProcessCommandList3 * This,
5770 _In_ REFGUID guid,
5771 _In_opt_ const IUnknown *pData);
5772
5773 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5774 HRESULT ( STDMETHODCALLTYPE *SetName )(
5775 ID3D12VideoProcessCommandList3 * This,
5776 _In_z_ LPCWSTR Name);
5777
5778 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5779 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5780 ID3D12VideoProcessCommandList3 * This,
5781 REFIID riid,
5782 _COM_Outptr_opt_ void **ppvDevice);
5783
5784 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5785 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5786 ID3D12VideoProcessCommandList3 * This);
5787
5788 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
5789 HRESULT ( STDMETHODCALLTYPE *Close )(
5790 ID3D12VideoProcessCommandList3 * This);
5791
5792 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
5793 HRESULT ( STDMETHODCALLTYPE *Reset )(
5794 ID3D12VideoProcessCommandList3 * This,
5795 _In_ ID3D12CommandAllocator *pAllocator);
5796
5797 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
5798 void ( STDMETHODCALLTYPE *ClearState )(
5799 ID3D12VideoProcessCommandList3 * This);
5800
5801 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
5802 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5803 ID3D12VideoProcessCommandList3 * This,
5804 _In_ UINT NumBarriers,
5805 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5806
5807 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
5808 void ( STDMETHODCALLTYPE *DiscardResource )(
5809 ID3D12VideoProcessCommandList3 * This,
5810 _In_ ID3D12Resource *pResource,
5811 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5812
5813 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
5814 void ( STDMETHODCALLTYPE *BeginQuery )(
5815 ID3D12VideoProcessCommandList3 * This,
5816 _In_ ID3D12QueryHeap *pQueryHeap,
5817 _In_ D3D12_QUERY_TYPE Type,
5818 _In_ UINT Index);
5819
5820 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
5821 void ( STDMETHODCALLTYPE *EndQuery )(
5822 ID3D12VideoProcessCommandList3 * This,
5823 _In_ ID3D12QueryHeap *pQueryHeap,
5824 _In_ D3D12_QUERY_TYPE Type,
5825 _In_ UINT Index);
5826
5827 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
5828 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5829 ID3D12VideoProcessCommandList3 * This,
5830 _In_ ID3D12QueryHeap *pQueryHeap,
5831 _In_ D3D12_QUERY_TYPE Type,
5832 _In_ UINT StartIndex,
5833 _In_ UINT NumQueries,
5834 _In_ ID3D12Resource *pDestinationBuffer,
5835 _In_ UINT64 AlignedDestinationBufferOffset);
5836
5837 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
5838 void ( STDMETHODCALLTYPE *SetPredication )(
5839 ID3D12VideoProcessCommandList3 * This,
5840 _In_opt_ ID3D12Resource *pBuffer,
5841 _In_ UINT64 AlignedBufferOffset,
5842 _In_ D3D12_PREDICATION_OP Operation);
5843
5844 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
5845 void ( STDMETHODCALLTYPE *SetMarker )(
5846 ID3D12VideoProcessCommandList3 * This,
5847 UINT Metadata,
5848 _In_reads_bytes_opt_(Size) const void *pData,
5849 UINT Size);
5850
5851 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5852 void ( STDMETHODCALLTYPE *BeginEvent )(
5853 ID3D12VideoProcessCommandList3 * This,
5854 UINT Metadata,
5855 _In_reads_bytes_opt_(Size) const void *pData,
5856 UINT Size);
5857
5858 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5859 void ( STDMETHODCALLTYPE *EndEvent )(
5860 ID3D12VideoProcessCommandList3 * This);
5861
5862 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5863 void ( STDMETHODCALLTYPE *ProcessFrames )(
5864 ID3D12VideoProcessCommandList3 * This,
5865 _In_ ID3D12VideoProcessor *pVideoProcessor,
5866 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5867 UINT NumInputStreams,
5868 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5869
5870 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5871 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5872 ID3D12VideoProcessCommandList3 * This,
5873 UINT Count,
5874 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5875 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5876
5877 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5878 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5879 ID3D12VideoProcessCommandList3 * This,
5880 _In_ ID3D12VideoProcessor *pVideoProcessor,
5881 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5882 UINT NumInputStreams,
5883 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5884
5885 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5886 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5887 ID3D12VideoProcessCommandList3 * This,
5888 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5889
5890 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5891 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5892 ID3D12VideoProcessCommandList3 * This,
5893 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5894 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5895 SIZE_T InitializationParametersSizeInBytes);
5896
5897 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5898 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5899 ID3D12VideoProcessCommandList3 * This,
5900 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5901 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5902 SIZE_T ExecutionParametersSizeInBytes);
5903
5904 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList3, Barrier)
5905 void ( STDMETHODCALLTYPE *Barrier )(
5906 ID3D12VideoProcessCommandList3 * This,
5907 UINT32 NumBarrierGroups,
5908 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
5909
5910 END_INTERFACE
5911 } ID3D12VideoProcessCommandList3Vtbl;
5912
5913 interface ID3D12VideoProcessCommandList3
5914 {
5915 CONST_VTBL struct ID3D12VideoProcessCommandList3Vtbl *lpVtbl;
5916 };
5917
5918
5919
5920#ifdef COBJMACROS
5921
5922
5923#define ID3D12VideoProcessCommandList3_QueryInterface(This,riid,ppvObject) \
5924 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5925
5926#define ID3D12VideoProcessCommandList3_AddRef(This) \
5927 ( (This)->lpVtbl -> AddRef(This) )
5928
5929#define ID3D12VideoProcessCommandList3_Release(This) \
5930 ( (This)->lpVtbl -> Release(This) )
5931
5932
5933#define ID3D12VideoProcessCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
5934 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5935
5936#define ID3D12VideoProcessCommandList3_SetPrivateData(This,guid,DataSize,pData) \
5937 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5938
5939#define ID3D12VideoProcessCommandList3_SetPrivateDataInterface(This,guid,pData) \
5940 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5941
5942#define ID3D12VideoProcessCommandList3_SetName(This,Name) \
5943 ( (This)->lpVtbl -> SetName(This,Name) )
5944
5945
5946#define ID3D12VideoProcessCommandList3_GetDevice(This,riid,ppvDevice) \
5947 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5948
5949
5950#define ID3D12VideoProcessCommandList3_GetType(This) \
5951 ( (This)->lpVtbl -> GetType(This) )
5952
5953
5954#define ID3D12VideoProcessCommandList3_Close(This) \
5955 ( (This)->lpVtbl -> Close(This) )
5956
5957#define ID3D12VideoProcessCommandList3_Reset(This,pAllocator) \
5958 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5959
5960#define ID3D12VideoProcessCommandList3_ClearState(This) \
5961 ( (This)->lpVtbl -> ClearState(This) )
5962
5963#define ID3D12VideoProcessCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
5964 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5965
5966#define ID3D12VideoProcessCommandList3_DiscardResource(This,pResource,pRegion) \
5967 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5968
5969#define ID3D12VideoProcessCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
5970 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5971
5972#define ID3D12VideoProcessCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
5973 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5974
5975#define ID3D12VideoProcessCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5976 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5977
5978#define ID3D12VideoProcessCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5979 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5980
5981#define ID3D12VideoProcessCommandList3_SetMarker(This,Metadata,pData,Size) \
5982 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5983
5984#define ID3D12VideoProcessCommandList3_BeginEvent(This,Metadata,pData,Size) \
5985 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5986
5987#define ID3D12VideoProcessCommandList3_EndEvent(This) \
5988 ( (This)->lpVtbl -> EndEvent(This) )
5989
5990#define ID3D12VideoProcessCommandList3_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5991 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5992
5993#define ID3D12VideoProcessCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
5994 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5995
5996
5997#define ID3D12VideoProcessCommandList3_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5998 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5999
6000
6001#define ID3D12VideoProcessCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
6002 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
6003
6004#define ID3D12VideoProcessCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
6005 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
6006
6007#define ID3D12VideoProcessCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
6008 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
6009
6010
6011#define ID3D12VideoProcessCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
6012 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
6013
6014#endif /* COBJMACROS */
6015
6016
6017#endif /* C style interface */
6018
6019
6020
6021
6022#endif /* __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__ */
6023
6024
6025#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
6026#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
6027
6028/* interface ID3D12VideoEncodeCommandList1 */
6029/* [unique][local][object][uuid] */
6030
6031
6032EXTERN_C const IID IID_ID3D12VideoEncodeCommandList1;
6033
6034#if defined(__cplusplus) && !defined(CINTERFACE)
6035
6036 MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
6037 ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
6038 {
6039 public:
6040 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
6041 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6042 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
6043 SIZE_T InitializationParametersSizeInBytes) = 0;
6044
6045 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
6046 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6047 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
6048 SIZE_T ExecutionParametersSizeInBytes) = 0;
6049
6050 };
6051
6052
6053#else /* C style interface */
6054
6055 typedef struct ID3D12VideoEncodeCommandList1Vtbl
6056 {
6057 BEGIN_INTERFACE
6058
6059 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6060 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6061 ID3D12VideoEncodeCommandList1 * This,
6062 REFIID riid,
6063 _COM_Outptr_ void **ppvObject);
6064
6065 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6066 ULONG ( STDMETHODCALLTYPE *AddRef )(
6067 ID3D12VideoEncodeCommandList1 * This);
6068
6069 DECLSPEC_XFGVIRT(IUnknown, Release)
6070 ULONG ( STDMETHODCALLTYPE *Release )(
6071 ID3D12VideoEncodeCommandList1 * This);
6072
6073 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6074 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6075 ID3D12VideoEncodeCommandList1 * This,
6076 _In_ REFGUID guid,
6077 _Inout_ UINT *pDataSize,
6078 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6079
6080 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6081 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6082 ID3D12VideoEncodeCommandList1 * This,
6083 _In_ REFGUID guid,
6084 _In_ UINT DataSize,
6085 _In_reads_bytes_opt_( DataSize ) const void *pData);
6086
6087 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6088 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6089 ID3D12VideoEncodeCommandList1 * This,
6090 _In_ REFGUID guid,
6091 _In_opt_ const IUnknown *pData);
6092
6093 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6094 HRESULT ( STDMETHODCALLTYPE *SetName )(
6095 ID3D12VideoEncodeCommandList1 * This,
6096 _In_z_ LPCWSTR Name);
6097
6098 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6099 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6100 ID3D12VideoEncodeCommandList1 * This,
6101 REFIID riid,
6102 _COM_Outptr_opt_ void **ppvDevice);
6103
6104 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6105 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6106 ID3D12VideoEncodeCommandList1 * This);
6107
6108 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
6109 HRESULT ( STDMETHODCALLTYPE *Close )(
6110 ID3D12VideoEncodeCommandList1 * This);
6111
6112 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
6113 HRESULT ( STDMETHODCALLTYPE *Reset )(
6114 ID3D12VideoEncodeCommandList1 * This,
6115 _In_ ID3D12CommandAllocator *pAllocator);
6116
6117 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
6118 void ( STDMETHODCALLTYPE *ClearState )(
6119 ID3D12VideoEncodeCommandList1 * This);
6120
6121 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
6122 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6123 ID3D12VideoEncodeCommandList1 * This,
6124 _In_ UINT NumBarriers,
6125 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6126
6127 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
6128 void ( STDMETHODCALLTYPE *DiscardResource )(
6129 ID3D12VideoEncodeCommandList1 * This,
6130 _In_ ID3D12Resource *pResource,
6131 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6132
6133 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
6134 void ( STDMETHODCALLTYPE *BeginQuery )(
6135 ID3D12VideoEncodeCommandList1 * This,
6136 _In_ ID3D12QueryHeap *pQueryHeap,
6137 _In_ D3D12_QUERY_TYPE Type,
6138 _In_ UINT Index);
6139
6140 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
6141 void ( STDMETHODCALLTYPE *EndQuery )(
6142 ID3D12VideoEncodeCommandList1 * This,
6143 _In_ ID3D12QueryHeap *pQueryHeap,
6144 _In_ D3D12_QUERY_TYPE Type,
6145 _In_ UINT Index);
6146
6147 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
6148 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6149 ID3D12VideoEncodeCommandList1 * This,
6150 _In_ ID3D12QueryHeap *pQueryHeap,
6151 _In_ D3D12_QUERY_TYPE Type,
6152 _In_ UINT StartIndex,
6153 _In_ UINT NumQueries,
6154 _In_ ID3D12Resource *pDestinationBuffer,
6155 _In_ UINT64 AlignedDestinationBufferOffset);
6156
6157 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
6158 void ( STDMETHODCALLTYPE *SetPredication )(
6159 ID3D12VideoEncodeCommandList1 * This,
6160 _In_opt_ ID3D12Resource *pBuffer,
6161 _In_ UINT64 AlignedBufferOffset,
6162 _In_ D3D12_PREDICATION_OP Operation);
6163
6164 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
6165 void ( STDMETHODCALLTYPE *SetMarker )(
6166 ID3D12VideoEncodeCommandList1 * This,
6167 UINT Metadata,
6168 _In_reads_bytes_opt_(Size) const void *pData,
6169 UINT Size);
6170
6171 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
6172 void ( STDMETHODCALLTYPE *BeginEvent )(
6173 ID3D12VideoEncodeCommandList1 * This,
6174 UINT Metadata,
6175 _In_reads_bytes_opt_(Size) const void *pData,
6176 UINT Size);
6177
6178 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
6179 void ( STDMETHODCALLTYPE *EndEvent )(
6180 ID3D12VideoEncodeCommandList1 * This);
6181
6182 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
6183 void ( STDMETHODCALLTYPE *EstimateMotion )(
6184 ID3D12VideoEncodeCommandList1 * This,
6185 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
6186 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
6187 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
6188
6189 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
6190 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
6191 ID3D12VideoEncodeCommandList1 * This,
6192 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
6193 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
6194
6195 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
6196 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
6197 ID3D12VideoEncodeCommandList1 * This,
6198 UINT Count,
6199 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
6200 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
6201
6202 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
6203 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
6204 ID3D12VideoEncodeCommandList1 * This,
6205 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
6206
6207 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
6208 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
6209 ID3D12VideoEncodeCommandList1 * This,
6210 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6211 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
6212 SIZE_T InitializationParametersSizeInBytes);
6213
6214 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
6215 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
6216 ID3D12VideoEncodeCommandList1 * This,
6217 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6218 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
6219 SIZE_T ExecutionParametersSizeInBytes);
6220
6221 END_INTERFACE
6222 } ID3D12VideoEncodeCommandList1Vtbl;
6223
6224 interface ID3D12VideoEncodeCommandList1
6225 {
6226 CONST_VTBL struct ID3D12VideoEncodeCommandList1Vtbl *lpVtbl;
6227 };
6228
6229
6230
6231#ifdef COBJMACROS
6232
6233
6234#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) \
6235 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6236
6237#define ID3D12VideoEncodeCommandList1_AddRef(This) \
6238 ( (This)->lpVtbl -> AddRef(This) )
6239
6240#define ID3D12VideoEncodeCommandList1_Release(This) \
6241 ( (This)->lpVtbl -> Release(This) )
6242
6243
6244#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
6245 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6246
6247#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
6248 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6249
6250#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
6251 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6252
6253#define ID3D12VideoEncodeCommandList1_SetName(This,Name) \
6254 ( (This)->lpVtbl -> SetName(This,Name) )
6255
6256
6257#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,ppvDevice) \
6258 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6259
6260
6261#define ID3D12VideoEncodeCommandList1_GetType(This) \
6262 ( (This)->lpVtbl -> GetType(This) )
6263
6264
6265#define ID3D12VideoEncodeCommandList1_Close(This) \
6266 ( (This)->lpVtbl -> Close(This) )
6267
6268#define ID3D12VideoEncodeCommandList1_Reset(This,pAllocator) \
6269 ( (This)->lpVtbl -> Reset(This,pAllocator) )
6270
6271#define ID3D12VideoEncodeCommandList1_ClearState(This) \
6272 ( (This)->lpVtbl -> ClearState(This) )
6273
6274#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
6275 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
6276
6277#define ID3D12VideoEncodeCommandList1_DiscardResource(This,pResource,pRegion) \
6278 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
6279
6280#define ID3D12VideoEncodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
6281 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
6282
6283#define ID3D12VideoEncodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
6284 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
6285
6286#define ID3D12VideoEncodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
6287 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
6288
6289#define ID3D12VideoEncodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
6290 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
6291
6292#define ID3D12VideoEncodeCommandList1_SetMarker(This,Metadata,pData,Size) \
6293 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
6294
6295#define ID3D12VideoEncodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
6296 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
6297
6298#define ID3D12VideoEncodeCommandList1_EndEvent(This) \
6299 ( (This)->lpVtbl -> EndEvent(This) )
6300
6301#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
6302 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
6303
6304#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
6305 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
6306
6307#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
6308 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
6309
6310#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,pProtectedResourceSession) \
6311 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
6312
6313
6314#define ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
6315 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
6316
6317#define ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
6318 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
6319
6320#endif /* COBJMACROS */
6321
6322
6323#endif /* C style interface */
6324
6325
6326
6327
6328#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
6329
6330
6331/* interface __MIDL_itf_d3d12video_0000_0022 */
6332/* [local] */
6333
6334DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
6335DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
6336DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6337DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
6338DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
6339DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
6340DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6341DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6342DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
6343DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
6344DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
6345DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
6346DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);
6347DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);
6348DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);
6349DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);
6350DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);
6351DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);
6352DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);
6353DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);
6354DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);
6355DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);
6356DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
6357DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
6358DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
6359DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
6360DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
6361DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
6362DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
6363DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
6364DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4);
6365DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd);
6366DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97);
6367DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d);
6368DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac);
6369DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21);
6370DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);
6371typedef
6372enum D3D12_VIDEO_ENCODER_AV1_PROFILE
6373 {
6374 D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
6375 D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
6376 D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2
6377 } D3D12_VIDEO_ENCODER_AV1_PROFILE;
6378
6379typedef
6380enum D3D12_VIDEO_ENCODER_AV1_LEVELS
6381 {
6382 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
6383 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
6384 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
6385 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
6386 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
6387 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
6388 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
6389 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
6390 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
6391 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
6392 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
6393 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
6394 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
6395 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
6396 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
6397 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
6398 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
6399 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
6400 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
6401 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
6402 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
6403 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
6404 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
6405 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23
6406 } D3D12_VIDEO_ENCODER_AV1_LEVELS;
6407
6408typedef
6409enum D3D12_VIDEO_ENCODER_AV1_TIER
6410 {
6411 D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
6412 D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1
6413 } D3D12_VIDEO_ENCODER_AV1_TIER;
6414
6415typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
6416 {
6417 D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
6418 D3D12_VIDEO_ENCODER_AV1_TIER Tier;
6419 } D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
6420
6421typedef
6422enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
6423 {
6424 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0,
6425 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
6426 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
6427 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
6428 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
6429 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
6430 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
6431 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
6432 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
6433 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
6434 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
6435 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
6436 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
6437 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
6438 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
6439 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
6440 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
6441 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
6442 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
6443 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
6444 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
6445 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
6446 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
6447 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
6448 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
6449 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
6450 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000
6451 } D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
6452
6453DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)
6454typedef
6455enum D3D12_VIDEO_ENCODER_AV1_TX_MODE
6456 {
6457 D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
6458 D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
6459 D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2
6460 } D3D12_VIDEO_ENCODER_AV1_TX_MODE;
6461
6462typedef
6463enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS
6464 {
6465 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0,
6466 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 ) ,
6467 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST ) ,
6468 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT )
6469 } D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
6470
6471DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)
6472typedef
6473enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS
6474 {
6475 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
6476 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
6477 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
6478 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
6479 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4
6480 } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
6481
6482typedef
6483enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS
6484 {
6485 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0,
6486 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP ) ,
6487 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH ) ,
6488 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP ) ,
6489 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR ) ,
6490 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE )
6491 } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
6492
6493DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)
6494typedef
6495enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE
6496 {
6497 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
6498 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
6499 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
6500 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
6501 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4
6502 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
6503
6504typedef
6505enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE
6506 {
6507 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
6508 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
6509 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
6510 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
6511 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
6512 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
6513 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
6514 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
6515 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8
6516 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
6517
6518typedef
6519enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
6520 {
6521 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
6522 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED ) ,
6523 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q ) ,
6524 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V ) ,
6525 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H ) ,
6526 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U ) ,
6527 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V ) ,
6528 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME ) ,
6529 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP ) ,
6530 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV )
6531 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
6532
6533DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)
6534typedef
6535enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE
6536 {
6537 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
6538 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
6539 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
6540 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3
6541 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
6542
6543typedef
6544enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE
6545 {
6546 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
6547 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
6548 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
6549 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
6550 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4
6551 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
6552
6553typedef
6554enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS
6555 {
6556 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0,
6557 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
6558 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
6559 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
6560 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8
6561 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
6562
6563DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)
6564typedef
6565enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
6566 {
6567 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
6568 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
6569 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
6570 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3
6571 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
6572
6573typedef
6574enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS
6575 {
6576 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0,
6577 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY ) ,
6578 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION ) ,
6579 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM ) ,
6580 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE )
6581 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
6582
6583DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)
6584typedef
6585enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS
6586 {
6587 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
6588 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
6589 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
6590 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
6591 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
6592 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
6593 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
6594 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
6595 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
6596 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100
6597 } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
6598
6599DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)
6600typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
6601 {
6602 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
6603 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
6604 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
6605 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[ 3 ][ 3 ];
6606 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
6607 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[ 4 ];
6608 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
6609 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
6610 UINT MaxTemporalLayers;
6611 UINT MaxSpatialLayers;
6612 } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
6613
6614typedef
6615enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
6616 {
6617 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
6618 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
6619 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
6620 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3
6621 } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
6622
6623typedef
6624enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS
6625 {
6626 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0,
6627 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME ) ,
6628 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME ) ,
6629 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME ) ,
6630 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME )
6631 } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
6632
6633DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)
6634typedef
6635enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
6636 {
6637 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
6638 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1
6639 } D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
6640
6641typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT
6642 {
6643 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
6644 UINT MaxUniqueReferencesPerFrame;
6645 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
6646 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
6647 } D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
6648
6649typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION
6650 {
6651 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
6652 UINT OrderHintBitsMinus1;
6653 } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
6654
6655typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
6656 {
6657 UINT IntraDistance;
6658 UINT InterFramePeriod;
6659 } D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
6660
6661typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
6662 {
6663 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
6664 INT TransformationMatrix[ 8 ];
6665 BOOL InvalidAffineSet;
6666 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
6667
6668typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
6669 {
6670 UINT ReconstructedPictureResourceIndex;
6671 UINT TemporalLayerIndexPlus1;
6672 UINT SpatialLayerIndexPlus1;
6673 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
6674 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
6675 UINT OrderHint;
6676 UINT PictureIndex;
6677 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
6678
6679typedef
6680enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
6681 {
6682 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0,
6683 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
6684 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
6685 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
6686 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
6687 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
6688 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
6689 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
6690 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
6691 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
6692 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
6693 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
6694 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
6695 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
6696 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
6697 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000
6698 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
6699
6700DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)
6701typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
6702 {
6703 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[ 3 ];
6704 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[ 3 ];
6705 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
6706
6707typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
6708 {
6709 UINT64 EnabledFeatures;
6710 INT64 FeatureValue[ 8 ];
6711 } D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
6712
6713typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
6714 {
6715 UINT64 UpdateMap;
6716 UINT64 TemporalUpdate;
6717 UINT64 UpdateData;
6718 UINT64 NumSegments;
6719 D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[ 8 ];
6720 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
6721
6722typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP
6723 {
6724 UINT SegmentsMapByteSize;
6725 UINT8 *pSegmentsMap;
6726 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
6727
6728typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
6729 {
6730 UINT64 LoopFilterLevel[ 2 ];
6731 UINT64 LoopFilterLevelU;
6732 UINT64 LoopFilterLevelV;
6733 UINT64 LoopFilterSharpnessLevel;
6734 UINT64 LoopFilterDeltaEnabled;
6735 UINT64 UpdateRefDelta;
6736 INT64 RefDeltas[ 8 ];
6737 UINT64 UpdateModeDelta;
6738 INT64 ModeDeltas[ 2 ];
6739 } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
6740
6741typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
6742 {
6743 UINT64 DeltaLFPresent;
6744 UINT64 DeltaLFMulti;
6745 UINT64 DeltaLFRes;
6746 } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
6747
6748typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
6749 {
6750 UINT64 BaseQIndex;
6751 INT64 YDCDeltaQ;
6752 INT64 UDCDeltaQ;
6753 INT64 UACDeltaQ;
6754 INT64 VDCDeltaQ;
6755 INT64 VACDeltaQ;
6756 UINT64 UsingQMatrix;
6757 UINT64 QMY;
6758 UINT64 QMU;
6759 UINT64 QMV;
6760 } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
6761
6762typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
6763 {
6764 UINT64 DeltaQPresent;
6765 UINT64 DeltaQRes;
6766 } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
6767
6768typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
6769 {
6770 UINT64 CdefBits;
6771 UINT64 CdefDampingMinus3;
6772 UINT64 CdefYPriStrength[ 8 ];
6773 UINT64 CdefUVPriStrength[ 8 ];
6774 UINT64 CdefYSecStrength[ 8 ];
6775 UINT64 CdefUVSecStrength[ 8 ];
6776 } D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
6777
6778typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
6779 {
6780 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
6781 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
6782 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
6783 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
6784 D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
6785 D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
6786 UINT SuperResDenominator;
6787 UINT OrderHint;
6788 UINT PictureIndex;
6789 UINT TemporalLayerIndexPlus1;
6790 UINT SpatialLayerIndexPlus1;
6791 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[ 8 ];
6792 UINT ReferenceIndices[ 7 ];
6793 UINT PrimaryRefFrame;
6794 UINT RefreshFrameFlags;
6795 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
6796 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
6797 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
6798 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
6799 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
6800 UINT QPMapValuesCount;
6801 _Field_size_full_(QPMapValuesCount) INT16 *pRateControlQPMap;
6802 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
6803 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
6804 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
6805
6806typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
6807 {
6808 UINT64 RowCount;
6809 UINT64 ColCount;
6810 UINT64 RowHeights[ 64 ];
6811 UINT64 ColWidths[ 64 ];
6812 UINT64 ContextUpdateTileId;
6813 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
6814
6815typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
6816 {
6817 UINT64 CompoundPredictionType;
6818 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
6819 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
6820 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
6821 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
6822 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
6823 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
6824 UINT64 PrimaryRefFrame;
6825 UINT64 ReferenceIndices[ 7 ];
6826 } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
6827
6828typedef
6829enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
6830 {
6831 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
6832 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
6833 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
6834 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
6835 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4
6836 } D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
6837
6838typedef
6839enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
6840 {
6841 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0,
6842 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
6843 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
6844 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
6845 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
6846 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
6847 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
6848 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
6849 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
6850 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100
6851 } D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
6852
6853DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)
6854typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP
6855 {
6856 UINT ConstantQP_FullIntracodedFrame;
6857 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
6858 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
6859 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
6860
6861typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1
6862 {
6863 UINT ConstantQP_FullIntracodedFrame;
6864 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
6865 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
6866 UINT QualityVsSpeed;
6867 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
6868
6869typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR
6870 {
6871 UINT InitialQP;
6872 UINT MinQP;
6873 UINT MaxQP;
6874 UINT64 MaxFrameBitSize;
6875 UINT64 TargetBitRate;
6876 UINT64 VBVCapacity;
6877 UINT64 InitialVBVFullness;
6878 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
6879
6880typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1
6881 {
6882 UINT InitialQP;
6883 UINT MinQP;
6884 UINT MaxQP;
6885 UINT64 MaxFrameBitSize;
6886 UINT64 TargetBitRate;
6887 UINT64 VBVCapacity;
6888 UINT64 InitialVBVFullness;
6889 UINT QualityVsSpeed;
6890 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
6891
6892typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR
6893 {
6894 UINT InitialQP;
6895 UINT MinQP;
6896 UINT MaxQP;
6897 UINT64 MaxFrameBitSize;
6898 UINT64 TargetAvgBitRate;
6899 UINT64 PeakBitRate;
6900 UINT64 VBVCapacity;
6901 UINT64 InitialVBVFullness;
6902 } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
6903
6904typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1
6905 {
6906 UINT InitialQP;
6907 UINT MinQP;
6908 UINT MaxQP;
6909 UINT64 MaxFrameBitSize;
6910 UINT64 TargetAvgBitRate;
6911 UINT64 PeakBitRate;
6912 UINT64 VBVCapacity;
6913 UINT64 InitialVBVFullness;
6914 UINT QualityVsSpeed;
6915 } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
6916
6917typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR
6918 {
6919 UINT InitialQP;
6920 UINT MinQP;
6921 UINT MaxQP;
6922 UINT64 MaxFrameBitSize;
6923 UINT64 TargetAvgBitRate;
6924 UINT64 PeakBitRate;
6925 UINT ConstantQualityTarget;
6926 } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
6927
6928typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
6929 {
6930 UINT InitialQP;
6931 UINT MinQP;
6932 UINT MaxQP;
6933 UINT64 MaxFrameBitSize;
6934 UINT64 TargetAvgBitRate;
6935 UINT64 PeakBitRate;
6936 UINT ConstantQualityTarget;
6937 UINT64 VBVCapacity;
6938 UINT64 InitialVBVFullness;
6939 UINT QualityVsSpeed;
6940 } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
6941
6942typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP
6943 {
6944 UINT QualityVsSpeed;
6945 } D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
6946
6947typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
6948 {
6949 UINT DataSize;
6950 union
6951 {
6952 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP *pConfiguration_CQP;
6953 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR *pConfiguration_CBR;
6954 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR *pConfiguration_VBR;
6955 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR *pConfiguration_QVBR;
6956 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 *pConfiguration_CQP1;
6957 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 *pConfiguration_CBR1;
6958 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 *pConfiguration_VBR1;
6959 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1 *pConfiguration_QVBR1;
6960 const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP *pConfiguration_AbsoluteQPMap;
6961 } ;
6962 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
6963
6964typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL
6965 {
6966 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
6967 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
6968 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
6969 DXGI_RATIONAL TargetFrameRate;
6970 } D3D12_VIDEO_ENCODER_RATE_CONTROL;
6971
6972typedef
6973enum D3D12_VIDEO_ENCODER_CODEC
6974 {
6975 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
6976 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
6977 D3D12_VIDEO_ENCODER_CODEC_AV1 = 2
6978 } D3D12_VIDEO_ENCODER_CODEC;
6979
6980typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
6981 {
6982 UINT NodeIndex;
6983 D3D12_VIDEO_ENCODER_CODEC Codec;
6984 BOOL IsSupported;
6985 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC;
6986
6987typedef
6988enum D3D12_VIDEO_ENCODER_PROFILE_H264
6989 {
6990 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
6991 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
6992 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2
6993 } D3D12_VIDEO_ENCODER_PROFILE_H264;
6994
6995typedef
6996enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
6997 {
6998 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
6999 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
7000 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
7001 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
7002 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
7003 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
7004 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
7005 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
7006 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8
7007 } D3D12_VIDEO_ENCODER_PROFILE_HEVC;
7008
7009typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
7010 {
7011 UINT DataSize;
7012 union
7013 {
7014 D3D12_VIDEO_ENCODER_PROFILE_H264 *pH264Profile;
7015 D3D12_VIDEO_ENCODER_PROFILE_HEVC *pHEVCProfile;
7016 D3D12_VIDEO_ENCODER_AV1_PROFILE *pAV1Profile;
7017 } ;
7018 } D3D12_VIDEO_ENCODER_PROFILE_DESC;
7019
7020typedef
7021enum D3D12_VIDEO_ENCODER_LEVELS_H264
7022 {
7023 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
7024 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
7025 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
7026 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
7027 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
7028 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
7029 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
7030 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
7031 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
7032 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
7033 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
7034 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
7035 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
7036 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
7037 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
7038 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
7039 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
7040 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
7041 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
7042 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19
7043 } D3D12_VIDEO_ENCODER_LEVELS_H264;
7044
7045typedef
7046enum D3D12_VIDEO_ENCODER_TIER_HEVC
7047 {
7048 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
7049 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1
7050 } D3D12_VIDEO_ENCODER_TIER_HEVC;
7051
7052typedef
7053enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
7054 {
7055 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
7056 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
7057 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
7058 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
7059 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
7060 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
7061 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
7062 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
7063 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
7064 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
7065 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
7066 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
7067 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12
7068 } D3D12_VIDEO_ENCODER_LEVELS_HEVC;
7069
7070typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
7071 {
7072 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
7073 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
7074 } D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
7075
7076typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
7077 {
7078 UINT DataSize;
7079 union
7080 {
7081 D3D12_VIDEO_ENCODER_LEVELS_H264 *pH264LevelSetting;
7082 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC *pHEVCLevelSetting;
7083 D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS *pAV1LevelSetting;
7084 } ;
7085 } D3D12_VIDEO_ENCODER_LEVEL_SETTING;
7086
7087typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
7088 {
7089 UINT NodeIndex;
7090 D3D12_VIDEO_ENCODER_CODEC Codec;
7091 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7092 BOOL IsSupported;
7093 D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel;
7094 D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel;
7095 } D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
7096
7097typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
7098 {
7099 UINT Width;
7100 UINT Height;
7101 } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
7102
7103typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
7104 {
7105 UINT WidthRatio;
7106 UINT HeightRatio;
7107 } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
7108
7109typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
7110 {
7111 UINT NodeIndex;
7112 D3D12_VIDEO_ENCODER_CODEC Codec;
7113 UINT ResolutionRatiosCount;
7114 } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
7115
7116typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
7117 {
7118 UINT NodeIndex;
7119 D3D12_VIDEO_ENCODER_CODEC Codec;
7120 UINT ResolutionRatiosCount;
7121 BOOL IsSupported;
7122 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported;
7123 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported;
7124 UINT ResolutionWidthMultipleRequirement;
7125 UINT ResolutionHeightMultipleRequirement;
7126 _Field_size_full_(ResolutionRatiosCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC *pResolutionRatios;
7127 } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
7128
7129typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
7130 {
7131 UINT NodeIndex;
7132 D3D12_VIDEO_ENCODER_CODEC Codec;
7133 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7134 DXGI_FORMAT Format;
7135 BOOL IsSupported;
7136 } D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
7137
7138typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
7139 {
7140 UINT NodeIndex;
7141 D3D12_VIDEO_ENCODER_CODEC Codec;
7142 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode;
7143 BOOL IsSupported;
7144 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
7145
7146typedef
7147enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
7148 {
7149 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
7150 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1
7151 } D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
7152
7153typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE
7154 {
7155 UINT NodeIndex;
7156 D3D12_VIDEO_ENCODER_CODEC Codec;
7157 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7158 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7159 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode;
7160 BOOL IsSupported;
7161 } D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
7162
7163typedef
7164enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
7165 {
7166 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
7167 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
7168 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
7169 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
7170 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
7171 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
7172 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
7173 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7
7174 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
7175
7176typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
7177 {
7178 UINT NodeIndex;
7179 D3D12_VIDEO_ENCODER_CODEC Codec;
7180 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7181 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7182 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
7183 BOOL IsSupported;
7184 } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
7185
7186typedef
7187enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
7188 {
7189 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0,
7190 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
7191 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
7192 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
7193 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
7194 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
7195 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
7196 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
7197 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80
7198 } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
7199
7200DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)
7201typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
7202 {
7203 BOOL Use128SuperBlocks;
7204 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
7205 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
7206 UINT MinTileRows;
7207 UINT MaxTileRows;
7208 UINT MinTileCols;
7209 UINT MaxTileCols;
7210 UINT MinTileWidth;
7211 UINT MaxTileWidth;
7212 UINT MinTileArea;
7213 UINT MaxTileArea;
7214 UINT TileSizeBytesMinus1;
7215 } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
7216
7217typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
7218 {
7219 UINT DataSize;
7220 union
7221 {
7222 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT *pAV1Support;
7223 } ;
7224 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
7225
7226typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
7227 {
7228 UINT NodeIndex;
7229 D3D12_VIDEO_ENCODER_CODEC Codec;
7230 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7231 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7232 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
7233 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution;
7234 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport;
7235 BOOL IsSupported;
7236 } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
7237
7238typedef
7239enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
7240 {
7241 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0,
7242 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
7243 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
7244 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
7245 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8
7246 } D3D12_VIDEO_ENCODER_HEAP_FLAGS;
7247
7248DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)
7249typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
7250 {
7251 UINT NodeMask;
7252 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
7253 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
7254 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
7255 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
7256 UINT ResolutionsListCount;
7257 _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7258 } D3D12_VIDEO_ENCODER_HEAP_DESC;
7259
7260typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE
7261 {
7262 D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc;
7263 BOOL IsSupported;
7264 UINT64 MemoryPoolL0Size;
7265 UINT64 MemoryPoolL1Size;
7266 } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
7267
7268typedef
7269enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
7270 {
7271 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0,
7272 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
7273 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
7274 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
7275 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
7276 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
7277 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
7278 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
7279 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80
7280 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
7281
7282DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)
7283typedef
7284enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES
7285 {
7286 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
7287 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
7288 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
7289 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
7290 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
7291 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
7292 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6
7293 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
7294
7295typedef
7296enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS
7297 {
7298 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0,
7299 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 ) ,
7300 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 ) ,
7301 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 ) ,
7302 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 ) ,
7303 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 ) ,
7304 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 ) ,
7305 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 )
7306 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
7307
7308DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)
7309typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264
7310 {
7311 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
7312 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
7313 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
7314
7315typedef
7316enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
7317 {
7318 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0,
7319 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
7320 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
7321 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
7322 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
7323 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
7324 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
7325 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
7326 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
7327 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
7328 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
7329 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
7330 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
7331 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
7332 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
7333 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
7334 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
7335 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
7336 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
7337 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
7338 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
7339 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
7340 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
7341 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
7342 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
7343 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
7344 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
7345 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
7346 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
7347 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
7348 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
7349 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
7350 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000
7351 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
7352
7353DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)
7354typedef
7355enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE
7356 {
7357 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
7358 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
7359 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
7360 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3
7361 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
7362
7363typedef
7364enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE
7365 {
7366 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
7367 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
7368 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
7369 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3
7370 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
7371
7372typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC
7373 {
7374 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
7375 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7376 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7377 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7378 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7379 UCHAR max_transform_hierarchy_depth_inter;
7380 UCHAR max_transform_hierarchy_depth_intra;
7381 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
7382
7383typedef
7384enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
7385 {
7386 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0,
7387 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
7388 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2
7389 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
7390
7391DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)
7392typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
7393 {
7394 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
7395 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7396 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7397 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7398 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7399 UCHAR max_transform_hierarchy_depth_inter;
7400 UCHAR max_transform_hierarchy_depth_intra;
7401 UINT allowed_diff_cu_chroma_qp_offset_depth_values;
7402 UINT allowed_log2_sao_offset_scale_luma_values;
7403 UINT allowed_log2_sao_offset_scale_chroma_values;
7404 UINT allowed_log2_max_transform_skip_block_size_minus2_values;
7405 UINT allowed_chroma_qp_offset_list_len_minus1_values;
7406 UINT allowed_cb_qp_offset_list_values[ 6 ];
7407 UINT allowed_cr_qp_offset_list_values[ 6 ];
7408 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
7409 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
7410
7411typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
7412 {
7413 UINT DataSize;
7414 union
7415 {
7416 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 *pH264Support;
7417 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC *pHEVCSupport;
7418 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 *pHEVCSupport1;
7419 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT *pAV1Support;
7420 } ;
7421 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
7422
7423typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
7424 {
7425 UINT NodeIndex;
7426 D3D12_VIDEO_ENCODER_CODEC Codec;
7427 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7428 BOOL IsSupported;
7429 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits;
7430 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
7431
7432typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264
7433 {
7434 UINT MaxL0ReferencesForP;
7435 UINT MaxL0ReferencesForB;
7436 UINT MaxL1ReferencesForB;
7437 UINT MaxLongTermReferences;
7438 UINT MaxDPBCapacity;
7439 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
7440
7441typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC
7442 {
7443 UINT MaxL0ReferencesForP;
7444 UINT MaxL0ReferencesForB;
7445 UINT MaxL1ReferencesForB;
7446 UINT MaxLongTermReferences;
7447 UINT MaxDPBCapacity;
7448 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
7449
7450typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
7451 {
7452 UINT DataSize;
7453 union
7454 {
7455 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 *pH264Support;
7456 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC *pHEVCSupport;
7457 D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT *pAV1Support;
7458 } ;
7459 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
7460
7461typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
7462 {
7463 UINT NodeIndex;
7464 D3D12_VIDEO_ENCODER_CODEC Codec;
7465 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7466 BOOL IsSupported;
7467 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport;
7468 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
7469
7470typedef
7471enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
7472 {
7473 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0,
7474 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
7475 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
7476 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
7477 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
7478 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
7479 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
7480 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
7481 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
7482 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
7483 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
7484 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
7485 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
7486 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
7487 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
7488 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
7489 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
7490 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
7491 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
7492 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
7493 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
7494 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
7495 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
7496 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
7497 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000
7498 } D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
7499
7500DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)
7501typedef
7502enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
7503 {
7504 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0,
7505 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
7506 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
7507 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
7508 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8
7509 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
7510
7511DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)
7512typedef
7513enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES
7514 {
7515 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
7516 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
7517 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2
7518 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
7519
7520typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264
7521 {
7522 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
7523 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
7524 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
7525 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
7526
7527typedef
7528enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
7529 {
7530 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0,
7531 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
7532 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
7533 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
7534 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
7535 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
7536 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
7537 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
7538 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
7539 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
7540 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
7541 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
7542 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
7543 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
7544 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
7545 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
7546 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
7547 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000
7548 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
7549
7550DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)
7551typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC
7552 {
7553 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
7554 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7555 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7556 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7557 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7558 UCHAR max_transform_hierarchy_depth_inter;
7559 UCHAR max_transform_hierarchy_depth_intra;
7560 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
7561
7562typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
7563 {
7564 UINT DataSize;
7565 union
7566 {
7567 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 *pH264Config;
7568 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC *pHEVCConfig;
7569 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION *pAV1Config;
7570 } ;
7571 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
7572
7573typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
7574 {
7575 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
7576 UINT IntraRefreshDuration;
7577 } D3D12_VIDEO_ENCODER_INTRA_REFRESH;
7578
7579typedef
7580enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
7581 {
7582 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
7583 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
7584 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
7585 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
7586 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4
7587 } D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
7588
7589typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
7590 {
7591 UINT MaxSubregionsNumber;
7592 UINT MaxIntraRefreshFrameDuration;
7593 UINT SubregionBlockPixelsSize;
7594 UINT QPMapRegionPixelsSize;
7595 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
7596
7597typedef
7598enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
7599 {
7600 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0,
7601 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
7602 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
7603 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
7604 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
7605 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
7606 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
7607 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
7608 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
7609 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
7610 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
7611 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
7612 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
7613 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
7614 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000
7615 } D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
7616
7617DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)
7618typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
7619 {
7620 UINT GOPLength;
7621 UINT PPicturePeriod;
7622 UCHAR pic_order_cnt_type;
7623 UCHAR log2_max_frame_num_minus4;
7624 UCHAR log2_max_pic_order_cnt_lsb_minus4;
7625 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
7626
7627typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
7628 {
7629 UINT GOPLength;
7630 UINT PPicturePeriod;
7631 UCHAR log2_max_pic_order_cnt_lsb_minus4;
7632 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
7633
7634typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
7635 {
7636 UINT DataSize;
7637 union
7638 {
7639 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 *pH264GroupOfPictures;
7640 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC *pHEVCGroupOfPictures;
7641 D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE *pAV1SequenceStructure;
7642 } ;
7643 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
7644
7645typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
7646 {
7647 UINT NodeIndex;
7648 D3D12_VIDEO_ENCODER_CODEC Codec;
7649 DXGI_FORMAT InputFormat;
7650 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7651 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
7652 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
7653 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
7654 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
7655 UINT ResolutionsListCount;
7656 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7657 UINT MaxReferenceFramesInDPB;
7658 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
7659 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
7660 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
7661 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
7662 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
7663 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
7664
7665typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
7666 {
7667 union
7668 {
7669 UINT MaxBytesPerSlice;
7670 UINT NumberOfCodingUnitsPerSlice;
7671 UINT NumberOfRowsPerSlice;
7672 UINT NumberOfSlicesPerFrame;
7673 } ;
7674 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
7675
7676typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
7677 {
7678 UINT DataSize;
7679 union
7680 {
7681 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_H264;
7682 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_HEVC;
7683 const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES *pTilesPartition_AV1;
7684 } ;
7685 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
7686
7687typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
7688 {
7689 UINT NodeIndex;
7690 D3D12_VIDEO_ENCODER_CODEC Codec;
7691 DXGI_FORMAT InputFormat;
7692 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7693 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
7694 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
7695 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
7696 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
7697 UINT ResolutionsListCount;
7698 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7699 UINT MaxReferenceFramesInDPB;
7700 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
7701 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
7702 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
7703 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
7704 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
7705 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
7706 UINT MaxQualityVsSpeed;
7707 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
7708
7709typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
7710 {
7711 UINT NodeIndex;
7712 D3D12_VIDEO_ENCODER_CODEC Codec;
7713 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7714 DXGI_FORMAT InputFormat;
7715 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
7716 BOOL IsSupported;
7717 UINT CompressedBitstreamBufferAccessAlignment;
7718 UINT EncoderMetadataBufferAccessAlignment;
7719 UINT MaxEncoderOutputMetadataBufferSize;
7720 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
7721
7722typedef
7723enum D3D12_VIDEO_ENCODER_FLAGS
7724 {
7725 D3D12_VIDEO_ENCODER_FLAG_NONE = 0
7726 } D3D12_VIDEO_ENCODER_FLAGS;
7727
7728DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)
7729typedef struct D3D12_VIDEO_ENCODER_DESC
7730 {
7731 UINT NodeMask;
7732 D3D12_VIDEO_ENCODER_FLAGS Flags;
7733 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
7734 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
7735 DXGI_FORMAT InputFormat;
7736 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7737 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
7738 } D3D12_VIDEO_ENCODER_DESC;
7739
7740
7741
7742extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_c_ifspec;
7743extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_s_ifspec;
7744
7745#ifndef __ID3D12VideoEncoder_INTERFACE_DEFINED__
7746#define __ID3D12VideoEncoder_INTERFACE_DEFINED__
7747
7748/* interface ID3D12VideoEncoder */
7749/* [unique][local][object][uuid] */
7750
7751
7752EXTERN_C const IID IID_ID3D12VideoEncoder;
7753
7754#if defined(__cplusplus) && !defined(CINTERFACE)
7755
7756 MIDL_INTERFACE("2E0D212D-8DF9-44A6-A770-BB289B182737")
7757 ID3D12VideoEncoder : public ID3D12Pageable
7758 {
7759 public:
7760 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
7761
7762 virtual D3D12_VIDEO_ENCODER_FLAGS STDMETHODCALLTYPE GetEncoderFlags( void) = 0;
7763
7764 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
7765
7766 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
7767 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
7768
7769 virtual HRESULT STDMETHODCALLTYPE GetCodecConfiguration(
7770 _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig) = 0;
7771
7772 virtual DXGI_FORMAT STDMETHODCALLTYPE GetInputFormat( void) = 0;
7773
7774 virtual D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE STDMETHODCALLTYPE GetMaxMotionEstimationPrecision( void) = 0;
7775
7776 };
7777
7778
7779#else /* C style interface */
7780
7781 typedef struct ID3D12VideoEncoderVtbl
7782 {
7783 BEGIN_INTERFACE
7784
7785 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7786 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7787 ID3D12VideoEncoder * This,
7788 REFIID riid,
7789 _COM_Outptr_ void **ppvObject);
7790
7791 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7792 ULONG ( STDMETHODCALLTYPE *AddRef )(
7793 ID3D12VideoEncoder * This);
7794
7795 DECLSPEC_XFGVIRT(IUnknown, Release)
7796 ULONG ( STDMETHODCALLTYPE *Release )(
7797 ID3D12VideoEncoder * This);
7798
7799 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7800 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7801 ID3D12VideoEncoder * This,
7802 _In_ REFGUID guid,
7803 _Inout_ UINT *pDataSize,
7804 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7805
7806 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7807 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7808 ID3D12VideoEncoder * This,
7809 _In_ REFGUID guid,
7810 _In_ UINT DataSize,
7811 _In_reads_bytes_opt_( DataSize ) const void *pData);
7812
7813 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7814 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7815 ID3D12VideoEncoder * This,
7816 _In_ REFGUID guid,
7817 _In_opt_ const IUnknown *pData);
7818
7819 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7820 HRESULT ( STDMETHODCALLTYPE *SetName )(
7821 ID3D12VideoEncoder * This,
7822 _In_z_ LPCWSTR Name);
7823
7824 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7825 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7826 ID3D12VideoEncoder * This,
7827 REFIID riid,
7828 _COM_Outptr_opt_ void **ppvDevice);
7829
7830 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetNodeMask)
7831 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
7832 ID3D12VideoEncoder * This);
7833
7834 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetEncoderFlags)
7835 D3D12_VIDEO_ENCODER_FLAGS ( STDMETHODCALLTYPE *GetEncoderFlags )(
7836 ID3D12VideoEncoder * This);
7837
7838 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodec)
7839 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
7840 ID3D12VideoEncoder * This);
7841
7842 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecProfile)
7843 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
7844 ID3D12VideoEncoder * This,
7845 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
7846
7847 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecConfiguration)
7848 HRESULT ( STDMETHODCALLTYPE *GetCodecConfiguration )(
7849 ID3D12VideoEncoder * This,
7850 _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
7851
7852 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetInputFormat)
7853 DXGI_FORMAT ( STDMETHODCALLTYPE *GetInputFormat )(
7854 ID3D12VideoEncoder * This);
7855
7856 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetMaxMotionEstimationPrecision)
7857 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE ( STDMETHODCALLTYPE *GetMaxMotionEstimationPrecision )(
7858 ID3D12VideoEncoder * This);
7859
7860 END_INTERFACE
7861 } ID3D12VideoEncoderVtbl;
7862
7863 interface ID3D12VideoEncoder
7864 {
7865 CONST_VTBL struct ID3D12VideoEncoderVtbl *lpVtbl;
7866 };
7867
7868
7869
7870#ifdef COBJMACROS
7871
7872
7873#define ID3D12VideoEncoder_QueryInterface(This,riid,ppvObject) \
7874 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7875
7876#define ID3D12VideoEncoder_AddRef(This) \
7877 ( (This)->lpVtbl -> AddRef(This) )
7878
7879#define ID3D12VideoEncoder_Release(This) \
7880 ( (This)->lpVtbl -> Release(This) )
7881
7882
7883#define ID3D12VideoEncoder_GetPrivateData(This,guid,pDataSize,pData) \
7884 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7885
7886#define ID3D12VideoEncoder_SetPrivateData(This,guid,DataSize,pData) \
7887 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7888
7889#define ID3D12VideoEncoder_SetPrivateDataInterface(This,guid,pData) \
7890 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7891
7892#define ID3D12VideoEncoder_SetName(This,Name) \
7893 ( (This)->lpVtbl -> SetName(This,Name) )
7894
7895
7896#define ID3D12VideoEncoder_GetDevice(This,riid,ppvDevice) \
7897 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7898
7899
7900
7901#define ID3D12VideoEncoder_GetNodeMask(This) \
7902 ( (This)->lpVtbl -> GetNodeMask(This) )
7903
7904#define ID3D12VideoEncoder_GetEncoderFlags(This) \
7905 ( (This)->lpVtbl -> GetEncoderFlags(This) )
7906
7907#define ID3D12VideoEncoder_GetCodec(This) \
7908 ( (This)->lpVtbl -> GetCodec(This) )
7909
7910#define ID3D12VideoEncoder_GetCodecProfile(This,dstProfile) \
7911 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
7912
7913#define ID3D12VideoEncoder_GetCodecConfiguration(This,dstCodecConfig) \
7914 ( (This)->lpVtbl -> GetCodecConfiguration(This,dstCodecConfig) )
7915
7916#define ID3D12VideoEncoder_GetInputFormat(This) \
7917 ( (This)->lpVtbl -> GetInputFormat(This) )
7918
7919#define ID3D12VideoEncoder_GetMaxMotionEstimationPrecision(This) \
7920 ( (This)->lpVtbl -> GetMaxMotionEstimationPrecision(This) )
7921
7922#endif /* COBJMACROS */
7923
7924
7925#endif /* C style interface */
7926
7927
7928
7929
7930#endif /* __ID3D12VideoEncoder_INTERFACE_DEFINED__ */
7931
7932
7933#ifndef __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
7934#define __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
7935
7936/* interface ID3D12VideoEncoderHeap */
7937/* [unique][local][object][uuid] */
7938
7939
7940EXTERN_C const IID IID_ID3D12VideoEncoderHeap;
7941
7942#if defined(__cplusplus) && !defined(CINTERFACE)
7943
7944 MIDL_INTERFACE("22B35D96-876A-44C0-B25E-FB8C9C7F1C4A")
7945 ID3D12VideoEncoderHeap : public ID3D12Pageable
7946 {
7947 public:
7948 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
7949
7950 virtual D3D12_VIDEO_ENCODER_HEAP_FLAGS STDMETHODCALLTYPE GetEncoderHeapFlags( void) = 0;
7951
7952 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
7953
7954 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
7955 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
7956
7957 virtual HRESULT STDMETHODCALLTYPE GetCodecLevel(
7958 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel) = 0;
7959
7960 virtual UINT STDMETHODCALLTYPE GetResolutionListCount( void) = 0;
7961
7962 virtual HRESULT STDMETHODCALLTYPE GetResolutionList(
7963 const UINT ResolutionsListCount,
7964 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList) = 0;
7965
7966 };
7967
7968
7969#else /* C style interface */
7970
7971 typedef struct ID3D12VideoEncoderHeapVtbl
7972 {
7973 BEGIN_INTERFACE
7974
7975 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7976 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7977 ID3D12VideoEncoderHeap * This,
7978 REFIID riid,
7979 _COM_Outptr_ void **ppvObject);
7980
7981 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7982 ULONG ( STDMETHODCALLTYPE *AddRef )(
7983 ID3D12VideoEncoderHeap * This);
7984
7985 DECLSPEC_XFGVIRT(IUnknown, Release)
7986 ULONG ( STDMETHODCALLTYPE *Release )(
7987 ID3D12VideoEncoderHeap * This);
7988
7989 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7990 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7991 ID3D12VideoEncoderHeap * This,
7992 _In_ REFGUID guid,
7993 _Inout_ UINT *pDataSize,
7994 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7995
7996 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7997 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7998 ID3D12VideoEncoderHeap * This,
7999 _In_ REFGUID guid,
8000 _In_ UINT DataSize,
8001 _In_reads_bytes_opt_( DataSize ) const void *pData);
8002
8003 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8004 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8005 ID3D12VideoEncoderHeap * This,
8006 _In_ REFGUID guid,
8007 _In_opt_ const IUnknown *pData);
8008
8009 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8010 HRESULT ( STDMETHODCALLTYPE *SetName )(
8011 ID3D12VideoEncoderHeap * This,
8012 _In_z_ LPCWSTR Name);
8013
8014 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8015 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8016 ID3D12VideoEncoderHeap * This,
8017 REFIID riid,
8018 _COM_Outptr_opt_ void **ppvDevice);
8019
8020 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
8021 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
8022 ID3D12VideoEncoderHeap * This);
8023
8024 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
8025 D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
8026 ID3D12VideoEncoderHeap * This);
8027
8028 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
8029 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
8030 ID3D12VideoEncoderHeap * This);
8031
8032 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
8033 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
8034 ID3D12VideoEncoderHeap * This,
8035 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
8036
8037 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
8038 HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
8039 ID3D12VideoEncoderHeap * This,
8040 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
8041
8042 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
8043 UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
8044 ID3D12VideoEncoderHeap * This);
8045
8046 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
8047 HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
8048 ID3D12VideoEncoderHeap * This,
8049 const UINT ResolutionsListCount,
8050 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
8051
8052 END_INTERFACE
8053 } ID3D12VideoEncoderHeapVtbl;
8054
8055 interface ID3D12VideoEncoderHeap
8056 {
8057 CONST_VTBL struct ID3D12VideoEncoderHeapVtbl *lpVtbl;
8058 };
8059
8060
8061
8062#ifdef COBJMACROS
8063
8064
8065#define ID3D12VideoEncoderHeap_QueryInterface(This,riid,ppvObject) \
8066 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8067
8068#define ID3D12VideoEncoderHeap_AddRef(This) \
8069 ( (This)->lpVtbl -> AddRef(This) )
8070
8071#define ID3D12VideoEncoderHeap_Release(This) \
8072 ( (This)->lpVtbl -> Release(This) )
8073
8074
8075#define ID3D12VideoEncoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
8076 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8077
8078#define ID3D12VideoEncoderHeap_SetPrivateData(This,guid,DataSize,pData) \
8079 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8080
8081#define ID3D12VideoEncoderHeap_SetPrivateDataInterface(This,guid,pData) \
8082 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8083
8084#define ID3D12VideoEncoderHeap_SetName(This,Name) \
8085 ( (This)->lpVtbl -> SetName(This,Name) )
8086
8087
8088#define ID3D12VideoEncoderHeap_GetDevice(This,riid,ppvDevice) \
8089 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8090
8091
8092
8093#define ID3D12VideoEncoderHeap_GetNodeMask(This) \
8094 ( (This)->lpVtbl -> GetNodeMask(This) )
8095
8096#define ID3D12VideoEncoderHeap_GetEncoderHeapFlags(This) \
8097 ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
8098
8099#define ID3D12VideoEncoderHeap_GetCodec(This) \
8100 ( (This)->lpVtbl -> GetCodec(This) )
8101
8102#define ID3D12VideoEncoderHeap_GetCodecProfile(This,dstProfile) \
8103 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
8104
8105#define ID3D12VideoEncoderHeap_GetCodecLevel(This,dstLevel) \
8106 ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
8107
8108#define ID3D12VideoEncoderHeap_GetResolutionListCount(This) \
8109 ( (This)->lpVtbl -> GetResolutionListCount(This) )
8110
8111#define ID3D12VideoEncoderHeap_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
8112 ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
8113
8114#endif /* COBJMACROS */
8115
8116
8117#endif /* C style interface */
8118
8119
8120
8121
8122#endif /* __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__ */
8123
8124
8125#ifndef __ID3D12VideoDevice3_INTERFACE_DEFINED__
8126#define __ID3D12VideoDevice3_INTERFACE_DEFINED__
8127
8128/* interface ID3D12VideoDevice3 */
8129/* [unique][local][object][uuid] */
8130
8131
8132EXTERN_C const IID IID_ID3D12VideoDevice3;
8133
8134#if defined(__cplusplus) && !defined(CINTERFACE)
8135
8136 MIDL_INTERFACE("4243ADB4-3A32-4666-973C-0CCC5625DC44")
8137 ID3D12VideoDevice3 : public ID3D12VideoDevice2
8138 {
8139 public:
8140 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoder(
8141 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
8142 _In_ REFIID riid,
8143 _COM_Outptr_ void **ppVideoEncoder) = 0;
8144
8145 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap(
8146 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
8147 _In_ REFIID riid,
8148 _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
8149
8150 };
8151
8152
8153#else /* C style interface */
8154
8155 typedef struct ID3D12VideoDevice3Vtbl
8156 {
8157 BEGIN_INTERFACE
8158
8159 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8160 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8161 ID3D12VideoDevice3 * This,
8162 REFIID riid,
8163 _COM_Outptr_ void **ppvObject);
8164
8165 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8166 ULONG ( STDMETHODCALLTYPE *AddRef )(
8167 ID3D12VideoDevice3 * This);
8168
8169 DECLSPEC_XFGVIRT(IUnknown, Release)
8170 ULONG ( STDMETHODCALLTYPE *Release )(
8171 ID3D12VideoDevice3 * This);
8172
8173 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
8174 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
8175 ID3D12VideoDevice3 * This,
8176 D3D12_FEATURE_VIDEO FeatureVideo,
8177 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8178 UINT FeatureSupportDataSize);
8179
8180 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
8181 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
8182 ID3D12VideoDevice3 * This,
8183 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
8184 _In_ REFIID riid,
8185 _COM_Outptr_ void **ppVideoDecoder);
8186
8187 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
8188 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
8189 ID3D12VideoDevice3 * This,
8190 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
8191 _In_ REFIID riid,
8192 _COM_Outptr_ void **ppVideoDecoderHeap);
8193
8194 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
8195 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
8196 ID3D12VideoDevice3 * This,
8197 UINT NodeMask,
8198 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
8199 UINT NumInputStreamDescs,
8200 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
8201 _In_ REFIID riid,
8202 _COM_Outptr_ void **ppVideoProcessor);
8203
8204 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
8205 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
8206 ID3D12VideoDevice3 * This,
8207 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
8208 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8209 _In_ REFIID riid,
8210 _COM_Outptr_ void **ppVideoMotionEstimator);
8211
8212 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
8213 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
8214 ID3D12VideoDevice3 * This,
8215 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
8216 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8217 _In_ REFIID riid,
8218 _COM_Outptr_ void **ppVideoMotionVectorHeap);
8219
8220 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
8221 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
8222 ID3D12VideoDevice3 * This,
8223 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
8224 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8225 _In_ REFIID riid,
8226 _COM_Outptr_ void **ppVideoDecoder);
8227
8228 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
8229 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
8230 ID3D12VideoDevice3 * This,
8231 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
8232 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8233 _In_ REFIID riid,
8234 _COM_Outptr_ void **ppVideoDecoderHeap);
8235
8236 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
8237 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
8238 ID3D12VideoDevice3 * This,
8239 UINT NodeMask,
8240 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
8241 UINT NumInputStreamDescs,
8242 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
8243 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8244 _In_ REFIID riid,
8245 _COM_Outptr_ void **ppVideoProcessor);
8246
8247 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
8248 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
8249 ID3D12VideoDevice3 * This,
8250 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
8251 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
8252 SIZE_T CreationParametersDataSizeInBytes,
8253 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8254 _In_ REFIID riid,
8255 _COM_Outptr_ void **ppVideoExtensionCommand);
8256
8257 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
8258 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
8259 ID3D12VideoDevice3 * This,
8260 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8261 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
8262 SIZE_T ExecutionParametersSizeInBytes,
8263 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
8264 SIZE_T OutputDataSizeInBytes);
8265
8266 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
8267 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
8268 ID3D12VideoDevice3 * This,
8269 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
8270 _In_ REFIID riid,
8271 _COM_Outptr_ void **ppVideoEncoder);
8272
8273 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
8274 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
8275 ID3D12VideoDevice3 * This,
8276 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
8277 _In_ REFIID riid,
8278 _COM_Outptr_ void **ppVideoEncoderHeap);
8279
8280 END_INTERFACE
8281 } ID3D12VideoDevice3Vtbl;
8282
8283 interface ID3D12VideoDevice3
8284 {
8285 CONST_VTBL struct ID3D12VideoDevice3Vtbl *lpVtbl;
8286 };
8287
8288
8289
8290#ifdef COBJMACROS
8291
8292
8293#define ID3D12VideoDevice3_QueryInterface(This,riid,ppvObject) \
8294 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8295
8296#define ID3D12VideoDevice3_AddRef(This) \
8297 ( (This)->lpVtbl -> AddRef(This) )
8298
8299#define ID3D12VideoDevice3_Release(This) \
8300 ( (This)->lpVtbl -> Release(This) )
8301
8302
8303#define ID3D12VideoDevice3_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
8304 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
8305
8306#define ID3D12VideoDevice3_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
8307 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
8308
8309#define ID3D12VideoDevice3_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
8310 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
8311
8312#define ID3D12VideoDevice3_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
8313 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
8314
8315
8316#define ID3D12VideoDevice3_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
8317 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
8318
8319#define ID3D12VideoDevice3_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
8320 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
8321
8322
8323#define ID3D12VideoDevice3_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
8324 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
8325
8326#define ID3D12VideoDevice3_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
8327 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
8328
8329#define ID3D12VideoDevice3_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
8330 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
8331
8332#define ID3D12VideoDevice3_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
8333 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
8334
8335#define ID3D12VideoDevice3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
8336 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
8337
8338
8339#define ID3D12VideoDevice3_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
8340 ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
8341
8342#define ID3D12VideoDevice3_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
8343 ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
8344
8345#endif /* COBJMACROS */
8346
8347
8348#endif /* C style interface */
8349
8350
8351
8352
8353#endif /* __ID3D12VideoDevice3_INTERFACE_DEFINED__ */
8354
8355
8356/* interface __MIDL_itf_d3d12video_0000_0025 */
8357/* [local] */
8358
8359typedef
8360enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
8361 {
8362 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
8363 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
8364 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
8365 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3
8366 } D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
8367
8368typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
8369 {
8370 UINT ReconstructedPictureResourceIndex;
8371 BOOL IsLongTermReference;
8372 UINT LongTermPictureIdx;
8373 UINT PictureOrderCountNumber;
8374 UINT FrameDecodingOrderNumber;
8375 UINT TemporalLayerIndex;
8376 } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
8377
8378typedef
8379enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
8380 {
8381 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0,
8382 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
8383 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2
8384 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
8385
8386DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)
8387typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
8388 {
8389 UCHAR memory_management_control_operation;
8390 UINT difference_of_pic_nums_minus1;
8391 UINT long_term_pic_num;
8392 UINT long_term_frame_idx;
8393 UINT max_long_term_frame_idx_plus1;
8394 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
8395
8396typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
8397 {
8398 UCHAR modification_of_pic_nums_idc;
8399 UINT abs_diff_pic_num_minus1;
8400 UINT long_term_pic_num;
8401 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
8402
8403typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
8404 {
8405 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
8406 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
8407 UINT pic_parameter_set_id;
8408 UINT idr_pic_id;
8409 UINT PictureOrderCountNumber;
8410 UINT FrameDecodingOrderNumber;
8411 UINT TemporalLayerIndex;
8412 UINT List0ReferenceFramesCount;
8413 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8414 UINT List1ReferenceFramesCount;
8415 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8416 UINT ReferenceFramesReconPictureDescriptorsCount;
8417 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 *pReferenceFramesReconPictureDescriptors;
8418 UCHAR adaptive_ref_pic_marking_mode_flag;
8419 UINT RefPicMarkingOperationsCommandsCount;
8420 _Field_size_full_(RefPicMarkingOperationsCommandsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION *pRefPicMarkingOperationsCommands;
8421 UINT List0RefPicModificationsCount;
8422 _Field_size_full_(List0RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
8423 UINT List1RefPicModificationsCount;
8424 _Field_size_full_(List1RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
8425 UINT QPMapValuesCount;
8426 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8427 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
8428
8429typedef
8430enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
8431 {
8432 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
8433 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
8434 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
8435 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3
8436 } D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
8437
8438typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
8439 {
8440 UINT ReconstructedPictureResourceIndex;
8441 BOOL IsRefUsedByCurrentPic;
8442 BOOL IsLongTermReference;
8443 UINT PictureOrderCountNumber;
8444 UINT TemporalLayerIndex;
8445 } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
8446
8447typedef
8448enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
8449 {
8450 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0,
8451 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
8452 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
8453 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
8454 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8
8455 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
8456
8457DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)
8458typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
8459 {
8460 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
8461 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
8462 UINT slice_pic_parameter_set_id;
8463 UINT PictureOrderCountNumber;
8464 UINT TemporalLayerIndex;
8465 UINT List0ReferenceFramesCount;
8466 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8467 UINT List1ReferenceFramesCount;
8468 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8469 UINT ReferenceFramesReconPictureDescriptorsCount;
8470 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
8471 UINT List0RefPicModificationsCount;
8472 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
8473 UINT List1RefPicModificationsCount;
8474 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
8475 UINT QPMapValuesCount;
8476 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8477 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
8478
8479typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
8480 {
8481 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
8482 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
8483 UINT slice_pic_parameter_set_id;
8484 UINT PictureOrderCountNumber;
8485 UINT TemporalLayerIndex;
8486 UINT List0ReferenceFramesCount;
8487 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8488 UINT List1ReferenceFramesCount;
8489 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8490 UINT ReferenceFramesReconPictureDescriptorsCount;
8491 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
8492 UINT List0RefPicModificationsCount;
8493 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
8494 UINT List1RefPicModificationsCount;
8495 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
8496 UINT QPMapValuesCount;
8497 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8498 UCHAR diff_cu_chroma_qp_offset_depth;
8499 UCHAR log2_sao_offset_scale_luma;
8500 UCHAR log2_sao_offset_scale_chroma;
8501 UCHAR log2_max_transform_skip_block_size_minus2;
8502 UCHAR chroma_qp_offset_list_len_minus1;
8503 CHAR cb_qp_offset_list[ 6 ];
8504 CHAR cr_qp_offset_list[ 6 ];
8505 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
8506
8507typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
8508 {
8509 UINT DataSize;
8510 union
8511 {
8512 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
8513 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC *pHEVCPicData;
8514 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 *pHEVCPicData1;
8515 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
8516 } ;
8517 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
8518
8519typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
8520 {
8521 UINT NumTexture2Ds;
8522 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
8523 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
8524 } D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
8525
8526typedef
8527enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
8528 {
8529 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0,
8530 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
8531 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
8532 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
8533 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8
8534 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
8535
8536DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)
8537typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
8538 {
8539 UINT IntraRefreshFrameIndex;
8540 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
8541 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
8542 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
8543 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
8544
8545typedef
8546enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
8547 {
8548 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0,
8549 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
8550 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
8551 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
8552 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
8553 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10
8554 } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
8555
8556DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)
8557typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
8558 {
8559 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
8560 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
8561 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
8562 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
8563 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
8564 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
8565 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
8566 } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
8567
8568typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
8569 {
8570 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
8571 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
8572 ID3D12Resource *pInputFrame;
8573 UINT InputFrameSubresource;
8574 UINT CurrentFrameBitstreamMetadataSize;
8575 } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
8576
8577typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
8578 {
8579 ID3D12Resource *pBuffer;
8580 UINT64 FrameStartOffset;
8581 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
8582
8583typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
8584 {
8585 ID3D12Resource *pReconstructedPicture;
8586 UINT ReconstructedPictureSubresource;
8587 } D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
8588
8589typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
8590 {
8591 UINT64 bSize;
8592 UINT64 bStartOffset;
8593 UINT64 bHeaderSize;
8594 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
8595
8596typedef
8597enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
8598 {
8599 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0,
8600 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
8601 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
8602 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
8603 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
8604 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10
8605 } D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
8606
8607DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)
8608typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
8609 {
8610 UINT64 AverageQP;
8611 UINT64 IntraCodingUnitsCount;
8612 UINT64 InterCodingUnitsCount;
8613 UINT64 SkipCodingUnitsCount;
8614 UINT64 AverageMotionEstimationXDirection;
8615 UINT64 AverageMotionEstimationYDirection;
8616 } D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
8617
8618typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
8619 {
8620 UINT64 EncodeErrorFlags;
8621 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
8622 UINT64 EncodedBitstreamWrittenBytesCount;
8623 UINT64 WrittenSubregionsCount;
8624 } D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
8625
8626typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
8627 {
8628 ID3D12Resource *pBuffer;
8629 UINT64 Offset;
8630 } D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
8631
8632typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
8633 {
8634 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
8635 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
8636 DXGI_FORMAT EncoderInputFormat;
8637 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
8638 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
8639 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
8640
8641typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
8642 {
8643 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
8644 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
8645
8646typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
8647 {
8648 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
8649 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
8650 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
8651 } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
8652
8653
8654
8655extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_c_ifspec;
8656extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_s_ifspec;
8657
8658#ifndef __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
8659#define __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
8660
8661/* interface ID3D12VideoEncodeCommandList2 */
8662/* [unique][local][object][uuid] */
8663
8664
8665EXTERN_C const IID IID_ID3D12VideoEncodeCommandList2;
8666
8667#if defined(__cplusplus) && !defined(CINTERFACE)
8668
8669 MIDL_INTERFACE("895491e2-e701-46a9-9a1f-8d3480ed867a")
8670 ID3D12VideoEncodeCommandList2 : public ID3D12VideoEncodeCommandList1
8671 {
8672 public:
8673 virtual void STDMETHODCALLTYPE EncodeFrame(
8674 _In_ ID3D12VideoEncoder *pEncoder,
8675 _In_ ID3D12VideoEncoderHeap *pHeap,
8676 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
8677 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
8678
8679 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata(
8680 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
8681 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
8682
8683 };
8684
8685
8686#else /* C style interface */
8687
8688 typedef struct ID3D12VideoEncodeCommandList2Vtbl
8689 {
8690 BEGIN_INTERFACE
8691
8692 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8693 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8694 ID3D12VideoEncodeCommandList2 * This,
8695 REFIID riid,
8696 _COM_Outptr_ void **ppvObject);
8697
8698 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8699 ULONG ( STDMETHODCALLTYPE *AddRef )(
8700 ID3D12VideoEncodeCommandList2 * This);
8701
8702 DECLSPEC_XFGVIRT(IUnknown, Release)
8703 ULONG ( STDMETHODCALLTYPE *Release )(
8704 ID3D12VideoEncodeCommandList2 * This);
8705
8706 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8707 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8708 ID3D12VideoEncodeCommandList2 * This,
8709 _In_ REFGUID guid,
8710 _Inout_ UINT *pDataSize,
8711 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8712
8713 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8714 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8715 ID3D12VideoEncodeCommandList2 * This,
8716 _In_ REFGUID guid,
8717 _In_ UINT DataSize,
8718 _In_reads_bytes_opt_( DataSize ) const void *pData);
8719
8720 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8721 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8722 ID3D12VideoEncodeCommandList2 * This,
8723 _In_ REFGUID guid,
8724 _In_opt_ const IUnknown *pData);
8725
8726 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8727 HRESULT ( STDMETHODCALLTYPE *SetName )(
8728 ID3D12VideoEncodeCommandList2 * This,
8729 _In_z_ LPCWSTR Name);
8730
8731 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8732 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8733 ID3D12VideoEncodeCommandList2 * This,
8734 REFIID riid,
8735 _COM_Outptr_opt_ void **ppvDevice);
8736
8737 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
8738 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
8739 ID3D12VideoEncodeCommandList2 * This);
8740
8741 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
8742 HRESULT ( STDMETHODCALLTYPE *Close )(
8743 ID3D12VideoEncodeCommandList2 * This);
8744
8745 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
8746 HRESULT ( STDMETHODCALLTYPE *Reset )(
8747 ID3D12VideoEncodeCommandList2 * This,
8748 _In_ ID3D12CommandAllocator *pAllocator);
8749
8750 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
8751 void ( STDMETHODCALLTYPE *ClearState )(
8752 ID3D12VideoEncodeCommandList2 * This);
8753
8754 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
8755 void ( STDMETHODCALLTYPE *ResourceBarrier )(
8756 ID3D12VideoEncodeCommandList2 * This,
8757 _In_ UINT NumBarriers,
8758 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
8759
8760 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
8761 void ( STDMETHODCALLTYPE *DiscardResource )(
8762 ID3D12VideoEncodeCommandList2 * This,
8763 _In_ ID3D12Resource *pResource,
8764 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
8765
8766 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
8767 void ( STDMETHODCALLTYPE *BeginQuery )(
8768 ID3D12VideoEncodeCommandList2 * This,
8769 _In_ ID3D12QueryHeap *pQueryHeap,
8770 _In_ D3D12_QUERY_TYPE Type,
8771 _In_ UINT Index);
8772
8773 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
8774 void ( STDMETHODCALLTYPE *EndQuery )(
8775 ID3D12VideoEncodeCommandList2 * This,
8776 _In_ ID3D12QueryHeap *pQueryHeap,
8777 _In_ D3D12_QUERY_TYPE Type,
8778 _In_ UINT Index);
8779
8780 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
8781 void ( STDMETHODCALLTYPE *ResolveQueryData )(
8782 ID3D12VideoEncodeCommandList2 * This,
8783 _In_ ID3D12QueryHeap *pQueryHeap,
8784 _In_ D3D12_QUERY_TYPE Type,
8785 _In_ UINT StartIndex,
8786 _In_ UINT NumQueries,
8787 _In_ ID3D12Resource *pDestinationBuffer,
8788 _In_ UINT64 AlignedDestinationBufferOffset);
8789
8790 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
8791 void ( STDMETHODCALLTYPE *SetPredication )(
8792 ID3D12VideoEncodeCommandList2 * This,
8793 _In_opt_ ID3D12Resource *pBuffer,
8794 _In_ UINT64 AlignedBufferOffset,
8795 _In_ D3D12_PREDICATION_OP Operation);
8796
8797 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
8798 void ( STDMETHODCALLTYPE *SetMarker )(
8799 ID3D12VideoEncodeCommandList2 * This,
8800 UINT Metadata,
8801 _In_reads_bytes_opt_(Size) const void *pData,
8802 UINT Size);
8803
8804 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
8805 void ( STDMETHODCALLTYPE *BeginEvent )(
8806 ID3D12VideoEncodeCommandList2 * This,
8807 UINT Metadata,
8808 _In_reads_bytes_opt_(Size) const void *pData,
8809 UINT Size);
8810
8811 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
8812 void ( STDMETHODCALLTYPE *EndEvent )(
8813 ID3D12VideoEncodeCommandList2 * This);
8814
8815 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
8816 void ( STDMETHODCALLTYPE *EstimateMotion )(
8817 ID3D12VideoEncodeCommandList2 * This,
8818 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
8819 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
8820 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
8821
8822 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
8823 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
8824 ID3D12VideoEncodeCommandList2 * This,
8825 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
8826 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
8827
8828 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
8829 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
8830 ID3D12VideoEncodeCommandList2 * This,
8831 UINT Count,
8832 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8833 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
8834
8835 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
8836 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
8837 ID3D12VideoEncodeCommandList2 * This,
8838 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
8839
8840 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
8841 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
8842 ID3D12VideoEncodeCommandList2 * This,
8843 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8844 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
8845 SIZE_T InitializationParametersSizeInBytes);
8846
8847 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
8848 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
8849 ID3D12VideoEncodeCommandList2 * This,
8850 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8851 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
8852 SIZE_T ExecutionParametersSizeInBytes);
8853
8854 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
8855 void ( STDMETHODCALLTYPE *EncodeFrame )(
8856 ID3D12VideoEncodeCommandList2 * This,
8857 _In_ ID3D12VideoEncoder *pEncoder,
8858 _In_ ID3D12VideoEncoderHeap *pHeap,
8859 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
8860 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
8861
8862 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
8863 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
8864 ID3D12VideoEncodeCommandList2 * This,
8865 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
8866 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
8867
8868 END_INTERFACE
8869 } ID3D12VideoEncodeCommandList2Vtbl;
8870
8871 interface ID3D12VideoEncodeCommandList2
8872 {
8873 CONST_VTBL struct ID3D12VideoEncodeCommandList2Vtbl *lpVtbl;
8874 };
8875
8876
8877
8878#ifdef COBJMACROS
8879
8880
8881#define ID3D12VideoEncodeCommandList2_QueryInterface(This,riid,ppvObject) \
8882 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8883
8884#define ID3D12VideoEncodeCommandList2_AddRef(This) \
8885 ( (This)->lpVtbl -> AddRef(This) )
8886
8887#define ID3D12VideoEncodeCommandList2_Release(This) \
8888 ( (This)->lpVtbl -> Release(This) )
8889
8890
8891#define ID3D12VideoEncodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
8892 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8893
8894#define ID3D12VideoEncodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
8895 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8896
8897#define ID3D12VideoEncodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
8898 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8899
8900#define ID3D12VideoEncodeCommandList2_SetName(This,Name) \
8901 ( (This)->lpVtbl -> SetName(This,Name) )
8902
8903
8904#define ID3D12VideoEncodeCommandList2_GetDevice(This,riid,ppvDevice) \
8905 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8906
8907
8908#define ID3D12VideoEncodeCommandList2_GetType(This) \
8909 ( (This)->lpVtbl -> GetType(This) )
8910
8911
8912#define ID3D12VideoEncodeCommandList2_Close(This) \
8913 ( (This)->lpVtbl -> Close(This) )
8914
8915#define ID3D12VideoEncodeCommandList2_Reset(This,pAllocator) \
8916 ( (This)->lpVtbl -> Reset(This,pAllocator) )
8917
8918#define ID3D12VideoEncodeCommandList2_ClearState(This) \
8919 ( (This)->lpVtbl -> ClearState(This) )
8920
8921#define ID3D12VideoEncodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
8922 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8923
8924#define ID3D12VideoEncodeCommandList2_DiscardResource(This,pResource,pRegion) \
8925 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8926
8927#define ID3D12VideoEncodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8928 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8929
8930#define ID3D12VideoEncodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8931 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8932
8933#define ID3D12VideoEncodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8934 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8935
8936#define ID3D12VideoEncodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8937 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8938
8939#define ID3D12VideoEncodeCommandList2_SetMarker(This,Metadata,pData,Size) \
8940 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8941
8942#define ID3D12VideoEncodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
8943 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8944
8945#define ID3D12VideoEncodeCommandList2_EndEvent(This) \
8946 ( (This)->lpVtbl -> EndEvent(This) )
8947
8948#define ID3D12VideoEncodeCommandList2_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
8949 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
8950
8951#define ID3D12VideoEncodeCommandList2_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
8952 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
8953
8954#define ID3D12VideoEncodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8955 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8956
8957#define ID3D12VideoEncodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
8958 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
8959
8960
8961#define ID3D12VideoEncodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
8962 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
8963
8964#define ID3D12VideoEncodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
8965 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
8966
8967
8968#define ID3D12VideoEncodeCommandList2_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
8969 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
8970
8971#define ID3D12VideoEncodeCommandList2_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
8972 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
8973
8974#endif /* COBJMACROS */
8975
8976
8977#endif /* C style interface */
8978
8979
8980
8981
8982#endif /* __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__ */
8983
8984
8985#ifndef __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
8986#define __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
8987
8988/* interface ID3D12VideoEncodeCommandList3 */
8989/* [unique][local][object][uuid] */
8990
8991
8992EXTERN_C const IID IID_ID3D12VideoEncodeCommandList3;
8993
8994#if defined(__cplusplus) && !defined(CINTERFACE)
8995
8996 MIDL_INTERFACE("7f027b22-1515-4e85-aa0d-026486580576")
8997 ID3D12VideoEncodeCommandList3 : public ID3D12VideoEncodeCommandList2
8998 {
8999 public:
9000 virtual void STDMETHODCALLTYPE Barrier(
9001 UINT32 NumBarrierGroups,
9002 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
9003
9004 };
9005
9006
9007#else /* C style interface */
9008
9009 typedef struct ID3D12VideoEncodeCommandList3Vtbl
9010 {
9011 BEGIN_INTERFACE
9012
9013 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9014 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9015 ID3D12VideoEncodeCommandList3 * This,
9016 REFIID riid,
9017 _COM_Outptr_ void **ppvObject);
9018
9019 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9020 ULONG ( STDMETHODCALLTYPE *AddRef )(
9021 ID3D12VideoEncodeCommandList3 * This);
9022
9023 DECLSPEC_XFGVIRT(IUnknown, Release)
9024 ULONG ( STDMETHODCALLTYPE *Release )(
9025 ID3D12VideoEncodeCommandList3 * This);
9026
9027 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9028 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9029 ID3D12VideoEncodeCommandList3 * This,
9030 _In_ REFGUID guid,
9031 _Inout_ UINT *pDataSize,
9032 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9033
9034 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9035 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9036 ID3D12VideoEncodeCommandList3 * This,
9037 _In_ REFGUID guid,
9038 _In_ UINT DataSize,
9039 _In_reads_bytes_opt_( DataSize ) const void *pData);
9040
9041 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9042 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9043 ID3D12VideoEncodeCommandList3 * This,
9044 _In_ REFGUID guid,
9045 _In_opt_ const IUnknown *pData);
9046
9047 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9048 HRESULT ( STDMETHODCALLTYPE *SetName )(
9049 ID3D12VideoEncodeCommandList3 * This,
9050 _In_z_ LPCWSTR Name);
9051
9052 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9053 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9054 ID3D12VideoEncodeCommandList3 * This,
9055 REFIID riid,
9056 _COM_Outptr_opt_ void **ppvDevice);
9057
9058 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
9059 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
9060 ID3D12VideoEncodeCommandList3 * This);
9061
9062 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
9063 HRESULT ( STDMETHODCALLTYPE *Close )(
9064 ID3D12VideoEncodeCommandList3 * This);
9065
9066 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
9067 HRESULT ( STDMETHODCALLTYPE *Reset )(
9068 ID3D12VideoEncodeCommandList3 * This,
9069 _In_ ID3D12CommandAllocator *pAllocator);
9070
9071 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
9072 void ( STDMETHODCALLTYPE *ClearState )(
9073 ID3D12VideoEncodeCommandList3 * This);
9074
9075 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
9076 void ( STDMETHODCALLTYPE *ResourceBarrier )(
9077 ID3D12VideoEncodeCommandList3 * This,
9078 _In_ UINT NumBarriers,
9079 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
9080
9081 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
9082 void ( STDMETHODCALLTYPE *DiscardResource )(
9083 ID3D12VideoEncodeCommandList3 * This,
9084 _In_ ID3D12Resource *pResource,
9085 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
9086
9087 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
9088 void ( STDMETHODCALLTYPE *BeginQuery )(
9089 ID3D12VideoEncodeCommandList3 * This,
9090 _In_ ID3D12QueryHeap *pQueryHeap,
9091 _In_ D3D12_QUERY_TYPE Type,
9092 _In_ UINT Index);
9093
9094 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
9095 void ( STDMETHODCALLTYPE *EndQuery )(
9096 ID3D12VideoEncodeCommandList3 * This,
9097 _In_ ID3D12QueryHeap *pQueryHeap,
9098 _In_ D3D12_QUERY_TYPE Type,
9099 _In_ UINT Index);
9100
9101 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
9102 void ( STDMETHODCALLTYPE *ResolveQueryData )(
9103 ID3D12VideoEncodeCommandList3 * This,
9104 _In_ ID3D12QueryHeap *pQueryHeap,
9105 _In_ D3D12_QUERY_TYPE Type,
9106 _In_ UINT StartIndex,
9107 _In_ UINT NumQueries,
9108 _In_ ID3D12Resource *pDestinationBuffer,
9109 _In_ UINT64 AlignedDestinationBufferOffset);
9110
9111 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
9112 void ( STDMETHODCALLTYPE *SetPredication )(
9113 ID3D12VideoEncodeCommandList3 * This,
9114 _In_opt_ ID3D12Resource *pBuffer,
9115 _In_ UINT64 AlignedBufferOffset,
9116 _In_ D3D12_PREDICATION_OP Operation);
9117
9118 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
9119 void ( STDMETHODCALLTYPE *SetMarker )(
9120 ID3D12VideoEncodeCommandList3 * This,
9121 UINT Metadata,
9122 _In_reads_bytes_opt_(Size) const void *pData,
9123 UINT Size);
9124
9125 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
9126 void ( STDMETHODCALLTYPE *BeginEvent )(
9127 ID3D12VideoEncodeCommandList3 * This,
9128 UINT Metadata,
9129 _In_reads_bytes_opt_(Size) const void *pData,
9130 UINT Size);
9131
9132 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
9133 void ( STDMETHODCALLTYPE *EndEvent )(
9134 ID3D12VideoEncodeCommandList3 * This);
9135
9136 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
9137 void ( STDMETHODCALLTYPE *EstimateMotion )(
9138 ID3D12VideoEncodeCommandList3 * This,
9139 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
9140 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
9141 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
9142
9143 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
9144 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
9145 ID3D12VideoEncodeCommandList3 * This,
9146 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
9147 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
9148
9149 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
9150 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
9151 ID3D12VideoEncodeCommandList3 * This,
9152 UINT Count,
9153 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
9154 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
9155
9156 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
9157 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
9158 ID3D12VideoEncodeCommandList3 * This,
9159 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
9160
9161 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
9162 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
9163 ID3D12VideoEncodeCommandList3 * This,
9164 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9165 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
9166 SIZE_T InitializationParametersSizeInBytes);
9167
9168 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
9169 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
9170 ID3D12VideoEncodeCommandList3 * This,
9171 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9172 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
9173 SIZE_T ExecutionParametersSizeInBytes);
9174
9175 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
9176 void ( STDMETHODCALLTYPE *EncodeFrame )(
9177 ID3D12VideoEncodeCommandList3 * This,
9178 _In_ ID3D12VideoEncoder *pEncoder,
9179 _In_ ID3D12VideoEncoderHeap *pHeap,
9180 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
9181 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
9182
9183 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
9184 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
9185 ID3D12VideoEncodeCommandList3 * This,
9186 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
9187 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
9188
9189 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
9190 void ( STDMETHODCALLTYPE *Barrier )(
9191 ID3D12VideoEncodeCommandList3 * This,
9192 UINT32 NumBarrierGroups,
9193 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
9194
9195 END_INTERFACE
9196 } ID3D12VideoEncodeCommandList3Vtbl;
9197
9198 interface ID3D12VideoEncodeCommandList3
9199 {
9200 CONST_VTBL struct ID3D12VideoEncodeCommandList3Vtbl *lpVtbl;
9201 };
9202
9203
9204
9205#ifdef COBJMACROS
9206
9207
9208#define ID3D12VideoEncodeCommandList3_QueryInterface(This,riid,ppvObject) \
9209 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9210
9211#define ID3D12VideoEncodeCommandList3_AddRef(This) \
9212 ( (This)->lpVtbl -> AddRef(This) )
9213
9214#define ID3D12VideoEncodeCommandList3_Release(This) \
9215 ( (This)->lpVtbl -> Release(This) )
9216
9217
9218#define ID3D12VideoEncodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
9219 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9220
9221#define ID3D12VideoEncodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
9222 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9223
9224#define ID3D12VideoEncodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
9225 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9226
9227#define ID3D12VideoEncodeCommandList3_SetName(This,Name) \
9228 ( (This)->lpVtbl -> SetName(This,Name) )
9229
9230
9231#define ID3D12VideoEncodeCommandList3_GetDevice(This,riid,ppvDevice) \
9232 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9233
9234
9235#define ID3D12VideoEncodeCommandList3_GetType(This) \
9236 ( (This)->lpVtbl -> GetType(This) )
9237
9238
9239#define ID3D12VideoEncodeCommandList3_Close(This) \
9240 ( (This)->lpVtbl -> Close(This) )
9241
9242#define ID3D12VideoEncodeCommandList3_Reset(This,pAllocator) \
9243 ( (This)->lpVtbl -> Reset(This,pAllocator) )
9244
9245#define ID3D12VideoEncodeCommandList3_ClearState(This) \
9246 ( (This)->lpVtbl -> ClearState(This) )
9247
9248#define ID3D12VideoEncodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
9249 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
9250
9251#define ID3D12VideoEncodeCommandList3_DiscardResource(This,pResource,pRegion) \
9252 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
9253
9254#define ID3D12VideoEncodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
9255 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
9256
9257#define ID3D12VideoEncodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
9258 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
9259
9260#define ID3D12VideoEncodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
9261 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
9262
9263#define ID3D12VideoEncodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
9264 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
9265
9266#define ID3D12VideoEncodeCommandList3_SetMarker(This,Metadata,pData,Size) \
9267 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9268
9269#define ID3D12VideoEncodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
9270 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9271
9272#define ID3D12VideoEncodeCommandList3_EndEvent(This) \
9273 ( (This)->lpVtbl -> EndEvent(This) )
9274
9275#define ID3D12VideoEncodeCommandList3_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
9276 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
9277
9278#define ID3D12VideoEncodeCommandList3_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
9279 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
9280
9281#define ID3D12VideoEncodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
9282 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
9283
9284#define ID3D12VideoEncodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
9285 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
9286
9287
9288#define ID3D12VideoEncodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
9289 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
9290
9291#define ID3D12VideoEncodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
9292 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
9293
9294
9295#define ID3D12VideoEncodeCommandList3_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
9296 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
9297
9298#define ID3D12VideoEncodeCommandList3_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
9299 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
9300
9301
9302#define ID3D12VideoEncodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
9303 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
9304
9305#endif /* COBJMACROS */
9306
9307
9308#endif /* C style interface */
9309
9310
9311
9312
9313#endif /* __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__ */
9314
9315
9316/* interface __MIDL_itf_d3d12video_0000_0027 */
9317/* [local] */
9318
9319typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
9320 {
9321 UINT NodeMask;
9322 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
9323 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
9324 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
9325 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
9326 UINT ResolutionsListCount;
9327 _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
9328 UINT Pow2DownscaleFactor;
9329 } D3D12_VIDEO_ENCODER_HEAP_DESC1;
9330
9331
9332
9333extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_c_ifspec;
9334extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_s_ifspec;
9335
9336#ifndef __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
9337#define __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
9338
9339/* interface ID3D12VideoEncoderHeap1 */
9340/* [unique][local][object][uuid] */
9341
9342
9343EXTERN_C const IID IID_ID3D12VideoEncoderHeap1;
9344
9345#if defined(__cplusplus) && !defined(CINTERFACE)
9346
9347 MIDL_INTERFACE("ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9")
9348 ID3D12VideoEncoderHeap1 : public ID3D12VideoEncoderHeap
9349 {
9350 public:
9351 virtual UINT STDMETHODCALLTYPE GetPow2DownscaleFactor( void) = 0;
9352
9353 };
9354
9355
9356#else /* C style interface */
9357
9358 typedef struct ID3D12VideoEncoderHeap1Vtbl
9359 {
9360 BEGIN_INTERFACE
9361
9362 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9363 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9364 ID3D12VideoEncoderHeap1 * This,
9365 REFIID riid,
9366 _COM_Outptr_ void **ppvObject);
9367
9368 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9369 ULONG ( STDMETHODCALLTYPE *AddRef )(
9370 ID3D12VideoEncoderHeap1 * This);
9371
9372 DECLSPEC_XFGVIRT(IUnknown, Release)
9373 ULONG ( STDMETHODCALLTYPE *Release )(
9374 ID3D12VideoEncoderHeap1 * This);
9375
9376 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9377 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9378 ID3D12VideoEncoderHeap1 * This,
9379 _In_ REFGUID guid,
9380 _Inout_ UINT *pDataSize,
9381 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9382
9383 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9384 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9385 ID3D12VideoEncoderHeap1 * This,
9386 _In_ REFGUID guid,
9387 _In_ UINT DataSize,
9388 _In_reads_bytes_opt_( DataSize ) const void *pData);
9389
9390 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9391 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9392 ID3D12VideoEncoderHeap1 * This,
9393 _In_ REFGUID guid,
9394 _In_opt_ const IUnknown *pData);
9395
9396 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9397 HRESULT ( STDMETHODCALLTYPE *SetName )(
9398 ID3D12VideoEncoderHeap1 * This,
9399 _In_z_ LPCWSTR Name);
9400
9401 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9402 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9403 ID3D12VideoEncoderHeap1 * This,
9404 REFIID riid,
9405 _COM_Outptr_opt_ void **ppvDevice);
9406
9407 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
9408 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
9409 ID3D12VideoEncoderHeap1 * This);
9410
9411 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
9412 D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
9413 ID3D12VideoEncoderHeap1 * This);
9414
9415 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
9416 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
9417 ID3D12VideoEncoderHeap1 * This);
9418
9419 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
9420 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
9421 ID3D12VideoEncoderHeap1 * This,
9422 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
9423
9424 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
9425 HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
9426 ID3D12VideoEncoderHeap1 * This,
9427 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
9428
9429 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
9430 UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
9431 ID3D12VideoEncoderHeap1 * This);
9432
9433 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
9434 HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
9435 ID3D12VideoEncoderHeap1 * This,
9436 const UINT ResolutionsListCount,
9437 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
9438
9439 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap1, GetPow2DownscaleFactor)
9440 UINT ( STDMETHODCALLTYPE *GetPow2DownscaleFactor )(
9441 ID3D12VideoEncoderHeap1 * This);
9442
9443 END_INTERFACE
9444 } ID3D12VideoEncoderHeap1Vtbl;
9445
9446 interface ID3D12VideoEncoderHeap1
9447 {
9448 CONST_VTBL struct ID3D12VideoEncoderHeap1Vtbl *lpVtbl;
9449 };
9450
9451
9452
9453#ifdef COBJMACROS
9454
9455
9456#define ID3D12VideoEncoderHeap1_QueryInterface(This,riid,ppvObject) \
9457 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9458
9459#define ID3D12VideoEncoderHeap1_AddRef(This) \
9460 ( (This)->lpVtbl -> AddRef(This) )
9461
9462#define ID3D12VideoEncoderHeap1_Release(This) \
9463 ( (This)->lpVtbl -> Release(This) )
9464
9465
9466#define ID3D12VideoEncoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
9467 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9468
9469#define ID3D12VideoEncoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
9470 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9471
9472#define ID3D12VideoEncoderHeap1_SetPrivateDataInterface(This,guid,pData) \
9473 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9474
9475#define ID3D12VideoEncoderHeap1_SetName(This,Name) \
9476 ( (This)->lpVtbl -> SetName(This,Name) )
9477
9478
9479#define ID3D12VideoEncoderHeap1_GetDevice(This,riid,ppvDevice) \
9480 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9481
9482
9483
9484#define ID3D12VideoEncoderHeap1_GetNodeMask(This) \
9485 ( (This)->lpVtbl -> GetNodeMask(This) )
9486
9487#define ID3D12VideoEncoderHeap1_GetEncoderHeapFlags(This) \
9488 ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
9489
9490#define ID3D12VideoEncoderHeap1_GetCodec(This) \
9491 ( (This)->lpVtbl -> GetCodec(This) )
9492
9493#define ID3D12VideoEncoderHeap1_GetCodecProfile(This,dstProfile) \
9494 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
9495
9496#define ID3D12VideoEncoderHeap1_GetCodecLevel(This,dstLevel) \
9497 ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
9498
9499#define ID3D12VideoEncoderHeap1_GetResolutionListCount(This) \
9500 ( (This)->lpVtbl -> GetResolutionListCount(This) )
9501
9502#define ID3D12VideoEncoderHeap1_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
9503 ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
9504
9505
9506#define ID3D12VideoEncoderHeap1_GetPow2DownscaleFactor(This) \
9507 ( (This)->lpVtbl -> GetPow2DownscaleFactor(This) )
9508
9509#endif /* COBJMACROS */
9510
9511
9512#endif /* C style interface */
9513
9514
9515
9516
9517#endif /* __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__ */
9518
9519
9520#ifndef __ID3D12VideoDevice4_INTERFACE_DEFINED__
9521#define __ID3D12VideoDevice4_INTERFACE_DEFINED__
9522
9523/* interface ID3D12VideoDevice4 */
9524/* [unique][local][object][uuid] */
9525
9526
9527EXTERN_C const IID IID_ID3D12VideoDevice4;
9528
9529#if defined(__cplusplus) && !defined(CINTERFACE)
9530
9531 MIDL_INTERFACE("e59ad09e-f1ae-42bb-8983-9f6e5586c4eb")
9532 ID3D12VideoDevice4 : public ID3D12VideoDevice3
9533 {
9534 public:
9535 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap1(
9536 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
9537 _In_ REFIID riid,
9538 _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
9539
9540 };
9541
9542
9543#else /* C style interface */
9544
9545 typedef struct ID3D12VideoDevice4Vtbl
9546 {
9547 BEGIN_INTERFACE
9548
9549 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9550 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9551 ID3D12VideoDevice4 * This,
9552 REFIID riid,
9553 _COM_Outptr_ void **ppvObject);
9554
9555 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9556 ULONG ( STDMETHODCALLTYPE *AddRef )(
9557 ID3D12VideoDevice4 * This);
9558
9559 DECLSPEC_XFGVIRT(IUnknown, Release)
9560 ULONG ( STDMETHODCALLTYPE *Release )(
9561 ID3D12VideoDevice4 * This);
9562
9563 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
9564 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9565 ID3D12VideoDevice4 * This,
9566 D3D12_FEATURE_VIDEO FeatureVideo,
9567 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9568 UINT FeatureSupportDataSize);
9569
9570 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
9571 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
9572 ID3D12VideoDevice4 * This,
9573 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
9574 _In_ REFIID riid,
9575 _COM_Outptr_ void **ppVideoDecoder);
9576
9577 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
9578 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
9579 ID3D12VideoDevice4 * This,
9580 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
9581 _In_ REFIID riid,
9582 _COM_Outptr_ void **ppVideoDecoderHeap);
9583
9584 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
9585 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
9586 ID3D12VideoDevice4 * This,
9587 UINT NodeMask,
9588 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
9589 UINT NumInputStreamDescs,
9590 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
9591 _In_ REFIID riid,
9592 _COM_Outptr_ void **ppVideoProcessor);
9593
9594 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
9595 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
9596 ID3D12VideoDevice4 * This,
9597 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
9598 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9599 _In_ REFIID riid,
9600 _COM_Outptr_ void **ppVideoMotionEstimator);
9601
9602 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
9603 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
9604 ID3D12VideoDevice4 * This,
9605 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
9606 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9607 _In_ REFIID riid,
9608 _COM_Outptr_ void **ppVideoMotionVectorHeap);
9609
9610 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
9611 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
9612 ID3D12VideoDevice4 * This,
9613 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
9614 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9615 _In_ REFIID riid,
9616 _COM_Outptr_ void **ppVideoDecoder);
9617
9618 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
9619 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
9620 ID3D12VideoDevice4 * This,
9621 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
9622 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9623 _In_ REFIID riid,
9624 _COM_Outptr_ void **ppVideoDecoderHeap);
9625
9626 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
9627 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
9628 ID3D12VideoDevice4 * This,
9629 UINT NodeMask,
9630 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
9631 UINT NumInputStreamDescs,
9632 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
9633 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9634 _In_ REFIID riid,
9635 _COM_Outptr_ void **ppVideoProcessor);
9636
9637 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
9638 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
9639 ID3D12VideoDevice4 * This,
9640 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
9641 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
9642 SIZE_T CreationParametersDataSizeInBytes,
9643 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9644 _In_ REFIID riid,
9645 _COM_Outptr_ void **ppVideoExtensionCommand);
9646
9647 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
9648 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
9649 ID3D12VideoDevice4 * This,
9650 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9651 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
9652 SIZE_T ExecutionParametersSizeInBytes,
9653 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
9654 SIZE_T OutputDataSizeInBytes);
9655
9656 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
9657 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
9658 ID3D12VideoDevice4 * This,
9659 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
9660 _In_ REFIID riid,
9661 _COM_Outptr_ void **ppVideoEncoder);
9662
9663 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
9664 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
9665 ID3D12VideoDevice4 * This,
9666 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
9667 _In_ REFIID riid,
9668 _COM_Outptr_ void **ppVideoEncoderHeap);
9669
9670 DECLSPEC_XFGVIRT(ID3D12VideoDevice4, CreateVideoEncoderHeap1)
9671 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap1 )(
9672 ID3D12VideoDevice4 * This,
9673 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
9674 _In_ REFIID riid,
9675 _COM_Outptr_ void **ppVideoEncoderHeap);
9676
9677 END_INTERFACE
9678 } ID3D12VideoDevice4Vtbl;
9679
9680 interface ID3D12VideoDevice4
9681 {
9682 CONST_VTBL struct ID3D12VideoDevice4Vtbl *lpVtbl;
9683 };
9684
9685
9686
9687#ifdef COBJMACROS
9688
9689
9690#define ID3D12VideoDevice4_QueryInterface(This,riid,ppvObject) \
9691 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9692
9693#define ID3D12VideoDevice4_AddRef(This) \
9694 ( (This)->lpVtbl -> AddRef(This) )
9695
9696#define ID3D12VideoDevice4_Release(This) \
9697 ( (This)->lpVtbl -> Release(This) )
9698
9699
9700#define ID3D12VideoDevice4_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
9701 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
9702
9703#define ID3D12VideoDevice4_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
9704 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
9705
9706#define ID3D12VideoDevice4_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
9707 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
9708
9709#define ID3D12VideoDevice4_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
9710 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
9711
9712
9713#define ID3D12VideoDevice4_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
9714 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
9715
9716#define ID3D12VideoDevice4_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
9717 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
9718
9719
9720#define ID3D12VideoDevice4_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
9721 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
9722
9723#define ID3D12VideoDevice4_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
9724 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
9725
9726#define ID3D12VideoDevice4_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
9727 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
9728
9729#define ID3D12VideoDevice4_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
9730 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
9731
9732#define ID3D12VideoDevice4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
9733 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
9734
9735
9736#define ID3D12VideoDevice4_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
9737 ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
9738
9739#define ID3D12VideoDevice4_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
9740 ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
9741
9742
9743#define ID3D12VideoDevice4_CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) \
9744 ( (This)->lpVtbl -> CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) )
9745
9746#endif /* COBJMACROS */
9747
9748
9749#endif /* C style interface */
9750
9751
9752
9753
9754#endif /* __ID3D12VideoDevice4_INTERFACE_DEFINED__ */
9755
9756
9757/* interface __MIDL_itf_d3d12video_0000_0029 */
9758/* [local] */
9759
9760typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1
9761 {
9762 D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc;
9763 BOOL IsSupported;
9764 UINT64 MemoryPoolL0Size;
9765 UINT64 MemoryPoolL1Size;
9766 } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
9767
9768typedef
9769enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
9770 {
9771 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0,
9772 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
9773 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
9774 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
9775 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
9776 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10
9777 } D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
9778
9779DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )
9780typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
9781 {
9782 UINT NodeIndex;
9783 D3D12_VIDEO_ENCODER_CODEC Codec;
9784 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9785 DXGI_FORMAT InputFormat;
9786 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
9787 BOOL IsSupported;
9788 UINT CompressedBitstreamBufferAccessAlignment;
9789 UINT EncoderMetadataBufferAccessAlignment;
9790 UINT MaxEncoderOutputMetadataBufferSize;
9791 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
9792 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9793 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions;
9794 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions;
9795 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions;
9796 UINT EncoderOutputMetadataFramePSNRComponentsNumber;
9797 UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber;
9798 UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize;
9799 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
9800
9801typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
9802 {
9803 float PSNRY;
9804 float PSNRU;
9805 float PSNRV;
9806 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
9807
9808typedef
9809enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
9810 {
9811 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
9812 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1
9813 } D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
9814
9815typedef
9816enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
9817 {
9818 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
9819 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1
9820 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
9821
9822typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
9823 {
9824 D3D12_VIDEO_ENCODER_CODEC Codec;
9825 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9826 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
9827 DXGI_FORMAT InputFormat;
9828 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
9829 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9830 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
9831 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
9832 } D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
9833
9834typedef
9835enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
9836 {
9837 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
9838 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
9839 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2
9840 } D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
9841
9842typedef
9843enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
9844 {
9845 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
9846 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
9847 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2
9848 } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
9849
9850typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
9851 {
9852 UINT NodeIndex;
9853 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9854 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9855 BOOL IsSupported;
9856 UINT MapSourcePreferenceRanking;
9857 UINT BlockSize;
9858 } D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
9859
9860typedef
9861enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
9862 {
9863 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0,
9864 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
9865 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
9866 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4
9867 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
9868
9869DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )
9870typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
9871 {
9872 UINT NodeIndex;
9873 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9874 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9875 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
9876 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
9877 UINT MapSourcePreferenceRanking;
9878 } D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
9879
9880typedef
9881enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
9882 {
9883 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
9884 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
9885 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2
9886 } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
9887
9888typedef
9889enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS
9890 {
9891 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0,
9892 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL ) ,
9893 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL ) ,
9894 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL )
9895 } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
9896
9897DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )
9898typedef
9899enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
9900 {
9901 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0,
9902 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
9903 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
9904 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4
9905 } D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
9906
9907DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )
9908typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
9909 {
9910 UINT NodeIndex;
9911 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9912 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
9913 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9914 BOOL BidirectionalRefFrameEnabled;
9915 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
9916 UINT MaxMotionHints;
9917 UINT MinDeviation;
9918 UINT MaxDeviation;
9919 UINT MapSourcePreferenceRanking;
9920 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
9921 } D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
9922
9923typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
9924 {
9925 UINT NodeIndex;
9926 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9927 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
9928 BOOL IsSupported;
9929 UINT64 MaxResolvedBufferAllocationSize;
9930 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
9931
9932typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
9933 {
9934 BOOL Enabled;
9935 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9936 } D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
9937
9938typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
9939 {
9940 UINT MapSourcePreferenceRanking;
9941 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
9942
9943typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
9944 {
9945 BOOL Enabled;
9946 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9947 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
9948 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
9949
9950typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
9951 {
9952 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
9953 UINT MapSourcePreferenceRanking;
9954 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
9955
9956typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
9957 {
9958 BOOL Enabled;
9959 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9960 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
9961 BOOL BidirectionalRefFrameEnabled;
9962 } D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
9963
9964typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
9965 {
9966 UINT MaxMotionHints;
9967 UINT MinDeviation;
9968 UINT MaxDeviation;
9969 UINT MapSourcePreferenceRanking;
9970 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
9971 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
9972 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
9973
9974typedef
9975enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
9976 {
9977 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0,
9978 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
9979 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
9980 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
9981 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
9982 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
9983 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
9984 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED = ( ( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED ) | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED )
9985 } D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
9986
9987DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )
9988typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
9989 {
9990 UINT NodeIndex;
9991 D3D12_VIDEO_ENCODER_CODEC Codec;
9992 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9993 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
9994 DXGI_FORMAT InputFormat;
9995 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
9996 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9997 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
9998 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
9999 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
10000 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
10001 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
10002 UINT Pow2DownscaleFactor;
10003 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
10004 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
10005
10006typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
10007 {
10008 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
10009 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
10010
10011typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
10012 {
10013 UINT MaxSubregionsNumber;
10014 UINT MaxIntraRefreshFrameDuration;
10015 UINT SubregionBlockPixelsSize;
10016 UINT QPMapRegionPixelsSize;
10017 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
10018 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
10019 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
10020 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
10021 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
10022
10023typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
10024 {
10025 BOOL Enabled;
10026 UINT Pow2DownscaleFactor;
10027 } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
10028
10029typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
10030 {
10031 UINT NodeIndex;
10032 D3D12_VIDEO_ENCODER_CODEC Codec;
10033 DXGI_FORMAT InputFormat;
10034 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
10035 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
10036 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
10037 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
10038 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
10039 UINT ResolutionsListCount;
10040 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
10041 UINT MaxReferenceFramesInDPB;
10042 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
10043 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
10044 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
10045 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
10046 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 *pResolutionDependentSupport;
10047 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
10048 UINT MaxQualityVsSpeed;
10049 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
10050 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
10051 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
10052 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
10053 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
10054
10055typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
10056 {
10057 BOOL FullFrameIdentical;
10058 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
10059 UINT NumDirtyRects;
10060 _Field_size_full_(NumDirtyRects) RECT *pDirtyRects;
10061 UINT SourceDPBFrameReference;
10062 } D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
10063
10064typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
10065 {
10066 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
10067 union
10068 {
10069 ID3D12Resource *pOpaqueLayoutBuffer;
10070 D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO *pCPUBuffer;
10071 } ;
10072 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
10073
10074typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
10075 {
10076 ID3D12Resource *pOpaqueQuantizationMap;
10077 } D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
10078
10079typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
10080 {
10081 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
10082 UINT SearchDeviationLimit;
10083 } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
10084
10085typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
10086 {
10087 POINT SourcePoint;
10088 RECT DestRect;
10089 } D3D12_VIDEO_ENCODER_MOVE_RECT;
10090
10091typedef
10092enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
10093 {
10094 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0,
10095 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1
10096 } D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
10097
10098typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
10099 {
10100 UINT NumMoveRegions;
10101 _Field_size_full_(NumMoveRegions) D3D12_VIDEO_ENCODER_MOVE_RECT *pMoveRegions;
10102 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
10103 UINT SourceDPBFrameReference;
10104 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
10105 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
10106 } D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
10107
10108typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
10109 {
10110 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
10111 union
10112 {
10113 ID3D12Resource *pOpaqueLayoutBuffer;
10114 D3D12_VIDEO_ENCODER_MOVEREGION_INFO *pCPUBuffer;
10115 } ;
10116 } D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
10117
10118typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
10119 {
10120 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
10121 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
10122 UINT slice_pic_parameter_set_id;
10123 UINT PictureOrderCountNumber;
10124 UINT TemporalLayerIndex;
10125 UINT List0ReferenceFramesCount;
10126 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
10127 UINT List1ReferenceFramesCount;
10128 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
10129 UINT ReferenceFramesReconPictureDescriptorsCount;
10130 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
10131 UINT List0RefPicModificationsCount;
10132 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
10133 UINT List1RefPicModificationsCount;
10134 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
10135 UINT QPMapValuesCount;
10136 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
10137 UCHAR diff_cu_chroma_qp_offset_depth;
10138 UCHAR log2_sao_offset_scale_luma;
10139 UCHAR log2_sao_offset_scale_chroma;
10140 UCHAR log2_max_transform_skip_block_size_minus2;
10141 UCHAR chroma_qp_offset_list_len_minus1;
10142 CHAR cb_qp_offset_list[ 6 ];
10143 CHAR cr_qp_offset_list[ 6 ];
10144 UINT num_ref_idx_l0_active_minus1;
10145 UINT num_ref_idx_l1_active_minus1;
10146 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
10147
10148typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
10149 {
10150 UINT DataSize;
10151 union
10152 {
10153 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
10154 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2 *pHEVCPicData;
10155 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
10156 } ;
10157 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
10158
10159typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
10160 {
10161 ID3D12Resource *pDownscaledFrame;
10162 UINT64 Subresource;
10163 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
10164 } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
10165
10166typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
10167 {
10168 UINT IntraRefreshFrameIndex;
10169 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
10170 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
10171 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
10172 D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
10173 D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
10174 D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
10175 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
10176 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
10177
10178typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
10179 {
10180 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
10181 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
10182 ID3D12Resource *pInputFrame;
10183 UINT InputFrameSubresource;
10184 UINT CurrentFrameBitstreamMetadataSize;
10185 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
10186 } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
10187
10188typedef
10189enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
10190 {
10191 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
10192 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1
10193 } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
10194
10195typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
10196 {
10197 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
10198 UINT ExpectedSubregionCount;
10199 UINT64 *pSubregionBitstreamsBaseOffsets;
10200 ID3D12Resource **ppSubregionBitstreams;
10201 ID3D12Resource **ppSubregionSizes;
10202 ID3D12Resource **ppSubregionOffsets;
10203 ID3D12Fence **ppSubregionFences;
10204 UINT64 *pSubregionFenceValues;
10205 } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
10206
10207typedef
10208enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
10209 {
10210 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
10211 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1
10212 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
10213
10214typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
10215 {
10216 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
10217 union
10218 {
10219 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
10220 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
10221 } ;
10222 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
10223
10224typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
10225 {
10226 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
10227 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
10228 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
10229 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
10230 } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
10231
10232typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
10233 {
10234 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
10235 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
10236 DXGI_FORMAT EncoderInputFormat;
10237 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
10238 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
10239 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
10240 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
10241 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
10242
10243typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
10244 {
10245 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
10246 ID3D12Resource *pOutputQPMap;
10247 ID3D12Resource *pOutputSATDMap;
10248 ID3D12Resource *pOutputBitAllocationMap;
10249 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
10250 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
10251 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
10252
10253typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
10254 {
10255 ID3D12Resource *pQuantizationMap;
10256 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
10257
10258typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
10259 {
10260 BOOL FullFrameIdentical;
10261 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
10262 ID3D12Resource *pDirtyRegionsMap;
10263 UINT SourceDPBFrameReference;
10264 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
10265
10266typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
10267 {
10268 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
10269 UINT NumHintsPerPixel;
10270 _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMaps;
10271 _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsSubresources;
10272 _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMapsMetadata;
10273 _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsMetadataSubresources;
10274 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
10275 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
10276 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
10277
10278typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
10279 {
10280 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
10281 union
10282 {
10283 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
10284 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
10285 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
10286 } ;
10287 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
10288
10289typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
10290 {
10291 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
10292 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
10293 } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
10294
10295typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
10296 {
10297 ID3D12Resource *pOpaqueLayoutBuffer;
10298 } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
10299
10300
10301
10302extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_c_ifspec;
10303extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_s_ifspec;
10304
10305#ifndef __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
10306#define __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
10307
10308/* interface ID3D12VideoEncodeCommandList4 */
10309/* [unique][local][object][uuid] */
10310
10311
10312EXTERN_C const IID IID_ID3D12VideoEncodeCommandList4;
10313
10314#if defined(__cplusplus) && !defined(CINTERFACE)
10315
10316 MIDL_INTERFACE("69aeb5b7-55f2-4012-8b73-3a88d65a204c")
10317 ID3D12VideoEncodeCommandList4 : public ID3D12VideoEncodeCommandList3
10318 {
10319 public:
10320 virtual void STDMETHODCALLTYPE EncodeFrame1(
10321 _In_ ID3D12VideoEncoder *pEncoder,
10322 _In_ ID3D12VideoEncoderHeap1 *pHeap,
10323 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
10324 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
10325
10326 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata1(
10327 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
10328 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
10329
10330 virtual void STDMETHODCALLTYPE ResolveInputParamLayout(
10331 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
10332 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
10333
10334 };
10335
10336
10337#else /* C style interface */
10338
10339 typedef struct ID3D12VideoEncodeCommandList4Vtbl
10340 {
10341 BEGIN_INTERFACE
10342
10343 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10344 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10345 ID3D12VideoEncodeCommandList4 * This,
10346 REFIID riid,
10347 _COM_Outptr_ void **ppvObject);
10348
10349 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10350 ULONG ( STDMETHODCALLTYPE *AddRef )(
10351 ID3D12VideoEncodeCommandList4 * This);
10352
10353 DECLSPEC_XFGVIRT(IUnknown, Release)
10354 ULONG ( STDMETHODCALLTYPE *Release )(
10355 ID3D12VideoEncodeCommandList4 * This);
10356
10357 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10358 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10359 ID3D12VideoEncodeCommandList4 * This,
10360 _In_ REFGUID guid,
10361 _Inout_ UINT *pDataSize,
10362 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10363
10364 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10365 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10366 ID3D12VideoEncodeCommandList4 * This,
10367 _In_ REFGUID guid,
10368 _In_ UINT DataSize,
10369 _In_reads_bytes_opt_( DataSize ) const void *pData);
10370
10371 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10372 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10373 ID3D12VideoEncodeCommandList4 * This,
10374 _In_ REFGUID guid,
10375 _In_opt_ const IUnknown *pData);
10376
10377 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10378 HRESULT ( STDMETHODCALLTYPE *SetName )(
10379 ID3D12VideoEncodeCommandList4 * This,
10380 _In_z_ LPCWSTR Name);
10381
10382 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10383 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10384 ID3D12VideoEncodeCommandList4 * This,
10385 REFIID riid,
10386 _COM_Outptr_opt_ void **ppvDevice);
10387
10388 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
10389 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
10390 ID3D12VideoEncodeCommandList4 * This);
10391
10392 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
10393 HRESULT ( STDMETHODCALLTYPE *Close )(
10394 ID3D12VideoEncodeCommandList4 * This);
10395
10396 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
10397 HRESULT ( STDMETHODCALLTYPE *Reset )(
10398 ID3D12VideoEncodeCommandList4 * This,
10399 _In_ ID3D12CommandAllocator *pAllocator);
10400
10401 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
10402 void ( STDMETHODCALLTYPE *ClearState )(
10403 ID3D12VideoEncodeCommandList4 * This);
10404
10405 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
10406 void ( STDMETHODCALLTYPE *ResourceBarrier )(
10407 ID3D12VideoEncodeCommandList4 * This,
10408 _In_ UINT NumBarriers,
10409 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
10410
10411 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
10412 void ( STDMETHODCALLTYPE *DiscardResource )(
10413 ID3D12VideoEncodeCommandList4 * This,
10414 _In_ ID3D12Resource *pResource,
10415 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
10416
10417 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
10418 void ( STDMETHODCALLTYPE *BeginQuery )(
10419 ID3D12VideoEncodeCommandList4 * This,
10420 _In_ ID3D12QueryHeap *pQueryHeap,
10421 _In_ D3D12_QUERY_TYPE Type,
10422 _In_ UINT Index);
10423
10424 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
10425 void ( STDMETHODCALLTYPE *EndQuery )(
10426 ID3D12VideoEncodeCommandList4 * This,
10427 _In_ ID3D12QueryHeap *pQueryHeap,
10428 _In_ D3D12_QUERY_TYPE Type,
10429 _In_ UINT Index);
10430
10431 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
10432 void ( STDMETHODCALLTYPE *ResolveQueryData )(
10433 ID3D12VideoEncodeCommandList4 * This,
10434 _In_ ID3D12QueryHeap *pQueryHeap,
10435 _In_ D3D12_QUERY_TYPE Type,
10436 _In_ UINT StartIndex,
10437 _In_ UINT NumQueries,
10438 _In_ ID3D12Resource *pDestinationBuffer,
10439 _In_ UINT64 AlignedDestinationBufferOffset);
10440
10441 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
10442 void ( STDMETHODCALLTYPE *SetPredication )(
10443 ID3D12VideoEncodeCommandList4 * This,
10444 _In_opt_ ID3D12Resource *pBuffer,
10445 _In_ UINT64 AlignedBufferOffset,
10446 _In_ D3D12_PREDICATION_OP Operation);
10447
10448 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
10449 void ( STDMETHODCALLTYPE *SetMarker )(
10450 ID3D12VideoEncodeCommandList4 * This,
10451 UINT Metadata,
10452 _In_reads_bytes_opt_(Size) const void *pData,
10453 UINT Size);
10454
10455 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
10456 void ( STDMETHODCALLTYPE *BeginEvent )(
10457 ID3D12VideoEncodeCommandList4 * This,
10458 UINT Metadata,
10459 _In_reads_bytes_opt_(Size) const void *pData,
10460 UINT Size);
10461
10462 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
10463 void ( STDMETHODCALLTYPE *EndEvent )(
10464 ID3D12VideoEncodeCommandList4 * This);
10465
10466 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
10467 void ( STDMETHODCALLTYPE *EstimateMotion )(
10468 ID3D12VideoEncodeCommandList4 * This,
10469 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
10470 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
10471 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
10472
10473 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
10474 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
10475 ID3D12VideoEncodeCommandList4 * This,
10476 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
10477 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
10478
10479 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
10480 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
10481 ID3D12VideoEncodeCommandList4 * This,
10482 UINT Count,
10483 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
10484 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
10485
10486 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
10487 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
10488 ID3D12VideoEncodeCommandList4 * This,
10489 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
10490
10491 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
10492 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
10493 ID3D12VideoEncodeCommandList4 * This,
10494 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
10495 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
10496 SIZE_T InitializationParametersSizeInBytes);
10497
10498 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
10499 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
10500 ID3D12VideoEncodeCommandList4 * This,
10501 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
10502 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
10503 SIZE_T ExecutionParametersSizeInBytes);
10504
10505 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
10506 void ( STDMETHODCALLTYPE *EncodeFrame )(
10507 ID3D12VideoEncodeCommandList4 * This,
10508 _In_ ID3D12VideoEncoder *pEncoder,
10509 _In_ ID3D12VideoEncoderHeap *pHeap,
10510 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
10511 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
10512
10513 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
10514 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
10515 ID3D12VideoEncodeCommandList4 * This,
10516 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
10517 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
10518
10519 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
10520 void ( STDMETHODCALLTYPE *Barrier )(
10521 ID3D12VideoEncodeCommandList4 * This,
10522 UINT32 NumBarrierGroups,
10523 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
10524
10525 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, EncodeFrame1)
10526 void ( STDMETHODCALLTYPE *EncodeFrame1 )(
10527 ID3D12VideoEncodeCommandList4 * This,
10528 _In_ ID3D12VideoEncoder *pEncoder,
10529 _In_ ID3D12VideoEncoderHeap1 *pHeap,
10530 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
10531 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments);
10532
10533 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveEncoderOutputMetadata1)
10534 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata1 )(
10535 ID3D12VideoEncodeCommandList4 * This,
10536 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
10537 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments);
10538
10539 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveInputParamLayout)
10540 void ( STDMETHODCALLTYPE *ResolveInputParamLayout )(
10541 ID3D12VideoEncodeCommandList4 * This,
10542 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
10543 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments);
10544
10545 END_INTERFACE
10546 } ID3D12VideoEncodeCommandList4Vtbl;
10547
10548 interface ID3D12VideoEncodeCommandList4
10549 {
10550 CONST_VTBL struct ID3D12VideoEncodeCommandList4Vtbl *lpVtbl;
10551 };
10552
10553
10554
10555#ifdef COBJMACROS
10556
10557
10558#define ID3D12VideoEncodeCommandList4_QueryInterface(This,riid,ppvObject) \
10559 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10560
10561#define ID3D12VideoEncodeCommandList4_AddRef(This) \
10562 ( (This)->lpVtbl -> AddRef(This) )
10563
10564#define ID3D12VideoEncodeCommandList4_Release(This) \
10565 ( (This)->lpVtbl -> Release(This) )
10566
10567
10568#define ID3D12VideoEncodeCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
10569 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10570
10571#define ID3D12VideoEncodeCommandList4_SetPrivateData(This,guid,DataSize,pData) \
10572 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10573
10574#define ID3D12VideoEncodeCommandList4_SetPrivateDataInterface(This,guid,pData) \
10575 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10576
10577#define ID3D12VideoEncodeCommandList4_SetName(This,Name) \
10578 ( (This)->lpVtbl -> SetName(This,Name) )
10579
10580
10581#define ID3D12VideoEncodeCommandList4_GetDevice(This,riid,ppvDevice) \
10582 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10583
10584
10585#define ID3D12VideoEncodeCommandList4_GetType(This) \
10586 ( (This)->lpVtbl -> GetType(This) )
10587
10588
10589#define ID3D12VideoEncodeCommandList4_Close(This) \
10590 ( (This)->lpVtbl -> Close(This) )
10591
10592#define ID3D12VideoEncodeCommandList4_Reset(This,pAllocator) \
10593 ( (This)->lpVtbl -> Reset(This,pAllocator) )
10594
10595#define ID3D12VideoEncodeCommandList4_ClearState(This) \
10596 ( (This)->lpVtbl -> ClearState(This) )
10597
10598#define ID3D12VideoEncodeCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
10599 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
10600
10601#define ID3D12VideoEncodeCommandList4_DiscardResource(This,pResource,pRegion) \
10602 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
10603
10604#define ID3D12VideoEncodeCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
10605 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
10606
10607#define ID3D12VideoEncodeCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
10608 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
10609
10610#define ID3D12VideoEncodeCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
10611 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
10612
10613#define ID3D12VideoEncodeCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
10614 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
10615
10616#define ID3D12VideoEncodeCommandList4_SetMarker(This,Metadata,pData,Size) \
10617 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
10618
10619#define ID3D12VideoEncodeCommandList4_BeginEvent(This,Metadata,pData,Size) \
10620 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
10621
10622#define ID3D12VideoEncodeCommandList4_EndEvent(This) \
10623 ( (This)->lpVtbl -> EndEvent(This) )
10624
10625#define ID3D12VideoEncodeCommandList4_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
10626 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
10627
10628#define ID3D12VideoEncodeCommandList4_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
10629 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
10630
10631#define ID3D12VideoEncodeCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
10632 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
10633
10634#define ID3D12VideoEncodeCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
10635 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
10636
10637
10638#define ID3D12VideoEncodeCommandList4_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
10639 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
10640
10641#define ID3D12VideoEncodeCommandList4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
10642 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
10643
10644
10645#define ID3D12VideoEncodeCommandList4_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
10646 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
10647
10648#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
10649 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
10650
10651
10652#define ID3D12VideoEncodeCommandList4_Barrier(This,NumBarrierGroups,pBarrierGroups) \
10653 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
10654
10655
10656#define ID3D12VideoEncodeCommandList4_EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
10657 ( (This)->lpVtbl -> EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
10658
10659#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) \
10660 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) )
10661
10662#define ID3D12VideoEncodeCommandList4_ResolveInputParamLayout(This,pInputArguments,pOutputArguments) \
10663 ( (This)->lpVtbl -> ResolveInputParamLayout(This,pInputArguments,pOutputArguments) )
10664
10665#endif /* COBJMACROS */
10666
10667
10668#endif /* C style interface */
10669
10670
10671
10672
10673#endif /* __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__ */
10674
10675
10676/* interface __MIDL_itf_d3d12video_0000_0030 */
10677/* [local] */
10678
10679#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
10680#pragma endregion
10681DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
10682DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
10683DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
10684DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
10685DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
10686DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
10687DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
10688DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
10689DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
10690DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
10691DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
10692DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
10693DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
10694DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
10695DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
10696DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
10697DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
10698DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
10699DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);
10700DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
10701DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);
10702DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
10703DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);
10704DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);
10705DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
10706DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
10707DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
10708DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
10709DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
10710DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
10711
10712
10713extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_c_ifspec;
10714extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_s_ifspec;
10715
10716/* Additional Prototypes for ALL interfaces */
10717
10718/* end of Additional Prototypes */
10719
10720#ifdef __cplusplus
10721}
10722#endif
10723
10724#endif
10725
10726