From ba033acb56f2c6c68b9464a491807a6f7dba64bd Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sat, 20 Apr 2024 22:56:44 +0200 Subject: [PATCH] avcodec/mpegvideo: Only allocate coded_block when needed It is only needed for msmpeg4v3, wmv1, wmv2 and VC-1. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 130ccb4c97..74be22346d 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -596,11 +596,16 @@ int ff_mpv_init_context_frame(MpegEncContext *s) } if (s->out_format == FMT_H263) { - /* cbp values, cbp, ac_pred, pred_dir */ - if (!(s->coded_block_base = av_mallocz(y_size + (s->mb_height&1)*2*s->b8_stride)) || - !(s->cbp_table = av_mallocz(mb_array_size)) || + /* cbp, ac_pred, pred_dir */ + if (!(s->cbp_table = av_mallocz(mb_array_size)) || !(s->pred_dir_table = av_mallocz(mb_array_size))) return AVERROR(ENOMEM); + } + + if (s->msmpeg4_version >= 3) { + s->coded_block_base = av_mallocz(y_size + (s->mb_height&1)*2*s->b8_stride); + if (!s->coded_block_base) + return AVERROR(ENOMEM); s->coded_block = s->coded_block_base + s->b8_stride + 1; }