xref: /aosp_15_r20/external/mesa3d/include/vk_video/vulkan_video_codec_h265std.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 #ifndef VULKAN_VIDEO_CODEC_H265STD_H_
2 #define VULKAN_VIDEO_CODEC_H265STD_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_h265std is a preprocessor guard. Do not pass it to API calls.
23 #define vulkan_video_codec_h265std 1
24 #include "vulkan_video_codecs_common.h"
25 #define STD_VIDEO_H265_CPB_CNT_LIST_SIZE  32
26 #define STD_VIDEO_H265_SUBLAYERS_LIST_SIZE 7
27 #define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS 6
28 #define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS 16
29 #define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS 6
30 #define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS 64
31 #define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS 6
32 #define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS 64
33 #define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS 2
34 #define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS 64
35 #define STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE 6
36 #define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE 19
37 #define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE 21
38 #define STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3
39 #define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128
40 #define STD_VIDEO_H265_MAX_NUM_LIST_REF   15
41 #define STD_VIDEO_H265_MAX_CHROMA_PLANES  2
42 #define STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS 64
43 #define STD_VIDEO_H265_MAX_DPB_SIZE       16
44 #define STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS 32
45 #define STD_VIDEO_H265_MAX_LONG_TERM_PICS 16
46 #define STD_VIDEO_H265_MAX_DELTA_POC      48
47 #define STD_VIDEO_H265_NO_REFERENCE_PICTURE 0xFF
48 
49 typedef enum StdVideoH265ChromaFormatIdc {
50     STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME = 0,
51     STD_VIDEO_H265_CHROMA_FORMAT_IDC_420 = 1,
52     STD_VIDEO_H265_CHROMA_FORMAT_IDC_422 = 2,
53     STD_VIDEO_H265_CHROMA_FORMAT_IDC_444 = 3,
54     STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF,
55     STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 0x7FFFFFFF
56 } StdVideoH265ChromaFormatIdc;
57 
58 typedef enum StdVideoH265ProfileIdc {
59     STD_VIDEO_H265_PROFILE_IDC_MAIN = 1,
60     STD_VIDEO_H265_PROFILE_IDC_MAIN_10 = 2,
61     STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE = 3,
62     STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS = 4,
63     STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS = 9,
64     STD_VIDEO_H265_PROFILE_IDC_INVALID = 0x7FFFFFFF,
65     STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF
66 } StdVideoH265ProfileIdc;
67 
68 typedef enum StdVideoH265LevelIdc {
69     STD_VIDEO_H265_LEVEL_IDC_1_0 = 0,
70     STD_VIDEO_H265_LEVEL_IDC_2_0 = 1,
71     STD_VIDEO_H265_LEVEL_IDC_2_1 = 2,
72     STD_VIDEO_H265_LEVEL_IDC_3_0 = 3,
73     STD_VIDEO_H265_LEVEL_IDC_3_1 = 4,
74     STD_VIDEO_H265_LEVEL_IDC_4_0 = 5,
75     STD_VIDEO_H265_LEVEL_IDC_4_1 = 6,
76     STD_VIDEO_H265_LEVEL_IDC_5_0 = 7,
77     STD_VIDEO_H265_LEVEL_IDC_5_1 = 8,
78     STD_VIDEO_H265_LEVEL_IDC_5_2 = 9,
79     STD_VIDEO_H265_LEVEL_IDC_6_0 = 10,
80     STD_VIDEO_H265_LEVEL_IDC_6_1 = 11,
81     STD_VIDEO_H265_LEVEL_IDC_6_2 = 12,
82     STD_VIDEO_H265_LEVEL_IDC_INVALID = 0x7FFFFFFF,
83     STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 0x7FFFFFFF
84 } StdVideoH265LevelIdc;
85 
86 typedef enum StdVideoH265SliceType {
87     STD_VIDEO_H265_SLICE_TYPE_B = 0,
88     STD_VIDEO_H265_SLICE_TYPE_P = 1,
89     STD_VIDEO_H265_SLICE_TYPE_I = 2,
90     STD_VIDEO_H265_SLICE_TYPE_INVALID = 0x7FFFFFFF,
91     STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 0x7FFFFFFF
92 } StdVideoH265SliceType;
93 
94 typedef enum StdVideoH265PictureType {
95     STD_VIDEO_H265_PICTURE_TYPE_P = 0,
96     STD_VIDEO_H265_PICTURE_TYPE_B = 1,
97     STD_VIDEO_H265_PICTURE_TYPE_I = 2,
98     STD_VIDEO_H265_PICTURE_TYPE_IDR = 3,
99     STD_VIDEO_H265_PICTURE_TYPE_INVALID = 0x7FFFFFFF,
100     STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
101 } StdVideoH265PictureType;
102 
103 typedef enum StdVideoH265AspectRatioIdc {
104     STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0,
105     STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1,
106     STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2,
107     STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3,
108     STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4,
109     STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5,
110     STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6,
111     STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7,
112     STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8,
113     STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9,
114     STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10,
115     STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11,
116     STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12,
117     STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13,
118     STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14,
119     STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15,
120     STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16,
121     STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255,
122     STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF,
123     STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 0x7FFFFFFF
124 } StdVideoH265AspectRatioIdc;
125 typedef struct StdVideoH265DecPicBufMgr {
126     uint32_t    max_latency_increase_plus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
127     uint8_t     max_dec_pic_buffering_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
128     uint8_t     max_num_reorder_pics[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
129 } StdVideoH265DecPicBufMgr;
130 
131 typedef struct StdVideoH265SubLayerHrdParameters {
132     uint32_t    bit_rate_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
133     uint32_t    cpb_size_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
134     uint32_t    cpb_size_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
135     uint32_t    bit_rate_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
136     uint32_t    cbr_flag;
137 } StdVideoH265SubLayerHrdParameters;
138 
139 typedef struct StdVideoH265HrdFlags {
140     uint32_t    nal_hrd_parameters_present_flag : 1;
141     uint32_t    vcl_hrd_parameters_present_flag : 1;
142     uint32_t    sub_pic_hrd_params_present_flag : 1;
143     uint32_t    sub_pic_cpb_params_in_pic_timing_sei_flag : 1;
144     uint32_t    fixed_pic_rate_general_flag : 8;
145     uint32_t    fixed_pic_rate_within_cvs_flag : 8;
146     uint32_t    low_delay_hrd_flag : 8;
147 } StdVideoH265HrdFlags;
148 
149 typedef struct StdVideoH265HrdParameters {
150     StdVideoH265HrdFlags                        flags;
151     uint8_t                                     tick_divisor_minus2;
152     uint8_t                                     du_cpb_removal_delay_increment_length_minus1;
153     uint8_t                                     dpb_output_delay_du_length_minus1;
154     uint8_t                                     bit_rate_scale;
155     uint8_t                                     cpb_size_scale;
156     uint8_t                                     cpb_size_du_scale;
157     uint8_t                                     initial_cpb_removal_delay_length_minus1;
158     uint8_t                                     au_cpb_removal_delay_length_minus1;
159     uint8_t                                     dpb_output_delay_length_minus1;
160     uint8_t                                     cpb_cnt_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
161     uint16_t                                    elemental_duration_in_tc_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
162     uint16_t                                    reserved[3];
163     const StdVideoH265SubLayerHrdParameters*    pSubLayerHrdParametersNal;
164     const StdVideoH265SubLayerHrdParameters*    pSubLayerHrdParametersVcl;
165 } StdVideoH265HrdParameters;
166 
167 typedef struct StdVideoH265VpsFlags {
168     uint32_t    vps_temporal_id_nesting_flag : 1;
169     uint32_t    vps_sub_layer_ordering_info_present_flag : 1;
170     uint32_t    vps_timing_info_present_flag : 1;
171     uint32_t    vps_poc_proportional_to_timing_flag : 1;
172 } StdVideoH265VpsFlags;
173 
174 typedef struct StdVideoH265ProfileTierLevelFlags {
175     uint32_t    general_tier_flag : 1;
176     uint32_t    general_progressive_source_flag : 1;
177     uint32_t    general_interlaced_source_flag : 1;
178     uint32_t    general_non_packed_constraint_flag : 1;
179     uint32_t    general_frame_only_constraint_flag : 1;
180 } StdVideoH265ProfileTierLevelFlags;
181 
182 typedef struct StdVideoH265ProfileTierLevel {
183     StdVideoH265ProfileTierLevelFlags    flags;
184     StdVideoH265ProfileIdc               general_profile_idc;
185     StdVideoH265LevelIdc                 general_level_idc;
186 } StdVideoH265ProfileTierLevel;
187 
188 typedef struct StdVideoH265VideoParameterSet {
189     StdVideoH265VpsFlags                   flags;
190     uint8_t                                vps_video_parameter_set_id;
191     uint8_t                                vps_max_sub_layers_minus1;
192     uint8_t                                reserved1;
193     uint8_t                                reserved2;
194     uint32_t                               vps_num_units_in_tick;
195     uint32_t                               vps_time_scale;
196     uint32_t                               vps_num_ticks_poc_diff_one_minus1;
197     uint32_t                               reserved3;
198     const StdVideoH265DecPicBufMgr*        pDecPicBufMgr;
199     const StdVideoH265HrdParameters*       pHrdParameters;
200     const StdVideoH265ProfileTierLevel*    pProfileTierLevel;
201 } StdVideoH265VideoParameterSet;
202 
203 typedef struct StdVideoH265ScalingLists {
204     uint8_t    ScalingList4x4[STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS];
205     uint8_t    ScalingList8x8[STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS];
206     uint8_t    ScalingList16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS];
207     uint8_t    ScalingList32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS];
208     uint8_t    ScalingListDCCoef16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS];
209     uint8_t    ScalingListDCCoef32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS];
210 } StdVideoH265ScalingLists;
211 
212 typedef struct StdVideoH265SpsVuiFlags {
213     uint32_t    aspect_ratio_info_present_flag : 1;
214     uint32_t    overscan_info_present_flag : 1;
215     uint32_t    overscan_appropriate_flag : 1;
216     uint32_t    video_signal_type_present_flag : 1;
217     uint32_t    video_full_range_flag : 1;
218     uint32_t    colour_description_present_flag : 1;
219     uint32_t    chroma_loc_info_present_flag : 1;
220     uint32_t    neutral_chroma_indication_flag : 1;
221     uint32_t    field_seq_flag : 1;
222     uint32_t    frame_field_info_present_flag : 1;
223     uint32_t    default_display_window_flag : 1;
224     uint32_t    vui_timing_info_present_flag : 1;
225     uint32_t    vui_poc_proportional_to_timing_flag : 1;
226     uint32_t    vui_hrd_parameters_present_flag : 1;
227     uint32_t    bitstream_restriction_flag : 1;
228     uint32_t    tiles_fixed_structure_flag : 1;
229     uint32_t    motion_vectors_over_pic_boundaries_flag : 1;
230     uint32_t    restricted_ref_pic_lists_flag : 1;
231 } StdVideoH265SpsVuiFlags;
232 
233 typedef struct StdVideoH265SequenceParameterSetVui {
234     StdVideoH265SpsVuiFlags             flags;
235     StdVideoH265AspectRatioIdc          aspect_ratio_idc;
236     uint16_t                            sar_width;
237     uint16_t                            sar_height;
238     uint8_t                             video_format;
239     uint8_t                             colour_primaries;
240     uint8_t                             transfer_characteristics;
241     uint8_t                             matrix_coeffs;
242     uint8_t                             chroma_sample_loc_type_top_field;
243     uint8_t                             chroma_sample_loc_type_bottom_field;
244     uint8_t                             reserved1;
245     uint8_t                             reserved2;
246     uint16_t                            def_disp_win_left_offset;
247     uint16_t                            def_disp_win_right_offset;
248     uint16_t                            def_disp_win_top_offset;
249     uint16_t                            def_disp_win_bottom_offset;
250     uint32_t                            vui_num_units_in_tick;
251     uint32_t                            vui_time_scale;
252     uint32_t                            vui_num_ticks_poc_diff_one_minus1;
253     uint16_t                            min_spatial_segmentation_idc;
254     uint16_t                            reserved3;
255     uint8_t                             max_bytes_per_pic_denom;
256     uint8_t                             max_bits_per_min_cu_denom;
257     uint8_t                             log2_max_mv_length_horizontal;
258     uint8_t                             log2_max_mv_length_vertical;
259     const StdVideoH265HrdParameters*    pHrdParameters;
260 } StdVideoH265SequenceParameterSetVui;
261 
262 typedef struct StdVideoH265PredictorPaletteEntries {
263     uint16_t    PredictorPaletteEntries[STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE][STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE];
264 } StdVideoH265PredictorPaletteEntries;
265 
266 typedef struct StdVideoH265SpsFlags {
267     uint32_t    sps_temporal_id_nesting_flag : 1;
268     uint32_t    separate_colour_plane_flag : 1;
269     uint32_t    conformance_window_flag : 1;
270     uint32_t    sps_sub_layer_ordering_info_present_flag : 1;
271     uint32_t    scaling_list_enabled_flag : 1;
272     uint32_t    sps_scaling_list_data_present_flag : 1;
273     uint32_t    amp_enabled_flag : 1;
274     uint32_t    sample_adaptive_offset_enabled_flag : 1;
275     uint32_t    pcm_enabled_flag : 1;
276     uint32_t    pcm_loop_filter_disabled_flag : 1;
277     uint32_t    long_term_ref_pics_present_flag : 1;
278     uint32_t    sps_temporal_mvp_enabled_flag : 1;
279     uint32_t    strong_intra_smoothing_enabled_flag : 1;
280     uint32_t    vui_parameters_present_flag : 1;
281     uint32_t    sps_extension_present_flag : 1;
282     uint32_t    sps_range_extension_flag : 1;
283     uint32_t    transform_skip_rotation_enabled_flag : 1;
284     uint32_t    transform_skip_context_enabled_flag : 1;
285     uint32_t    implicit_rdpcm_enabled_flag : 1;
286     uint32_t    explicit_rdpcm_enabled_flag : 1;
287     uint32_t    extended_precision_processing_flag : 1;
288     uint32_t    intra_smoothing_disabled_flag : 1;
289     uint32_t    high_precision_offsets_enabled_flag : 1;
290     uint32_t    persistent_rice_adaptation_enabled_flag : 1;
291     uint32_t    cabac_bypass_alignment_enabled_flag : 1;
292     uint32_t    sps_scc_extension_flag : 1;
293     uint32_t    sps_curr_pic_ref_enabled_flag : 1;
294     uint32_t    palette_mode_enabled_flag : 1;
295     uint32_t    sps_palette_predictor_initializers_present_flag : 1;
296     uint32_t    intra_boundary_filtering_disabled_flag : 1;
297 } StdVideoH265SpsFlags;
298 
299 typedef struct StdVideoH265ShortTermRefPicSetFlags {
300     uint32_t    inter_ref_pic_set_prediction_flag : 1;
301     uint32_t    delta_rps_sign : 1;
302 } StdVideoH265ShortTermRefPicSetFlags;
303 
304 typedef struct StdVideoH265ShortTermRefPicSet {
305     StdVideoH265ShortTermRefPicSetFlags    flags;
306     uint32_t                               delta_idx_minus1;
307     uint16_t                               use_delta_flag;
308     uint16_t                               abs_delta_rps_minus1;
309     uint16_t                               used_by_curr_pic_flag;
310     uint16_t                               used_by_curr_pic_s0_flag;
311     uint16_t                               used_by_curr_pic_s1_flag;
312     uint16_t                               reserved1;
313     uint8_t                                reserved2;
314     uint8_t                                reserved3;
315     uint8_t                                num_negative_pics;
316     uint8_t                                num_positive_pics;
317     uint16_t                               delta_poc_s0_minus1[STD_VIDEO_H265_MAX_DPB_SIZE];
318     uint16_t                               delta_poc_s1_minus1[STD_VIDEO_H265_MAX_DPB_SIZE];
319 } StdVideoH265ShortTermRefPicSet;
320 
321 typedef struct StdVideoH265LongTermRefPicsSps {
322     uint32_t    used_by_curr_pic_lt_sps_flag;
323     uint32_t    lt_ref_pic_poc_lsb_sps[STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS];
324 } StdVideoH265LongTermRefPicsSps;
325 
326 typedef struct StdVideoH265SequenceParameterSet {
327     StdVideoH265SpsFlags                          flags;
328     StdVideoH265ChromaFormatIdc                   chroma_format_idc;
329     uint32_t                                      pic_width_in_luma_samples;
330     uint32_t                                      pic_height_in_luma_samples;
331     uint8_t                                       sps_video_parameter_set_id;
332     uint8_t                                       sps_max_sub_layers_minus1;
333     uint8_t                                       sps_seq_parameter_set_id;
334     uint8_t                                       bit_depth_luma_minus8;
335     uint8_t                                       bit_depth_chroma_minus8;
336     uint8_t                                       log2_max_pic_order_cnt_lsb_minus4;
337     uint8_t                                       log2_min_luma_coding_block_size_minus3;
338     uint8_t                                       log2_diff_max_min_luma_coding_block_size;
339     uint8_t                                       log2_min_luma_transform_block_size_minus2;
340     uint8_t                                       log2_diff_max_min_luma_transform_block_size;
341     uint8_t                                       max_transform_hierarchy_depth_inter;
342     uint8_t                                       max_transform_hierarchy_depth_intra;
343     uint8_t                                       num_short_term_ref_pic_sets;
344     uint8_t                                       num_long_term_ref_pics_sps;
345     uint8_t                                       pcm_sample_bit_depth_luma_minus1;
346     uint8_t                                       pcm_sample_bit_depth_chroma_minus1;
347     uint8_t                                       log2_min_pcm_luma_coding_block_size_minus3;
348     uint8_t                                       log2_diff_max_min_pcm_luma_coding_block_size;
349     uint8_t                                       reserved1;
350     uint8_t                                       reserved2;
351     uint8_t                                       palette_max_size;
352     uint8_t                                       delta_palette_max_predictor_size;
353     uint8_t                                       motion_vector_resolution_control_idc;
354     uint8_t                                       sps_num_palette_predictor_initializers_minus1;
355     uint32_t                                      conf_win_left_offset;
356     uint32_t                                      conf_win_right_offset;
357     uint32_t                                      conf_win_top_offset;
358     uint32_t                                      conf_win_bottom_offset;
359     const StdVideoH265ProfileTierLevel*           pProfileTierLevel;
360     const StdVideoH265DecPicBufMgr*               pDecPicBufMgr;
361     const StdVideoH265ScalingLists*               pScalingLists;
362     const StdVideoH265ShortTermRefPicSet*         pShortTermRefPicSet;
363     const StdVideoH265LongTermRefPicsSps*         pLongTermRefPicsSps;
364     const StdVideoH265SequenceParameterSetVui*    pSequenceParameterSetVui;
365     const StdVideoH265PredictorPaletteEntries*    pPredictorPaletteEntries;
366 } StdVideoH265SequenceParameterSet;
367 
368 typedef struct StdVideoH265PpsFlags {
369     uint32_t    dependent_slice_segments_enabled_flag : 1;
370     uint32_t    output_flag_present_flag : 1;
371     uint32_t    sign_data_hiding_enabled_flag : 1;
372     uint32_t    cabac_init_present_flag : 1;
373     uint32_t    constrained_intra_pred_flag : 1;
374     uint32_t    transform_skip_enabled_flag : 1;
375     uint32_t    cu_qp_delta_enabled_flag : 1;
376     uint32_t    pps_slice_chroma_qp_offsets_present_flag : 1;
377     uint32_t    weighted_pred_flag : 1;
378     uint32_t    weighted_bipred_flag : 1;
379     uint32_t    transquant_bypass_enabled_flag : 1;
380     uint32_t    tiles_enabled_flag : 1;
381     uint32_t    entropy_coding_sync_enabled_flag : 1;
382     uint32_t    uniform_spacing_flag : 1;
383     uint32_t    loop_filter_across_tiles_enabled_flag : 1;
384     uint32_t    pps_loop_filter_across_slices_enabled_flag : 1;
385     uint32_t    deblocking_filter_control_present_flag : 1;
386     uint32_t    deblocking_filter_override_enabled_flag : 1;
387     uint32_t    pps_deblocking_filter_disabled_flag : 1;
388     uint32_t    pps_scaling_list_data_present_flag : 1;
389     uint32_t    lists_modification_present_flag : 1;
390     uint32_t    slice_segment_header_extension_present_flag : 1;
391     uint32_t    pps_extension_present_flag : 1;
392     uint32_t    cross_component_prediction_enabled_flag : 1;
393     uint32_t    chroma_qp_offset_list_enabled_flag : 1;
394     uint32_t    pps_curr_pic_ref_enabled_flag : 1;
395     uint32_t    residual_adaptive_colour_transform_enabled_flag : 1;
396     uint32_t    pps_slice_act_qp_offsets_present_flag : 1;
397     uint32_t    pps_palette_predictor_initializers_present_flag : 1;
398     uint32_t    monochrome_palette_flag : 1;
399     uint32_t    pps_range_extension_flag : 1;
400 } StdVideoH265PpsFlags;
401 
402 typedef struct StdVideoH265PictureParameterSet {
403     StdVideoH265PpsFlags                          flags;
404     uint8_t                                       pps_pic_parameter_set_id;
405     uint8_t                                       pps_seq_parameter_set_id;
406     uint8_t                                       sps_video_parameter_set_id;
407     uint8_t                                       num_extra_slice_header_bits;
408     uint8_t                                       num_ref_idx_l0_default_active_minus1;
409     uint8_t                                       num_ref_idx_l1_default_active_minus1;
410     int8_t                                        init_qp_minus26;
411     uint8_t                                       diff_cu_qp_delta_depth;
412     int8_t                                        pps_cb_qp_offset;
413     int8_t                                        pps_cr_qp_offset;
414     int8_t                                        pps_beta_offset_div2;
415     int8_t                                        pps_tc_offset_div2;
416     uint8_t                                       log2_parallel_merge_level_minus2;
417     uint8_t                                       log2_max_transform_skip_block_size_minus2;
418     uint8_t                                       diff_cu_chroma_qp_offset_depth;
419     uint8_t                                       chroma_qp_offset_list_len_minus1;
420     int8_t                                        cb_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE];
421     int8_t                                        cr_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE];
422     uint8_t                                       log2_sao_offset_scale_luma;
423     uint8_t                                       log2_sao_offset_scale_chroma;
424     int8_t                                        pps_act_y_qp_offset_plus5;
425     int8_t                                        pps_act_cb_qp_offset_plus5;
426     int8_t                                        pps_act_cr_qp_offset_plus3;
427     uint8_t                                       pps_num_palette_predictor_initializers;
428     uint8_t                                       luma_bit_depth_entry_minus8;
429     uint8_t                                       chroma_bit_depth_entry_minus8;
430     uint8_t                                       num_tile_columns_minus1;
431     uint8_t                                       num_tile_rows_minus1;
432     uint8_t                                       reserved1;
433     uint8_t                                       reserved2;
434     uint16_t                                      column_width_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE];
435     uint16_t                                      row_height_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE];
436     uint32_t                                      reserved3;
437     const StdVideoH265ScalingLists*               pScalingLists;
438     const StdVideoH265PredictorPaletteEntries*    pPredictorPaletteEntries;
439 } StdVideoH265PictureParameterSet;
440 
441 
442 #ifdef __cplusplus
443 }
444 #endif
445 
446 #endif
447