diff options
author | Fei Wang <fei.w.wang@intel.com> | 2024-10-28 16:55:20 +0800 |
---|---|---|
committer | Haihao Xiang <haihao.xiang@intel.com> | 2024-11-01 12:13:07 +0800 |
commit | e543a22c387c6446c7eecae7cd477a828d68cdc2 (patch) | |
tree | 6a7e9db378670037f5a017b4f333202c6dd56cb0 | |
parent | f42978fe29fc569ccccdacc7dd89210e08df5690 (diff) | |
download | ffmpeg-e543a22c387c6446c7eecae7cd477a828d68cdc2.tar.gz |
lavc/cbs_h266: Add SliceTopLeftTileIdx to H266RawPPS
Signed-off-by: Fei Wang <fei.w.wang@intel.com>
-rw-r--r-- | libavcodec/cbs_h266.h | 1 | ||||
-rw-r--r-- | libavcodec/cbs_h266_syntax_template.c | 4 |
2 files changed, 5 insertions, 0 deletions
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) |