diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2024-04-20 22:56:44 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2024-06-12 10:54:08 +0200 |
commit | ba033acb56f2c6c68b9464a491807a6f7dba64bd (patch) | |
tree | cd10e7053f33be67df6691e16606aec4442129f4 | |
parent | 1a5c21daee4b2f161d6e030c607ea47a21c64945 (diff) | |
download | ffmpeg-ba033acb56f2c6c68b9464a491807a6f7dba64bd.tar.gz |
avcodec/mpegvideo: Only allocate coded_block when needed
It is only needed for msmpeg4v3, wmv1, wmv2 and VC-1.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r-- | libavcodec/mpegvideo.c | 11 |
1 files 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; } |