diff --git a/libavcodec/svq1.c b/libavcodec/svq1.c index 1efeb57a46..ae79afef90 100644 --- a/libavcodec/svq1.c +++ b/libavcodec/svq1.c @@ -1108,10 +1108,10 @@ static void svq1_encode_plane(SVQ1Context *s, int plane, unsigned char *src_plan s->m.me_method= s->avctx->me_method; if(!s->motion_val8[plane]){ - s->motion_val8 [plane]= av_mallocz(s->m.b8_stride*block_height*2*2*sizeof(int16_t)); - s->motion_val16[plane]= av_mallocz(s->m.mb_stride*block_height*2*sizeof(int16_t)); + s->motion_val8 [plane]= av_mallocz((s->m.b8_stride*block_height*2 + 2)*2*sizeof(int16_t)); + s->motion_val16[plane]= av_mallocz((s->m.mb_stride*(block_height + 2) + 1)*2*sizeof(int16_t)); } - + s->m.mb_type= s->mb_type; //dummies, to avoid segfaults @@ -1120,8 +1120,8 @@ static void svq1_encode_plane(SVQ1Context *s, int plane, unsigned char *src_plan s->m.current_picture.mc_mb_var= (uint16_t*)s->dummy; s->m.current_picture.mb_type= s->dummy; - s->m.current_picture.motion_val[0]= s->motion_val8[plane]; - s->m.p_mv_table= s->motion_val16[plane]; + s->m.current_picture.motion_val[0]= s->motion_val8[plane] + 2; + s->m.p_mv_table= s->motion_val16[plane] + s->m.mb_stride + 1; s->m.dsp= s->dsp; //move ff_init_me(&s->m); diff --git a/tests/ffmpeg.regression.ref b/tests/ffmpeg.regression.ref index 9f89d9ccaa..88abdd7d09 100644 --- a/tests/ffmpeg.regression.ref +++ b/tests/ffmpeg.regression.ref @@ -107,10 +107,10 @@ stddev: 8.08 PSNR:29.97 bytes:7602176 2653690 ./data/a-ffv1.avi 799d3db687f6cdd7a837ec156efc171f *./data/out.yuv stddev: 0.00 PSNR:99.99 bytes:7602176 -9ebbef45611d99d4134c1dac04c88378 *./data/a-svq1.mov -1384015 ./data/a-svq1.mov -f14dcf0f15be154c1384086c3d0e8a13 *./data/out.yuv -stddev: 10.98 PSNR:27.30 bytes:7602176 +c672f70e2176a897b1ba816749574751 *./data/a-svq1.mov +1384019 ./data/a-svq1.mov +ccc201054669e94717022bb4f2aea4ce *./data/out.yuv +stddev: 10.99 PSNR:27.30 bytes:7602176 21f8ff9f1daacd9133683bb4ea0f50a4 *./data/a-mp2.mp2 95712 ./data/a-mp2.mp2 624d9789f3ac193bbae4af3bd8cb02b7 *./data/out.wav