diff --git a/libavcodec/diracdec.c b/libavcodec/diracdec.c index 2a047c0bb9..a4a719aa8e 100644 --- a/libavcodec/diracdec.c +++ b/libavcodec/diracdec.c @@ -339,7 +339,7 @@ static int alloc_buffers(DiracContext *s, int stride) av_freep(&s->mctmp); av_freep(&s->mcscratch); - s->edge_emu_buffer_base = av_malloc_array(stride, MAX_BLOCKSIZE); + s->edge_emu_buffer_base = av_malloc_array(stride, 4 * MAX_BLOCKSIZE); s->mctmp = av_malloc_array((stride+MAX_BLOCKSIZE), (h + 5*MAX_BLOCKSIZE) * sizeof(*s->mctmp)); s->mcscratch = av_malloc_array(stride, MAX_BLOCKSIZE); @@ -1895,7 +1895,7 @@ static int dirac_decode_frame_internal(DiracContext *s) /* FIXME: small resolutions */ for (i = 0; i < 4; i++) - s->edge_emu_buffer[i] = s->edge_emu_buffer_base + i*FFALIGN(p->width, 16); + s->edge_emu_buffer[i] = s->edge_emu_buffer_base + i*s->buffer_stride*MAX_BLOCKSIZE; if (!s->zero_res && !s->low_delay) {