aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2004-01-18 02:59:01 +0000
committerMichael Niedermayer <michaelni@gmx.at>2004-01-18 02:59:01 +0000
commit8e78482542c0f0a8fdb9271925c99021b3ee4317 (patch)
tree3a225c719092b10ffbc600bb44716d45e174f54f /libavcodec
parent8a05bca46caa937e4fa891391126639410093262 (diff)
downloadffmpeg-8e78482542c0f0a8fdb9271925c99021b3ee4317.tar.gz
rv20 mv prediction in b frames fix
Originally committed as revision 2712 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/rv10.c11
1 files 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; i<avctx->slice_count; i++){
int offset= avctx->slice_offset[i];