[FFmpeg-devel] [PATCH 2/6] avcodec/bink: Combine allocations of arrays into one
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Fri Sep 4 20:20:22 EEST 2020
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(-)
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
More information about the ffmpeg-devel
mailing list