[FFmpeg-devel] [PATCH 01/13] avcodec/elbg: Remove avoidable buffer

Tomas Härdin tjoppen at acc.umu.se
Fri Sep 17 09:53:14 EEST 2021


fre 2021-09-17 klockan 04:02 +0200 skrev Andreas Rheinhardt:
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---
>  libavcodec/elbg.c | 9 +++------
>  1 file changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c
> index d012d9a384..795fc83f16 100644
> --- a/libavcodec/elbg.c
> +++ b/libavcodec/elbg.c
> @@ -376,7 +376,6 @@ int avpriv_do_elbg(int *points, int dim, int
> numpoints, int *codebook,
>      elbg_data elbg_d;
>      elbg_data *elbg = &elbg_d;
>      int i, j, k, steps = 0, ret = 0;
> -    int *dist_cb = av_malloc_array(numpoints, sizeof(int));
>      int *size_part = av_malloc_array(numCB, sizeof(int));
>      cell *list_buffer = av_malloc_array(numpoints, sizeof(cell));
>      cell *free_cells;
> @@ -394,7 +393,7 @@ int avpriv_do_elbg(int *points, int dim, int
> numpoints, int *codebook,
>      elbg->utility_inc = av_malloc_array(numCB, sizeof(*elbg-
> >utility_inc));
>      elbg->scratchbuf = av_malloc_array(5*dim, sizeof(int));
>  
> -    if (!dist_cb || !size_part || !list_buffer || !elbg->cells ||
> +    if (!size_part || !list_buffer || !elbg->cells ||
>          !elbg->utility || !elbg->utility_inc || !elbg->scratchbuf) {
>          ret = AVERROR(ENOMEM);
>          goto out;
> @@ -423,9 +422,8 @@ int avpriv_do_elbg(int *points, int dim, int
> numpoints, int *codebook,
>                  }
>              }
>              elbg->nearest_cb[i] = best_idx;
> -            dist_cb[i] = best_dist;
> -            elbg->error += dist_cb[i];
> -            elbg->utility[elbg->nearest_cb[i]] += dist_cb[i];
> +            elbg->error += best_dist;
> +            elbg->utility[elbg->nearest_cb[i]] += best_dist;
>              free_cells->index = i;
>              free_cells->next = elbg->cells[elbg->nearest_cb[i]];
>              elbg->cells[elbg->nearest_cb[i]] = free_cells;
> @@ -453,7 +451,6 @@ int avpriv_do_elbg(int *points, int dim, int
> numpoints, int *codebook,
>              (steps < max_steps));
>  
>  out:
> -    av_free(dist_cb);
>      av_free(size_part);
>      av_free(elbg->utility);
>      av_free(list_buffer);

Nice catch. Looks good to me

/Tomas



More information about the ffmpeg-devel mailing list