Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/directx_headers/include/directx/d3d12video.h
21770 views
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__
57
typedef interface ID3D12VideoDecoderHeap ID3D12VideoDecoderHeap;
58
59
#endif /* __ID3D12VideoDecoderHeap_FWD_DEFINED__ */
60
61
62
#ifndef __ID3D12VideoDevice_FWD_DEFINED__
63
#define __ID3D12VideoDevice_FWD_DEFINED__
64
typedef interface ID3D12VideoDevice ID3D12VideoDevice;
65
66
#endif /* __ID3D12VideoDevice_FWD_DEFINED__ */
67
68
69
#ifndef __ID3D12VideoDecoder_FWD_DEFINED__
70
#define __ID3D12VideoDecoder_FWD_DEFINED__
71
typedef interface ID3D12VideoDecoder ID3D12VideoDecoder;
72
73
#endif /* __ID3D12VideoDecoder_FWD_DEFINED__ */
74
75
76
#ifndef __ID3D12VideoProcessor_FWD_DEFINED__
77
#define __ID3D12VideoProcessor_FWD_DEFINED__
78
typedef interface ID3D12VideoProcessor ID3D12VideoProcessor;
79
80
#endif /* __ID3D12VideoProcessor_FWD_DEFINED__ */
81
82
83
#ifndef __ID3D12VideoDecodeCommandList_FWD_DEFINED__
84
#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
85
typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
86
87
#endif /* __ID3D12VideoDecodeCommandList_FWD_DEFINED__ */
88
89
90
#ifndef __ID3D12VideoProcessCommandList_FWD_DEFINED__
91
#define __ID3D12VideoProcessCommandList_FWD_DEFINED__
92
typedef interface ID3D12VideoProcessCommandList ID3D12VideoProcessCommandList;
93
94
#endif /* __ID3D12VideoProcessCommandList_FWD_DEFINED__ */
95
96
97
#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
98
#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
99
typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
100
101
#endif /* __ID3D12VideoDecodeCommandList1_FWD_DEFINED__ */
102
103
104
#ifndef __ID3D12VideoProcessCommandList1_FWD_DEFINED__
105
#define __ID3D12VideoProcessCommandList1_FWD_DEFINED__
106
typedef interface ID3D12VideoProcessCommandList1 ID3D12VideoProcessCommandList1;
107
108
#endif /* __ID3D12VideoProcessCommandList1_FWD_DEFINED__ */
109
110
111
#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
112
#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
113
typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
114
115
#endif /* __ID3D12VideoMotionEstimator_FWD_DEFINED__ */
116
117
118
#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
119
#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
120
typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
121
122
#endif /* __ID3D12VideoMotionVectorHeap_FWD_DEFINED__ */
123
124
125
#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
126
#define __ID3D12VideoDevice1_FWD_DEFINED__
127
typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
128
129
#endif /* __ID3D12VideoDevice1_FWD_DEFINED__ */
130
131
132
#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
133
#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
134
typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
135
136
#endif /* __ID3D12VideoEncodeCommandList_FWD_DEFINED__ */
137
138
139
#ifndef __ID3D12VideoDecoder1_FWD_DEFINED__
140
#define __ID3D12VideoDecoder1_FWD_DEFINED__
141
typedef interface ID3D12VideoDecoder1 ID3D12VideoDecoder1;
142
143
#endif /* __ID3D12VideoDecoder1_FWD_DEFINED__ */
144
145
146
#ifndef __ID3D12VideoDecoderHeap1_FWD_DEFINED__
147
#define __ID3D12VideoDecoderHeap1_FWD_DEFINED__
148
typedef interface ID3D12VideoDecoderHeap1 ID3D12VideoDecoderHeap1;
149
150
#endif /* __ID3D12VideoDecoderHeap1_FWD_DEFINED__ */
151
152
153
#ifndef __ID3D12VideoProcessor1_FWD_DEFINED__
154
#define __ID3D12VideoProcessor1_FWD_DEFINED__
155
typedef interface ID3D12VideoProcessor1 ID3D12VideoProcessor1;
156
157
#endif /* __ID3D12VideoProcessor1_FWD_DEFINED__ */
158
159
160
#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
161
#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
162
typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
163
164
#endif /* __ID3D12VideoExtensionCommand_FWD_DEFINED__ */
165
166
167
#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
168
#define __ID3D12VideoDevice2_FWD_DEFINED__
169
typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
170
171
#endif /* __ID3D12VideoDevice2_FWD_DEFINED__ */
172
173
174
#ifndef __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
175
#define __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
176
typedef interface ID3D12VideoDecodeCommandList2 ID3D12VideoDecodeCommandList2;
177
178
#endif /* __ID3D12VideoDecodeCommandList2_FWD_DEFINED__ */
179
180
181
#ifndef __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
182
#define __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
183
typedef interface ID3D12VideoDecodeCommandList3 ID3D12VideoDecodeCommandList3;
184
185
#endif /* __ID3D12VideoDecodeCommandList3_FWD_DEFINED__ */
186
187
188
#ifndef __ID3D12VideoProcessCommandList2_FWD_DEFINED__
189
#define __ID3D12VideoProcessCommandList2_FWD_DEFINED__
190
typedef interface ID3D12VideoProcessCommandList2 ID3D12VideoProcessCommandList2;
191
192
#endif /* __ID3D12VideoProcessCommandList2_FWD_DEFINED__ */
193
194
195
#ifndef __ID3D12VideoProcessCommandList3_FWD_DEFINED__
196
#define __ID3D12VideoProcessCommandList3_FWD_DEFINED__
197
typedef interface ID3D12VideoProcessCommandList3 ID3D12VideoProcessCommandList3;
198
199
#endif /* __ID3D12VideoProcessCommandList3_FWD_DEFINED__ */
200
201
202
#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
203
#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
204
typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
205
206
#endif /* __ID3D12VideoEncodeCommandList1_FWD_DEFINED__ */
207
208
209
#ifndef __ID3D12VideoEncoder_FWD_DEFINED__
210
#define __ID3D12VideoEncoder_FWD_DEFINED__
211
typedef interface ID3D12VideoEncoder ID3D12VideoEncoder;
212
213
#endif /* __ID3D12VideoEncoder_FWD_DEFINED__ */
214
215
216
#ifndef __ID3D12VideoEncoderHeap_FWD_DEFINED__
217
#define __ID3D12VideoEncoderHeap_FWD_DEFINED__
218
typedef interface ID3D12VideoEncoderHeap ID3D12VideoEncoderHeap;
219
220
#endif /* __ID3D12VideoEncoderHeap_FWD_DEFINED__ */
221
222
223
#ifndef __ID3D12VideoDevice3_FWD_DEFINED__
224
#define __ID3D12VideoDevice3_FWD_DEFINED__
225
typedef interface ID3D12VideoDevice3 ID3D12VideoDevice3;
226
227
#endif /* __ID3D12VideoDevice3_FWD_DEFINED__ */
228
229
230
#ifndef __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
231
#define __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
232
typedef interface ID3D12VideoEncodeCommandList2 ID3D12VideoEncodeCommandList2;
233
234
#endif /* __ID3D12VideoEncodeCommandList2_FWD_DEFINED__ */
235
236
237
#ifndef __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
238
#define __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
239
typedef interface ID3D12VideoEncodeCommandList3 ID3D12VideoEncodeCommandList3;
240
241
#endif /* __ID3D12VideoEncodeCommandList3_FWD_DEFINED__ */
242
243
244
#ifndef __ID3D12VideoEncoderHeap1_FWD_DEFINED__
245
#define __ID3D12VideoEncoderHeap1_FWD_DEFINED__
246
typedef interface ID3D12VideoEncoderHeap1 ID3D12VideoEncoderHeap1;
247
248
#endif /* __ID3D12VideoEncoderHeap1_FWD_DEFINED__ */
249
250
251
#ifndef __ID3D12VideoDevice4_FWD_DEFINED__
252
#define __ID3D12VideoDevice4_FWD_DEFINED__
253
typedef interface ID3D12VideoDevice4 ID3D12VideoDevice4;
254
255
#endif /* __ID3D12VideoDevice4_FWD_DEFINED__ */
256
257
258
#ifndef __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
259
#define __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
260
typedef 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
272
extern "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)
282
typedef
283
enum 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
290
typedef
291
enum 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
300
typedef struct D3D12_VIDEO_FORMAT
301
{
302
DXGI_FORMAT Format;
303
DXGI_COLOR_SPACE_TYPE ColorSpace;
304
} D3D12_VIDEO_FORMAT;
305
306
typedef struct D3D12_VIDEO_SAMPLE
307
{
308
UINT Width;
309
UINT Height;
310
D3D12_VIDEO_FORMAT Format;
311
} D3D12_VIDEO_SAMPLE;
312
313
typedef
314
enum 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
320
typedef
321
enum 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
375
typedef
376
enum D3D12_BITSTREAM_ENCRYPTION_TYPE
377
{
378
D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
379
} D3D12_BITSTREAM_ENCRYPTION_TYPE;
380
381
typedef 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
388
typedef struct D3D12_VIDEO_DECODER_DESC
389
{
390
UINT NodeMask;
391
D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
392
} D3D12_VIDEO_DECODER_DESC;
393
394
typedef 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
406
typedef struct D3D12_VIDEO_SIZE_RANGE
407
{
408
UINT MaxWidth;
409
UINT MaxHeight;
410
UINT MinWidth;
411
UINT MinHeight;
412
} D3D12_VIDEO_SIZE_RANGE;
413
414
typedef
415
enum 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
427
typedef
428
enum 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
441
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )
442
typedef
443
enum 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
450
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )
451
typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
452
{
453
BOOL Enable;
454
FLOAT Alpha;
455
} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
456
457
typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
458
{
459
BOOL Enable;
460
FLOAT Lower;
461
FLOAT Upper;
462
} D3D12_VIDEO_PROCESS_LUMA_KEY;
463
464
typedef 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
485
typedef
486
enum 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
494
typedef 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
507
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_c_ifspec;
508
extern 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
517
EXTERN_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
665
EXTERN_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
803
EXTERN_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
947
typedef
948
enum 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
956
typedef
957
enum 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
963
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )
964
typedef
965
enum 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
974
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )
975
typedef
976
enum 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
985
typedef
986
enum 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
994
typedef 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
1008
typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
1009
{
1010
UINT NodeIndex;
1011
UINT ProfileCount;
1012
} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
1013
1014
typedef 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
1021
typedef 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
1028
typedef 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
1036
typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
1037
{
1038
BOOL IOCoherent;
1039
} D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
1040
1041
typedef
1042
enum 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
1053
typedef
1054
enum 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
1066
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )
1067
typedef 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
1079
typedef
1080
enum 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
1086
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )
1087
typedef
1088
enum 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
1096
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )
1097
typedef 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
1103
typedef 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
1115
typedef 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
1122
typedef 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
1132
typedef 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
1140
typedef 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
1147
typedef 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
1155
typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
1156
{
1157
ID3D12Resource *pBuffer;
1158
UINT64 Offset;
1159
UINT64 Size;
1160
} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
1161
1162
typedef 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
1171
typedef 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
1180
typedef 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
1189
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_c_ifspec;
1190
extern 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
1199
EXTERN_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
1374
typedef
1375
enum 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
1387
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )
1388
typedef
1389
enum 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
1403
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )
1404
typedef
1405
enum 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
1417
typedef
1418
enum 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
1425
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )
1426
typedef 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
1434
typedef
1435
enum 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
1441
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )
1442
typedef 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
1461
typedef 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
1467
typedef 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
1480
typedef 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
1490
typedef 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
1497
typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
1498
{
1499
UINT OutputIndex;
1500
UINT InputFrameOrField;
1501
} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
1502
1503
typedef 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
1510
typedef 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
1520
typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
1521
{
1522
ID3D12Resource *pTexture2D;
1523
UINT Subresource;
1524
} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
1525
1526
typedef 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
1534
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_c_ifspec;
1535
extern 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
1544
EXTERN_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
1862
EXTERN_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
2178
typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
2179
{
2180
UINT64 Offset;
2181
ID3D12Resource *pBuffer;
2182
} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
2183
2184
typedef 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
2195
typedef 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
2205
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_c_ifspec;
2206
extern 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
2215
EXTERN_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
2485
typedef 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
2498
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_c_ifspec;
2499
extern 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
2508
EXTERN_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
2781
typedef
2782
enum 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
2788
typedef
2789
enum 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
2796
DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )
2797
typedef
2798
enum 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
2803
typedef
2804
enum 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
2810
DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )
2811
typedef 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
2819
typedef 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
2828
typedef 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
2842
typedef 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
2853
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_c_ifspec;
2854
extern 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
2863
EXTERN_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
3020
typedef 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
3031
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_c_ifspec;
3032
extern 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
3041
EXTERN_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
3202
EXTERN_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
3348
typedef struct D3D12_RESOURCE_COORDINATE
3349
{
3350
UINT64 X;
3351
UINT Y;
3352
UINT Z;
3353
UINT SubresourceIndex;
3354
} D3D12_RESOURCE_COORDINATE;
3355
3356
typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
3357
{
3358
ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3359
} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
3360
3361
typedef 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
3370
typedef 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
3376
typedef 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
3385
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_c_ifspec;
3386
extern 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
3395
EXTERN_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
3733
typedef
3734
enum 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
3740
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )
3741
typedef 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
3748
typedef 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
3754
typedef 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
3760
typedef 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
3768
typedef 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
3779
typedef
3780
enum 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
3791
typedef
3792
enum 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
3807
typedef
3808
enum 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
3815
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )
3816
typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
3817
{
3818
UINT NodeIndex;
3819
UINT CommandCount;
3820
} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
3821
3822
typedef 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
3829
typedef 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
3836
typedef 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
3844
typedef 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
3851
typedef 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
3859
typedef 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
3869
typedef 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
3879
typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
3880
{
3881
UINT NodeMask;
3882
GUID CommandId;
3883
} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
3884
3885
3886
3887
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_c_ifspec;
3888
extern 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
3897
EXTERN_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
4052
EXTERN_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
4207
EXTERN_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
4385
EXTERN_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
4546
EXTERN_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
4782
EXTERN_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
5093
EXTERN_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
5405
EXTERN_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
5718
EXTERN_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
6032
EXTERN_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
6334
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
6335
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
6336
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6337
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
6338
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
6339
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
6340
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6341
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6342
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
6343
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
6344
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
6345
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
6346
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);
6347
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);
6348
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);
6349
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);
6350
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);
6351
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);
6352
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);
6353
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);
6354
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);
6355
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);
6356
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
6357
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
6358
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
6359
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
6360
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
6361
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
6362
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
6363
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
6364
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4);
6365
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd);
6366
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97);
6367
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d);
6368
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac);
6369
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21);
6370
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);
6371
typedef
6372
enum 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
6379
typedef
6380
enum 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
6408
typedef
6409
enum 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
6415
typedef 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
6421
typedef
6422
enum 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
6453
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)
6454
typedef
6455
enum 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
6462
typedef
6463
enum 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
6471
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)
6472
typedef
6473
enum 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
6482
typedef
6483
enum 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
6493
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)
6494
typedef
6495
enum 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
6504
typedef
6505
enum 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
6518
typedef
6519
enum 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
6533
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)
6534
typedef
6535
enum 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
6543
typedef
6544
enum 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
6553
typedef
6554
enum 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
6563
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)
6564
typedef
6565
enum 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
6573
typedef
6574
enum 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
6583
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)
6584
typedef
6585
enum 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
6599
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)
6600
typedef 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
6614
typedef
6615
enum 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
6623
typedef
6624
enum 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
6633
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)
6634
typedef
6635
enum 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
6641
typedef 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
6649
typedef 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
6655
typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
6656
{
6657
UINT IntraDistance;
6658
UINT InterFramePeriod;
6659
} D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
6660
6661
typedef 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
6668
typedef 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
6679
typedef
6680
enum 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
6700
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)
6701
typedef 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
6707
typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
6708
{
6709
UINT64 EnabledFeatures;
6710
INT64 FeatureValue[ 8 ];
6711
} D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
6712
6713
typedef 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
6722
typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP
6723
{
6724
UINT SegmentsMapByteSize;
6725
UINT8 *pSegmentsMap;
6726
} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
6727
6728
typedef 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
6741
typedef 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
6748
typedef 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
6762
typedef 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
6768
typedef 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
6778
typedef 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
6806
typedef 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
6815
typedef 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
6828
typedef
6829
enum 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
6838
typedef
6839
enum 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
6853
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)
6854
typedef 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
6861
typedef 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
6869
typedef 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
6880
typedef 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
6892
typedef 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
6904
typedef 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
6917
typedef 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
6928
typedef 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
6942
typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP
6943
{
6944
UINT QualityVsSpeed;
6945
} D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
6946
6947
typedef 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
6964
typedef 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
6972
typedef
6973
enum 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
6980
typedef 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
6987
typedef
6988
enum 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
6995
typedef
6996
enum 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
7009
typedef 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
7020
typedef
7021
enum 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
7045
typedef
7046
enum 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
7052
typedef
7053
enum 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
7070
typedef 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
7076
typedef 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
7087
typedef 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
7097
typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
7098
{
7099
UINT Width;
7100
UINT Height;
7101
} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
7102
7103
typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
7104
{
7105
UINT WidthRatio;
7106
UINT HeightRatio;
7107
} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
7108
7109
typedef 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
7116
typedef 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
7129
typedef 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
7138
typedef 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
7146
typedef
7147
enum 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
7153
typedef 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
7163
typedef
7164
enum 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
7176
typedef 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
7186
typedef
7187
enum 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
7200
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)
7201
typedef 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
7217
typedef 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
7226
typedef 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
7238
typedef
7239
enum 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
7248
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)
7249
typedef 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
7260
typedef 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
7268
typedef
7269
enum 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
7282
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)
7283
typedef
7284
enum 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
7295
typedef
7296
enum 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
7308
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)
7309
typedef 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
7315
typedef
7316
enum 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
7353
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)
7354
typedef
7355
enum 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
7363
typedef
7364
enum 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
7372
typedef 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
7383
typedef
7384
enum 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
7391
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)
7392
typedef 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
7411
typedef 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
7423
typedef 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
7432
typedef 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
7441
typedef 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
7450
typedef 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
7461
typedef 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
7470
typedef
7471
enum 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
7500
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)
7501
typedef
7502
enum 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
7511
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)
7512
typedef
7513
enum 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
7520
typedef 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
7527
typedef
7528
enum 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
7550
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)
7551
typedef 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
7562
typedef 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
7573
typedef 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
7579
typedef
7580
enum 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
7589
typedef 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
7597
typedef
7598
enum 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
7617
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)
7618
typedef 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
7627
typedef 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
7634
typedef 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
7645
typedef 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
7665
typedef 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
7676
typedef 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
7687
typedef 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
7709
typedef 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
7722
typedef
7723
enum D3D12_VIDEO_ENCODER_FLAGS
7724
{
7725
D3D12_VIDEO_ENCODER_FLAG_NONE = 0
7726
} D3D12_VIDEO_ENCODER_FLAGS;
7727
7728
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)
7729
typedef 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
7742
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_c_ifspec;
7743
extern 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
7752
EXTERN_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
7940
EXTERN_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
8132
EXTERN_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
8359
typedef
8360
enum 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
8368
typedef 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
8378
typedef
8379
enum 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
8386
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)
8387
typedef 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
8396
typedef 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
8403
typedef 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
8429
typedef
8430
enum 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
8438
typedef 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
8447
typedef
8448
enum 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
8457
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)
8458
typedef 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
8479
typedef 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
8507
typedef 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
8519
typedef 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
8526
typedef
8527
enum 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
8536
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)
8537
typedef 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
8545
typedef
8546
enum 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
8556
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)
8557
typedef 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
8568
typedef 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
8577
typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
8578
{
8579
ID3D12Resource *pBuffer;
8580
UINT64 FrameStartOffset;
8581
} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
8582
8583
typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
8584
{
8585
ID3D12Resource *pReconstructedPicture;
8586
UINT ReconstructedPictureSubresource;
8587
} D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
8588
8589
typedef 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
8596
typedef
8597
enum 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
8607
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)
8608
typedef 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
8618
typedef 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
8626
typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
8627
{
8628
ID3D12Resource *pBuffer;
8629
UINT64 Offset;
8630
} D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
8631
8632
typedef 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
8641
typedef 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
8646
typedef 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
8655
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_c_ifspec;
8656
extern 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
8665
EXTERN_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
8992
EXTERN_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
9319
typedef 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
9333
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_c_ifspec;
9334
extern 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
9343
EXTERN_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
9527
EXTERN_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
9760
typedef 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
9768
typedef
9769
enum 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
9779
DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )
9780
typedef 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
9801
typedef 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
9808
typedef
9809
enum 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
9815
typedef
9816
enum 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
9822
typedef 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
9834
typedef
9835
enum 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
9842
typedef
9843
enum 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
9850
typedef 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
9860
typedef
9861
enum 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
9869
DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )
9870
typedef 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
9880
typedef
9881
enum 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
9888
typedef
9889
enum 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
9897
DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )
9898
typedef
9899
enum 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
9907
DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )
9908
typedef 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
9923
typedef 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
9932
typedef 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
9938
typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
9939
{
9940
UINT MapSourcePreferenceRanking;
9941
} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
9942
9943
typedef 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
9950
typedef 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
9956
typedef 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
9964
typedef 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
9974
typedef
9975
enum 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
9987
DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )
9988
typedef 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
10006
typedef 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
10011
typedef 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
10023
typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
10024
{
10025
BOOL Enabled;
10026
UINT Pow2DownscaleFactor;
10027
} D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
10028
10029
typedef 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
10055
typedef 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
10064
typedef 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
10074
typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
10075
{
10076
ID3D12Resource *pOpaqueQuantizationMap;
10077
} D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
10078
10079
typedef 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
10085
typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
10086
{
10087
POINT SourcePoint;
10088
RECT DestRect;
10089
} D3D12_VIDEO_ENCODER_MOVE_RECT;
10090
10091
typedef
10092
enum 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
10098
typedef 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
10108
typedef 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
10118
typedef 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
10148
typedef 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
10159
typedef 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
10166
typedef 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
10178
typedef 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
10188
typedef
10189
enum 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
10195
typedef 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
10207
typedef
10208
enum 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
10214
typedef 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
10224
typedef 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
10232
typedef 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
10243
typedef 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
10253
typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
10254
{
10255
ID3D12Resource *pQuantizationMap;
10256
} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
10257
10258
typedef 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
10266
typedef 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
10278
typedef 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
10289
typedef 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
10295
typedef 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
10302
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_c_ifspec;
10303
extern 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
10312
EXTERN_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
10681
DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
10682
DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
10683
DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
10684
DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
10685
DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
10686
DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
10687
DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
10688
DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
10689
DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
10690
DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
10691
DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
10692
DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
10693
DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
10694
DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
10695
DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
10696
DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
10697
DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
10698
DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
10699
DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);
10700
DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
10701
DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);
10702
DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
10703
DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);
10704
DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);
10705
DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
10706
DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
10707
DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
10708
DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
10709
DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
10710
DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
10711
10712
10713
extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_c_ifspec;
10714
extern 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
10727
10728