Skip to main content

vulkan_headers/vk_video/
vulkan_video_codec_h265std.rs

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;