Message ID | 20240519132554.3342-1-jamrial@gmail.com |
---|---|
State | Accepted |
Commit | 2d84ee374528a8a8eed345a8147e146a0112e43a |
Headers | show |
Series | [FFmpeg-devel] avformat/vvc: fix parsing sps_subpic_id | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | fail | Make fate failed |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | fail | Make fate failed |
On 5/19/2024 10:25 AM, James Almer wrote: > The length of the sps_subpic_id[i] syntax element is sps_subpic_id_len_minus1 + 1 bits. > > Signed-off-by: James Almer <jamrial@gmail.com> > --- > libavformat/vvc.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/libavformat/vvc.c b/libavformat/vvc.c > index 34c0aaf58b..ac3209a01b 100644 > --- a/libavformat/vvc.c > +++ b/libavformat/vvc.c > @@ -371,6 +371,7 @@ static int vvcc_parse_sps(GetBitContext *gb, > const int tmp_height_val = AV_CEIL_RSHIFT(sps_pic_height_max_in_luma_samples, ctb_log2_size_y); > const int wlen = av_ceil_log2(tmp_width_val); > const int hlen = av_ceil_log2(tmp_height_val); > + unsigned int sps_subpic_id_len; > if (sps_num_subpics_minus1 > 0) { // sps_num_subpics_minus1 > sps_independent_subpics_flag = get_bits1(gb); > sps_subpic_same_size_flag = get_bits1(gb); > @@ -390,11 +391,11 @@ static int vvcc_parse_sps(GetBitContext *gb, > skip_bits(gb, 2); // sps_subpic_treated_as_pic_flag && sps_loop_filter_across_subpic_enabled_flag > } > } > - get_ue_golomb_long(gb); // sps_subpic_id_len_minus1 > + sps_subpic_id_len = get_ue_golomb_long(gb) + 1; > if (get_bits1(gb)) { // sps_subpic_id_mapping_explicitly_signalled_flag > if (get_bits1(gb)) // sps_subpic_id_mapping_present_flag > for (int i = 0; i <= sps_num_subpics_minus1; i++) { > - skip_bits1(gb); // sps_subpic_id[i] > + skip_bits_long(gb, sps_subpic_id_len); // sps_subpic_id[i] > } > } > } Will apply.
diff --git a/libavformat/vvc.c b/libavformat/vvc.c index 34c0aaf58b..ac3209a01b 100644 --- a/libavformat/vvc.c +++ b/libavformat/vvc.c @@ -371,6 +371,7 @@ static int vvcc_parse_sps(GetBitContext *gb, const int tmp_height_val = AV_CEIL_RSHIFT(sps_pic_height_max_in_luma_samples, ctb_log2_size_y); const int wlen = av_ceil_log2(tmp_width_val); const int hlen = av_ceil_log2(tmp_height_val); + unsigned int sps_subpic_id_len; if (sps_num_subpics_minus1 > 0) { // sps_num_subpics_minus1 sps_independent_subpics_flag = get_bits1(gb); sps_subpic_same_size_flag = get_bits1(gb); @@ -390,11 +391,11 @@ static int vvcc_parse_sps(GetBitContext *gb, skip_bits(gb, 2); // sps_subpic_treated_as_pic_flag && sps_loop_filter_across_subpic_enabled_flag } } - get_ue_golomb_long(gb); // sps_subpic_id_len_minus1 + sps_subpic_id_len = get_ue_golomb_long(gb) + 1; if (get_bits1(gb)) { // sps_subpic_id_mapping_explicitly_signalled_flag if (get_bits1(gb)) // sps_subpic_id_mapping_present_flag for (int i = 0; i <= sps_num_subpics_minus1; i++) { - skip_bits1(gb); // sps_subpic_id[i] + skip_bits_long(gb, sps_subpic_id_len); // sps_subpic_id[i] } } }
The length of the sps_subpic_id[i] syntax element is sps_subpic_id_len_minus1 + 1 bits. Signed-off-by: James Almer <jamrial@gmail.com> --- libavformat/vvc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)