Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/dep/vulkan/include/vk_video/vulkan_video_codec_h264std.h
4253 views
1
#ifndef VULKAN_VIDEO_CODEC_H264STD_H_
2
#define VULKAN_VIDEO_CODEC_H264STD_H_ 1
3
4
/*
5
** Copyright 2015-2024 The Khronos Group Inc.
6
**
7
** SPDX-License-Identifier: Apache-2.0
8
*/
9
10
/*
11
** This header is generated from the Khronos Vulkan XML API Registry.
12
**
13
*/
14
15
16
#ifdef __cplusplus
17
extern "C" {
18
#endif
19
20
21
22
// vulkan_video_codec_h264std is a preprocessor guard. Do not pass it to API calls.
23
#define vulkan_video_codec_h264std 1
24
#include "vulkan_video_codecs_common.h"
25
#define STD_VIDEO_H264_CPB_CNT_LIST_SIZE 32
26
#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS 6
27
#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS 16
28
#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS 6
29
#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS 64
30
#define STD_VIDEO_H264_MAX_NUM_LIST_REF 32
31
#define STD_VIDEO_H264_MAX_CHROMA_PLANES 2
32
#define STD_VIDEO_H264_NO_REFERENCE_PICTURE 0xFF
33
34
typedef enum StdVideoH264ChromaFormatIdc {
35
STD_VIDEO_H264_CHROMA_FORMAT_IDC_MONOCHROME = 0,
36
STD_VIDEO_H264_CHROMA_FORMAT_IDC_420 = 1,
37
STD_VIDEO_H264_CHROMA_FORMAT_IDC_422 = 2,
38
STD_VIDEO_H264_CHROMA_FORMAT_IDC_444 = 3,
39
STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF,
40
STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 0x7FFFFFFF
41
} StdVideoH264ChromaFormatIdc;
42
43
typedef enum StdVideoH264ProfileIdc {
44
STD_VIDEO_H264_PROFILE_IDC_BASELINE = 66,
45
STD_VIDEO_H264_PROFILE_IDC_MAIN = 77,
46
STD_VIDEO_H264_PROFILE_IDC_HIGH = 100,
47
STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE = 244,
48
STD_VIDEO_H264_PROFILE_IDC_INVALID = 0x7FFFFFFF,
49
STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF
50
} StdVideoH264ProfileIdc;
51
52
typedef enum StdVideoH264LevelIdc {
53
STD_VIDEO_H264_LEVEL_IDC_1_0 = 0,
54
STD_VIDEO_H264_LEVEL_IDC_1_1 = 1,
55
STD_VIDEO_H264_LEVEL_IDC_1_2 = 2,
56
STD_VIDEO_H264_LEVEL_IDC_1_3 = 3,
57
STD_VIDEO_H264_LEVEL_IDC_2_0 = 4,
58
STD_VIDEO_H264_LEVEL_IDC_2_1 = 5,
59
STD_VIDEO_H264_LEVEL_IDC_2_2 = 6,
60
STD_VIDEO_H264_LEVEL_IDC_3_0 = 7,
61
STD_VIDEO_H264_LEVEL_IDC_3_1 = 8,
62
STD_VIDEO_H264_LEVEL_IDC_3_2 = 9,
63
STD_VIDEO_H264_LEVEL_IDC_4_0 = 10,
64
STD_VIDEO_H264_LEVEL_IDC_4_1 = 11,
65
STD_VIDEO_H264_LEVEL_IDC_4_2 = 12,
66
STD_VIDEO_H264_LEVEL_IDC_5_0 = 13,
67
STD_VIDEO_H264_LEVEL_IDC_5_1 = 14,
68
STD_VIDEO_H264_LEVEL_IDC_5_2 = 15,
69
STD_VIDEO_H264_LEVEL_IDC_6_0 = 16,
70
STD_VIDEO_H264_LEVEL_IDC_6_1 = 17,
71
STD_VIDEO_H264_LEVEL_IDC_6_2 = 18,
72
STD_VIDEO_H264_LEVEL_IDC_INVALID = 0x7FFFFFFF,
73
STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 0x7FFFFFFF
74
} StdVideoH264LevelIdc;
75
76
typedef enum StdVideoH264PocType {
77
STD_VIDEO_H264_POC_TYPE_0 = 0,
78
STD_VIDEO_H264_POC_TYPE_1 = 1,
79
STD_VIDEO_H264_POC_TYPE_2 = 2,
80
STD_VIDEO_H264_POC_TYPE_INVALID = 0x7FFFFFFF,
81
STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 0x7FFFFFFF
82
} StdVideoH264PocType;
83
84
typedef enum StdVideoH264AspectRatioIdc {
85
STD_VIDEO_H264_ASPECT_RATIO_IDC_UNSPECIFIED = 0,
86
STD_VIDEO_H264_ASPECT_RATIO_IDC_SQUARE = 1,
87
STD_VIDEO_H264_ASPECT_RATIO_IDC_12_11 = 2,
88
STD_VIDEO_H264_ASPECT_RATIO_IDC_10_11 = 3,
89
STD_VIDEO_H264_ASPECT_RATIO_IDC_16_11 = 4,
90
STD_VIDEO_H264_ASPECT_RATIO_IDC_40_33 = 5,
91
STD_VIDEO_H264_ASPECT_RATIO_IDC_24_11 = 6,
92
STD_VIDEO_H264_ASPECT_RATIO_IDC_20_11 = 7,
93
STD_VIDEO_H264_ASPECT_RATIO_IDC_32_11 = 8,
94
STD_VIDEO_H264_ASPECT_RATIO_IDC_80_33 = 9,
95
STD_VIDEO_H264_ASPECT_RATIO_IDC_18_11 = 10,
96
STD_VIDEO_H264_ASPECT_RATIO_IDC_15_11 = 11,
97
STD_VIDEO_H264_ASPECT_RATIO_IDC_64_33 = 12,
98
STD_VIDEO_H264_ASPECT_RATIO_IDC_160_99 = 13,
99
STD_VIDEO_H264_ASPECT_RATIO_IDC_4_3 = 14,
100
STD_VIDEO_H264_ASPECT_RATIO_IDC_3_2 = 15,
101
STD_VIDEO_H264_ASPECT_RATIO_IDC_2_1 = 16,
102
STD_VIDEO_H264_ASPECT_RATIO_IDC_EXTENDED_SAR = 255,
103
STD_VIDEO_H264_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF,
104
STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 0x7FFFFFFF
105
} StdVideoH264AspectRatioIdc;
106
107
typedef enum StdVideoH264WeightedBipredIdc {
108
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0,
109
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1,
110
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2,
111
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 0x7FFFFFFF,
112
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 0x7FFFFFFF
113
} StdVideoH264WeightedBipredIdc;
114
115
typedef enum StdVideoH264ModificationOfPicNumsIdc {
116
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_SUBTRACT = 0,
117
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_ADD = 1,
118
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM = 2,
119
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END = 3,
120
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_INVALID = 0x7FFFFFFF,
121
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 0x7FFFFFFF
122
} StdVideoH264ModificationOfPicNumsIdc;
123
124
typedef enum StdVideoH264MemMgmtControlOp {
125
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_END = 0,
126
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_SHORT_TERM = 1,
127
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_LONG_TERM = 2,
128
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_LONG_TERM = 3,
129
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_SET_MAX_LONG_TERM_INDEX = 4,
130
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_ALL = 5,
131
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_CURRENT_AS_LONG_TERM = 6,
132
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_INVALID = 0x7FFFFFFF,
133
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 0x7FFFFFFF
134
} StdVideoH264MemMgmtControlOp;
135
136
typedef enum StdVideoH264CabacInitIdc {
137
STD_VIDEO_H264_CABAC_INIT_IDC_0 = 0,
138
STD_VIDEO_H264_CABAC_INIT_IDC_1 = 1,
139
STD_VIDEO_H264_CABAC_INIT_IDC_2 = 2,
140
STD_VIDEO_H264_CABAC_INIT_IDC_INVALID = 0x7FFFFFFF,
141
STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 0x7FFFFFFF
142
} StdVideoH264CabacInitIdc;
143
144
typedef enum StdVideoH264DisableDeblockingFilterIdc {
145
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED = 0,
146
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED = 1,
147
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL = 2,
148
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_INVALID = 0x7FFFFFFF,
149
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 0x7FFFFFFF
150
} StdVideoH264DisableDeblockingFilterIdc;
151
152
typedef enum StdVideoH264SliceType {
153
STD_VIDEO_H264_SLICE_TYPE_P = 0,
154
STD_VIDEO_H264_SLICE_TYPE_B = 1,
155
STD_VIDEO_H264_SLICE_TYPE_I = 2,
156
STD_VIDEO_H264_SLICE_TYPE_INVALID = 0x7FFFFFFF,
157
STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 0x7FFFFFFF
158
} StdVideoH264SliceType;
159
160
typedef enum StdVideoH264PictureType {
161
STD_VIDEO_H264_PICTURE_TYPE_P = 0,
162
STD_VIDEO_H264_PICTURE_TYPE_B = 1,
163
STD_VIDEO_H264_PICTURE_TYPE_I = 2,
164
STD_VIDEO_H264_PICTURE_TYPE_IDR = 5,
165
STD_VIDEO_H264_PICTURE_TYPE_INVALID = 0x7FFFFFFF,
166
STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
167
} StdVideoH264PictureType;
168
169
typedef enum StdVideoH264NonVclNaluType {
170
STD_VIDEO_H264_NON_VCL_NALU_TYPE_SPS = 0,
171
STD_VIDEO_H264_NON_VCL_NALU_TYPE_PPS = 1,
172
STD_VIDEO_H264_NON_VCL_NALU_TYPE_AUD = 2,
173
STD_VIDEO_H264_NON_VCL_NALU_TYPE_PREFIX = 3,
174
STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_SEQUENCE = 4,
175
STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_STREAM = 5,
176
STD_VIDEO_H264_NON_VCL_NALU_TYPE_PRECODED = 6,
177
STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID = 0x7FFFFFFF,
178
STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 0x7FFFFFFF
179
} StdVideoH264NonVclNaluType;
180
typedef struct StdVideoH264SpsVuiFlags {
181
uint32_t aspect_ratio_info_present_flag : 1;
182
uint32_t overscan_info_present_flag : 1;
183
uint32_t overscan_appropriate_flag : 1;
184
uint32_t video_signal_type_present_flag : 1;
185
uint32_t video_full_range_flag : 1;
186
uint32_t color_description_present_flag : 1;
187
uint32_t chroma_loc_info_present_flag : 1;
188
uint32_t timing_info_present_flag : 1;
189
uint32_t fixed_frame_rate_flag : 1;
190
uint32_t bitstream_restriction_flag : 1;
191
uint32_t nal_hrd_parameters_present_flag : 1;
192
uint32_t vcl_hrd_parameters_present_flag : 1;
193
} StdVideoH264SpsVuiFlags;
194
195
typedef struct StdVideoH264HrdParameters {
196
uint8_t cpb_cnt_minus1;
197
uint8_t bit_rate_scale;
198
uint8_t cpb_size_scale;
199
uint8_t reserved1;
200
uint32_t bit_rate_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];
201
uint32_t cpb_size_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];
202
uint8_t cbr_flag[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];
203
uint32_t initial_cpb_removal_delay_length_minus1;
204
uint32_t cpb_removal_delay_length_minus1;
205
uint32_t dpb_output_delay_length_minus1;
206
uint32_t time_offset_length;
207
} StdVideoH264HrdParameters;
208
209
typedef struct StdVideoH264SequenceParameterSetVui {
210
StdVideoH264SpsVuiFlags flags;
211
StdVideoH264AspectRatioIdc aspect_ratio_idc;
212
uint16_t sar_width;
213
uint16_t sar_height;
214
uint8_t video_format;
215
uint8_t colour_primaries;
216
uint8_t transfer_characteristics;
217
uint8_t matrix_coefficients;
218
uint32_t num_units_in_tick;
219
uint32_t time_scale;
220
uint8_t max_num_reorder_frames;
221
uint8_t max_dec_frame_buffering;
222
uint8_t chroma_sample_loc_type_top_field;
223
uint8_t chroma_sample_loc_type_bottom_field;
224
uint32_t reserved1;
225
const StdVideoH264HrdParameters* pHrdParameters;
226
} StdVideoH264SequenceParameterSetVui;
227
228
typedef struct StdVideoH264SpsFlags {
229
uint32_t constraint_set0_flag : 1;
230
uint32_t constraint_set1_flag : 1;
231
uint32_t constraint_set2_flag : 1;
232
uint32_t constraint_set3_flag : 1;
233
uint32_t constraint_set4_flag : 1;
234
uint32_t constraint_set5_flag : 1;
235
uint32_t direct_8x8_inference_flag : 1;
236
uint32_t mb_adaptive_frame_field_flag : 1;
237
uint32_t frame_mbs_only_flag : 1;
238
uint32_t delta_pic_order_always_zero_flag : 1;
239
uint32_t separate_colour_plane_flag : 1;
240
uint32_t gaps_in_frame_num_value_allowed_flag : 1;
241
uint32_t qpprime_y_zero_transform_bypass_flag : 1;
242
uint32_t frame_cropping_flag : 1;
243
uint32_t seq_scaling_matrix_present_flag : 1;
244
uint32_t vui_parameters_present_flag : 1;
245
} StdVideoH264SpsFlags;
246
247
typedef struct StdVideoH264ScalingLists {
248
uint16_t scaling_list_present_mask;
249
uint16_t use_default_scaling_matrix_mask;
250
uint8_t ScalingList4x4[STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS];
251
uint8_t ScalingList8x8[STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS];
252
} StdVideoH264ScalingLists;
253
254
typedef struct StdVideoH264SequenceParameterSet {
255
StdVideoH264SpsFlags flags;
256
StdVideoH264ProfileIdc profile_idc;
257
StdVideoH264LevelIdc level_idc;
258
StdVideoH264ChromaFormatIdc chroma_format_idc;
259
uint8_t seq_parameter_set_id;
260
uint8_t bit_depth_luma_minus8;
261
uint8_t bit_depth_chroma_minus8;
262
uint8_t log2_max_frame_num_minus4;
263
StdVideoH264PocType pic_order_cnt_type;
264
int32_t offset_for_non_ref_pic;
265
int32_t offset_for_top_to_bottom_field;
266
uint8_t log2_max_pic_order_cnt_lsb_minus4;
267
uint8_t num_ref_frames_in_pic_order_cnt_cycle;
268
uint8_t max_num_ref_frames;
269
uint8_t reserved1;
270
uint32_t pic_width_in_mbs_minus1;
271
uint32_t pic_height_in_map_units_minus1;
272
uint32_t frame_crop_left_offset;
273
uint32_t frame_crop_right_offset;
274
uint32_t frame_crop_top_offset;
275
uint32_t frame_crop_bottom_offset;
276
uint32_t reserved2;
277
const int32_t* pOffsetForRefFrame;
278
const StdVideoH264ScalingLists* pScalingLists;
279
const StdVideoH264SequenceParameterSetVui* pSequenceParameterSetVui;
280
} StdVideoH264SequenceParameterSet;
281
282
typedef struct StdVideoH264PpsFlags {
283
uint32_t transform_8x8_mode_flag : 1;
284
uint32_t redundant_pic_cnt_present_flag : 1;
285
uint32_t constrained_intra_pred_flag : 1;
286
uint32_t deblocking_filter_control_present_flag : 1;
287
uint32_t weighted_pred_flag : 1;
288
uint32_t bottom_field_pic_order_in_frame_present_flag : 1;
289
uint32_t entropy_coding_mode_flag : 1;
290
uint32_t pic_scaling_matrix_present_flag : 1;
291
} StdVideoH264PpsFlags;
292
293
typedef struct StdVideoH264PictureParameterSet {
294
StdVideoH264PpsFlags flags;
295
uint8_t seq_parameter_set_id;
296
uint8_t pic_parameter_set_id;
297
uint8_t num_ref_idx_l0_default_active_minus1;
298
uint8_t num_ref_idx_l1_default_active_minus1;
299
StdVideoH264WeightedBipredIdc weighted_bipred_idc;
300
int8_t pic_init_qp_minus26;
301
int8_t pic_init_qs_minus26;
302
int8_t chroma_qp_index_offset;
303
int8_t second_chroma_qp_index_offset;
304
const StdVideoH264ScalingLists* pScalingLists;
305
} StdVideoH264PictureParameterSet;
306
307
308
#ifdef __cplusplus
309
}
310
#endif
311
312
#endif
313
314