# HG changeset patch # User michael # Date 1111860644 0 # Node ID e237d9bd0f8c1c37f79c6c71793ac5704efa9f76 # Parent 0afef2899701aa5f626e0b390bac3a15df6b2dab check mb/me_threshold range, fixes assertion failure diff -r 0afef2899701 -r e237d9bd0f8c motion_est.c --- a/motion_est.c Sat Mar 26 17:01:49 2005 +0000 +++ b/motion_est.c Sat Mar 26 18:10:44 2005 +0000 @@ -1016,7 +1016,7 @@ if(p_type && USES_LIST(mb_type, 1)){ av_log(c->avctx, AV_LOG_ERROR, "backward motion vector in P frame\n"); - return INT_MAX/4; + return INT_MAX/2; } assert(IS_INTRA(mb_type) || USES_LIST(mb_type,0) || USES_LIST(mb_type,1)); @@ -1034,7 +1034,7 @@ if(!(s->flags & CODEC_FLAG_INTERLACED_ME)){ av_log(c->avctx, AV_LOG_ERROR, "Interlaced macroblock selected but interlaced motion estimation disabled\n"); - return INT_MAX/4; + return INT_MAX/2; } if(USES_LIST(mb_type, 0)){ @@ -1095,7 +1095,7 @@ }else if(IS_8X8(mb_type)){ if(!(s->flags & CODEC_FLAG_4MV)){ av_log(c->avctx, AV_LOG_ERROR, "4MV macroblock selected but 4MV encoding disabled\n"); - return INT_MAX/4; + return INT_MAX/2; } cmpf= s->dsp.sse[1]; chroma_cmpf= s->dsp.sse[1]; diff -r 0afef2899701 -r e237d9bd0f8c mpegvideo.c --- a/mpegvideo.c Sat Mar 26 17:01:49 2005 +0000 +++ b/mpegvideo.c Sat Mar 26 18:10:44 2005 +0000 @@ -1054,6 +1054,16 @@ av_log(avctx, AV_LOG_ERROR, "framerate not set\n"); return -1; } + + i= (INT_MAX/2+128)>>8; + if(avctx->me_threshold >= i){ + av_log(avctx, AV_LOG_ERROR, "me_threshold too large, max is %d\n", i - 1); + return -1; + } + if(avctx->mb_threshold >= i){ + av_log(avctx, AV_LOG_ERROR, "mb_threshold too large, max is %d\n", i - 1); + return -1; + } i= ff_gcd(avctx->frame_rate, avctx->frame_rate_base); if(i > 1){