[FFmpeg-devel] [PATCH 4/4] avcodec/vvcdec: remove unused tb_pos_x0 and tb_pos_y0

Nuo Mi nuomi2021 at gmail.com
Wed Oct 16 15:35:39 EEST 2024


On Fri, Oct 4, 2024 at 10:31 PM Nuo Mi <nuomi2021 at gmail.com> wrote:

> This change will save approximately 531 MB for an 8K clip when processed
> with 16 threads.
>
Applied.

> The calculation is as follows:
> 7680 * 4320 * sizeof(int) * 2 * 2 * 16 / (4 * 4).
> ---
>  libavcodec/vvc/ctu.c | 10 +++-------
>  libavcodec/vvc/dec.c |  2 --
>  libavcodec/vvc/dec.h |  2 --
>  3 files changed, 3 insertions(+), 11 deletions(-)
>
> diff --git a/libavcodec/vvc/ctu.c b/libavcodec/vvc/ctu.c
> index e49976c66b..1e06119cfd 100644
> --- a/libavcodec/vvc/ctu.c
> +++ b/libavcodec/vvc/ctu.c
> @@ -38,7 +38,7 @@ typedef enum VVCModeType {
>      MODE_TYPE_INTRA,
>  } VVCModeType;
>
> -static void set_tb_pos(const VVCFrameContext *fc, const TransformBlock
> *tb)
> +static void set_tb_size(const VVCFrameContext *fc, const TransformBlock
> *tb)
>  {
>      const int x_tb      = tb->x0 >> MIN_TU_LOG2;
>      const int y_tb      = tb->y0 >> MIN_TU_LOG2;
> @@ -50,10 +50,6 @@ static void set_tb_pos(const VVCFrameContext *fc, const
> TransformBlock *tb)
>
>      for (int y = y_tb; y < end; y++) {
>          const int off = y * fc->ps.pps->min_tu_width + x_tb;
> -        for (int i = 0; i < width; i++) {
> -            fc->tab.tb_pos_x0[is_chroma][off + i] = tb->x0;
> -            fc->tab.tb_pos_y0[is_chroma][off + i] = tb->y0;
> -        }
>          memset(fc->tab.tb_width [is_chroma] + off, tb->tb_width,  width);
>          memset(fc->tab.tb_height[is_chroma] + off, tb->tb_height, width);
>      }
> @@ -397,7 +393,7 @@ static int hls_transform_unit(VVCLocalContext *lc, int
> x0, int y0,int tu_width,
>              set_tb_tab(fc->tab.tu_coded_flag[tb->c_idx],
> tu->coded_flag[tb->c_idx], fc, tb);
>          }
>          if (tb->c_idx != CR)
> -            set_tb_pos(fc, tb);
> +            set_tb_size(fc, tb);
>          if (tb->c_idx == CB)
>              set_tb_tab(fc->tab.tu_joint_cbcr_residual_flag,
> tu->joint_cbcr_residual_flag, fc, tb);
>      }
> @@ -514,7 +510,7 @@ static int skipped_transform_tree(VVCLocalContext *lc,
> int x0, int y0,int tu_wid
>          for (int i = c_start; i < c_end; i++) {
>              TransformBlock *tb = add_tb(tu, lc, x0, y0, tu_width >>
> sps->hshift[i], tu_height >> sps->vshift[i], i);
>              if (i != CR)
> -                set_tb_pos(fc, tb);
> +                set_tb_size(fc, tb);
>          }
>      }
>
> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c
> index 13ca752eec..9b7afe4c38 100644
> --- a/libavcodec/vvc/dec.c
> +++ b/libavcodec/vvc/dec.c
> @@ -207,8 +207,6 @@ static void min_tu_nz_tl_init(TabList *l,
> VVCFrameContext *fc)
>      tl_init(l, 0, changed);
>
>      for (int i = LUMA; i <= CHROMA; i++) {
> -        TL_ADD(tb_pos_x0[i], pic_size_in_min_tu);
> -        TL_ADD(tb_pos_y0[i], pic_size_in_min_tu);
>          TL_ADD(tb_width[i],  pic_size_in_min_tu);
>          TL_ADD(tb_height[i], pic_size_in_min_tu);
>      }
> diff --git a/libavcodec/vvc/dec.h b/libavcodec/vvc/dec.h
> index 159c60942b..7254b515fd 100644
> --- a/libavcodec/vvc/dec.h
> +++ b/libavcodec/vvc/dec.h
> @@ -172,8 +172,6 @@ typedef struct VVCFrameContext {
>
>          uint8_t *tu_coded_flag[VVC_MAX_SAMPLE_ARRAYS];  ///<
> tu_y_coded_flag[][],  tu_cb_coded_flag[][],  tu_cr_coded_flag[][]
>          uint8_t *tu_joint_cbcr_residual_flag;           ///<
> tu_joint_cbcr_residual_flag[][]
> -        int     *tb_pos_x0[2];
> -        int     *tb_pos_y0[2];
>          uint8_t *tb_width[2];
>          uint8_t *tb_height[2];
>          uint8_t *pcmf[2];
> --
> 2.34.1
>
>


More information about the ffmpeg-devel mailing list