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

Frank Plowman post at frankplowman.com
Sun Feb 25 23:20:05 EET 2024


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 at 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);


More information about the ffmpeg-devel mailing list