From e543a22c387c6446c7eecae7cd477a828d68cdc2 Mon Sep 17 00:00:00 2001 From: Fei Wang Date: Mon, 28 Oct 2024 16:55:20 +0800 Subject: [PATCH] lavc/cbs_h266: Add SliceTopLeftTileIdx to H266RawPPS Signed-off-by: Fei Wang --- libavcodec/cbs_h266.h | 1 + libavcodec/cbs_h266_syntax_template.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/libavcodec/cbs_h266.h b/libavcodec/cbs_h266.h index d24a8e9313..7f0e537b31 100644 --- a/libavcodec/cbs_h266.h +++ b/libavcodec/cbs_h266.h @@ -593,6 +593,7 @@ typedef struct H266RawPPS { uint16_t sub_pic_id_val[VVC_MAX_SLICES]; ///< SubpicIdVal uint16_t col_width_val[VVC_MAX_TILE_COLUMNS]; ///< ColWidthVal uint16_t row_height_val[VVC_MAX_TILE_ROWS]; ///< RowHeightVal + uint16_t slice_top_left_tile_idx[VVC_MAX_SLICES]; } H266RawPPS; typedef struct H266RawAPS { diff --git a/libavcodec/cbs_h266_syntax_template.c b/libavcodec/cbs_h266_syntax_template.c index b4165b43b3..a826cf8bc9 100644 --- a/libavcodec/cbs_h266_syntax_template.c +++ b/libavcodec/cbs_h266_syntax_template.c @@ -1976,6 +1976,7 @@ static int FUNC(pps) (CodedBitstreamContext *ctx, RWContext *rw, else infer(pps_tile_idx_delta_present_flag, 0); for (i = 0; i < current->pps_num_slices_in_pic_minus1; i++) { + current->slice_top_left_tile_idx[i] = tile_idx; tile_x = tile_idx % current->num_tile_columns; tile_y = tile_idx / current->num_tile_columns; if (tile_x != current->num_tile_columns - 1) { @@ -2058,6 +2059,8 @@ static int FUNC(pps) (CodedBitstreamContext *ctx, RWContext *rw, } num_slices_in_tile = j; } + for (int k = 0; k < num_slices_in_tile; k++) + current->slice_top_left_tile_idx[i + k] = tile_idx; i += num_slices_in_tile - 1; } else { uint16_t height = 0; @@ -2101,6 +2104,7 @@ static int FUNC(pps) (CodedBitstreamContext *ctx, RWContext *rw, if (i == current->pps_num_slices_in_pic_minus1) { uint16_t height = 0; + current->slice_top_left_tile_idx[i] = tile_idx; tile_x = tile_idx % current->num_tile_columns; tile_y = tile_idx / current->num_tile_columns; if (tile_y >= current->num_tile_rows)