From bb01be80462adcf4900c925e25bc644e512a4b7b Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Wed, 6 Mar 2013 03:10:18 +0100 Subject: [PATCH] rv20: Fix handling of frame skip. Fixes division by zero Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer --- libavcodec/rv10.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c index 1528780a37..3f338f3ff3 100644 --- a/libavcodec/rv10.c +++ b/libavcodec/rv10.c @@ -419,7 +419,8 @@ static int rv20_decode_picture_header(RVDecContext *rv) if (s->pict_type==AV_PICTURE_TYPE_B) { if(s->pp_time <=s->pb_time || s->pp_time <= s->pp_time - s->pb_time || s->pp_time<=0){ av_log(s->avctx, AV_LOG_DEBUG, "messed up order, possible from seeking? skipping current b frame\n"); - return FRAME_SKIPPED; +#define ERROR_SKIP_FRAME -123 + return ERROR_SKIP_FRAME; } ff_mpeg4_init_direct_mv(s); } @@ -542,7 +543,8 @@ static int rv10_decode_packet(AVCodecContext *avctx, else mb_count = rv20_decode_picture_header(rv); if (mb_count < 0) { - av_log(s->avctx, AV_LOG_ERROR, "HEADER ERROR\n"); + if (mb_count != ERROR_SKIP_FRAME) + av_log(s->avctx, AV_LOG_ERROR, "HEADER ERROR\n"); return -1; }