diff mbox series

[FFmpeg-devel] lavc/vvc: Correct sps_num_subpics_minus1 minimum

Message ID 20240225175101.1252-1-post@frankplowman.com
State Accepted
Commit 53ab7ff67e7ee9e7cae5cb0449203a7951cbe029
Headers show
Series [FFmpeg-devel] lavc/vvc: Correct sps_num_subpics_minus1 minimum | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Frank Plowman Feb. 25, 2024, 5:51 p.m. UTC
The spec says "the value of sps_num_subpics_minus1 shall be in the
range of 0 to MaxSlicesPerAu − 1, inclusive."

Signed-off-by: Frank Plowman <post@frankplowman.com>
---
 libavcodec/cbs_h266_syntax_template.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

James Almer Feb. 25, 2024, 7:50 p.m. UTC | #1
On 2/25/2024 2:51 PM, Frank Plowman wrote:
> The spec says "the value of sps_num_subpics_minus1 shall be in the
> range of 0 to MaxSlicesPerAu − 1, inclusive."
> 
> Signed-off-by: Frank Plowman <post@frankplowman.com>
> ---
>   libavcodec/cbs_h266_syntax_template.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavcodec/cbs_h266_syntax_template.c b/libavcodec/cbs_h266_syntax_template.c
> index 26ee7a420b..1d4d0c796f 100644
> --- a/libavcodec/cbs_h266_syntax_template.c
> +++ b/libavcodec/cbs_h266_syntax_template.c
> @@ -1130,7 +1130,7 @@ static int FUNC(sps)(CodedBitstreamContext *ctx, RWContext *rw,
>   
>       flag(sps_subpic_info_present_flag);
>       if (current->sps_subpic_info_present_flag) {
> -        ue(sps_num_subpics_minus1, 1, VVC_MAX_SLICES - 1);
> +        ue(sps_num_subpics_minus1, 0, VVC_MAX_SLICES - 1);

Strictly speaking, MaxSlicesPerAu varies depending on the stream's 
general_level_idc value, listed in table A.2 from Annex-A (in ITU-T 
H.266 V3).

Right now, VVC_MAX_SLICES is defined as 600 in vvc.h, but the max value 
in the spec is 1000, from level 6.3. I assume it was added in V3?

>           if (current->sps_num_subpics_minus1 > 0) {
>               flag(sps_independent_subpics_flag);
>               flag(sps_subpic_same_size_flag);
Frank Plowman Feb. 25, 2024, 9:20 p.m. UTC | #2
On 25/02/2024 19:50, James Almer wrote:
> On 2/25/2024 2:51 PM, Frank Plowman wrote:
>> The spec says "the value of sps_num_subpics_minus1 shall be in the
>> range of 0 to MaxSlicesPerAu − 1, inclusive."
>>
>> Signed-off-by: Frank Plowman <post@frankplowman.com>
>> ---
>>   libavcodec/cbs_h266_syntax_template.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/cbs_h266_syntax_template.c
>> b/libavcodec/cbs_h266_syntax_template.c
>> index 26ee7a420b..1d4d0c796f 100644
>> --- a/libavcodec/cbs_h266_syntax_template.c
>> +++ b/libavcodec/cbs_h266_syntax_template.c
>> @@ -1130,7 +1130,7 @@ static int FUNC(sps)(CodedBitstreamContext *ctx,
>> RWContext *rw,
>>         flag(sps_subpic_info_present_flag);
>>       if (current->sps_subpic_info_present_flag) {
>> -        ue(sps_num_subpics_minus1, 1, VVC_MAX_SLICES - 1);
>> +        ue(sps_num_subpics_minus1, 0, VVC_MAX_SLICES - 1);
> 
> Strictly speaking, MaxSlicesPerAu varies depending on the stream's
> general_level_idc value, listed in table A.2 from Annex-A (in ITU-T
> H.266 V3).
> 
> Right now, VVC_MAX_SLICES is defined as 600 in vvc.h, but the max value
> in the spec is 1000, from level 6.3. I assume it was added in V3?

Good catch.  It looks like level 6.3 has been in the spec since the
first version, but all the VVC_MAX_* definitions derived from Annex A
did not account for it.  Here is a patch which corrects this:
https://ffmpeg.org//pipermail/ffmpeg-devel/2024-February/322140.html

>>           if (current->sps_num_subpics_minus1 > 0) {
>>               flag(sps_independent_subpics_flag);
>>               flag(sps_subpic_same_size_flag);
Nuo Mi Feb. 27, 2024, 6:08 a.m. UTC | #3
On Mon, Feb 26, 2024 at 5:20 AM Frank Plowman <post@frankplowman.com> wrote:

> On 25/02/2024 19:50, James Almer wrote:
> > On 2/25/2024 2:51 PM, Frank Plowman wrote:
> >> The spec says "the value of sps_num_subpics_minus1 shall be in the
> >> range of 0 to MaxSlicesPerAu − 1, inclusive."
> >>
> >> Signed-off-by: Frank Plowman <post@frankplowman.com>
> >> ---
> >>   libavcodec/cbs_h266_syntax_template.c | 2 +-
> >>   1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/libavcodec/cbs_h266_syntax_template.c
> >> b/libavcodec/cbs_h266_syntax_template.c
> >> index 26ee7a420b..1d4d0c796f 100644
> >> --- a/libavcodec/cbs_h266_syntax_template.c
> >> +++ b/libavcodec/cbs_h266_syntax_template.c
> >> @@ -1130,7 +1130,7 @@ static int FUNC(sps)(CodedBitstreamContext *ctx,
> >> RWContext *rw,
> >>         flag(sps_subpic_info_present_flag);
> >>       if (current->sps_subpic_info_present_flag) {
> >> -        ue(sps_num_subpics_minus1, 1, VVC_MAX_SLICES - 1);
> >> +        ue(sps_num_subpics_minus1, 0, VVC_MAX_SLICES - 1);
> >
> > Strictly speaking, MaxSlicesPerAu varies depending on the stream's
> > general_level_idc value, listed in table A.2 from Annex-A (in ITU-T
> > H.266 V3).
> >
> > Right now, VVC_MAX_SLICES is defined as 600 in vvc.h, but the max value
> > in the spec is 1000, from level 6.3. I assume it was added in V3?
>
> Good catch.  It looks like level 6.3 has been in the spec since the
> first version, but all the VVC_MAX_* definitions derived from Annex A
> did not account for it.  Here is a patch which corrects this:
> https://ffmpeg.org//pipermail/ffmpeg-devel/2024-February/322140.html

No, level 6.3 was not present in v1 (08/2020); it was added in v2 (04/2022).


>
> >>           if (current->sps_num_subpics_minus1 > 0) {
> >>               flag(sps_independent_subpics_flag);
> >>               flag(sps_subpic_same_size_flag);
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
diff mbox series

Patch

diff --git a/libavcodec/cbs_h266_syntax_template.c b/libavcodec/cbs_h266_syntax_template.c
index 26ee7a420b..1d4d0c796f 100644
--- a/libavcodec/cbs_h266_syntax_template.c
+++ b/libavcodec/cbs_h266_syntax_template.c
@@ -1130,7 +1130,7 @@  static int FUNC(sps)(CodedBitstreamContext *ctx, RWContext *rw,
 
     flag(sps_subpic_info_present_flag);
     if (current->sps_subpic_info_present_flag) {
-        ue(sps_num_subpics_minus1, 1, VVC_MAX_SLICES - 1);
+        ue(sps_num_subpics_minus1, 0, VVC_MAX_SLICES - 1);
         if (current->sps_num_subpics_minus1 > 0) {
             flag(sps_independent_subpics_flag);
             flag(sps_subpic_same_size_flag);