[FFmpeg-devel] [PATCH 2/6] avcodec/bink: Combine allocations of arrays into one

Paul B Mahol onemda at gmail.com
Fri Sep 4 21:28:23 EEST 2020


On 9/4/20, Andreas Rheinhardt <andreas.rheinhardt at gmail.com> wrote:
> Saves allocations, checks for the allocations as well as frees.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
>  libavcodec/bink.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
>

LGTM

> diff --git a/libavcodec/bink.c b/libavcodec/bink.c
> index c7ef333bd4..9fdfa37395 100644
> --- a/libavcodec/bink.c
> +++ b/libavcodec/bink.c
> @@ -178,17 +178,20 @@ static void init_lengths(BinkContext *c, int width,
> int bw)
>  static av_cold int init_bundles(BinkContext *c)
>  {
>      int bw, bh, blocks;
> +    uint8_t *tmp;
>      int i;
>
>      bw = (c->avctx->width  + 7) >> 3;
>      bh = (c->avctx->height + 7) >> 3;
>      blocks = bw * bh;
>
> +    tmp = av_calloc(blocks, 64 * BINKB_NB_SRC);
> +    if (!tmp)
> +        return AVERROR(ENOMEM);
>      for (i = 0; i < BINKB_NB_SRC; i++) {
> -        c->bundle[i].data = av_mallocz(blocks * 64);
> -        if (!c->bundle[i].data)
> -            return AVERROR(ENOMEM);
> -        c->bundle[i].data_end = c->bundle[i].data + blocks * 64;
> +        c->bundle[i].data     = tmp;
> +        tmp                  += blocks * 64;
> +        c->bundle[i].data_end = tmp;
>      }
>
>      return 0;
> @@ -201,9 +204,7 @@ static av_cold int init_bundles(BinkContext *c)
>   */
>  static av_cold void free_bundles(BinkContext *c)
>  {
> -    int i;
> -    for (i = 0; i < BINKB_NB_SRC; i++)
> -        av_freep(&c->bundle[i].data);
> +    av_freep(&c->bundle[0].data);
>  }
>
>  /**
> --
> 2.20.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list