From 0d90aec0fd7428a77b5c4c536ab65635669bc42d Mon Sep 17 00:00:00 2001 From: Mike Melanson Date: Sun, 14 Mar 2004 21:14:07 +0000 Subject: sync to ffmpeg build 4707 CVS patchset: 6253 CVS date: 2004/03/14 21:14:07 --- src/libffmpeg/libavcodec/rv10.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/libffmpeg/libavcodec/rv10.c') diff --git a/src/libffmpeg/libavcodec/rv10.c b/src/libffmpeg/libavcodec/rv10.c index 3b6346465..11c9734fc 100644 --- a/src/libffmpeg/libavcodec/rv10.c +++ b/src/libffmpeg/libavcodec/rv10.c @@ -360,6 +360,11 @@ static int rv20_decode_picture_header(MpegEncContext *s) return -1; } + if(s->last_picture_ptr==NULL && s->pict_type==B_TYPE){ + av_log(s->avctx, AV_LOG_ERROR, "early B pix\n"); + return -1; + } + if (get_bits(&s->gb, 1)){ av_log(s->avctx, AV_LOG_ERROR, "unknown bit set\n"); return -1; @@ -403,7 +408,7 @@ static int rv20_decode_picture_header(MpegEncContext *s) s->time= seq; s->pb_time= s->pp_time - (s->last_non_b_time - s->time); if(s->pp_time <=s->pb_time || s->pp_time <= s->pp_time - s->pb_time || s->pp_time<=0){ - printf("messed up order, seeking?, skiping current b frame\n"); + av_log(s->avctx, AV_LOG_DEBUG, "messed up order, seeking?, skiping current b frame\n"); return FRAME_SKIPED; } } @@ -449,6 +454,12 @@ static int rv10_decode_init(AVCodecContext *avctx) s->h263_long_vectors=0; s->low_delay=1; break; + case 0x10002000: + s->rv10_version= 3; + s->h263_long_vectors=1; + s->low_delay=1; + s->obmc=1; + break; case 0x10003000: s->rv10_version= 3; s->h263_long_vectors=1; @@ -586,13 +597,14 @@ static int rv10_decode_packet(AVCodecContext *avctx, s->block_wrap[5]= s->mb_width + 2; ff_init_block_index(s); /* decode each macroblock */ - for(i=0;imb_num_left= mb_count; s->mb_num_left>0; s->mb_num_left--) { int ret; ff_update_block_index(s); #ifdef DEBUG printf("**mb x=%d y=%d\n", s->mb_x, s->mb_y); #endif - + s->dsp.clear_blocks(s->block[0]); s->mv_dir = MV_DIR_FORWARD; s->mv_type = MV_TYPE_16X16; -- cgit v1.2.3