[libav-stable] mpegvideo: allocate sufficiently large scratch buffer for interlaced vid

Jindrich Makovicka git at libav.org
Fri May 17 07:51:59 CEST 2013


Module: libav
Branch: master
Commit: 259af1b92370b32f6d0b9a6de314db4b44c2481d

Author:    Jindrich Makovicka <makovick at gmail.com>
Committer: Anton Khirnov <anton at khirnov.net>
Date:      Thu May 16 16:49:28 2013 +0200

mpegvideo: allocate sufficiently large scratch buffer for interlaced vid

MPV_decode_mb_internal needs 3 * 16 * linesize bytes of scratch buffer

For interlaced content, linesize is multiplied by two after the allocation
of the scratch buffer, and the dest_cr pointer ends past the buffer.

This patch makes ff_mpv_frame_size_alloc allocate a total of
(aligned line_size) * 2 * 16 * 3 bytes, which suffices even for the
interlaced case.

CC:libav-stable at libav.org

Signed-off-by: Jindrich Makovicka <makovick at gmail.com>
Signed-off-by: Anton Khirnov <anton at khirnov.net>

---

 libavcodec/mpegvideo.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index d958b96..b5f1587 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -205,7 +205,7 @@ int ff_mpv_frame_size_alloc(MpegEncContext *s, int linesize)
     FF_ALLOCZ_OR_GOTO(s->avctx, s->edge_emu_buffer, alloc_size * 2 * 24,
                       fail);
 
-    FF_ALLOCZ_OR_GOTO(s->avctx, s->me.scratchpad, alloc_size * 2 * 16 * 2,
+    FF_ALLOCZ_OR_GOTO(s->avctx, s->me.scratchpad, alloc_size * 2 * 16 * 3,
                       fail)
     s->me.temp         = s->me.scratchpad;
     s->rd_scratchpad   = s->me.scratchpad;



More information about the libav-stable mailing list