131 ptl->ptl_frame_only_constraint_flag;
137 if (
ptl->gci_present_flag) {
140 &
ptl->gci_general_constraints[0],
sizeof(uint8_t) * 9);
158 ptl->ptl_sublayer_level_present_flag[
i];
162 ptl->sublayer_level_idc[
i]);
178 ptl->general_sub_profile_idc[
i];
185 unsigned int profileTierPresentFlag,
186 unsigned int max_sub_layers_minus1)
191 if (profileTierPresentFlag) {
199 if (profileTierPresentFlag) {
202 for (j = 0; j < 8; j++)
209 while (gb->
index % 8 != 0)
213 for (
int i = max_sub_layers_minus1 - 1;
i >= 0;
i--)
216 while (gb->
index % 8 != 0)
219 for (
int i = max_sub_layers_minus1 - 1;
i >= 0;
i--) {
224 if (profileTierPresentFlag) {
238 unsigned int vps_max_layers_minus1;
239 unsigned int vps_max_sublayers_minus1;
240 unsigned int vps_default_ptl_dpb_hrd_max_tid_flag;
241 unsigned int vps_all_independent_layers_flag;
242 unsigned int vps_each_layer_is_an_ols_flag;
243 unsigned int vps_ols_mode_idc;
247 unsigned int vps_num_ptls_minus1 = 0;
254 vps_max_layers_minus1 =
get_bits(gb, 6);
255 vps_max_sublayers_minus1 =
get_bits(gb, 3);
266 vps_max_sublayers_minus1 + 1);
268 if (vps_max_layers_minus1 > 0 && vps_max_sublayers_minus1 > 0)
269 vps_default_ptl_dpb_hrd_max_tid_flag =
get_bits1(gb);
270 if (vps_max_layers_minus1 > 0)
271 vps_all_independent_layers_flag =
get_bits1(gb);
273 vps_all_independent_layers_flag = 1;
275 for (
int i = 0;
i <= vps_max_layers_minus1;
i++) {
277 if (
i > 0 && !vps_all_independent_layers_flag) {
279 unsigned int vps_max_tid_ref_present_flag =
get_bits1(gb);
280 for (
int j = 0; j <
i; j++) {
281 if (vps_max_tid_ref_present_flag &&
get_bits1(gb))
288 if (vps_max_layers_minus1 > 0) {
289 if (vps_all_independent_layers_flag)
290 vps_each_layer_is_an_ols_flag =
get_bits1(gb);
292 vps_each_layer_is_an_ols_flag = 0;
293 if (!vps_each_layer_is_an_ols_flag) {
294 if (!vps_all_independent_layers_flag)
297 vps_ols_mode_idc = 2;
298 if (vps_ols_mode_idc == 2) {
299 unsigned int vps_num_output_layer_sets_minus2 =
get_bits(gb, 8);
300 for (
int i = 1;
i <= vps_num_output_layer_sets_minus2 + 1;
i++) {
301 for (
int j = 0; j <= vps_max_layers_minus1; j++) {
307 vps_num_ptls_minus1 =
get_bits(gb, 8);
309 vps_each_layer_is_an_ols_flag = 0;
312 for (
int i = 0;
i <= vps_num_ptls_minus1;
i++) {
316 vps_pt_present_flag[
i] = 1;
318 if (!vps_default_ptl_dpb_hrd_max_tid_flag)
321 vps_ptl_max_tid[
i] = vps_max_sublayers_minus1;
324 while (gb->
index % 8 != 0)
327 for (
int i = 0;
i <= vps_num_ptls_minus1;
i++)
337 unsigned int sps_max_sublayers_minus1, sps_log2_ctu_size_minus5;
338 unsigned int sps_subpic_same_size_flag, sps_pic_height_max_in_luma_samples,
339 sps_pic_width_max_in_luma_samples;
340 unsigned int sps_independent_subpics_flag;
343 sps_max_sublayers_minus1 =
get_bits(gb, 3);
354 sps_max_sublayers_minus1 + 1);
357 sps_log2_ctu_size_minus5 =
get_bits(gb, 2);
382 const int ctb_log2_size_y = sps_log2_ctu_size_minus5 + 5;
383 const int ctb_size_y = 1 << ctb_log2_size_y;
384 const int tmp_width_val =
AV_CEIL_RSHIFT(sps_pic_width_max_in_luma_samples, ctb_log2_size_y);
385 const int tmp_height_val =
AV_CEIL_RSHIFT(sps_pic_height_max_in_luma_samples, ctb_log2_size_y);
388 if (sps_num_subpics_minus1 > 0) {
389 sps_independent_subpics_flag =
get_bits1(gb);
390 sps_subpic_same_size_flag =
get_bits1(gb);
392 for (
int i = 0; sps_num_subpics_minus1 > 0 &&
i <= sps_num_subpics_minus1;
i++) {
393 if (!sps_subpic_same_size_flag ||
i == 0) {
394 if (
i > 0 && sps_pic_width_max_in_luma_samples > ctb_size_y)
396 if (
i > 0 && sps_pic_height_max_in_luma_samples > ctb_size_y)
398 if (i < sps_num_subpics_minus1 && sps_pic_width_max_in_luma_samples > ctb_size_y)
400 if (i < sps_num_subpics_minus1 && sps_pic_height_max_in_luma_samples > ctb_size_y)
403 if (!sps_independent_subpics_flag) {
410 for (
int i = 0;
i <= sps_num_subpics_minus1;
i++) {
447 uint8_t nal_type,
int ps_array_completeness,
474 num_nalus =
array->num_nalus;
486 array->nal_unit[num_nalus] = nal_buf;
487 array->nal_unit_length[num_nalus] = nal_size;
488 array->NAL_unit_type = nal_type;
513 array->array_completeness = ps_array_completeness;
519 int ps_array_completeness,
553 ps_array_completeness, vvcc);
605 uint16_t j, vps_count = 0, sps_count = 0, pps_count = 0;
606 unsigned char *buf =
NULL;
615 "lengthSizeMinusOne: %" PRIu8
"\n",
618 "ptl_present_flag: %" PRIu8
"\n",
621 "ols_idx: %" PRIu16
"\n", vvcc->
ols_idx);
623 "num_sublayers: %" PRIu8
"\n",
626 "constant_frame_rate: %" PRIu8
"\n",
629 "chroma_format_idc: %" PRIu8
"\n",
633 "bit_depth_minus8: %" PRIu8
"\n",
636 "num_bytes_constraint_info: %" PRIu8
"\n",
639 "general_profile_idc: %" PRIu8
"\n",
642 "general_tier_flag: %" PRIu8
"\n",
645 "general_level_idc: %" PRIu8
"\n",
648 "ptl_frame_only_constraint_flag: %" PRIu8
"\n",
651 "ptl_multilayer_enabled_flag: %" PRIu8
"\n",
655 "general_constraint_info[%d]: %" PRIu8
"\n",
i,
661 "ptl_sublayer_level_present_flag[%" PRIu8
"]: %" PRIu8
"\n",
i,
664 "sublayer_level_idc[%" PRIu8
"]: %" PRIu8
"\n",
i,
669 "num_sub_profiles: %" PRIu8
"\n",
674 "general_sub_profile_idc[%" PRIu8
"]: %" PRIx32
"\n",
i,
679 "max_picture_width: %" PRIu16
"\n",
682 "max_picture_height: %" PRIu16
"\n",
685 "avg_frame_rate: %" PRIu16
"\n",
689 "num_of_arrays: %" PRIu8
"\n",
693 "array_completeness[%" PRIu8
"]: %" PRIu8
"\n",
i,
696 "NAL_unit_type[%" PRIu8
"]: %" PRIu8
"\n",
i,
699 "num_nalus[%" PRIu8
"]: %" PRIu16
"\n",
i,
703 "nal_unit_length[%" PRIu8
"][%" PRIu16
"]: %"
770 (
unsigned char *) malloc(
sizeof(
unsigned char) *
773 num_bytes_constraint_info * 8 - 1 | vvcc->
ptl.
780 uint8_t ptl_sublayer_level_present_flags = 0;
782 ptl_sublayer_level_present_flags =
783 (ptl_sublayer_level_present_flags << 1 | vvcc->
ptl.
784 ptl_sublayer_level_present_flag[
i]);
786 avio_w8(pb, ptl_sublayer_level_present_flags);
846 int size,
int filter_ps,
int *ps_count)
848 int num_ps = 0,
ret = 0;
849 uint8_t *buf, *end, *start =
NULL;
864 while (end - buf > 4) {
866 uint8_t
type = (buf[5] >> 3);
894 int *
size,
int filter_ps,
int *ps_count)
915 int size,
int ps_array_completeness)
918 uint8_t *buf, *end, *start;
924 }
else if ((*
data & 0xf8) == 0xf8) {
942 while (end - buf > 4) {
944 uint8_t
type = (buf[5] >> 3);