diff mbox series

[FFmpeg-devel] avformat/vvc: fix parsing sps_subpic_id

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

Checks

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

Commit Message

James Almer May 19, 2024, 1:25 p.m. UTC
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(-)

Comments

James Almer May 22, 2024, 1 p.m. UTC | #1
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 mbox series

Patch

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]
                 }
         }
     }