master
1/*** Autogenerated by WIDL 10.4 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 __ID3D12VideoDecodeCommandList_FWD_DEFINED__
46#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
47typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
48#ifdef __cplusplus
49interface ID3D12VideoDecodeCommandList;
50#endif /* __cplusplus */
51#endif
52
53#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
54#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
55typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
56#ifdef __cplusplus
57interface ID3D12VideoDecodeCommandList1;
58#endif /* __cplusplus */
59#endif
60
61#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
62#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
63typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
64#ifdef __cplusplus
65interface ID3D12VideoMotionEstimator;
66#endif /* __cplusplus */
67#endif
68
69#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
70#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
71typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
72#ifdef __cplusplus
73interface ID3D12VideoMotionVectorHeap;
74#endif /* __cplusplus */
75#endif
76
77#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
78#define __ID3D12VideoDevice1_FWD_DEFINED__
79typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
80#ifdef __cplusplus
81interface ID3D12VideoDevice1;
82#endif /* __cplusplus */
83#endif
84
85#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
86#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
87typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
88#ifdef __cplusplus
89interface ID3D12VideoEncodeCommandList;
90#endif /* __cplusplus */
91#endif
92
93#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
94#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
95typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
96#ifdef __cplusplus
97interface ID3D12VideoExtensionCommand;
98#endif /* __cplusplus */
99#endif
100
101#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
102#define __ID3D12VideoDevice2_FWD_DEFINED__
103typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
104#ifdef __cplusplus
105interface ID3D12VideoDevice2;
106#endif /* __cplusplus */
107#endif
108
109#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
110#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
111typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
112#ifdef __cplusplus
113interface ID3D12VideoEncodeCommandList1;
114#endif /* __cplusplus */
115#endif
116
117#ifndef __ID3D12VideoEncoder_FWD_DEFINED__
118#define __ID3D12VideoEncoder_FWD_DEFINED__
119typedef interface ID3D12VideoEncoder ID3D12VideoEncoder;
120#ifdef __cplusplus
121interface ID3D12VideoEncoder;
122#endif /* __cplusplus */
123#endif
124
125#ifndef __ID3D12VideoEncoderHeap_FWD_DEFINED__
126#define __ID3D12VideoEncoderHeap_FWD_DEFINED__
127typedef interface ID3D12VideoEncoderHeap ID3D12VideoEncoderHeap;
128#ifdef __cplusplus
129interface ID3D12VideoEncoderHeap;
130#endif /* __cplusplus */
131#endif
132
133#ifndef __ID3D12VideoDevice3_FWD_DEFINED__
134#define __ID3D12VideoDevice3_FWD_DEFINED__
135typedef interface ID3D12VideoDevice3 ID3D12VideoDevice3;
136#ifdef __cplusplus
137interface ID3D12VideoDevice3;
138#endif /* __cplusplus */
139#endif
140
141#ifndef __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
142#define __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
143typedef interface ID3D12VideoEncodeCommandList2 ID3D12VideoEncodeCommandList2;
144#ifdef __cplusplus
145interface ID3D12VideoEncodeCommandList2;
146#endif /* __cplusplus */
147#endif
148
149/* Headers for imported files */
150
151#include <oaidl.h>
152#include <ocidl.h>
153#include <dxgicommon.h>
154#include <d3d12.h>
155
156#ifdef __cplusplus
157extern "C" {
158#endif
159
160typedef enum D3D12_VIDEO_FIELD_TYPE {
161 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
162 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
163 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
164} D3D12_VIDEO_FIELD_TYPE;
165typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT {
166 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
167 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
168 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
169 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
170 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
171} D3D12_VIDEO_FRAME_STEREO_FORMAT;
172typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE {
173 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
174 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
175} D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
176typedef enum D3D12_FEATURE_VIDEO {
177 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
178 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
179 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
180 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
181 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
182 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
183 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
184 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
185 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
186 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
187 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
188 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
189 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
190 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
191 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
192 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
193 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
194 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
195 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
196 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
197 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
198 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
199 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
200 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
201 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
202 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
203 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
204 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
205 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
206 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
207 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
208 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
209 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
210 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
211 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
212 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
213 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
214 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
215 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
216 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45
217} D3D12_FEATURE_VIDEO;
218typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE {
219 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
220} D3D12_BITSTREAM_ENCRYPTION_TYPE;
221typedef struct D3D12_VIDEO_DECODE_CONFIGURATION {
222 GUID DecodeProfile;
223 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
224 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
225} D3D12_VIDEO_DECODE_CONFIGURATION;
226typedef struct D3D12_VIDEO_DECODER_DESC {
227 UINT NodeMask;
228 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
229} D3D12_VIDEO_DECODER_DESC;
230typedef struct D3D12_VIDEO_DECODER_HEAP_DESC {
231 UINT NodeMask;
232 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
233 UINT DecodeWidth;
234 UINT DecodeHeight;
235 DXGI_FORMAT Format;
236 DXGI_RATIONAL FrameRate;
237 UINT BitRate;
238 UINT MaxDecodePictureBufferCount;
239} D3D12_VIDEO_DECODER_HEAP_DESC;
240typedef struct D3D12_VIDEO_SIZE_RANGE {
241 UINT MaxWidth;
242 UINT MaxHeight;
243 UINT MinWidth;
244 UINT MinHeight;
245} D3D12_VIDEO_SIZE_RANGE;
246typedef enum D3D12_VIDEO_PROCESS_FILTER {
247 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
248 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
249 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
250 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
251 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
252 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
253 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
254 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
255} D3D12_VIDEO_PROCESS_FILTER;
256typedef enum D3D12_VIDEO_PROCESS_FILTER_FLAGS {
257 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
258 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS,
259 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST,
260 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = 1 << D3D12_VIDEO_PROCESS_FILTER_HUE,
261 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION,
262 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION,
263 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT,
264 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING,
265 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT
266} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
267DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS);
268typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS {
269 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
270 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
271 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
272} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
273DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS );
274typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY {
275 WINBOOL Enable;
276 FLOAT Lower;
277 FLOAT Upper;
278} D3D12_VIDEO_PROCESS_LUMA_KEY;
279typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC {
280 DXGI_FORMAT Format;
281 DXGI_COLOR_SPACE_TYPE ColorSpace;
282 DXGI_RATIONAL SourceAspectRatio;
283 DXGI_RATIONAL DestinationAspectRatio;
284 DXGI_RATIONAL FrameRate;
285 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
286 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
287 WINBOOL EnableOrientation;
288 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
289 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
290 D3D12_VIDEO_FIELD_TYPE FieldType;
291 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
292 WINBOOL EnableAlphaBlending;
293 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
294 UINT NumPastFrames;
295 UINT NumFutureFrames;
296 WINBOOL EnableAutoProcessing;
297} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
298typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE {
299 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
300 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
301 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
302 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
303} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
304typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC {
305 DXGI_FORMAT Format;
306 DXGI_COLOR_SPACE_TYPE ColorSpace;
307 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
308 UINT AlphaFillModeSourceStreamIndex;
309 FLOAT BackgroundColor[4];
310 DXGI_RATIONAL FrameRate;
311 WINBOOL EnableStereo;
312} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
313/*****************************************************************************
314 * ID3D12VideoDecoderHeap interface
315 */
316#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
317#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
318
319DEFINE_GUID(IID_ID3D12VideoDecoderHeap, 0x0946b7c9, 0xebf6, 0x4047, 0xbb,0x73, 0x86,0x83,0xe2,0x7d,0xbb,0x1f);
320#if defined(__cplusplus) && !defined(CINTERFACE)
321MIDL_INTERFACE("0946b7c9-ebf6-4047-bb73-8683e27dbb1f")
322ID3D12VideoDecoderHeap : public ID3D12Pageable
323{
324#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
325 virtual D3D12_VIDEO_DECODER_HEAP_DESC* STDMETHODCALLTYPE GetDesc(
326 D3D12_VIDEO_DECODER_HEAP_DESC *__ret) = 0;
327 D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc(
328 )
329 {
330 D3D12_VIDEO_DECODER_HEAP_DESC __ret;
331 return *GetDesc(&__ret);
332 }
333#else
334 virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc(
335 ) = 0;
336#endif
337
338};
339#ifdef __CRT_UUID_DECL
340__CRT_UUID_DECL(ID3D12VideoDecoderHeap, 0x0946b7c9, 0xebf6, 0x4047, 0xbb,0x73, 0x86,0x83,0xe2,0x7d,0xbb,0x1f)
341#endif
342#else
343typedef struct ID3D12VideoDecoderHeapVtbl {
344 BEGIN_INTERFACE
345
346 /*** IUnknown methods ***/
347 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
348 ID3D12VideoDecoderHeap *This,
349 REFIID riid,
350 void **ppvObject);
351
352 ULONG (STDMETHODCALLTYPE *AddRef)(
353 ID3D12VideoDecoderHeap *This);
354
355 ULONG (STDMETHODCALLTYPE *Release)(
356 ID3D12VideoDecoderHeap *This);
357
358 /*** ID3D12Object methods ***/
359 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
360 ID3D12VideoDecoderHeap *This,
361 REFGUID guid,
362 UINT *data_size,
363 void *data);
364
365 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
366 ID3D12VideoDecoderHeap *This,
367 REFGUID guid,
368 UINT data_size,
369 const void *data);
370
371 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
372 ID3D12VideoDecoderHeap *This,
373 REFGUID guid,
374 const IUnknown *data);
375
376 HRESULT (STDMETHODCALLTYPE *SetName)(
377 ID3D12VideoDecoderHeap *This,
378 const WCHAR *name);
379
380 /*** ID3D12DeviceChild methods ***/
381 HRESULT (STDMETHODCALLTYPE *GetDevice)(
382 ID3D12VideoDecoderHeap *This,
383 REFIID riid,
384 void **device);
385
386 /*** ID3D12VideoDecoderHeap methods ***/
387 D3D12_VIDEO_DECODER_HEAP_DESC * (STDMETHODCALLTYPE *GetDesc)(
388 ID3D12VideoDecoderHeap *This,
389 D3D12_VIDEO_DECODER_HEAP_DESC *__ret);
390
391 END_INTERFACE
392} ID3D12VideoDecoderHeapVtbl;
393
394interface ID3D12VideoDecoderHeap {
395 CONST_VTBL ID3D12VideoDecoderHeapVtbl* lpVtbl;
396};
397
398#ifdef COBJMACROS
399#ifndef WIDL_C_INLINE_WRAPPERS
400/*** IUnknown methods ***/
401#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
402#define ID3D12VideoDecoderHeap_AddRef(This) (This)->lpVtbl->AddRef(This)
403#define ID3D12VideoDecoderHeap_Release(This) (This)->lpVtbl->Release(This)
404/*** ID3D12Object methods ***/
405#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
406#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
407#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
408#define ID3D12VideoDecoderHeap_SetName(This,name) (This)->lpVtbl->SetName(This,name)
409/*** ID3D12DeviceChild methods ***/
410#define ID3D12VideoDecoderHeap_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
411/*** ID3D12VideoDecoderHeap methods ***/
412#define ID3D12VideoDecoderHeap_GetDesc(This) ID3D12VideoDecoderHeap_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
413#else
414/*** IUnknown methods ***/
415static inline HRESULT ID3D12VideoDecoderHeap_QueryInterface(ID3D12VideoDecoderHeap* This,REFIID riid,void **ppvObject) {
416 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
417}
418static inline ULONG ID3D12VideoDecoderHeap_AddRef(ID3D12VideoDecoderHeap* This) {
419 return This->lpVtbl->AddRef(This);
420}
421static inline ULONG ID3D12VideoDecoderHeap_Release(ID3D12VideoDecoderHeap* This) {
422 return This->lpVtbl->Release(This);
423}
424/*** ID3D12Object methods ***/
425static inline HRESULT ID3D12VideoDecoderHeap_GetPrivateData(ID3D12VideoDecoderHeap* This,REFGUID guid,UINT *data_size,void *data) {
426 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
427}
428static inline HRESULT ID3D12VideoDecoderHeap_SetPrivateData(ID3D12VideoDecoderHeap* This,REFGUID guid,UINT data_size,const void *data) {
429 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
430}
431static inline HRESULT ID3D12VideoDecoderHeap_SetPrivateDataInterface(ID3D12VideoDecoderHeap* This,REFGUID guid,const IUnknown *data) {
432 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
433}
434static inline HRESULT ID3D12VideoDecoderHeap_SetName(ID3D12VideoDecoderHeap* This,const WCHAR *name) {
435 return This->lpVtbl->SetName(This,name);
436}
437/*** ID3D12DeviceChild methods ***/
438static inline HRESULT ID3D12VideoDecoderHeap_GetDevice(ID3D12VideoDecoderHeap* This,REFIID riid,void **device) {
439 return This->lpVtbl->GetDevice(This,riid,device);
440}
441/*** ID3D12VideoDecoderHeap methods ***/
442static inline D3D12_VIDEO_DECODER_HEAP_DESC ID3D12VideoDecoderHeap_GetDesc(ID3D12VideoDecoderHeap* This) {
443 D3D12_VIDEO_DECODER_HEAP_DESC __ret;
444 return *This->lpVtbl->GetDesc(This,&__ret);
445}
446#endif
447#endif
448
449#endif
450
451
452#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
453
454/*****************************************************************************
455 * ID3D12VideoDevice interface
456 */
457#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
458#define __ID3D12VideoDevice_INTERFACE_DEFINED__
459
460DEFINE_GUID(IID_ID3D12VideoDevice, 0x1f052807, 0x0b46, 0x4acc, 0x8a,0x89, 0x36,0x4f,0x79,0x37,0x18,0xa4);
461#if defined(__cplusplus) && !defined(CINTERFACE)
462MIDL_INTERFACE("1f052807-0b46-4acc-8a89-364f793718a4")
463ID3D12VideoDevice : public IUnknown
464{
465 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
466 D3D12_FEATURE_VIDEO feature_video,
467 void *feature_support_data,
468 UINT feature_support_data_size) = 0;
469
470 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
471 const D3D12_VIDEO_DECODER_DESC *desc,
472 REFIID riid,
473 void **video_decoder) = 0;
474
475 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
476 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
477 REFIID riid,
478 void **video_decoder_heap) = 0;
479
480 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
481 UINT node_mask,
482 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
483 UINT input_stream_descs_count,
484 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
485 REFIID riid,
486 void **video_processor) = 0;
487
488};
489#ifdef __CRT_UUID_DECL
490__CRT_UUID_DECL(ID3D12VideoDevice, 0x1f052807, 0x0b46, 0x4acc, 0x8a,0x89, 0x36,0x4f,0x79,0x37,0x18,0xa4)
491#endif
492#else
493typedef struct ID3D12VideoDeviceVtbl {
494 BEGIN_INTERFACE
495
496 /*** IUnknown methods ***/
497 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
498 ID3D12VideoDevice *This,
499 REFIID riid,
500 void **ppvObject);
501
502 ULONG (STDMETHODCALLTYPE *AddRef)(
503 ID3D12VideoDevice *This);
504
505 ULONG (STDMETHODCALLTYPE *Release)(
506 ID3D12VideoDevice *This);
507
508 /*** ID3D12VideoDevice methods ***/
509 HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
510 ID3D12VideoDevice *This,
511 D3D12_FEATURE_VIDEO feature_video,
512 void *feature_support_data,
513 UINT feature_support_data_size);
514
515 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
516 ID3D12VideoDevice *This,
517 const D3D12_VIDEO_DECODER_DESC *desc,
518 REFIID riid,
519 void **video_decoder);
520
521 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap)(
522 ID3D12VideoDevice *This,
523 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
524 REFIID riid,
525 void **video_decoder_heap);
526
527 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
528 ID3D12VideoDevice *This,
529 UINT node_mask,
530 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
531 UINT input_stream_descs_count,
532 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
533 REFIID riid,
534 void **video_processor);
535
536 END_INTERFACE
537} ID3D12VideoDeviceVtbl;
538
539interface ID3D12VideoDevice {
540 CONST_VTBL ID3D12VideoDeviceVtbl* lpVtbl;
541};
542
543#ifdef COBJMACROS
544#ifndef WIDL_C_INLINE_WRAPPERS
545/*** IUnknown methods ***/
546#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
547#define ID3D12VideoDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
548#define ID3D12VideoDevice_Release(This) (This)->lpVtbl->Release(This)
549/*** ID3D12VideoDevice methods ***/
550#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)
551#define ID3D12VideoDevice_CreateVideoDecoder(This,desc,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder)
552#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap) (This)->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap)
553#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)
554#else
555/*** IUnknown methods ***/
556static inline HRESULT ID3D12VideoDevice_QueryInterface(ID3D12VideoDevice* This,REFIID riid,void **ppvObject) {
557 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
558}
559static inline ULONG ID3D12VideoDevice_AddRef(ID3D12VideoDevice* This) {
560 return This->lpVtbl->AddRef(This);
561}
562static inline ULONG ID3D12VideoDevice_Release(ID3D12VideoDevice* This) {
563 return This->lpVtbl->Release(This);
564}
565/*** ID3D12VideoDevice methods ***/
566static inline HRESULT ID3D12VideoDevice_CheckFeatureSupport(ID3D12VideoDevice* This,D3D12_FEATURE_VIDEO feature_video,void *feature_support_data,UINT feature_support_data_size) {
567 return This->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size);
568}
569static inline HRESULT ID3D12VideoDevice_CreateVideoDecoder(ID3D12VideoDevice* This,const D3D12_VIDEO_DECODER_DESC *desc,REFIID riid,void **video_decoder) {
570 return This->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder);
571}
572static inline HRESULT ID3D12VideoDevice_CreateVideoDecoderHeap(ID3D12VideoDevice* This,const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,REFIID riid,void **video_decoder_heap) {
573 return This->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap);
574}
575static 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) {
576 return This->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor);
577}
578#endif
579#endif
580
581#endif
582
583
584#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
585
586/*****************************************************************************
587 * ID3D12VideoDecoder interface
588 */
589#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
590#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
591
592DEFINE_GUID(IID_ID3D12VideoDecoder, 0xc59b6bdc, 0x7720, 0x4074, 0xa1,0x36, 0x17,0xa1,0x56,0x03,0x74,0x70);
593#if defined(__cplusplus) && !defined(CINTERFACE)
594MIDL_INTERFACE("c59b6bdc-7720-4074-a136-17a156037470")
595ID3D12VideoDecoder : public ID3D12Pageable
596{
597#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
598 virtual D3D12_VIDEO_DECODER_DESC* STDMETHODCALLTYPE GetDesc(
599 D3D12_VIDEO_DECODER_DESC *__ret) = 0;
600 D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc(
601 )
602 {
603 D3D12_VIDEO_DECODER_DESC __ret;
604 return *GetDesc(&__ret);
605 }
606#else
607 virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc(
608 ) = 0;
609#endif
610
611};
612#ifdef __CRT_UUID_DECL
613__CRT_UUID_DECL(ID3D12VideoDecoder, 0xc59b6bdc, 0x7720, 0x4074, 0xa1,0x36, 0x17,0xa1,0x56,0x03,0x74,0x70)
614#endif
615#else
616typedef struct ID3D12VideoDecoderVtbl {
617 BEGIN_INTERFACE
618
619 /*** IUnknown methods ***/
620 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
621 ID3D12VideoDecoder *This,
622 REFIID riid,
623 void **ppvObject);
624
625 ULONG (STDMETHODCALLTYPE *AddRef)(
626 ID3D12VideoDecoder *This);
627
628 ULONG (STDMETHODCALLTYPE *Release)(
629 ID3D12VideoDecoder *This);
630
631 /*** ID3D12Object methods ***/
632 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
633 ID3D12VideoDecoder *This,
634 REFGUID guid,
635 UINT *data_size,
636 void *data);
637
638 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
639 ID3D12VideoDecoder *This,
640 REFGUID guid,
641 UINT data_size,
642 const void *data);
643
644 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
645 ID3D12VideoDecoder *This,
646 REFGUID guid,
647 const IUnknown *data);
648
649 HRESULT (STDMETHODCALLTYPE *SetName)(
650 ID3D12VideoDecoder *This,
651 const WCHAR *name);
652
653 /*** ID3D12DeviceChild methods ***/
654 HRESULT (STDMETHODCALLTYPE *GetDevice)(
655 ID3D12VideoDecoder *This,
656 REFIID riid,
657 void **device);
658
659 /*** ID3D12VideoDecoder methods ***/
660 D3D12_VIDEO_DECODER_DESC * (STDMETHODCALLTYPE *GetDesc)(
661 ID3D12VideoDecoder *This,
662 D3D12_VIDEO_DECODER_DESC *__ret);
663
664 END_INTERFACE
665} ID3D12VideoDecoderVtbl;
666
667interface ID3D12VideoDecoder {
668 CONST_VTBL ID3D12VideoDecoderVtbl* lpVtbl;
669};
670
671#ifdef COBJMACROS
672#ifndef WIDL_C_INLINE_WRAPPERS
673/*** IUnknown methods ***/
674#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
675#define ID3D12VideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
676#define ID3D12VideoDecoder_Release(This) (This)->lpVtbl->Release(This)
677/*** ID3D12Object methods ***/
678#define ID3D12VideoDecoder_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
679#define ID3D12VideoDecoder_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
680#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
681#define ID3D12VideoDecoder_SetName(This,name) (This)->lpVtbl->SetName(This,name)
682/*** ID3D12DeviceChild methods ***/
683#define ID3D12VideoDecoder_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
684/*** ID3D12VideoDecoder methods ***/
685#define ID3D12VideoDecoder_GetDesc(This) ID3D12VideoDecoder_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
686#else
687/*** IUnknown methods ***/
688static inline HRESULT ID3D12VideoDecoder_QueryInterface(ID3D12VideoDecoder* This,REFIID riid,void **ppvObject) {
689 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
690}
691static inline ULONG ID3D12VideoDecoder_AddRef(ID3D12VideoDecoder* This) {
692 return This->lpVtbl->AddRef(This);
693}
694static inline ULONG ID3D12VideoDecoder_Release(ID3D12VideoDecoder* This) {
695 return This->lpVtbl->Release(This);
696}
697/*** ID3D12Object methods ***/
698static inline HRESULT ID3D12VideoDecoder_GetPrivateData(ID3D12VideoDecoder* This,REFGUID guid,UINT *data_size,void *data) {
699 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
700}
701static inline HRESULT ID3D12VideoDecoder_SetPrivateData(ID3D12VideoDecoder* This,REFGUID guid,UINT data_size,const void *data) {
702 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
703}
704static inline HRESULT ID3D12VideoDecoder_SetPrivateDataInterface(ID3D12VideoDecoder* This,REFGUID guid,const IUnknown *data) {
705 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
706}
707static inline HRESULT ID3D12VideoDecoder_SetName(ID3D12VideoDecoder* This,const WCHAR *name) {
708 return This->lpVtbl->SetName(This,name);
709}
710/*** ID3D12DeviceChild methods ***/
711static inline HRESULT ID3D12VideoDecoder_GetDevice(ID3D12VideoDecoder* This,REFIID riid,void **device) {
712 return This->lpVtbl->GetDevice(This,riid,device);
713}
714/*** ID3D12VideoDecoder methods ***/
715static inline D3D12_VIDEO_DECODER_DESC ID3D12VideoDecoder_GetDesc(ID3D12VideoDecoder* This) {
716 D3D12_VIDEO_DECODER_DESC __ret;
717 return *This->lpVtbl->GetDesc(This,&__ret);
718}
719#endif
720#endif
721
722#endif
723
724
725#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
726
727typedef enum D3D12_VIDEO_DECODE_TIER {
728 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
729 D3D12_VIDEO_DECODE_TIER_1 = 1,
730 D3D12_VIDEO_DECODE_TIER_2 = 2,
731 D3D12_VIDEO_DECODE_TIER_3 = 3
732} D3D12_VIDEO_DECODE_TIER;
733typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS {
734 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
735 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
736} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
737DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS);
738typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS {
739 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0x0,
740 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
741 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
742 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
743 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
744} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
745DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS);
746typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE {
747 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
748 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
749 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
750 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_MAX_VALID = 3
751} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
752typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT {
753 UINT NodeIndex;
754 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
755 UINT Width;
756 UINT Height;
757 DXGI_FORMAT DecodeFormat;
758 DXGI_RATIONAL FrameRate;
759 UINT BitRate;
760 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
761 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
762 D3D12_VIDEO_DECODE_TIER DecodeTier;
763} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
764typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT {
765 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
766 UINT Size;
767 void *pData;
768} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
769typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES {
770 UINT NumTexture2Ds;
771 ID3D12Resource **ppTexture2Ds;
772 UINT *pSubresources;
773 ID3D12VideoDecoderHeap **ppHeaps;
774} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
775typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM {
776 ID3D12Resource *pBuffer;
777 UINT64 Offset;
778 UINT64 Size;
779} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
780typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS {
781 WINBOOL Enable;
782 ID3D12Resource *pReferenceTexture2D;
783 UINT ReferenceSubresource;
784 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
785 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
786} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
787typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS {
788 UINT NumFrameArguments;
789 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[10];
790 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
791 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
792 ID3D12VideoDecoderHeap *pHeap;
793} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
794typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS {
795 ID3D12Resource *pOutputTexture2D;
796 UINT OutputSubresource;
797 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
798} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
799/*****************************************************************************
800 * ID3D12VideoDecodeCommandList interface
801 */
802#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
803#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
804
805DEFINE_GUID(IID_ID3D12VideoDecodeCommandList, 0x3b60536e, 0xad29, 0x4e64, 0xa2,0x69, 0xf8,0x53,0x83,0x7e,0x5e,0x53);
806#if defined(__cplusplus) && !defined(CINTERFACE)
807MIDL_INTERFACE("3b60536e-ad29-4e64-a269-f853837e5e53")
808ID3D12VideoDecodeCommandList : public ID3D12CommandList
809{
810 virtual HRESULT STDMETHODCALLTYPE Close(
811 ) = 0;
812
813 virtual HRESULT STDMETHODCALLTYPE Reset(
814 ID3D12CommandAllocator *allocator) = 0;
815
816 virtual void STDMETHODCALLTYPE ClearState(
817 ) = 0;
818
819 virtual void STDMETHODCALLTYPE ResourceBarrier(
820 UINT barriers_count,
821 const D3D12_RESOURCE_BARRIER *barriers) = 0;
822
823 virtual void STDMETHODCALLTYPE DiscardResource(
824 ID3D12Resource *resource,
825 const D3D12_DISCARD_REGION *region) = 0;
826
827 virtual void STDMETHODCALLTYPE BeginQuery(
828 ID3D12QueryHeap *query_heap,
829 D3D12_QUERY_TYPE type,
830 UINT index) = 0;
831
832 virtual void STDMETHODCALLTYPE EndQuery(
833 ID3D12QueryHeap *query_heap,
834 D3D12_QUERY_TYPE type,
835 UINT index) = 0;
836
837 virtual void STDMETHODCALLTYPE ResolveQueryData(
838 ID3D12QueryHeap *query_heap,
839 D3D12_QUERY_TYPE type,
840 UINT start_index,
841 UINT queries_count,
842 ID3D12Resource *destination_buffer,
843 UINT64 aligned_destination_buffer_offset) = 0;
844
845 virtual void STDMETHODCALLTYPE SetPredication(
846 ID3D12Resource *buffer,
847 UINT64 aligned_buffer_offset,
848 D3D12_PREDICATION_OP operation) = 0;
849
850 virtual void STDMETHODCALLTYPE SetMarker(
851 UINT metadata,
852 const void *data,
853 UINT size) = 0;
854
855 virtual void STDMETHODCALLTYPE BeginEvent(
856 UINT metadata,
857 const void *data,
858 UINT size) = 0;
859
860 virtual void STDMETHODCALLTYPE EndEvent(
861 ) = 0;
862
863 virtual void STDMETHODCALLTYPE DecodeFrame(
864 ID3D12VideoDecoder *decoder,
865 const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *output_arguments,
866 const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments) = 0;
867
868 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
869 UINT count,
870 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
871 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) = 0;
872
873};
874#ifdef __CRT_UUID_DECL
875__CRT_UUID_DECL(ID3D12VideoDecodeCommandList, 0x3b60536e, 0xad29, 0x4e64, 0xa2,0x69, 0xf8,0x53,0x83,0x7e,0x5e,0x53)
876#endif
877#else
878typedef struct ID3D12VideoDecodeCommandListVtbl {
879 BEGIN_INTERFACE
880
881 /*** IUnknown methods ***/
882 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
883 ID3D12VideoDecodeCommandList *This,
884 REFIID riid,
885 void **ppvObject);
886
887 ULONG (STDMETHODCALLTYPE *AddRef)(
888 ID3D12VideoDecodeCommandList *This);
889
890 ULONG (STDMETHODCALLTYPE *Release)(
891 ID3D12VideoDecodeCommandList *This);
892
893 /*** ID3D12Object methods ***/
894 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
895 ID3D12VideoDecodeCommandList *This,
896 REFGUID guid,
897 UINT *data_size,
898 void *data);
899
900 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
901 ID3D12VideoDecodeCommandList *This,
902 REFGUID guid,
903 UINT data_size,
904 const void *data);
905
906 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
907 ID3D12VideoDecodeCommandList *This,
908 REFGUID guid,
909 const IUnknown *data);
910
911 HRESULT (STDMETHODCALLTYPE *SetName)(
912 ID3D12VideoDecodeCommandList *This,
913 const WCHAR *name);
914
915 /*** ID3D12DeviceChild methods ***/
916 HRESULT (STDMETHODCALLTYPE *GetDevice)(
917 ID3D12VideoDecodeCommandList *This,
918 REFIID riid,
919 void **device);
920
921 /*** ID3D12CommandList methods ***/
922 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
923 ID3D12VideoDecodeCommandList *This);
924
925 /*** ID3D12VideoDecodeCommandList methods ***/
926 HRESULT (STDMETHODCALLTYPE *Close)(
927 ID3D12VideoDecodeCommandList *This);
928
929 HRESULT (STDMETHODCALLTYPE *Reset)(
930 ID3D12VideoDecodeCommandList *This,
931 ID3D12CommandAllocator *allocator);
932
933 void (STDMETHODCALLTYPE *ClearState)(
934 ID3D12VideoDecodeCommandList *This);
935
936 void (STDMETHODCALLTYPE *ResourceBarrier)(
937 ID3D12VideoDecodeCommandList *This,
938 UINT barriers_count,
939 const D3D12_RESOURCE_BARRIER *barriers);
940
941 void (STDMETHODCALLTYPE *DiscardResource)(
942 ID3D12VideoDecodeCommandList *This,
943 ID3D12Resource *resource,
944 const D3D12_DISCARD_REGION *region);
945
946 void (STDMETHODCALLTYPE *BeginQuery)(
947 ID3D12VideoDecodeCommandList *This,
948 ID3D12QueryHeap *query_heap,
949 D3D12_QUERY_TYPE type,
950 UINT index);
951
952 void (STDMETHODCALLTYPE *EndQuery)(
953 ID3D12VideoDecodeCommandList *This,
954 ID3D12QueryHeap *query_heap,
955 D3D12_QUERY_TYPE type,
956 UINT index);
957
958 void (STDMETHODCALLTYPE *ResolveQueryData)(
959 ID3D12VideoDecodeCommandList *This,
960 ID3D12QueryHeap *query_heap,
961 D3D12_QUERY_TYPE type,
962 UINT start_index,
963 UINT queries_count,
964 ID3D12Resource *destination_buffer,
965 UINT64 aligned_destination_buffer_offset);
966
967 void (STDMETHODCALLTYPE *SetPredication)(
968 ID3D12VideoDecodeCommandList *This,
969 ID3D12Resource *buffer,
970 UINT64 aligned_buffer_offset,
971 D3D12_PREDICATION_OP operation);
972
973 void (STDMETHODCALLTYPE *SetMarker)(
974 ID3D12VideoDecodeCommandList *This,
975 UINT metadata,
976 const void *data,
977 UINT size);
978
979 void (STDMETHODCALLTYPE *BeginEvent)(
980 ID3D12VideoDecodeCommandList *This,
981 UINT metadata,
982 const void *data,
983 UINT size);
984
985 void (STDMETHODCALLTYPE *EndEvent)(
986 ID3D12VideoDecodeCommandList *This);
987
988 void (STDMETHODCALLTYPE *DecodeFrame)(
989 ID3D12VideoDecodeCommandList *This,
990 ID3D12VideoDecoder *decoder,
991 const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *output_arguments,
992 const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments);
993
994 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
995 ID3D12VideoDecodeCommandList *This,
996 UINT count,
997 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
998 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
999
1000 END_INTERFACE
1001} ID3D12VideoDecodeCommandListVtbl;
1002
1003interface ID3D12VideoDecodeCommandList {
1004 CONST_VTBL ID3D12VideoDecodeCommandListVtbl* lpVtbl;
1005};
1006
1007#ifdef COBJMACROS
1008#ifndef WIDL_C_INLINE_WRAPPERS
1009/*** IUnknown methods ***/
1010#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1011#define ID3D12VideoDecodeCommandList_AddRef(This) (This)->lpVtbl->AddRef(This)
1012#define ID3D12VideoDecodeCommandList_Release(This) (This)->lpVtbl->Release(This)
1013/*** ID3D12Object methods ***/
1014#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1015#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1016#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
1017#define ID3D12VideoDecodeCommandList_SetName(This,name) (This)->lpVtbl->SetName(This,name)
1018/*** ID3D12DeviceChild methods ***/
1019#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
1020/*** ID3D12CommandList methods ***/
1021#define ID3D12VideoDecodeCommandList_GetType(This) (This)->lpVtbl->GetType(This)
1022/*** ID3D12VideoDecodeCommandList methods ***/
1023#define ID3D12VideoDecodeCommandList_Close(This) (This)->lpVtbl->Close(This)
1024#define ID3D12VideoDecodeCommandList_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
1025#define ID3D12VideoDecodeCommandList_ClearState(This) (This)->lpVtbl->ClearState(This)
1026#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,barriers_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barriers_count,barriers)
1027#define ID3D12VideoDecodeCommandList_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
1028#define ID3D12VideoDecodeCommandList_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
1029#define ID3D12VideoDecodeCommandList_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
1030#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)
1031#define ID3D12VideoDecodeCommandList_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
1032#define ID3D12VideoDecodeCommandList_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
1033#define ID3D12VideoDecodeCommandList_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
1034#define ID3D12VideoDecodeCommandList_EndEvent(This) (This)->lpVtbl->EndEvent(This)
1035#define ID3D12VideoDecodeCommandList_DecodeFrame(This,decoder,output_arguments,input_arguments) (This)->lpVtbl->DecodeFrame(This,decoder,output_arguments,input_arguments)
1036#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
1037#else
1038/*** IUnknown methods ***/
1039static inline HRESULT ID3D12VideoDecodeCommandList_QueryInterface(ID3D12VideoDecodeCommandList* This,REFIID riid,void **ppvObject) {
1040 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1041}
1042static inline ULONG ID3D12VideoDecodeCommandList_AddRef(ID3D12VideoDecodeCommandList* This) {
1043 return This->lpVtbl->AddRef(This);
1044}
1045static inline ULONG ID3D12VideoDecodeCommandList_Release(ID3D12VideoDecodeCommandList* This) {
1046 return This->lpVtbl->Release(This);
1047}
1048/*** ID3D12Object methods ***/
1049static inline HRESULT ID3D12VideoDecodeCommandList_GetPrivateData(ID3D12VideoDecodeCommandList* This,REFGUID guid,UINT *data_size,void *data) {
1050 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1051}
1052static inline HRESULT ID3D12VideoDecodeCommandList_SetPrivateData(ID3D12VideoDecodeCommandList* This,REFGUID guid,UINT data_size,const void *data) {
1053 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1054}
1055static inline HRESULT ID3D12VideoDecodeCommandList_SetPrivateDataInterface(ID3D12VideoDecodeCommandList* This,REFGUID guid,const IUnknown *data) {
1056 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
1057}
1058static inline HRESULT ID3D12VideoDecodeCommandList_SetName(ID3D12VideoDecodeCommandList* This,const WCHAR *name) {
1059 return This->lpVtbl->SetName(This,name);
1060}
1061/*** ID3D12DeviceChild methods ***/
1062static inline HRESULT ID3D12VideoDecodeCommandList_GetDevice(ID3D12VideoDecodeCommandList* This,REFIID riid,void **device) {
1063 return This->lpVtbl->GetDevice(This,riid,device);
1064}
1065/*** ID3D12CommandList methods ***/
1066static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoDecodeCommandList_GetType(ID3D12VideoDecodeCommandList* This) {
1067 return This->lpVtbl->GetType(This);
1068}
1069/*** ID3D12VideoDecodeCommandList methods ***/
1070static inline HRESULT ID3D12VideoDecodeCommandList_Close(ID3D12VideoDecodeCommandList* This) {
1071 return This->lpVtbl->Close(This);
1072}
1073static inline HRESULT ID3D12VideoDecodeCommandList_Reset(ID3D12VideoDecodeCommandList* This,ID3D12CommandAllocator *allocator) {
1074 return This->lpVtbl->Reset(This,allocator);
1075}
1076static inline void ID3D12VideoDecodeCommandList_ClearState(ID3D12VideoDecodeCommandList* This) {
1077 This->lpVtbl->ClearState(This);
1078}
1079static inline void ID3D12VideoDecodeCommandList_ResourceBarrier(ID3D12VideoDecodeCommandList* This,UINT barriers_count,const D3D12_RESOURCE_BARRIER *barriers) {
1080 This->lpVtbl->ResourceBarrier(This,barriers_count,barriers);
1081}
1082static inline void ID3D12VideoDecodeCommandList_DiscardResource(ID3D12VideoDecodeCommandList* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
1083 This->lpVtbl->DiscardResource(This,resource,region);
1084}
1085static inline void ID3D12VideoDecodeCommandList_BeginQuery(ID3D12VideoDecodeCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
1086 This->lpVtbl->BeginQuery(This,query_heap,type,index);
1087}
1088static inline void ID3D12VideoDecodeCommandList_EndQuery(ID3D12VideoDecodeCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
1089 This->lpVtbl->EndQuery(This,query_heap,type,index);
1090}
1091static 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) {
1092 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset);
1093}
1094static inline void ID3D12VideoDecodeCommandList_SetPredication(ID3D12VideoDecodeCommandList* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
1095 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
1096}
1097static inline void ID3D12VideoDecodeCommandList_SetMarker(ID3D12VideoDecodeCommandList* This,UINT metadata,const void *data,UINT size) {
1098 This->lpVtbl->SetMarker(This,metadata,data,size);
1099}
1100static inline void ID3D12VideoDecodeCommandList_BeginEvent(ID3D12VideoDecodeCommandList* This,UINT metadata,const void *data,UINT size) {
1101 This->lpVtbl->BeginEvent(This,metadata,data,size);
1102}
1103static inline void ID3D12VideoDecodeCommandList_EndEvent(ID3D12VideoDecodeCommandList* This) {
1104 This->lpVtbl->EndEvent(This);
1105}
1106static 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) {
1107 This->lpVtbl->DecodeFrame(This,decoder,output_arguments,input_arguments);
1108}
1109static inline void ID3D12VideoDecodeCommandList_WriteBufferImmediate(ID3D12VideoDecodeCommandList* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
1110 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
1111}
1112#endif
1113#endif
1114
1115#endif
1116
1117
1118#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
1119
1120typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM {
1121 UINT64 Offset;
1122 ID3D12Resource *pBuffer;
1123} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
1124typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 {
1125 WINBOOL Enable;
1126 ID3D12Resource *pReferenceTexture2D;
1127 UINT ReferenceSubresource;
1128 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
1129 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
1130 UINT OutputWidth;
1131 UINT OutputHeight;
1132} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
1133typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 {
1134 ID3D12Resource *pOutputTexture2D;
1135 UINT OutputSubresource;
1136 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
1137 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[4];
1138} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
1139/*****************************************************************************
1140 * ID3D12VideoDecodeCommandList1 interface
1141 */
1142#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
1143#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
1144
1145DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1, 0xd52f011b, 0xb56e, 0x453c, 0xa0,0x5a, 0xa7,0xf3,0x11,0xc8,0xf4,0x72);
1146#if defined(__cplusplus) && !defined(CINTERFACE)
1147MIDL_INTERFACE("d52f011b-b56e-453c-a05a-a7f311c8f472")
1148ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
1149{
1150 virtual void STDMETHODCALLTYPE DecodeFrame1(
1151 ID3D12VideoDecoder *decoder,
1152 const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *output_arguments,
1153 const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments) = 0;
1154
1155};
1156#ifdef __CRT_UUID_DECL
1157__CRT_UUID_DECL(ID3D12VideoDecodeCommandList1, 0xd52f011b, 0xb56e, 0x453c, 0xa0,0x5a, 0xa7,0xf3,0x11,0xc8,0xf4,0x72)
1158#endif
1159#else
1160typedef struct ID3D12VideoDecodeCommandList1Vtbl {
1161 BEGIN_INTERFACE
1162
1163 /*** IUnknown methods ***/
1164 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1165 ID3D12VideoDecodeCommandList1 *This,
1166 REFIID riid,
1167 void **ppvObject);
1168
1169 ULONG (STDMETHODCALLTYPE *AddRef)(
1170 ID3D12VideoDecodeCommandList1 *This);
1171
1172 ULONG (STDMETHODCALLTYPE *Release)(
1173 ID3D12VideoDecodeCommandList1 *This);
1174
1175 /*** ID3D12Object methods ***/
1176 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1177 ID3D12VideoDecodeCommandList1 *This,
1178 REFGUID guid,
1179 UINT *data_size,
1180 void *data);
1181
1182 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1183 ID3D12VideoDecodeCommandList1 *This,
1184 REFGUID guid,
1185 UINT data_size,
1186 const void *data);
1187
1188 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1189 ID3D12VideoDecodeCommandList1 *This,
1190 REFGUID guid,
1191 const IUnknown *data);
1192
1193 HRESULT (STDMETHODCALLTYPE *SetName)(
1194 ID3D12VideoDecodeCommandList1 *This,
1195 const WCHAR *name);
1196
1197 /*** ID3D12DeviceChild methods ***/
1198 HRESULT (STDMETHODCALLTYPE *GetDevice)(
1199 ID3D12VideoDecodeCommandList1 *This,
1200 REFIID riid,
1201 void **device);
1202
1203 /*** ID3D12CommandList methods ***/
1204 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
1205 ID3D12VideoDecodeCommandList1 *This);
1206
1207 /*** ID3D12VideoDecodeCommandList methods ***/
1208 HRESULT (STDMETHODCALLTYPE *Close)(
1209 ID3D12VideoDecodeCommandList1 *This);
1210
1211 HRESULT (STDMETHODCALLTYPE *Reset)(
1212 ID3D12VideoDecodeCommandList1 *This,
1213 ID3D12CommandAllocator *allocator);
1214
1215 void (STDMETHODCALLTYPE *ClearState)(
1216 ID3D12VideoDecodeCommandList1 *This);
1217
1218 void (STDMETHODCALLTYPE *ResourceBarrier)(
1219 ID3D12VideoDecodeCommandList1 *This,
1220 UINT barriers_count,
1221 const D3D12_RESOURCE_BARRIER *barriers);
1222
1223 void (STDMETHODCALLTYPE *DiscardResource)(
1224 ID3D12VideoDecodeCommandList1 *This,
1225 ID3D12Resource *resource,
1226 const D3D12_DISCARD_REGION *region);
1227
1228 void (STDMETHODCALLTYPE *BeginQuery)(
1229 ID3D12VideoDecodeCommandList1 *This,
1230 ID3D12QueryHeap *query_heap,
1231 D3D12_QUERY_TYPE type,
1232 UINT index);
1233
1234 void (STDMETHODCALLTYPE *EndQuery)(
1235 ID3D12VideoDecodeCommandList1 *This,
1236 ID3D12QueryHeap *query_heap,
1237 D3D12_QUERY_TYPE type,
1238 UINT index);
1239
1240 void (STDMETHODCALLTYPE *ResolveQueryData)(
1241 ID3D12VideoDecodeCommandList1 *This,
1242 ID3D12QueryHeap *query_heap,
1243 D3D12_QUERY_TYPE type,
1244 UINT start_index,
1245 UINT queries_count,
1246 ID3D12Resource *destination_buffer,
1247 UINT64 aligned_destination_buffer_offset);
1248
1249 void (STDMETHODCALLTYPE *SetPredication)(
1250 ID3D12VideoDecodeCommandList1 *This,
1251 ID3D12Resource *buffer,
1252 UINT64 aligned_buffer_offset,
1253 D3D12_PREDICATION_OP operation);
1254
1255 void (STDMETHODCALLTYPE *SetMarker)(
1256 ID3D12VideoDecodeCommandList1 *This,
1257 UINT metadata,
1258 const void *data,
1259 UINT size);
1260
1261 void (STDMETHODCALLTYPE *BeginEvent)(
1262 ID3D12VideoDecodeCommandList1 *This,
1263 UINT metadata,
1264 const void *data,
1265 UINT size);
1266
1267 void (STDMETHODCALLTYPE *EndEvent)(
1268 ID3D12VideoDecodeCommandList1 *This);
1269
1270 void (STDMETHODCALLTYPE *DecodeFrame)(
1271 ID3D12VideoDecodeCommandList1 *This,
1272 ID3D12VideoDecoder *decoder,
1273 const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *output_arguments,
1274 const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments);
1275
1276 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
1277 ID3D12VideoDecodeCommandList1 *This,
1278 UINT count,
1279 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
1280 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
1281
1282 /*** ID3D12VideoDecodeCommandList1 methods ***/
1283 void (STDMETHODCALLTYPE *DecodeFrame1)(
1284 ID3D12VideoDecodeCommandList1 *This,
1285 ID3D12VideoDecoder *decoder,
1286 const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *output_arguments,
1287 const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *input_arguments);
1288
1289 END_INTERFACE
1290} ID3D12VideoDecodeCommandList1Vtbl;
1291
1292interface ID3D12VideoDecodeCommandList1 {
1293 CONST_VTBL ID3D12VideoDecodeCommandList1Vtbl* lpVtbl;
1294};
1295
1296#ifdef COBJMACROS
1297#ifndef WIDL_C_INLINE_WRAPPERS
1298/*** IUnknown methods ***/
1299#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1300#define ID3D12VideoDecodeCommandList1_AddRef(This) (This)->lpVtbl->AddRef(This)
1301#define ID3D12VideoDecodeCommandList1_Release(This) (This)->lpVtbl->Release(This)
1302/*** ID3D12Object methods ***/
1303#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1304#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1305#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
1306#define ID3D12VideoDecodeCommandList1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
1307/*** ID3D12DeviceChild methods ***/
1308#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
1309/*** ID3D12CommandList methods ***/
1310#define ID3D12VideoDecodeCommandList1_GetType(This) (This)->lpVtbl->GetType(This)
1311/*** ID3D12VideoDecodeCommandList methods ***/
1312#define ID3D12VideoDecodeCommandList1_Close(This) (This)->lpVtbl->Close(This)
1313#define ID3D12VideoDecodeCommandList1_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
1314#define ID3D12VideoDecodeCommandList1_ClearState(This) (This)->lpVtbl->ClearState(This)
1315#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,barriers_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barriers_count,barriers)
1316#define ID3D12VideoDecodeCommandList1_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
1317#define ID3D12VideoDecodeCommandList1_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
1318#define ID3D12VideoDecodeCommandList1_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
1319#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)
1320#define ID3D12VideoDecodeCommandList1_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
1321#define ID3D12VideoDecodeCommandList1_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
1322#define ID3D12VideoDecodeCommandList1_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
1323#define ID3D12VideoDecodeCommandList1_EndEvent(This) (This)->lpVtbl->EndEvent(This)
1324#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,decoder,output_arguments,input_arguments) (This)->lpVtbl->DecodeFrame(This,decoder,output_arguments,input_arguments)
1325#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
1326/*** ID3D12VideoDecodeCommandList1 methods ***/
1327#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,decoder,output_arguments,input_arguments) (This)->lpVtbl->DecodeFrame1(This,decoder,output_arguments,input_arguments)
1328#else
1329/*** IUnknown methods ***/
1330static inline HRESULT ID3D12VideoDecodeCommandList1_QueryInterface(ID3D12VideoDecodeCommandList1* This,REFIID riid,void **ppvObject) {
1331 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1332}
1333static inline ULONG ID3D12VideoDecodeCommandList1_AddRef(ID3D12VideoDecodeCommandList1* This) {
1334 return This->lpVtbl->AddRef(This);
1335}
1336static inline ULONG ID3D12VideoDecodeCommandList1_Release(ID3D12VideoDecodeCommandList1* This) {
1337 return This->lpVtbl->Release(This);
1338}
1339/*** ID3D12Object methods ***/
1340static inline HRESULT ID3D12VideoDecodeCommandList1_GetPrivateData(ID3D12VideoDecodeCommandList1* This,REFGUID guid,UINT *data_size,void *data) {
1341 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1342}
1343static inline HRESULT ID3D12VideoDecodeCommandList1_SetPrivateData(ID3D12VideoDecodeCommandList1* This,REFGUID guid,UINT data_size,const void *data) {
1344 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1345}
1346static inline HRESULT ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(ID3D12VideoDecodeCommandList1* This,REFGUID guid,const IUnknown *data) {
1347 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
1348}
1349static inline HRESULT ID3D12VideoDecodeCommandList1_SetName(ID3D12VideoDecodeCommandList1* This,const WCHAR *name) {
1350 return This->lpVtbl->SetName(This,name);
1351}
1352/*** ID3D12DeviceChild methods ***/
1353static inline HRESULT ID3D12VideoDecodeCommandList1_GetDevice(ID3D12VideoDecodeCommandList1* This,REFIID riid,void **device) {
1354 return This->lpVtbl->GetDevice(This,riid,device);
1355}
1356/*** ID3D12CommandList methods ***/
1357static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoDecodeCommandList1_GetType(ID3D12VideoDecodeCommandList1* This) {
1358 return This->lpVtbl->GetType(This);
1359}
1360/*** ID3D12VideoDecodeCommandList methods ***/
1361static inline HRESULT ID3D12VideoDecodeCommandList1_Close(ID3D12VideoDecodeCommandList1* This) {
1362 return This->lpVtbl->Close(This);
1363}
1364static inline HRESULT ID3D12VideoDecodeCommandList1_Reset(ID3D12VideoDecodeCommandList1* This,ID3D12CommandAllocator *allocator) {
1365 return This->lpVtbl->Reset(This,allocator);
1366}
1367static inline void ID3D12VideoDecodeCommandList1_ClearState(ID3D12VideoDecodeCommandList1* This) {
1368 This->lpVtbl->ClearState(This);
1369}
1370static inline void ID3D12VideoDecodeCommandList1_ResourceBarrier(ID3D12VideoDecodeCommandList1* This,UINT barriers_count,const D3D12_RESOURCE_BARRIER *barriers) {
1371 This->lpVtbl->ResourceBarrier(This,barriers_count,barriers);
1372}
1373static inline void ID3D12VideoDecodeCommandList1_DiscardResource(ID3D12VideoDecodeCommandList1* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
1374 This->lpVtbl->DiscardResource(This,resource,region);
1375}
1376static inline void ID3D12VideoDecodeCommandList1_BeginQuery(ID3D12VideoDecodeCommandList1* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
1377 This->lpVtbl->BeginQuery(This,query_heap,type,index);
1378}
1379static inline void ID3D12VideoDecodeCommandList1_EndQuery(ID3D12VideoDecodeCommandList1* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
1380 This->lpVtbl->EndQuery(This,query_heap,type,index);
1381}
1382static 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) {
1383 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset);
1384}
1385static inline void ID3D12VideoDecodeCommandList1_SetPredication(ID3D12VideoDecodeCommandList1* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
1386 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
1387}
1388static inline void ID3D12VideoDecodeCommandList1_SetMarker(ID3D12VideoDecodeCommandList1* This,UINT metadata,const void *data,UINT size) {
1389 This->lpVtbl->SetMarker(This,metadata,data,size);
1390}
1391static inline void ID3D12VideoDecodeCommandList1_BeginEvent(ID3D12VideoDecodeCommandList1* This,UINT metadata,const void *data,UINT size) {
1392 This->lpVtbl->BeginEvent(This,metadata,data,size);
1393}
1394static inline void ID3D12VideoDecodeCommandList1_EndEvent(ID3D12VideoDecodeCommandList1* This) {
1395 This->lpVtbl->EndEvent(This);
1396}
1397static 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) {
1398 This->lpVtbl->DecodeFrame(This,decoder,output_arguments,input_arguments);
1399}
1400static inline void ID3D12VideoDecodeCommandList1_WriteBufferImmediate(ID3D12VideoDecodeCommandList1* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
1401 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
1402}
1403/*** ID3D12VideoDecodeCommandList1 methods ***/
1404static 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) {
1405 This->lpVtbl->DecodeFrame1(This,decoder,output_arguments,input_arguments);
1406}
1407#endif
1408#endif
1409
1410#endif
1411
1412
1413#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
1414
1415typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE {
1416 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
1417 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
1418} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
1419typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION {
1420 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
1421} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
1422typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT {
1423 UINT NodeIndex;
1424 WINBOOL VideoDecodeSupport;
1425 WINBOOL VideoProcessSupport;
1426 WINBOOL VideoEncodeSupport;
1427} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
1428typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC {
1429 UINT NodeMask;
1430 DXGI_FORMAT InputFormat;
1431 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
1432 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
1433 D3D12_VIDEO_SIZE_RANGE SizeRange;
1434} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
1435/*****************************************************************************
1436 * ID3D12VideoMotionEstimator interface
1437 */
1438#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
1439#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
1440
1441DEFINE_GUID(IID_ID3D12VideoMotionEstimator, 0x33fdae0e, 0x098b, 0x428f, 0x87,0xbb, 0x34,0xb6,0x95,0xde,0x08,0xf8);
1442#if defined(__cplusplus) && !defined(CINTERFACE)
1443MIDL_INTERFACE("33fdae0e-098b-428f-87bb-34b695de08f8")
1444ID3D12VideoMotionEstimator : public ID3D12Pageable
1445{
1446#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
1447 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC* STDMETHODCALLTYPE GetDesc(
1448 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *__ret) = 0;
1449 D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc(
1450 )
1451 {
1452 D3D12_VIDEO_MOTION_ESTIMATOR_DESC __ret;
1453 return *GetDesc(&__ret);
1454 }
1455#else
1456 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc(
1457 ) = 0;
1458#endif
1459
1460 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
1461 REFIID riid,
1462 void **protected_session) = 0;
1463
1464};
1465#ifdef __CRT_UUID_DECL
1466__CRT_UUID_DECL(ID3D12VideoMotionEstimator, 0x33fdae0e, 0x098b, 0x428f, 0x87,0xbb, 0x34,0xb6,0x95,0xde,0x08,0xf8)
1467#endif
1468#else
1469typedef struct ID3D12VideoMotionEstimatorVtbl {
1470 BEGIN_INTERFACE
1471
1472 /*** IUnknown methods ***/
1473 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1474 ID3D12VideoMotionEstimator *This,
1475 REFIID riid,
1476 void **ppvObject);
1477
1478 ULONG (STDMETHODCALLTYPE *AddRef)(
1479 ID3D12VideoMotionEstimator *This);
1480
1481 ULONG (STDMETHODCALLTYPE *Release)(
1482 ID3D12VideoMotionEstimator *This);
1483
1484 /*** ID3D12Object methods ***/
1485 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1486 ID3D12VideoMotionEstimator *This,
1487 REFGUID guid,
1488 UINT *data_size,
1489 void *data);
1490
1491 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1492 ID3D12VideoMotionEstimator *This,
1493 REFGUID guid,
1494 UINT data_size,
1495 const void *data);
1496
1497 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1498 ID3D12VideoMotionEstimator *This,
1499 REFGUID guid,
1500 const IUnknown *data);
1501
1502 HRESULT (STDMETHODCALLTYPE *SetName)(
1503 ID3D12VideoMotionEstimator *This,
1504 const WCHAR *name);
1505
1506 /*** ID3D12DeviceChild methods ***/
1507 HRESULT (STDMETHODCALLTYPE *GetDevice)(
1508 ID3D12VideoMotionEstimator *This,
1509 REFIID riid,
1510 void **device);
1511
1512 /*** ID3D12VideoMotionEstimator methods ***/
1513 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * (STDMETHODCALLTYPE *GetDesc)(
1514 ID3D12VideoMotionEstimator *This,
1515 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *__ret);
1516
1517 HRESULT (STDMETHODCALLTYPE *GetProtectedResourceSession)(
1518 ID3D12VideoMotionEstimator *This,
1519 REFIID riid,
1520 void **protected_session);
1521
1522 END_INTERFACE
1523} ID3D12VideoMotionEstimatorVtbl;
1524
1525interface ID3D12VideoMotionEstimator {
1526 CONST_VTBL ID3D12VideoMotionEstimatorVtbl* lpVtbl;
1527};
1528
1529#ifdef COBJMACROS
1530#ifndef WIDL_C_INLINE_WRAPPERS
1531/*** IUnknown methods ***/
1532#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1533#define ID3D12VideoMotionEstimator_AddRef(This) (This)->lpVtbl->AddRef(This)
1534#define ID3D12VideoMotionEstimator_Release(This) (This)->lpVtbl->Release(This)
1535/*** ID3D12Object methods ***/
1536#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1537#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1538#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
1539#define ID3D12VideoMotionEstimator_SetName(This,name) (This)->lpVtbl->SetName(This,name)
1540/*** ID3D12DeviceChild methods ***/
1541#define ID3D12VideoMotionEstimator_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
1542/*** ID3D12VideoMotionEstimator methods ***/
1543#define ID3D12VideoMotionEstimator_GetDesc(This) ID3D12VideoMotionEstimator_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
1544#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,protected_session) (This)->lpVtbl->GetProtectedResourceSession(This,riid,protected_session)
1545#else
1546/*** IUnknown methods ***/
1547static inline HRESULT ID3D12VideoMotionEstimator_QueryInterface(ID3D12VideoMotionEstimator* This,REFIID riid,void **ppvObject) {
1548 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1549}
1550static inline ULONG ID3D12VideoMotionEstimator_AddRef(ID3D12VideoMotionEstimator* This) {
1551 return This->lpVtbl->AddRef(This);
1552}
1553static inline ULONG ID3D12VideoMotionEstimator_Release(ID3D12VideoMotionEstimator* This) {
1554 return This->lpVtbl->Release(This);
1555}
1556/*** ID3D12Object methods ***/
1557static inline HRESULT ID3D12VideoMotionEstimator_GetPrivateData(ID3D12VideoMotionEstimator* This,REFGUID guid,UINT *data_size,void *data) {
1558 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1559}
1560static inline HRESULT ID3D12VideoMotionEstimator_SetPrivateData(ID3D12VideoMotionEstimator* This,REFGUID guid,UINT data_size,const void *data) {
1561 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1562}
1563static inline HRESULT ID3D12VideoMotionEstimator_SetPrivateDataInterface(ID3D12VideoMotionEstimator* This,REFGUID guid,const IUnknown *data) {
1564 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
1565}
1566static inline HRESULT ID3D12VideoMotionEstimator_SetName(ID3D12VideoMotionEstimator* This,const WCHAR *name) {
1567 return This->lpVtbl->SetName(This,name);
1568}
1569/*** ID3D12DeviceChild methods ***/
1570static inline HRESULT ID3D12VideoMotionEstimator_GetDevice(ID3D12VideoMotionEstimator* This,REFIID riid,void **device) {
1571 return This->lpVtbl->GetDevice(This,riid,device);
1572}
1573/*** ID3D12VideoMotionEstimator methods ***/
1574static inline D3D12_VIDEO_MOTION_ESTIMATOR_DESC ID3D12VideoMotionEstimator_GetDesc(ID3D12VideoMotionEstimator* This) {
1575 D3D12_VIDEO_MOTION_ESTIMATOR_DESC __ret;
1576 return *This->lpVtbl->GetDesc(This,&__ret);
1577}
1578static inline HRESULT ID3D12VideoMotionEstimator_GetProtectedResourceSession(ID3D12VideoMotionEstimator* This,REFIID riid,void **protected_session) {
1579 return This->lpVtbl->GetProtectedResourceSession(This,riid,protected_session);
1580}
1581#endif
1582#endif
1583
1584#endif
1585
1586
1587#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
1588
1589typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC {
1590 UINT NodeMask;
1591 DXGI_FORMAT InputFormat;
1592 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
1593 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
1594 D3D12_VIDEO_SIZE_RANGE SizeRange;
1595} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
1596/*****************************************************************************
1597 * ID3D12VideoMotionVectorHeap interface
1598 */
1599#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
1600#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
1601
1602DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap, 0x5be17987, 0x743a, 0x4061, 0x83,0x4b, 0x23,0xd2,0x2d,0xae,0xa5,0x05);
1603#if defined(__cplusplus) && !defined(CINTERFACE)
1604MIDL_INTERFACE("5be17987-743a-4061-834b-23d22daea505")
1605ID3D12VideoMotionVectorHeap : public ID3D12Pageable
1606{
1607#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
1608 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* STDMETHODCALLTYPE GetDesc(
1609 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *__ret) = 0;
1610 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc(
1611 )
1612 {
1613 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC __ret;
1614 return *GetDesc(&__ret);
1615 }
1616#else
1617 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc(
1618 ) = 0;
1619#endif
1620
1621 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
1622 REFIID riid,
1623 void **protected_session) = 0;
1624
1625};
1626#ifdef __CRT_UUID_DECL
1627__CRT_UUID_DECL(ID3D12VideoMotionVectorHeap, 0x5be17987, 0x743a, 0x4061, 0x83,0x4b, 0x23,0xd2,0x2d,0xae,0xa5,0x05)
1628#endif
1629#else
1630typedef struct ID3D12VideoMotionVectorHeapVtbl {
1631 BEGIN_INTERFACE
1632
1633 /*** IUnknown methods ***/
1634 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1635 ID3D12VideoMotionVectorHeap *This,
1636 REFIID riid,
1637 void **ppvObject);
1638
1639 ULONG (STDMETHODCALLTYPE *AddRef)(
1640 ID3D12VideoMotionVectorHeap *This);
1641
1642 ULONG (STDMETHODCALLTYPE *Release)(
1643 ID3D12VideoMotionVectorHeap *This);
1644
1645 /*** ID3D12Object methods ***/
1646 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1647 ID3D12VideoMotionVectorHeap *This,
1648 REFGUID guid,
1649 UINT *data_size,
1650 void *data);
1651
1652 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1653 ID3D12VideoMotionVectorHeap *This,
1654 REFGUID guid,
1655 UINT data_size,
1656 const void *data);
1657
1658 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1659 ID3D12VideoMotionVectorHeap *This,
1660 REFGUID guid,
1661 const IUnknown *data);
1662
1663 HRESULT (STDMETHODCALLTYPE *SetName)(
1664 ID3D12VideoMotionVectorHeap *This,
1665 const WCHAR *name);
1666
1667 /*** ID3D12DeviceChild methods ***/
1668 HRESULT (STDMETHODCALLTYPE *GetDevice)(
1669 ID3D12VideoMotionVectorHeap *This,
1670 REFIID riid,
1671 void **device);
1672
1673 /*** ID3D12VideoMotionVectorHeap methods ***/
1674 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * (STDMETHODCALLTYPE *GetDesc)(
1675 ID3D12VideoMotionVectorHeap *This,
1676 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *__ret);
1677
1678 HRESULT (STDMETHODCALLTYPE *GetProtectedResourceSession)(
1679 ID3D12VideoMotionVectorHeap *This,
1680 REFIID riid,
1681 void **protected_session);
1682
1683 END_INTERFACE
1684} ID3D12VideoMotionVectorHeapVtbl;
1685
1686interface ID3D12VideoMotionVectorHeap {
1687 CONST_VTBL ID3D12VideoMotionVectorHeapVtbl* lpVtbl;
1688};
1689
1690#ifdef COBJMACROS
1691#ifndef WIDL_C_INLINE_WRAPPERS
1692/*** IUnknown methods ***/
1693#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1694#define ID3D12VideoMotionVectorHeap_AddRef(This) (This)->lpVtbl->AddRef(This)
1695#define ID3D12VideoMotionVectorHeap_Release(This) (This)->lpVtbl->Release(This)
1696/*** ID3D12Object methods ***/
1697#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1698#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1699#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
1700#define ID3D12VideoMotionVectorHeap_SetName(This,name) (This)->lpVtbl->SetName(This,name)
1701/*** ID3D12DeviceChild methods ***/
1702#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
1703/*** ID3D12VideoMotionVectorHeap methods ***/
1704#define ID3D12VideoMotionVectorHeap_GetDesc(This) ID3D12VideoMotionVectorHeap_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
1705#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,protected_session) (This)->lpVtbl->GetProtectedResourceSession(This,riid,protected_session)
1706#else
1707/*** IUnknown methods ***/
1708static inline HRESULT ID3D12VideoMotionVectorHeap_QueryInterface(ID3D12VideoMotionVectorHeap* This,REFIID riid,void **ppvObject) {
1709 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1710}
1711static inline ULONG ID3D12VideoMotionVectorHeap_AddRef(ID3D12VideoMotionVectorHeap* This) {
1712 return This->lpVtbl->AddRef(This);
1713}
1714static inline ULONG ID3D12VideoMotionVectorHeap_Release(ID3D12VideoMotionVectorHeap* This) {
1715 return This->lpVtbl->Release(This);
1716}
1717/*** ID3D12Object methods ***/
1718static inline HRESULT ID3D12VideoMotionVectorHeap_GetPrivateData(ID3D12VideoMotionVectorHeap* This,REFGUID guid,UINT *data_size,void *data) {
1719 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1720}
1721static inline HRESULT ID3D12VideoMotionVectorHeap_SetPrivateData(ID3D12VideoMotionVectorHeap* This,REFGUID guid,UINT data_size,const void *data) {
1722 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1723}
1724static inline HRESULT ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(ID3D12VideoMotionVectorHeap* This,REFGUID guid,const IUnknown *data) {
1725 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
1726}
1727static inline HRESULT ID3D12VideoMotionVectorHeap_SetName(ID3D12VideoMotionVectorHeap* This,const WCHAR *name) {
1728 return This->lpVtbl->SetName(This,name);
1729}
1730/*** ID3D12DeviceChild methods ***/
1731static inline HRESULT ID3D12VideoMotionVectorHeap_GetDevice(ID3D12VideoMotionVectorHeap* This,REFIID riid,void **device) {
1732 return This->lpVtbl->GetDevice(This,riid,device);
1733}
1734/*** ID3D12VideoMotionVectorHeap methods ***/
1735static inline D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC ID3D12VideoMotionVectorHeap_GetDesc(ID3D12VideoMotionVectorHeap* This) {
1736 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC __ret;
1737 return *This->lpVtbl->GetDesc(This,&__ret);
1738}
1739static inline HRESULT ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(ID3D12VideoMotionVectorHeap* This,REFIID riid,void **protected_session) {
1740 return This->lpVtbl->GetProtectedResourceSession(This,riid,protected_session);
1741}
1742#endif
1743#endif
1744
1745#endif
1746
1747
1748#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
1749
1750/*****************************************************************************
1751 * ID3D12VideoDevice1 interface
1752 */
1753#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
1754#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
1755
1756DEFINE_GUID(IID_ID3D12VideoDevice1, 0x981611ad, 0xa144, 0x4c83, 0x98,0x90, 0xf3,0x0e,0x26,0xd6,0x58,0xab);
1757#if defined(__cplusplus) && !defined(CINTERFACE)
1758MIDL_INTERFACE("981611ad-a144-4c83-9890-f30e26d658ab")
1759ID3D12VideoDevice1 : public ID3D12VideoDevice
1760{
1761 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
1762 const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,
1763 ID3D12ProtectedResourceSession *protected_resource_session,
1764 REFIID riid,
1765 void **video_motion_estimator) = 0;
1766
1767 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
1768 const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,
1769 ID3D12ProtectedResourceSession *protected_resource_session,
1770 REFIID riid,
1771 void **video_motion_vector_heap) = 0;
1772
1773};
1774#ifdef __CRT_UUID_DECL
1775__CRT_UUID_DECL(ID3D12VideoDevice1, 0x981611ad, 0xa144, 0x4c83, 0x98,0x90, 0xf3,0x0e,0x26,0xd6,0x58,0xab)
1776#endif
1777#else
1778typedef struct ID3D12VideoDevice1Vtbl {
1779 BEGIN_INTERFACE
1780
1781 /*** IUnknown methods ***/
1782 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1783 ID3D12VideoDevice1 *This,
1784 REFIID riid,
1785 void **ppvObject);
1786
1787 ULONG (STDMETHODCALLTYPE *AddRef)(
1788 ID3D12VideoDevice1 *This);
1789
1790 ULONG (STDMETHODCALLTYPE *Release)(
1791 ID3D12VideoDevice1 *This);
1792
1793 /*** ID3D12VideoDevice methods ***/
1794 HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
1795 ID3D12VideoDevice1 *This,
1796 D3D12_FEATURE_VIDEO feature_video,
1797 void *feature_support_data,
1798 UINT feature_support_data_size);
1799
1800 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
1801 ID3D12VideoDevice1 *This,
1802 const D3D12_VIDEO_DECODER_DESC *desc,
1803 REFIID riid,
1804 void **video_decoder);
1805
1806 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap)(
1807 ID3D12VideoDevice1 *This,
1808 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
1809 REFIID riid,
1810 void **video_decoder_heap);
1811
1812 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
1813 ID3D12VideoDevice1 *This,
1814 UINT node_mask,
1815 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
1816 UINT input_stream_descs_count,
1817 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
1818 REFIID riid,
1819 void **video_processor);
1820
1821 /*** ID3D12VideoDevice1 methods ***/
1822 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionEstimator)(
1823 ID3D12VideoDevice1 *This,
1824 const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,
1825 ID3D12ProtectedResourceSession *protected_resource_session,
1826 REFIID riid,
1827 void **video_motion_estimator);
1828
1829 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionVectorHeap)(
1830 ID3D12VideoDevice1 *This,
1831 const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,
1832 ID3D12ProtectedResourceSession *protected_resource_session,
1833 REFIID riid,
1834 void **video_motion_vector_heap);
1835
1836 END_INTERFACE
1837} ID3D12VideoDevice1Vtbl;
1838
1839interface ID3D12VideoDevice1 {
1840 CONST_VTBL ID3D12VideoDevice1Vtbl* lpVtbl;
1841};
1842
1843#ifdef COBJMACROS
1844#ifndef WIDL_C_INLINE_WRAPPERS
1845/*** IUnknown methods ***/
1846#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1847#define ID3D12VideoDevice1_AddRef(This) (This)->lpVtbl->AddRef(This)
1848#define ID3D12VideoDevice1_Release(This) (This)->lpVtbl->Release(This)
1849/*** ID3D12VideoDevice methods ***/
1850#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)
1851#define ID3D12VideoDevice1_CreateVideoDecoder(This,desc,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder)
1852#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap) (This)->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap)
1853#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)
1854/*** ID3D12VideoDevice1 methods ***/
1855#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator) (This)->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator)
1856#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)
1857#else
1858/*** IUnknown methods ***/
1859static inline HRESULT ID3D12VideoDevice1_QueryInterface(ID3D12VideoDevice1* This,REFIID riid,void **ppvObject) {
1860 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1861}
1862static inline ULONG ID3D12VideoDevice1_AddRef(ID3D12VideoDevice1* This) {
1863 return This->lpVtbl->AddRef(This);
1864}
1865static inline ULONG ID3D12VideoDevice1_Release(ID3D12VideoDevice1* This) {
1866 return This->lpVtbl->Release(This);
1867}
1868/*** ID3D12VideoDevice methods ***/
1869static inline HRESULT ID3D12VideoDevice1_CheckFeatureSupport(ID3D12VideoDevice1* This,D3D12_FEATURE_VIDEO feature_video,void *feature_support_data,UINT feature_support_data_size) {
1870 return This->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size);
1871}
1872static inline HRESULT ID3D12VideoDevice1_CreateVideoDecoder(ID3D12VideoDevice1* This,const D3D12_VIDEO_DECODER_DESC *desc,REFIID riid,void **video_decoder) {
1873 return This->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder);
1874}
1875static inline HRESULT ID3D12VideoDevice1_CreateVideoDecoderHeap(ID3D12VideoDevice1* This,const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,REFIID riid,void **video_decoder_heap) {
1876 return This->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap);
1877}
1878static 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) {
1879 return This->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor);
1880}
1881/*** ID3D12VideoDevice1 methods ***/
1882static inline HRESULT ID3D12VideoDevice1_CreateVideoMotionEstimator(ID3D12VideoDevice1* This,const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_motion_estimator) {
1883 return This->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator);
1884}
1885static 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) {
1886 return This->lpVtbl->CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap);
1887}
1888#endif
1889#endif
1890
1891#endif
1892
1893
1894#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
1895
1896typedef struct D3D12_RESOURCE_COORDINATE {
1897 UINT64 X;
1898 UINT Y;
1899 UINT Z;
1900 UINT SubresourceIndex;
1901} D3D12_RESOURCE_COORDINATE;
1902typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT {
1903 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
1904} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
1905typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT {
1906 ID3D12Resource *pInputTexture2D;
1907 UINT InputSubresourceIndex;
1908 ID3D12Resource *pReferenceTexture2D;
1909 UINT ReferenceSubresourceIndex;
1910 ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
1911} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
1912typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT {
1913 ID3D12Resource *pMotionVectorTexture2D;
1914 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
1915} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
1916typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT {
1917 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
1918 UINT PixelWidth;
1919 UINT PixelHeight;
1920} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
1921/*****************************************************************************
1922 * ID3D12VideoEncodeCommandList interface
1923 */
1924#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
1925#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
1926
1927DEFINE_GUID(IID_ID3D12VideoEncodeCommandList, 0x8455293a, 0x0cbd, 0x4831, 0x9b,0x39, 0xfb,0xdb,0xab,0x72,0x47,0x23);
1928#if defined(__cplusplus) && !defined(CINTERFACE)
1929MIDL_INTERFACE("8455293a-0cbd-4831-9b39-fbdbab724723")
1930ID3D12VideoEncodeCommandList : public ID3D12CommandList
1931{
1932 virtual HRESULT STDMETHODCALLTYPE Close(
1933 ) = 0;
1934
1935 virtual HRESULT STDMETHODCALLTYPE Reset(
1936 ID3D12CommandAllocator *allocator) = 0;
1937
1938 virtual void STDMETHODCALLTYPE ClearState(
1939 ) = 0;
1940
1941 virtual void STDMETHODCALLTYPE ResourceBarrier(
1942 UINT barriers_count,
1943 const D3D12_RESOURCE_BARRIER *barriers) = 0;
1944
1945 virtual void STDMETHODCALLTYPE DiscardResource(
1946 ID3D12Resource *resource,
1947 const D3D12_DISCARD_REGION *region) = 0;
1948
1949 virtual void STDMETHODCALLTYPE BeginQuery(
1950 ID3D12QueryHeap *query_heap,
1951 D3D12_QUERY_TYPE type,
1952 UINT index) = 0;
1953
1954 virtual void STDMETHODCALLTYPE EndQuery(
1955 ID3D12QueryHeap *query_heap,
1956 D3D12_QUERY_TYPE type,
1957 UINT index) = 0;
1958
1959 virtual void STDMETHODCALLTYPE ResolveQueryData(
1960 ID3D12QueryHeap *query_heap,
1961 D3D12_QUERY_TYPE type,
1962 UINT start_index,
1963 UINT queries_count,
1964 ID3D12Resource *destination_buffer,
1965 UINT64 aligned_destination_buffer_offset) = 0;
1966
1967 virtual void STDMETHODCALLTYPE SetPredication(
1968 ID3D12Resource *buffer,
1969 UINT64 aligned_buffer_offset,
1970 D3D12_PREDICATION_OP operation) = 0;
1971
1972 virtual void STDMETHODCALLTYPE SetMarker(
1973 UINT metadata,
1974 const void *data,
1975 UINT size) = 0;
1976
1977 virtual void STDMETHODCALLTYPE BeginEvent(
1978 UINT metadata,
1979 const void *data,
1980 UINT size) = 0;
1981
1982 virtual void STDMETHODCALLTYPE EndEvent(
1983 ) = 0;
1984
1985 virtual void STDMETHODCALLTYPE EstimateMotion(
1986 ID3D12VideoMotionEstimator *motion_estimator,
1987 const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,
1988 const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments) = 0;
1989
1990 virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
1991 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,
1992 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments) = 0;
1993
1994 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1995 UINT count,
1996 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
1997 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) = 0;
1998
1999 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
2000 ID3D12ProtectedResourceSession *protected_resource_session) = 0;
2001
2002};
2003#ifdef __CRT_UUID_DECL
2004__CRT_UUID_DECL(ID3D12VideoEncodeCommandList, 0x8455293a, 0x0cbd, 0x4831, 0x9b,0x39, 0xfb,0xdb,0xab,0x72,0x47,0x23)
2005#endif
2006#else
2007typedef struct ID3D12VideoEncodeCommandListVtbl {
2008 BEGIN_INTERFACE
2009
2010 /*** IUnknown methods ***/
2011 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2012 ID3D12VideoEncodeCommandList *This,
2013 REFIID riid,
2014 void **ppvObject);
2015
2016 ULONG (STDMETHODCALLTYPE *AddRef)(
2017 ID3D12VideoEncodeCommandList *This);
2018
2019 ULONG (STDMETHODCALLTYPE *Release)(
2020 ID3D12VideoEncodeCommandList *This);
2021
2022 /*** ID3D12Object methods ***/
2023 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
2024 ID3D12VideoEncodeCommandList *This,
2025 REFGUID guid,
2026 UINT *data_size,
2027 void *data);
2028
2029 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
2030 ID3D12VideoEncodeCommandList *This,
2031 REFGUID guid,
2032 UINT data_size,
2033 const void *data);
2034
2035 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
2036 ID3D12VideoEncodeCommandList *This,
2037 REFGUID guid,
2038 const IUnknown *data);
2039
2040 HRESULT (STDMETHODCALLTYPE *SetName)(
2041 ID3D12VideoEncodeCommandList *This,
2042 const WCHAR *name);
2043
2044 /*** ID3D12DeviceChild methods ***/
2045 HRESULT (STDMETHODCALLTYPE *GetDevice)(
2046 ID3D12VideoEncodeCommandList *This,
2047 REFIID riid,
2048 void **device);
2049
2050 /*** ID3D12CommandList methods ***/
2051 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
2052 ID3D12VideoEncodeCommandList *This);
2053
2054 /*** ID3D12VideoEncodeCommandList methods ***/
2055 HRESULT (STDMETHODCALLTYPE *Close)(
2056 ID3D12VideoEncodeCommandList *This);
2057
2058 HRESULT (STDMETHODCALLTYPE *Reset)(
2059 ID3D12VideoEncodeCommandList *This,
2060 ID3D12CommandAllocator *allocator);
2061
2062 void (STDMETHODCALLTYPE *ClearState)(
2063 ID3D12VideoEncodeCommandList *This);
2064
2065 void (STDMETHODCALLTYPE *ResourceBarrier)(
2066 ID3D12VideoEncodeCommandList *This,
2067 UINT barriers_count,
2068 const D3D12_RESOURCE_BARRIER *barriers);
2069
2070 void (STDMETHODCALLTYPE *DiscardResource)(
2071 ID3D12VideoEncodeCommandList *This,
2072 ID3D12Resource *resource,
2073 const D3D12_DISCARD_REGION *region);
2074
2075 void (STDMETHODCALLTYPE *BeginQuery)(
2076 ID3D12VideoEncodeCommandList *This,
2077 ID3D12QueryHeap *query_heap,
2078 D3D12_QUERY_TYPE type,
2079 UINT index);
2080
2081 void (STDMETHODCALLTYPE *EndQuery)(
2082 ID3D12VideoEncodeCommandList *This,
2083 ID3D12QueryHeap *query_heap,
2084 D3D12_QUERY_TYPE type,
2085 UINT index);
2086
2087 void (STDMETHODCALLTYPE *ResolveQueryData)(
2088 ID3D12VideoEncodeCommandList *This,
2089 ID3D12QueryHeap *query_heap,
2090 D3D12_QUERY_TYPE type,
2091 UINT start_index,
2092 UINT queries_count,
2093 ID3D12Resource *destination_buffer,
2094 UINT64 aligned_destination_buffer_offset);
2095
2096 void (STDMETHODCALLTYPE *SetPredication)(
2097 ID3D12VideoEncodeCommandList *This,
2098 ID3D12Resource *buffer,
2099 UINT64 aligned_buffer_offset,
2100 D3D12_PREDICATION_OP operation);
2101
2102 void (STDMETHODCALLTYPE *SetMarker)(
2103 ID3D12VideoEncodeCommandList *This,
2104 UINT metadata,
2105 const void *data,
2106 UINT size);
2107
2108 void (STDMETHODCALLTYPE *BeginEvent)(
2109 ID3D12VideoEncodeCommandList *This,
2110 UINT metadata,
2111 const void *data,
2112 UINT size);
2113
2114 void (STDMETHODCALLTYPE *EndEvent)(
2115 ID3D12VideoEncodeCommandList *This);
2116
2117 void (STDMETHODCALLTYPE *EstimateMotion)(
2118 ID3D12VideoEncodeCommandList *This,
2119 ID3D12VideoMotionEstimator *motion_estimator,
2120 const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,
2121 const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments);
2122
2123 void (STDMETHODCALLTYPE *ResolveMotionVectorHeap)(
2124 ID3D12VideoEncodeCommandList *This,
2125 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,
2126 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments);
2127
2128 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
2129 ID3D12VideoEncodeCommandList *This,
2130 UINT count,
2131 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
2132 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
2133
2134 void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
2135 ID3D12VideoEncodeCommandList *This,
2136 ID3D12ProtectedResourceSession *protected_resource_session);
2137
2138 END_INTERFACE
2139} ID3D12VideoEncodeCommandListVtbl;
2140
2141interface ID3D12VideoEncodeCommandList {
2142 CONST_VTBL ID3D12VideoEncodeCommandListVtbl* lpVtbl;
2143};
2144
2145#ifdef COBJMACROS
2146#ifndef WIDL_C_INLINE_WRAPPERS
2147/*** IUnknown methods ***/
2148#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2149#define ID3D12VideoEncodeCommandList_AddRef(This) (This)->lpVtbl->AddRef(This)
2150#define ID3D12VideoEncodeCommandList_Release(This) (This)->lpVtbl->Release(This)
2151/*** ID3D12Object methods ***/
2152#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
2153#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
2154#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
2155#define ID3D12VideoEncodeCommandList_SetName(This,name) (This)->lpVtbl->SetName(This,name)
2156/*** ID3D12DeviceChild methods ***/
2157#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
2158/*** ID3D12CommandList methods ***/
2159#define ID3D12VideoEncodeCommandList_GetType(This) (This)->lpVtbl->GetType(This)
2160/*** ID3D12VideoEncodeCommandList methods ***/
2161#define ID3D12VideoEncodeCommandList_Close(This) (This)->lpVtbl->Close(This)
2162#define ID3D12VideoEncodeCommandList_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
2163#define ID3D12VideoEncodeCommandList_ClearState(This) (This)->lpVtbl->ClearState(This)
2164#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,barriers_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barriers_count,barriers)
2165#define ID3D12VideoEncodeCommandList_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
2166#define ID3D12VideoEncodeCommandList_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
2167#define ID3D12VideoEncodeCommandList_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
2168#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)
2169#define ID3D12VideoEncodeCommandList_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
2170#define ID3D12VideoEncodeCommandList_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
2171#define ID3D12VideoEncodeCommandList_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
2172#define ID3D12VideoEncodeCommandList_EndEvent(This) (This)->lpVtbl->EndEvent(This)
2173#define ID3D12VideoEncodeCommandList_EstimateMotion(This,motion_estimator,output_arguments,input_arguments) (This)->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments)
2174#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,output_arguments,input_arguments) (This)->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments)
2175#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
2176#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
2177#else
2178/*** IUnknown methods ***/
2179static inline HRESULT ID3D12VideoEncodeCommandList_QueryInterface(ID3D12VideoEncodeCommandList* This,REFIID riid,void **ppvObject) {
2180 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2181}
2182static inline ULONG ID3D12VideoEncodeCommandList_AddRef(ID3D12VideoEncodeCommandList* This) {
2183 return This->lpVtbl->AddRef(This);
2184}
2185static inline ULONG ID3D12VideoEncodeCommandList_Release(ID3D12VideoEncodeCommandList* This) {
2186 return This->lpVtbl->Release(This);
2187}
2188/*** ID3D12Object methods ***/
2189static inline HRESULT ID3D12VideoEncodeCommandList_GetPrivateData(ID3D12VideoEncodeCommandList* This,REFGUID guid,UINT *data_size,void *data) {
2190 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
2191}
2192static inline HRESULT ID3D12VideoEncodeCommandList_SetPrivateData(ID3D12VideoEncodeCommandList* This,REFGUID guid,UINT data_size,const void *data) {
2193 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
2194}
2195static inline HRESULT ID3D12VideoEncodeCommandList_SetPrivateDataInterface(ID3D12VideoEncodeCommandList* This,REFGUID guid,const IUnknown *data) {
2196 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
2197}
2198static inline HRESULT ID3D12VideoEncodeCommandList_SetName(ID3D12VideoEncodeCommandList* This,const WCHAR *name) {
2199 return This->lpVtbl->SetName(This,name);
2200}
2201/*** ID3D12DeviceChild methods ***/
2202static inline HRESULT ID3D12VideoEncodeCommandList_GetDevice(ID3D12VideoEncodeCommandList* This,REFIID riid,void **device) {
2203 return This->lpVtbl->GetDevice(This,riid,device);
2204}
2205/*** ID3D12CommandList methods ***/
2206static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoEncodeCommandList_GetType(ID3D12VideoEncodeCommandList* This) {
2207 return This->lpVtbl->GetType(This);
2208}
2209/*** ID3D12VideoEncodeCommandList methods ***/
2210static inline HRESULT ID3D12VideoEncodeCommandList_Close(ID3D12VideoEncodeCommandList* This) {
2211 return This->lpVtbl->Close(This);
2212}
2213static inline HRESULT ID3D12VideoEncodeCommandList_Reset(ID3D12VideoEncodeCommandList* This,ID3D12CommandAllocator *allocator) {
2214 return This->lpVtbl->Reset(This,allocator);
2215}
2216static inline void ID3D12VideoEncodeCommandList_ClearState(ID3D12VideoEncodeCommandList* This) {
2217 This->lpVtbl->ClearState(This);
2218}
2219static inline void ID3D12VideoEncodeCommandList_ResourceBarrier(ID3D12VideoEncodeCommandList* This,UINT barriers_count,const D3D12_RESOURCE_BARRIER *barriers) {
2220 This->lpVtbl->ResourceBarrier(This,barriers_count,barriers);
2221}
2222static inline void ID3D12VideoEncodeCommandList_DiscardResource(ID3D12VideoEncodeCommandList* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
2223 This->lpVtbl->DiscardResource(This,resource,region);
2224}
2225static inline void ID3D12VideoEncodeCommandList_BeginQuery(ID3D12VideoEncodeCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
2226 This->lpVtbl->BeginQuery(This,query_heap,type,index);
2227}
2228static inline void ID3D12VideoEncodeCommandList_EndQuery(ID3D12VideoEncodeCommandList* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
2229 This->lpVtbl->EndQuery(This,query_heap,type,index);
2230}
2231static 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) {
2232 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset);
2233}
2234static inline void ID3D12VideoEncodeCommandList_SetPredication(ID3D12VideoEncodeCommandList* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
2235 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
2236}
2237static inline void ID3D12VideoEncodeCommandList_SetMarker(ID3D12VideoEncodeCommandList* This,UINT metadata,const void *data,UINT size) {
2238 This->lpVtbl->SetMarker(This,metadata,data,size);
2239}
2240static inline void ID3D12VideoEncodeCommandList_BeginEvent(ID3D12VideoEncodeCommandList* This,UINT metadata,const void *data,UINT size) {
2241 This->lpVtbl->BeginEvent(This,metadata,data,size);
2242}
2243static inline void ID3D12VideoEncodeCommandList_EndEvent(ID3D12VideoEncodeCommandList* This) {
2244 This->lpVtbl->EndEvent(This);
2245}
2246static 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) {
2247 This->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments);
2248}
2249static 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) {
2250 This->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments);
2251}
2252static inline void ID3D12VideoEncodeCommandList_WriteBufferImmediate(ID3D12VideoEncodeCommandList* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
2253 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
2254}
2255static inline void ID3D12VideoEncodeCommandList_SetProtectedResourceSession(ID3D12VideoEncodeCommandList* This,ID3D12ProtectedResourceSession *protected_resource_session) {
2256 This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
2257}
2258#endif
2259#endif
2260
2261#endif
2262
2263
2264#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
2265
2266typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC {
2267 UINT NodeMask;
2268 GUID CommandId;
2269} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
2270/*****************************************************************************
2271 * ID3D12VideoExtensionCommand interface
2272 */
2273#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
2274#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
2275
2276DEFINE_GUID(IID_ID3D12VideoExtensionCommand, 0x554e41e8, 0xae8e, 0x4a8c, 0xb7,0xd2, 0x5b,0x4f,0x27,0x4a,0x30,0xe4);
2277#if defined(__cplusplus) && !defined(CINTERFACE)
2278MIDL_INTERFACE("554e41e8-ae8e-4a8c-b7d2-5b4f274a30e4")
2279ID3D12VideoExtensionCommand : public ID3D12Pageable
2280{
2281#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
2282 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC* STDMETHODCALLTYPE GetDesc(
2283 D3D12_VIDEO_EXTENSION_COMMAND_DESC *__ret) = 0;
2284 D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc(
2285 )
2286 {
2287 D3D12_VIDEO_EXTENSION_COMMAND_DESC __ret;
2288 return *GetDesc(&__ret);
2289 }
2290#else
2291 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc(
2292 ) = 0;
2293#endif
2294
2295 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2296 REFIID riid,
2297 void **protected_session) = 0;
2298
2299};
2300#ifdef __CRT_UUID_DECL
2301__CRT_UUID_DECL(ID3D12VideoExtensionCommand, 0x554e41e8, 0xae8e, 0x4a8c, 0xb7,0xd2, 0x5b,0x4f,0x27,0x4a,0x30,0xe4)
2302#endif
2303#else
2304typedef struct ID3D12VideoExtensionCommandVtbl {
2305 BEGIN_INTERFACE
2306
2307 /*** IUnknown methods ***/
2308 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2309 ID3D12VideoExtensionCommand *This,
2310 REFIID riid,
2311 void **ppvObject);
2312
2313 ULONG (STDMETHODCALLTYPE *AddRef)(
2314 ID3D12VideoExtensionCommand *This);
2315
2316 ULONG (STDMETHODCALLTYPE *Release)(
2317 ID3D12VideoExtensionCommand *This);
2318
2319 /*** ID3D12Object methods ***/
2320 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
2321 ID3D12VideoExtensionCommand *This,
2322 REFGUID guid,
2323 UINT *data_size,
2324 void *data);
2325
2326 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
2327 ID3D12VideoExtensionCommand *This,
2328 REFGUID guid,
2329 UINT data_size,
2330 const void *data);
2331
2332 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
2333 ID3D12VideoExtensionCommand *This,
2334 REFGUID guid,
2335 const IUnknown *data);
2336
2337 HRESULT (STDMETHODCALLTYPE *SetName)(
2338 ID3D12VideoExtensionCommand *This,
2339 const WCHAR *name);
2340
2341 /*** ID3D12DeviceChild methods ***/
2342 HRESULT (STDMETHODCALLTYPE *GetDevice)(
2343 ID3D12VideoExtensionCommand *This,
2344 REFIID riid,
2345 void **device);
2346
2347 /*** ID3D12VideoExtensionCommand methods ***/
2348 D3D12_VIDEO_EXTENSION_COMMAND_DESC * (STDMETHODCALLTYPE *GetDesc)(
2349 ID3D12VideoExtensionCommand *This,
2350 D3D12_VIDEO_EXTENSION_COMMAND_DESC *__ret);
2351
2352 HRESULT (STDMETHODCALLTYPE *GetProtectedResourceSession)(
2353 ID3D12VideoExtensionCommand *This,
2354 REFIID riid,
2355 void **protected_session);
2356
2357 END_INTERFACE
2358} ID3D12VideoExtensionCommandVtbl;
2359
2360interface ID3D12VideoExtensionCommand {
2361 CONST_VTBL ID3D12VideoExtensionCommandVtbl* lpVtbl;
2362};
2363
2364#ifdef COBJMACROS
2365#ifndef WIDL_C_INLINE_WRAPPERS
2366/*** IUnknown methods ***/
2367#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2368#define ID3D12VideoExtensionCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
2369#define ID3D12VideoExtensionCommand_Release(This) (This)->lpVtbl->Release(This)
2370/*** ID3D12Object methods ***/
2371#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
2372#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
2373#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
2374#define ID3D12VideoExtensionCommand_SetName(This,name) (This)->lpVtbl->SetName(This,name)
2375/*** ID3D12DeviceChild methods ***/
2376#define ID3D12VideoExtensionCommand_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
2377/*** ID3D12VideoExtensionCommand methods ***/
2378#define ID3D12VideoExtensionCommand_GetDesc(This) ID3D12VideoExtensionCommand_GetDesc_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
2379#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,protected_session) (This)->lpVtbl->GetProtectedResourceSession(This,riid,protected_session)
2380#else
2381/*** IUnknown methods ***/
2382static inline HRESULT ID3D12VideoExtensionCommand_QueryInterface(ID3D12VideoExtensionCommand* This,REFIID riid,void **ppvObject) {
2383 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2384}
2385static inline ULONG ID3D12VideoExtensionCommand_AddRef(ID3D12VideoExtensionCommand* This) {
2386 return This->lpVtbl->AddRef(This);
2387}
2388static inline ULONG ID3D12VideoExtensionCommand_Release(ID3D12VideoExtensionCommand* This) {
2389 return This->lpVtbl->Release(This);
2390}
2391/*** ID3D12Object methods ***/
2392static inline HRESULT ID3D12VideoExtensionCommand_GetPrivateData(ID3D12VideoExtensionCommand* This,REFGUID guid,UINT *data_size,void *data) {
2393 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
2394}
2395static inline HRESULT ID3D12VideoExtensionCommand_SetPrivateData(ID3D12VideoExtensionCommand* This,REFGUID guid,UINT data_size,const void *data) {
2396 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
2397}
2398static inline HRESULT ID3D12VideoExtensionCommand_SetPrivateDataInterface(ID3D12VideoExtensionCommand* This,REFGUID guid,const IUnknown *data) {
2399 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
2400}
2401static inline HRESULT ID3D12VideoExtensionCommand_SetName(ID3D12VideoExtensionCommand* This,const WCHAR *name) {
2402 return This->lpVtbl->SetName(This,name);
2403}
2404/*** ID3D12DeviceChild methods ***/
2405static inline HRESULT ID3D12VideoExtensionCommand_GetDevice(ID3D12VideoExtensionCommand* This,REFIID riid,void **device) {
2406 return This->lpVtbl->GetDevice(This,riid,device);
2407}
2408/*** ID3D12VideoExtensionCommand methods ***/
2409static inline D3D12_VIDEO_EXTENSION_COMMAND_DESC ID3D12VideoExtensionCommand_GetDesc(ID3D12VideoExtensionCommand* This) {
2410 D3D12_VIDEO_EXTENSION_COMMAND_DESC __ret;
2411 return *This->lpVtbl->GetDesc(This,&__ret);
2412}
2413static inline HRESULT ID3D12VideoExtensionCommand_GetProtectedResourceSession(ID3D12VideoExtensionCommand* This,REFIID riid,void **protected_session) {
2414 return This->lpVtbl->GetProtectedResourceSession(This,riid,protected_session);
2415}
2416#endif
2417#endif
2418
2419#endif
2420
2421
2422#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
2423
2424/*****************************************************************************
2425 * ID3D12VideoDevice2 interface
2426 */
2427#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
2428#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
2429
2430DEFINE_GUID(IID_ID3D12VideoDevice2, 0xf019ac49, 0xf838, 0x4a95, 0x9b,0x17, 0x57,0x94,0x37,0xc8,0xf5,0x13);
2431#if defined(__cplusplus) && !defined(CINTERFACE)
2432MIDL_INTERFACE("f019ac49-f838-4a95-9b17-579437c8f513")
2433ID3D12VideoDevice2 : public ID3D12VideoDevice1
2434{
2435 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
2436 const D3D12_VIDEO_DECODER_DESC *desc,
2437 ID3D12ProtectedResourceSession *protected_resource_session,
2438 REFIID riid,
2439 void **video_decoder) = 0;
2440
2441 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
2442 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
2443 ID3D12ProtectedResourceSession *protected_resource_session,
2444 REFIID riid,
2445 void **video_decoder_heap) = 0;
2446
2447 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
2448 UINT node_mask,
2449 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
2450 UINT input_stream_descs_count,
2451 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
2452 ID3D12ProtectedResourceSession *protected_resource_session,
2453 REFIID riid,
2454 void **video_processor) = 0;
2455
2456 virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
2457 const D3D12_VIDEO_EXTENSION_COMMAND_DESC *desc,
2458 const void *creation_parameters,
2459 SIZE_T creation_parameters_data_size_in_bytes,
2460 ID3D12ProtectedResourceSession *protected_resource_session,
2461 REFIID riid,
2462 void **video_extension_command) = 0;
2463
2464 virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
2465 ID3D12VideoExtensionCommand *extension_command,
2466 const void *execution_parameters,
2467 SIZE_T execution_parameters_size_in_bytes,
2468 void *output_data,
2469 SIZE_T output_data_size_in_bytes) = 0;
2470
2471};
2472#ifdef __CRT_UUID_DECL
2473__CRT_UUID_DECL(ID3D12VideoDevice2, 0xf019ac49, 0xf838, 0x4a95, 0x9b,0x17, 0x57,0x94,0x37,0xc8,0xf5,0x13)
2474#endif
2475#else
2476typedef struct ID3D12VideoDevice2Vtbl {
2477 BEGIN_INTERFACE
2478
2479 /*** IUnknown methods ***/
2480 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2481 ID3D12VideoDevice2 *This,
2482 REFIID riid,
2483 void **ppvObject);
2484
2485 ULONG (STDMETHODCALLTYPE *AddRef)(
2486 ID3D12VideoDevice2 *This);
2487
2488 ULONG (STDMETHODCALLTYPE *Release)(
2489 ID3D12VideoDevice2 *This);
2490
2491 /*** ID3D12VideoDevice methods ***/
2492 HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
2493 ID3D12VideoDevice2 *This,
2494 D3D12_FEATURE_VIDEO feature_video,
2495 void *feature_support_data,
2496 UINT feature_support_data_size);
2497
2498 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
2499 ID3D12VideoDevice2 *This,
2500 const D3D12_VIDEO_DECODER_DESC *desc,
2501 REFIID riid,
2502 void **video_decoder);
2503
2504 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap)(
2505 ID3D12VideoDevice2 *This,
2506 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
2507 REFIID riid,
2508 void **video_decoder_heap);
2509
2510 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
2511 ID3D12VideoDevice2 *This,
2512 UINT node_mask,
2513 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
2514 UINT input_stream_descs_count,
2515 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
2516 REFIID riid,
2517 void **video_processor);
2518
2519 /*** ID3D12VideoDevice1 methods ***/
2520 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionEstimator)(
2521 ID3D12VideoDevice2 *This,
2522 const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,
2523 ID3D12ProtectedResourceSession *protected_resource_session,
2524 REFIID riid,
2525 void **video_motion_estimator);
2526
2527 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionVectorHeap)(
2528 ID3D12VideoDevice2 *This,
2529 const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,
2530 ID3D12ProtectedResourceSession *protected_resource_session,
2531 REFIID riid,
2532 void **video_motion_vector_heap);
2533
2534 /*** ID3D12VideoDevice2 methods ***/
2535 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder1)(
2536 ID3D12VideoDevice2 *This,
2537 const D3D12_VIDEO_DECODER_DESC *desc,
2538 ID3D12ProtectedResourceSession *protected_resource_session,
2539 REFIID riid,
2540 void **video_decoder);
2541
2542 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap1)(
2543 ID3D12VideoDevice2 *This,
2544 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
2545 ID3D12ProtectedResourceSession *protected_resource_session,
2546 REFIID riid,
2547 void **video_decoder_heap);
2548
2549 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor1)(
2550 ID3D12VideoDevice2 *This,
2551 UINT node_mask,
2552 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
2553 UINT input_stream_descs_count,
2554 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
2555 ID3D12ProtectedResourceSession *protected_resource_session,
2556 REFIID riid,
2557 void **video_processor);
2558
2559 HRESULT (STDMETHODCALLTYPE *CreateVideoExtensionCommand)(
2560 ID3D12VideoDevice2 *This,
2561 const D3D12_VIDEO_EXTENSION_COMMAND_DESC *desc,
2562 const void *creation_parameters,
2563 SIZE_T creation_parameters_data_size_in_bytes,
2564 ID3D12ProtectedResourceSession *protected_resource_session,
2565 REFIID riid,
2566 void **video_extension_command);
2567
2568 HRESULT (STDMETHODCALLTYPE *ExecuteExtensionCommand)(
2569 ID3D12VideoDevice2 *This,
2570 ID3D12VideoExtensionCommand *extension_command,
2571 const void *execution_parameters,
2572 SIZE_T execution_parameters_size_in_bytes,
2573 void *output_data,
2574 SIZE_T output_data_size_in_bytes);
2575
2576 END_INTERFACE
2577} ID3D12VideoDevice2Vtbl;
2578
2579interface ID3D12VideoDevice2 {
2580 CONST_VTBL ID3D12VideoDevice2Vtbl* lpVtbl;
2581};
2582
2583#ifdef COBJMACROS
2584#ifndef WIDL_C_INLINE_WRAPPERS
2585/*** IUnknown methods ***/
2586#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2587#define ID3D12VideoDevice2_AddRef(This) (This)->lpVtbl->AddRef(This)
2588#define ID3D12VideoDevice2_Release(This) (This)->lpVtbl->Release(This)
2589/*** ID3D12VideoDevice methods ***/
2590#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)
2591#define ID3D12VideoDevice2_CreateVideoDecoder(This,desc,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder)
2592#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap) (This)->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap)
2593#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)
2594/*** ID3D12VideoDevice1 methods ***/
2595#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator) (This)->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator)
2596#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)
2597/*** ID3D12VideoDevice2 methods ***/
2598#define ID3D12VideoDevice2_CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder)
2599#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)
2600#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)
2601#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)
2602#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)
2603#else
2604/*** IUnknown methods ***/
2605static inline HRESULT ID3D12VideoDevice2_QueryInterface(ID3D12VideoDevice2* This,REFIID riid,void **ppvObject) {
2606 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2607}
2608static inline ULONG ID3D12VideoDevice2_AddRef(ID3D12VideoDevice2* This) {
2609 return This->lpVtbl->AddRef(This);
2610}
2611static inline ULONG ID3D12VideoDevice2_Release(ID3D12VideoDevice2* This) {
2612 return This->lpVtbl->Release(This);
2613}
2614/*** ID3D12VideoDevice methods ***/
2615static inline HRESULT ID3D12VideoDevice2_CheckFeatureSupport(ID3D12VideoDevice2* This,D3D12_FEATURE_VIDEO feature_video,void *feature_support_data,UINT feature_support_data_size) {
2616 return This->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size);
2617}
2618static inline HRESULT ID3D12VideoDevice2_CreateVideoDecoder(ID3D12VideoDevice2* This,const D3D12_VIDEO_DECODER_DESC *desc,REFIID riid,void **video_decoder) {
2619 return This->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder);
2620}
2621static inline HRESULT ID3D12VideoDevice2_CreateVideoDecoderHeap(ID3D12VideoDevice2* This,const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,REFIID riid,void **video_decoder_heap) {
2622 return This->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap);
2623}
2624static 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) {
2625 return This->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor);
2626}
2627/*** ID3D12VideoDevice1 methods ***/
2628static inline HRESULT ID3D12VideoDevice2_CreateVideoMotionEstimator(ID3D12VideoDevice2* This,const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_motion_estimator) {
2629 return This->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator);
2630}
2631static 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) {
2632 return This->lpVtbl->CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap);
2633}
2634/*** ID3D12VideoDevice2 methods ***/
2635static inline HRESULT ID3D12VideoDevice2_CreateVideoDecoder1(ID3D12VideoDevice2* This,const D3D12_VIDEO_DECODER_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_decoder) {
2636 return This->lpVtbl->CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder);
2637}
2638static 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) {
2639 return This->lpVtbl->CreateVideoDecoderHeap1(This,video_decoder_heap_desc,protected_resource_session,riid,video_decoder_heap);
2640}
2641static 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) {
2642 return This->lpVtbl->CreateVideoProcessor1(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,protected_resource_session,riid,video_processor);
2643}
2644static 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) {
2645 return This->lpVtbl->CreateVideoExtensionCommand(This,desc,creation_parameters,creation_parameters_data_size_in_bytes,protected_resource_session,riid,video_extension_command);
2646}
2647static 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) {
2648 return This->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes,output_data,output_data_size_in_bytes);
2649}
2650#endif
2651#endif
2652
2653#endif
2654
2655
2656#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
2657
2658/*****************************************************************************
2659 * ID3D12VideoEncodeCommandList1 interface
2660 */
2661#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
2662#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
2663
2664DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1, 0x94971eca, 0x2bdb, 0x4769, 0x88,0xcf, 0x36,0x75,0xea,0x75,0x7e,0xbc);
2665#if defined(__cplusplus) && !defined(CINTERFACE)
2666MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
2667ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
2668{
2669 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
2670 ID3D12VideoExtensionCommand *extension_command,
2671 const void *initialization_parameters,
2672 SIZE_T initialization_parameters_size_in_bytes) = 0;
2673
2674 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
2675 ID3D12VideoExtensionCommand *extension_command,
2676 const void *execution_parameters,
2677 SIZE_T execution_parameters_size_in_bytes) = 0;
2678
2679};
2680#ifdef __CRT_UUID_DECL
2681__CRT_UUID_DECL(ID3D12VideoEncodeCommandList1, 0x94971eca, 0x2bdb, 0x4769, 0x88,0xcf, 0x36,0x75,0xea,0x75,0x7e,0xbc)
2682#endif
2683#else
2684typedef struct ID3D12VideoEncodeCommandList1Vtbl {
2685 BEGIN_INTERFACE
2686
2687 /*** IUnknown methods ***/
2688 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2689 ID3D12VideoEncodeCommandList1 *This,
2690 REFIID riid,
2691 void **ppvObject);
2692
2693 ULONG (STDMETHODCALLTYPE *AddRef)(
2694 ID3D12VideoEncodeCommandList1 *This);
2695
2696 ULONG (STDMETHODCALLTYPE *Release)(
2697 ID3D12VideoEncodeCommandList1 *This);
2698
2699 /*** ID3D12Object methods ***/
2700 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
2701 ID3D12VideoEncodeCommandList1 *This,
2702 REFGUID guid,
2703 UINT *data_size,
2704 void *data);
2705
2706 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
2707 ID3D12VideoEncodeCommandList1 *This,
2708 REFGUID guid,
2709 UINT data_size,
2710 const void *data);
2711
2712 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
2713 ID3D12VideoEncodeCommandList1 *This,
2714 REFGUID guid,
2715 const IUnknown *data);
2716
2717 HRESULT (STDMETHODCALLTYPE *SetName)(
2718 ID3D12VideoEncodeCommandList1 *This,
2719 const WCHAR *name);
2720
2721 /*** ID3D12DeviceChild methods ***/
2722 HRESULT (STDMETHODCALLTYPE *GetDevice)(
2723 ID3D12VideoEncodeCommandList1 *This,
2724 REFIID riid,
2725 void **device);
2726
2727 /*** ID3D12CommandList methods ***/
2728 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
2729 ID3D12VideoEncodeCommandList1 *This);
2730
2731 /*** ID3D12VideoEncodeCommandList methods ***/
2732 HRESULT (STDMETHODCALLTYPE *Close)(
2733 ID3D12VideoEncodeCommandList1 *This);
2734
2735 HRESULT (STDMETHODCALLTYPE *Reset)(
2736 ID3D12VideoEncodeCommandList1 *This,
2737 ID3D12CommandAllocator *allocator);
2738
2739 void (STDMETHODCALLTYPE *ClearState)(
2740 ID3D12VideoEncodeCommandList1 *This);
2741
2742 void (STDMETHODCALLTYPE *ResourceBarrier)(
2743 ID3D12VideoEncodeCommandList1 *This,
2744 UINT barriers_count,
2745 const D3D12_RESOURCE_BARRIER *barriers);
2746
2747 void (STDMETHODCALLTYPE *DiscardResource)(
2748 ID3D12VideoEncodeCommandList1 *This,
2749 ID3D12Resource *resource,
2750 const D3D12_DISCARD_REGION *region);
2751
2752 void (STDMETHODCALLTYPE *BeginQuery)(
2753 ID3D12VideoEncodeCommandList1 *This,
2754 ID3D12QueryHeap *query_heap,
2755 D3D12_QUERY_TYPE type,
2756 UINT index);
2757
2758 void (STDMETHODCALLTYPE *EndQuery)(
2759 ID3D12VideoEncodeCommandList1 *This,
2760 ID3D12QueryHeap *query_heap,
2761 D3D12_QUERY_TYPE type,
2762 UINT index);
2763
2764 void (STDMETHODCALLTYPE *ResolveQueryData)(
2765 ID3D12VideoEncodeCommandList1 *This,
2766 ID3D12QueryHeap *query_heap,
2767 D3D12_QUERY_TYPE type,
2768 UINT start_index,
2769 UINT queries_count,
2770 ID3D12Resource *destination_buffer,
2771 UINT64 aligned_destination_buffer_offset);
2772
2773 void (STDMETHODCALLTYPE *SetPredication)(
2774 ID3D12VideoEncodeCommandList1 *This,
2775 ID3D12Resource *buffer,
2776 UINT64 aligned_buffer_offset,
2777 D3D12_PREDICATION_OP operation);
2778
2779 void (STDMETHODCALLTYPE *SetMarker)(
2780 ID3D12VideoEncodeCommandList1 *This,
2781 UINT metadata,
2782 const void *data,
2783 UINT size);
2784
2785 void (STDMETHODCALLTYPE *BeginEvent)(
2786 ID3D12VideoEncodeCommandList1 *This,
2787 UINT metadata,
2788 const void *data,
2789 UINT size);
2790
2791 void (STDMETHODCALLTYPE *EndEvent)(
2792 ID3D12VideoEncodeCommandList1 *This);
2793
2794 void (STDMETHODCALLTYPE *EstimateMotion)(
2795 ID3D12VideoEncodeCommandList1 *This,
2796 ID3D12VideoMotionEstimator *motion_estimator,
2797 const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,
2798 const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments);
2799
2800 void (STDMETHODCALLTYPE *ResolveMotionVectorHeap)(
2801 ID3D12VideoEncodeCommandList1 *This,
2802 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,
2803 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments);
2804
2805 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
2806 ID3D12VideoEncodeCommandList1 *This,
2807 UINT count,
2808 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
2809 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
2810
2811 void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
2812 ID3D12VideoEncodeCommandList1 *This,
2813 ID3D12ProtectedResourceSession *protected_resource_session);
2814
2815 /*** ID3D12VideoEncodeCommandList1 methods ***/
2816 void (STDMETHODCALLTYPE *InitializeExtensionCommand)(
2817 ID3D12VideoEncodeCommandList1 *This,
2818 ID3D12VideoExtensionCommand *extension_command,
2819 const void *initialization_parameters,
2820 SIZE_T initialization_parameters_size_in_bytes);
2821
2822 void (STDMETHODCALLTYPE *ExecuteExtensionCommand)(
2823 ID3D12VideoEncodeCommandList1 *This,
2824 ID3D12VideoExtensionCommand *extension_command,
2825 const void *execution_parameters,
2826 SIZE_T execution_parameters_size_in_bytes);
2827
2828 END_INTERFACE
2829} ID3D12VideoEncodeCommandList1Vtbl;
2830
2831interface ID3D12VideoEncodeCommandList1 {
2832 CONST_VTBL ID3D12VideoEncodeCommandList1Vtbl* lpVtbl;
2833};
2834
2835#ifdef COBJMACROS
2836#ifndef WIDL_C_INLINE_WRAPPERS
2837/*** IUnknown methods ***/
2838#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2839#define ID3D12VideoEncodeCommandList1_AddRef(This) (This)->lpVtbl->AddRef(This)
2840#define ID3D12VideoEncodeCommandList1_Release(This) (This)->lpVtbl->Release(This)
2841/*** ID3D12Object methods ***/
2842#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
2843#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
2844#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
2845#define ID3D12VideoEncodeCommandList1_SetName(This,name) (This)->lpVtbl->SetName(This,name)
2846/*** ID3D12DeviceChild methods ***/
2847#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
2848/*** ID3D12CommandList methods ***/
2849#define ID3D12VideoEncodeCommandList1_GetType(This) (This)->lpVtbl->GetType(This)
2850/*** ID3D12VideoEncodeCommandList methods ***/
2851#define ID3D12VideoEncodeCommandList1_Close(This) (This)->lpVtbl->Close(This)
2852#define ID3D12VideoEncodeCommandList1_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
2853#define ID3D12VideoEncodeCommandList1_ClearState(This) (This)->lpVtbl->ClearState(This)
2854#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,barriers_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barriers_count,barriers)
2855#define ID3D12VideoEncodeCommandList1_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
2856#define ID3D12VideoEncodeCommandList1_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
2857#define ID3D12VideoEncodeCommandList1_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
2858#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)
2859#define ID3D12VideoEncodeCommandList1_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
2860#define ID3D12VideoEncodeCommandList1_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
2861#define ID3D12VideoEncodeCommandList1_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
2862#define ID3D12VideoEncodeCommandList1_EndEvent(This) (This)->lpVtbl->EndEvent(This)
2863#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,motion_estimator,output_arguments,input_arguments) (This)->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments)
2864#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,output_arguments,input_arguments) (This)->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments)
2865#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
2866#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
2867/*** ID3D12VideoEncodeCommandList1 methods ***/
2868#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)
2869#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)
2870#else
2871/*** IUnknown methods ***/
2872static inline HRESULT ID3D12VideoEncodeCommandList1_QueryInterface(ID3D12VideoEncodeCommandList1* This,REFIID riid,void **ppvObject) {
2873 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2874}
2875static inline ULONG ID3D12VideoEncodeCommandList1_AddRef(ID3D12VideoEncodeCommandList1* This) {
2876 return This->lpVtbl->AddRef(This);
2877}
2878static inline ULONG ID3D12VideoEncodeCommandList1_Release(ID3D12VideoEncodeCommandList1* This) {
2879 return This->lpVtbl->Release(This);
2880}
2881/*** ID3D12Object methods ***/
2882static inline HRESULT ID3D12VideoEncodeCommandList1_GetPrivateData(ID3D12VideoEncodeCommandList1* This,REFGUID guid,UINT *data_size,void *data) {
2883 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
2884}
2885static inline HRESULT ID3D12VideoEncodeCommandList1_SetPrivateData(ID3D12VideoEncodeCommandList1* This,REFGUID guid,UINT data_size,const void *data) {
2886 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
2887}
2888static inline HRESULT ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(ID3D12VideoEncodeCommandList1* This,REFGUID guid,const IUnknown *data) {
2889 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
2890}
2891static inline HRESULT ID3D12VideoEncodeCommandList1_SetName(ID3D12VideoEncodeCommandList1* This,const WCHAR *name) {
2892 return This->lpVtbl->SetName(This,name);
2893}
2894/*** ID3D12DeviceChild methods ***/
2895static inline HRESULT ID3D12VideoEncodeCommandList1_GetDevice(ID3D12VideoEncodeCommandList1* This,REFIID riid,void **device) {
2896 return This->lpVtbl->GetDevice(This,riid,device);
2897}
2898/*** ID3D12CommandList methods ***/
2899static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoEncodeCommandList1_GetType(ID3D12VideoEncodeCommandList1* This) {
2900 return This->lpVtbl->GetType(This);
2901}
2902/*** ID3D12VideoEncodeCommandList methods ***/
2903static inline HRESULT ID3D12VideoEncodeCommandList1_Close(ID3D12VideoEncodeCommandList1* This) {
2904 return This->lpVtbl->Close(This);
2905}
2906static inline HRESULT ID3D12VideoEncodeCommandList1_Reset(ID3D12VideoEncodeCommandList1* This,ID3D12CommandAllocator *allocator) {
2907 return This->lpVtbl->Reset(This,allocator);
2908}
2909static inline void ID3D12VideoEncodeCommandList1_ClearState(ID3D12VideoEncodeCommandList1* This) {
2910 This->lpVtbl->ClearState(This);
2911}
2912static inline void ID3D12VideoEncodeCommandList1_ResourceBarrier(ID3D12VideoEncodeCommandList1* This,UINT barriers_count,const D3D12_RESOURCE_BARRIER *barriers) {
2913 This->lpVtbl->ResourceBarrier(This,barriers_count,barriers);
2914}
2915static inline void ID3D12VideoEncodeCommandList1_DiscardResource(ID3D12VideoEncodeCommandList1* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
2916 This->lpVtbl->DiscardResource(This,resource,region);
2917}
2918static inline void ID3D12VideoEncodeCommandList1_BeginQuery(ID3D12VideoEncodeCommandList1* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
2919 This->lpVtbl->BeginQuery(This,query_heap,type,index);
2920}
2921static inline void ID3D12VideoEncodeCommandList1_EndQuery(ID3D12VideoEncodeCommandList1* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
2922 This->lpVtbl->EndQuery(This,query_heap,type,index);
2923}
2924static 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) {
2925 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset);
2926}
2927static inline void ID3D12VideoEncodeCommandList1_SetPredication(ID3D12VideoEncodeCommandList1* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
2928 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
2929}
2930static inline void ID3D12VideoEncodeCommandList1_SetMarker(ID3D12VideoEncodeCommandList1* This,UINT metadata,const void *data,UINT size) {
2931 This->lpVtbl->SetMarker(This,metadata,data,size);
2932}
2933static inline void ID3D12VideoEncodeCommandList1_BeginEvent(ID3D12VideoEncodeCommandList1* This,UINT metadata,const void *data,UINT size) {
2934 This->lpVtbl->BeginEvent(This,metadata,data,size);
2935}
2936static inline void ID3D12VideoEncodeCommandList1_EndEvent(ID3D12VideoEncodeCommandList1* This) {
2937 This->lpVtbl->EndEvent(This);
2938}
2939static 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) {
2940 This->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments);
2941}
2942static 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) {
2943 This->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments);
2944}
2945static inline void ID3D12VideoEncodeCommandList1_WriteBufferImmediate(ID3D12VideoEncodeCommandList1* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
2946 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
2947}
2948static inline void ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(ID3D12VideoEncodeCommandList1* This,ID3D12ProtectedResourceSession *protected_resource_session) {
2949 This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
2950}
2951/*** ID3D12VideoEncodeCommandList1 methods ***/
2952static inline void ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(ID3D12VideoEncodeCommandList1* This,ID3D12VideoExtensionCommand *extension_command,const void *initialization_parameters,SIZE_T initialization_parameters_size_in_bytes) {
2953 This->lpVtbl->InitializeExtensionCommand(This,extension_command,initialization_parameters,initialization_parameters_size_in_bytes);
2954}
2955static inline void ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(ID3D12VideoEncodeCommandList1* This,ID3D12VideoExtensionCommand *extension_command,const void *execution_parameters,SIZE_T execution_parameters_size_in_bytes) {
2956 This->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes);
2957}
2958#endif
2959#endif
2960
2961#endif
2962
2963
2964#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
2965
2966DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
2967DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
2968DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
2969DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
2970DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
2971DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
2972DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
2973DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
2974DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
2975DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
2976DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
2977DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
2978DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
2979DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
2980DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
2981DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
2982DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
2983DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
2984DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
2985DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
2986typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE {
2987 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
2988 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
2989 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
2990 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
2991 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4
2992} D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
2993typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS {
2994 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0x0,
2995 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
2996 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
2997 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
2998 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
2999 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
3000 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20
3001} D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
3002DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS);
3003typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP {
3004 UINT ConstantQP_FullIntracodedFrame;
3005 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
3006 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
3007} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
3008typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR {
3009 UINT InitialQP;
3010 UINT MinQP;
3011 UINT MaxQP;
3012 UINT64 MaxFrameBitSize;
3013 UINT64 TargetBitRate;
3014 UINT64 VBVCapacity;
3015 UINT64 InitialVBVFullness;
3016} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
3017typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR {
3018 UINT InitialQP;
3019 UINT MinQP;
3020 UINT MaxQP;
3021 UINT64 MaxFrameBitSize;
3022 UINT64 TargetAvgBitRate;
3023 UINT64 PeakBitRate;
3024 UINT64 VBVCapacity;
3025 UINT64 InitialVBVFullness;
3026} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
3027typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR {
3028 UINT InitialQP;
3029 UINT MinQP;
3030 UINT MaxQP;
3031 UINT64 MaxFrameBitSize;
3032 UINT64 TargetAvgBitRate;
3033 UINT64 PeakBitRate;
3034 UINT ConstantQualityTarget;
3035} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
3036typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS {
3037 UINT DataSize;
3038 __C89_NAMELESS union {
3039 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP *pConfiguration_CQP;
3040 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR *pConfiguration_CBR;
3041 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR *pConfiguration_VBR;
3042 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR *pConfiguration_QVBR;
3043 } __C89_NAMELESSUNIONNAME;
3044} D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
3045typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL {
3046 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
3047 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
3048 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
3049 DXGI_RATIONAL TargetFrameRate;
3050} D3D12_VIDEO_ENCODER_RATE_CONTROL;
3051typedef enum D3D12_VIDEO_ENCODER_CODEC {
3052 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
3053 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1
3054} D3D12_VIDEO_ENCODER_CODEC;
3055typedef enum D3D12_VIDEO_ENCODER_PROFILE_H264 {
3056 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
3057 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
3058 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2
3059} D3D12_VIDEO_ENCODER_PROFILE_H264;
3060typedef enum D3D12_VIDEO_ENCODER_PROFILE_HEVC {
3061 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
3062 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1
3063} D3D12_VIDEO_ENCODER_PROFILE_HEVC;
3064typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC {
3065 UINT DataSize;
3066 __C89_NAMELESS union {
3067 D3D12_VIDEO_ENCODER_PROFILE_H264 *pH264Profile;
3068 D3D12_VIDEO_ENCODER_PROFILE_HEVC *pHEVCProfile;
3069 } __C89_NAMELESSUNIONNAME;
3070} D3D12_VIDEO_ENCODER_PROFILE_DESC;
3071typedef enum D3D12_VIDEO_ENCODER_LEVELS_H264 {
3072 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
3073 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
3074 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
3075 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
3076 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
3077 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
3078 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
3079 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
3080 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
3081 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
3082 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
3083 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
3084 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
3085 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
3086 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
3087 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
3088 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
3089 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
3090 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
3091 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19
3092} D3D12_VIDEO_ENCODER_LEVELS_H264;
3093typedef enum D3D12_VIDEO_ENCODER_TIER_HEVC {
3094 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
3095 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1
3096} D3D12_VIDEO_ENCODER_TIER_HEVC;
3097typedef enum D3D12_VIDEO_ENCODER_LEVELS_HEVC {
3098 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
3099 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
3100 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
3101 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
3102 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
3103 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
3104 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
3105 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
3106 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
3107 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
3108 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
3109 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
3110 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12
3111} D3D12_VIDEO_ENCODER_LEVELS_HEVC;
3112typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC {
3113 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
3114 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
3115} D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
3116typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING {
3117 UINT DataSize;
3118 __C89_NAMELESS union {
3119 D3D12_VIDEO_ENCODER_LEVELS_H264 *pH264LevelSetting;
3120 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC *pHEVCLevelSetting;
3121 } __C89_NAMELESSUNIONNAME;
3122} D3D12_VIDEO_ENCODER_LEVEL_SETTING;
3123typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC {
3124 UINT Width;
3125 UINT Height;
3126} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
3127typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE {
3128 UINT NodeIndex;
3129 D3D12_VIDEO_ENCODER_CODEC Codec;
3130 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode;
3131 WINBOOL IsSupported;
3132} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
3133typedef enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE {
3134 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
3135 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1
3136} D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
3137typedef enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE {
3138 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
3139 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
3140 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
3141 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
3142 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4
3143} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
3144typedef enum D3D12_VIDEO_ENCODER_HEAP_FLAGS {
3145 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0x0
3146} D3D12_VIDEO_ENCODER_HEAP_FLAGS;
3147DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS);
3148typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC {
3149 UINT NodeMask;
3150 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
3151 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
3152 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
3153 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
3154 UINT ResolutionsListCount;
3155 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
3156} D3D12_VIDEO_ENCODER_HEAP_DESC;
3157typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS {
3158 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0x0,
3159 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
3160 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
3161 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
3162 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
3163 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
3164 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
3165 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40
3166} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
3167DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS);
3168typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES {
3169 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
3170 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
3171 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
3172 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
3173 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
3174 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
3175 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6
3176} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
3177typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS {
3178 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0x0,
3179 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,
3180 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,
3181 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,
3182 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,
3183 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,
3184 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,
3185 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
3186} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
3187DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS);
3188typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 {
3189 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
3190 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
3191} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
3192typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS {
3193 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0x0,
3194 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
3195 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
3196 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
3197 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
3198 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
3199 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
3200 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
3201 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
3202 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100
3203} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
3204DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS);
3205typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE {
3206 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
3207 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
3208 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
3209 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3
3210} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
3211typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE {
3212 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
3213 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
3214 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
3215 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3
3216} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
3217typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC {
3218 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
3219 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
3220 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
3221 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
3222 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
3223 UCHAR max_transform_hierarchy_depth_inter;
3224 UCHAR max_transform_hierarchy_depth_intra;
3225} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
3226typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
3227 UINT DataSize;
3228 __C89_NAMELESS union {
3229 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 *pH264Support;
3230 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC *pHEVCSupport;
3231 } __C89_NAMELESSUNIONNAME;
3232} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
3233typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
3234 UINT NodeIndex;
3235 D3D12_VIDEO_ENCODER_CODEC Codec;
3236 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3237 WINBOOL IsSupported;
3238 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits;
3239} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
3240typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 {
3241 UINT MaxL0ReferencesForP;
3242 UINT MaxL0ReferencesForB;
3243 UINT MaxL1ReferencesForB;
3244 UINT MaxLongTermReferences;
3245 UINT MaxDPBCapacity;
3246} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
3247typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC {
3248 UINT MaxL0ReferencesForP;
3249 UINT MaxL0ReferencesForB;
3250 UINT MaxL1ReferencesForB;
3251 UINT MaxLongTermReferences;
3252 UINT MaxDPBCapacity;
3253} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
3254typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
3255 UINT DataSize;
3256 __C89_NAMELESS union {
3257 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 *pH264Support;
3258 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC *pHEVCSupport;
3259 } __C89_NAMELESSUNIONNAME;
3260} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
3261typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
3262 UINT NodeIndex;
3263 D3D12_VIDEO_ENCODER_CODEC Codec;
3264 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3265 WINBOOL IsSupported;
3266 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport;
3267} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
3268typedef enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS {
3269 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0x0,
3270 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
3271 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
3272 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
3273 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
3274 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
3275 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
3276 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
3277 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
3278 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
3279 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
3280 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
3281 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
3282 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000
3283} D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
3284DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS);
3285typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS {
3286 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0x0,
3287 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
3288 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
3289 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
3290 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8
3291} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
3292DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS);
3293typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES {
3294 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
3295 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
3296 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2
3297} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
3298typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 {
3299 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
3300 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
3301 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
3302} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
3303typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS {
3304 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0x0,
3305 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
3306 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
3307 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
3308 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
3309 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
3310 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
3311 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40
3312} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
3313DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS);
3314typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC {
3315 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
3316 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
3317 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
3318 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
3319 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
3320 UCHAR max_transform_hierarchy_depth_inter;
3321 UCHAR max_transform_hierarchy_depth_intra;
3322} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
3323typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION {
3324 UINT DataSize;
3325 __C89_NAMELESS union {
3326 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 *pH264Config;
3327 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC *pHEVCConfig;
3328 } __C89_NAMELESSUNIONNAME;
3329} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
3330typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH {
3331 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
3332 UINT IntraRefreshDuration;
3333} D3D12_VIDEO_ENCODER_INTRA_REFRESH;
3334typedef enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE {
3335 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
3336 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
3337 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
3338 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3
3339} D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
3340typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS {
3341 UINT MaxSubregionsNumber;
3342 UINT MaxIntraRefreshFrameDuration;
3343 UINT SubregionBlockPixelsSize;
3344 UINT QPMapRegionPixelsSize;
3345} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
3346typedef enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS {
3347 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0x0,
3348 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
3349 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
3350 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
3351 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
3352 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
3353 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
3354 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
3355 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
3356 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800
3357} D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
3358DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS);
3359typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 {
3360 UINT GOPLength;
3361 UINT PPicturePeriod;
3362 UCHAR pic_order_cnt_type;
3363 UCHAR log2_max_frame_num_minus4;
3364 UCHAR log2_max_pic_order_cnt_lsb_minus4;
3365} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
3366typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC {
3367 UINT GOPLength;
3368 UINT PPicturePeriod;
3369 UCHAR log2_max_pic_order_cnt_lsb_minus4;
3370} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
3371typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE {
3372 UINT DataSize;
3373 __C89_NAMELESS union {
3374 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 *pH264GroupOfPictures;
3375 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC *pHEVCGroupOfPictures;
3376 } __C89_NAMELESSUNIONNAME;
3377} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
3378typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT {
3379 UINT NodeIndex;
3380 D3D12_VIDEO_ENCODER_CODEC Codec;
3381 DXGI_FORMAT InputFormat;
3382 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3383 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
3384 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
3385 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
3386 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3387 UINT ResolutionsListCount;
3388 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
3389 UINT MaxReferenceFramesInDPB;
3390 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
3391 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
3392 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
3393 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
3394 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
3395} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
3396typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS {
3397 UINT NodeIndex;
3398 D3D12_VIDEO_ENCODER_CODEC Codec;
3399 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3400 DXGI_FORMAT InputFormat;
3401 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
3402 WINBOOL IsSupported;
3403 UINT CompressedBitstreamBufferAccessAlignment;
3404 UINT EncoderMetadataBufferAccessAlignment;
3405 UINT MaxEncoderOutputMetadataBufferSize;
3406} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
3407typedef enum D3D12_VIDEO_ENCODER_FLAGS {
3408 D3D12_VIDEO_ENCODER_FLAG_NONE = 0x0
3409} D3D12_VIDEO_ENCODER_FLAGS;
3410DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS);
3411typedef struct D3D12_VIDEO_ENCODER_DESC {
3412 UINT NodeMask;
3413 D3D12_VIDEO_ENCODER_FLAGS Flags;
3414 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
3415 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
3416 DXGI_FORMAT InputFormat;
3417 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3418 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
3419} D3D12_VIDEO_ENCODER_DESC;
3420/*****************************************************************************
3421 * ID3D12VideoEncoder interface
3422 */
3423#ifndef __ID3D12VideoEncoder_INTERFACE_DEFINED__
3424#define __ID3D12VideoEncoder_INTERFACE_DEFINED__
3425
3426DEFINE_GUID(IID_ID3D12VideoEncoder, 0x2e0d212d, 0x8df9, 0x44a6, 0xa7,0x70, 0xbb,0x28,0x9b,0x18,0x27,0x37);
3427#if defined(__cplusplus) && !defined(CINTERFACE)
3428MIDL_INTERFACE("2e0d212d-8df9-44a6-a770-bb289b182737")
3429ID3D12VideoEncoder : public ID3D12Pageable
3430{
3431 virtual UINT STDMETHODCALLTYPE GetNodeMask(
3432 ) = 0;
3433
3434 virtual D3D12_VIDEO_ENCODER_FLAGS STDMETHODCALLTYPE GetEncoderFlags(
3435 ) = 0;
3436
3437 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec(
3438 ) = 0;
3439
3440 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
3441 D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile) = 0;
3442
3443 virtual HRESULT STDMETHODCALLTYPE GetCodecConfiguration(
3444 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dst_codec_config) = 0;
3445
3446 virtual DXGI_FORMAT STDMETHODCALLTYPE GetInputFormat(
3447 ) = 0;
3448
3449 virtual D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE STDMETHODCALLTYPE GetMaxMotionEstimationPrecision(
3450 ) = 0;
3451
3452};
3453#ifdef __CRT_UUID_DECL
3454__CRT_UUID_DECL(ID3D12VideoEncoder, 0x2e0d212d, 0x8df9, 0x44a6, 0xa7,0x70, 0xbb,0x28,0x9b,0x18,0x27,0x37)
3455#endif
3456#else
3457typedef struct ID3D12VideoEncoderVtbl {
3458 BEGIN_INTERFACE
3459
3460 /*** IUnknown methods ***/
3461 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3462 ID3D12VideoEncoder *This,
3463 REFIID riid,
3464 void **ppvObject);
3465
3466 ULONG (STDMETHODCALLTYPE *AddRef)(
3467 ID3D12VideoEncoder *This);
3468
3469 ULONG (STDMETHODCALLTYPE *Release)(
3470 ID3D12VideoEncoder *This);
3471
3472 /*** ID3D12Object methods ***/
3473 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
3474 ID3D12VideoEncoder *This,
3475 REFGUID guid,
3476 UINT *data_size,
3477 void *data);
3478
3479 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
3480 ID3D12VideoEncoder *This,
3481 REFGUID guid,
3482 UINT data_size,
3483 const void *data);
3484
3485 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
3486 ID3D12VideoEncoder *This,
3487 REFGUID guid,
3488 const IUnknown *data);
3489
3490 HRESULT (STDMETHODCALLTYPE *SetName)(
3491 ID3D12VideoEncoder *This,
3492 const WCHAR *name);
3493
3494 /*** ID3D12DeviceChild methods ***/
3495 HRESULT (STDMETHODCALLTYPE *GetDevice)(
3496 ID3D12VideoEncoder *This,
3497 REFIID riid,
3498 void **device);
3499
3500 /*** ID3D12VideoEncoder methods ***/
3501 UINT (STDMETHODCALLTYPE *GetNodeMask)(
3502 ID3D12VideoEncoder *This);
3503
3504 D3D12_VIDEO_ENCODER_FLAGS (STDMETHODCALLTYPE *GetEncoderFlags)(
3505 ID3D12VideoEncoder *This);
3506
3507 D3D12_VIDEO_ENCODER_CODEC (STDMETHODCALLTYPE *GetCodec)(
3508 ID3D12VideoEncoder *This);
3509
3510 HRESULT (STDMETHODCALLTYPE *GetCodecProfile)(
3511 ID3D12VideoEncoder *This,
3512 D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile);
3513
3514 HRESULT (STDMETHODCALLTYPE *GetCodecConfiguration)(
3515 ID3D12VideoEncoder *This,
3516 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dst_codec_config);
3517
3518 DXGI_FORMAT (STDMETHODCALLTYPE *GetInputFormat)(
3519 ID3D12VideoEncoder *This);
3520
3521 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE (STDMETHODCALLTYPE *GetMaxMotionEstimationPrecision)(
3522 ID3D12VideoEncoder *This);
3523
3524 END_INTERFACE
3525} ID3D12VideoEncoderVtbl;
3526
3527interface ID3D12VideoEncoder {
3528 CONST_VTBL ID3D12VideoEncoderVtbl* lpVtbl;
3529};
3530
3531#ifdef COBJMACROS
3532#ifndef WIDL_C_INLINE_WRAPPERS
3533/*** IUnknown methods ***/
3534#define ID3D12VideoEncoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3535#define ID3D12VideoEncoder_AddRef(This) (This)->lpVtbl->AddRef(This)
3536#define ID3D12VideoEncoder_Release(This) (This)->lpVtbl->Release(This)
3537/*** ID3D12Object methods ***/
3538#define ID3D12VideoEncoder_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
3539#define ID3D12VideoEncoder_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
3540#define ID3D12VideoEncoder_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
3541#define ID3D12VideoEncoder_SetName(This,name) (This)->lpVtbl->SetName(This,name)
3542/*** ID3D12DeviceChild methods ***/
3543#define ID3D12VideoEncoder_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
3544/*** ID3D12VideoEncoder methods ***/
3545#define ID3D12VideoEncoder_GetNodeMask(This) (This)->lpVtbl->GetNodeMask(This)
3546#define ID3D12VideoEncoder_GetEncoderFlags(This) (This)->lpVtbl->GetEncoderFlags(This)
3547#define ID3D12VideoEncoder_GetCodec(This) (This)->lpVtbl->GetCodec(This)
3548#define ID3D12VideoEncoder_GetCodecProfile(This,dst_profile) (This)->lpVtbl->GetCodecProfile(This,dst_profile)
3549#define ID3D12VideoEncoder_GetCodecConfiguration(This,dst_codec_config) (This)->lpVtbl->GetCodecConfiguration(This,dst_codec_config)
3550#define ID3D12VideoEncoder_GetInputFormat(This) (This)->lpVtbl->GetInputFormat(This)
3551#define ID3D12VideoEncoder_GetMaxMotionEstimationPrecision(This) (This)->lpVtbl->GetMaxMotionEstimationPrecision(This)
3552#else
3553/*** IUnknown methods ***/
3554static inline HRESULT ID3D12VideoEncoder_QueryInterface(ID3D12VideoEncoder* This,REFIID riid,void **ppvObject) {
3555 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3556}
3557static inline ULONG ID3D12VideoEncoder_AddRef(ID3D12VideoEncoder* This) {
3558 return This->lpVtbl->AddRef(This);
3559}
3560static inline ULONG ID3D12VideoEncoder_Release(ID3D12VideoEncoder* This) {
3561 return This->lpVtbl->Release(This);
3562}
3563/*** ID3D12Object methods ***/
3564static inline HRESULT ID3D12VideoEncoder_GetPrivateData(ID3D12VideoEncoder* This,REFGUID guid,UINT *data_size,void *data) {
3565 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
3566}
3567static inline HRESULT ID3D12VideoEncoder_SetPrivateData(ID3D12VideoEncoder* This,REFGUID guid,UINT data_size,const void *data) {
3568 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
3569}
3570static inline HRESULT ID3D12VideoEncoder_SetPrivateDataInterface(ID3D12VideoEncoder* This,REFGUID guid,const IUnknown *data) {
3571 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
3572}
3573static inline HRESULT ID3D12VideoEncoder_SetName(ID3D12VideoEncoder* This,const WCHAR *name) {
3574 return This->lpVtbl->SetName(This,name);
3575}
3576/*** ID3D12DeviceChild methods ***/
3577static inline HRESULT ID3D12VideoEncoder_GetDevice(ID3D12VideoEncoder* This,REFIID riid,void **device) {
3578 return This->lpVtbl->GetDevice(This,riid,device);
3579}
3580/*** ID3D12VideoEncoder methods ***/
3581static inline UINT ID3D12VideoEncoder_GetNodeMask(ID3D12VideoEncoder* This) {
3582 return This->lpVtbl->GetNodeMask(This);
3583}
3584static inline D3D12_VIDEO_ENCODER_FLAGS ID3D12VideoEncoder_GetEncoderFlags(ID3D12VideoEncoder* This) {
3585 return This->lpVtbl->GetEncoderFlags(This);
3586}
3587static inline D3D12_VIDEO_ENCODER_CODEC ID3D12VideoEncoder_GetCodec(ID3D12VideoEncoder* This) {
3588 return This->lpVtbl->GetCodec(This);
3589}
3590static inline HRESULT ID3D12VideoEncoder_GetCodecProfile(ID3D12VideoEncoder* This,D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile) {
3591 return This->lpVtbl->GetCodecProfile(This,dst_profile);
3592}
3593static inline HRESULT ID3D12VideoEncoder_GetCodecConfiguration(ID3D12VideoEncoder* This,D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dst_codec_config) {
3594 return This->lpVtbl->GetCodecConfiguration(This,dst_codec_config);
3595}
3596static inline DXGI_FORMAT ID3D12VideoEncoder_GetInputFormat(ID3D12VideoEncoder* This) {
3597 return This->lpVtbl->GetInputFormat(This);
3598}
3599static inline D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE ID3D12VideoEncoder_GetMaxMotionEstimationPrecision(ID3D12VideoEncoder* This) {
3600 return This->lpVtbl->GetMaxMotionEstimationPrecision(This);
3601}
3602#endif
3603#endif
3604
3605#endif
3606
3607
3608#endif /* __ID3D12VideoEncoder_INTERFACE_DEFINED__ */
3609
3610/*****************************************************************************
3611 * ID3D12VideoEncoderHeap interface
3612 */
3613#ifndef __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
3614#define __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
3615
3616DEFINE_GUID(IID_ID3D12VideoEncoderHeap, 0x22b35d96, 0x876a, 0x44c0, 0xb2,0x5e, 0xfb,0x8c,0x9c,0x7f,0x1c,0x4a);
3617#if defined(__cplusplus) && !defined(CINTERFACE)
3618MIDL_INTERFACE("22b35d96-876a-44c0-b25e-fb8c9c7f1c4a")
3619ID3D12VideoEncoderHeap : public ID3D12Pageable
3620{
3621 virtual UINT STDMETHODCALLTYPE GetNodeMask(
3622 ) = 0;
3623
3624 virtual D3D12_VIDEO_ENCODER_HEAP_FLAGS STDMETHODCALLTYPE GetEncoderHeapFlags(
3625 ) = 0;
3626
3627 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec(
3628 ) = 0;
3629
3630 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
3631 D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile) = 0;
3632
3633 virtual HRESULT STDMETHODCALLTYPE GetCodecLevel(
3634 D3D12_VIDEO_ENCODER_LEVEL_SETTING dst_level) = 0;
3635
3636 virtual UINT STDMETHODCALLTYPE GetResolutionListCount(
3637 ) = 0;
3638
3639 virtual HRESULT STDMETHODCALLTYPE GetResolutionList(
3640 const UINT resolutions_list_count,
3641 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *resolution_list) = 0;
3642
3643};
3644#ifdef __CRT_UUID_DECL
3645__CRT_UUID_DECL(ID3D12VideoEncoderHeap, 0x22b35d96, 0x876a, 0x44c0, 0xb2,0x5e, 0xfb,0x8c,0x9c,0x7f,0x1c,0x4a)
3646#endif
3647#else
3648typedef struct ID3D12VideoEncoderHeapVtbl {
3649 BEGIN_INTERFACE
3650
3651 /*** IUnknown methods ***/
3652 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3653 ID3D12VideoEncoderHeap *This,
3654 REFIID riid,
3655 void **ppvObject);
3656
3657 ULONG (STDMETHODCALLTYPE *AddRef)(
3658 ID3D12VideoEncoderHeap *This);
3659
3660 ULONG (STDMETHODCALLTYPE *Release)(
3661 ID3D12VideoEncoderHeap *This);
3662
3663 /*** ID3D12Object methods ***/
3664 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
3665 ID3D12VideoEncoderHeap *This,
3666 REFGUID guid,
3667 UINT *data_size,
3668 void *data);
3669
3670 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
3671 ID3D12VideoEncoderHeap *This,
3672 REFGUID guid,
3673 UINT data_size,
3674 const void *data);
3675
3676 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
3677 ID3D12VideoEncoderHeap *This,
3678 REFGUID guid,
3679 const IUnknown *data);
3680
3681 HRESULT (STDMETHODCALLTYPE *SetName)(
3682 ID3D12VideoEncoderHeap *This,
3683 const WCHAR *name);
3684
3685 /*** ID3D12DeviceChild methods ***/
3686 HRESULT (STDMETHODCALLTYPE *GetDevice)(
3687 ID3D12VideoEncoderHeap *This,
3688 REFIID riid,
3689 void **device);
3690
3691 /*** ID3D12VideoEncoderHeap methods ***/
3692 UINT (STDMETHODCALLTYPE *GetNodeMask)(
3693 ID3D12VideoEncoderHeap *This);
3694
3695 D3D12_VIDEO_ENCODER_HEAP_FLAGS (STDMETHODCALLTYPE *GetEncoderHeapFlags)(
3696 ID3D12VideoEncoderHeap *This);
3697
3698 D3D12_VIDEO_ENCODER_CODEC (STDMETHODCALLTYPE *GetCodec)(
3699 ID3D12VideoEncoderHeap *This);
3700
3701 HRESULT (STDMETHODCALLTYPE *GetCodecProfile)(
3702 ID3D12VideoEncoderHeap *This,
3703 D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile);
3704
3705 HRESULT (STDMETHODCALLTYPE *GetCodecLevel)(
3706 ID3D12VideoEncoderHeap *This,
3707 D3D12_VIDEO_ENCODER_LEVEL_SETTING dst_level);
3708
3709 UINT (STDMETHODCALLTYPE *GetResolutionListCount)(
3710 ID3D12VideoEncoderHeap *This);
3711
3712 HRESULT (STDMETHODCALLTYPE *GetResolutionList)(
3713 ID3D12VideoEncoderHeap *This,
3714 const UINT resolutions_list_count,
3715 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *resolution_list);
3716
3717 END_INTERFACE
3718} ID3D12VideoEncoderHeapVtbl;
3719
3720interface ID3D12VideoEncoderHeap {
3721 CONST_VTBL ID3D12VideoEncoderHeapVtbl* lpVtbl;
3722};
3723
3724#ifdef COBJMACROS
3725#ifndef WIDL_C_INLINE_WRAPPERS
3726/*** IUnknown methods ***/
3727#define ID3D12VideoEncoderHeap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3728#define ID3D12VideoEncoderHeap_AddRef(This) (This)->lpVtbl->AddRef(This)
3729#define ID3D12VideoEncoderHeap_Release(This) (This)->lpVtbl->Release(This)
3730/*** ID3D12Object methods ***/
3731#define ID3D12VideoEncoderHeap_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
3732#define ID3D12VideoEncoderHeap_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
3733#define ID3D12VideoEncoderHeap_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
3734#define ID3D12VideoEncoderHeap_SetName(This,name) (This)->lpVtbl->SetName(This,name)
3735/*** ID3D12DeviceChild methods ***/
3736#define ID3D12VideoEncoderHeap_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
3737/*** ID3D12VideoEncoderHeap methods ***/
3738#define ID3D12VideoEncoderHeap_GetNodeMask(This) (This)->lpVtbl->GetNodeMask(This)
3739#define ID3D12VideoEncoderHeap_GetEncoderHeapFlags(This) (This)->lpVtbl->GetEncoderHeapFlags(This)
3740#define ID3D12VideoEncoderHeap_GetCodec(This) (This)->lpVtbl->GetCodec(This)
3741#define ID3D12VideoEncoderHeap_GetCodecProfile(This,dst_profile) (This)->lpVtbl->GetCodecProfile(This,dst_profile)
3742#define ID3D12VideoEncoderHeap_GetCodecLevel(This,dst_level) (This)->lpVtbl->GetCodecLevel(This,dst_level)
3743#define ID3D12VideoEncoderHeap_GetResolutionListCount(This) (This)->lpVtbl->GetResolutionListCount(This)
3744#define ID3D12VideoEncoderHeap_GetResolutionList(This,resolutions_list_count,resolution_list) (This)->lpVtbl->GetResolutionList(This,resolutions_list_count,resolution_list)
3745#else
3746/*** IUnknown methods ***/
3747static inline HRESULT ID3D12VideoEncoderHeap_QueryInterface(ID3D12VideoEncoderHeap* This,REFIID riid,void **ppvObject) {
3748 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3749}
3750static inline ULONG ID3D12VideoEncoderHeap_AddRef(ID3D12VideoEncoderHeap* This) {
3751 return This->lpVtbl->AddRef(This);
3752}
3753static inline ULONG ID3D12VideoEncoderHeap_Release(ID3D12VideoEncoderHeap* This) {
3754 return This->lpVtbl->Release(This);
3755}
3756/*** ID3D12Object methods ***/
3757static inline HRESULT ID3D12VideoEncoderHeap_GetPrivateData(ID3D12VideoEncoderHeap* This,REFGUID guid,UINT *data_size,void *data) {
3758 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
3759}
3760static inline HRESULT ID3D12VideoEncoderHeap_SetPrivateData(ID3D12VideoEncoderHeap* This,REFGUID guid,UINT data_size,const void *data) {
3761 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
3762}
3763static inline HRESULT ID3D12VideoEncoderHeap_SetPrivateDataInterface(ID3D12VideoEncoderHeap* This,REFGUID guid,const IUnknown *data) {
3764 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
3765}
3766static inline HRESULT ID3D12VideoEncoderHeap_SetName(ID3D12VideoEncoderHeap* This,const WCHAR *name) {
3767 return This->lpVtbl->SetName(This,name);
3768}
3769/*** ID3D12DeviceChild methods ***/
3770static inline HRESULT ID3D12VideoEncoderHeap_GetDevice(ID3D12VideoEncoderHeap* This,REFIID riid,void **device) {
3771 return This->lpVtbl->GetDevice(This,riid,device);
3772}
3773/*** ID3D12VideoEncoderHeap methods ***/
3774static inline UINT ID3D12VideoEncoderHeap_GetNodeMask(ID3D12VideoEncoderHeap* This) {
3775 return This->lpVtbl->GetNodeMask(This);
3776}
3777static inline D3D12_VIDEO_ENCODER_HEAP_FLAGS ID3D12VideoEncoderHeap_GetEncoderHeapFlags(ID3D12VideoEncoderHeap* This) {
3778 return This->lpVtbl->GetEncoderHeapFlags(This);
3779}
3780static inline D3D12_VIDEO_ENCODER_CODEC ID3D12VideoEncoderHeap_GetCodec(ID3D12VideoEncoderHeap* This) {
3781 return This->lpVtbl->GetCodec(This);
3782}
3783static inline HRESULT ID3D12VideoEncoderHeap_GetCodecProfile(ID3D12VideoEncoderHeap* This,D3D12_VIDEO_ENCODER_PROFILE_DESC dst_profile) {
3784 return This->lpVtbl->GetCodecProfile(This,dst_profile);
3785}
3786static inline HRESULT ID3D12VideoEncoderHeap_GetCodecLevel(ID3D12VideoEncoderHeap* This,D3D12_VIDEO_ENCODER_LEVEL_SETTING dst_level) {
3787 return This->lpVtbl->GetCodecLevel(This,dst_level);
3788}
3789static inline UINT ID3D12VideoEncoderHeap_GetResolutionListCount(ID3D12VideoEncoderHeap* This) {
3790 return This->lpVtbl->GetResolutionListCount(This);
3791}
3792static inline HRESULT ID3D12VideoEncoderHeap_GetResolutionList(ID3D12VideoEncoderHeap* This,const UINT resolutions_list_count,D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *resolution_list) {
3793 return This->lpVtbl->GetResolutionList(This,resolutions_list_count,resolution_list);
3794}
3795#endif
3796#endif
3797
3798#endif
3799
3800
3801#endif /* __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__ */
3802
3803/*****************************************************************************
3804 * ID3D12VideoDevice3 interface
3805 */
3806#ifndef __ID3D12VideoDevice3_INTERFACE_DEFINED__
3807#define __ID3D12VideoDevice3_INTERFACE_DEFINED__
3808
3809DEFINE_GUID(IID_ID3D12VideoDevice3, 0x4243adb4, 0x3a32, 0x4666, 0x97,0x3c, 0x0c,0xcc,0x56,0x25,0xdc,0x44);
3810#if defined(__cplusplus) && !defined(CINTERFACE)
3811MIDL_INTERFACE("4243adb4-3a32-4666-973c-0ccc5625dc44")
3812ID3D12VideoDevice3 : public ID3D12VideoDevice2
3813{
3814 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoder(
3815 const D3D12_VIDEO_ENCODER_DESC *desc,
3816 REFIID riid,
3817 void **video_encoder) = 0;
3818
3819 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap(
3820 const D3D12_VIDEO_ENCODER_HEAP_DESC *desc,
3821 REFIID riid,
3822 void **video_encoder_heap) = 0;
3823
3824};
3825#ifdef __CRT_UUID_DECL
3826__CRT_UUID_DECL(ID3D12VideoDevice3, 0x4243adb4, 0x3a32, 0x4666, 0x97,0x3c, 0x0c,0xcc,0x56,0x25,0xdc,0x44)
3827#endif
3828#else
3829typedef struct ID3D12VideoDevice3Vtbl {
3830 BEGIN_INTERFACE
3831
3832 /*** IUnknown methods ***/
3833 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3834 ID3D12VideoDevice3 *This,
3835 REFIID riid,
3836 void **ppvObject);
3837
3838 ULONG (STDMETHODCALLTYPE *AddRef)(
3839 ID3D12VideoDevice3 *This);
3840
3841 ULONG (STDMETHODCALLTYPE *Release)(
3842 ID3D12VideoDevice3 *This);
3843
3844 /*** ID3D12VideoDevice methods ***/
3845 HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
3846 ID3D12VideoDevice3 *This,
3847 D3D12_FEATURE_VIDEO feature_video,
3848 void *feature_support_data,
3849 UINT feature_support_data_size);
3850
3851 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
3852 ID3D12VideoDevice3 *This,
3853 const D3D12_VIDEO_DECODER_DESC *desc,
3854 REFIID riid,
3855 void **video_decoder);
3856
3857 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap)(
3858 ID3D12VideoDevice3 *This,
3859 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
3860 REFIID riid,
3861 void **video_decoder_heap);
3862
3863 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
3864 ID3D12VideoDevice3 *This,
3865 UINT node_mask,
3866 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
3867 UINT input_stream_descs_count,
3868 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
3869 REFIID riid,
3870 void **video_processor);
3871
3872 /*** ID3D12VideoDevice1 methods ***/
3873 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionEstimator)(
3874 ID3D12VideoDevice3 *This,
3875 const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,
3876 ID3D12ProtectedResourceSession *protected_resource_session,
3877 REFIID riid,
3878 void **video_motion_estimator);
3879
3880 HRESULT (STDMETHODCALLTYPE *CreateVideoMotionVectorHeap)(
3881 ID3D12VideoDevice3 *This,
3882 const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *desc,
3883 ID3D12ProtectedResourceSession *protected_resource_session,
3884 REFIID riid,
3885 void **video_motion_vector_heap);
3886
3887 /*** ID3D12VideoDevice2 methods ***/
3888 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder1)(
3889 ID3D12VideoDevice3 *This,
3890 const D3D12_VIDEO_DECODER_DESC *desc,
3891 ID3D12ProtectedResourceSession *protected_resource_session,
3892 REFIID riid,
3893 void **video_decoder);
3894
3895 HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderHeap1)(
3896 ID3D12VideoDevice3 *This,
3897 const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,
3898 ID3D12ProtectedResourceSession *protected_resource_session,
3899 REFIID riid,
3900 void **video_decoder_heap);
3901
3902 HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor1)(
3903 ID3D12VideoDevice3 *This,
3904 UINT node_mask,
3905 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *output_stream_desc,
3906 UINT input_stream_descs_count,
3907 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs,
3908 ID3D12ProtectedResourceSession *protected_resource_session,
3909 REFIID riid,
3910 void **video_processor);
3911
3912 HRESULT (STDMETHODCALLTYPE *CreateVideoExtensionCommand)(
3913 ID3D12VideoDevice3 *This,
3914 const D3D12_VIDEO_EXTENSION_COMMAND_DESC *desc,
3915 const void *creation_parameters,
3916 SIZE_T creation_parameters_data_size_in_bytes,
3917 ID3D12ProtectedResourceSession *protected_resource_session,
3918 REFIID riid,
3919 void **video_extension_command);
3920
3921 HRESULT (STDMETHODCALLTYPE *ExecuteExtensionCommand)(
3922 ID3D12VideoDevice3 *This,
3923 ID3D12VideoExtensionCommand *extension_command,
3924 const void *execution_parameters,
3925 SIZE_T execution_parameters_size_in_bytes,
3926 void *output_data,
3927 SIZE_T output_data_size_in_bytes);
3928
3929 /*** ID3D12VideoDevice3 methods ***/
3930 HRESULT (STDMETHODCALLTYPE *CreateVideoEncoder)(
3931 ID3D12VideoDevice3 *This,
3932 const D3D12_VIDEO_ENCODER_DESC *desc,
3933 REFIID riid,
3934 void **video_encoder);
3935
3936 HRESULT (STDMETHODCALLTYPE *CreateVideoEncoderHeap)(
3937 ID3D12VideoDevice3 *This,
3938 const D3D12_VIDEO_ENCODER_HEAP_DESC *desc,
3939 REFIID riid,
3940 void **video_encoder_heap);
3941
3942 END_INTERFACE
3943} ID3D12VideoDevice3Vtbl;
3944
3945interface ID3D12VideoDevice3 {
3946 CONST_VTBL ID3D12VideoDevice3Vtbl* lpVtbl;
3947};
3948
3949#ifdef COBJMACROS
3950#ifndef WIDL_C_INLINE_WRAPPERS
3951/*** IUnknown methods ***/
3952#define ID3D12VideoDevice3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3953#define ID3D12VideoDevice3_AddRef(This) (This)->lpVtbl->AddRef(This)
3954#define ID3D12VideoDevice3_Release(This) (This)->lpVtbl->Release(This)
3955/*** ID3D12VideoDevice methods ***/
3956#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)
3957#define ID3D12VideoDevice3_CreateVideoDecoder(This,desc,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder)
3958#define ID3D12VideoDevice3_CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap) (This)->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap)
3959#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)
3960/*** ID3D12VideoDevice1 methods ***/
3961#define ID3D12VideoDevice3_CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator) (This)->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator)
3962#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)
3963/*** ID3D12VideoDevice2 methods ***/
3964#define ID3D12VideoDevice3_CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder) (This)->lpVtbl->CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder)
3965#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)
3966#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)
3967#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)
3968#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)
3969/*** ID3D12VideoDevice3 methods ***/
3970#define ID3D12VideoDevice3_CreateVideoEncoder(This,desc,riid,video_encoder) (This)->lpVtbl->CreateVideoEncoder(This,desc,riid,video_encoder)
3971#define ID3D12VideoDevice3_CreateVideoEncoderHeap(This,desc,riid,video_encoder_heap) (This)->lpVtbl->CreateVideoEncoderHeap(This,desc,riid,video_encoder_heap)
3972#else
3973/*** IUnknown methods ***/
3974static inline HRESULT ID3D12VideoDevice3_QueryInterface(ID3D12VideoDevice3* This,REFIID riid,void **ppvObject) {
3975 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3976}
3977static inline ULONG ID3D12VideoDevice3_AddRef(ID3D12VideoDevice3* This) {
3978 return This->lpVtbl->AddRef(This);
3979}
3980static inline ULONG ID3D12VideoDevice3_Release(ID3D12VideoDevice3* This) {
3981 return This->lpVtbl->Release(This);
3982}
3983/*** ID3D12VideoDevice methods ***/
3984static inline HRESULT ID3D12VideoDevice3_CheckFeatureSupport(ID3D12VideoDevice3* This,D3D12_FEATURE_VIDEO feature_video,void *feature_support_data,UINT feature_support_data_size) {
3985 return This->lpVtbl->CheckFeatureSupport(This,feature_video,feature_support_data,feature_support_data_size);
3986}
3987static inline HRESULT ID3D12VideoDevice3_CreateVideoDecoder(ID3D12VideoDevice3* This,const D3D12_VIDEO_DECODER_DESC *desc,REFIID riid,void **video_decoder) {
3988 return This->lpVtbl->CreateVideoDecoder(This,desc,riid,video_decoder);
3989}
3990static inline HRESULT ID3D12VideoDevice3_CreateVideoDecoderHeap(ID3D12VideoDevice3* This,const D3D12_VIDEO_DECODER_HEAP_DESC *video_decoder_heap_desc,REFIID riid,void **video_decoder_heap) {
3991 return This->lpVtbl->CreateVideoDecoderHeap(This,video_decoder_heap_desc,riid,video_decoder_heap);
3992}
3993static 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) {
3994 return This->lpVtbl->CreateVideoProcessor(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,riid,video_processor);
3995}
3996/*** ID3D12VideoDevice1 methods ***/
3997static inline HRESULT ID3D12VideoDevice3_CreateVideoMotionEstimator(ID3D12VideoDevice3* This,const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_motion_estimator) {
3998 return This->lpVtbl->CreateVideoMotionEstimator(This,desc,protected_resource_session,riid,video_motion_estimator);
3999}
4000static 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) {
4001 return This->lpVtbl->CreateVideoMotionVectorHeap(This,desc,protected_resource_session,riid,video_motion_vector_heap);
4002}
4003/*** ID3D12VideoDevice2 methods ***/
4004static inline HRESULT ID3D12VideoDevice3_CreateVideoDecoder1(ID3D12VideoDevice3* This,const D3D12_VIDEO_DECODER_DESC *desc,ID3D12ProtectedResourceSession *protected_resource_session,REFIID riid,void **video_decoder) {
4005 return This->lpVtbl->CreateVideoDecoder1(This,desc,protected_resource_session,riid,video_decoder);
4006}
4007static 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) {
4008 return This->lpVtbl->CreateVideoDecoderHeap1(This,video_decoder_heap_desc,protected_resource_session,riid,video_decoder_heap);
4009}
4010static 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) {
4011 return This->lpVtbl->CreateVideoProcessor1(This,node_mask,output_stream_desc,input_stream_descs_count,input_stream_descs,protected_resource_session,riid,video_processor);
4012}
4013static 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) {
4014 return This->lpVtbl->CreateVideoExtensionCommand(This,desc,creation_parameters,creation_parameters_data_size_in_bytes,protected_resource_session,riid,video_extension_command);
4015}
4016static 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) {
4017 return This->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes,output_data,output_data_size_in_bytes);
4018}
4019/*** ID3D12VideoDevice3 methods ***/
4020static inline HRESULT ID3D12VideoDevice3_CreateVideoEncoder(ID3D12VideoDevice3* This,const D3D12_VIDEO_ENCODER_DESC *desc,REFIID riid,void **video_encoder) {
4021 return This->lpVtbl->CreateVideoEncoder(This,desc,riid,video_encoder);
4022}
4023static inline HRESULT ID3D12VideoDevice3_CreateVideoEncoderHeap(ID3D12VideoDevice3* This,const D3D12_VIDEO_ENCODER_HEAP_DESC *desc,REFIID riid,void **video_encoder_heap) {
4024 return This->lpVtbl->CreateVideoEncoderHeap(This,desc,riid,video_encoder_heap);
4025}
4026#endif
4027#endif
4028
4029#endif
4030
4031
4032#endif /* __ID3D12VideoDevice3_INTERFACE_DEFINED__ */
4033
4034typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 {
4035 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
4036 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
4037 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
4038 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3
4039} D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
4040typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 {
4041 UINT ReconstructedPictureResourceIndex;
4042 WINBOOL IsLongTermReference;
4043 UINT LongTermPictureIdx;
4044 UINT PictureOrderCountNumber;
4045 UINT FrameDecodingOrderNumber;
4046 UINT TemporalLayerIndex;
4047} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
4048typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS {
4049 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0x0,
4050 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1
4051} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
4052DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS);
4053typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION {
4054 UCHAR memory_management_control_operation;
4055 UINT difference_of_pic_nums_minus1;
4056 UINT long_term_pic_num;
4057 UINT long_term_frame_idx;
4058 UINT max_long_term_frame_idx_plus1;
4059} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
4060typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION {
4061 UCHAR modification_of_pic_nums_idc;
4062 UINT abs_diff_pic_num_minus1;
4063 UINT long_term_pic_num;
4064} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
4065typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 {
4066 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
4067 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
4068 UINT pic_parameter_set_id;
4069 UINT idr_pic_id;
4070 UINT PictureOrderCountNumber;
4071 UINT FrameDecodingOrderNumber;
4072 UINT TemporalLayerIndex;
4073 UINT List0ReferenceFramesCount;
4074 UINT *pList0ReferenceFrames;
4075 UINT List1ReferenceFramesCount;
4076 UINT *pList1ReferenceFrames;
4077 UINT ReferenceFramesReconPictureDescriptorsCount;
4078 D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 *pReferenceFramesReconPictureDescriptors;
4079 UCHAR adaptive_ref_pic_marking_mode_flag;
4080 UINT RefPicMarkingOperationsCommandsCount;
4081 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION *pRefPicMarkingOperationsCommands;
4082 UINT List0RefPicModificationsCount;
4083 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
4084 UINT List1RefPicModificationsCount;
4085 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
4086 UINT QPMapValuesCount;
4087 INT8 *pRateControlQPMap;
4088} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
4089typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC {
4090 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
4091 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
4092 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
4093 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3
4094} D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
4095typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC {
4096 UINT ReconstructedPictureResourceIndex;
4097 WINBOOL IsRefUsedByCurrentPic;
4098 WINBOOL IsLongTermReference;
4099 UINT PictureOrderCountNumber;
4100 UINT TemporalLayerIndex;
4101} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
4102typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS {
4103 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0x0,
4104 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1
4105} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
4106DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS);
4107typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC {
4108 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
4109 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
4110 UINT slice_pic_parameter_set_id;
4111 UINT PictureOrderCountNumber;
4112 UINT TemporalLayerIndex;
4113 UINT List0ReferenceFramesCount;
4114 UINT *pList0ReferenceFrames;
4115 UINT List1ReferenceFramesCount;
4116 UINT *pList1ReferenceFrames;
4117 UINT ReferenceFramesReconPictureDescriptorsCount;
4118 D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
4119 UINT List0RefPicModificationsCount;
4120 UINT *pList0RefPicModifications;
4121 UINT List1RefPicModificationsCount;
4122 UINT *pList1RefPicModifications;
4123 UINT QPMapValuesCount;
4124 INT8 *pRateControlQPMap;
4125} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
4126typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA {
4127 UINT DataSize;
4128 __C89_NAMELESS union {
4129 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
4130 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC *pHEVCPicData;
4131 } __C89_NAMELESSUNIONNAME;
4132} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
4133typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES {
4134 UINT NumTexture2Ds;
4135 ID3D12Resource **ppTexture2Ds;
4136 UINT *pSubresources;
4137} D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
4138typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS {
4139 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0x0,
4140 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1
4141} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
4142DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS);
4143typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC {
4144 UINT IntraRefreshFrameIndex;
4145 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
4146 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
4147 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
4148} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
4149typedef enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS {
4150 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0x0,
4151 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
4152 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
4153 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
4154 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
4155 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10
4156} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
4157DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS);
4158typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES {
4159 __C89_NAMELESS union {
4160 UINT MaxBytesPerSlice;
4161 UINT NumberOfCodingUnitsPerSlice;
4162 UINT NumberOfRowsPerSlice;
4163 UINT NumberOfSlicesPerFrame;
4164 } __C89_NAMELESSUNIONNAME;
4165} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
4166typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA {
4167 UINT DataSize;
4168 __C89_NAMELESS union {
4169 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_H264;
4170 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_HEVC;
4171 } __C89_NAMELESSUNIONNAME;
4172} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
4173typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC {
4174 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
4175 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
4176 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
4177 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
4178 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
4179 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
4180 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
4181} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
4182typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS {
4183 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
4184 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
4185 ID3D12Resource *pInputFrame;
4186 UINT InputFrameSubresource;
4187 UINT CurrentFrameBitstreamMetadataSize;
4188} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
4189typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM {
4190 ID3D12Resource *pBuffer;
4191 UINT64 FrameStartOffset;
4192} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
4193typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE {
4194 ID3D12Resource *pReconstructedPicture;
4195 UINT ReconstructedPictureSubresource;
4196} D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
4197typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA {
4198 UINT64 bSize;
4199 UINT64 bStartOffset;
4200 UINT64 bHeaderSize;
4201} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
4202typedef enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS {
4203 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0x0,
4204 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
4205 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
4206 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
4207 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
4208 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10
4209} D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
4210DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS);
4211typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS {
4212 UINT64 AverageQP;
4213 UINT64 IntraCodingUnitsCount;
4214 UINT64 InterCodingUnitsCount;
4215 UINT64 SkipCodingUnitsCount;
4216 UINT64 AverageMotionEstimationXDirection;
4217 UINT64 AverageMotionEstimationYDirection;
4218} D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
4219typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA {
4220 UINT64 EncodeErrorFlags;
4221 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
4222 UINT64 EncodedBitstreamWrittenBytesCount;
4223 UINT64 WrittenSubregionsCount;
4224} D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
4225typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER {
4226 ID3D12Resource *pBuffer;
4227 UINT64 Offset;
4228} D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
4229typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS {
4230 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
4231 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
4232 DXGI_FORMAT EncoderInputFormat;
4233 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
4234 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
4235} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
4236typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS {
4237 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
4238} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
4239typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS {
4240 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
4241 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
4242 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
4243} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
4244/*****************************************************************************
4245 * ID3D12VideoEncodeCommandList2 interface
4246 */
4247#ifndef __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
4248#define __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
4249
4250DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2, 0x895491e2, 0xe701, 0x46a9, 0x9a,0x1f, 0x8d,0x34,0x80,0xed,0x86,0x7a);
4251#if defined(__cplusplus) && !defined(CINTERFACE)
4252MIDL_INTERFACE("895491e2-e701-46a9-9a1f-8d3480ed867a")
4253ID3D12VideoEncodeCommandList2 : public ID3D12VideoEncodeCommandList1
4254{
4255 virtual void STDMETHODCALLTYPE EncodeFrame(
4256 ID3D12VideoEncoder *encoder,
4257 ID3D12VideoEncoderHeap *heap,
4258 const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *input_arguments,
4259 const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *output_arguments) = 0;
4260
4261 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata(
4262 const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *input_arguments,
4263 const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *output_arguments) = 0;
4264
4265};
4266#ifdef __CRT_UUID_DECL
4267__CRT_UUID_DECL(ID3D12VideoEncodeCommandList2, 0x895491e2, 0xe701, 0x46a9, 0x9a,0x1f, 0x8d,0x34,0x80,0xed,0x86,0x7a)
4268#endif
4269#else
4270typedef struct ID3D12VideoEncodeCommandList2Vtbl {
4271 BEGIN_INTERFACE
4272
4273 /*** IUnknown methods ***/
4274 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4275 ID3D12VideoEncodeCommandList2 *This,
4276 REFIID riid,
4277 void **ppvObject);
4278
4279 ULONG (STDMETHODCALLTYPE *AddRef)(
4280 ID3D12VideoEncodeCommandList2 *This);
4281
4282 ULONG (STDMETHODCALLTYPE *Release)(
4283 ID3D12VideoEncodeCommandList2 *This);
4284
4285 /*** ID3D12Object methods ***/
4286 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
4287 ID3D12VideoEncodeCommandList2 *This,
4288 REFGUID guid,
4289 UINT *data_size,
4290 void *data);
4291
4292 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
4293 ID3D12VideoEncodeCommandList2 *This,
4294 REFGUID guid,
4295 UINT data_size,
4296 const void *data);
4297
4298 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
4299 ID3D12VideoEncodeCommandList2 *This,
4300 REFGUID guid,
4301 const IUnknown *data);
4302
4303 HRESULT (STDMETHODCALLTYPE *SetName)(
4304 ID3D12VideoEncodeCommandList2 *This,
4305 const WCHAR *name);
4306
4307 /*** ID3D12DeviceChild methods ***/
4308 HRESULT (STDMETHODCALLTYPE *GetDevice)(
4309 ID3D12VideoEncodeCommandList2 *This,
4310 REFIID riid,
4311 void **device);
4312
4313 /*** ID3D12CommandList methods ***/
4314 D3D12_COMMAND_LIST_TYPE (STDMETHODCALLTYPE *GetType)(
4315 ID3D12VideoEncodeCommandList2 *This);
4316
4317 /*** ID3D12VideoEncodeCommandList methods ***/
4318 HRESULT (STDMETHODCALLTYPE *Close)(
4319 ID3D12VideoEncodeCommandList2 *This);
4320
4321 HRESULT (STDMETHODCALLTYPE *Reset)(
4322 ID3D12VideoEncodeCommandList2 *This,
4323 ID3D12CommandAllocator *allocator);
4324
4325 void (STDMETHODCALLTYPE *ClearState)(
4326 ID3D12VideoEncodeCommandList2 *This);
4327
4328 void (STDMETHODCALLTYPE *ResourceBarrier)(
4329 ID3D12VideoEncodeCommandList2 *This,
4330 UINT barriers_count,
4331 const D3D12_RESOURCE_BARRIER *barriers);
4332
4333 void (STDMETHODCALLTYPE *DiscardResource)(
4334 ID3D12VideoEncodeCommandList2 *This,
4335 ID3D12Resource *resource,
4336 const D3D12_DISCARD_REGION *region);
4337
4338 void (STDMETHODCALLTYPE *BeginQuery)(
4339 ID3D12VideoEncodeCommandList2 *This,
4340 ID3D12QueryHeap *query_heap,
4341 D3D12_QUERY_TYPE type,
4342 UINT index);
4343
4344 void (STDMETHODCALLTYPE *EndQuery)(
4345 ID3D12VideoEncodeCommandList2 *This,
4346 ID3D12QueryHeap *query_heap,
4347 D3D12_QUERY_TYPE type,
4348 UINT index);
4349
4350 void (STDMETHODCALLTYPE *ResolveQueryData)(
4351 ID3D12VideoEncodeCommandList2 *This,
4352 ID3D12QueryHeap *query_heap,
4353 D3D12_QUERY_TYPE type,
4354 UINT start_index,
4355 UINT queries_count,
4356 ID3D12Resource *destination_buffer,
4357 UINT64 aligned_destination_buffer_offset);
4358
4359 void (STDMETHODCALLTYPE *SetPredication)(
4360 ID3D12VideoEncodeCommandList2 *This,
4361 ID3D12Resource *buffer,
4362 UINT64 aligned_buffer_offset,
4363 D3D12_PREDICATION_OP operation);
4364
4365 void (STDMETHODCALLTYPE *SetMarker)(
4366 ID3D12VideoEncodeCommandList2 *This,
4367 UINT metadata,
4368 const void *data,
4369 UINT size);
4370
4371 void (STDMETHODCALLTYPE *BeginEvent)(
4372 ID3D12VideoEncodeCommandList2 *This,
4373 UINT metadata,
4374 const void *data,
4375 UINT size);
4376
4377 void (STDMETHODCALLTYPE *EndEvent)(
4378 ID3D12VideoEncodeCommandList2 *This);
4379
4380 void (STDMETHODCALLTYPE *EstimateMotion)(
4381 ID3D12VideoEncodeCommandList2 *This,
4382 ID3D12VideoMotionEstimator *motion_estimator,
4383 const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *output_arguments,
4384 const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *input_arguments);
4385
4386 void (STDMETHODCALLTYPE *ResolveMotionVectorHeap)(
4387 ID3D12VideoEncodeCommandList2 *This,
4388 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *output_arguments,
4389 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *input_arguments);
4390
4391 void (STDMETHODCALLTYPE *WriteBufferImmediate)(
4392 ID3D12VideoEncodeCommandList2 *This,
4393 UINT count,
4394 const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,
4395 const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
4396
4397 void (STDMETHODCALLTYPE *SetProtectedResourceSession)(
4398 ID3D12VideoEncodeCommandList2 *This,
4399 ID3D12ProtectedResourceSession *protected_resource_session);
4400
4401 /*** ID3D12VideoEncodeCommandList1 methods ***/
4402 void (STDMETHODCALLTYPE *InitializeExtensionCommand)(
4403 ID3D12VideoEncodeCommandList2 *This,
4404 ID3D12VideoExtensionCommand *extension_command,
4405 const void *initialization_parameters,
4406 SIZE_T initialization_parameters_size_in_bytes);
4407
4408 void (STDMETHODCALLTYPE *ExecuteExtensionCommand)(
4409 ID3D12VideoEncodeCommandList2 *This,
4410 ID3D12VideoExtensionCommand *extension_command,
4411 const void *execution_parameters,
4412 SIZE_T execution_parameters_size_in_bytes);
4413
4414 /*** ID3D12VideoEncodeCommandList2 methods ***/
4415 void (STDMETHODCALLTYPE *EncodeFrame)(
4416 ID3D12VideoEncodeCommandList2 *This,
4417 ID3D12VideoEncoder *encoder,
4418 ID3D12VideoEncoderHeap *heap,
4419 const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *input_arguments,
4420 const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *output_arguments);
4421
4422 void (STDMETHODCALLTYPE *ResolveEncoderOutputMetadata)(
4423 ID3D12VideoEncodeCommandList2 *This,
4424 const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *input_arguments,
4425 const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *output_arguments);
4426
4427 END_INTERFACE
4428} ID3D12VideoEncodeCommandList2Vtbl;
4429
4430interface ID3D12VideoEncodeCommandList2 {
4431 CONST_VTBL ID3D12VideoEncodeCommandList2Vtbl* lpVtbl;
4432};
4433
4434#ifdef COBJMACROS
4435#ifndef WIDL_C_INLINE_WRAPPERS
4436/*** IUnknown methods ***/
4437#define ID3D12VideoEncodeCommandList2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4438#define ID3D12VideoEncodeCommandList2_AddRef(This) (This)->lpVtbl->AddRef(This)
4439#define ID3D12VideoEncodeCommandList2_Release(This) (This)->lpVtbl->Release(This)
4440/*** ID3D12Object methods ***/
4441#define ID3D12VideoEncodeCommandList2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
4442#define ID3D12VideoEncodeCommandList2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
4443#define ID3D12VideoEncodeCommandList2_SetPrivateDataInterface(This,guid,data) (This)->lpVtbl->SetPrivateDataInterface(This,guid,data)
4444#define ID3D12VideoEncodeCommandList2_SetName(This,name) (This)->lpVtbl->SetName(This,name)
4445/*** ID3D12DeviceChild methods ***/
4446#define ID3D12VideoEncodeCommandList2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
4447/*** ID3D12CommandList methods ***/
4448#define ID3D12VideoEncodeCommandList2_GetType(This) (This)->lpVtbl->GetType(This)
4449/*** ID3D12VideoEncodeCommandList methods ***/
4450#define ID3D12VideoEncodeCommandList2_Close(This) (This)->lpVtbl->Close(This)
4451#define ID3D12VideoEncodeCommandList2_Reset(This,allocator) (This)->lpVtbl->Reset(This,allocator)
4452#define ID3D12VideoEncodeCommandList2_ClearState(This) (This)->lpVtbl->ClearState(This)
4453#define ID3D12VideoEncodeCommandList2_ResourceBarrier(This,barriers_count,barriers) (This)->lpVtbl->ResourceBarrier(This,barriers_count,barriers)
4454#define ID3D12VideoEncodeCommandList2_DiscardResource(This,resource,region) (This)->lpVtbl->DiscardResource(This,resource,region)
4455#define ID3D12VideoEncodeCommandList2_BeginQuery(This,query_heap,type,index) (This)->lpVtbl->BeginQuery(This,query_heap,type,index)
4456#define ID3D12VideoEncodeCommandList2_EndQuery(This,query_heap,type,index) (This)->lpVtbl->EndQuery(This,query_heap,type,index)
4457#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)
4458#define ID3D12VideoEncodeCommandList2_SetPredication(This,buffer,aligned_buffer_offset,operation) (This)->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation)
4459#define ID3D12VideoEncodeCommandList2_SetMarker(This,metadata,data,size) (This)->lpVtbl->SetMarker(This,metadata,data,size)
4460#define ID3D12VideoEncodeCommandList2_BeginEvent(This,metadata,data,size) (This)->lpVtbl->BeginEvent(This,metadata,data,size)
4461#define ID3D12VideoEncodeCommandList2_EndEvent(This) (This)->lpVtbl->EndEvent(This)
4462#define ID3D12VideoEncodeCommandList2_EstimateMotion(This,motion_estimator,output_arguments,input_arguments) (This)->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments)
4463#define ID3D12VideoEncodeCommandList2_ResolveMotionVectorHeap(This,output_arguments,input_arguments) (This)->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments)
4464#define ID3D12VideoEncodeCommandList2_WriteBufferImmediate(This,count,params,modes) (This)->lpVtbl->WriteBufferImmediate(This,count,params,modes)
4465#define ID3D12VideoEncodeCommandList2_SetProtectedResourceSession(This,protected_resource_session) (This)->lpVtbl->SetProtectedResourceSession(This,protected_resource_session)
4466/*** ID3D12VideoEncodeCommandList1 methods ***/
4467#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)
4468#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)
4469/*** ID3D12VideoEncodeCommandList2 methods ***/
4470#define ID3D12VideoEncodeCommandList2_EncodeFrame(This,encoder,heap,input_arguments,output_arguments) (This)->lpVtbl->EncodeFrame(This,encoder,heap,input_arguments,output_arguments)
4471#define ID3D12VideoEncodeCommandList2_ResolveEncoderOutputMetadata(This,input_arguments,output_arguments) (This)->lpVtbl->ResolveEncoderOutputMetadata(This,input_arguments,output_arguments)
4472#else
4473/*** IUnknown methods ***/
4474static inline HRESULT ID3D12VideoEncodeCommandList2_QueryInterface(ID3D12VideoEncodeCommandList2* This,REFIID riid,void **ppvObject) {
4475 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4476}
4477static inline ULONG ID3D12VideoEncodeCommandList2_AddRef(ID3D12VideoEncodeCommandList2* This) {
4478 return This->lpVtbl->AddRef(This);
4479}
4480static inline ULONG ID3D12VideoEncodeCommandList2_Release(ID3D12VideoEncodeCommandList2* This) {
4481 return This->lpVtbl->Release(This);
4482}
4483/*** ID3D12Object methods ***/
4484static inline HRESULT ID3D12VideoEncodeCommandList2_GetPrivateData(ID3D12VideoEncodeCommandList2* This,REFGUID guid,UINT *data_size,void *data) {
4485 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
4486}
4487static inline HRESULT ID3D12VideoEncodeCommandList2_SetPrivateData(ID3D12VideoEncodeCommandList2* This,REFGUID guid,UINT data_size,const void *data) {
4488 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
4489}
4490static inline HRESULT ID3D12VideoEncodeCommandList2_SetPrivateDataInterface(ID3D12VideoEncodeCommandList2* This,REFGUID guid,const IUnknown *data) {
4491 return This->lpVtbl->SetPrivateDataInterface(This,guid,data);
4492}
4493static inline HRESULT ID3D12VideoEncodeCommandList2_SetName(ID3D12VideoEncodeCommandList2* This,const WCHAR *name) {
4494 return This->lpVtbl->SetName(This,name);
4495}
4496/*** ID3D12DeviceChild methods ***/
4497static inline HRESULT ID3D12VideoEncodeCommandList2_GetDevice(ID3D12VideoEncodeCommandList2* This,REFIID riid,void **device) {
4498 return This->lpVtbl->GetDevice(This,riid,device);
4499}
4500/*** ID3D12CommandList methods ***/
4501static inline D3D12_COMMAND_LIST_TYPE ID3D12VideoEncodeCommandList2_GetType(ID3D12VideoEncodeCommandList2* This) {
4502 return This->lpVtbl->GetType(This);
4503}
4504/*** ID3D12VideoEncodeCommandList methods ***/
4505static inline HRESULT ID3D12VideoEncodeCommandList2_Close(ID3D12VideoEncodeCommandList2* This) {
4506 return This->lpVtbl->Close(This);
4507}
4508static inline HRESULT ID3D12VideoEncodeCommandList2_Reset(ID3D12VideoEncodeCommandList2* This,ID3D12CommandAllocator *allocator) {
4509 return This->lpVtbl->Reset(This,allocator);
4510}
4511static inline void ID3D12VideoEncodeCommandList2_ClearState(ID3D12VideoEncodeCommandList2* This) {
4512 This->lpVtbl->ClearState(This);
4513}
4514static inline void ID3D12VideoEncodeCommandList2_ResourceBarrier(ID3D12VideoEncodeCommandList2* This,UINT barriers_count,const D3D12_RESOURCE_BARRIER *barriers) {
4515 This->lpVtbl->ResourceBarrier(This,barriers_count,barriers);
4516}
4517static inline void ID3D12VideoEncodeCommandList2_DiscardResource(ID3D12VideoEncodeCommandList2* This,ID3D12Resource *resource,const D3D12_DISCARD_REGION *region) {
4518 This->lpVtbl->DiscardResource(This,resource,region);
4519}
4520static inline void ID3D12VideoEncodeCommandList2_BeginQuery(ID3D12VideoEncodeCommandList2* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
4521 This->lpVtbl->BeginQuery(This,query_heap,type,index);
4522}
4523static inline void ID3D12VideoEncodeCommandList2_EndQuery(ID3D12VideoEncodeCommandList2* This,ID3D12QueryHeap *query_heap,D3D12_QUERY_TYPE type,UINT index) {
4524 This->lpVtbl->EndQuery(This,query_heap,type,index);
4525}
4526static 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) {
4527 This->lpVtbl->ResolveQueryData(This,query_heap,type,start_index,queries_count,destination_buffer,aligned_destination_buffer_offset);
4528}
4529static inline void ID3D12VideoEncodeCommandList2_SetPredication(ID3D12VideoEncodeCommandList2* This,ID3D12Resource *buffer,UINT64 aligned_buffer_offset,D3D12_PREDICATION_OP operation) {
4530 This->lpVtbl->SetPredication(This,buffer,aligned_buffer_offset,operation);
4531}
4532static inline void ID3D12VideoEncodeCommandList2_SetMarker(ID3D12VideoEncodeCommandList2* This,UINT metadata,const void *data,UINT size) {
4533 This->lpVtbl->SetMarker(This,metadata,data,size);
4534}
4535static inline void ID3D12VideoEncodeCommandList2_BeginEvent(ID3D12VideoEncodeCommandList2* This,UINT metadata,const void *data,UINT size) {
4536 This->lpVtbl->BeginEvent(This,metadata,data,size);
4537}
4538static inline void ID3D12VideoEncodeCommandList2_EndEvent(ID3D12VideoEncodeCommandList2* This) {
4539 This->lpVtbl->EndEvent(This);
4540}
4541static 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) {
4542 This->lpVtbl->EstimateMotion(This,motion_estimator,output_arguments,input_arguments);
4543}
4544static 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) {
4545 This->lpVtbl->ResolveMotionVectorHeap(This,output_arguments,input_arguments);
4546}
4547static inline void ID3D12VideoEncodeCommandList2_WriteBufferImmediate(ID3D12VideoEncodeCommandList2* This,UINT count,const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params,const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes) {
4548 This->lpVtbl->WriteBufferImmediate(This,count,params,modes);
4549}
4550static inline void ID3D12VideoEncodeCommandList2_SetProtectedResourceSession(ID3D12VideoEncodeCommandList2* This,ID3D12ProtectedResourceSession *protected_resource_session) {
4551 This->lpVtbl->SetProtectedResourceSession(This,protected_resource_session);
4552}
4553/*** ID3D12VideoEncodeCommandList1 methods ***/
4554static inline void ID3D12VideoEncodeCommandList2_InitializeExtensionCommand(ID3D12VideoEncodeCommandList2* This,ID3D12VideoExtensionCommand *extension_command,const void *initialization_parameters,SIZE_T initialization_parameters_size_in_bytes) {
4555 This->lpVtbl->InitializeExtensionCommand(This,extension_command,initialization_parameters,initialization_parameters_size_in_bytes);
4556}
4557static inline void ID3D12VideoEncodeCommandList2_ExecuteExtensionCommand(ID3D12VideoEncodeCommandList2* This,ID3D12VideoExtensionCommand *extension_command,const void *execution_parameters,SIZE_T execution_parameters_size_in_bytes) {
4558 This->lpVtbl->ExecuteExtensionCommand(This,extension_command,execution_parameters,execution_parameters_size_in_bytes);
4559}
4560/*** ID3D12VideoEncodeCommandList2 methods ***/
4561static 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) {
4562 This->lpVtbl->EncodeFrame(This,encoder,heap,input_arguments,output_arguments);
4563}
4564static 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) {
4565 This->lpVtbl->ResolveEncoderOutputMetadata(This,input_arguments,output_arguments);
4566}
4567#endif
4568#endif
4569
4570#endif
4571
4572
4573#endif /* __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__ */
4574
4575/* Begin additional prototypes for all interfaces */
4576
4577
4578/* End additional prototypes */
4579
4580#ifdef __cplusplus
4581}
4582#endif
4583
4584#endif /* __d3d12video_h__ */