77 enum { kExtendedSar = 255 };
79 bool aspect_ratio_info_present_flag =
false;
80 int aspect_ratio_idc = 0;
83 int transfer_characteristics = 0;
84 int color_primaries = 0;
85 int matrix_coefficients = 0;
87 bool vui_timing_info_present_flag =
false;
88 long vui_num_units_in_tick = 0;
89 long vui_time_scale = 0;
91 bool bitstream_restriction_flag =
false;
92 int min_spatial_segmentation_idc = 0;
104 int pic_parameter_set_id = 0;
105 int seq_parameter_set_id = 0;
107 bool dependent_slice_segments_enabled_flag =
false;
108 bool output_flag_present_flag =
false;
109 int num_extra_slice_header_bits = 0;
110 bool sign_data_hiding_enabled_flag =
false;
111 bool cabac_init_present_flag =
false;
113 int num_ref_idx_l0_default_active_minus1 = 0;
114 int num_ref_idx_l1_default_active_minus1 = 0;
115 int init_qp_minus26 = 0;
116 bool constrained_intra_pred_flag =
false;
117 bool transform_skip_enabled_flag =
false;
119 bool cu_qp_delta_enabled_flag = 0;
120 int diff_cu_qp_delta_depth = 0;
121 int cb_qp_offset = 0;
122 int cr_qp_offset = 0;
124 bool slice_chroma_qp_offsets_present_flag =
false;
125 bool weighted_pred_flag =
false;
126 bool weighted_bipred_flag =
false;
127 bool transquant_bypass_enabled_flag =
false;
128 bool tiles_enabled_flag =
false;
129 bool entropy_coding_sync_enabled_flag =
false;
131 int num_tile_columns_minus1 = 0;
132 int num_tile_rows_minus1 = 0;
133 bool uniform_spacing_flag =
true;
134 std::vector<int> column_width_minus1;
135 std::vector<int> row_height_minus1;
136 bool loop_filter_across_tiles_enabled_flag =
true;
138 bool loop_filter_across_slices_enabled_flag =
false;
139 bool deblocking_filter_control_present_flag =
false;
140 bool deblocking_filter_override_enabled_flag =
false;
141 bool deblocking_filter_disabled_flag =
false;
142 int beta_offset_div2 = 0;
143 int tc_offset_div2 = 0;
145 bool scaling_list_data_present_flag =
false;
148 bool lists_modification_present_flag =
false;
149 int log2_parallel_merge_level_minus2 = 0;
150 bool slice_segment_header_extension_present_flag =
false;
153 bool chroma_qp_offset_list_enabled_flag =
false;
162 int GetPicSizeInCtbsY()
const;
163 int GetChromaArrayType()
const;
168 int video_parameter_set_id = 0;
169 int max_sub_layers_minus1 = 0;
170 bool temporal_id_nesting_flag =
false;
175 int general_profile_tier_level_data[12] = {};
177 int seq_parameter_set_id = 0;
179 int chroma_format_idc = 0;
180 bool separate_colour_plane_flag =
false;
181 int pic_width_in_luma_samples = 0;
182 int pic_height_in_luma_samples = 0;
184 bool conformance_window_flag =
false;
185 int conf_win_left_offset = 0;
186 int conf_win_right_offset = 0;
187 int conf_win_top_offset = 0;
188 int conf_win_bottom_offset = 0;
190 int bit_depth_luma_minus8 = 0;
191 int bit_depth_chroma_minus8 = 0;
192 int log2_max_pic_order_cnt_lsb_minus4 = 0;
194 bool sub_layer_ordering_info_present_flag =
false;
195 int max_dec_pic_buffering_minus1[8];
196 int max_num_reorder_pics[8];
197 int max_latency_increase_plus1[8];
199 int log2_min_luma_coding_block_size_minus3 = 0;
200 int log2_diff_max_min_luma_coding_block_size = 0;
201 int log2_min_luma_transform_block_size_minus2 = 0;
202 int log2_diff_max_min_luma_transform_block_size = 0;
203 int max_transform_hierarchy_depth_inter = 0;
204 int max_transform_hierarchy_depth_intra = 0;
206 bool scaling_list_enabled_flag =
false;
207 bool scaling_list_data_present_flag =
false;
210 bool amp_enabled_flag =
false;
211 bool sample_adaptive_offset_enabled_flag =
false;
212 bool pcm_enabled_flag =
false;
213 int pcm_sample_bit_depth_luma_minus1 = 0;
214 int pcm_sample_bit_depth_chroma_minus1 = 0;
215 int log2_min_pcm_luma_coding_block_size_minus3 = 0;
216 int log2_diff_max_min_pcm_luma_coding_block_size = 0;
217 bool pcm_loop_filter_disabled_flag =
false;
219 int num_short_term_ref_pic_sets = 0;
220 std::vector<H265ReferencePictureSet> st_ref_pic_sets;
222 bool long_term_ref_pic_present_flag =
false;
223 int num_long_term_ref_pics = 0;
224 std::vector<int> lt_ref_pic_poc_lsb;
225 std::vector<bool> used_by_curr_pic_lt_flag;
227 bool temporal_mvp_enabled_flag =
false;
228 bool strong_intra_smoothing_enabled_flag =
false;
230 bool vui_parameters_present =
false;
237 int pic_width_vps_in_luma_samples = 0;
238 int pic_height_vps_in_luma_samples = 0;
240 int chroma_format_vps_idc = 0;
241 bool separate_colour_plane_vps_flag =
false;
243 int bit_depth_vps_luma_minus8 = 0;
244 int bit_depth_vps_chroma_minus8 = 0;
246 int conf_win_vps_left_offset = 0;
247 int conf_win_vps_right_offset = 0;
248 int conf_win_vps_top_offset = 0;
249 int conf_win_vps_bottom_offset = 0;
267 int scalability_type = kNone;
269 int vps_video_parameter_set_id = 0;
270 bool vps_base_layer_internal_flag =
false;
271 bool vps_base_layer_available_flag =
false;
273 int vps_max_layers_minus1 = 0;
274 int vps_max_sub_layers_minus1 = 0;
275 int sub_layers_vps_max_minus1[kMaxLayers];
276 int max_tid_il_ref_pics_plus1[kMaxLayers][kMaxLayers];
278 int layer_id_in_vps[kMaxLayerIdPlus1];
279 int view_id[kMaxLayerIdPlus1];
283 int general_profile_tier_level_data[kMaxNumProfileTierLevels]
284 [kGeneralProfileTierLevelBytes];
285 int num_profile_tier_levels = 0;
286 int profile_tier_level_idx[kMaxOuputLayerSets][kMaxLayerIdPlus1];
289 int num_rep_formats = 0;
291 int vps_max_layer_id = 0;
292 int vps_num_layer_sets_minus1 = 0;
293 int num_direct_ref_layers[kMaxLayerIdPlus1];
294 int id_direct_ref_layers[kMaxLayerIdPlus1][kMaxLayers];
295 bool default_ref_layers_active_flag =
false;
296 bool max_one_active_ref_layer_flag =
false;
297 bool poc_lsb_not_present_flag[kMaxLayers];
316 bool delta_poc_msb_present_flag;
317 int delta_poc_msb_cycle_lt;
321 int used_by_curr_pic_lt = 0;
330 size_t header_bit_size = 0;
332 bool first_slice_segment_in_pic_flag =
false;
333 bool no_output_of_prior_pics_flag =
false;
334 int pic_parameter_set_id = 0;
336 bool dependent_slice_segment_flag =
false;
337 int segment_address = 0;
339 bool pic_output_flag =
true;
340 int colour_plane_id = 0;
341 int slice_pic_order_cnt_lsb = 0;
343 bool short_term_ref_pic_set_sps_flag =
false;
345 int short_term_ref_pic_set_idx = 0;
347 int num_long_term_sps = 0;
348 int num_long_term_pics = 0;
349 std::vector<LongTermPicsInfo> long_term_pics_info;
351 bool slice_temporal_mvp_enabled_flag =
false;
352 bool slice_sao_luma_flag =
false;
353 bool slice_sao_chroma_flag =
false;
355 bool num_ref_idx_active_override_flag =
false;
356 int num_ref_idx_l0_active_minus1 = 0;
357 int num_ref_idx_l1_active_minus1 = 0;
361 bool mvd_l1_zero_flag =
false;
362 bool cabac_init_flag =
false;
363 bool collocated_from_l0 =
true;
364 int collocated_ref_idx = 0;
366 int five_minus_max_num_merge_cand = 0;
367 int slice_qp_delta = 0;
368 int slice_cb_qp_offset = 0;
369 int slice_cr_qp_offset = 0;
371 bool cu_chroma_qp_offset_enabled_flag =
false;
372 bool deblocking_filter_override_flag =
false;
373 bool slice_deblocking_filter_disabled_flag =
false;
374 int slice_beta_offset_div2 = 0;
375 int slice_tc_offset_div2 = 0;
376 bool slice_loop_filter_across_slices_enabled_flag =
false;
378 int num_entry_point_offsets = 0;
379 int offset_len_minus1 = 0;
380 std::vector<int> entry_point_offset_minus1;
382 bool inter_layer_pred_enabled_flag =
false;
423 Result ParseVuiParameters(
int max_num_sub_layers_minus1,
427 Result ParseReferencePictureSet(
428 int num_short_term_ref_pic_sets,
430 const std::vector<H265ReferencePictureSet>& ref_pic_sets,
434 Result SkipReferencePictureListModification(
437 int num_pic_total_curr,
440 Result SkipPredictionWeightTablePart(
int num_ref_idx_minus1,
441 int chroma_array_type,
444 Result SkipPredictionWeightTable(
bool is_b_slice,
449 Result ReadProfileTierLevel(
bool profile_present,
450 int max_num_sub_layers_minus1,
453 int* general_profile_tier_level_data);
457 Result SkipHrdParameters(
bool common_inf_present_flag,
458 int max_num_sub_layers_minus1,
461 Result SkipSubLayerHrdParameters(
int cpb_cnt_minus1,
462 bool sub_pic_hdr_params_present_flag,
467 typedef std::map<int, std::unique_ptr<H265Vps>> VpsById;
468 typedef std::map<int, std::unique_ptr<H265Sps>> SpsById;
469 typedef std::map<int, std::unique_ptr<H265Pps>> PpsById;
471 VpsById active_vpses_;
472 SpsById active_spses_;
473 PpsById active_ppses_;