From 8e78482542c0f0a8fdb9271925c99021b3ee4317 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 18 Jan 2004 02:59:01 +0000 Subject: [PATCH] rv20 mv prediction in b frames fix Originally committed as revision 2712 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/rv10.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c index 149309af5e..745d790b48 100644 --- a/libavcodec/rv10.c +++ b/libavcodec/rv10.c @@ -547,6 +547,10 @@ static int rv10_decode_packet(AVCodecContext *avctx, return -1; } + if(s->pict_type == B_TYPE){ //FIXME remove after cleaning mottion_val indexing + memset(s->current_picture.motion_val[0], 0, sizeof(int16_t)*2*(s->mb_width*2+2)*(s->mb_height*2+2)); + } + #ifdef DEBUG printf("qscale=%d\n", s->qscale); #endif @@ -575,7 +579,7 @@ static int rv10_decode_packet(AVCodecContext *avctx, s->rv10_first_dc_coded[0] = 0; s->rv10_first_dc_coded[1] = 0; s->rv10_first_dc_coded[2] = 0; - +//printf("%d %X %X\n", s->pict_type, s->current_picture.motion_val[0], s->current_picture.motion_val[1]); s->block_wrap[0]= s->block_wrap[1]= s->block_wrap[2]= @@ -600,7 +604,8 @@ static int rv10_decode_packet(AVCodecContext *avctx, av_log(s->avctx, AV_LOG_ERROR, "ERROR at MB %d %d\n", s->mb_x, s->mb_y); return -1; } - ff_h263_update_motion_val(s); + if(s->pict_type != B_TYPE) + ff_h263_update_motion_val(s); MPV_decode_mb(s, s->block); if(s->loop_filter) ff_h263_loop_filter(s); @@ -635,7 +640,7 @@ static int rv10_decode_frame(AVCodecContext *avctx, *data_size = 0; return 0; } - + if(avctx->slice_count){ for(i=0; islice_count; i++){ int offset= avctx->slice_offset[i];