On 02/03/2025 12:41, Nuo Mi wrote: > On Sun, Feb 23, 2025 at 8:05 PM Frank Plowman <p...@frankplowman.com> wrote: > >> If pps_single_slice_per_subpic_flag is 1, >> slice_{width,height}_in_ctus are undefined and we must instead get the >> dimensions of the slice by referring to the corresponding subpicture. >> >> Signed-off-by: Frank Plowman <p...@frankplowman.com> >> --- >> libavcodec/cbs_h266_syntax_template.c | 34 ++++++++++++++++++++++----- >> 1 file changed, 28 insertions(+), 6 deletions(-) >> >> diff --git a/libavcodec/cbs_h266_syntax_template.c >> b/libavcodec/cbs_h266_syntax_template.c >> index 58211026bb..b84f3e29db 100644 >> --- a/libavcodec/cbs_h266_syntax_template.c >> +++ b/libavcodec/cbs_h266_syntax_template.c >> @@ -3440,13 +3440,35 @@ static int FUNC(slice_header) >> (CodedBitstreamContext *ctx, RWContext *rw, >> for (i = 0; i < current->curr_subpic_idx; i++) { >> slice_idx += pps->num_slices_in_subpic[i]; >> } >> - width_in_tiles = >> - pps->pps_slice_width_in_tiles_minus1[slice_idx] + 1; >> >> - if (entropy_sync) >> - height = pps->slice_height_in_ctus[slice_idx]; >> - else >> - height = pps->pps_slice_height_in_tiles_minus1[slice_idx] >> + 1; >> + if (pps->pps_single_slice_per_subpic_flag) { >> + const int width_in_ctus = >> sps->sps_subpic_width_minus1[slice_idx] + 1; >> + const int subpic_l = >> sps->sps_subpic_ctu_top_left_x[slice_idx]; >> + const int subpic_r = subpic_l + width_in_ctus; >> + >> + int ctb_x = 0, tile_x = 0; >> + for (; ctb_x < subpic_l && tile_x < >> pps->num_tile_columns; tile_x++) >> + ctb_x += pps->col_width_val[tile_x]; >> + >> + width_in_tiles = 0; >> + for (; ctb_x < subpic_r && tile_x < >> pps->num_tile_columns; tile_x++) { >> + ctb_x += pps->col_width_val[tile_x]; >> + width_in_tiles++; >> + } >> + >> + if (entropy_sync) >> + height = sps->sps_subpic_height_minus1[slice_idx] + 1; >> + else >> + height = >> pps->pps_slice_height_in_tiles_minus1[slice_idx] + 1; >> > pps_slice_height_in_tiles_minus1 is also undefined if > pps_single_slice_per_subpic_flag is true.
Good catch! Fixed in v2. Thanks, Frank _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".