aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJanne Grunau <janne-libav@jannau.net>2012-12-18 22:57:58 +0100
committerJanne Grunau <janne-libav@jannau.net>2012-12-19 07:57:22 +0100
commit45635885e44cb7adce35ac19279d48c1ef6c4779 (patch)
tree6cc07ae0fd025d0df35e63348d5dc8fbf1695ff7
parenta34d9ad96974667ef346d192e80ff7e94f1a6434 (diff)
downloadffmpeg-45635885e44cb7adce35ac19279d48c1ef6c4779.tar.gz
mpegvideo: increase edge_emu_buffer size for VC1
The VC1 decoder uses edge_emu_buffer simultaneously for luma and chroma and needs more space. That was not a problem before f1d8763a02b5fce since the size for edge_emu_buffer was always calculated with 2 byte per pixel since the linesize was not known. Fixes occasionally fate errors in vc1_sa10143.
-rw-r--r--libavcodec/mpegvideo.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 8cd8df8d1f..edd52532b2 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -241,8 +241,10 @@ int ff_mpv_frame_size_alloc(MpegEncContext *s, int linesize)
// edge emu needs blocksize + filter length - 1
// (= 17x17 for halfpel / 21x21 for h264)
+ // VC1 computes luma and chroma simultaneously and needs 19X19 + 9x9
+ // at uvlinesize. It supports only YUV420 so 24x24 is enough
// linesize * interlaced * MBsize
- FF_ALLOCZ_OR_GOTO(s->avctx, s->edge_emu_buffer, alloc_size * 2 * 21,
+ 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,