Mercurial > libavcodec.hg
changeset 2984:fedb0854bd07 libavcodec
10l (segfault fix)
author | michael |
---|---|
date | Fri, 23 Dec 2005 19:05:48 +0000 |
parents | 9d7d2bb70fd6 |
children | 7de97d3ac7ef |
files | motion_est.c |
diffstat | 1 files changed, 11 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/motion_est.c Fri Dec 23 16:25:00 2005 +0000 +++ b/motion_est.c Fri Dec 23 19:05:48 2005 +0000 @@ -1646,14 +1646,17 @@ if(s->avctx->bidir_refine){ int score, end; #define CHECK_BIDIR(fx,fy,bx,by)\ - score= check_bidir_mv(s, motion_fx+fx, motion_fy+fy, motion_bx+bx, motion_by+by, pred_fx, pred_fy, pred_bx, pred_by, 0, 16);\ - if(score < fbmin){\ - fbmin= score;\ - motion_fx+=fx;\ - motion_fy+=fy;\ - motion_bx+=bx;\ - motion_by+=by;\ - end=0;\ + if( (fx<=0 || motion_fx+fx<=xmax) && (fy<=0 || motion_fy+fy<=ymax) && (bx<=0 || motion_bx+bx<=xmax) && (by<=0 || motion_by+by<=ymax)\ + &&(fx>=0 || motion_fx+fx>=xmin) && (fy>=0 || motion_fy+fy>=ymin) && (bx>=0 || motion_bx+bx>=xmin) && (by>=0 || motion_by+by>=ymin)){\ + score= check_bidir_mv(s, motion_fx+fx, motion_fy+fy, motion_bx+bx, motion_by+by, pred_fx, pred_fy, pred_bx, pred_by, 0, 16);\ + if(score < fbmin){\ + fbmin= score;\ + motion_fx+=fx;\ + motion_fy+=fy;\ + motion_bx+=bx;\ + motion_by+=by;\ + end=0;\ + }\ } #define CHECK_BIDIR2(a,b,c,d)\ CHECK_BIDIR(a,b,c,d)\ @@ -1668,10 +1671,6 @@ do{ end=1; - if( motion_fx >= xmax || motion_bx >= xmax || motion_fx <= xmin || motion_bx <= xmin - || motion_fy >= ymax || motion_by >= ymax || motion_fy <= ymin || motion_by <= ymin) - break; - CHECK_BIDIRR( 0, 0, 0, 1) if(s->avctx->bidir_refine > 1){ CHECK_BIDIRR( 0, 0, 1, 1)