From 7f451cb01f9f7a749b503179ba58b2f999056905 Mon Sep 17 00:00:00 2001 From: Jindrich Makovicka Date: Thu, 16 May 2013 16:49:28 +0200 Subject: [PATCH] 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@libav.org Signed-off-by: Jindrich Makovicka Signed-off-by: Anton Khirnov (cherry picked from commit 259af1b92370b32f6d0b9a6de314db4b44c2481d) Signed-off-by: Reinhard Tartler --- libavcodec/mpegvideo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 10b13b552e..77e21d2bf1 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -248,7 +248,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;