1/*** Autogenerated by WIDL 11.6 from include/d3d12video.idl - Do not edit ***/
2
3#ifdef _WIN32
4#ifndef __REQUIRED_RPCNDR_H_VERSION__
5#define __REQUIRED_RPCNDR_H_VERSION__ 475
6#endif
7#include <rpc.h>
8#include <rpcndr.h>
9#endif
10
11#ifndef COM_NO_WINDOWS_H
12#include <windows.h>
13#include <ole2.h>
14#endif
15
16#ifndef __d3d12video_h__
17#define __d3d12video_h__
18
19/* Forward declarations */
20
21#ifndef __ID3D12VideoDecoderHeap_FWD_DEFINED__
22#define __ID3D12VideoDecoderHeap_FWD_DEFINED__
23typedef interface ID3D12VideoDecoderHeap ID3D12VideoDecoderHeap;
24#ifdef __cplusplus
25interface ID3D12VideoDecoderHeap;
26#endif /* __cplusplus */
27#endif
28
29#ifndef __ID3D12VideoDevice_FWD_DEFINED__
30#define __ID3D12VideoDevice_FWD_DEFINED__
31typedef interface ID3D12VideoDevice ID3D12VideoDevice;
32#ifdef __cplusplus
33interface ID3D12VideoDevice;
34#endif /* __cplusplus */
35#endif
36
37#ifndef __ID3D12VideoDecoder_FWD_DEFINED__
38#define __ID3D12VideoDecoder_FWD_DEFINED__
39typedef interface ID3D12VideoDecoder ID3D12VideoDecoder;
40#ifdef __cplusplus
41interface ID3D12VideoDecoder;
42#endif /* __cplusplus */
43#endif
44
45#ifndef __ID3D12VideoProcessor_FWD_DEFINED__
46#define __ID3D12VideoProcessor_FWD_DEFINED__
47typedef interface ID3D12VideoProcessor ID3D12VideoProcessor;
48#ifdef __cplusplus
49interface ID3D12VideoProcessor;
50#endif /* __cplusplus */
51#endif
52
53#ifndef __ID3D12VideoDecodeCommandList_FWD_DEFINED__
54#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
55typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
56#ifdef __cplusplus
57interface ID3D12VideoDecodeCommandList;
58#endif /* __cplusplus */
59#endif
60
61#ifndef __ID3D12VideoProcessCommandList_FWD_DEFINED__
62#define __ID3D12VideoProcessCommandList_FWD_DEFINED__
63typedef interface ID3D12VideoProcessCommandList ID3D12VideoProcessCommandList;
64#ifdef __cplusplus
65interface ID3D12VideoProcessCommandList;
66#endif /* __cplusplus */
67#endif
68
69#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
70#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
71typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
72#ifdef __cplusplus
73interface ID3D12VideoDecodeCommandList1;
74#endif /* __cplusplus */
75#endif
76
77#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
78#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
79typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
80#ifdef __cplusplus
81interface ID3D12VideoMotionEstimator;
82#endif /* __cplusplus */
83#endif
84
85#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
86#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
87typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
88#ifdef __cplusplus
89interface ID3D12VideoMotionVectorHeap;
90#endif /* __cplusplus */
91#endif
92
93#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
94#define __ID3D12VideoDevice1_FWD_DEFINED__
95typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
96#ifdef __cplusplus
97interface ID3D12VideoDevice1;
98#endif /* __cplusplus */
99#endif
100
101#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
102#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
103typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
104#ifdef __cplusplus
105interface ID3D12VideoEncodeCommandList;
106#endif /* __cplusplus */
107#endif
108
109#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
110#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
111typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
112#ifdef __cplusplus
113interface ID3D12VideoExtensionCommand;
114#endif /* __cplusplus */
115#endif
116
117#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
118#define __ID3D12VideoDevice2_FWD_DEFINED__
119typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
120#ifdef __cplusplus
121interface ID3D12VideoDevice2;
122#endif /* __cplusplus */
123#endif
124
125#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
126#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
127typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
128#ifdef __cplusplus
129interface ID3D12VideoEncodeCommandList1;
130#endif /* __cplusplus */
131#endif
132
133#ifndef __ID3D12VideoEncoder_FWD_DEFINED__
134#define __ID3D12VideoEncoder_FWD_DEFINED__
135typedef interface ID3D12VideoEncoder ID3D12VideoEncoder;
136#ifdef __cplusplus
137interface ID3D12VideoEncoder;
138#endif /* __cplusplus */
139#endif
140
141#ifndef __ID3D12VideoEncoderHeap_FWD_DEFINED__
142#define __ID3D12VideoEncoderHeap_FWD_DEFINED__
143typedef interface ID3D12VideoEncoderHeap ID3D12VideoEncoderHeap;
144#ifdef __cplusplus
145interface ID3D12VideoEncoderHeap;
146#endif /* __cplusplus */
147#endif
148
149#ifndef __ID3D12VideoDevice3_FWD_DEFINED__
150#define __ID3D12VideoDevice3_FWD_DEFINED__
151typedef interface ID3D12VideoDevice3 ID3D12VideoDevice3;
152#ifdef __cplusplus
153interface ID3D12VideoDevice3;
154#endif /* __cplusplus */
155#endif
156
157#ifndef __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
158#define __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
159typedef interface ID3D12VideoEncodeCommandList2 ID3D12VideoEncodeCommandList2;
160#ifdef __cplusplus
161interface ID3D12VideoEncodeCommandList2;
162#endif /* __cplusplus */
163#endif
164
165/* Headers for imported files */
166
167#include <oaidl.h>
168#include <ocidl.h>
169#include <dxgicommon.h>
170#include <d3d12.h>
171
172#ifdef __cplusplus
173extern "C" {
174#endif
175
176typedef enum D3D12_VIDEO_FIELD_TYPE {
177 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
178 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
179 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
180} D3D12_VIDEO_FIELD_TYPE;
181typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT {
182 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
183 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
184 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
185 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
186 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
187} D3D12_VIDEO_FRAME_STEREO_FORMAT;
188typedef struct D3D12_VIDEO_FORMAT {
189 DXGI_FORMAT Format;
190 DXGI_COLOR_SPACE_TYPE ColorSpace;
191} D3D12_VIDEO_FORMAT;
192typedef struct D3D12_VIDEO_SAMPLE {
193 UINT Width;
194 UINT Height;
195 D3D12_VIDEO_FORMAT Format;
196} D3D12_VIDEO_SAMPLE;
197typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE {
198 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
199 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
200} D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
201typedef enum D3D12_FEATURE_VIDEO {
202 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
203 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
204 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
205 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
206 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
207 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
208 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
209 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
210 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
211 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
212 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
213 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
214 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
215 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
216 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
217 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
218 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
219 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
220 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
221 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
222 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
223 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
224 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
225 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
226 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
227 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
228 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
229 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
230 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
231 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
232 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
233 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
234 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
235 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
236 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
237 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
238 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
239 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
240 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
241 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
242 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
243 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47
244} D3D12_FEATURE_VIDEO;
245typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE {
246 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
247} D3D12_BITSTREAM_ENCRYPTION_TYPE;
248typedef struct D3D12_VIDEO_DECODE_CONFIGURATION {
249 GUID DecodeProfile;
250 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
251 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
252} D3D12_VIDEO_DECODE_CONFIGURATION;
253typedef struct D3D12_VIDEO_DECODER_DESC {
254 UINT NodeMask;
255 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
256} D3D12_VIDEO_DECODER_DESC;
257typedef struct D3D12_VIDEO_DECODER_HEAP_DESC {
258 UINT NodeMask;
259 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
260 UINT DecodeWidth;
261 UINT DecodeHeight;
262 DXGI_FORMAT Format;
263 DXGI_RATIONAL FrameRate;
264 UINT BitRate;
265 UINT MaxDecodePictureBufferCount;
266} D3D12_VIDEO_DECODER_HEAP_DESC;
267typedef struct D3D12_VIDEO_SIZE_RANGE {
268 UINT MaxWidth;
269 UINT MaxHeight;
270 UINT MinWidth;
271 UINT MinHeight;
272} D3D12_VIDEO_SIZE_RANGE;
273typedef enum D3D12_VIDEO_PROCESS_FILTER {
274 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
275 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
276 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
277 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
278 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
279 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
280 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
281 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
282} D3D12_VIDEO_PROCESS_FILTER;
283typedef enum D3D12_VIDEO_PROCESS_FILTER_FLAGS {
284 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
285 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS,
286 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST,
287 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = 1 << D3D12_VIDEO_PROCESS_FILTER_HUE,
288 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION,
289 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION,
290 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT,
291 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING,
292 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT
293} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
294DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS);
295typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS {
296 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
297 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
298 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
299} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
300DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS );
301typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING {
302 WINBOOL Enable;
303 FLOAT Alpha;
304} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
305typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY {
306 WINBOOL Enable;
307 FLOAT Lower;
308 FLOAT Upper;
309} D3D12_VIDEO_PROCESS_LUMA_KEY;
310typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC {
311 DXGI_FORMAT Format;
312 DXGI_COLOR_SPACE_TYPE ColorSpace;
313 DXGI_RATIONAL SourceAspectRatio;
314 DXGI_RATIONAL DestinationAspectRatio;
315 DXGI_RATIONAL FrameRate;
316 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
317 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
318 WINBOOL EnableOrientation;
319 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
320 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
321 D3D12_VIDEO_FIELD_TYPE FieldType;
322 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
323 WINBOOL EnableAlphaBlending;
324 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
325 UINT NumPastFrames;
326 UINT NumFutureFrames;
327 WINBOOL EnableAutoProcessing;
328} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
329typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE {
330 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
331 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
332 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
333 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
334} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
335typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC {
336 DXGI_FORMAT Format;
337 DXGI_COLOR_SPACE_TYPE ColorSpace;
338 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
339 UINT AlphaFillModeSourceStreamIndex;
340 FLOAT BackgroundColor[4];
341 DXGI_RATIONAL FrameRate;
342 WINBOOL EnableStereo;
343} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
344/*****************************************************************************
345 * ID3D12VideoDecoderHeap interface
346 */
347#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
348#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
349
350DEFINE_GUID(IID_ID3D12VideoDecoderHeap, 0x0946b7c9, 0xebf6, 0x4047, 0xbb,0x73, 0x86,0x83,0xe2,0x7d,0xbb,0x1f);
351#if defined(__cplusplus) && !defined(CINTERFACE)
352MIDL_INTERFACE("0946b7c9-ebf6-4047-bb73-8683e27dbb1f")
353ID3D12VideoDecoderHeap : public ID3D12Pageable
354{
355#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
356 virtual D3D12_VIDEO_DECODER_HEAP_DESC* STDMETHODCALLTYPE GetDesc(
357 D3D12_VIDEO_DECODER_HEAP_DESC *__ret) = 0;
358 D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc(
359 )
360 {
361 D3D12_VIDEO_DECODER_HEAP_DESC __ret;
362 return *GetDesc(&__ret);
363 }
364#else
365 virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc(
366 ) = 0;
367#endif
368
369};
370#ifdef __CRT_UUID_DECL
371__CRT_UUID_DECL(ID3D12VideoDecoderHeap, 0x0946b7c9, 0xebf6, 0x4047, 0xbb,0x73, 0x86,0x83,0xe2,0x7d,0xbb,0x1f)
372#endif
373#else
374typedef struct ID3D12VideoDecoderHeapVtbl {
375 BEGIN_INTERFACE
376
377 /*** IUnknown methods ***/
378 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
379 ID3D12VideoDecoderHeap *This,
380 REFIID riid,
381 void **ppvObject);
382
383 ULONG (STDMETHODCALLTYPE *AddRef)(
384 ID3D12VideoDecoderHeap *This);
385
386 ULONG (STDMETHODCALLTYPE *Release)(
387 ID3D12VideoDecoderHeap *This);
388
389 /*** ID3D12Object methods ***/
390 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
391 ID3D12VideoDecoderHeap *This,
392 REFGUID guid,
393 UINT *data_size,
394 void *data);
395
396 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
397 ID3D12VideoDecoderHeap *This,
398 REFGUID guid,
399 UINT data_size,
400 const void *data);
401
402 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
403 ID3D12VideoDecoderHeap *This,
404 REFGUID guid,
405 const IUnknown *data);
406
407 HRESULT (STDMETHODCALLTYPE *SetName)(
408 ID3D12VideoDecoderHeap *This,
409 const WCHAR *name);
410
411 /*** ID3D12DeviceChild methods ***/
412 HRESULT (STDMETHODCALLTYPE *GetDevice)(
413 ID3D12VideoDecoderHeap *This,
414 REFIID riid,
415 void **device);
416
417 /*** ID3D12VideoDecoderHeap methods ***/
418 D3D12_VIDEO_DECODER_HEAP_DESC * (STDMETHODCALLTYPE *GetDesc)(
419 ID3D12VideoDecoderHeap *This,
420 D3D12_VIDEO_DECODER_HEAP_DESC *__ret);
421
422 END_INTERFACE
423} ID3D12VideoDecoderHeapVtbl;
424
425interface ID3D12VideoDecoderHeap {
426 CONST_VTBL ID3D12VideoDecoderHeapVtbl* lpVtbl;
427};
428
429#ifdef COBJMACROS
430#ifndef WIDL_C_INLINE_WRAPPERS
431/*** IUnknown methods ***/
432#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
433#define ID3D12VideoDecoderHeap_AddRef(This) (This)->lpVtbl->AddRef(This)
434#define ID3D12VideoDecoderHeap_Release(This) (This)->lpVtbl->Release(This)
435/*** ID3D12Object methods ***/
436#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
437#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
438#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
439#define ID3D12VideoDecoderHeap_SetName(This,name) (This)->lpVtbl->SetName(This,name)
440/*** ID3D12DeviceChild methods ***/
441#define ID3D12VideoDecoderHeap_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
442/*** ID3D12VideoDecoderHeap methods ***/
443#define ID3D12VideoDecoderHeap_GetDesc(This) ID3D12VideoDecoderHeap_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
444#else
445/*** IUnknown methods ***/
446static inline HRESULT ID3D12VideoDecoderHeap_QueryInterface(ID3D12VideoDecoderHeap* This,REFIID riid,void **ppvObject) {
447 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
448}
449static inline ULONG ID3D12VideoDecoderHeap_AddRef(ID3D12VideoDecoderHeap* This) {
450 return This->lpVtbl->AddRef(This);
451}
452static inline ULONG ID3D12VideoDecoderHeap_Release(ID3D12VideoDecoderHeap* This) {
453 return This->lpVtbl->Release(This);
454}
455/*** ID3D12Object methods ***/
456static inline HRESULT ID3D12VideoDecoderHeap_GetPrivateData(ID3D12VideoDecoderHeap* This,REFGUID guid,UINT *data_size,void *data) {
457 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
458}
459static inline HRESULT ID3D12VideoDecoderHeap_SetPrivateData(ID3D12VideoDecoderHeap* This,REFGUID guid,UINT data_size,const void *data) {
460 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
461}
462static inline HRESULT ID3D12VideoDecoderHeap_SetPrivateDataInterface(ID3D12VideoDecoderHeap* This,REFGUID guid,const IUnknown *data) {
463 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
464}
465static inline HRESULT ID3D12VideoDecoderHeap_SetName(ID3D12VideoDecoderHeap* This,const WCHAR *name) {
466 return This->lpVtbl->SetName(This,name);
467}
468/*** ID3D12DeviceChild methods ***/
469static inline HRESULT ID3D12VideoDecoderHeap_GetDevice(ID3D12VideoDecoderHeap* This,REFIID riid,void **device) {
470 return This->lpVtbl->GetDevice(This,riid,device);
471}
472/*** ID3D12VideoDecoderHeap methods ***/
473static inline D3D12_VIDEO_DECODER_HEAP_DESC ID3D12VideoDecoderHeap_GetDesc(ID3D12VideoDecoderHeap* This) {
474 D3D12_VIDEO_DECODER_HEAP_DESC __ret;
475 return *This->lpVtbl->GetDesc(This,&__ret);
476}
477#endif
478#endif
479
480#endif
481
482
483#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
484
485/*****************************************************************************
486 * ID3D12VideoDevice interface
487 */
488#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
489#define __ID3D12VideoDevice_INTERFACE_DEFINED__
490
491DEFINE_GUID(IID_ID3D12VideoDevice, 0x1f052807, 0x0b46, 0x4acc, 0x8a,0x89, 0x36,0x4f,0x79,0x37,0x18,0xa4);
492#if defined(__cplusplus) && !defined(CINTERFACE)
493MIDL_INTERFACE("1f052807-0b46-4acc-8a89-364f793718a4")
494ID3D12VideoDevice : public IUnknown
495{
496 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
497 D3D12_FEATURE_VIDEO feature_video,
498 void *feature_support_data,
499 UINT feature_support_data_size) = 0;
500
501 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
502 const D3D12_VIDEO_DECODER_DESC *desc,
503 REFIID riid,
504 void **video_decoder) = 0;
505
506 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
507 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
508 REFIID riid,
509 void **video_decoder_heap) = 0;
510
511 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
512 UINT node_mask,
513 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
514 UINT input_stream_descs_count,
515 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
516 REFIID riid,
517 void **video_processor) = 0;
518
519};
520#ifdef __CRT_UUID_DECL
521__CRT_UUID_DECL(ID3D12VideoDevice, 0x1f052807, 0x0b46, 0x4acc, 0x8a,0x89, 0x36,0x4f,0x79,0x37,0x18,0xa4)
522#endif
523#else
524typedef struct ID3D12VideoDeviceVtbl {
525 BEGIN_INTERFACE
526
527 /*** IUnknown methods ***/
528 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
529 ID3D12VideoDevice *This,
530 REFIID riid,
531 void **ppvObject);
532
533 ULONG (STDMETHODCALLTYPE *AddRef)(
534 ID3D12VideoDevice *This);
535
536 ULONG (STDMETHODCALLTYPE *Release)(
537 ID3D12VideoDevice *This);
538
539 /*** ID3D12VideoDevice methods ***/
540 HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
541 ID3D12VideoDevice *This,
542 D3D12_FEATURE_VIDEO feature_video,
543 void *feature_support_data,
544 UINT feature_support_data_size);
545
546 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
547 ID3D12VideoDevice *This,
548 const D3D12_VIDEO_DECODER_DESC *desc,
549 REFIID riid,
550 void **video_decoder);
551
552 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap)(
553 ID3D12VideoDevice *This,
554 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
555 REFIID riid,
556 void **video_decoder_heap);
557
558 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
559 ID3D12VideoDevice *This,
560 UINT node_mask,
561 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
562 UINT input_stream_descs_count,
563 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
564 REFIID riid,
565 void **video_processor);
566
567 END_INTERFACE
568} ID3D12VideoDeviceVtbl;
569
570interface ID3D12VideoDevice {
571 CONST_VTBL ID3D12VideoDeviceVtbl* lpVtbl;
572};
573
574#ifdef COBJMACROS
575#ifndef WIDL_C_INLINE_WRAPPERS
576/*** IUnknown methods ***/
577#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
578#define ID3D12VideoDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
579#define ID3D12VideoDevice_Release(This) (This)->lpVtbl->Release(This)
580/*** ID3D12VideoDevice methods ***/
581#define ID3D12VideoDevice_CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size)
582#define ID3D12VideoDevice_CreateVideoDecoder(This,desc,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder)
583#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap) (This)->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap)
584#define ID3D12VideoDevice_CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor) (This)->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor)
585#else
586/*** IUnknown methods ***/
587static inline HRESULT ID3D12VideoDevice_QueryInterface(ID3D12VideoDevice* This,REFIID riid,void **ppvObject) {
588 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
589}
590static inline ULONG ID3D12VideoDevice_AddRef(ID3D12VideoDevice* This) {
591 return This->lpVtbl->AddRef(This);
592}
593static inline ULONG ID3D12VideoDevice_Release(ID3D12VideoDevice* This) {
594 return This->lpVtbl->Release(This);
595}
596/*** ID3D12VideoDevice methods ***/
597static inline HRESULT ID3D12VideoDevice_CheckFeatureSupport(ID3D12VideoDevice* This,D3D12_FEATURE_VIDEO feature_video,void *feature_support_data,UINT feature_support_data_size) {
598 return This->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size);
599}
600static inline HRESULT ID3D12VideoDevice_CreateVideoDecoder(ID3D12VideoDevice* This,const D3D12_VIDEO_DECODER_DESC *desc,REFIID riid,void **video_decoder) {
601 return This->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder);
602}
603static inline HRESULT ID3D12VideoDevice_CreateVideoDecoderHeap(ID3D12VideoDevice* This,const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,REFIID riid,void **video_decoder_heap) {
604 return This->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap);
605}
606static inline HRESULT ID3D12VideoDevice_CreateVideoProcessor(ID3D12VideoDevice* This,UINT node_mask,const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,UINT input_stream_descs_count,const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,REFIID riid,void **video_processor) {
607 return This->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor);
608}
609#endif
610#endif
611
612#endif
613
614
615#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
616
617/*****************************************************************************
618 * ID3D12VideoDecoder interface
619 */
620#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
621#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
622
623DEFINE_GUID(IID_ID3D12VideoDecoder, 0xc59b6bdc, 0x7720, 0x4074, 0xa1,0x36, 0x17,0xa1,0x56,0x03,0x74,0x70);
624#if defined(__cplusplus) && !defined(CINTERFACE)
625MIDL_INTERFACE("c59b6bdc-7720-4074-a136-17a156037470")
626ID3D12VideoDecoder : public ID3D12Pageable
627{
628#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
629 virtual D3D12_VIDEO_DECODER_DESC* STDMETHODCALLTYPE GetDesc(
630 D3D12_VIDEO_DECODER_DESC *__ret) = 0;
631 D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc(
632 )
633 {
634 D3D12_VIDEO_DECODER_DESC __ret;
635 return *GetDesc(&__ret);
636 }
637#else
638 virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc(
639 ) = 0;
640#endif
641
642};
643#ifdef __CRT_UUID_DECL
644__CRT_UUID_DECL(ID3D12VideoDecoder, 0xc59b6bdc, 0x7720, 0x4074, 0xa1,0x36, 0x17,0xa1,0x56,0x03,0x74,0x70)
645#endif
646#else
647typedef struct ID3D12VideoDecoderVtbl {
648 BEGIN_INTERFACE
649
650 /*** IUnknown methods ***/
651 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
652 ID3D12VideoDecoder *This,
653 REFIID riid,
654 void **ppvObject);
655
656 ULONG (STDMETHODCALLTYPE *AddRef)(
657 ID3D12VideoDecoder *This);
658
659 ULONG (STDMETHODCALLTYPE *Release)(
660 ID3D12VideoDecoder *This);
661
662 /*** ID3D12Object methods ***/
663 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
664 ID3D12VideoDecoder *This,
665 REFGUID guid,
666 UINT *data_size,
667 void *data);
668
669 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
670 ID3D12VideoDecoder *This,
671 REFGUID guid,
672 UINT data_size,
673 const void *data);
674
675 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
676 ID3D12VideoDecoder *This,
677 REFGUID guid,
678 const IUnknown *data);
679
680 HRESULT (STDMETHODCALLTYPE *SetName)(
681 ID3D12VideoDecoder *This,
682 const WCHAR *name);
683
684 /*** ID3D12DeviceChild methods ***/
685 HRESULT (STDMETHODCALLTYPE *GetDevice)(
686 ID3D12VideoDecoder *This,
687 REFIID riid,
688 void **device);
689
690 /*** ID3D12VideoDecoder methods ***/
691 D3D12_VIDEO_DECODER_DESC * (STDMETHODCALLTYPE *GetDesc)(
692 ID3D12VideoDecoder *This,
693 D3D12_VIDEO_DECODER_DESC *__ret);
694
695 END_INTERFACE
696} ID3D12VideoDecoderVtbl;
697
698interface ID3D12VideoDecoder {
699 CONST_VTBL ID3D12VideoDecoderVtbl* lpVtbl;
700};
701
702#ifdef COBJMACROS
703#ifndef WIDL_C_INLINE_WRAPPERS
704/*** IUnknown methods ***/
705#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
706#define ID3D12VideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
707#define ID3D12VideoDecoder_Release(This) (This)->lpVtbl->Release(This)
708/*** ID3D12Object methods ***/
709#define ID3D12VideoDecoder_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
710#define ID3D12VideoDecoder_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
711#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
712#define ID3D12VideoDecoder_SetName(This,name) (This)->lpVtbl->SetName(This,name)
713/*** ID3D12DeviceChild methods ***/
714#define ID3D12VideoDecoder_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
715/*** ID3D12VideoDecoder methods ***/
716#define ID3D12VideoDecoder_GetDesc(This) ID3D12VideoDecoder_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
717#else
718/*** IUnknown methods ***/
719static inline HRESULT ID3D12VideoDecoder_QueryInterface(ID3D12VideoDecoder* This,REFIID riid,void **ppvObject) {
720 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
721}
722static inline ULONG ID3D12VideoDecoder_AddRef(ID3D12VideoDecoder* This) {
723 return This->lpVtbl->AddRef(This);
724}
725static inline ULONG ID3D12VideoDecoder_Release(ID3D12VideoDecoder* This) {
726 return This->lpVtbl->Release(This);
727}
728/*** ID3D12Object methods ***/
729static inline HRESULT ID3D12VideoDecoder_GetPrivateData(ID3D12VideoDecoder* This,REFGUID guid,UINT *data_size,void *data) {
730 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
731}
732static inline HRESULT ID3D12VideoDecoder_SetPrivateData(ID3D12VideoDecoder* This,REFGUID guid,UINT data_size,const void *data) {
733 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
734}
735static inline HRESULT ID3D12VideoDecoder_SetPrivateDataInterface(ID3D12VideoDecoder* This,REFGUID guid,const IUnknown *data) {
736 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
737}
738static inline HRESULT ID3D12VideoDecoder_SetName(ID3D12VideoDecoder* This,const WCHAR *name) {
739 return This->lpVtbl->SetName(This,name);
740}
741/*** ID3D12DeviceChild methods ***/
742static inline HRESULT ID3D12VideoDecoder_GetDevice(ID3D12VideoDecoder* This,REFIID riid,void **device) {
743 return This->lpVtbl->GetDevice(This,riid,device);
744}
745/*** ID3D12VideoDecoder methods ***/
746static inline D3D12_VIDEO_DECODER_DESC ID3D12VideoDecoder_GetDesc(ID3D12VideoDecoder* This) {
747 D3D12_VIDEO_DECODER_DESC __ret;
748 return *This->lpVtbl->GetDesc(This,&__ret);
749}
750#endif
751#endif
752
753#endif
754
755
756#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
757
758typedef enum D3D12_VIDEO_DECODE_TIER {
759 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
760 D3D12_VIDEO_DECODE_TIER_1 = 1,
761 D3D12_VIDEO_DECODE_TIER_2 = 2,
762 D3D12_VIDEO_DECODE_TIER_3 = 3
763} D3D12_VIDEO_DECODE_TIER;
764typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS {
765 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
766 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
767} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
768DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS);
769typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS {
770 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0x0,
771 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
772 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
773 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
774 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
775} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
776DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS);
777typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE {
778 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
779 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
780 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
781 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_MAX_VALID = 3
782} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
783typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT {
784 UINT NodeIndex;
785 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
786 UINT Width;
787 UINT Height;
788 DXGI_FORMAT DecodeFormat;
789 DXGI_RATIONAL FrameRate;
790 UINT BitRate;
791 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
792 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
793 D3D12_VIDEO_DECODE_TIER DecodeTier;
794} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
795typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS {
796 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0,
797 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
798 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2
799} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
800DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS)
801typedef struct D3D12_VIDEO_SCALE_SUPPORT {
802 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
803 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
804} D3D12_VIDEO_SCALE_SUPPORT;
805typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT {
806 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
807 UINT Size;
808 void *pData;
809} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
810typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES {
811 UINT NumTexture2Ds;
812 ID3D12Resource **ppTexture2Ds;
813 UINT *pSubresources;
814 ID3D12VideoDecoderHeap **ppHeaps;
815} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
816typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM {
817 ID3D12Resource *pBuffer;
818 UINT64 Offset;
819 UINT64 Size;
820} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
821typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS {
822 WINBOOL Enable;
823 ID3D12Resource *pReferenceTexture2D;
824 UINT ReferenceSubresource;
825 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
826 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
827} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
828typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS {
829 UINT NumFrameArguments;
830 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[10];
831 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
832 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
833 ID3D12VideoDecoderHeap *pHeap;
834} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
835typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS {
836 ID3D12Resource *pOutputTexture2D;
837 UINT OutputSubresource;
838 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
839} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
840/*****************************************************************************
841 * ID3D12VideoProcessor interface
842 */
843#ifndef __ID3D12VideoProcessor_INTERFACE_DEFINED__
844#define __ID3D12VideoProcessor_INTERFACE_DEFINED__
845
846DEFINE_GUID(IID_ID3D12VideoProcessor, 0x304fdb32, 0xbede, 0x410a, 0x85,0x45, 0x94,0x3a,0xc6,0xa4,0x61,0x38);
847#if defined(__cplusplus) && !defined(CINTERFACE)
848MIDL_INTERFACE("304fdb32-bede-410a-8545-943ac6a46138")
849ID3D12VideoProcessor : public ID3D12Pageable
850{
851 virtual UINT STDMETHODCALLTYPE GetNodeMask(
852 ) = 0;
853
854 virtual UINT STDMETHODCALLTYPE GetNumInputStreamDescs(
855 ) = 0;
856
857 virtual HRESULT STDMETHODCALLTYPE GetInputStreamDescs(
858 UINT num_input_stream_descs,
859 D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs) = 0;
860
861#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
862 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* STDMETHODCALLTYPE GetOutputStreamDesc(
863 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *__ret) = 0;
864 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc(
865 )
866 {
867 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC __ret;
868 return *GetOutputStreamDesc(&__ret);
869 }
870#else
871 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc(
872 ) = 0;
873#endif
874
875};
876#ifdef __CRT_UUID_DECL
877__CRT_UUID_DECL(ID3D12VideoProcessor, 0x304fdb32, 0xbede, 0x410a, 0x85,0x45, 0x94,0x3a,0xc6,0xa4,0x61,0x38)
878#endif
879#else
880typedef struct ID3D12VideoProcessorVtbl {
881 BEGIN_INTERFACE
882
883 /*** IUnknown methods ***/
884 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
885 ID3D12VideoProcessor *This,
886 REFIID riid,
887 void **ppvObject);
888
889 ULONG (STDMETHODCALLTYPE *AddRef)(
890 ID3D12VideoProcessor *This);
891
892 ULONG (STDMETHODCALLTYPE *Release)(
893 ID3D12VideoProcessor *This);
894
895 /*** ID3D12Object methods ***/
896 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
897 ID3D12VideoProcessor *This,
898 REFGUID guid,
899 UINT *data_size,
900 void *data);
901
902 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
903 ID3D12VideoProcessor *This,
904 REFGUID guid,
905 UINT data_size,
906 const void *data);
907
908 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
909 ID3D12VideoProcessor *This,
910 REFGUID guid,
911 const IUnknown *data);
912
913 HRESULT (STDMETHODCALLTYPE *SetName)(
914 ID3D12VideoProcessor *This,
915 const WCHAR *name);
916
917 /*** ID3D12DeviceChild methods ***/
918 HRESULT (STDMETHODCALLTYPE *GetDevice)(
919 ID3D12VideoProcessor *This,
920 REFIID riid,
921 void **device);
922
923 /*** ID3D12VideoProcessor methods ***/
924 UINT (STDMETHODCALLTYPE *GetNodeMask)(
925 ID3D12VideoProcessor *This);
926
927 UINT (STDMETHODCALLTYPE *GetNumInputStreamDescs)(
928 ID3D12VideoProcessor *This);
929
930 HRESULT (STDMETHODCALLTYPE *GetInputStreamDescs)(
931 ID3D12VideoProcessor *This,
932 UINT num_input_stream_descs,
933 D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs);
934
935 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * (STDMETHODCALLTYPE *GetOutputStreamDesc)(
936 ID3D12VideoProcessor *This,
937 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *__ret);
938
939 END_INTERFACE
940} ID3D12VideoProcessorVtbl;
941
942interface ID3D12VideoProcessor {
943 CONST_VTBL ID3D12VideoProcessorVtbl* lpVtbl;
944};
945
946#ifdef COBJMACROS
947#ifndef WIDL_C_INLINE_WRAPPERS
948/*** IUnknown methods ***/
949#define ID3D12VideoProcessor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
950#define ID3D12VideoProcessor_AddRef(This) (This)->lpVtbl->AddRef(This)
951#define ID3D12VideoProcessor_Release(This) (This)->lpVtbl->Release(This)
952/*** ID3D12Object methods ***/
953#define ID3D12VideoProcessor_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
954#define ID3D12VideoProcessor_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
955#define ID3D12VideoProcessor_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
956#define ID3D12VideoProcessor_SetName(This,name) (This)->lpVtbl->SetName(This,name)
957/*** ID3D12DeviceChild methods ***/
958#define ID3D12VideoProcessor_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
959/*** ID3D12VideoProcessor methods ***/
960#define ID3D12VideoProcessor_GetNodeMask(This) (This)->lpVtbl->GetNodeMask(This)
961#define ID3D12VideoProcessor_GetNumInputStreamDescs(This) (This)->lpVtbl->GetNumInputStreamDescs(This)
962#define ID3D12VideoProcessor_GetInputStreamDescs(This,num_input_stream_descs,input_stream_descs) (This)->lpVtbl->GetInputStreamDescs(This,num_input_stream_descs,input_stream_descs)
963#define ID3D12VideoProcessor_GetOutputStreamDesc(This) ID3D12VideoProcessor_GetOutputStreamDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
964#else
965/*** IUnknown methods ***/
966static inline HRESULT ID3D12VideoProcessor_QueryInterface(ID3D12VideoProcessor* This,REFIID riid,void **ppvObject) {
967 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
968}
969static inline ULONG ID3D12VideoProcessor_AddRef(ID3D12VideoProcessor* This) {
970 return This->lpVtbl->AddRef(This);
971}
972static inline ULONG ID3D12VideoProcessor_Release(ID3D12VideoProcessor* This) {
973 return This->lpVtbl->Release(This);
974}
975/*** ID3D12Object methods ***/
976static inline HRESULT ID3D12VideoProcessor_GetPrivateData(ID3D12VideoProcessor* This,REFGUID guid,UINT *data_size,void *data) {
977 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
978}
979static inline HRESULT ID3D12VideoProcessor_SetPrivateData(ID3D12VideoProcessor* This,REFGUID guid,UINT data_size,const void *data) {
980 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
981}
982static inline HRESULT ID3D12VideoProcessor_SetPrivateDataInterface(ID3D12VideoProcessor* This,REFGUID guid,const IUnknown *data) {
983 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
984}
985static inline HRESULT ID3D12VideoProcessor_SetName(ID3D12VideoProcessor* This,const WCHAR *name) {
986 return This->lpVtbl->SetName(This,name);
987}
988/*** ID3D12DeviceChild methods ***/
989static inline HRESULT ID3D12VideoProcessor_GetDevice(ID3D12VideoProcessor* This,REFIID riid,void **device) {
990 return This->lpVtbl->GetDevice(This,riid,device);
991}
992/*** ID3D12VideoProcessor methods ***/
993static inline UINT ID3D12VideoProcessor_GetNodeMask(ID3D12VideoProcessor* This) {
994 return This->lpVtbl->GetNodeMask(This);
995}
996static inline UINT ID3D12VideoProcessor_GetNumInputStreamDescs(ID3D12VideoProcessor* This) {
997 return This->lpVtbl->GetNumInputStreamDescs(This);
998}
999static inline HRESULT ID3D12VideoProcessor_GetInputStreamDescs(ID3D12VideoProcessor* This,UINT num_input_stream_descs,D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs) {
1000 return This->lpVtbl->GetInputStreamDescs(This,num_input_stream_descs,input_stream_descs);
1001}
1002static inline D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ID3D12VideoProcessor_GetOutputStreamDesc(ID3D12VideoProcessor* This) {
1003 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC __ret;
1004 return *This->lpVtbl->GetOutputStreamDesc(This,&__ret);
1005}
1006#endif
1007#endif
1008
1009#endif
1010
1011
1012#endif /* __ID3D12VideoProcessor_INTERFACE_DEFINED__ */
1013
1014typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS {
1015 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0,
1016 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
1017 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
1018 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
1019 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
1020 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
1021 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
1022 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
1023} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
1024DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS)
1025typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS {
1026 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0,
1027 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x1,
1028 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x2,
1029 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x4,
1030 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x8,
1031 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
1032 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
1033 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
1034 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
1035 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
1036} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
1037DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS)
1038typedef enum D3D12_VIDEO_PROCESS_ORIENTATION {
1039 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
1040 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
1041 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
1042 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
1043 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
1044 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
1045 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
1046 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7
1047} D3D12_VIDEO_PROCESS_ORIENTATION;
1048typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS {
1049 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0,
1050 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
1051 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
1052} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
1053DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS)
1054typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE {
1055 INT Minimum;
1056 INT Maximum;
1057 INT Default;
1058 FLOAT Multiplier;
1059} D3D12_VIDEO_PROCESS_FILTER_RANGE;
1060typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS {
1061 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0,
1062 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
1063} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
1064DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS)
1065typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT {
1066 UINT NodeIndex;
1067 D3D12_VIDEO_SAMPLE InputSample;
1068 D3D12_VIDEO_FIELD_TYPE InputFieldType;
1069 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;
1070 DXGI_RATIONAL InputFrameRate;
1071 D3D12_VIDEO_FORMAT OutputFormat;
1072 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;
1073 DXGI_RATIONAL OutputFrameRate;
1074 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;
1075 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1076 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1077 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;
1078 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;
1079 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;
1080 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[32];
1081} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
1082typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET {
1083 UINT NumPastFrames;
1084 ID3D12Resource **ppPastFrames;
1085 UINT *pPastSubresources;
1086 UINT NumFutureFrames;
1087 ID3D12Resource **ppFutureFrames;
1088 UINT *pFutureSubresources;
1089} D3D12_VIDEO_PROCESS_REFERENCE_SET;
1090typedef struct D3D12_VIDEO_PROCESS_TRANSFORM {
1091 D3D12_RECT SourceRectangle;
1092 D3D12_RECT DestinationRectangle;
1093 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
1094} D3D12_VIDEO_PROCESS_TRANSFORM;
1095typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE {
1096 UINT OutputIndex;
1097 UINT InputFrameOrField;
1098} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
1099typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM {
1100 ID3D12Resource *pTexture2D;
1101 UINT Subresource;
1102 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
1103} D3D12_VIDEO_PROCESS_INPUT_STREAM;
1104typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS {
1105 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[2];
1106 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
1107 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
1108 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
1109 INT FilterLevels[32];
1110 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
1111} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
1112typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM {
1113 ID3D12Resource *pTexture2D;
1114 UINT Subresource;
1115} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
1116typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS {
1117 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[2];
1118 D3D12_RECT TargetRectangle;
1119} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
1120/*****************************************************************************
1121 * ID3D12VideoDecodeCommandList interface
1122 */
1123#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1124#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1125
1126DEFINE_GUID(IID_ID3D12VideoDecodeCommandList, 0x3b60536e, 0xad29, 0x4e64, 0xa2,0x69, 0xf8,0x53,0x83,0x7e,0x5e,0x53);
1127#if defined(__cplusplus) && !defined(CINTERFACE)
1128MIDL_INTERFACE("3b60536e-ad29-4e64-a269-f853837e5e53")
1129ID3D12VideoDecodeCommandList : public ID3D12CommandList
1130{
1131 virtual HRESULT STDMETHODCALLTYPE Close(
1132 ) = 0;
1133
1134 virtual HRESULT STDMETHODCALLTYPE Reset(
1135 ID3D12CommandAllocator *allocator) = 0;
1136
1137 virtual void STDMETHODCALLTYPE ClearState(
1138 ) = 0;
1139
1140 virtual void STDMETHODCALLTYPE ResourceBarrier(
1141 UINT barriers_count,
1142 const D3D12_RESOURCE_BARRIER *barriers) = 0;
1143
1144 virtual void STDMETHODCALLTYPE DiscardResource(
1145 ID3D12Resource *resource,
1146 const D3D12_DISCARD_REGION *region) = 0;
1147
1148 virtual void STDMETHODCALLTYPE BeginQuery(
1149 ID3D12QueryHeap *query_heap,
1150 D3D12_QUERY_TYPE type,
1151 UINT index) = 0;
1152
1153 virtual void STDMETHODCALLTYPE EndQuery(
1154 ID3D12QueryHeap *query_heap,
1155 D3D12_QUERY_TYPE type,
1156 UINT index) = 0;
1157
1158 virtual void STDMETHODCALLTYPE ResolveQueryData(
1159 ID3D12QueryHeap *query_heap,
1160 D3D12_QUERY_TYPE type,
1161 UINT start_index,
1162 UINT queries_count,
1163 ID3D12Resource *destination_buffer,
1164 UINT64 aligned_destination_buffer_offset) = 0;
1165
1166 virtual void STDMETHODCALLTYPE SetPredication(
1167 ID3D12Resource *buffer,
1168 UINT64 aligned_buffer_offset,
1169 D3D12_PREDICATION_OP operation) = 0;
1170
1171 virtual void STDMETHODCALLTYPE SetMarker(
1172 UINT metadata,
1173 const void *data,
1174 UINT size) = 0;
1175
1176 virtual void STDMETHODCALLTYPE BeginEvent(
1177 UINT metadata,
1178 const void *data,
1179 UINT size) = 0;
1180
1181 virtual void STDMETHODCALLTYPE EndEvent(
1182 ) = 0;
1183
1184 virtual void STDMETHODCALLTYPE DecodeFrame(
1185 ID3D12VideoDecoder *decoder,
1186 const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *output_arguments,
1187 const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments) = 0;
1188
1189 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1190 UINT count,
1191 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
1192 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) = 0;
1193
1194};
1195#ifdef __CRT_UUID_DECL
1196__CRT_UUID_DECL(ID3D12VideoDecodeCommandList, 0x3b60536e, 0xad29, 0x4e64, 0xa2,0x69, 0xf8,0x53,0x83,0x7e,0x5e,0x53)
1197#endif
1198#else
1199typedef struct ID3D12VideoDecodeCommandListVtbl {
1200 BEGIN_INTERFACE
1201
1202 /*** IUnknown methods ***/
1203 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1204 ID3D12VideoDecodeCommandList *This,
1205 REFIID riid,
1206 void **ppvObject);
1207
1208 ULONG (STDMETHODCALLTYPE *AddRef)(
1209 ID3D12VideoDecodeCommandList *This);
1210
1211 ULONG (STDMETHODCALLTYPE *Release)(
1212 ID3D12VideoDecodeCommandList *This);
1213
1214 /*** ID3D12Object methods ***/
1215 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1216 ID3D12VideoDecodeCommandList *This,
1217 REFGUID guid,
1218 UINT *data_size,
1219 void *data);
1220
1221 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1222 ID3D12VideoDecodeCommandList *This,
1223 REFGUID guid,
1224 UINT data_size,
1225 const void *data);
1226
1227 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1228 ID3D12VideoDecodeCommandList *This,
1229 REFGUID guid,
1230 const IUnknown *data);
1231
1232 HRESULT (STDMETHODCALLTYPE *SetName)(
1233 ID3D12VideoDecodeCommandList *This,
1234 const WCHAR *name);
1235
1236 /*** ID3D12DeviceChild methods ***/
1237 HRESULT (STDMETHODCALLTYPE *GetDevice)(
1238 ID3D12VideoDecodeCommandList *This,
1239 REFIID riid,
1240 void **device);
1241
1242 /*** ID3D12CommandList methods ***/
1243 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
1244 ID3D12VideoDecodeCommandList *This);
1245
1246 /*** ID3D12VideoDecodeCommandList methods ***/
1247 HRESULT (STDMETHODCALLTYPE *Close)(
1248 ID3D12VideoDecodeCommandList *This);
1249
1250 HRESULT (STDMETHODCALLTYPE *Reset)(
1251 ID3D12VideoDecodeCommandList *This,
1252 ID3D12CommandAllocator *allocator);
1253
1254 void (STDMETHODCALLTYPE *ClearState)(
1255 ID3D12VideoDecodeCommandList *This);
1256
1257 void (STDMETHODCALLTYPE *ResourceBarrier)(
1258 ID3D12VideoDecodeCommandList *This,
1259 UINT barriers_count,
1260 const D3D12_RESOURCE_BARRIER *barriers);
1261
1262 void (STDMETHODCALLTYPE *DiscardResource)(
1263 ID3D12VideoDecodeCommandList *This,
1264 ID3D12Resource *resource,
1265 const D3D12_DISCARD_REGION *region);
1266
1267 void (STDMETHODCALLTYPE *BeginQuery)(
1268 ID3D12VideoDecodeCommandList *This,
1269 ID3D12QueryHeap *query_heap,
1270 D3D12_QUERY_TYPE type,
1271 UINT index);
1272
1273 void (STDMETHODCALLTYPE *EndQuery)(
1274 ID3D12VideoDecodeCommandList *This,
1275 ID3D12QueryHeap *query_heap,
1276 D3D12_QUERY_TYPE type,
1277 UINT index);
1278
1279 void (STDMETHODCALLTYPE *ResolveQueryData)(
1280 ID3D12VideoDecodeCommandList *This,
1281 ID3D12QueryHeap *query_heap,
1282 D3D12_QUERY_TYPE type,
1283 UINT start_index,
1284 UINT queries_count,
1285 ID3D12Resource *destination_buffer,
1286 UINT64 aligned_destination_buffer_offset);
1287
1288 void (STDMETHODCALLTYPE *SetPredication)(
1289 ID3D12VideoDecodeCommandList *This,
1290 ID3D12Resource *buffer,
1291 UINT64 aligned_buffer_offset,
1292 D3D12_PREDICATION_OP operation);
1293
1294 void (STDMETHODCALLTYPE *SetMarker)(
1295 ID3D12VideoDecodeCommandList *This,
1296 UINT metadata,
1297 const void *data,
1298 UINT size);
1299
1300 void (STDMETHODCALLTYPE *BeginEvent)(
1301 ID3D12VideoDecodeCommandList *This,
1302 UINT metadata,
1303 const void *data,
1304 UINT size);
1305
1306 void (STDMETHODCALLTYPE *EndEvent)(
1307 ID3D12VideoDecodeCommandList *This);
1308
1309 void (STDMETHODCALLTYPE *DecodeFrame)(
1310 ID3D12VideoDecodeCommandList *This,
1311 ID3D12VideoDecoder *decoder,
1312 const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *output_arguments,
1313 const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments);
1314
1315 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
1316 ID3D12VideoDecodeCommandList *This,
1317 UINT count,
1318 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
1319 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
1320
1321 END_INTERFACE
1322} ID3D12VideoDecodeCommandListVtbl;
1323
1324interface ID3D12VideoDecodeCommandList {
1325 CONST_VTBL ID3D12VideoDecodeCommandListVtbl* lpVtbl;
1326};
1327
1328#ifdef COBJMACROS
1329#ifndef WIDL_C_INLINE_WRAPPERS
1330/*** IUnknown methods ***/
1331#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1332#define ID3D12VideoDecodeCommandList_AddRef(This) (This)->lpVtbl->AddRef(This)
1333#define ID3D12VideoDecodeCommandList_Release(This) (This)->lpVtbl->Release(This)
1334/*** ID3D12Object methods ***/
1335#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1336#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1337#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
1338#define ID3D12VideoDecodeCommandList_SetName(This,name) (This)->lpVtbl->SetName(This,name)
1339/*** ID3D12DeviceChild methods ***/
1340#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
1341/*** ID3D12CommandList methods ***/
1342#define ID3D12VideoDecodeCommandList_GetType(This) (This)->lpVtbl->GetType(This)
1343/*** ID3D12VideoDecodeCommandList methods ***/
1344#define ID3D12VideoDecodeCommandList_Close(This) (This)->lpVtbl->Close(This)
1345#define ID3D12VideoDecodeCommandList_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
1346#define ID3D12VideoDecodeCommandList_ClearState(This) (This)->lpVtbl->ClearState(This)
1347#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,barriers_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barriers_count,barriers)
1348#define ID3D12VideoDecodeCommandList_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
1349#define ID3D12VideoDecodeCommandList_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
1350#define ID3D12VideoDecodeCommandList_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
1351#define ID3D12VideoDecodeCommandList_ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset)
1352#define ID3D12VideoDecodeCommandList_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
1353#define ID3D12VideoDecodeCommandList_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
1354#define ID3D12VideoDecodeCommandList_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
1355#define ID3D12VideoDecodeCommandList_EndEvent(This) (This)->lpVtbl->EndEvent(This)
1356#define ID3D12VideoDecodeCommandList_DecodeFrame(This,decoder,output_arguments,input_arguments) (This)->lpVtbl->DecodeFrame(This,decoder,output_arguments,input_arguments)
1357#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
1358#else
1359/*** IUnknown methods ***/
1360static inline HRESULT ID3D12VideoDecodeCommandList_QueryInterface(ID3D12VideoDecodeCommandList* This,REFIID riid,void **ppvObject) {
1361 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1362}
1363static inline ULONG ID3D12VideoDecodeCommandList_AddRef(ID3D12VideoDecodeCommandList* This) {
1364 return This->lpVtbl->AddRef(This);
1365}
1366static inline ULONG ID3D12VideoDecodeCommandList_Release(ID3D12VideoDecodeCommandList* This) {
1367 return This->lpVtbl->Release(This);
1368}
1369/*** ID3D12Object methods ***/
1370static inline HRESULT ID3D12VideoDecodeCommandList_GetPrivateData(ID3D12VideoDecodeCommandList* This,REFGUID guid,UINT *data_size,void *data) {
1371 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1372}
1373static inline HRESULT ID3D12VideoDecodeCommandList_SetPrivateData(ID3D12VideoDecodeCommandList* This,REFGUID guid,UINT data_size,const void *data) {
1374 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1375}
1376static inline HRESULT ID3D12VideoDecodeCommandList_SetPrivateDataInterface(ID3D12VideoDecodeCommandList* This,REFGUID guid,const IUnknown *data) {
1377 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
1378}
1379static inline HRESULT ID3D12VideoDecodeCommandList_SetName(ID3D12VideoDecodeCommandList* This,const WCHAR *name) {
1380 return This->lpVtbl->SetName(This,name);
1381}
1382/*** ID3D12DeviceChild methods ***/
1383static inline HRESULT ID3D12VideoDecodeCommandList_GetDevice(ID3D12VideoDecodeCommandList* This,REFIID riid,void **device) {
1384 return This->lpVtbl->GetDevice(This,riid,device);
1385}
1386/*** ID3D12CommandList methods ***/
1387static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoDecodeCommandList_GetType(ID3D12VideoDecodeCommandList* This) {
1388 return This->lpVtbl->GetType(This);
1389}
1390/*** ID3D12VideoDecodeCommandList methods ***/
1391static inline HRESULT ID3D12VideoDecodeCommandList_Close(ID3D12VideoDecodeCommandList* This) {
1392 return This->lpVtbl->Close(This);
1393}
1394static inline HRESULT ID3D12VideoDecodeCommandList_Reset(ID3D12VideoDecodeCommandList* This,ID3D12CommandAllocator *allocator) {
1395 return This->lpVtbl->Reset(This,allocator);
1396}
1397static inline void ID3D12VideoDecodeCommandList_ClearState(ID3D12VideoDecodeCommandList* This) {
1398 This->lpVtbl->ClearState(This);
1399}
1400static inline void ID3D12VideoDecodeCommandList_ResourceBarrier(ID3D12VideoDecodeCommandList* This,UINT barriers_count,const D3D12_RESOURCE_BARRIER *barriers) {
1401 This->lpVtbl->ResourceBarrier(This,barriers_count,barriers);
1402}
1403static inline void ID3D12VideoDecodeCommandList_DiscardResource(ID3D12VideoDecodeCommandList* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
1404 This->lpVtbl->DiscardResource(This,resource,region);
1405}
1406static inline void ID3D12VideoDecodeCommandList_BeginQuery(ID3D12VideoDecodeCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
1407 This->lpVtbl->BeginQuery(This,query_heap,type,index);
1408}
1409static inline void ID3D12VideoDecodeCommandList_EndQuery(ID3D12VideoDecodeCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
1410 This->lpVtbl->EndQuery(This,query_heap,type,index);
1411}
1412static inline void ID3D12VideoDecodeCommandList_ResolveQueryData(ID3D12VideoDecodeCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT start_index,UINT queries_count,ID3D12Resource *destination_buffer,UINT64 aligned_destination_buffer_offset) {
1413 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset);
1414}
1415static inline void ID3D12VideoDecodeCommandList_SetPredication(ID3D12VideoDecodeCommandList* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
1416 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
1417}
1418static inline void ID3D12VideoDecodeCommandList_SetMarker(ID3D12VideoDecodeCommandList* This,UINT metadata,const void *data,UINT size) {
1419 This->lpVtbl->SetMarker(This,metadata,data,size);
1420}
1421static inline void ID3D12VideoDecodeCommandList_BeginEvent(ID3D12VideoDecodeCommandList* This,UINT metadata,const void *data,UINT size) {
1422 This->lpVtbl->BeginEvent(This,metadata,data,size);
1423}
1424static inline void ID3D12VideoDecodeCommandList_EndEvent(ID3D12VideoDecodeCommandList* This) {
1425 This->lpVtbl->EndEvent(This);
1426}
1427static inline void ID3D12VideoDecodeCommandList_DecodeFrame(ID3D12VideoDecodeCommandList* This,ID3D12VideoDecoder *decoder,const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *output_arguments,const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments) {
1428 This->lpVtbl->DecodeFrame(This,decoder,output_arguments,input_arguments);
1429}
1430static inline void ID3D12VideoDecodeCommandList_WriteBufferImmediate(ID3D12VideoDecodeCommandList* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
1431 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
1432}
1433#endif
1434#endif
1435
1436#endif
1437
1438
1439#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
1440
1441/*****************************************************************************
1442 * ID3D12VideoProcessCommandList interface
1443 */
1444#ifndef __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1445#define __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1446
1447DEFINE_GUID(IID_ID3D12VideoProcessCommandList, 0xaeb2543a, 0x167f, 0x4682, 0xac,0xc8, 0xd1,0x59,0xed,0x4a,0x62,0x09);
1448#if defined(__cplusplus) && !defined(CINTERFACE)
1449MIDL_INTERFACE("aeb2543a-167f-4682-acc8-d159ed4a6209")
1450ID3D12VideoProcessCommandList : public ID3D12CommandList
1451{
1452 virtual HRESULT STDMETHODCALLTYPE Close(
1453 ) = 0;
1454
1455 virtual HRESULT STDMETHODCALLTYPE Reset(
1456 ID3D12CommandAllocator *allocator) = 0;
1457
1458 virtual void STDMETHODCALLTYPE ClearState(
1459 ) = 0;
1460
1461 virtual void STDMETHODCALLTYPE ResourceBarrier(
1462 UINT num_barriers,
1463 const D3D12_RESOURCE_BARRIER *barriers) = 0;
1464
1465 virtual void STDMETHODCALLTYPE DiscardResource(
1466 ID3D12Resource *resource,
1467 const D3D12_DISCARD_REGION *region) = 0;
1468
1469 virtual void STDMETHODCALLTYPE BeginQuery(
1470 ID3D12QueryHeap *query_heap,
1471 D3D12_QUERY_TYPE type,
1472 UINT index) = 0;
1473
1474 virtual void STDMETHODCALLTYPE EndQuery(
1475 ID3D12QueryHeap *query_heap,
1476 D3D12_QUERY_TYPE type,
1477 UINT index) = 0;
1478
1479 virtual void STDMETHODCALLTYPE ResolveQueryData(
1480 ID3D12QueryHeap *query_heap,
1481 D3D12_QUERY_TYPE type,
1482 UINT start_index,
1483 UINT num_queries,
1484 ID3D12Resource *destination_buffer,
1485 UINT64 aligned_destination_buffer_offset) = 0;
1486
1487 virtual void STDMETHODCALLTYPE SetPredication(
1488 ID3D12Resource *buffer,
1489 UINT64 aligned_buffer_offset,
1490 D3D12_PREDICATION_OP operation) = 0;
1491
1492 virtual void STDMETHODCALLTYPE SetMarker(
1493 UINT metadata,
1494 const void *data,
1495 UINT size) = 0;
1496
1497 virtual void STDMETHODCALLTYPE BeginEvent(
1498 UINT metadata,
1499 const void *data,
1500 UINT size) = 0;
1501
1502 virtual void STDMETHODCALLTYPE EndEvent(
1503 ) = 0;
1504
1505 virtual void STDMETHODCALLTYPE ProcessFrames(
1506 ID3D12VideoProcessor *video_processor,
1507 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *output_arguments,
1508 UINT num_input_streams,
1509 const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *input_arguments) = 0;
1510
1511 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1512 UINT count,
1513 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
1514 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) = 0;
1515
1516};
1517#ifdef __CRT_UUID_DECL
1518__CRT_UUID_DECL(ID3D12VideoProcessCommandList, 0xaeb2543a, 0x167f, 0x4682, 0xac,0xc8, 0xd1,0x59,0xed,0x4a,0x62,0x09)
1519#endif
1520#else
1521typedef struct ID3D12VideoProcessCommandListVtbl {
1522 BEGIN_INTERFACE
1523
1524 /*** IUnknown methods ***/
1525 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1526 ID3D12VideoProcessCommandList *This,
1527 REFIID riid,
1528 void **ppvObject);
1529
1530 ULONG (STDMETHODCALLTYPE *AddRef)(
1531 ID3D12VideoProcessCommandList *This);
1532
1533 ULONG (STDMETHODCALLTYPE *Release)(
1534 ID3D12VideoProcessCommandList *This);
1535
1536 /*** ID3D12Object methods ***/
1537 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1538 ID3D12VideoProcessCommandList *This,
1539 REFGUID guid,
1540 UINT *data_size,
1541 void *data);
1542
1543 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1544 ID3D12VideoProcessCommandList *This,
1545 REFGUID guid,
1546 UINT data_size,
1547 const void *data);
1548
1549 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1550 ID3D12VideoProcessCommandList *This,
1551 REFGUID guid,
1552 const IUnknown *data);
1553
1554 HRESULT (STDMETHODCALLTYPE *SetName)(
1555 ID3D12VideoProcessCommandList *This,
1556 const WCHAR *name);
1557
1558 /*** ID3D12DeviceChild methods ***/
1559 HRESULT (STDMETHODCALLTYPE *GetDevice)(
1560 ID3D12VideoProcessCommandList *This,
1561 REFIID riid,
1562 void **device);
1563
1564 /*** ID3D12CommandList methods ***/
1565 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
1566 ID3D12VideoProcessCommandList *This);
1567
1568 /*** ID3D12VideoProcessCommandList methods ***/
1569 HRESULT (STDMETHODCALLTYPE *Close)(
1570 ID3D12VideoProcessCommandList *This);
1571
1572 HRESULT (STDMETHODCALLTYPE *Reset)(
1573 ID3D12VideoProcessCommandList *This,
1574 ID3D12CommandAllocator *allocator);
1575
1576 void (STDMETHODCALLTYPE *ClearState)(
1577 ID3D12VideoProcessCommandList *This);
1578
1579 void (STDMETHODCALLTYPE *ResourceBarrier)(
1580 ID3D12VideoProcessCommandList *This,
1581 UINT num_barriers,
1582 const D3D12_RESOURCE_BARRIER *barriers);
1583
1584 void (STDMETHODCALLTYPE *DiscardResource)(
1585 ID3D12VideoProcessCommandList *This,
1586 ID3D12Resource *resource,
1587 const D3D12_DISCARD_REGION *region);
1588
1589 void (STDMETHODCALLTYPE *BeginQuery)(
1590 ID3D12VideoProcessCommandList *This,
1591 ID3D12QueryHeap *query_heap,
1592 D3D12_QUERY_TYPE type,
1593 UINT index);
1594
1595 void (STDMETHODCALLTYPE *EndQuery)(
1596 ID3D12VideoProcessCommandList *This,
1597 ID3D12QueryHeap *query_heap,
1598 D3D12_QUERY_TYPE type,
1599 UINT index);
1600
1601 void (STDMETHODCALLTYPE *ResolveQueryData)(
1602 ID3D12VideoProcessCommandList *This,
1603 ID3D12QueryHeap *query_heap,
1604 D3D12_QUERY_TYPE type,
1605 UINT start_index,
1606 UINT num_queries,
1607 ID3D12Resource *destination_buffer,
1608 UINT64 aligned_destination_buffer_offset);
1609
1610 void (STDMETHODCALLTYPE *SetPredication)(
1611 ID3D12VideoProcessCommandList *This,
1612 ID3D12Resource *buffer,
1613 UINT64 aligned_buffer_offset,
1614 D3D12_PREDICATION_OP operation);
1615
1616 void (STDMETHODCALLTYPE *SetMarker)(
1617 ID3D12VideoProcessCommandList *This,
1618 UINT metadata,
1619 const void *data,
1620 UINT size);
1621
1622 void (STDMETHODCALLTYPE *BeginEvent)(
1623 ID3D12VideoProcessCommandList *This,
1624 UINT metadata,
1625 const void *data,
1626 UINT size);
1627
1628 void (STDMETHODCALLTYPE *EndEvent)(
1629 ID3D12VideoProcessCommandList *This);
1630
1631 void (STDMETHODCALLTYPE *ProcessFrames)(
1632 ID3D12VideoProcessCommandList *This,
1633 ID3D12VideoProcessor *video_processor,
1634 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *output_arguments,
1635 UINT num_input_streams,
1636 const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *input_arguments);
1637
1638 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
1639 ID3D12VideoProcessCommandList *This,
1640 UINT count,
1641 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
1642 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
1643
1644 END_INTERFACE
1645} ID3D12VideoProcessCommandListVtbl;
1646
1647interface ID3D12VideoProcessCommandList {
1648 CONST_VTBL ID3D12VideoProcessCommandListVtbl* lpVtbl;
1649};
1650
1651#ifdef COBJMACROS
1652#ifndef WIDL_C_INLINE_WRAPPERS
1653/*** IUnknown methods ***/
1654#define ID3D12VideoProcessCommandList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1655#define ID3D12VideoProcessCommandList_AddRef(This) (This)->lpVtbl->AddRef(This)
1656#define ID3D12VideoProcessCommandList_Release(This) (This)->lpVtbl->Release(This)
1657/*** ID3D12Object methods ***/
1658#define ID3D12VideoProcessCommandList_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1659#define ID3D12VideoProcessCommandList_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1660#define ID3D12VideoProcessCommandList_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
1661#define ID3D12VideoProcessCommandList_SetName(This,name) (This)->lpVtbl->SetName(This,name)
1662/*** ID3D12DeviceChild methods ***/
1663#define ID3D12VideoProcessCommandList_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
1664/*** ID3D12CommandList methods ***/
1665#define ID3D12VideoProcessCommandList_GetType(This) (This)->lpVtbl->GetType(This)
1666/*** ID3D12VideoProcessCommandList methods ***/
1667#define ID3D12VideoProcessCommandList_Close(This) (This)->lpVtbl->Close(This)
1668#define ID3D12VideoProcessCommandList_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
1669#define ID3D12VideoProcessCommandList_ClearState(This) (This)->lpVtbl->ClearState(This)
1670#define ID3D12VideoProcessCommandList_ResourceBarrier(This,num_barriers,barriers) (This)->lpVtbl->ResourceBarrier(This,num_barriers,barriers)
1671#define ID3D12VideoProcessCommandList_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
1672#define ID3D12VideoProcessCommandList_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
1673#define ID3D12VideoProcessCommandList_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
1674#define ID3D12VideoProcessCommandList_ResolveQueryData(This,query_heap,type,start_index,num_queries,destination_buffer,aligned_destination_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,num_queries,destination_buffer,aligned_destination_buffer_offset)
1675#define ID3D12VideoProcessCommandList_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
1676#define ID3D12VideoProcessCommandList_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
1677#define ID3D12VideoProcessCommandList_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
1678#define ID3D12VideoProcessCommandList_EndEvent(This) (This)->lpVtbl->EndEvent(This)
1679#define ID3D12VideoProcessCommandList_ProcessFrames(This,video_processor,output_arguments,num_input_streams,input_arguments) (This)->lpVtbl->ProcessFrames(This,video_processor,output_arguments,num_input_streams,input_arguments)
1680#define ID3D12VideoProcessCommandList_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
1681#else
1682/*** IUnknown methods ***/
1683static inline HRESULT ID3D12VideoProcessCommandList_QueryInterface(ID3D12VideoProcessCommandList* This,REFIID riid,void **ppvObject) {
1684 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1685}
1686static inline ULONG ID3D12VideoProcessCommandList_AddRef(ID3D12VideoProcessCommandList* This) {
1687 return This->lpVtbl->AddRef(This);
1688}
1689static inline ULONG ID3D12VideoProcessCommandList_Release(ID3D12VideoProcessCommandList* This) {
1690 return This->lpVtbl->Release(This);
1691}
1692/*** ID3D12Object methods ***/
1693static inline HRESULT ID3D12VideoProcessCommandList_GetPrivateData(ID3D12VideoProcessCommandList* This,REFGUID guid,UINT *data_size,void *data) {
1694 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1695}
1696static inline HRESULT ID3D12VideoProcessCommandList_SetPrivateData(ID3D12VideoProcessCommandList* This,REFGUID guid,UINT data_size,const void *data) {
1697 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1698}
1699static inline HRESULT ID3D12VideoProcessCommandList_SetPrivateDataInterface(ID3D12VideoProcessCommandList* This,REFGUID guid,const IUnknown *data) {
1700 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
1701}
1702static inline HRESULT ID3D12VideoProcessCommandList_SetName(ID3D12VideoProcessCommandList* This,const WCHAR *name) {
1703 return This->lpVtbl->SetName(This,name);
1704}
1705/*** ID3D12DeviceChild methods ***/
1706static inline HRESULT ID3D12VideoProcessCommandList_GetDevice(ID3D12VideoProcessCommandList* This,REFIID riid,void **device) {
1707 return This->lpVtbl->GetDevice(This,riid,device);
1708}
1709/*** ID3D12CommandList methods ***/
1710static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoProcessCommandList_GetType(ID3D12VideoProcessCommandList* This) {
1711 return This->lpVtbl->GetType(This);
1712}
1713/*** ID3D12VideoProcessCommandList methods ***/
1714static inline HRESULT ID3D12VideoProcessCommandList_Close(ID3D12VideoProcessCommandList* This) {
1715 return This->lpVtbl->Close(This);
1716}
1717static inline HRESULT ID3D12VideoProcessCommandList_Reset(ID3D12VideoProcessCommandList* This,ID3D12CommandAllocator *allocator) {
1718 return This->lpVtbl->Reset(This,allocator);
1719}
1720static inline void ID3D12VideoProcessCommandList_ClearState(ID3D12VideoProcessCommandList* This) {
1721 This->lpVtbl->ClearState(This);
1722}
1723static inline void ID3D12VideoProcessCommandList_ResourceBarrier(ID3D12VideoProcessCommandList* This,UINT num_barriers,const D3D12_RESOURCE_BARRIER *barriers) {
1724 This->lpVtbl->ResourceBarrier(This,num_barriers,barriers);
1725}
1726static inline void ID3D12VideoProcessCommandList_DiscardResource(ID3D12VideoProcessCommandList* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
1727 This->lpVtbl->DiscardResource(This,resource,region);
1728}
1729static inline void ID3D12VideoProcessCommandList_BeginQuery(ID3D12VideoProcessCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
1730 This->lpVtbl->BeginQuery(This,query_heap,type,index);
1731}
1732static inline void ID3D12VideoProcessCommandList_EndQuery(ID3D12VideoProcessCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
1733 This->lpVtbl->EndQuery(This,query_heap,type,index);
1734}
1735static inline void ID3D12VideoProcessCommandList_ResolveQueryData(ID3D12VideoProcessCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT start_index,UINT num_queries,ID3D12Resource *destination_buffer,UINT64 aligned_destination_buffer_offset) {
1736 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,num_queries,destination_buffer,aligned_destination_buffer_offset);
1737}
1738static inline void ID3D12VideoProcessCommandList_SetPredication(ID3D12VideoProcessCommandList* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
1739 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
1740}
1741static inline void ID3D12VideoProcessCommandList_SetMarker(ID3D12VideoProcessCommandList* This,UINT metadata,const void *data,UINT size) {
1742 This->lpVtbl->SetMarker(This,metadata,data,size);
1743}
1744static inline void ID3D12VideoProcessCommandList_BeginEvent(ID3D12VideoProcessCommandList* This,UINT metadata,const void *data,UINT size) {
1745 This->lpVtbl->BeginEvent(This,metadata,data,size);
1746}
1747static inline void ID3D12VideoProcessCommandList_EndEvent(ID3D12VideoProcessCommandList* This) {
1748 This->lpVtbl->EndEvent(This);
1749}
1750static inline void ID3D12VideoProcessCommandList_ProcessFrames(ID3D12VideoProcessCommandList* This,ID3D12VideoProcessor *video_processor,const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *output_arguments,UINT num_input_streams,const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *input_arguments) {
1751 This->lpVtbl->ProcessFrames(This,video_processor,output_arguments,num_input_streams,input_arguments);
1752}
1753static inline void ID3D12VideoProcessCommandList_WriteBufferImmediate(ID3D12VideoProcessCommandList* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
1754 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
1755}
1756#endif
1757#endif
1758
1759#endif
1760
1761
1762#endif /* __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__ */
1763
1764typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM {
1765 UINT64 Offset;
1766 ID3D12Resource *pBuffer;
1767} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
1768typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 {
1769 WINBOOL Enable;
1770 ID3D12Resource *pReferenceTexture2D;
1771 UINT ReferenceSubresource;
1772 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
1773 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
1774 UINT OutputWidth;
1775 UINT OutputHeight;
1776} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
1777typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 {
1778 ID3D12Resource *pOutputTexture2D;
1779 UINT OutputSubresource;
1780 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
1781 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[4];
1782} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
1783/*****************************************************************************
1784 * ID3D12VideoDecodeCommandList1 interface
1785 */
1786#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
1787#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
1788
1789DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1, 0xd52f011b, 0xb56e, 0x453c, 0xa0,0x5a, 0xa7,0xf3,0x11,0xc8,0xf4,0x72);
1790#if defined(__cplusplus) && !defined(CINTERFACE)
1791MIDL_INTERFACE("d52f011b-b56e-453c-a05a-a7f311c8f472")
1792ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
1793{
1794 virtual void STDMETHODCALLTYPE DecodeFrame1(
1795 ID3D12VideoDecoder *decoder,
1796 const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *output_arguments,
1797 const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments) = 0;
1798
1799};
1800#ifdef __CRT_UUID_DECL
1801__CRT_UUID_DECL(ID3D12VideoDecodeCommandList1, 0xd52f011b, 0xb56e, 0x453c, 0xa0,0x5a, 0xa7,0xf3,0x11,0xc8,0xf4,0x72)
1802#endif
1803#else
1804typedef struct ID3D12VideoDecodeCommandList1Vtbl {
1805 BEGIN_INTERFACE
1806
1807 /*** IUnknown methods ***/
1808 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1809 ID3D12VideoDecodeCommandList1 *This,
1810 REFIID riid,
1811 void **ppvObject);
1812
1813 ULONG (STDMETHODCALLTYPE *AddRef)(
1814 ID3D12VideoDecodeCommandList1 *This);
1815
1816 ULONG (STDMETHODCALLTYPE *Release)(
1817 ID3D12VideoDecodeCommandList1 *This);
1818
1819 /*** ID3D12Object methods ***/
1820 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1821 ID3D12VideoDecodeCommandList1 *This,
1822 REFGUID guid,
1823 UINT *data_size,
1824 void *data);
1825
1826 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1827 ID3D12VideoDecodeCommandList1 *This,
1828 REFGUID guid,
1829 UINT data_size,
1830 const void *data);
1831
1832 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1833 ID3D12VideoDecodeCommandList1 *This,
1834 REFGUID guid,
1835 const IUnknown *data);
1836
1837 HRESULT (STDMETHODCALLTYPE *SetName)(
1838 ID3D12VideoDecodeCommandList1 *This,
1839 const WCHAR *name);
1840
1841 /*** ID3D12DeviceChild methods ***/
1842 HRESULT (STDMETHODCALLTYPE *GetDevice)(
1843 ID3D12VideoDecodeCommandList1 *This,
1844 REFIID riid,
1845 void **device);
1846
1847 /*** ID3D12CommandList methods ***/
1848 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
1849 ID3D12VideoDecodeCommandList1 *This);
1850
1851 /*** ID3D12VideoDecodeCommandList methods ***/
1852 HRESULT (STDMETHODCALLTYPE *Close)(
1853 ID3D12VideoDecodeCommandList1 *This);
1854
1855 HRESULT (STDMETHODCALLTYPE *Reset)(
1856 ID3D12VideoDecodeCommandList1 *This,
1857 ID3D12CommandAllocator *allocator);
1858
1859 void (STDMETHODCALLTYPE *ClearState)(
1860 ID3D12VideoDecodeCommandList1 *This);
1861
1862 void (STDMETHODCALLTYPE *ResourceBarrier)(
1863 ID3D12VideoDecodeCommandList1 *This,
1864 UINT barriers_count,
1865 const D3D12_RESOURCE_BARRIER *barriers);
1866
1867 void (STDMETHODCALLTYPE *DiscardResource)(
1868 ID3D12VideoDecodeCommandList1 *This,
1869 ID3D12Resource *resource,
1870 const D3D12_DISCARD_REGION *region);
1871
1872 void (STDMETHODCALLTYPE *BeginQuery)(
1873 ID3D12VideoDecodeCommandList1 *This,
1874 ID3D12QueryHeap *query_heap,
1875 D3D12_QUERY_TYPE type,
1876 UINT index);
1877
1878 void (STDMETHODCALLTYPE *EndQuery)(
1879 ID3D12VideoDecodeCommandList1 *This,
1880 ID3D12QueryHeap *query_heap,
1881 D3D12_QUERY_TYPE type,
1882 UINT index);
1883
1884 void (STDMETHODCALLTYPE *ResolveQueryData)(
1885 ID3D12VideoDecodeCommandList1 *This,
1886 ID3D12QueryHeap *query_heap,
1887 D3D12_QUERY_TYPE type,
1888 UINT start_index,
1889 UINT queries_count,
1890 ID3D12Resource *destination_buffer,
1891 UINT64 aligned_destination_buffer_offset);
1892
1893 void (STDMETHODCALLTYPE *SetPredication)(
1894 ID3D12VideoDecodeCommandList1 *This,
1895 ID3D12Resource *buffer,
1896 UINT64 aligned_buffer_offset,
1897 D3D12_PREDICATION_OP operation);
1898
1899 void (STDMETHODCALLTYPE *SetMarker)(
1900 ID3D12VideoDecodeCommandList1 *This,
1901 UINT metadata,
1902 const void *data,
1903 UINT size);
1904
1905 void (STDMETHODCALLTYPE *BeginEvent)(
1906 ID3D12VideoDecodeCommandList1 *This,
1907 UINT metadata,
1908 const void *data,
1909 UINT size);
1910
1911 void (STDMETHODCALLTYPE *EndEvent)(
1912 ID3D12VideoDecodeCommandList1 *This);
1913
1914 void (STDMETHODCALLTYPE *DecodeFrame)(
1915 ID3D12VideoDecodeCommandList1 *This,
1916 ID3D12VideoDecoder *decoder,
1917 const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *output_arguments,
1918 const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments);
1919
1920 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
1921 ID3D12VideoDecodeCommandList1 *This,
1922 UINT count,
1923 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
1924 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
1925
1926 /*** ID3D12VideoDecodeCommandList1 methods ***/
1927 void (STDMETHODCALLTYPE *DecodeFrame1)(
1928 ID3D12VideoDecodeCommandList1 *This,
1929 ID3D12VideoDecoder *decoder,
1930 const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *output_arguments,
1931 const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments);
1932
1933 END_INTERFACE
1934} ID3D12VideoDecodeCommandList1Vtbl;
1935
1936interface ID3D12VideoDecodeCommandList1 {
1937 CONST_VTBL ID3D12VideoDecodeCommandList1Vtbl* lpVtbl;
1938};
1939
1940#ifdef COBJMACROS
1941#ifndef WIDL_C_INLINE_WRAPPERS
1942/*** IUnknown methods ***/
1943#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1944#define ID3D12VideoDecodeCommandList1_AddRef(This) (This)->lpVtbl->AddRef(This)
1945#define ID3D12VideoDecodeCommandList1_Release(This) (This)->lpVtbl->Release(This)
1946/*** ID3D12Object methods ***/
1947#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1948#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1949#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
1950#define ID3D12VideoDecodeCommandList1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
1951/*** ID3D12DeviceChild methods ***/
1952#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
1953/*** ID3D12CommandList methods ***/
1954#define ID3D12VideoDecodeCommandList1_GetType(This) (This)->lpVtbl->GetType(This)
1955/*** ID3D12VideoDecodeCommandList methods ***/
1956#define ID3D12VideoDecodeCommandList1_Close(This) (This)->lpVtbl->Close(This)
1957#define ID3D12VideoDecodeCommandList1_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
1958#define ID3D12VideoDecodeCommandList1_ClearState(This) (This)->lpVtbl->ClearState(This)
1959#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,barriers_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barriers_count,barriers)
1960#define ID3D12VideoDecodeCommandList1_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
1961#define ID3D12VideoDecodeCommandList1_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
1962#define ID3D12VideoDecodeCommandList1_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
1963#define ID3D12VideoDecodeCommandList1_ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset)
1964#define ID3D12VideoDecodeCommandList1_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
1965#define ID3D12VideoDecodeCommandList1_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
1966#define ID3D12VideoDecodeCommandList1_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
1967#define ID3D12VideoDecodeCommandList1_EndEvent(This) (This)->lpVtbl->EndEvent(This)
1968#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,decoder,output_arguments,input_arguments) (This)->lpVtbl->DecodeFrame(This,decoder,output_arguments,input_arguments)
1969#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
1970/*** ID3D12VideoDecodeCommandList1 methods ***/
1971#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,decoder,output_arguments,input_arguments) (This)->lpVtbl->DecodeFrame1(This,decoder,output_arguments,input_arguments)
1972#else
1973/*** IUnknown methods ***/
1974static inline HRESULT ID3D12VideoDecodeCommandList1_QueryInterface(ID3D12VideoDecodeCommandList1* This,REFIID riid,void **ppvObject) {
1975 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1976}
1977static inline ULONG ID3D12VideoDecodeCommandList1_AddRef(ID3D12VideoDecodeCommandList1* This) {
1978 return This->lpVtbl->AddRef(This);
1979}
1980static inline ULONG ID3D12VideoDecodeCommandList1_Release(ID3D12VideoDecodeCommandList1* This) {
1981 return This->lpVtbl->Release(This);
1982}
1983/*** ID3D12Object methods ***/
1984static inline HRESULT ID3D12VideoDecodeCommandList1_GetPrivateData(ID3D12VideoDecodeCommandList1* This,REFGUID guid,UINT *data_size,void *data) {
1985 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1986}
1987static inline HRESULT ID3D12VideoDecodeCommandList1_SetPrivateData(ID3D12VideoDecodeCommandList1* This,REFGUID guid,UINT data_size,const void *data) {
1988 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1989}
1990static inline HRESULT ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(ID3D12VideoDecodeCommandList1* This,REFGUID guid,const IUnknown *data) {
1991 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
1992}
1993static inline HRESULT ID3D12VideoDecodeCommandList1_SetName(ID3D12VideoDecodeCommandList1* This,const WCHAR *name) {
1994 return This->lpVtbl->SetName(This,name);
1995}
1996/*** ID3D12DeviceChild methods ***/
1997static inline HRESULT ID3D12VideoDecodeCommandList1_GetDevice(ID3D12VideoDecodeCommandList1* This,REFIID riid,void **device) {
1998 return This->lpVtbl->GetDevice(This,riid,device);
1999}
2000/*** ID3D12CommandList methods ***/
2001static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoDecodeCommandList1_GetType(ID3D12VideoDecodeCommandList1* This) {
2002 return This->lpVtbl->GetType(This);
2003}
2004/*** ID3D12VideoDecodeCommandList methods ***/
2005static inline HRESULT ID3D12VideoDecodeCommandList1_Close(ID3D12VideoDecodeCommandList1* This) {
2006 return This->lpVtbl->Close(This);
2007}
2008static inline HRESULT ID3D12VideoDecodeCommandList1_Reset(ID3D12VideoDecodeCommandList1* This,ID3D12CommandAllocator *allocator) {
2009 return This->lpVtbl->Reset(This,allocator);
2010}
2011static inline void ID3D12VideoDecodeCommandList1_ClearState(ID3D12VideoDecodeCommandList1* This) {
2012 This->lpVtbl->ClearState(This);
2013}
2014static inline void ID3D12VideoDecodeCommandList1_ResourceBarrier(ID3D12VideoDecodeCommandList1* This,UINT barriers_count,const D3D12_RESOURCE_BARRIER *barriers) {
2015 This->lpVtbl->ResourceBarrier(This,barriers_count,barriers);
2016}
2017static inline void ID3D12VideoDecodeCommandList1_DiscardResource(ID3D12VideoDecodeCommandList1* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
2018 This->lpVtbl->DiscardResource(This,resource,region);
2019}
2020static inline void ID3D12VideoDecodeCommandList1_BeginQuery(ID3D12VideoDecodeCommandList1* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
2021 This->lpVtbl->BeginQuery(This,query_heap,type,index);
2022}
2023static inline void ID3D12VideoDecodeCommandList1_EndQuery(ID3D12VideoDecodeCommandList1* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
2024 This->lpVtbl->EndQuery(This,query_heap,type,index);
2025}
2026static inline void ID3D12VideoDecodeCommandList1_ResolveQueryData(ID3D12VideoDecodeCommandList1* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT start_index,UINT queries_count,ID3D12Resource *destination_buffer,UINT64 aligned_destination_buffer_offset) {
2027 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset);
2028}
2029static inline void ID3D12VideoDecodeCommandList1_SetPredication(ID3D12VideoDecodeCommandList1* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
2030 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
2031}
2032static inline void ID3D12VideoDecodeCommandList1_SetMarker(ID3D12VideoDecodeCommandList1* This,UINT metadata,const void *data,UINT size) {
2033 This->lpVtbl->SetMarker(This,metadata,data,size);
2034}
2035static inline void ID3D12VideoDecodeCommandList1_BeginEvent(ID3D12VideoDecodeCommandList1* This,UINT metadata,const void *data,UINT size) {
2036 This->lpVtbl->BeginEvent(This,metadata,data,size);
2037}
2038static inline void ID3D12VideoDecodeCommandList1_EndEvent(ID3D12VideoDecodeCommandList1* This) {
2039 This->lpVtbl->EndEvent(This);
2040}
2041static inline void ID3D12VideoDecodeCommandList1_DecodeFrame(ID3D12VideoDecodeCommandList1* This,ID3D12VideoDecoder *decoder,const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *output_arguments,const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments) {
2042 This->lpVtbl->DecodeFrame(This,decoder,output_arguments,input_arguments);
2043}
2044static inline void ID3D12VideoDecodeCommandList1_WriteBufferImmediate(ID3D12VideoDecodeCommandList1* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
2045 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
2046}
2047/*** ID3D12VideoDecodeCommandList1 methods ***/
2048static inline void ID3D12VideoDecodeCommandList1_DecodeFrame1(ID3D12VideoDecodeCommandList1* This,ID3D12VideoDecoder *decoder,const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *output_arguments,const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments) {
2049 This->lpVtbl->DecodeFrame1(This,decoder,output_arguments,input_arguments);
2050}
2051#endif
2052#endif
2053
2054#endif
2055
2056
2057#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
2058
2059typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE {
2060 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
2061 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
2062} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
2063typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS {
2064 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
2065 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8,
2066 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16
2067} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
2068DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS)
2069typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION {
2070 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
2071} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
2072typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS {
2073 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
2074 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL
2075} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
2076DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS)
2077typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT {
2078 UINT NodeIndex;
2079 WINBOOL VideoDecodeSupport;
2080 WINBOOL VideoProcessSupport;
2081 WINBOOL VideoEncodeSupport;
2082} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
2083typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR {
2084 UINT NodeIndex;
2085 DXGI_FORMAT InputFormat;
2086 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;
2087 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;
2088 D3D12_VIDEO_SIZE_RANGE SizeRange;
2089} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
2090typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC {
2091 UINT NodeMask;
2092 DXGI_FORMAT InputFormat;
2093 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2094 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2095 D3D12_VIDEO_SIZE_RANGE SizeRange;
2096} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
2097/*****************************************************************************
2098 * ID3D12VideoMotionEstimator interface
2099 */
2100#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2101#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2102
2103DEFINE_GUID(IID_ID3D12VideoMotionEstimator, 0x33fdae0e, 0x098b, 0x428f, 0x87,0xbb, 0x34,0xb6,0x95,0xde,0x08,0xf8);
2104#if defined(__cplusplus) && !defined(CINTERFACE)
2105MIDL_INTERFACE("33fdae0e-098b-428f-87bb-34b695de08f8")
2106ID3D12VideoMotionEstimator : public ID3D12Pageable
2107{
2108#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
2109 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC* STDMETHODCALLTYPE GetDesc(
2110 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *__ret) = 0;
2111 D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc(
2112 )
2113 {
2114 D3D12_VIDEO_MOTION_ESTIMATOR_DESC __ret;
2115 return *GetDesc(&__ret);
2116 }
2117#else
2118 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc(
2119 ) = 0;
2120#endif
2121
2122 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2123 REFIID riid,
2124 void **protected_session) = 0;
2125
2126};
2127#ifdef __CRT_UUID_DECL
2128__CRT_UUID_DECL(ID3D12VideoMotionEstimator, 0x33fdae0e, 0x098b, 0x428f, 0x87,0xbb, 0x34,0xb6,0x95,0xde,0x08,0xf8)
2129#endif
2130#else
2131typedef struct ID3D12VideoMotionEstimatorVtbl {
2132 BEGIN_INTERFACE
2133
2134 /*** IUnknown methods ***/
2135 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2136 ID3D12VideoMotionEstimator *This,
2137 REFIID riid,
2138 void **ppvObject);
2139
2140 ULONG (STDMETHODCALLTYPE *AddRef)(
2141 ID3D12VideoMotionEstimator *This);
2142
2143 ULONG (STDMETHODCALLTYPE *Release)(
2144 ID3D12VideoMotionEstimator *This);
2145
2146 /*** ID3D12Object methods ***/
2147 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
2148 ID3D12VideoMotionEstimator *This,
2149 REFGUID guid,
2150 UINT *data_size,
2151 void *data);
2152
2153 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
2154 ID3D12VideoMotionEstimator *This,
2155 REFGUID guid,
2156 UINT data_size,
2157 const void *data);
2158
2159 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
2160 ID3D12VideoMotionEstimator *This,
2161 REFGUID guid,
2162 const IUnknown *data);
2163
2164 HRESULT (STDMETHODCALLTYPE *SetName)(
2165 ID3D12VideoMotionEstimator *This,
2166 const WCHAR *name);
2167
2168 /*** ID3D12DeviceChild methods ***/
2169 HRESULT (STDMETHODCALLTYPE *GetDevice)(
2170 ID3D12VideoMotionEstimator *This,
2171 REFIID riid,
2172 void **device);
2173
2174 /*** ID3D12VideoMotionEstimator methods ***/
2175 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * (STDMETHODCALLTYPE *GetDesc)(
2176 ID3D12VideoMotionEstimator *This,
2177 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *__ret);
2178
2179 HRESULT (STDMETHODCALLTYPE *GetProtectedResourceSession)(
2180 ID3D12VideoMotionEstimator *This,
2181 REFIID riid,
2182 void **protected_session);
2183
2184 END_INTERFACE
2185} ID3D12VideoMotionEstimatorVtbl;
2186
2187interface ID3D12VideoMotionEstimator {
2188 CONST_VTBL ID3D12VideoMotionEstimatorVtbl* lpVtbl;
2189};
2190
2191#ifdef COBJMACROS
2192#ifndef WIDL_C_INLINE_WRAPPERS
2193/*** IUnknown methods ***/
2194#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2195#define ID3D12VideoMotionEstimator_AddRef(This) (This)->lpVtbl->AddRef(This)
2196#define ID3D12VideoMotionEstimator_Release(This) (This)->lpVtbl->Release(This)
2197/*** ID3D12Object methods ***/
2198#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
2199#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
2200#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
2201#define ID3D12VideoMotionEstimator_SetName(This,name) (This)->lpVtbl->SetName(This,name)
2202/*** ID3D12DeviceChild methods ***/
2203#define ID3D12VideoMotionEstimator_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
2204/*** ID3D12VideoMotionEstimator methods ***/
2205#define ID3D12VideoMotionEstimator_GetDesc(This) ID3D12VideoMotionEstimator_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
2206#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,protected_session) (This)->lpVtbl->GetProtectedResourceSession(This,riid,protected_session)
2207#else
2208/*** IUnknown methods ***/
2209static inline HRESULT ID3D12VideoMotionEstimator_QueryInterface(ID3D12VideoMotionEstimator* This,REFIID riid,void **ppvObject) {
2210 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2211}
2212static inline ULONG ID3D12VideoMotionEstimator_AddRef(ID3D12VideoMotionEstimator* This) {
2213 return This->lpVtbl->AddRef(This);
2214}
2215static inline ULONG ID3D12VideoMotionEstimator_Release(ID3D12VideoMotionEstimator* This) {
2216 return This->lpVtbl->Release(This);
2217}
2218/*** ID3D12Object methods ***/
2219static inline HRESULT ID3D12VideoMotionEstimator_GetPrivateData(ID3D12VideoMotionEstimator* This,REFGUID guid,UINT *data_size,void *data) {
2220 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
2221}
2222static inline HRESULT ID3D12VideoMotionEstimator_SetPrivateData(ID3D12VideoMotionEstimator* This,REFGUID guid,UINT data_size,const void *data) {
2223 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
2224}
2225static inline HRESULT ID3D12VideoMotionEstimator_SetPrivateDataInterface(ID3D12VideoMotionEstimator* This,REFGUID guid,const IUnknown *data) {
2226 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
2227}
2228static inline HRESULT ID3D12VideoMotionEstimator_SetName(ID3D12VideoMotionEstimator* This,const WCHAR *name) {
2229 return This->lpVtbl->SetName(This,name);
2230}
2231/*** ID3D12DeviceChild methods ***/
2232static inline HRESULT ID3D12VideoMotionEstimator_GetDevice(ID3D12VideoMotionEstimator* This,REFIID riid,void **device) {
2233 return This->lpVtbl->GetDevice(This,riid,device);
2234}
2235/*** ID3D12VideoMotionEstimator methods ***/
2236static inline D3D12_VIDEO_MOTION_ESTIMATOR_DESC ID3D12VideoMotionEstimator_GetDesc(ID3D12VideoMotionEstimator* This) {
2237 D3D12_VIDEO_MOTION_ESTIMATOR_DESC __ret;
2238 return *This->lpVtbl->GetDesc(This,&__ret);
2239}
2240static inline HRESULT ID3D12VideoMotionEstimator_GetProtectedResourceSession(ID3D12VideoMotionEstimator* This,REFIID riid,void **protected_session) {
2241 return This->lpVtbl->GetProtectedResourceSession(This,riid,protected_session);
2242}
2243#endif
2244#endif
2245
2246#endif
2247
2248
2249#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
2250
2251typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC {
2252 UINT NodeMask;
2253 DXGI_FORMAT InputFormat;
2254 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2255 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2256 D3D12_VIDEO_SIZE_RANGE SizeRange;
2257} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
2258/*****************************************************************************
2259 * ID3D12VideoMotionVectorHeap interface
2260 */
2261#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
2262#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
2263
2264DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap, 0x5be17987, 0x743a, 0x4061, 0x83,0x4b, 0x23,0xd2,0x2d,0xae,0xa5,0x05);
2265#if defined(__cplusplus) && !defined(CINTERFACE)
2266MIDL_INTERFACE("5be17987-743a-4061-834b-23d22daea505")
2267ID3D12VideoMotionVectorHeap : public ID3D12Pageable
2268{
2269#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
2270 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* STDMETHODCALLTYPE GetDesc(
2271 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *__ret) = 0;
2272 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc(
2273 )
2274 {
2275 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC __ret;
2276 return *GetDesc(&__ret);
2277 }
2278#else
2279 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc(
2280 ) = 0;
2281#endif
2282
2283 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2284 REFIID riid,
2285 void **protected_session) = 0;
2286
2287};
2288#ifdef __CRT_UUID_DECL
2289__CRT_UUID_DECL(ID3D12VideoMotionVectorHeap, 0x5be17987, 0x743a, 0x4061, 0x83,0x4b, 0x23,0xd2,0x2d,0xae,0xa5,0x05)
2290#endif
2291#else
2292typedef struct ID3D12VideoMotionVectorHeapVtbl {
2293 BEGIN_INTERFACE
2294
2295 /*** IUnknown methods ***/
2296 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2297 ID3D12VideoMotionVectorHeap *This,
2298 REFIID riid,
2299 void **ppvObject);
2300
2301 ULONG (STDMETHODCALLTYPE *AddRef)(
2302 ID3D12VideoMotionVectorHeap *This);
2303
2304 ULONG (STDMETHODCALLTYPE *Release)(
2305 ID3D12VideoMotionVectorHeap *This);
2306
2307 /*** ID3D12Object methods ***/
2308 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
2309 ID3D12VideoMotionVectorHeap *This,
2310 REFGUID guid,
2311 UINT *data_size,
2312 void *data);
2313
2314 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
2315 ID3D12VideoMotionVectorHeap *This,
2316 REFGUID guid,
2317 UINT data_size,
2318 const void *data);
2319
2320 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
2321 ID3D12VideoMotionVectorHeap *This,
2322 REFGUID guid,
2323 const IUnknown *data);
2324
2325 HRESULT (STDMETHODCALLTYPE *SetName)(
2326 ID3D12VideoMotionVectorHeap *This,
2327 const WCHAR *name);
2328
2329 /*** ID3D12DeviceChild methods ***/
2330 HRESULT (STDMETHODCALLTYPE *GetDevice)(
2331 ID3D12VideoMotionVectorHeap *This,
2332 REFIID riid,
2333 void **device);
2334
2335 /*** ID3D12VideoMotionVectorHeap methods ***/
2336 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * (STDMETHODCALLTYPE *GetDesc)(
2337 ID3D12VideoMotionVectorHeap *This,
2338 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *__ret);
2339
2340 HRESULT (STDMETHODCALLTYPE *GetProtectedResourceSession)(
2341 ID3D12VideoMotionVectorHeap *This,
2342 REFIID riid,
2343 void **protected_session);
2344
2345 END_INTERFACE
2346} ID3D12VideoMotionVectorHeapVtbl;
2347
2348interface ID3D12VideoMotionVectorHeap {
2349 CONST_VTBL ID3D12VideoMotionVectorHeapVtbl* lpVtbl;
2350};
2351
2352#ifdef COBJMACROS
2353#ifndef WIDL_C_INLINE_WRAPPERS
2354/*** IUnknown methods ***/
2355#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2356#define ID3D12VideoMotionVectorHeap_AddRef(This) (This)->lpVtbl->AddRef(This)
2357#define ID3D12VideoMotionVectorHeap_Release(This) (This)->lpVtbl->Release(This)
2358/*** ID3D12Object methods ***/
2359#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
2360#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
2361#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
2362#define ID3D12VideoMotionVectorHeap_SetName(This,name) (This)->lpVtbl->SetName(This,name)
2363/*** ID3D12DeviceChild methods ***/
2364#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
2365/*** ID3D12VideoMotionVectorHeap methods ***/
2366#define ID3D12VideoMotionVectorHeap_GetDesc(This) ID3D12VideoMotionVectorHeap_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
2367#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,protected_session) (This)->lpVtbl->GetProtectedResourceSession(This,riid,protected_session)
2368#else
2369/*** IUnknown methods ***/
2370static inline HRESULT ID3D12VideoMotionVectorHeap_QueryInterface(ID3D12VideoMotionVectorHeap* This,REFIID riid,void **ppvObject) {
2371 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2372}
2373static inline ULONG ID3D12VideoMotionVectorHeap_AddRef(ID3D12VideoMotionVectorHeap* This) {
2374 return This->lpVtbl->AddRef(This);
2375}
2376static inline ULONG ID3D12VideoMotionVectorHeap_Release(ID3D12VideoMotionVectorHeap* This) {
2377 return This->lpVtbl->Release(This);
2378}
2379/*** ID3D12Object methods ***/
2380static inline HRESULT ID3D12VideoMotionVectorHeap_GetPrivateData(ID3D12VideoMotionVectorHeap* This,REFGUID guid,UINT *data_size,void *data) {
2381 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
2382}
2383static inline HRESULT ID3D12VideoMotionVectorHeap_SetPrivateData(ID3D12VideoMotionVectorHeap* This,REFGUID guid,UINT data_size,const void *data) {
2384 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
2385}
2386static inline HRESULT ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(ID3D12VideoMotionVectorHeap* This,REFGUID guid,const IUnknown *data) {
2387 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
2388}
2389static inline HRESULT ID3D12VideoMotionVectorHeap_SetName(ID3D12VideoMotionVectorHeap* This,const WCHAR *name) {
2390 return This->lpVtbl->SetName(This,name);
2391}
2392/*** ID3D12DeviceChild methods ***/
2393static inline HRESULT ID3D12VideoMotionVectorHeap_GetDevice(ID3D12VideoMotionVectorHeap* This,REFIID riid,void **device) {
2394 return This->lpVtbl->GetDevice(This,riid,device);
2395}
2396/*** ID3D12VideoMotionVectorHeap methods ***/
2397static inline D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC ID3D12VideoMotionVectorHeap_GetDesc(ID3D12VideoMotionVectorHeap* This) {
2398 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC __ret;
2399 return *This->lpVtbl->GetDesc(This,&__ret);
2400}
2401static inline HRESULT ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(ID3D12VideoMotionVectorHeap* This,REFIID riid,void **protected_session) {
2402 return This->lpVtbl->GetProtectedResourceSession(This,riid,protected_session);
2403}
2404#endif
2405#endif
2406
2407#endif
2408
2409
2410#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
2411
2412/*****************************************************************************
2413 * ID3D12VideoDevice1 interface
2414 */
2415#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
2416#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
2417
2418DEFINE_GUID(IID_ID3D12VideoDevice1, 0x981611ad, 0xa144, 0x4c83, 0x98,0x90, 0xf3,0x0e,0x26,0xd6,0x58,0xab);
2419#if defined(__cplusplus) && !defined(CINTERFACE)
2420MIDL_INTERFACE("981611ad-a144-4c83-9890-f30e26d658ab")
2421ID3D12VideoDevice1 : public ID3D12VideoDevice
2422{
2423 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
2424 const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,
2425 ID3D12ProtectedResourceSession *protected_resource_session,
2426 REFIID riid,
2427 void **video_motion_estimator) = 0;
2428
2429 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
2430 const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,
2431 ID3D12ProtectedResourceSession *protected_resource_session,
2432 REFIID riid,
2433 void **video_motion_vector_heap) = 0;
2434
2435};
2436#ifdef __CRT_UUID_DECL
2437__CRT_UUID_DECL(ID3D12VideoDevice1, 0x981611ad, 0xa144, 0x4c83, 0x98,0x90, 0xf3,0x0e,0x26,0xd6,0x58,0xab)
2438#endif
2439#else
2440typedef struct ID3D12VideoDevice1Vtbl {
2441 BEGIN_INTERFACE
2442
2443 /*** IUnknown methods ***/
2444 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2445 ID3D12VideoDevice1 *This,
2446 REFIID riid,
2447 void **ppvObject);
2448
2449 ULONG (STDMETHODCALLTYPE *AddRef)(
2450 ID3D12VideoDevice1 *This);
2451
2452 ULONG (STDMETHODCALLTYPE *Release)(
2453 ID3D12VideoDevice1 *This);
2454
2455 /*** ID3D12VideoDevice methods ***/
2456 HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
2457 ID3D12VideoDevice1 *This,
2458 D3D12_FEATURE_VIDEO feature_video,
2459 void *feature_support_data,
2460 UINT feature_support_data_size);
2461
2462 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
2463 ID3D12VideoDevice1 *This,
2464 const D3D12_VIDEO_DECODER_DESC *desc,
2465 REFIID riid,
2466 void **video_decoder);
2467
2468 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap)(
2469 ID3D12VideoDevice1 *This,
2470 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
2471 REFIID riid,
2472 void **video_decoder_heap);
2473
2474 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
2475 ID3D12VideoDevice1 *This,
2476 UINT node_mask,
2477 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
2478 UINT input_stream_descs_count,
2479 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
2480 REFIID riid,
2481 void **video_processor);
2482
2483 /*** ID3D12VideoDevice1 methods ***/
2484 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionEstimator)(
2485 ID3D12VideoDevice1 *This,
2486 const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,
2487 ID3D12ProtectedResourceSession *protected_resource_session,
2488 REFIID riid,
2489 void **video_motion_estimator);
2490
2491 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionVectorHeap)(
2492 ID3D12VideoDevice1 *This,
2493 const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,
2494 ID3D12ProtectedResourceSession *protected_resource_session,
2495 REFIID riid,
2496 void **video_motion_vector_heap);
2497
2498 END_INTERFACE
2499} ID3D12VideoDevice1Vtbl;
2500
2501interface ID3D12VideoDevice1 {
2502 CONST_VTBL ID3D12VideoDevice1Vtbl* lpVtbl;
2503};
2504
2505#ifdef COBJMACROS
2506#ifndef WIDL_C_INLINE_WRAPPERS
2507/*** IUnknown methods ***/
2508#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2509#define ID3D12VideoDevice1_AddRef(This) (This)->lpVtbl->AddRef(This)
2510#define ID3D12VideoDevice1_Release(This) (This)->lpVtbl->Release(This)
2511/*** ID3D12VideoDevice methods ***/
2512#define ID3D12VideoDevice1_CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size)
2513#define ID3D12VideoDevice1_CreateVideoDecoder(This,desc,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder)
2514#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap) (This)->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap)
2515#define ID3D12VideoDevice1_CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor) (This)->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor)
2516/*** ID3D12VideoDevice1 methods ***/
2517#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator) (This)->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator)
2518#define ID3D12VideoDevice1_CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap) (This)->lpVtbl->CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap)
2519#else
2520/*** IUnknown methods ***/
2521static inline HRESULT ID3D12VideoDevice1_QueryInterface(ID3D12VideoDevice1* This,REFIID riid,void **ppvObject) {
2522 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2523}
2524static inline ULONG ID3D12VideoDevice1_AddRef(ID3D12VideoDevice1* This) {
2525 return This->lpVtbl->AddRef(This);
2526}
2527static inline ULONG ID3D12VideoDevice1_Release(ID3D12VideoDevice1* This) {
2528 return This->lpVtbl->Release(This);
2529}
2530/*** ID3D12VideoDevice methods ***/
2531static inline HRESULT ID3D12VideoDevice1_CheckFeatureSupport(ID3D12VideoDevice1* This,D3D12_FEATURE_VIDEO feature_video,void *feature_support_data,UINT feature_support_data_size) {
2532 return This->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size);
2533}
2534static inline HRESULT ID3D12VideoDevice1_CreateVideoDecoder(ID3D12VideoDevice1* This,const D3D12_VIDEO_DECODER_DESC *desc,REFIID riid,void **video_decoder) {
2535 return This->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder);
2536}
2537static inline HRESULT ID3D12VideoDevice1_CreateVideoDecoderHeap(ID3D12VideoDevice1* This,const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,REFIID riid,void **video_decoder_heap) {
2538 return This->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap);
2539}
2540static inline HRESULT ID3D12VideoDevice1_CreateVideoProcessor(ID3D12VideoDevice1* This,UINT node_mask,const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,UINT input_stream_descs_count,const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,REFIID riid,void **video_processor) {
2541 return This->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor);
2542}
2543/*** ID3D12VideoDevice1 methods ***/
2544static inline HRESULT ID3D12VideoDevice1_CreateVideoMotionEstimator(ID3D12VideoDevice1* This,const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_motion_estimator) {
2545 return This->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator);
2546}
2547static inline HRESULT ID3D12VideoDevice1_CreateVideoMotionVectorHeap(ID3D12VideoDevice1* This,const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_motion_vector_heap) {
2548 return This->lpVtbl->CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap);
2549}
2550#endif
2551#endif
2552
2553#endif
2554
2555
2556#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
2557
2558typedef struct D3D12_RESOURCE_COORDINATE {
2559 UINT64 X;
2560 UINT Y;
2561 UINT Z;
2562 UINT SubresourceIndex;
2563} D3D12_RESOURCE_COORDINATE;
2564typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT {
2565 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
2566} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
2567typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT {
2568 ID3D12Resource *pInputTexture2D;
2569 UINT InputSubresourceIndex;
2570 ID3D12Resource *pReferenceTexture2D;
2571 UINT ReferenceSubresourceIndex;
2572 ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
2573} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
2574typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT {
2575 ID3D12Resource *pMotionVectorTexture2D;
2576 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
2577} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
2578typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT {
2579 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
2580 UINT PixelWidth;
2581 UINT PixelHeight;
2582} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
2583/*****************************************************************************
2584 * ID3D12VideoEncodeCommandList interface
2585 */
2586#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
2587#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
2588
2589DEFINE_GUID(IID_ID3D12VideoEncodeCommandList, 0x8455293a, 0x0cbd, 0x4831, 0x9b,0x39, 0xfb,0xdb,0xab,0x72,0x47,0x23);
2590#if defined(__cplusplus) && !defined(CINTERFACE)
2591MIDL_INTERFACE("8455293a-0cbd-4831-9b39-fbdbab724723")
2592ID3D12VideoEncodeCommandList : public ID3D12CommandList
2593{
2594 virtual HRESULT STDMETHODCALLTYPE Close(
2595 ) = 0;
2596
2597 virtual HRESULT STDMETHODCALLTYPE Reset(
2598 ID3D12CommandAllocator *allocator) = 0;
2599
2600 virtual void STDMETHODCALLTYPE ClearState(
2601 ) = 0;
2602
2603 virtual void STDMETHODCALLTYPE ResourceBarrier(
2604 UINT barriers_count,
2605 const D3D12_RESOURCE_BARRIER *barriers) = 0;
2606
2607 virtual void STDMETHODCALLTYPE DiscardResource(
2608 ID3D12Resource *resource,
2609 const D3D12_DISCARD_REGION *region) = 0;
2610
2611 virtual void STDMETHODCALLTYPE BeginQuery(
2612 ID3D12QueryHeap *query_heap,
2613 D3D12_QUERY_TYPE type,
2614 UINT index) = 0;
2615
2616 virtual void STDMETHODCALLTYPE EndQuery(
2617 ID3D12QueryHeap *query_heap,
2618 D3D12_QUERY_TYPE type,
2619 UINT index) = 0;
2620
2621 virtual void STDMETHODCALLTYPE ResolveQueryData(
2622 ID3D12QueryHeap *query_heap,
2623 D3D12_QUERY_TYPE type,
2624 UINT start_index,
2625 UINT queries_count,
2626 ID3D12Resource *destination_buffer,
2627 UINT64 aligned_destination_buffer_offset) = 0;
2628
2629 virtual void STDMETHODCALLTYPE SetPredication(
2630 ID3D12Resource *buffer,
2631 UINT64 aligned_buffer_offset,
2632 D3D12_PREDICATION_OP operation) = 0;
2633
2634 virtual void STDMETHODCALLTYPE SetMarker(
2635 UINT metadata,
2636 const void *data,
2637 UINT size) = 0;
2638
2639 virtual void STDMETHODCALLTYPE BeginEvent(
2640 UINT metadata,
2641 const void *data,
2642 UINT size) = 0;
2643
2644 virtual void STDMETHODCALLTYPE EndEvent(
2645 ) = 0;
2646
2647 virtual void STDMETHODCALLTYPE EstimateMotion(
2648 ID3D12VideoMotionEstimator *motion_estimator,
2649 const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,
2650 const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments) = 0;
2651
2652 virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
2653 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,
2654 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments) = 0;
2655
2656 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
2657 UINT count,
2658 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
2659 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) = 0;
2660
2661 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
2662 ID3D12ProtectedResourceSession *protected_resource_session) = 0;
2663
2664};
2665#ifdef __CRT_UUID_DECL
2666__CRT_UUID_DECL(ID3D12VideoEncodeCommandList, 0x8455293a, 0x0cbd, 0x4831, 0x9b,0x39, 0xfb,0xdb,0xab,0x72,0x47,0x23)
2667#endif
2668#else
2669typedef struct ID3D12VideoEncodeCommandListVtbl {
2670 BEGIN_INTERFACE
2671
2672 /*** IUnknown methods ***/
2673 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2674 ID3D12VideoEncodeCommandList *This,
2675 REFIID riid,
2676 void **ppvObject);
2677
2678 ULONG (STDMETHODCALLTYPE *AddRef)(
2679 ID3D12VideoEncodeCommandList *This);
2680
2681 ULONG (STDMETHODCALLTYPE *Release)(
2682 ID3D12VideoEncodeCommandList *This);
2683
2684 /*** ID3D12Object methods ***/
2685 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
2686 ID3D12VideoEncodeCommandList *This,
2687 REFGUID guid,
2688 UINT *data_size,
2689 void *data);
2690
2691 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
2692 ID3D12VideoEncodeCommandList *This,
2693 REFGUID guid,
2694 UINT data_size,
2695 const void *data);
2696
2697 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
2698 ID3D12VideoEncodeCommandList *This,
2699 REFGUID guid,
2700 const IUnknown *data);
2701
2702 HRESULT (STDMETHODCALLTYPE *SetName)(
2703 ID3D12VideoEncodeCommandList *This,
2704 const WCHAR *name);
2705
2706 /*** ID3D12DeviceChild methods ***/
2707 HRESULT (STDMETHODCALLTYPE *GetDevice)(
2708 ID3D12VideoEncodeCommandList *This,
2709 REFIID riid,
2710 void **device);
2711
2712 /*** ID3D12CommandList methods ***/
2713 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
2714 ID3D12VideoEncodeCommandList *This);
2715
2716 /*** ID3D12VideoEncodeCommandList methods ***/
2717 HRESULT (STDMETHODCALLTYPE *Close)(
2718 ID3D12VideoEncodeCommandList *This);
2719
2720 HRESULT (STDMETHODCALLTYPE *Reset)(
2721 ID3D12VideoEncodeCommandList *This,
2722 ID3D12CommandAllocator *allocator);
2723
2724 void (STDMETHODCALLTYPE *ClearState)(
2725 ID3D12VideoEncodeCommandList *This);
2726
2727 void (STDMETHODCALLTYPE *ResourceBarrier)(
2728 ID3D12VideoEncodeCommandList *This,
2729 UINT barriers_count,
2730 const D3D12_RESOURCE_BARRIER *barriers);
2731
2732 void (STDMETHODCALLTYPE *DiscardResource)(
2733 ID3D12VideoEncodeCommandList *This,
2734 ID3D12Resource *resource,
2735 const D3D12_DISCARD_REGION *region);
2736
2737 void (STDMETHODCALLTYPE *BeginQuery)(
2738 ID3D12VideoEncodeCommandList *This,
2739 ID3D12QueryHeap *query_heap,
2740 D3D12_QUERY_TYPE type,
2741 UINT index);
2742
2743 void (STDMETHODCALLTYPE *EndQuery)(
2744 ID3D12VideoEncodeCommandList *This,
2745 ID3D12QueryHeap *query_heap,
2746 D3D12_QUERY_TYPE type,
2747 UINT index);
2748
2749 void (STDMETHODCALLTYPE *ResolveQueryData)(
2750 ID3D12VideoEncodeCommandList *This,
2751 ID3D12QueryHeap *query_heap,
2752 D3D12_QUERY_TYPE type,
2753 UINT start_index,
2754 UINT queries_count,
2755 ID3D12Resource *destination_buffer,
2756 UINT64 aligned_destination_buffer_offset);
2757
2758 void (STDMETHODCALLTYPE *SetPredication)(
2759 ID3D12VideoEncodeCommandList *This,
2760 ID3D12Resource *buffer,
2761 UINT64 aligned_buffer_offset,
2762 D3D12_PREDICATION_OP operation);
2763
2764 void (STDMETHODCALLTYPE *SetMarker)(
2765 ID3D12VideoEncodeCommandList *This,
2766 UINT metadata,
2767 const void *data,
2768 UINT size);
2769
2770 void (STDMETHODCALLTYPE *BeginEvent)(
2771 ID3D12VideoEncodeCommandList *This,
2772 UINT metadata,
2773 const void *data,
2774 UINT size);
2775
2776 void (STDMETHODCALLTYPE *EndEvent)(
2777 ID3D12VideoEncodeCommandList *This);
2778
2779 void (STDMETHODCALLTYPE *EstimateMotion)(
2780 ID3D12VideoEncodeCommandList *This,
2781 ID3D12VideoMotionEstimator *motion_estimator,
2782 const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,
2783 const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments);
2784
2785 void (STDMETHODCALLTYPE *ResolveMotionVectorHeap)(
2786 ID3D12VideoEncodeCommandList *This,
2787 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,
2788 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments);
2789
2790 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
2791 ID3D12VideoEncodeCommandList *This,
2792 UINT count,
2793 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
2794 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
2795
2796 void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
2797 ID3D12VideoEncodeCommandList *This,
2798 ID3D12ProtectedResourceSession *protected_resource_session);
2799
2800 END_INTERFACE
2801} ID3D12VideoEncodeCommandListVtbl;
2802
2803interface ID3D12VideoEncodeCommandList {
2804 CONST_VTBL ID3D12VideoEncodeCommandListVtbl* lpVtbl;
2805};
2806
2807#ifdef COBJMACROS
2808#ifndef WIDL_C_INLINE_WRAPPERS
2809/*** IUnknown methods ***/
2810#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2811#define ID3D12VideoEncodeCommandList_AddRef(This) (This)->lpVtbl->AddRef(This)
2812#define ID3D12VideoEncodeCommandList_Release(This) (This)->lpVtbl->Release(This)
2813/*** ID3D12Object methods ***/
2814#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
2815#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
2816#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
2817#define ID3D12VideoEncodeCommandList_SetName(This,name) (This)->lpVtbl->SetName(This,name)
2818/*** ID3D12DeviceChild methods ***/
2819#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
2820/*** ID3D12CommandList methods ***/
2821#define ID3D12VideoEncodeCommandList_GetType(This) (This)->lpVtbl->GetType(This)
2822/*** ID3D12VideoEncodeCommandList methods ***/
2823#define ID3D12VideoEncodeCommandList_Close(This) (This)->lpVtbl->Close(This)
2824#define ID3D12VideoEncodeCommandList_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
2825#define ID3D12VideoEncodeCommandList_ClearState(This) (This)->lpVtbl->ClearState(This)
2826#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,barriers_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barriers_count,barriers)
2827#define ID3D12VideoEncodeCommandList_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
2828#define ID3D12VideoEncodeCommandList_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
2829#define ID3D12VideoEncodeCommandList_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
2830#define ID3D12VideoEncodeCommandList_ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset)
2831#define ID3D12VideoEncodeCommandList_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
2832#define ID3D12VideoEncodeCommandList_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
2833#define ID3D12VideoEncodeCommandList_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
2834#define ID3D12VideoEncodeCommandList_EndEvent(This) (This)->lpVtbl->EndEvent(This)
2835#define ID3D12VideoEncodeCommandList_EstimateMotion(This,motion_estimator,output_arguments,input_arguments) (This)->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments)
2836#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,output_arguments,input_arguments) (This)->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments)
2837#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
2838#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
2839#else
2840/*** IUnknown methods ***/
2841static inline HRESULT ID3D12VideoEncodeCommandList_QueryInterface(ID3D12VideoEncodeCommandList* This,REFIID riid,void **ppvObject) {
2842 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2843}
2844static inline ULONG ID3D12VideoEncodeCommandList_AddRef(ID3D12VideoEncodeCommandList* This) {
2845 return This->lpVtbl->AddRef(This);
2846}
2847static inline ULONG ID3D12VideoEncodeCommandList_Release(ID3D12VideoEncodeCommandList* This) {
2848 return This->lpVtbl->Release(This);
2849}
2850/*** ID3D12Object methods ***/
2851static inline HRESULT ID3D12VideoEncodeCommandList_GetPrivateData(ID3D12VideoEncodeCommandList* This,REFGUID guid,UINT *data_size,void *data) {
2852 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
2853}
2854static inline HRESULT ID3D12VideoEncodeCommandList_SetPrivateData(ID3D12VideoEncodeCommandList* This,REFGUID guid,UINT data_size,const void *data) {
2855 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
2856}
2857static inline HRESULT ID3D12VideoEncodeCommandList_SetPrivateDataInterface(ID3D12VideoEncodeCommandList* This,REFGUID guid,const IUnknown *data) {
2858 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
2859}
2860static inline HRESULT ID3D12VideoEncodeCommandList_SetName(ID3D12VideoEncodeCommandList* This,const WCHAR *name) {
2861 return This->lpVtbl->SetName(This,name);
2862}
2863/*** ID3D12DeviceChild methods ***/
2864static inline HRESULT ID3D12VideoEncodeCommandList_GetDevice(ID3D12VideoEncodeCommandList* This,REFIID riid,void **device) {
2865 return This->lpVtbl->GetDevice(This,riid,device);
2866}
2867/*** ID3D12CommandList methods ***/
2868static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoEncodeCommandList_GetType(ID3D12VideoEncodeCommandList* This) {
2869 return This->lpVtbl->GetType(This);
2870}
2871/*** ID3D12VideoEncodeCommandList methods ***/
2872static inline HRESULT ID3D12VideoEncodeCommandList_Close(ID3D12VideoEncodeCommandList* This) {
2873 return This->lpVtbl->Close(This);
2874}
2875static inline HRESULT ID3D12VideoEncodeCommandList_Reset(ID3D12VideoEncodeCommandList* This,ID3D12CommandAllocator *allocator) {
2876 return This->lpVtbl->Reset(This,allocator);
2877}
2878static inline void ID3D12VideoEncodeCommandList_ClearState(ID3D12VideoEncodeCommandList* This) {
2879 This->lpVtbl->ClearState(This);
2880}
2881static inline void ID3D12VideoEncodeCommandList_ResourceBarrier(ID3D12VideoEncodeCommandList* This,UINT barriers_count,const D3D12_RESOURCE_BARRIER *barriers) {
2882 This->lpVtbl->ResourceBarrier(This,barriers_count,barriers);
2883}
2884static inline void ID3D12VideoEncodeCommandList_DiscardResource(ID3D12VideoEncodeCommandList* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
2885 This->lpVtbl->DiscardResource(This,resource,region);
2886}
2887static inline void ID3D12VideoEncodeCommandList_BeginQuery(ID3D12VideoEncodeCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
2888 This->lpVtbl->BeginQuery(This,query_heap,type,index);
2889}
2890static inline void ID3D12VideoEncodeCommandList_EndQuery(ID3D12VideoEncodeCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
2891 This->lpVtbl->EndQuery(This,query_heap,type,index);
2892}
2893static inline void ID3D12VideoEncodeCommandList_ResolveQueryData(ID3D12VideoEncodeCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT start_index,UINT queries_count,ID3D12Resource *destination_buffer,UINT64 aligned_destination_buffer_offset) {
2894 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset);
2895}
2896static inline void ID3D12VideoEncodeCommandList_SetPredication(ID3D12VideoEncodeCommandList* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
2897 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
2898}
2899static inline void ID3D12VideoEncodeCommandList_SetMarker(ID3D12VideoEncodeCommandList* This,UINT metadata,const void *data,UINT size) {
2900 This->lpVtbl->SetMarker(This,metadata,data,size);
2901}
2902static inline void ID3D12VideoEncodeCommandList_BeginEvent(ID3D12VideoEncodeCommandList* This,UINT metadata,const void *data,UINT size) {
2903 This->lpVtbl->BeginEvent(This,metadata,data,size);
2904}
2905static inline void ID3D12VideoEncodeCommandList_EndEvent(ID3D12VideoEncodeCommandList* This) {
2906 This->lpVtbl->EndEvent(This);
2907}
2908static inline void ID3D12VideoEncodeCommandList_EstimateMotion(ID3D12VideoEncodeCommandList* This,ID3D12VideoMotionEstimator *motion_estimator,const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments) {
2909 This->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments);
2910}
2911static inline void ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(ID3D12VideoEncodeCommandList* This,const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments) {
2912 This->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments);
2913}
2914static inline void ID3D12VideoEncodeCommandList_WriteBufferImmediate(ID3D12VideoEncodeCommandList* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
2915 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
2916}
2917static inline void ID3D12VideoEncodeCommandList_SetProtectedResourceSession(ID3D12VideoEncodeCommandList* This,ID3D12ProtectedResourceSession *protected_resource_session) {
2918 This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
2919}
2920#endif
2921#endif
2922
2923#endif
2924
2925
2926#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
2927
2928typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC {
2929 UINT NodeMask;
2930 GUID CommandId;
2931} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
2932/*****************************************************************************
2933 * ID3D12VideoExtensionCommand interface
2934 */
2935#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
2936#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
2937
2938DEFINE_GUID(IID_ID3D12VideoExtensionCommand, 0x554e41e8, 0xae8e, 0x4a8c, 0xb7,0xd2, 0x5b,0x4f,0x27,0x4a,0x30,0xe4);
2939#if defined(__cplusplus) && !defined(CINTERFACE)
2940MIDL_INTERFACE("554e41e8-ae8e-4a8c-b7d2-5b4f274a30e4")
2941ID3D12VideoExtensionCommand : public ID3D12Pageable
2942{
2943#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
2944 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC* STDMETHODCALLTYPE GetDesc(
2945 D3D12_VIDEO_EXTENSION_COMMAND_DESC *__ret) = 0;
2946 D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc(
2947 )
2948 {
2949 D3D12_VIDEO_EXTENSION_COMMAND_DESC __ret;
2950 return *GetDesc(&__ret);
2951 }
2952#else
2953 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc(
2954 ) = 0;
2955#endif
2956
2957 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2958 REFIID riid,
2959 void **protected_session) = 0;
2960
2961};
2962#ifdef __CRT_UUID_DECL
2963__CRT_UUID_DECL(ID3D12VideoExtensionCommand, 0x554e41e8, 0xae8e, 0x4a8c, 0xb7,0xd2, 0x5b,0x4f,0x27,0x4a,0x30,0xe4)
2964#endif
2965#else
2966typedef struct ID3D12VideoExtensionCommandVtbl {
2967 BEGIN_INTERFACE
2968
2969 /*** IUnknown methods ***/
2970 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2971 ID3D12VideoExtensionCommand *This,
2972 REFIID riid,
2973 void **ppvObject);
2974
2975 ULONG (STDMETHODCALLTYPE *AddRef)(
2976 ID3D12VideoExtensionCommand *This);
2977
2978 ULONG (STDMETHODCALLTYPE *Release)(
2979 ID3D12VideoExtensionCommand *This);
2980
2981 /*** ID3D12Object methods ***/
2982 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
2983 ID3D12VideoExtensionCommand *This,
2984 REFGUID guid,
2985 UINT *data_size,
2986 void *data);
2987
2988 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
2989 ID3D12VideoExtensionCommand *This,
2990 REFGUID guid,
2991 UINT data_size,
2992 const void *data);
2993
2994 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
2995 ID3D12VideoExtensionCommand *This,
2996 REFGUID guid,
2997 const IUnknown *data);
2998
2999 HRESULT (STDMETHODCALLTYPE *SetName)(
3000 ID3D12VideoExtensionCommand *This,
3001 const WCHAR *name);
3002
3003 /*** ID3D12DeviceChild methods ***/
3004 HRESULT (STDMETHODCALLTYPE *GetDevice)(
3005 ID3D12VideoExtensionCommand *This,
3006 REFIID riid,
3007 void **device);
3008
3009 /*** ID3D12VideoExtensionCommand methods ***/
3010 D3D12_VIDEO_EXTENSION_COMMAND_DESC * (STDMETHODCALLTYPE *GetDesc)(
3011 ID3D12VideoExtensionCommand *This,
3012 D3D12_VIDEO_EXTENSION_COMMAND_DESC *__ret);
3013
3014 HRESULT (STDMETHODCALLTYPE *GetProtectedResourceSession)(
3015 ID3D12VideoExtensionCommand *This,
3016 REFIID riid,
3017 void **protected_session);
3018
3019 END_INTERFACE
3020} ID3D12VideoExtensionCommandVtbl;
3021
3022interface ID3D12VideoExtensionCommand {
3023 CONST_VTBL ID3D12VideoExtensionCommandVtbl* lpVtbl;
3024};
3025
3026#ifdef COBJMACROS
3027#ifndef WIDL_C_INLINE_WRAPPERS
3028/*** IUnknown methods ***/
3029#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3030#define ID3D12VideoExtensionCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
3031#define ID3D12VideoExtensionCommand_Release(This) (This)->lpVtbl->Release(This)
3032/*** ID3D12Object methods ***/
3033#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
3034#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
3035#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
3036#define ID3D12VideoExtensionCommand_SetName(This,name) (This)->lpVtbl->SetName(This,name)
3037/*** ID3D12DeviceChild methods ***/
3038#define ID3D12VideoExtensionCommand_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
3039/*** ID3D12VideoExtensionCommand methods ***/
3040#define ID3D12VideoExtensionCommand_GetDesc(This) ID3D12VideoExtensionCommand_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
3041#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,protected_session) (This)->lpVtbl->GetProtectedResourceSession(This,riid,protected_session)
3042#else
3043/*** IUnknown methods ***/
3044static inline HRESULT ID3D12VideoExtensionCommand_QueryInterface(ID3D12VideoExtensionCommand* This,REFIID riid,void **ppvObject) {
3045 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3046}
3047static inline ULONG ID3D12VideoExtensionCommand_AddRef(ID3D12VideoExtensionCommand* This) {
3048 return This->lpVtbl->AddRef(This);
3049}
3050static inline ULONG ID3D12VideoExtensionCommand_Release(ID3D12VideoExtensionCommand* This) {
3051 return This->lpVtbl->Release(This);
3052}
3053/*** ID3D12Object methods ***/
3054static inline HRESULT ID3D12VideoExtensionCommand_GetPrivateData(ID3D12VideoExtensionCommand* This,REFGUID guid,UINT *data_size,void *data) {
3055 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
3056}
3057static inline HRESULT ID3D12VideoExtensionCommand_SetPrivateData(ID3D12VideoExtensionCommand* This,REFGUID guid,UINT data_size,const void *data) {
3058 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
3059}
3060static inline HRESULT ID3D12VideoExtensionCommand_SetPrivateDataInterface(ID3D12VideoExtensionCommand* This,REFGUID guid,const IUnknown *data) {
3061 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
3062}
3063static inline HRESULT ID3D12VideoExtensionCommand_SetName(ID3D12VideoExtensionCommand* This,const WCHAR *name) {
3064 return This->lpVtbl->SetName(This,name);
3065}
3066/*** ID3D12DeviceChild methods ***/
3067static inline HRESULT ID3D12VideoExtensionCommand_GetDevice(ID3D12VideoExtensionCommand* This,REFIID riid,void **device) {
3068 return This->lpVtbl->GetDevice(This,riid,device);
3069}
3070/*** ID3D12VideoExtensionCommand methods ***/
3071static inline D3D12_VIDEO_EXTENSION_COMMAND_DESC ID3D12VideoExtensionCommand_GetDesc(ID3D12VideoExtensionCommand* This) {
3072 D3D12_VIDEO_EXTENSION_COMMAND_DESC __ret;
3073 return *This->lpVtbl->GetDesc(This,&__ret);
3074}
3075static inline HRESULT ID3D12VideoExtensionCommand_GetProtectedResourceSession(ID3D12VideoExtensionCommand* This,REFIID riid,void **protected_session) {
3076 return This->lpVtbl->GetProtectedResourceSession(This,riid,protected_session);
3077}
3078#endif
3079#endif
3080
3081#endif
3082
3083
3084#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
3085
3086/*****************************************************************************
3087 * ID3D12VideoDevice2 interface
3088 */
3089#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
3090#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
3091
3092DEFINE_GUID(IID_ID3D12VideoDevice2, 0xf019ac49, 0xf838, 0x4a95, 0x9b,0x17, 0x57,0x94,0x37,0xc8,0xf5,0x13);
3093#if defined(__cplusplus) && !defined(CINTERFACE)
3094MIDL_INTERFACE("f019ac49-f838-4a95-9b17-579437c8f513")
3095ID3D12VideoDevice2 : public ID3D12VideoDevice1
3096{
3097 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
3098 const D3D12_VIDEO_DECODER_DESC *desc,
3099 ID3D12ProtectedResourceSession *protected_resource_session,
3100 REFIID riid,
3101 void **video_decoder) = 0;
3102
3103 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
3104 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
3105 ID3D12ProtectedResourceSession *protected_resource_session,
3106 REFIID riid,
3107 void **video_decoder_heap) = 0;
3108
3109 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
3110 UINT node_mask,
3111 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
3112 UINT input_stream_descs_count,
3113 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
3114 ID3D12ProtectedResourceSession *protected_resource_session,
3115 REFIID riid,
3116 void **video_processor) = 0;
3117
3118 virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
3119 const D3D12_VIDEO_EXTENSION_COMMAND_DESC *desc,
3120 const void *creation_parameters,
3121 SIZE_T creation_parameters_data_size_in_bytes,
3122 ID3D12ProtectedResourceSession *protected_resource_session,
3123 REFIID riid,
3124 void **video_extension_command) = 0;
3125
3126 virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
3127 ID3D12VideoExtensionCommand *extension_command,
3128 const void *execution_parameters,
3129 SIZE_T execution_parameters_size_in_bytes,
3130 void *output_data,
3131 SIZE_T output_data_size_in_bytes) = 0;
3132
3133};
3134#ifdef __CRT_UUID_DECL
3135__CRT_UUID_DECL(ID3D12VideoDevice2, 0xf019ac49, 0xf838, 0x4a95, 0x9b,0x17, 0x57,0x94,0x37,0xc8,0xf5,0x13)
3136#endif
3137#else
3138typedef struct ID3D12VideoDevice2Vtbl {
3139 BEGIN_INTERFACE
3140
3141 /*** IUnknown methods ***/
3142 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3143 ID3D12VideoDevice2 *This,
3144 REFIID riid,
3145 void **ppvObject);
3146
3147 ULONG (STDMETHODCALLTYPE *AddRef)(
3148 ID3D12VideoDevice2 *This);
3149
3150 ULONG (STDMETHODCALLTYPE *Release)(
3151 ID3D12VideoDevice2 *This);
3152
3153 /*** ID3D12VideoDevice methods ***/
3154 HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
3155 ID3D12VideoDevice2 *This,
3156 D3D12_FEATURE_VIDEO feature_video,
3157 void *feature_support_data,
3158 UINT feature_support_data_size);
3159
3160 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
3161 ID3D12VideoDevice2 *This,
3162 const D3D12_VIDEO_DECODER_DESC *desc,
3163 REFIID riid,
3164 void **video_decoder);
3165
3166 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap)(
3167 ID3D12VideoDevice2 *This,
3168 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
3169 REFIID riid,
3170 void **video_decoder_heap);
3171
3172 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
3173 ID3D12VideoDevice2 *This,
3174 UINT node_mask,
3175 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
3176 UINT input_stream_descs_count,
3177 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
3178 REFIID riid,
3179 void **video_processor);
3180
3181 /*** ID3D12VideoDevice1 methods ***/
3182 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionEstimator)(
3183 ID3D12VideoDevice2 *This,
3184 const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,
3185 ID3D12ProtectedResourceSession *protected_resource_session,
3186 REFIID riid,
3187 void **video_motion_estimator);
3188
3189 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionVectorHeap)(
3190 ID3D12VideoDevice2 *This,
3191 const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,
3192 ID3D12ProtectedResourceSession *protected_resource_session,
3193 REFIID riid,
3194 void **video_motion_vector_heap);
3195
3196 /*** ID3D12VideoDevice2 methods ***/
3197 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder1)(
3198 ID3D12VideoDevice2 *This,
3199 const D3D12_VIDEO_DECODER_DESC *desc,
3200 ID3D12ProtectedResourceSession *protected_resource_session,
3201 REFIID riid,
3202 void **video_decoder);
3203
3204 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap1)(
3205 ID3D12VideoDevice2 *This,
3206 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
3207 ID3D12ProtectedResourceSession *protected_resource_session,
3208 REFIID riid,
3209 void **video_decoder_heap);
3210
3211 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor1)(
3212 ID3D12VideoDevice2 *This,
3213 UINT node_mask,
3214 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
3215 UINT input_stream_descs_count,
3216 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
3217 ID3D12ProtectedResourceSession *protected_resource_session,
3218 REFIID riid,
3219 void **video_processor);
3220
3221 HRESULT (STDMETHODCALLTYPE *CreateVideoExtensionCommand)(
3222 ID3D12VideoDevice2 *This,
3223 const D3D12_VIDEO_EXTENSION_COMMAND_DESC *desc,
3224 const void *creation_parameters,
3225 SIZE_T creation_parameters_data_size_in_bytes,
3226 ID3D12ProtectedResourceSession *protected_resource_session,
3227 REFIID riid,
3228 void **video_extension_command);
3229
3230 HRESULT (STDMETHODCALLTYPE *ExecuteExtensionCommand)(
3231 ID3D12VideoDevice2 *This,
3232 ID3D12VideoExtensionCommand *extension_command,
3233 const void *execution_parameters,
3234 SIZE_T execution_parameters_size_in_bytes,
3235 void *output_data,
3236 SIZE_T output_data_size_in_bytes);
3237
3238 END_INTERFACE
3239} ID3D12VideoDevice2Vtbl;
3240
3241interface ID3D12VideoDevice2 {
3242 CONST_VTBL ID3D12VideoDevice2Vtbl* lpVtbl;
3243};
3244
3245#ifdef COBJMACROS
3246#ifndef WIDL_C_INLINE_WRAPPERS
3247/*** IUnknown methods ***/
3248#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3249#define ID3D12VideoDevice2_AddRef(This) (This)->lpVtbl->AddRef(This)
3250#define ID3D12VideoDevice2_Release(This) (This)->lpVtbl->Release(This)
3251/*** ID3D12VideoDevice methods ***/
3252#define ID3D12VideoDevice2_CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size)
3253#define ID3D12VideoDevice2_CreateVideoDecoder(This,desc,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder)
3254#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap) (This)->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap)
3255#define ID3D12VideoDevice2_CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor) (This)->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor)
3256/*** ID3D12VideoDevice1 methods ***/
3257#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator) (This)->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator)
3258#define ID3D12VideoDevice2_CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap) (This)->lpVtbl->CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap)
3259/*** ID3D12VideoDevice2 methods ***/
3260#define ID3D12VideoDevice2_CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder)
3261#define ID3D12VideoDevice2_CreateVideoDecoderHeap1(This,video_decoder_heap_desc,protected_resource_session,riid,video_decoder_heap) (This)->lpVtbl->CreateVideoDecoderHeap1(This,video_decoder_heap_desc,protected_resource_session,riid,video_decoder_heap)
3262#define ID3D12VideoDevice2_CreateVideoProcessor1(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,protected_resource_session,riid,video_processor) (This)->lpVtbl->CreateVideoProcessor1(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,protected_resource_session,riid,video_processor)
3263#define ID3D12VideoDevice2_CreateVideoExtensionCommand(This,desc,creation_parameters,creation_parameters_data_size_in_bytes,protected_resource_session,riid,video_extension_command) (This)->lpVtbl->CreateVideoExtensionCommand(This,desc,creation_parameters,creation_parameters_data_size_in_bytes,protected_resource_session,riid,video_extension_command)
3264#define ID3D12VideoDevice2_ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes,output_data,output_data_size_in_bytes) (This)->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes,output_data,output_data_size_in_bytes)
3265#else
3266/*** IUnknown methods ***/
3267static inline HRESULT ID3D12VideoDevice2_QueryInterface(ID3D12VideoDevice2* This,REFIID riid,void **ppvObject) {
3268 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3269}
3270static inline ULONG ID3D12VideoDevice2_AddRef(ID3D12VideoDevice2* This) {
3271 return This->lpVtbl->AddRef(This);
3272}
3273static inline ULONG ID3D12VideoDevice2_Release(ID3D12VideoDevice2* This) {
3274 return This->lpVtbl->Release(This);
3275}
3276/*** ID3D12VideoDevice methods ***/
3277static inline HRESULT ID3D12VideoDevice2_CheckFeatureSupport(ID3D12VideoDevice2* This,D3D12_FEATURE_VIDEO feature_video,void *feature_support_data,UINT feature_support_data_size) {
3278 return This->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size);
3279}
3280static inline HRESULT ID3D12VideoDevice2_CreateVideoDecoder(ID3D12VideoDevice2* This,const D3D12_VIDEO_DECODER_DESC *desc,REFIID riid,void **video_decoder) {
3281 return This->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder);
3282}
3283static inline HRESULT ID3D12VideoDevice2_CreateVideoDecoderHeap(ID3D12VideoDevice2* This,const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,REFIID riid,void **video_decoder_heap) {
3284 return This->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap);
3285}
3286static inline HRESULT ID3D12VideoDevice2_CreateVideoProcessor(ID3D12VideoDevice2* This,UINT node_mask,const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,UINT input_stream_descs_count,const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,REFIID riid,void **video_processor) {
3287 return This->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor);
3288}
3289/*** ID3D12VideoDevice1 methods ***/
3290static inline HRESULT ID3D12VideoDevice2_CreateVideoMotionEstimator(ID3D12VideoDevice2* This,const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_motion_estimator) {
3291 return This->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator);
3292}
3293static inline HRESULT ID3D12VideoDevice2_CreateVideoMotionVectorHeap(ID3D12VideoDevice2* This,const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_motion_vector_heap) {
3294 return This->lpVtbl->CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap);
3295}
3296/*** ID3D12VideoDevice2 methods ***/
3297static inline HRESULT ID3D12VideoDevice2_CreateVideoDecoder1(ID3D12VideoDevice2* This,const D3D12_VIDEO_DECODER_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_decoder) {
3298 return This->lpVtbl->CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder);
3299}
3300static inline HRESULT ID3D12VideoDevice2_CreateVideoDecoderHeap1(ID3D12VideoDevice2* This,const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_decoder_heap) {
3301 return This->lpVtbl->CreateVideoDecoderHeap1(This,video_decoder_heap_desc,protected_resource_session,riid,video_decoder_heap);
3302}
3303static inline HRESULT ID3D12VideoDevice2_CreateVideoProcessor1(ID3D12VideoDevice2* This,UINT node_mask,const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,UINT input_stream_descs_count,const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_processor) {
3304 return This->lpVtbl->CreateVideoProcessor1(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,protected_resource_session,riid,video_processor);
3305}
3306static inline HRESULT ID3D12VideoDevice2_CreateVideoExtensionCommand(ID3D12VideoDevice2* This,const D3D12_VIDEO_EXTENSION_COMMAND_DESC *desc,const void *creation_parameters,SIZE_T creation_parameters_data_size_in_bytes,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_extension_command) {
3307 return This->lpVtbl->CreateVideoExtensionCommand(This,desc,creation_parameters,creation_parameters_data_size_in_bytes,protected_resource_session,riid,video_extension_command);
3308}
3309static inline HRESULT ID3D12VideoDevice2_ExecuteExtensionCommand(ID3D12VideoDevice2* This,ID3D12VideoExtensionCommand *extension_command,const void *execution_parameters,SIZE_T execution_parameters_size_in_bytes,void *output_data,SIZE_T output_data_size_in_bytes) {
3310 return This->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes,output_data,output_data_size_in_bytes);
3311}
3312#endif
3313#endif
3314
3315#endif
3316
3317
3318#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
3319
3320/*****************************************************************************
3321 * ID3D12VideoEncodeCommandList1 interface
3322 */
3323#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
3324#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
3325
3326DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1, 0x94971eca, 0x2bdb, 0x4769, 0x88,0xcf, 0x36,0x75,0xea,0x75,0x7e,0xbc);
3327#if defined(__cplusplus) && !defined(CINTERFACE)
3328MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
3329ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
3330{
3331 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
3332 ID3D12VideoExtensionCommand *extension_command,
3333 const void *initialization_parameters,
3334 SIZE_T initialization_parameters_size_in_bytes) = 0;
3335
3336 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
3337 ID3D12VideoExtensionCommand *extension_command,
3338 const void *execution_parameters,
3339 SIZE_T execution_parameters_size_in_bytes) = 0;
3340
3341};
3342#ifdef __CRT_UUID_DECL
3343__CRT_UUID_DECL(ID3D12VideoEncodeCommandList1, 0x94971eca, 0x2bdb, 0x4769, 0x88,0xcf, 0x36,0x75,0xea,0x75,0x7e,0xbc)
3344#endif
3345#else
3346typedef struct ID3D12VideoEncodeCommandList1Vtbl {
3347 BEGIN_INTERFACE
3348
3349 /*** IUnknown methods ***/
3350 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3351 ID3D12VideoEncodeCommandList1 *This,
3352 REFIID riid,
3353 void **ppvObject);
3354
3355 ULONG (STDMETHODCALLTYPE *AddRef)(
3356 ID3D12VideoEncodeCommandList1 *This);
3357
3358 ULONG (STDMETHODCALLTYPE *Release)(
3359 ID3D12VideoEncodeCommandList1 *This);
3360
3361 /*** ID3D12Object methods ***/
3362 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
3363 ID3D12VideoEncodeCommandList1 *This,
3364 REFGUID guid,
3365 UINT *data_size,
3366 void *data);
3367
3368 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
3369 ID3D12VideoEncodeCommandList1 *This,
3370 REFGUID guid,
3371 UINT data_size,
3372 const void *data);
3373
3374 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
3375 ID3D12VideoEncodeCommandList1 *This,
3376 REFGUID guid,
3377 const IUnknown *data);
3378
3379 HRESULT (STDMETHODCALLTYPE *SetName)(
3380 ID3D12VideoEncodeCommandList1 *This,
3381 const WCHAR *name);
3382
3383 /*** ID3D12DeviceChild methods ***/
3384 HRESULT (STDMETHODCALLTYPE *GetDevice)(
3385 ID3D12VideoEncodeCommandList1 *This,
3386 REFIID riid,
3387 void **device);
3388
3389 /*** ID3D12CommandList methods ***/
3390 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
3391 ID3D12VideoEncodeCommandList1 *This);
3392
3393 /*** ID3D12VideoEncodeCommandList methods ***/
3394 HRESULT (STDMETHODCALLTYPE *Close)(
3395 ID3D12VideoEncodeCommandList1 *This);
3396
3397 HRESULT (STDMETHODCALLTYPE *Reset)(
3398 ID3D12VideoEncodeCommandList1 *This,
3399 ID3D12CommandAllocator *allocator);
3400
3401 void (STDMETHODCALLTYPE *ClearState)(
3402 ID3D12VideoEncodeCommandList1 *This);
3403
3404 void (STDMETHODCALLTYPE *ResourceBarrier)(
3405 ID3D12VideoEncodeCommandList1 *This,
3406 UINT barriers_count,
3407 const D3D12_RESOURCE_BARRIER *barriers);
3408
3409 void (STDMETHODCALLTYPE *DiscardResource)(
3410 ID3D12VideoEncodeCommandList1 *This,
3411 ID3D12Resource *resource,
3412 const D3D12_DISCARD_REGION *region);
3413
3414 void (STDMETHODCALLTYPE *BeginQuery)(
3415 ID3D12VideoEncodeCommandList1 *This,
3416 ID3D12QueryHeap *query_heap,
3417 D3D12_QUERY_TYPE type,
3418 UINT index);
3419
3420 void (STDMETHODCALLTYPE *EndQuery)(
3421 ID3D12VideoEncodeCommandList1 *This,
3422 ID3D12QueryHeap *query_heap,
3423 D3D12_QUERY_TYPE type,
3424 UINT index);
3425
3426 void (STDMETHODCALLTYPE *ResolveQueryData)(
3427 ID3D12VideoEncodeCommandList1 *This,
3428 ID3D12QueryHeap *query_heap,
3429 D3D12_QUERY_TYPE type,
3430 UINT start_index,
3431 UINT queries_count,
3432 ID3D12Resource *destination_buffer,
3433 UINT64 aligned_destination_buffer_offset);
3434
3435 void (STDMETHODCALLTYPE *SetPredication)(
3436 ID3D12VideoEncodeCommandList1 *This,
3437 ID3D12Resource *buffer,
3438 UINT64 aligned_buffer_offset,
3439 D3D12_PREDICATION_OP operation);
3440
3441 void (STDMETHODCALLTYPE *SetMarker)(
3442 ID3D12VideoEncodeCommandList1 *This,
3443 UINT metadata,
3444 const void *data,
3445 UINT size);
3446
3447 void (STDMETHODCALLTYPE *BeginEvent)(
3448 ID3D12VideoEncodeCommandList1 *This,
3449 UINT metadata,
3450 const void *data,
3451 UINT size);
3452
3453 void (STDMETHODCALLTYPE *EndEvent)(
3454 ID3D12VideoEncodeCommandList1 *This);
3455
3456 void (STDMETHODCALLTYPE *EstimateMotion)(
3457 ID3D12VideoEncodeCommandList1 *This,
3458 ID3D12VideoMotionEstimator *motion_estimator,
3459 const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,
3460 const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments);
3461
3462 void (STDMETHODCALLTYPE *ResolveMotionVectorHeap)(
3463 ID3D12VideoEncodeCommandList1 *This,
3464 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,
3465 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments);
3466
3467 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
3468 ID3D12VideoEncodeCommandList1 *This,
3469 UINT count,
3470 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
3471 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
3472
3473 void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
3474 ID3D12VideoEncodeCommandList1 *This,
3475 ID3D12ProtectedResourceSession *protected_resource_session);
3476
3477 /*** ID3D12VideoEncodeCommandList1 methods ***/
3478 void (STDMETHODCALLTYPE *InitializeExtensionCommand)(
3479 ID3D12VideoEncodeCommandList1 *This,
3480 ID3D12VideoExtensionCommand *extension_command,
3481 const void *initialization_parameters,
3482 SIZE_T initialization_parameters_size_in_bytes);
3483
3484 void (STDMETHODCALLTYPE *ExecuteExtensionCommand)(
3485 ID3D12VideoEncodeCommandList1 *This,
3486 ID3D12VideoExtensionCommand *extension_command,
3487 const void *execution_parameters,
3488 SIZE_T execution_parameters_size_in_bytes);
3489
3490 END_INTERFACE
3491} ID3D12VideoEncodeCommandList1Vtbl;
3492
3493interface ID3D12VideoEncodeCommandList1 {
3494 CONST_VTBL ID3D12VideoEncodeCommandList1Vtbl* lpVtbl;
3495};
3496
3497#ifdef COBJMACROS
3498#ifndef WIDL_C_INLINE_WRAPPERS
3499/*** IUnknown methods ***/
3500#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3501#define ID3D12VideoEncodeCommandList1_AddRef(This) (This)->lpVtbl->AddRef(This)
3502#define ID3D12VideoEncodeCommandList1_Release(This) (This)->lpVtbl->Release(This)
3503/*** ID3D12Object methods ***/
3504#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
3505#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
3506#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
3507#define ID3D12VideoEncodeCommandList1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
3508/*** ID3D12DeviceChild methods ***/
3509#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
3510/*** ID3D12CommandList methods ***/
3511#define ID3D12VideoEncodeCommandList1_GetType(This) (This)->lpVtbl->GetType(This)
3512/*** ID3D12VideoEncodeCommandList methods ***/
3513#define ID3D12VideoEncodeCommandList1_Close(This) (This)->lpVtbl->Close(This)
3514#define ID3D12VideoEncodeCommandList1_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
3515#define ID3D12VideoEncodeCommandList1_ClearState(This) (This)->lpVtbl->ClearState(This)
3516#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,barriers_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barriers_count,barriers)
3517#define ID3D12VideoEncodeCommandList1_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
3518#define ID3D12VideoEncodeCommandList1_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
3519#define ID3D12VideoEncodeCommandList1_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
3520#define ID3D12VideoEncodeCommandList1_ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset)
3521#define ID3D12VideoEncodeCommandList1_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
3522#define ID3D12VideoEncodeCommandList1_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
3523#define ID3D12VideoEncodeCommandList1_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
3524#define ID3D12VideoEncodeCommandList1_EndEvent(This) (This)->lpVtbl->EndEvent(This)
3525#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,motion_estimator,output_arguments,input_arguments) (This)->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments)
3526#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,output_arguments,input_arguments) (This)->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments)
3527#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
3528#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
3529/*** ID3D12VideoEncodeCommandList1 methods ***/
3530#define ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(This,extension_command,initialization_parameters,initialization_parameters_size_in_bytes) (This)->lpVtbl->InitializeExtensionCommand(This,extension_command,initialization_parameters,initialization_parameters_size_in_bytes)
3531#define ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes) (This)->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes)
3532#else
3533/*** IUnknown methods ***/
3534static inline HRESULT ID3D12VideoEncodeCommandList1_QueryInterface(ID3D12VideoEncodeCommandList1* This,REFIID riid,void **ppvObject) {
3535 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3536}
3537static inline ULONG ID3D12VideoEncodeCommandList1_AddRef(ID3D12VideoEncodeCommandList1* This) {
3538 return This->lpVtbl->AddRef(This);
3539}
3540static inline ULONG ID3D12VideoEncodeCommandList1_Release(ID3D12VideoEncodeCommandList1* This) {
3541 return This->lpVtbl->Release(This);
3542}
3543/*** ID3D12Object methods ***/
3544static inline HRESULT ID3D12VideoEncodeCommandList1_GetPrivateData(ID3D12VideoEncodeCommandList1* This,REFGUID guid,UINT *data_size,void *data) {
3545 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
3546}
3547static inline HRESULT ID3D12VideoEncodeCommandList1_SetPrivateData(ID3D12VideoEncodeCommandList1* This,REFGUID guid,UINT data_size,const void *data) {
3548 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
3549}
3550static inline HRESULT ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(ID3D12VideoEncodeCommandList1* This,REFGUID guid,const IUnknown *data) {
3551 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
3552}
3553static inline HRESULT ID3D12VideoEncodeCommandList1_SetName(ID3D12VideoEncodeCommandList1* This,const WCHAR *name) {
3554 return This->lpVtbl->SetName(This,name);
3555}
3556/*** ID3D12DeviceChild methods ***/
3557static inline HRESULT ID3D12VideoEncodeCommandList1_GetDevice(ID3D12VideoEncodeCommandList1* This,REFIID riid,void **device) {
3558 return This->lpVtbl->GetDevice(This,riid,device);
3559}
3560/*** ID3D12CommandList methods ***/
3561static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoEncodeCommandList1_GetType(ID3D12VideoEncodeCommandList1* This) {
3562 return This->lpVtbl->GetType(This);
3563}
3564/*** ID3D12VideoEncodeCommandList methods ***/
3565static inline HRESULT ID3D12VideoEncodeCommandList1_Close(ID3D12VideoEncodeCommandList1* This) {
3566 return This->lpVtbl->Close(This);
3567}
3568static inline HRESULT ID3D12VideoEncodeCommandList1_Reset(ID3D12VideoEncodeCommandList1* This,ID3D12CommandAllocator *allocator) {
3569 return This->lpVtbl->Reset(This,allocator);
3570}
3571static inline void ID3D12VideoEncodeCommandList1_ClearState(ID3D12VideoEncodeCommandList1* This) {
3572 This->lpVtbl->ClearState(This);
3573}
3574static inline void ID3D12VideoEncodeCommandList1_ResourceBarrier(ID3D12VideoEncodeCommandList1* This,UINT barriers_count,const D3D12_RESOURCE_BARRIER *barriers) {
3575 This->lpVtbl->ResourceBarrier(This,barriers_count,barriers);
3576}
3577static inline void ID3D12VideoEncodeCommandList1_DiscardResource(ID3D12VideoEncodeCommandList1* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
3578 This->lpVtbl->DiscardResource(This,resource,region);
3579}
3580static inline void ID3D12VideoEncodeCommandList1_BeginQuery(ID3D12VideoEncodeCommandList1* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
3581 This->lpVtbl->BeginQuery(This,query_heap,type,index);
3582}
3583static inline void ID3D12VideoEncodeCommandList1_EndQuery(ID3D12VideoEncodeCommandList1* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
3584 This->lpVtbl->EndQuery(This,query_heap,type,index);
3585}
3586static inline void ID3D12VideoEncodeCommandList1_ResolveQueryData(ID3D12VideoEncodeCommandList1* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT start_index,UINT queries_count,ID3D12Resource *destination_buffer,UINT64 aligned_destination_buffer_offset) {
3587 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset);
3588}
3589static inline void ID3D12VideoEncodeCommandList1_SetPredication(ID3D12VideoEncodeCommandList1* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
3590 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
3591}
3592static inline void ID3D12VideoEncodeCommandList1_SetMarker(ID3D12VideoEncodeCommandList1* This,UINT metadata,const void *data,UINT size) {
3593 This->lpVtbl->SetMarker(This,metadata,data,size);
3594}
3595static inline void ID3D12VideoEncodeCommandList1_BeginEvent(ID3D12VideoEncodeCommandList1* This,UINT metadata,const void *data,UINT size) {
3596 This->lpVtbl->BeginEvent(This,metadata,data,size);
3597}
3598static inline void ID3D12VideoEncodeCommandList1_EndEvent(ID3D12VideoEncodeCommandList1* This) {
3599 This->lpVtbl->EndEvent(This);
3600}
3601static inline void ID3D12VideoEncodeCommandList1_EstimateMotion(ID3D12VideoEncodeCommandList1* This,ID3D12VideoMotionEstimator *motion_estimator,const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments) {
3602 This->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments);
3603}
3604static inline void ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(ID3D12VideoEncodeCommandList1* This,const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments) {
3605 This->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments);
3606}
3607static inline void ID3D12VideoEncodeCommandList1_WriteBufferImmediate(ID3D12VideoEncodeCommandList1* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
3608 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
3609}
3610static inline void ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(ID3D12VideoEncodeCommandList1* This,ID3D12ProtectedResourceSession *protected_resource_session) {
3611 This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
3612}
3613/*** ID3D12VideoEncodeCommandList1 methods ***/
3614static inline void ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(ID3D12VideoEncodeCommandList1* This,ID3D12VideoExtensionCommand *extension_command,const void *initialization_parameters,SIZE_T initialization_parameters_size_in_bytes) {
3615 This->lpVtbl->InitializeExtensionCommand(This,extension_command,initialization_parameters,initialization_parameters_size_in_bytes);
3616}
3617static inline void ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(ID3D12VideoEncodeCommandList1* This,ID3D12VideoExtensionCommand *extension_command,const void *execution_parameters,SIZE_T execution_parameters_size_in_bytes) {
3618 This->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes);
3619}
3620#endif
3621#endif
3622
3623#endif
3624
3625
3626#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
3627
3628DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
3629DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
3630DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
3631DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
3632DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
3633DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
3634DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
3635DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
3636DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
3637DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
3638DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
3639DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
3640DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
3641DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
3642DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
3643DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
3644DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
3645DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
3646DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
3647DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
3648typedef enum D3D12_VIDEO_ENCODER_AV1_PROFILE {
3649 D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
3650 D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
3651 D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2
3652} D3D12_VIDEO_ENCODER_AV1_PROFILE;
3653typedef enum D3D12_VIDEO_ENCODER_AV1_LEVELS {
3654 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
3655 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
3656 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
3657 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
3658 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
3659 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
3660 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
3661 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
3662 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
3663 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
3664 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
3665 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
3666 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
3667 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
3668 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
3669 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
3670 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
3671 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
3672 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
3673 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
3674 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
3675 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
3676 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
3677 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23
3678} D3D12_VIDEO_ENCODER_AV1_LEVELS;
3679typedef enum D3D12_VIDEO_ENCODER_AV1_TIER {
3680 D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
3681 D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1
3682} D3D12_VIDEO_ENCODER_AV1_TIER;
3683typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS {
3684 D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
3685 D3D12_VIDEO_ENCODER_AV1_TIER Tier;
3686} D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
3687typedef enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS {
3688 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0x0,
3689 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
3690 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
3691 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
3692 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
3693 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
3694 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
3695 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
3696 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
3697 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
3698 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
3699 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
3700 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
3701 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
3702 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
3703 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
3704 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
3705 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
3706 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
3707 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
3708 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
3709 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
3710 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
3711 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
3712 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
3713 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
3714 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000
3715} D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
3716DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)
3717typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE {
3718 D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
3719 D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
3720 D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2
3721} D3D12_VIDEO_ENCODER_AV1_TX_MODE;
3722typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS {
3723 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0x0,
3724 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4,
3725 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST,
3726 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT
3727} D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
3728DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)
3729typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS {
3730 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
3731 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
3732 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
3733 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
3734 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4
3735} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
3736typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS {
3737 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0x0,
3738 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP,
3739 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH,
3740 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP,
3741 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR,
3742 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE
3743} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
3744DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)
3745typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE {
3746 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
3747 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
3748 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
3749 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
3750 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4
3751} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
3752typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE {
3753 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
3754 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
3755 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
3756 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
3757 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
3758 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
3759 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
3760 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
3761 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8
3762} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
3763typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS {
3764 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
3765 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED,
3766 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q,
3767 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V,
3768 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H,
3769 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U,
3770 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V,
3771 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME,
3772 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP,
3773 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV
3774} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
3775DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)
3776typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE {
3777 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
3778 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
3779 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
3780 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3
3781} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
3782typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE {
3783 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
3784 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
3785 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
3786 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
3787 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4
3788} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
3789typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS {
3790 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0x0,
3791 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
3792 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
3793 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
3794 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8
3795} D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
3796DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)
3797typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION {
3798 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
3799 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
3800 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
3801 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3
3802} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
3803typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS {
3804 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0,
3805 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY,
3806 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION,
3807 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM,
3808 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE
3809} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
3810DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)
3811typedef enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS {
3812 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
3813 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
3814 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
3815 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
3816 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
3817 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
3818 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
3819 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
3820 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
3821 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100
3822} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
3823DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)
3824typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT {
3825 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
3826 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
3827 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
3828 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[3][3];
3829 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
3830 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[4];
3831 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
3832 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
3833 UINT MaxTemporalLayers;
3834 UINT MaxSpatialLayers;
3835} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
3836typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE {
3837 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
3838 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
3839 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
3840 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3
3841} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
3842typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS {
3843 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0x0,
3844 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME,
3845 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME,
3846 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME,
3847 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME
3848} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
3849DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)
3850typedef enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE {
3851 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
3852 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1
3853} D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
3854typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT {
3855 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
3856 UINT MaxUniqueReferencesPerFrame;
3857 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
3858 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
3859} D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
3860typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION {
3861 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
3862 UINT OrderHintBitsMinus1;
3863} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
3864typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE {
3865 UINT IntraDistance;
3866 UINT InterFramePeriod;
3867} D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
3868typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO {
3869 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
3870 INT TransformationMatrix[8];
3871 WINBOOL InvalidAffineSet;
3872} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
3873typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR {
3874 UINT ReconstructedPictureResourceIndex;
3875 UINT TemporalLayerIndexPlus1;
3876 UINT SpatialLayerIndexPlus1;
3877 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
3878 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
3879 UINT OrderHint;
3880 UINT PictureIndex;
3881} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
3882typedef enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS {
3883 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0x0,
3884 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
3885 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
3886 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
3887 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
3888 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
3889 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
3890 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
3891 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
3892 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
3893 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
3894 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
3895 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
3896 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
3897 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
3898 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000
3899} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
3900DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)
3901typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG {
3902 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[3];
3903 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[3];
3904} D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
3905typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA {
3906 UINT64 EnabledFeatures;
3907 INT64 FeatureValue[8];
3908} D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
3909typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG {
3910 UINT64 UpdateMap;
3911 UINT64 TemporalUpdate;
3912 UINT64 UpdateData;
3913 UINT64 NumSegments;
3914 D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[8];
3915} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
3916typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP {
3917 UINT SegmentsMapByteSize;
3918 UINT8 *pSegmentsMap;
3919} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
3920typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG {
3921 UINT64 LoopFilterLevel[2];
3922 UINT64 LoopFilterLevelU;
3923 UINT64 LoopFilterLevelV;
3924 UINT64 LoopFilterSharpnessLevel;
3925 UINT64 LoopFilterDeltaEnabled;
3926 UINT64 UpdateRefDelta;
3927 INT64 RefDeltas[8];
3928 UINT64 UpdateModeDelta;
3929 INT64 ModeDeltas[2];
3930} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
3931typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG {
3932 UINT64 DeltaLFPresent;
3933 UINT64 DeltaLFMulti;
3934 UINT64 DeltaLFRes;
3935} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
3936typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG {
3937 UINT64 BaseQIndex;
3938 INT64 YDCDeltaQ;
3939 INT64 UDCDeltaQ;
3940 INT64 UACDeltaQ;
3941 INT64 VDCDeltaQ;
3942 INT64 VACDeltaQ;
3943 UINT64 UsingQMatrix;
3944 UINT64 QMY;
3945 UINT64 QMU;
3946 UINT64 QMV;
3947} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
3948typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG {
3949 UINT64 DeltaQPresent;
3950 UINT64 DeltaQRes;
3951} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
3952typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG {
3953 UINT64 CdefBits;
3954 UINT64 CdefDampingMinus3;
3955 UINT64 CdefYPriStrength[8];
3956 UINT64 CdefUVPriStrength[8];
3957 UINT64 CdefYSecStrength[8];
3958 UINT64 CdefUVSecStrength[8];
3959} D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
3960typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA {
3961 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
3962 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
3963 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
3964 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
3965 D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
3966 D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
3967 UINT SuperResDenominator;
3968 UINT OrderHint;
3969 UINT PictureIndex;
3970 UINT TemporalLayerIndexPlus1;
3971 UINT SpatialLayerIndexPlus1;
3972 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[8];
3973 UINT ReferenceIndices[7];
3974 UINT PrimaryRefFrame;
3975 UINT RefreshFrameFlags;
3976 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
3977 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
3978 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
3979 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
3980 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
3981 UINT QPMapValuesCount;
3982 INT16 *pRateControlQPMap;
3983 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
3984 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
3985} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
3986typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES {
3987 UINT64 RowCount;
3988 UINT64 ColCount;
3989 UINT64 RowHeights[64];
3990 UINT64 ColWidths[64];
3991 UINT64 ContextUpdateTileId;
3992} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
3993typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES {
3994 UINT64 CompoundPredictionType;
3995 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
3996 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
3997 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
3998 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
3999 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
4000 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
4001 UINT64 PrimaryRefFrame;
4002 UINT64 ReferenceIndices[7];
4003} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
4004typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE {
4005 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
4006 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
4007 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
4008 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
4009 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4
4010} D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
4011typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS {
4012 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0x0,
4013 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
4014 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
4015 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
4016 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
4017 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
4018 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20
4019} D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
4020DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS);
4021typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP {
4022 UINT ConstantQP_FullIntracodedFrame;
4023 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
4024 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
4025} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
4026typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR {
4027 UINT InitialQP;
4028 UINT MinQP;
4029 UINT MaxQP;
4030 UINT64 MaxFrameBitSize;
4031 UINT64 TargetBitRate;
4032 UINT64 VBVCapacity;
4033 UINT64 InitialVBVFullness;
4034} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
4035typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR {
4036 UINT InitialQP;
4037 UINT MinQP;
4038 UINT MaxQP;
4039 UINT64 MaxFrameBitSize;
4040 UINT64 TargetAvgBitRate;
4041 UINT64 PeakBitRate;
4042 UINT64 VBVCapacity;
4043 UINT64 InitialVBVFullness;
4044} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
4045typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR {
4046 UINT InitialQP;
4047 UINT MinQP;
4048 UINT MaxQP;
4049 UINT64 MaxFrameBitSize;
4050 UINT64 TargetAvgBitRate;
4051 UINT64 PeakBitRate;
4052 UINT ConstantQualityTarget;
4053} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
4054typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS {
4055 UINT DataSize;
4056 __C89_NAMELESS union {
4057 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP *pConfiguration_CQP;
4058 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR *pConfiguration_CBR;
4059 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR *pConfiguration_VBR;
4060 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR *pConfiguration_QVBR;
4061 } __C89_NAMELESSUNIONNAME;
4062} D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
4063typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL {
4064 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
4065 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
4066 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
4067 DXGI_RATIONAL TargetFrameRate;
4068} D3D12_VIDEO_ENCODER_RATE_CONTROL;
4069typedef enum D3D12_VIDEO_ENCODER_CODEC {
4070 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
4071 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
4072 D3D12_VIDEO_ENCODER_CODEC_AV1 = 2
4073} D3D12_VIDEO_ENCODER_CODEC;
4074typedef enum D3D12_VIDEO_ENCODER_PROFILE_H264 {
4075 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
4076 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
4077 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2
4078} D3D12_VIDEO_ENCODER_PROFILE_H264;
4079typedef enum D3D12_VIDEO_ENCODER_PROFILE_HEVC {
4080 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
4081 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1
4082} D3D12_VIDEO_ENCODER_PROFILE_HEVC;
4083typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC {
4084 UINT DataSize;
4085 __C89_NAMELESS union {
4086 D3D12_VIDEO_ENCODER_PROFILE_H264 *pH264Profile;
4087 D3D12_VIDEO_ENCODER_PROFILE_HEVC *pHEVCProfile;
4088 D3D12_VIDEO_ENCODER_AV1_PROFILE *pAV1Profile;
4089 } __C89_NAMELESSUNIONNAME;
4090} D3D12_VIDEO_ENCODER_PROFILE_DESC;
4091typedef enum D3D12_VIDEO_ENCODER_LEVELS_H264 {
4092 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
4093 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
4094 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
4095 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
4096 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
4097 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
4098 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
4099 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
4100 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
4101 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
4102 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
4103 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
4104 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
4105 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
4106 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
4107 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
4108 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
4109 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
4110 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
4111 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19
4112} D3D12_VIDEO_ENCODER_LEVELS_H264;
4113typedef enum D3D12_VIDEO_ENCODER_TIER_HEVC {
4114 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
4115 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1
4116} D3D12_VIDEO_ENCODER_TIER_HEVC;
4117typedef enum D3D12_VIDEO_ENCODER_LEVELS_HEVC {
4118 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
4119 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
4120 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
4121 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
4122 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
4123 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
4124 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
4125 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
4126 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
4127 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
4128 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
4129 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
4130 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12
4131} D3D12_VIDEO_ENCODER_LEVELS_HEVC;
4132typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC {
4133 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
4134 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
4135} D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
4136typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING {
4137 UINT DataSize;
4138 __C89_NAMELESS union {
4139 D3D12_VIDEO_ENCODER_LEVELS_H264 *pH264LevelSetting;
4140 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC *pHEVCLevelSetting;
4141 D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS *pAV1LevelSetting;
4142 } __C89_NAMELESSUNIONNAME;
4143} D3D12_VIDEO_ENCODER_LEVEL_SETTING;
4144typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC {
4145 UINT Width;
4146 UINT Height;
4147} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
4148typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE {
4149 UINT NodeIndex;
4150 D3D12_VIDEO_ENCODER_CODEC Codec;
4151 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode;
4152 WINBOOL IsSupported;
4153} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
4154typedef enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE {
4155 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
4156 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1
4157} D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
4158typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE {
4159 UINT NodeIndex;
4160 D3D12_VIDEO_ENCODER_CODEC Codec;
4161 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
4162 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
4163 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode;
4164 WINBOOL IsSupported;
4165} D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
4166typedef enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE {
4167 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
4168 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
4169 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
4170 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
4171 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4
4172} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
4173typedef enum D3D12_VIDEO_ENCODER_HEAP_FLAGS {
4174 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0x0
4175} D3D12_VIDEO_ENCODER_HEAP_FLAGS;
4176DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS);
4177typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC {
4178 UINT NodeMask;
4179 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
4180 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
4181 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
4182 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
4183 UINT ResolutionsListCount;
4184 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
4185} D3D12_VIDEO_ENCODER_HEAP_DESC;
4186typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS {
4187 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0x0,
4188 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
4189 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
4190 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
4191 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
4192 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
4193 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
4194 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40
4195} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
4196DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS);
4197typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES {
4198 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
4199 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
4200 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
4201 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
4202 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
4203 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
4204 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6
4205} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
4206typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS {
4207 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0x0,
4208 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,
4209 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,
4210 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,
4211 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,
4212 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,
4213 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,
4214 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
4215} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
4216DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS);
4217typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 {
4218 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
4219 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
4220} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
4221typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS {
4222 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0x0,
4223 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
4224 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
4225 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
4226 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
4227 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
4228 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
4229 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
4230 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
4231 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100
4232} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
4233DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS);
4234typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE {
4235 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
4236 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
4237 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
4238 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3
4239} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
4240typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE {
4241 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
4242 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
4243 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
4244 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3
4245} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
4246typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC {
4247 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
4248 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
4249 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
4250 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
4251 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
4252 UCHAR max_transform_hierarchy_depth_inter;
4253 UCHAR max_transform_hierarchy_depth_intra;
4254} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
4255typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 {
4256 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0x0,
4257 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
4258 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2
4259} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
4260DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)
4261typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 {
4262 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
4263 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
4264 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
4265 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
4266 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
4267 UCHAR max_transform_hierarchy_depth_inter;
4268 UCHAR max_transform_hierarchy_depth_intra;
4269 UINT allowed_diff_cu_chroma_qp_offset_depth_values;
4270 UINT allowed_log2_sao_offset_scale_luma_values;
4271 UINT allowed_log2_sao_offset_scale_chroma_values;
4272 UINT allowed_log2_max_transform_skip_block_size_minus2_values;
4273 UINT allowed_chroma_qp_offset_list_len_minus1_values;
4274 UINT allowed_cb_qp_offset_list_values[6];
4275 UINT allowed_cr_qp_offset_list_values[6];
4276 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
4277} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
4278typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
4279 UINT DataSize;
4280 __C89_NAMELESS union {
4281 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 *pH264Support;
4282 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC *pHEVCSupport;
4283 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 *pHEVCSupport1;
4284 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT *pAV1Support;
4285 } __C89_NAMELESSUNIONNAME;
4286} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
4287typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
4288 UINT NodeIndex;
4289 D3D12_VIDEO_ENCODER_CODEC Codec;
4290 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
4291 WINBOOL IsSupported;
4292 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits;
4293} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
4294typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 {
4295 UINT MaxL0ReferencesForP;
4296 UINT MaxL0ReferencesForB;
4297 UINT MaxL1ReferencesForB;
4298 UINT MaxLongTermReferences;
4299 UINT MaxDPBCapacity;
4300} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
4301typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC {
4302 UINT MaxL0ReferencesForP;
4303 UINT MaxL0ReferencesForB;
4304 UINT MaxL1ReferencesForB;
4305 UINT MaxLongTermReferences;
4306 UINT MaxDPBCapacity;
4307} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
4308typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
4309 UINT DataSize;
4310 __C89_NAMELESS union {
4311 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 *pH264Support;
4312 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC *pHEVCSupport;
4313 D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT *pAV1Support;
4314 } __C89_NAMELESSUNIONNAME;
4315} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
4316typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
4317 UINT NodeIndex;
4318 D3D12_VIDEO_ENCODER_CODEC Codec;
4319 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
4320 WINBOOL IsSupported;
4321 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport;
4322} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
4323typedef enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS {
4324 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0x0,
4325 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
4326 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
4327 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
4328 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
4329 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
4330 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
4331 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
4332 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
4333 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
4334 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
4335 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
4336 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
4337 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000
4338} D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
4339DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS);
4340typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS {
4341 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0x0,
4342 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
4343 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
4344 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
4345 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8
4346} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
4347DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS);
4348typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES {
4349 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
4350 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
4351 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2
4352} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
4353typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 {
4354 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
4355 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
4356 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
4357} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
4358typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS {
4359 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0x0,
4360 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
4361 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
4362 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
4363 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
4364 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
4365 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
4366 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40
4367} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
4368DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS);
4369typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC {
4370 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
4371 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
4372 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
4373 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
4374 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
4375 UCHAR max_transform_hierarchy_depth_inter;
4376 UCHAR max_transform_hierarchy_depth_intra;
4377} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
4378typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION {
4379 UINT DataSize;
4380 __C89_NAMELESS union {
4381 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 *pH264Config;
4382 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC *pHEVCConfig;
4383 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION *pAV1Config;
4384 } __C89_NAMELESSUNIONNAME;
4385} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
4386typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH {
4387 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
4388 UINT IntraRefreshDuration;
4389} D3D12_VIDEO_ENCODER_INTRA_REFRESH;
4390typedef enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE {
4391 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
4392 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
4393 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
4394 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
4395 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4
4396} D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
4397typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS {
4398 UINT MaxSubregionsNumber;
4399 UINT MaxIntraRefreshFrameDuration;
4400 UINT SubregionBlockPixelsSize;
4401 UINT QPMapRegionPixelsSize;
4402} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
4403typedef enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS {
4404 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0x0,
4405 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
4406 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
4407 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
4408 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
4409 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
4410 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
4411 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
4412 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
4413 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800
4414} D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
4415DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS);
4416typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 {
4417 UINT GOPLength;
4418 UINT PPicturePeriod;
4419 UCHAR pic_order_cnt_type;
4420 UCHAR log2_max_frame_num_minus4;
4421 UCHAR log2_max_pic_order_cnt_lsb_minus4;
4422} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
4423typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC {
4424 UINT GOPLength;
4425 UINT PPicturePeriod;
4426 UCHAR log2_max_pic_order_cnt_lsb_minus4;
4427} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
4428typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE {
4429 UINT DataSize;
4430 __C89_NAMELESS union {
4431 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 *pH264GroupOfPictures;
4432 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC *pHEVCGroupOfPictures;
4433 D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE *pAV1SequenceStructure;
4434 } __C89_NAMELESSUNIONNAME;
4435} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
4436typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT {
4437 UINT NodeIndex;
4438 D3D12_VIDEO_ENCODER_CODEC Codec;
4439 DXGI_FORMAT InputFormat;
4440 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
4441 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
4442 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
4443 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
4444 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
4445 UINT ResolutionsListCount;
4446 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
4447 UINT MaxReferenceFramesInDPB;
4448 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
4449 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
4450 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
4451 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
4452 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
4453} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
4454typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS {
4455 UINT NodeIndex;
4456 D3D12_VIDEO_ENCODER_CODEC Codec;
4457 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
4458 DXGI_FORMAT InputFormat;
4459 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
4460 WINBOOL IsSupported;
4461 UINT CompressedBitstreamBufferAccessAlignment;
4462 UINT EncoderMetadataBufferAccessAlignment;
4463 UINT MaxEncoderOutputMetadataBufferSize;
4464} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
4465typedef enum D3D12_VIDEO_ENCODER_FLAGS {
4466 D3D12_VIDEO_ENCODER_FLAG_NONE = 0x0
4467} D3D12_VIDEO_ENCODER_FLAGS;
4468DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS);
4469typedef struct D3D12_VIDEO_ENCODER_DESC {
4470 UINT NodeMask;
4471 D3D12_VIDEO_ENCODER_FLAGS Flags;
4472 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
4473 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
4474 DXGI_FORMAT InputFormat;
4475 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
4476 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
4477} D3D12_VIDEO_ENCODER_DESC;
4478/*****************************************************************************
4479 * ID3D12VideoEncoder interface
4480 */
4481#ifndef __ID3D12VideoEncoder_INTERFACE_DEFINED__
4482#define __ID3D12VideoEncoder_INTERFACE_DEFINED__
4483
4484DEFINE_GUID(IID_ID3D12VideoEncoder, 0x2e0d212d, 0x8df9, 0x44a6, 0xa7,0x70, 0xbb,0x28,0x9b,0x18,0x27,0x37);
4485#if defined(__cplusplus) && !defined(CINTERFACE)
4486MIDL_INTERFACE("2e0d212d-8df9-44a6-a770-bb289b182737")
4487ID3D12VideoEncoder : public ID3D12Pageable
4488{
4489 virtual UINT STDMETHODCALLTYPE GetNodeMask(
4490 ) = 0;
4491
4492 virtual D3D12_VIDEO_ENCODER_FLAGS STDMETHODCALLTYPE GetEncoderFlags(
4493 ) = 0;
4494
4495 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec(
4496 ) = 0;
4497
4498 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
4499 D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile) = 0;
4500
4501 virtual HRESULT STDMETHODCALLTYPE GetCodecConfiguration(
4502 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dst_codec_config) = 0;
4503
4504 virtual DXGI_FORMAT STDMETHODCALLTYPE GetInputFormat(
4505 ) = 0;
4506
4507 virtual D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE STDMETHODCALLTYPE GetMaxMotionEstimationPrecision(
4508 ) = 0;
4509
4510};
4511#ifdef __CRT_UUID_DECL
4512__CRT_UUID_DECL(ID3D12VideoEncoder, 0x2e0d212d, 0x8df9, 0x44a6, 0xa7,0x70, 0xbb,0x28,0x9b,0x18,0x27,0x37)
4513#endif
4514#else
4515typedef struct ID3D12VideoEncoderVtbl {
4516 BEGIN_INTERFACE
4517
4518 /*** IUnknown methods ***/
4519 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4520 ID3D12VideoEncoder *This,
4521 REFIID riid,
4522 void **ppvObject);
4523
4524 ULONG (STDMETHODCALLTYPE *AddRef)(
4525 ID3D12VideoEncoder *This);
4526
4527 ULONG (STDMETHODCALLTYPE *Release)(
4528 ID3D12VideoEncoder *This);
4529
4530 /*** ID3D12Object methods ***/
4531 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
4532 ID3D12VideoEncoder *This,
4533 REFGUID guid,
4534 UINT *data_size,
4535 void *data);
4536
4537 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
4538 ID3D12VideoEncoder *This,
4539 REFGUID guid,
4540 UINT data_size,
4541 const void *data);
4542
4543 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
4544 ID3D12VideoEncoder *This,
4545 REFGUID guid,
4546 const IUnknown *data);
4547
4548 HRESULT (STDMETHODCALLTYPE *SetName)(
4549 ID3D12VideoEncoder *This,
4550 const WCHAR *name);
4551
4552 /*** ID3D12DeviceChild methods ***/
4553 HRESULT (STDMETHODCALLTYPE *GetDevice)(
4554 ID3D12VideoEncoder *This,
4555 REFIID riid,
4556 void **device);
4557
4558 /*** ID3D12VideoEncoder methods ***/
4559 UINT (STDMETHODCALLTYPE *GetNodeMask)(
4560 ID3D12VideoEncoder *This);
4561
4562 D3D12_VIDEO_ENCODER_FLAGS (STDMETHODCALLTYPE *GetEncoderFlags)(
4563 ID3D12VideoEncoder *This);
4564
4565 D3D12_VIDEO_ENCODER_CODEC (STDMETHODCALLTYPE *GetCodec)(
4566 ID3D12VideoEncoder *This);
4567
4568 HRESULT (STDMETHODCALLTYPE *GetCodecProfile)(
4569 ID3D12VideoEncoder *This,
4570 D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile);
4571
4572 HRESULT (STDMETHODCALLTYPE *GetCodecConfiguration)(
4573 ID3D12VideoEncoder *This,
4574 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dst_codec_config);
4575
4576 DXGI_FORMAT (STDMETHODCALLTYPE *GetInputFormat)(
4577 ID3D12VideoEncoder *This);
4578
4579 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE (STDMETHODCALLTYPE *GetMaxMotionEstimationPrecision)(
4580 ID3D12VideoEncoder *This);
4581
4582 END_INTERFACE
4583} ID3D12VideoEncoderVtbl;
4584
4585interface ID3D12VideoEncoder {
4586 CONST_VTBL ID3D12VideoEncoderVtbl* lpVtbl;
4587};
4588
4589#ifdef COBJMACROS
4590#ifndef WIDL_C_INLINE_WRAPPERS
4591/*** IUnknown methods ***/
4592#define ID3D12VideoEncoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4593#define ID3D12VideoEncoder_AddRef(This) (This)->lpVtbl->AddRef(This)
4594#define ID3D12VideoEncoder_Release(This) (This)->lpVtbl->Release(This)
4595/*** ID3D12Object methods ***/
4596#define ID3D12VideoEncoder_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
4597#define ID3D12VideoEncoder_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
4598#define ID3D12VideoEncoder_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
4599#define ID3D12VideoEncoder_SetName(This,name) (This)->lpVtbl->SetName(This,name)
4600/*** ID3D12DeviceChild methods ***/
4601#define ID3D12VideoEncoder_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
4602/*** ID3D12VideoEncoder methods ***/
4603#define ID3D12VideoEncoder_GetNodeMask(This) (This)->lpVtbl->GetNodeMask(This)
4604#define ID3D12VideoEncoder_GetEncoderFlags(This) (This)->lpVtbl->GetEncoderFlags(This)
4605#define ID3D12VideoEncoder_GetCodec(This) (This)->lpVtbl->GetCodec(This)
4606#define ID3D12VideoEncoder_GetCodecProfile(This,dst_profile) (This)->lpVtbl->GetCodecProfile(This,dst_profile)
4607#define ID3D12VideoEncoder_GetCodecConfiguration(This,dst_codec_config) (This)->lpVtbl->GetCodecConfiguration(This,dst_codec_config)
4608#define ID3D12VideoEncoder_GetInputFormat(This) (This)->lpVtbl->GetInputFormat(This)
4609#define ID3D12VideoEncoder_GetMaxMotionEstimationPrecision(This) (This)->lpVtbl->GetMaxMotionEstimationPrecision(This)
4610#else
4611/*** IUnknown methods ***/
4612static inline HRESULT ID3D12VideoEncoder_QueryInterface(ID3D12VideoEncoder* This,REFIID riid,void **ppvObject) {
4613 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4614}
4615static inline ULONG ID3D12VideoEncoder_AddRef(ID3D12VideoEncoder* This) {
4616 return This->lpVtbl->AddRef(This);
4617}
4618static inline ULONG ID3D12VideoEncoder_Release(ID3D12VideoEncoder* This) {
4619 return This->lpVtbl->Release(This);
4620}
4621/*** ID3D12Object methods ***/
4622static inline HRESULT ID3D12VideoEncoder_GetPrivateData(ID3D12VideoEncoder* This,REFGUID guid,UINT *data_size,void *data) {
4623 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
4624}
4625static inline HRESULT ID3D12VideoEncoder_SetPrivateData(ID3D12VideoEncoder* This,REFGUID guid,UINT data_size,const void *data) {
4626 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
4627}
4628static inline HRESULT ID3D12VideoEncoder_SetPrivateDataInterface(ID3D12VideoEncoder* This,REFGUID guid,const IUnknown *data) {
4629 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
4630}
4631static inline HRESULT ID3D12VideoEncoder_SetName(ID3D12VideoEncoder* This,const WCHAR *name) {
4632 return This->lpVtbl->SetName(This,name);
4633}
4634/*** ID3D12DeviceChild methods ***/
4635static inline HRESULT ID3D12VideoEncoder_GetDevice(ID3D12VideoEncoder* This,REFIID riid,void **device) {
4636 return This->lpVtbl->GetDevice(This,riid,device);
4637}
4638/*** ID3D12VideoEncoder methods ***/
4639static inline UINT ID3D12VideoEncoder_GetNodeMask(ID3D12VideoEncoder* This) {
4640 return This->lpVtbl->GetNodeMask(This);
4641}
4642static inline D3D12_VIDEO_ENCODER_FLAGS ID3D12VideoEncoder_GetEncoderFlags(ID3D12VideoEncoder* This) {
4643 return This->lpVtbl->GetEncoderFlags(This);
4644}
4645static inline D3D12_VIDEO_ENCODER_CODEC ID3D12VideoEncoder_GetCodec(ID3D12VideoEncoder* This) {
4646 return This->lpVtbl->GetCodec(This);
4647}
4648static inline HRESULT ID3D12VideoEncoder_GetCodecProfile(ID3D12VideoEncoder* This,D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile) {
4649 return This->lpVtbl->GetCodecProfile(This,dst_profile);
4650}
4651static inline HRESULT ID3D12VideoEncoder_GetCodecConfiguration(ID3D12VideoEncoder* This,D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dst_codec_config) {
4652 return This->lpVtbl->GetCodecConfiguration(This,dst_codec_config);
4653}
4654static inline DXGI_FORMAT ID3D12VideoEncoder_GetInputFormat(ID3D12VideoEncoder* This) {
4655 return This->lpVtbl->GetInputFormat(This);
4656}
4657static inline D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE ID3D12VideoEncoder_GetMaxMotionEstimationPrecision(ID3D12VideoEncoder* This) {
4658 return This->lpVtbl->GetMaxMotionEstimationPrecision(This);
4659}
4660#endif
4661#endif
4662
4663#endif
4664
4665
4666#endif /* __ID3D12VideoEncoder_INTERFACE_DEFINED__ */
4667
4668/*****************************************************************************
4669 * ID3D12VideoEncoderHeap interface
4670 */
4671#ifndef __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
4672#define __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
4673
4674DEFINE_GUID(IID_ID3D12VideoEncoderHeap, 0x22b35d96, 0x876a, 0x44c0, 0xb2,0x5e, 0xfb,0x8c,0x9c,0x7f,0x1c,0x4a);
4675#if defined(__cplusplus) && !defined(CINTERFACE)
4676MIDL_INTERFACE("22b35d96-876a-44c0-b25e-fb8c9c7f1c4a")
4677ID3D12VideoEncoderHeap : public ID3D12Pageable
4678{
4679 virtual UINT STDMETHODCALLTYPE GetNodeMask(
4680 ) = 0;
4681
4682 virtual D3D12_VIDEO_ENCODER_HEAP_FLAGS STDMETHODCALLTYPE GetEncoderHeapFlags(
4683 ) = 0;
4684
4685 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec(
4686 ) = 0;
4687
4688 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
4689 D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile) = 0;
4690
4691 virtual HRESULT STDMETHODCALLTYPE GetCodecLevel(
4692 D3D12_VIDEO_ENCODER_LEVEL_SETTING dst_level) = 0;
4693
4694 virtual UINT STDMETHODCALLTYPE GetResolutionListCount(
4695 ) = 0;
4696
4697 virtual HRESULT STDMETHODCALLTYPE GetResolutionList(
4698 const UINT resolutions_list_count,
4699 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *resolution_list) = 0;
4700
4701};
4702#ifdef __CRT_UUID_DECL
4703__CRT_UUID_DECL(ID3D12VideoEncoderHeap, 0x22b35d96, 0x876a, 0x44c0, 0xb2,0x5e, 0xfb,0x8c,0x9c,0x7f,0x1c,0x4a)
4704#endif
4705#else
4706typedef struct ID3D12VideoEncoderHeapVtbl {
4707 BEGIN_INTERFACE
4708
4709 /*** IUnknown methods ***/
4710 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4711 ID3D12VideoEncoderHeap *This,
4712 REFIID riid,
4713 void **ppvObject);
4714
4715 ULONG (STDMETHODCALLTYPE *AddRef)(
4716 ID3D12VideoEncoderHeap *This);
4717
4718 ULONG (STDMETHODCALLTYPE *Release)(
4719 ID3D12VideoEncoderHeap *This);
4720
4721 /*** ID3D12Object methods ***/
4722 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
4723 ID3D12VideoEncoderHeap *This,
4724 REFGUID guid,
4725 UINT *data_size,
4726 void *data);
4727
4728 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
4729 ID3D12VideoEncoderHeap *This,
4730 REFGUID guid,
4731 UINT data_size,
4732 const void *data);
4733
4734 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
4735 ID3D12VideoEncoderHeap *This,
4736 REFGUID guid,
4737 const IUnknown *data);
4738
4739 HRESULT (STDMETHODCALLTYPE *SetName)(
4740 ID3D12VideoEncoderHeap *This,
4741 const WCHAR *name);
4742
4743 /*** ID3D12DeviceChild methods ***/
4744 HRESULT (STDMETHODCALLTYPE *GetDevice)(
4745 ID3D12VideoEncoderHeap *This,
4746 REFIID riid,
4747 void **device);
4748
4749 /*** ID3D12VideoEncoderHeap methods ***/
4750 UINT (STDMETHODCALLTYPE *GetNodeMask)(
4751 ID3D12VideoEncoderHeap *This);
4752
4753 D3D12_VIDEO_ENCODER_HEAP_FLAGS (STDMETHODCALLTYPE *GetEncoderHeapFlags)(
4754 ID3D12VideoEncoderHeap *This);
4755
4756 D3D12_VIDEO_ENCODER_CODEC (STDMETHODCALLTYPE *GetCodec)(
4757 ID3D12VideoEncoderHeap *This);
4758
4759 HRESULT (STDMETHODCALLTYPE *GetCodecProfile)(
4760 ID3D12VideoEncoderHeap *This,
4761 D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile);
4762
4763 HRESULT (STDMETHODCALLTYPE *GetCodecLevel)(
4764 ID3D12VideoEncoderHeap *This,
4765 D3D12_VIDEO_ENCODER_LEVEL_SETTING dst_level);
4766
4767 UINT (STDMETHODCALLTYPE *GetResolutionListCount)(
4768 ID3D12VideoEncoderHeap *This);
4769
4770 HRESULT (STDMETHODCALLTYPE *GetResolutionList)(
4771 ID3D12VideoEncoderHeap *This,
4772 const UINT resolutions_list_count,
4773 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *resolution_list);
4774
4775 END_INTERFACE
4776} ID3D12VideoEncoderHeapVtbl;
4777
4778interface ID3D12VideoEncoderHeap {
4779 CONST_VTBL ID3D12VideoEncoderHeapVtbl* lpVtbl;
4780};
4781
4782#ifdef COBJMACROS
4783#ifndef WIDL_C_INLINE_WRAPPERS
4784/*** IUnknown methods ***/
4785#define ID3D12VideoEncoderHeap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4786#define ID3D12VideoEncoderHeap_AddRef(This) (This)->lpVtbl->AddRef(This)
4787#define ID3D12VideoEncoderHeap_Release(This) (This)->lpVtbl->Release(This)
4788/*** ID3D12Object methods ***/
4789#define ID3D12VideoEncoderHeap_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
4790#define ID3D12VideoEncoderHeap_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
4791#define ID3D12VideoEncoderHeap_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
4792#define ID3D12VideoEncoderHeap_SetName(This,name) (This)->lpVtbl->SetName(This,name)
4793/*** ID3D12DeviceChild methods ***/
4794#define ID3D12VideoEncoderHeap_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
4795/*** ID3D12VideoEncoderHeap methods ***/
4796#define ID3D12VideoEncoderHeap_GetNodeMask(This) (This)->lpVtbl->GetNodeMask(This)
4797#define ID3D12VideoEncoderHeap_GetEncoderHeapFlags(This) (This)->lpVtbl->GetEncoderHeapFlags(This)
4798#define ID3D12VideoEncoderHeap_GetCodec(This) (This)->lpVtbl->GetCodec(This)
4799#define ID3D12VideoEncoderHeap_GetCodecProfile(This,dst_profile) (This)->lpVtbl->GetCodecProfile(This,dst_profile)
4800#define ID3D12VideoEncoderHeap_GetCodecLevel(This,dst_level) (This)->lpVtbl->GetCodecLevel(This,dst_level)
4801#define ID3D12VideoEncoderHeap_GetResolutionListCount(This) (This)->lpVtbl->GetResolutionListCount(This)
4802#define ID3D12VideoEncoderHeap_GetResolutionList(This,resolutions_list_count,resolution_list) (This)->lpVtbl->GetResolutionList(This,resolutions_list_count,resolution_list)
4803#else
4804/*** IUnknown methods ***/
4805static inline HRESULT ID3D12VideoEncoderHeap_QueryInterface(ID3D12VideoEncoderHeap* This,REFIID riid,void **ppvObject) {
4806 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4807}
4808static inline ULONG ID3D12VideoEncoderHeap_AddRef(ID3D12VideoEncoderHeap* This) {
4809 return This->lpVtbl->AddRef(This);
4810}
4811static inline ULONG ID3D12VideoEncoderHeap_Release(ID3D12VideoEncoderHeap* This) {
4812 return This->lpVtbl->Release(This);
4813}
4814/*** ID3D12Object methods ***/
4815static inline HRESULT ID3D12VideoEncoderHeap_GetPrivateData(ID3D12VideoEncoderHeap* This,REFGUID guid,UINT *data_size,void *data) {
4816 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
4817}
4818static inline HRESULT ID3D12VideoEncoderHeap_SetPrivateData(ID3D12VideoEncoderHeap* This,REFGUID guid,UINT data_size,const void *data) {
4819 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
4820}
4821static inline HRESULT ID3D12VideoEncoderHeap_SetPrivateDataInterface(ID3D12VideoEncoderHeap* This,REFGUID guid,const IUnknown *data) {
4822 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
4823}
4824static inline HRESULT ID3D12VideoEncoderHeap_SetName(ID3D12VideoEncoderHeap* This,const WCHAR *name) {
4825 return This->lpVtbl->SetName(This,name);
4826}
4827/*** ID3D12DeviceChild methods ***/
4828static inline HRESULT ID3D12VideoEncoderHeap_GetDevice(ID3D12VideoEncoderHeap* This,REFIID riid,void **device) {
4829 return This->lpVtbl->GetDevice(This,riid,device);
4830}
4831/*** ID3D12VideoEncoderHeap methods ***/
4832static inline UINT ID3D12VideoEncoderHeap_GetNodeMask(ID3D12VideoEncoderHeap* This) {
4833 return This->lpVtbl->GetNodeMask(This);
4834}
4835static inline D3D12_VIDEO_ENCODER_HEAP_FLAGS ID3D12VideoEncoderHeap_GetEncoderHeapFlags(ID3D12VideoEncoderHeap* This) {
4836 return This->lpVtbl->GetEncoderHeapFlags(This);
4837}
4838static inline D3D12_VIDEO_ENCODER_CODEC ID3D12VideoEncoderHeap_GetCodec(ID3D12VideoEncoderHeap* This) {
4839 return This->lpVtbl->GetCodec(This);
4840}
4841static inline HRESULT ID3D12VideoEncoderHeap_GetCodecProfile(ID3D12VideoEncoderHeap* This,D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile) {
4842 return This->lpVtbl->GetCodecProfile(This,dst_profile);
4843}
4844static inline HRESULT ID3D12VideoEncoderHeap_GetCodecLevel(ID3D12VideoEncoderHeap* This,D3D12_VIDEO_ENCODER_LEVEL_SETTING dst_level) {
4845 return This->lpVtbl->GetCodecLevel(This,dst_level);
4846}
4847static inline UINT ID3D12VideoEncoderHeap_GetResolutionListCount(ID3D12VideoEncoderHeap* This) {
4848 return This->lpVtbl->GetResolutionListCount(This);
4849}
4850static inline HRESULT ID3D12VideoEncoderHeap_GetResolutionList(ID3D12VideoEncoderHeap* This,const UINT resolutions_list_count,D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *resolution_list) {
4851 return This->lpVtbl->GetResolutionList(This,resolutions_list_count,resolution_list);
4852}
4853#endif
4854#endif
4855
4856#endif
4857
4858
4859#endif /* __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__ */
4860
4861/*****************************************************************************
4862 * ID3D12VideoDevice3 interface
4863 */
4864#ifndef __ID3D12VideoDevice3_INTERFACE_DEFINED__
4865#define __ID3D12VideoDevice3_INTERFACE_DEFINED__
4866
4867DEFINE_GUID(IID_ID3D12VideoDevice3, 0x4243adb4, 0x3a32, 0x4666, 0x97,0x3c, 0x0c,0xcc,0x56,0x25,0xdc,0x44);
4868#if defined(__cplusplus) && !defined(CINTERFACE)
4869MIDL_INTERFACE("4243adb4-3a32-4666-973c-0ccc5625dc44")
4870ID3D12VideoDevice3 : public ID3D12VideoDevice2
4871{
4872 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoder(
4873 const D3D12_VIDEO_ENCODER_DESC *desc,
4874 REFIID riid,
4875 void **video_encoder) = 0;
4876
4877 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap(
4878 const D3D12_VIDEO_ENCODER_HEAP_DESC *desc,
4879 REFIID riid,
4880 void **video_encoder_heap) = 0;
4881
4882};
4883#ifdef __CRT_UUID_DECL
4884__CRT_UUID_DECL(ID3D12VideoDevice3, 0x4243adb4, 0x3a32, 0x4666, 0x97,0x3c, 0x0c,0xcc,0x56,0x25,0xdc,0x44)
4885#endif
4886#else
4887typedef struct ID3D12VideoDevice3Vtbl {
4888 BEGIN_INTERFACE
4889
4890 /*** IUnknown methods ***/
4891 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4892 ID3D12VideoDevice3 *This,
4893 REFIID riid,
4894 void **ppvObject);
4895
4896 ULONG (STDMETHODCALLTYPE *AddRef)(
4897 ID3D12VideoDevice3 *This);
4898
4899 ULONG (STDMETHODCALLTYPE *Release)(
4900 ID3D12VideoDevice3 *This);
4901
4902 /*** ID3D12VideoDevice methods ***/
4903 HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
4904 ID3D12VideoDevice3 *This,
4905 D3D12_FEATURE_VIDEO feature_video,
4906 void *feature_support_data,
4907 UINT feature_support_data_size);
4908
4909 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
4910 ID3D12VideoDevice3 *This,
4911 const D3D12_VIDEO_DECODER_DESC *desc,
4912 REFIID riid,
4913 void **video_decoder);
4914
4915 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap)(
4916 ID3D12VideoDevice3 *This,
4917 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
4918 REFIID riid,
4919 void **video_decoder_heap);
4920
4921 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
4922 ID3D12VideoDevice3 *This,
4923 UINT node_mask,
4924 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
4925 UINT input_stream_descs_count,
4926 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
4927 REFIID riid,
4928 void **video_processor);
4929
4930 /*** ID3D12VideoDevice1 methods ***/
4931 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionEstimator)(
4932 ID3D12VideoDevice3 *This,
4933 const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,
4934 ID3D12ProtectedResourceSession *protected_resource_session,
4935 REFIID riid,
4936 void **video_motion_estimator);
4937
4938 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionVectorHeap)(
4939 ID3D12VideoDevice3 *This,
4940 const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,
4941 ID3D12ProtectedResourceSession *protected_resource_session,
4942 REFIID riid,
4943 void **video_motion_vector_heap);
4944
4945 /*** ID3D12VideoDevice2 methods ***/
4946 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder1)(
4947 ID3D12VideoDevice3 *This,
4948 const D3D12_VIDEO_DECODER_DESC *desc,
4949 ID3D12ProtectedResourceSession *protected_resource_session,
4950 REFIID riid,
4951 void **video_decoder);
4952
4953 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap1)(
4954 ID3D12VideoDevice3 *This,
4955 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
4956 ID3D12ProtectedResourceSession *protected_resource_session,
4957 REFIID riid,
4958 void **video_decoder_heap);
4959
4960 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor1)(
4961 ID3D12VideoDevice3 *This,
4962 UINT node_mask,
4963 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
4964 UINT input_stream_descs_count,
4965 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
4966 ID3D12ProtectedResourceSession *protected_resource_session,
4967 REFIID riid,
4968 void **video_processor);
4969
4970 HRESULT (STDMETHODCALLTYPE *CreateVideoExtensionCommand)(
4971 ID3D12VideoDevice3 *This,
4972 const D3D12_VIDEO_EXTENSION_COMMAND_DESC *desc,
4973 const void *creation_parameters,
4974 SIZE_T creation_parameters_data_size_in_bytes,
4975 ID3D12ProtectedResourceSession *protected_resource_session,
4976 REFIID riid,
4977 void **video_extension_command);
4978
4979 HRESULT (STDMETHODCALLTYPE *ExecuteExtensionCommand)(
4980 ID3D12VideoDevice3 *This,
4981 ID3D12VideoExtensionCommand *extension_command,
4982 const void *execution_parameters,
4983 SIZE_T execution_parameters_size_in_bytes,
4984 void *output_data,
4985 SIZE_T output_data_size_in_bytes);
4986
4987 /*** ID3D12VideoDevice3 methods ***/
4988 HRESULT (STDMETHODCALLTYPE *CreateVideoEncoder)(
4989 ID3D12VideoDevice3 *This,
4990 const D3D12_VIDEO_ENCODER_DESC *desc,
4991 REFIID riid,
4992 void **video_encoder);
4993
4994 HRESULT (STDMETHODCALLTYPE *CreateVideoEncoderHeap)(
4995 ID3D12VideoDevice3 *This,
4996 const D3D12_VIDEO_ENCODER_HEAP_DESC *desc,
4997 REFIID riid,
4998 void **video_encoder_heap);
4999
5000 END_INTERFACE
5001} ID3D12VideoDevice3Vtbl;
5002
5003interface ID3D12VideoDevice3 {
5004 CONST_VTBL ID3D12VideoDevice3Vtbl* lpVtbl;
5005};
5006
5007#ifdef COBJMACROS
5008#ifndef WIDL_C_INLINE_WRAPPERS
5009/*** IUnknown methods ***/
5010#define ID3D12VideoDevice3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5011#define ID3D12VideoDevice3_AddRef(This) (This)->lpVtbl->AddRef(This)
5012#define ID3D12VideoDevice3_Release(This) (This)->lpVtbl->Release(This)
5013/*** ID3D12VideoDevice methods ***/
5014#define ID3D12VideoDevice3_CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size)
5015#define ID3D12VideoDevice3_CreateVideoDecoder(This,desc,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder)
5016#define ID3D12VideoDevice3_CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap) (This)->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap)
5017#define ID3D12VideoDevice3_CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor) (This)->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor)
5018/*** ID3D12VideoDevice1 methods ***/
5019#define ID3D12VideoDevice3_CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator) (This)->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator)
5020#define ID3D12VideoDevice3_CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap) (This)->lpVtbl->CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap)
5021/*** ID3D12VideoDevice2 methods ***/
5022#define ID3D12VideoDevice3_CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder)
5023#define ID3D12VideoDevice3_CreateVideoDecoderHeap1(This,video_decoder_heap_desc,protected_resource_session,riid,video_decoder_heap) (This)->lpVtbl->CreateVideoDecoderHeap1(This,video_decoder_heap_desc,protected_resource_session,riid,video_decoder_heap)
5024#define ID3D12VideoDevice3_CreateVideoProcessor1(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,protected_resource_session,riid,video_processor) (This)->lpVtbl->CreateVideoProcessor1(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,protected_resource_session,riid,video_processor)
5025#define ID3D12VideoDevice3_CreateVideoExtensionCommand(This,desc,creation_parameters,creation_parameters_data_size_in_bytes,protected_resource_session,riid,video_extension_command) (This)->lpVtbl->CreateVideoExtensionCommand(This,desc,creation_parameters,creation_parameters_data_size_in_bytes,protected_resource_session,riid,video_extension_command)
5026#define ID3D12VideoDevice3_ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes,output_data,output_data_size_in_bytes) (This)->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes,output_data,output_data_size_in_bytes)
5027/*** ID3D12VideoDevice3 methods ***/
5028#define ID3D12VideoDevice3_CreateVideoEncoder(This,desc,riid,video_encoder) (This)->lpVtbl->CreateVideoEncoder(This,desc,riid,video_encoder)
5029#define ID3D12VideoDevice3_CreateVideoEncoderHeap(This,desc,riid,video_encoder_heap) (This)->lpVtbl->CreateVideoEncoderHeap(This,desc,riid,video_encoder_heap)
5030#else
5031/*** IUnknown methods ***/
5032static inline HRESULT ID3D12VideoDevice3_QueryInterface(ID3D12VideoDevice3* This,REFIID riid,void **ppvObject) {
5033 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5034}
5035static inline ULONG ID3D12VideoDevice3_AddRef(ID3D12VideoDevice3* This) {
5036 return This->lpVtbl->AddRef(This);
5037}
5038static inline ULONG ID3D12VideoDevice3_Release(ID3D12VideoDevice3* This) {
5039 return This->lpVtbl->Release(This);
5040}
5041/*** ID3D12VideoDevice methods ***/
5042static inline HRESULT ID3D12VideoDevice3_CheckFeatureSupport(ID3D12VideoDevice3* This,D3D12_FEATURE_VIDEO feature_video,void *feature_support_data,UINT feature_support_data_size) {
5043 return This->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size);
5044}
5045static inline HRESULT ID3D12VideoDevice3_CreateVideoDecoder(ID3D12VideoDevice3* This,const D3D12_VIDEO_DECODER_DESC *desc,REFIID riid,void **video_decoder) {
5046 return This->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder);
5047}
5048static inline HRESULT ID3D12VideoDevice3_CreateVideoDecoderHeap(ID3D12VideoDevice3* This,const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,REFIID riid,void **video_decoder_heap) {
5049 return This->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap);
5050}
5051static inline HRESULT ID3D12VideoDevice3_CreateVideoProcessor(ID3D12VideoDevice3* This,UINT node_mask,const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,UINT input_stream_descs_count,const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,REFIID riid,void **video_processor) {
5052 return This->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor);
5053}
5054/*** ID3D12VideoDevice1 methods ***/
5055static inline HRESULT ID3D12VideoDevice3_CreateVideoMotionEstimator(ID3D12VideoDevice3* This,const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_motion_estimator) {
5056 return This->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator);
5057}
5058static inline HRESULT ID3D12VideoDevice3_CreateVideoMotionVectorHeap(ID3D12VideoDevice3* This,const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_motion_vector_heap) {
5059 return This->lpVtbl->CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap);
5060}
5061/*** ID3D12VideoDevice2 methods ***/
5062static inline HRESULT ID3D12VideoDevice3_CreateVideoDecoder1(ID3D12VideoDevice3* This,const D3D12_VIDEO_DECODER_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_decoder) {
5063 return This->lpVtbl->CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder);
5064}
5065static inline HRESULT ID3D12VideoDevice3_CreateVideoDecoderHeap1(ID3D12VideoDevice3* This,const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_decoder_heap) {
5066 return This->lpVtbl->CreateVideoDecoderHeap1(This,video_decoder_heap_desc,protected_resource_session,riid,video_decoder_heap);
5067}
5068static inline HRESULT ID3D12VideoDevice3_CreateVideoProcessor1(ID3D12VideoDevice3* This,UINT node_mask,const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,UINT input_stream_descs_count,const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_processor) {
5069 return This->lpVtbl->CreateVideoProcessor1(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,protected_resource_session,riid,video_processor);
5070}
5071static inline HRESULT ID3D12VideoDevice3_CreateVideoExtensionCommand(ID3D12VideoDevice3* This,const D3D12_VIDEO_EXTENSION_COMMAND_DESC *desc,const void *creation_parameters,SIZE_T creation_parameters_data_size_in_bytes,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_extension_command) {
5072 return This->lpVtbl->CreateVideoExtensionCommand(This,desc,creation_parameters,creation_parameters_data_size_in_bytes,protected_resource_session,riid,video_extension_command);
5073}
5074static inline HRESULT ID3D12VideoDevice3_ExecuteExtensionCommand(ID3D12VideoDevice3* This,ID3D12VideoExtensionCommand *extension_command,const void *execution_parameters,SIZE_T execution_parameters_size_in_bytes,void *output_data,SIZE_T output_data_size_in_bytes) {
5075 return This->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes,output_data,output_data_size_in_bytes);
5076}
5077/*** ID3D12VideoDevice3 methods ***/
5078static inline HRESULT ID3D12VideoDevice3_CreateVideoEncoder(ID3D12VideoDevice3* This,const D3D12_VIDEO_ENCODER_DESC *desc,REFIID riid,void **video_encoder) {
5079 return This->lpVtbl->CreateVideoEncoder(This,desc,riid,video_encoder);
5080}
5081static inline HRESULT ID3D12VideoDevice3_CreateVideoEncoderHeap(ID3D12VideoDevice3* This,const D3D12_VIDEO_ENCODER_HEAP_DESC *desc,REFIID riid,void **video_encoder_heap) {
5082 return This->lpVtbl->CreateVideoEncoderHeap(This,desc,riid,video_encoder_heap);
5083}
5084#endif
5085#endif
5086
5087#endif
5088
5089
5090#endif /* __ID3D12VideoDevice3_INTERFACE_DEFINED__ */
5091
5092typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 {
5093 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
5094 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
5095 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
5096 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3
5097} D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
5098typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 {
5099 UINT ReconstructedPictureResourceIndex;
5100 WINBOOL IsLongTermReference;
5101 UINT LongTermPictureIdx;
5102 UINT PictureOrderCountNumber;
5103 UINT FrameDecodingOrderNumber;
5104 UINT TemporalLayerIndex;
5105} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
5106typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS {
5107 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0x0,
5108 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1
5109} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
5110DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS);
5111typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION {
5112 UCHAR memory_management_control_operation;
5113 UINT difference_of_pic_nums_minus1;
5114 UINT long_term_pic_num;
5115 UINT long_term_frame_idx;
5116 UINT max_long_term_frame_idx_plus1;
5117} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
5118typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION {
5119 UCHAR modification_of_pic_nums_idc;
5120 UINT abs_diff_pic_num_minus1;
5121 UINT long_term_pic_num;
5122} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
5123typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 {
5124 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
5125 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
5126 UINT pic_parameter_set_id;
5127 UINT idr_pic_id;
5128 UINT PictureOrderCountNumber;
5129 UINT FrameDecodingOrderNumber;
5130 UINT TemporalLayerIndex;
5131 UINT List0ReferenceFramesCount;
5132 UINT *pList0ReferenceFrames;
5133 UINT List1ReferenceFramesCount;
5134 UINT *pList1ReferenceFrames;
5135 UINT ReferenceFramesReconPictureDescriptorsCount;
5136 D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 *pReferenceFramesReconPictureDescriptors;
5137 UCHAR adaptive_ref_pic_marking_mode_flag;
5138 UINT RefPicMarkingOperationsCommandsCount;
5139 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION *pRefPicMarkingOperationsCommands;
5140 UINT List0RefPicModificationsCount;
5141 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
5142 UINT List1RefPicModificationsCount;
5143 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
5144 UINT QPMapValuesCount;
5145 INT8 *pRateControlQPMap;
5146} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
5147typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC {
5148 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
5149 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
5150 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
5151 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3
5152} D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
5153typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC {
5154 UINT ReconstructedPictureResourceIndex;
5155 WINBOOL IsRefUsedByCurrentPic;
5156 WINBOOL IsLongTermReference;
5157 UINT PictureOrderCountNumber;
5158 UINT TemporalLayerIndex;
5159} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
5160typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS {
5161 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0x0,
5162 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1
5163} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
5164DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS);
5165typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC {
5166 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
5167 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
5168 UINT slice_pic_parameter_set_id;
5169 UINT PictureOrderCountNumber;
5170 UINT TemporalLayerIndex;
5171 UINT List0ReferenceFramesCount;
5172 UINT *pList0ReferenceFrames;
5173 UINT List1ReferenceFramesCount;
5174 UINT *pList1ReferenceFrames;
5175 UINT ReferenceFramesReconPictureDescriptorsCount;
5176 D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
5177 UINT List0RefPicModificationsCount;
5178 UINT *pList0RefPicModifications;
5179 UINT List1RefPicModificationsCount;
5180 UINT *pList1RefPicModifications;
5181 UINT QPMapValuesCount;
5182 INT8 *pRateControlQPMap;
5183} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
5184typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 {
5185 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
5186 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
5187 UINT slice_pic_parameter_set_id;
5188 UINT PictureOrderCountNumber;
5189 UINT TemporalLayerIndex;
5190 UINT List0ReferenceFramesCount;
5191 UINT *pList0ReferenceFrames;
5192 UINT List1ReferenceFramesCount;
5193 UINT *pList1ReferenceFrames;
5194 UINT ReferenceFramesReconPictureDescriptorsCount;
5195 D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
5196 UINT List0RefPicModificationsCount;
5197 UINT *pList0RefPicModifications;
5198 UINT List1RefPicModificationsCount;
5199 UINT *pList1RefPicModifications;
5200 UINT QPMapValuesCount;
5201 INT8 *pRateControlQPMap;
5202 UCHAR diff_cu_chroma_qp_offset_depth;
5203 UCHAR log2_sao_offset_scale_luma;
5204 UCHAR log2_sao_offset_scale_chroma;
5205 UCHAR log2_max_transform_skip_block_size_minus2;
5206 UCHAR chroma_qp_offset_list_len_minus1;
5207 CHAR cb_qp_offset_list[6];
5208 CHAR cr_qp_offset_list[6];
5209} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
5210typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA {
5211 UINT DataSize;
5212 __C89_NAMELESS union {
5213 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
5214 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC *pHEVCPicData;
5215 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 *pHEVCPicData1;
5216 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
5217 } __C89_NAMELESSUNIONNAME;
5218} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
5219typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES {
5220 UINT NumTexture2Ds;
5221 ID3D12Resource **ppTexture2Ds;
5222 UINT *pSubresources;
5223} D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
5224typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS {
5225 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0x0,
5226 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1
5227} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
5228DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS);
5229typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC {
5230 UINT IntraRefreshFrameIndex;
5231 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
5232 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
5233 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
5234} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
5235typedef enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS {
5236 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0x0,
5237 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
5238 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
5239 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
5240 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
5241 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10
5242} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
5243DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS);
5244typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES {
5245 __C89_NAMELESS union {
5246 UINT MaxBytesPerSlice;
5247 UINT NumberOfCodingUnitsPerSlice;
5248 UINT NumberOfRowsPerSlice;
5249 UINT NumberOfSlicesPerFrame;
5250 } __C89_NAMELESSUNIONNAME;
5251} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
5252typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA {
5253 UINT DataSize;
5254 __C89_NAMELESS union {
5255 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_H264;
5256 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_HEVC;
5257 const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES *pTilesPartition_AV1;
5258 } __C89_NAMELESSUNIONNAME;
5259} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
5260typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 {
5261 UINT NodeIndex;
5262 D3D12_VIDEO_ENCODER_CODEC Codec;
5263 DXGI_FORMAT InputFormat;
5264 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
5265 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
5266 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
5267 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
5268 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
5269 UINT ResolutionsListCount;
5270 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
5271 UINT MaxReferenceFramesInDPB;
5272 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
5273 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
5274 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
5275 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
5276 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
5277 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
5278 UINT MaxQualityVsSpeed;
5279} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
5280typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC {
5281 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
5282 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
5283 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
5284 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
5285 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
5286 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
5287 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
5288} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
5289typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS {
5290 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
5291 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
5292 ID3D12Resource *pInputFrame;
5293 UINT InputFrameSubresource;
5294 UINT CurrentFrameBitstreamMetadataSize;
5295} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
5296typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM {
5297 ID3D12Resource *pBuffer;
5298 UINT64 FrameStartOffset;
5299} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
5300typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE {
5301 ID3D12Resource *pReconstructedPicture;
5302 UINT ReconstructedPictureSubresource;
5303} D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
5304typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA {
5305 UINT64 bSize;
5306 UINT64 bStartOffset;
5307 UINT64 bHeaderSize;
5308} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
5309typedef enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS {
5310 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0x0,
5311 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
5312 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
5313 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
5314 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
5315 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10
5316} D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
5317DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS);
5318typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS {
5319 UINT64 AverageQP;
5320 UINT64 IntraCodingUnitsCount;
5321 UINT64 InterCodingUnitsCount;
5322 UINT64 SkipCodingUnitsCount;
5323 UINT64 AverageMotionEstimationXDirection;
5324 UINT64 AverageMotionEstimationYDirection;
5325} D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
5326typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA {
5327 UINT64 EncodeErrorFlags;
5328 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
5329 UINT64 EncodedBitstreamWrittenBytesCount;
5330 UINT64 WrittenSubregionsCount;
5331} D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
5332typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER {
5333 ID3D12Resource *pBuffer;
5334 UINT64 Offset;
5335} D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
5336typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS {
5337 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
5338 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
5339 DXGI_FORMAT EncoderInputFormat;
5340 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
5341 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
5342} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
5343typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS {
5344 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
5345} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
5346typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS {
5347 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
5348 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
5349 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
5350} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
5351/*****************************************************************************
5352 * ID3D12VideoEncodeCommandList2 interface
5353 */
5354#ifndef __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
5355#define __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
5356
5357DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2, 0x895491e2, 0xe701, 0x46a9, 0x9a,0x1f, 0x8d,0x34,0x80,0xed,0x86,0x7a);
5358#if defined(__cplusplus) && !defined(CINTERFACE)
5359MIDL_INTERFACE("895491e2-e701-46a9-9a1f-8d3480ed867a")
5360ID3D12VideoEncodeCommandList2 : public ID3D12VideoEncodeCommandList1
5361{
5362 virtual void STDMETHODCALLTYPE EncodeFrame(
5363 ID3D12VideoEncoder *encoder,
5364 ID3D12VideoEncoderHeap *heap,
5365 const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *input_arguments,
5366 const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *output_arguments) = 0;
5367
5368 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata(
5369 const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *input_arguments,
5370 const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *output_arguments) = 0;
5371
5372};
5373#ifdef __CRT_UUID_DECL
5374__CRT_UUID_DECL(ID3D12VideoEncodeCommandList2, 0x895491e2, 0xe701, 0x46a9, 0x9a,0x1f, 0x8d,0x34,0x80,0xed,0x86,0x7a)
5375#endif
5376#else
5377typedef struct ID3D12VideoEncodeCommandList2Vtbl {
5378 BEGIN_INTERFACE
5379
5380 /*** IUnknown methods ***/
5381 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5382 ID3D12VideoEncodeCommandList2 *This,
5383 REFIID riid,
5384 void **ppvObject);
5385
5386 ULONG (STDMETHODCALLTYPE *AddRef)(
5387 ID3D12VideoEncodeCommandList2 *This);
5388
5389 ULONG (STDMETHODCALLTYPE *Release)(
5390 ID3D12VideoEncodeCommandList2 *This);
5391
5392 /*** ID3D12Object methods ***/
5393 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
5394 ID3D12VideoEncodeCommandList2 *This,
5395 REFGUID guid,
5396 UINT *data_size,
5397 void *data);
5398
5399 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
5400 ID3D12VideoEncodeCommandList2 *This,
5401 REFGUID guid,
5402 UINT data_size,
5403 const void *data);
5404
5405 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
5406 ID3D12VideoEncodeCommandList2 *This,
5407 REFGUID guid,
5408 const IUnknown *data);
5409
5410 HRESULT (STDMETHODCALLTYPE *SetName)(
5411 ID3D12VideoEncodeCommandList2 *This,
5412 const WCHAR *name);
5413
5414 /*** ID3D12DeviceChild methods ***/
5415 HRESULT (STDMETHODCALLTYPE *GetDevice)(
5416 ID3D12VideoEncodeCommandList2 *This,
5417 REFIID riid,
5418 void **device);
5419
5420 /*** ID3D12CommandList methods ***/
5421 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
5422 ID3D12VideoEncodeCommandList2 *This);
5423
5424 /*** ID3D12VideoEncodeCommandList methods ***/
5425 HRESULT (STDMETHODCALLTYPE *Close)(
5426 ID3D12VideoEncodeCommandList2 *This);
5427
5428 HRESULT (STDMETHODCALLTYPE *Reset)(
5429 ID3D12VideoEncodeCommandList2 *This,
5430 ID3D12CommandAllocator *allocator);
5431
5432 void (STDMETHODCALLTYPE *ClearState)(
5433 ID3D12VideoEncodeCommandList2 *This);
5434
5435 void (STDMETHODCALLTYPE *ResourceBarrier)(
5436 ID3D12VideoEncodeCommandList2 *This,
5437 UINT barriers_count,
5438 const D3D12_RESOURCE_BARRIER *barriers);
5439
5440 void (STDMETHODCALLTYPE *DiscardResource)(
5441 ID3D12VideoEncodeCommandList2 *This,
5442 ID3D12Resource *resource,
5443 const D3D12_DISCARD_REGION *region);
5444
5445 void (STDMETHODCALLTYPE *BeginQuery)(
5446 ID3D12VideoEncodeCommandList2 *This,
5447 ID3D12QueryHeap *query_heap,
5448 D3D12_QUERY_TYPE type,
5449 UINT index);
5450
5451 void (STDMETHODCALLTYPE *EndQuery)(
5452 ID3D12VideoEncodeCommandList2 *This,
5453 ID3D12QueryHeap *query_heap,
5454 D3D12_QUERY_TYPE type,
5455 UINT index);
5456
5457 void (STDMETHODCALLTYPE *ResolveQueryData)(
5458 ID3D12VideoEncodeCommandList2 *This,
5459 ID3D12QueryHeap *query_heap,
5460 D3D12_QUERY_TYPE type,
5461 UINT start_index,
5462 UINT queries_count,
5463 ID3D12Resource *destination_buffer,
5464 UINT64 aligned_destination_buffer_offset);
5465
5466 void (STDMETHODCALLTYPE *SetPredication)(
5467 ID3D12VideoEncodeCommandList2 *This,
5468 ID3D12Resource *buffer,
5469 UINT64 aligned_buffer_offset,
5470 D3D12_PREDICATION_OP operation);
5471
5472 void (STDMETHODCALLTYPE *SetMarker)(
5473 ID3D12VideoEncodeCommandList2 *This,
5474 UINT metadata,
5475 const void *data,
5476 UINT size);
5477
5478 void (STDMETHODCALLTYPE *BeginEvent)(
5479 ID3D12VideoEncodeCommandList2 *This,
5480 UINT metadata,
5481 const void *data,
5482 UINT size);
5483
5484 void (STDMETHODCALLTYPE *EndEvent)(
5485 ID3D12VideoEncodeCommandList2 *This);
5486
5487 void (STDMETHODCALLTYPE *EstimateMotion)(
5488 ID3D12VideoEncodeCommandList2 *This,
5489 ID3D12VideoMotionEstimator *motion_estimator,
5490 const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,
5491 const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments);
5492
5493 void (STDMETHODCALLTYPE *ResolveMotionVectorHeap)(
5494 ID3D12VideoEncodeCommandList2 *This,
5495 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,
5496 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments);
5497
5498 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
5499 ID3D12VideoEncodeCommandList2 *This,
5500 UINT count,
5501 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
5502 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
5503
5504 void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
5505 ID3D12VideoEncodeCommandList2 *This,
5506 ID3D12ProtectedResourceSession *protected_resource_session);
5507
5508 /*** ID3D12VideoEncodeCommandList1 methods ***/
5509 void (STDMETHODCALLTYPE *InitializeExtensionCommand)(
5510 ID3D12VideoEncodeCommandList2 *This,
5511 ID3D12VideoExtensionCommand *extension_command,
5512 const void *initialization_parameters,
5513 SIZE_T initialization_parameters_size_in_bytes);
5514
5515 void (STDMETHODCALLTYPE *ExecuteExtensionCommand)(
5516 ID3D12VideoEncodeCommandList2 *This,
5517 ID3D12VideoExtensionCommand *extension_command,
5518 const void *execution_parameters,
5519 SIZE_T execution_parameters_size_in_bytes);
5520
5521 /*** ID3D12VideoEncodeCommandList2 methods ***/
5522 void (STDMETHODCALLTYPE *EncodeFrame)(
5523 ID3D12VideoEncodeCommandList2 *This,
5524 ID3D12VideoEncoder *encoder,
5525 ID3D12VideoEncoderHeap *heap,
5526 const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *input_arguments,
5527 const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *output_arguments);
5528
5529 void (STDMETHODCALLTYPE *ResolveEncoderOutputMetadata)(
5530 ID3D12VideoEncodeCommandList2 *This,
5531 const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *input_arguments,
5532 const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *output_arguments);
5533
5534 END_INTERFACE
5535} ID3D12VideoEncodeCommandList2Vtbl;
5536
5537interface ID3D12VideoEncodeCommandList2 {
5538 CONST_VTBL ID3D12VideoEncodeCommandList2Vtbl* lpVtbl;
5539};
5540
5541#ifdef COBJMACROS
5542#ifndef WIDL_C_INLINE_WRAPPERS
5543/*** IUnknown methods ***/
5544#define ID3D12VideoEncodeCommandList2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5545#define ID3D12VideoEncodeCommandList2_AddRef(This) (This)->lpVtbl->AddRef(This)
5546#define ID3D12VideoEncodeCommandList2_Release(This) (This)->lpVtbl->Release(This)
5547/*** ID3D12Object methods ***/
5548#define ID3D12VideoEncodeCommandList2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
5549#define ID3D12VideoEncodeCommandList2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
5550#define ID3D12VideoEncodeCommandList2_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
5551#define ID3D12VideoEncodeCommandList2_SetName(This,name) (This)->lpVtbl->SetName(This,name)
5552/*** ID3D12DeviceChild methods ***/
5553#define ID3D12VideoEncodeCommandList2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
5554/*** ID3D12CommandList methods ***/
5555#define ID3D12VideoEncodeCommandList2_GetType(This) (This)->lpVtbl->GetType(This)
5556/*** ID3D12VideoEncodeCommandList methods ***/
5557#define ID3D12VideoEncodeCommandList2_Close(This) (This)->lpVtbl->Close(This)
5558#define ID3D12VideoEncodeCommandList2_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
5559#define ID3D12VideoEncodeCommandList2_ClearState(This) (This)->lpVtbl->ClearState(This)
5560#define ID3D12VideoEncodeCommandList2_ResourceBarrier(This,barriers_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barriers_count,barriers)
5561#define ID3D12VideoEncodeCommandList2_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
5562#define ID3D12VideoEncodeCommandList2_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
5563#define ID3D12VideoEncodeCommandList2_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
5564#define ID3D12VideoEncodeCommandList2_ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset) (This)->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset)
5565#define ID3D12VideoEncodeCommandList2_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
5566#define ID3D12VideoEncodeCommandList2_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
5567#define ID3D12VideoEncodeCommandList2_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
5568#define ID3D12VideoEncodeCommandList2_EndEvent(This) (This)->lpVtbl->EndEvent(This)
5569#define ID3D12VideoEncodeCommandList2_EstimateMotion(This,motion_estimator,output_arguments,input_arguments) (This)->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments)
5570#define ID3D12VideoEncodeCommandList2_ResolveMotionVectorHeap(This,output_arguments,input_arguments) (This)->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments)
5571#define ID3D12VideoEncodeCommandList2_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
5572#define ID3D12VideoEncodeCommandList2_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
5573/*** ID3D12VideoEncodeCommandList1 methods ***/
5574#define ID3D12VideoEncodeCommandList2_InitializeExtensionCommand(This,extension_command,initialization_parameters,initialization_parameters_size_in_bytes) (This)->lpVtbl->InitializeExtensionCommand(This,extension_command,initialization_parameters,initialization_parameters_size_in_bytes)
5575#define ID3D12VideoEncodeCommandList2_ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes) (This)->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes)
5576/*** ID3D12VideoEncodeCommandList2 methods ***/
5577#define ID3D12VideoEncodeCommandList2_EncodeFrame(This,encoder,heap,input_arguments,output_arguments) (This)->lpVtbl->EncodeFrame(This,encoder,heap,input_arguments,output_arguments)
5578#define ID3D12VideoEncodeCommandList2_ResolveEncoderOutputMetadata(This,input_arguments,output_arguments) (This)->lpVtbl->ResolveEncoderOutputMetadata(This,input_arguments,output_arguments)
5579#else
5580/*** IUnknown methods ***/
5581static inline HRESULT ID3D12VideoEncodeCommandList2_QueryInterface(ID3D12VideoEncodeCommandList2* This,REFIID riid,void **ppvObject) {
5582 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5583}
5584static inline ULONG ID3D12VideoEncodeCommandList2_AddRef(ID3D12VideoEncodeCommandList2* This) {
5585 return This->lpVtbl->AddRef(This);
5586}
5587static inline ULONG ID3D12VideoEncodeCommandList2_Release(ID3D12VideoEncodeCommandList2* This) {
5588 return This->lpVtbl->Release(This);
5589}
5590/*** ID3D12Object methods ***/
5591static inline HRESULT ID3D12VideoEncodeCommandList2_GetPrivateData(ID3D12VideoEncodeCommandList2* This,REFGUID guid,UINT *data_size,void *data) {
5592 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
5593}
5594static inline HRESULT ID3D12VideoEncodeCommandList2_SetPrivateData(ID3D12VideoEncodeCommandList2* This,REFGUID guid,UINT data_size,const void *data) {
5595 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
5596}
5597static inline HRESULT ID3D12VideoEncodeCommandList2_SetPrivateDataInterface(ID3D12VideoEncodeCommandList2* This,REFGUID guid,const IUnknown *data) {
5598 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
5599}
5600static inline HRESULT ID3D12VideoEncodeCommandList2_SetName(ID3D12VideoEncodeCommandList2* This,const WCHAR *name) {
5601 return This->lpVtbl->SetName(This,name);
5602}
5603/*** ID3D12DeviceChild methods ***/
5604static inline HRESULT ID3D12VideoEncodeCommandList2_GetDevice(ID3D12VideoEncodeCommandList2* This,REFIID riid,void **device) {
5605 return This->lpVtbl->GetDevice(This,riid,device);
5606}
5607/*** ID3D12CommandList methods ***/
5608static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoEncodeCommandList2_GetType(ID3D12VideoEncodeCommandList2* This) {
5609 return This->lpVtbl->GetType(This);
5610}
5611/*** ID3D12VideoEncodeCommandList methods ***/
5612static inline HRESULT ID3D12VideoEncodeCommandList2_Close(ID3D12VideoEncodeCommandList2* This) {
5613 return This->lpVtbl->Close(This);
5614}
5615static inline HRESULT ID3D12VideoEncodeCommandList2_Reset(ID3D12VideoEncodeCommandList2* This,ID3D12CommandAllocator *allocator) {
5616 return This->lpVtbl->Reset(This,allocator);
5617}
5618static inline void ID3D12VideoEncodeCommandList2_ClearState(ID3D12VideoEncodeCommandList2* This) {
5619 This->lpVtbl->ClearState(This);
5620}
5621static inline void ID3D12VideoEncodeCommandList2_ResourceBarrier(ID3D12VideoEncodeCommandList2* This,UINT barriers_count,const D3D12_RESOURCE_BARRIER *barriers) {
5622 This->lpVtbl->ResourceBarrier(This,barriers_count,barriers);
5623}
5624static inline void ID3D12VideoEncodeCommandList2_DiscardResource(ID3D12VideoEncodeCommandList2* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
5625 This->lpVtbl->DiscardResource(This,resource,region);
5626}
5627static inline void ID3D12VideoEncodeCommandList2_BeginQuery(ID3D12VideoEncodeCommandList2* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
5628 This->lpVtbl->BeginQuery(This,query_heap,type,index);
5629}
5630static inline void ID3D12VideoEncodeCommandList2_EndQuery(ID3D12VideoEncodeCommandList2* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
5631 This->lpVtbl->EndQuery(This,query_heap,type,index);
5632}
5633static inline void ID3D12VideoEncodeCommandList2_ResolveQueryData(ID3D12VideoEncodeCommandList2* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT start_index,UINT queries_count,ID3D12Resource *destination_buffer,UINT64 aligned_destination_buffer_offset) {
5634 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset);
5635}
5636static inline void ID3D12VideoEncodeCommandList2_SetPredication(ID3D12VideoEncodeCommandList2* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
5637 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
5638}
5639static inline void ID3D12VideoEncodeCommandList2_SetMarker(ID3D12VideoEncodeCommandList2* This,UINT metadata,const void *data,UINT size) {
5640 This->lpVtbl->SetMarker(This,metadata,data,size);
5641}
5642static inline void ID3D12VideoEncodeCommandList2_BeginEvent(ID3D12VideoEncodeCommandList2* This,UINT metadata,const void *data,UINT size) {
5643 This->lpVtbl->BeginEvent(This,metadata,data,size);
5644}
5645static inline void ID3D12VideoEncodeCommandList2_EndEvent(ID3D12VideoEncodeCommandList2* This) {
5646 This->lpVtbl->EndEvent(This);
5647}
5648static inline void ID3D12VideoEncodeCommandList2_EstimateMotion(ID3D12VideoEncodeCommandList2* This,ID3D12VideoMotionEstimator *motion_estimator,const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments) {
5649 This->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments);
5650}
5651static inline void ID3D12VideoEncodeCommandList2_ResolveMotionVectorHeap(ID3D12VideoEncodeCommandList2* This,const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments) {
5652 This->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments);
5653}
5654static inline void ID3D12VideoEncodeCommandList2_WriteBufferImmediate(ID3D12VideoEncodeCommandList2* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
5655 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
5656}
5657static inline void ID3D12VideoEncodeCommandList2_SetProtectedResourceSession(ID3D12VideoEncodeCommandList2* This,ID3D12ProtectedResourceSession *protected_resource_session) {
5658 This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
5659}
5660/*** ID3D12VideoEncodeCommandList1 methods ***/
5661static inline void ID3D12VideoEncodeCommandList2_InitializeExtensionCommand(ID3D12VideoEncodeCommandList2* This,ID3D12VideoExtensionCommand *extension_command,const void *initialization_parameters,SIZE_T initialization_parameters_size_in_bytes) {
5662 This->lpVtbl->InitializeExtensionCommand(This,extension_command,initialization_parameters,initialization_parameters_size_in_bytes);
5663}
5664static inline void ID3D12VideoEncodeCommandList2_ExecuteExtensionCommand(ID3D12VideoEncodeCommandList2* This,ID3D12VideoExtensionCommand *extension_command,const void *execution_parameters,SIZE_T execution_parameters_size_in_bytes) {
5665 This->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes);
5666}
5667/*** ID3D12VideoEncodeCommandList2 methods ***/
5668static inline void ID3D12VideoEncodeCommandList2_EncodeFrame(ID3D12VideoEncodeCommandList2* This,ID3D12VideoEncoder *encoder,ID3D12VideoEncoderHeap *heap,const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *input_arguments,const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *output_arguments) {
5669 This->lpVtbl->EncodeFrame(This,encoder,heap,input_arguments,output_arguments);
5670}
5671static inline void ID3D12VideoEncodeCommandList2_ResolveEncoderOutputMetadata(ID3D12VideoEncodeCommandList2* This,const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *input_arguments,const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *output_arguments) {
5672 This->lpVtbl->ResolveEncoderOutputMetadata(This,input_arguments,output_arguments);
5673}
5674#endif
5675#endif
5676
5677#endif
5678
5679
5680#endif /* __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__ */
5681
5682/* Begin additional prototypes for all interfaces */
5683
5684
5685/* End additional prototypes */
5686
5687#ifdef __cplusplus
5688}
5689#endif
5690
5691#endif /* __d3d12video_h__ */