[FFmpeg-cvslog] avcodec/bink: Combine allocations of arrays into one

Andreas Rheinhardt git at videolan.org
Fri Sep 4 22:02:16 EEST 2020


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Fri Sep  4 18:30:22 2020 +0200| [ceeba2ac2b6f03ffbb13c64c6fbef21eb52be405] | committer: Andreas Rheinhardt

avcodec/bink: Combine allocations of arrays into one

Saves allocations, checks for the allocations as well as frees.

Reviewed-by: Paul B Mahol <onemda at gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ceeba2ac2b6f03ffbb13c64c6fbef21eb52be405
---

 libavcodec/bink.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

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);
 }
 
 /**



More information about the ffmpeg-cvslog mailing list