1use crate::prelude::*;
2use super::vulkan_video_codecs_common::*;
3
4#[derive(Clone, Copy)]
5#[repr(C)]
6pub struct StdVideoH265DecPicBufMgr {
7 pub max_latency_increase_plus1: [u32; STD_VIDEO_H265_SUBLAYERS_LIST_SIZE as usize],
8 pub max_dec_pic_buffering_minus1: [u8; STD_VIDEO_H265_SUBLAYERS_LIST_SIZE as usize],
9 pub max_num_reorder_pics: [u8; STD_VIDEO_H265_SUBLAYERS_LIST_SIZE as usize],
10}
11
12#[derive(Clone, Copy)]
13#[repr(C)]
14pub struct StdVideoH265HrdFlags {
15 pub bitfields: u32,
16}
17
18#[derive(Clone, Copy)]
19#[repr(C)]
20pub struct StdVideoH265HrdParameters {
21 pub flags: StdVideoH265HrdFlags,
22 pub tick_divisor_minus2: u8,
23 pub du_cpb_removal_delay_increment_length_minus1: u8,
24 pub dpb_output_delay_du_length_minus1: u8,
25 pub bit_rate_scale: u8,
26 pub cpb_size_scale: u8,
27 pub cpb_size_du_scale: u8,
28 pub initial_cpb_removal_delay_length_minus1: u8,
29 pub au_cpb_removal_delay_length_minus1: u8,
30 pub dpb_output_delay_length_minus1: u8,
31 pub cpb_cnt_minus1: [u8; STD_VIDEO_H265_SUBLAYERS_LIST_SIZE as usize],
32 pub elemental_duration_in_tc_minus1: [u16; STD_VIDEO_H265_SUBLAYERS_LIST_SIZE as usize],
33 pub reserved: [u16; 3 as usize],
34 pub pSubLayerHrdParametersNal: *const StdVideoH265SubLayerHrdParameters,
35 pub pSubLayerHrdParametersVcl: *const StdVideoH265SubLayerHrdParameters,
36}
37
38#[derive(Clone, Copy)]
39#[repr(C)]
40pub struct StdVideoH265LongTermRefPicsSps {
41 pub used_by_curr_pic_lt_sps_flag: u32,
42 pub lt_ref_pic_poc_lsb_sps: [u32; STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS as usize],
43}
44
45#[derive(Clone, Copy)]
46#[repr(C)]
47pub struct StdVideoH265PictureParameterSet {
48 pub flags: StdVideoH265PpsFlags,
49 pub pps_pic_parameter_set_id: u8,
50 pub pps_seq_parameter_set_id: u8,
51 pub sps_video_parameter_set_id: u8,
52 pub num_extra_slice_header_bits: u8,
53 pub num_ref_idx_l0_default_active_minus1: u8,
54 pub num_ref_idx_l1_default_active_minus1: u8,
55 pub init_qp_minus26: i8,
56 pub diff_cu_qp_delta_depth: u8,
57 pub pps_cb_qp_offset: i8,
58 pub pps_cr_qp_offset: i8,
59 pub pps_beta_offset_div2: i8,
60 pub pps_tc_offset_div2: i8,
61 pub log2_parallel_merge_level_minus2: u8,
62 pub log2_max_transform_skip_block_size_minus2: u8,
63 pub diff_cu_chroma_qp_offset_depth: u8,
64 pub chroma_qp_offset_list_len_minus1: u8,
65 pub cb_qp_offset_list: [i8; STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE as usize],
66 pub cr_qp_offset_list: [i8; STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE as usize],
67 pub log2_sao_offset_scale_luma: u8,
68 pub log2_sao_offset_scale_chroma: u8,
69 pub pps_act_y_qp_offset_plus5: i8,
70 pub pps_act_cb_qp_offset_plus5: i8,
71 pub pps_act_cr_qp_offset_plus3: i8,
72 pub pps_num_palette_predictor_initializers: u8,
73 pub luma_bit_depth_entry_minus8: u8,
74 pub chroma_bit_depth_entry_minus8: u8,
75 pub num_tile_columns_minus1: u8,
76 pub num_tile_rows_minus1: u8,
77 pub reserved1: u8,
78 pub reserved2: u8,
79 pub column_width_minus1: [u16; STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE as usize],
80 pub row_height_minus1: [u16; STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE as usize],
81 pub reserved3: u32,
82 pub pScalingLists: *const StdVideoH265ScalingLists,
83 pub pPredictorPaletteEntries: *const StdVideoH265PredictorPaletteEntries,
84}
85
86#[derive(Clone, Copy)]
87#[repr(C)]
88pub struct StdVideoH265PpsFlags {
89 pub bitfields: u32,
90}
91
92#[derive(Clone, Copy)]
93#[repr(C)]
94pub struct StdVideoH265PredictorPaletteEntries {
95 pub PredictorPaletteEntries: [[u16; STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE as usize]; STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE as usize],
96}
97
98#[derive(Clone, Copy)]
99#[repr(C)]
100pub struct StdVideoH265ProfileTierLevel {
101 pub flags: StdVideoH265ProfileTierLevelFlags,
102 pub general_profile_idc: StdVideoH265ProfileIdc,
103 pub general_level_idc: StdVideoH265LevelIdc,
104}
105
106#[derive(Clone, Copy)]
107#[repr(C)]
108pub struct StdVideoH265ProfileTierLevelFlags {
109 pub bitfields: u32,
110}
111
112#[derive(Clone, Copy)]
113#[repr(C)]
114pub struct StdVideoH265ScalingLists {
115 pub ScalingList4x4: [[u8; STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS as usize]; STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS as usize],
116 pub ScalingList8x8: [[u8; STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS as usize]; STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS as usize],
117 pub ScalingList16x16: [[u8; STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS as usize]; STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS as usize],
118 pub ScalingList32x32: [[u8; STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS as usize]; STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS as usize],
119 pub ScalingListDCCoef16x16: [u8; STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS as usize],
120 pub ScalingListDCCoef32x32: [u8; STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS as usize],
121}
122
123#[derive(Clone, Copy)]
124#[repr(C)]
125pub struct StdVideoH265SequenceParameterSet {
126 pub flags: StdVideoH265SpsFlags,
127 pub chroma_format_idc: StdVideoH265ChromaFormatIdc,
128 pub pic_width_in_luma_samples: u32,
129 pub pic_height_in_luma_samples: u32,
130 pub sps_video_parameter_set_id: u8,
131 pub sps_max_sub_layers_minus1: u8,
132 pub sps_seq_parameter_set_id: u8,
133 pub bit_depth_luma_minus8: u8,
134 pub bit_depth_chroma_minus8: u8,
135 pub log2_max_pic_order_cnt_lsb_minus4: u8,
136 pub log2_min_luma_coding_block_size_minus3: u8,
137 pub log2_diff_max_min_luma_coding_block_size: u8,
138 pub log2_min_luma_transform_block_size_minus2: u8,
139 pub log2_diff_max_min_luma_transform_block_size: u8,
140 pub max_transform_hierarchy_depth_inter: u8,
141 pub max_transform_hierarchy_depth_intra: u8,
142 pub num_short_term_ref_pic_sets: u8,
143 pub num_long_term_ref_pics_sps: u8,
144 pub pcm_sample_bit_depth_luma_minus1: u8,
145 pub pcm_sample_bit_depth_chroma_minus1: u8,
146 pub log2_min_pcm_luma_coding_block_size_minus3: u8,
147 pub log2_diff_max_min_pcm_luma_coding_block_size: u8,
148 pub reserved1: u8,
149 pub reserved2: u8,
150 pub palette_max_size: u8,
151 pub delta_palette_max_predictor_size: u8,
152 pub motion_vector_resolution_control_idc: u8,
153 pub sps_num_palette_predictor_initializers_minus1: u8,
154 pub conf_win_left_offset: u32,
155 pub conf_win_right_offset: u32,
156 pub conf_win_top_offset: u32,
157 pub conf_win_bottom_offset: u32,
158 pub pProfileTierLevel: *const StdVideoH265ProfileTierLevel,
159 pub pDecPicBufMgr: *const StdVideoH265DecPicBufMgr,
160 pub pScalingLists: *const StdVideoH265ScalingLists,
161 pub pShortTermRefPicSet: *const StdVideoH265ShortTermRefPicSet,
162 pub pLongTermRefPicsSps: *const StdVideoH265LongTermRefPicsSps,
163 pub pSequenceParameterSetVui: *const StdVideoH265SequenceParameterSetVui,
164 pub pPredictorPaletteEntries: *const StdVideoH265PredictorPaletteEntries,
165}
166
167#[derive(Clone, Copy)]
168#[repr(C)]
169pub struct StdVideoH265SequenceParameterSetVui {
170 pub flags: StdVideoH265SpsVuiFlags,
171 pub aspect_ratio_idc: StdVideoH265AspectRatioIdc,
172 pub sar_width: u16,
173 pub sar_height: u16,
174 pub video_format: u8,
175 pub colour_primaries: u8,
176 pub transfer_characteristics: u8,
177 pub matrix_coeffs: u8,
178 pub chroma_sample_loc_type_top_field: u8,
179 pub chroma_sample_loc_type_bottom_field: u8,
180 pub reserved1: u8,
181 pub reserved2: u8,
182 pub def_disp_win_left_offset: u16,
183 pub def_disp_win_right_offset: u16,
184 pub def_disp_win_top_offset: u16,
185 pub def_disp_win_bottom_offset: u16,
186 pub vui_num_units_in_tick: u32,
187 pub vui_time_scale: u32,
188 pub vui_num_ticks_poc_diff_one_minus1: u32,
189 pub min_spatial_segmentation_idc: u16,
190 pub reserved3: u16,
191 pub max_bytes_per_pic_denom: u8,
192 pub max_bits_per_min_cu_denom: u8,
193 pub log2_max_mv_length_horizontal: u8,
194 pub log2_max_mv_length_vertical: u8,
195 pub pHrdParameters: *const StdVideoH265HrdParameters,
196}
197
198#[derive(Clone, Copy)]
199#[repr(C)]
200pub struct StdVideoH265ShortTermRefPicSet {
201 pub flags: StdVideoH265ShortTermRefPicSetFlags,
202 pub delta_idx_minus1: u32,
203 pub use_delta_flag: u16,
204 pub abs_delta_rps_minus1: u16,
205 pub used_by_curr_pic_flag: u16,
206 pub used_by_curr_pic_s0_flag: u16,
207 pub used_by_curr_pic_s1_flag: u16,
208 pub reserved1: u16,
209 pub reserved2: u8,
210 pub reserved3: u8,
211 pub num_negative_pics: u8,
212 pub num_positive_pics: u8,
213 pub delta_poc_s0_minus1: [u16; STD_VIDEO_H265_MAX_DPB_SIZE as usize],
214 pub delta_poc_s1_minus1: [u16; STD_VIDEO_H265_MAX_DPB_SIZE as usize],
215}
216
217#[derive(Clone, Copy)]
218#[repr(C)]
219pub struct StdVideoH265ShortTermRefPicSetFlags {
220 pub bitfields: u32,
221}
222
223#[derive(Clone, Copy)]
224#[repr(C)]
225pub struct StdVideoH265SpsFlags {
226 pub bitfields: u32,
227}
228
229#[derive(Clone, Copy)]
230#[repr(C)]
231pub struct StdVideoH265SpsVuiFlags {
232 pub bitfields: u32,
233}
234
235#[derive(Clone, Copy)]
236#[repr(C)]
237pub struct StdVideoH265SubLayerHrdParameters {
238 pub bit_rate_value_minus1: [u32; STD_VIDEO_H265_CPB_CNT_LIST_SIZE as usize],
239 pub cpb_size_value_minus1: [u32; STD_VIDEO_H265_CPB_CNT_LIST_SIZE as usize],
240 pub cpb_size_du_value_minus1: [u32; STD_VIDEO_H265_CPB_CNT_LIST_SIZE as usize],
241 pub bit_rate_du_value_minus1: [u32; STD_VIDEO_H265_CPB_CNT_LIST_SIZE as usize],
242 pub cbr_flag: u32,
243}
244
245#[derive(Clone, Copy)]
246#[repr(C)]
247pub struct StdVideoH265VideoParameterSet {
248 pub flags: StdVideoH265VpsFlags,
249 pub vps_video_parameter_set_id: u8,
250 pub vps_max_sub_layers_minus1: u8,
251 pub reserved1: u8,
252 pub reserved2: u8,
253 pub vps_num_units_in_tick: u32,
254 pub vps_time_scale: u32,
255 pub vps_num_ticks_poc_diff_one_minus1: u32,
256 pub reserved3: u32,
257 pub pDecPicBufMgr: *const StdVideoH265DecPicBufMgr,
258 pub pHrdParameters: *const StdVideoH265HrdParameters,
259 pub pProfileTierLevel: *const StdVideoH265ProfileTierLevel,
260}
261
262#[derive(Clone, Copy)]
263#[repr(C)]
264pub struct StdVideoH265VpsFlags {
265 pub bitfields: u32,
266}
267
268pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11: StdVideoH265AspectRatioIdc = 3;
269pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11: StdVideoH265AspectRatioIdc = 2;
270pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11: StdVideoH265AspectRatioIdc = 11;
271pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99: StdVideoH265AspectRatioIdc = 13;
272pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11: StdVideoH265AspectRatioIdc = 4;
273pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11: StdVideoH265AspectRatioIdc = 10;
274pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11: StdVideoH265AspectRatioIdc = 7;
275pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11: StdVideoH265AspectRatioIdc = 6;
276pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1: StdVideoH265AspectRatioIdc = 16;
277pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11: StdVideoH265AspectRatioIdc = 8;
278pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2: StdVideoH265AspectRatioIdc = 15;
279pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33: StdVideoH265AspectRatioIdc = 5;
280pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3: StdVideoH265AspectRatioIdc = 14;
281pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33: StdVideoH265AspectRatioIdc = 12;
282pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33: StdVideoH265AspectRatioIdc = 9;
283pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR: StdVideoH265AspectRatioIdc = 255;
284pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID: StdVideoH265AspectRatioIdc = 0x7FFFFFFF;
285pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE: StdVideoH265AspectRatioIdc = 1;
286pub const STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED: StdVideoH265AspectRatioIdc = 0;
287pub const STD_VIDEO_H265_CHROMA_FORMAT_IDC_420: StdVideoH265ChromaFormatIdc = 1;
288pub const STD_VIDEO_H265_CHROMA_FORMAT_IDC_422: StdVideoH265ChromaFormatIdc = 2;
289pub const STD_VIDEO_H265_CHROMA_FORMAT_IDC_444: StdVideoH265ChromaFormatIdc = 3;
290pub const STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID: StdVideoH265ChromaFormatIdc = 0x7FFFFFFF;
291pub const STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME: StdVideoH265ChromaFormatIdc = 0;
292pub const STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE: u32 = 6;
293pub const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE: u32 = 19;
294pub const STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE: u32 = 21;
295pub const STD_VIDEO_H265_CPB_CNT_LIST_SIZE: u32 = 32;
296pub const STD_VIDEO_H265_LEVEL_IDC_1_0: StdVideoH265LevelIdc = 0;
297pub const STD_VIDEO_H265_LEVEL_IDC_2_0: StdVideoH265LevelIdc = 1;
298pub const STD_VIDEO_H265_LEVEL_IDC_2_1: StdVideoH265LevelIdc = 2;
299pub const STD_VIDEO_H265_LEVEL_IDC_3_0: StdVideoH265LevelIdc = 3;
300pub const STD_VIDEO_H265_LEVEL_IDC_3_1: StdVideoH265LevelIdc = 4;
301pub const STD_VIDEO_H265_LEVEL_IDC_4_0: StdVideoH265LevelIdc = 5;
302pub const STD_VIDEO_H265_LEVEL_IDC_4_1: StdVideoH265LevelIdc = 6;
303pub const STD_VIDEO_H265_LEVEL_IDC_5_0: StdVideoH265LevelIdc = 7;
304pub const STD_VIDEO_H265_LEVEL_IDC_5_1: StdVideoH265LevelIdc = 8;
305pub const STD_VIDEO_H265_LEVEL_IDC_5_2: StdVideoH265LevelIdc = 9;
306pub const STD_VIDEO_H265_LEVEL_IDC_6_0: StdVideoH265LevelIdc = 10;
307pub const STD_VIDEO_H265_LEVEL_IDC_6_1: StdVideoH265LevelIdc = 11;
308pub const STD_VIDEO_H265_LEVEL_IDC_6_2: StdVideoH265LevelIdc = 12;
309pub const STD_VIDEO_H265_LEVEL_IDC_INVALID: StdVideoH265LevelIdc = 0x7FFFFFFF;
310pub const STD_VIDEO_H265_MAX_CHROMA_PLANES: u32 = 2;
311pub const STD_VIDEO_H265_MAX_DELTA_POC: u32 = 48;
312pub const STD_VIDEO_H265_MAX_DPB_SIZE: u32 = 16;
313pub const STD_VIDEO_H265_MAX_LONG_TERM_PICS: u32 = 16;
314pub const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS: u32 = 32;
315pub const STD_VIDEO_H265_MAX_NUM_LIST_REF: u32 = 15;
316pub const STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS: u32 = 64;
317pub const STD_VIDEO_H265_NO_REFERENCE_PICTURE: u8 = 0xFF;
318pub const STD_VIDEO_H265_PICTURE_TYPE_B: StdVideoH265PictureType = 1;
319pub const STD_VIDEO_H265_PICTURE_TYPE_I: StdVideoH265PictureType = 2;
320pub const STD_VIDEO_H265_PICTURE_TYPE_IDR: StdVideoH265PictureType = 3;
321pub const STD_VIDEO_H265_PICTURE_TYPE_INVALID: StdVideoH265PictureType = 0x7FFFFFFF;
322pub const STD_VIDEO_H265_PICTURE_TYPE_P: StdVideoH265PictureType = 0;
323pub const STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE: u32 = 3;
324pub const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE: u32 = 128;
325pub const STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS: StdVideoH265ProfileIdc = 4;
326pub const STD_VIDEO_H265_PROFILE_IDC_INVALID: StdVideoH265ProfileIdc = 0x7FFFFFFF;
327pub const STD_VIDEO_H265_PROFILE_IDC_MAIN: StdVideoH265ProfileIdc = 1;
328pub const STD_VIDEO_H265_PROFILE_IDC_MAIN_10: StdVideoH265ProfileIdc = 2;
329pub const STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE: StdVideoH265ProfileIdc = 3;
330pub const STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS: StdVideoH265ProfileIdc = 9;
331pub const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS: u32 = 64;
332pub const STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS: u32 = 6;
333pub const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS: u32 = 64;
334pub const STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS: u32 = 2;
335pub const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS: u32 = 16;
336pub const STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS: u32 = 6;
337pub const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS: u32 = 64;
338pub const STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS: u32 = 6;
339pub const STD_VIDEO_H265_SLICE_TYPE_B: StdVideoH265SliceType = 0;
340pub const STD_VIDEO_H265_SLICE_TYPE_I: StdVideoH265SliceType = 2;
341pub const STD_VIDEO_H265_SLICE_TYPE_INVALID: StdVideoH265SliceType = 0x7FFFFFFF;
342pub const STD_VIDEO_H265_SLICE_TYPE_P: StdVideoH265SliceType = 1;
343pub const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE: u32 = 7;
344
345pub type StdVideoH265AspectRatioIdc = i32;
346pub type StdVideoH265ChromaFormatIdc = i32;
347pub type StdVideoH265LevelIdc = i32;
348pub type StdVideoH265PictureType = i32;
349pub type StdVideoH265ProfileIdc = i32;
350pub type StdVideoH265SliceType = i32;