Mercurial > libavcodec.hg
comparison motion_est.c @ 2984:fedb0854bd07 libavcodec
10l (segfault fix)
author | michael |
---|---|
date | Fri, 23 Dec 2005 19:05:48 +0000 |
parents | 9d7d2bb70fd6 |
children | 83934bcab3cc |
comparison
equal
deleted
inserted
replaced
2983:9d7d2bb70fd6 | 2984:fedb0854bd07 |
---|---|
1644 0, 16); | 1644 0, 16); |
1645 | 1645 |
1646 if(s->avctx->bidir_refine){ | 1646 if(s->avctx->bidir_refine){ |
1647 int score, end; | 1647 int score, end; |
1648 #define CHECK_BIDIR(fx,fy,bx,by)\ | 1648 #define CHECK_BIDIR(fx,fy,bx,by)\ |
1649 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);\ | 1649 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)\ |
1650 if(score < fbmin){\ | 1650 &&(fx>=0 || motion_fx+fx>=xmin) && (fy>=0 || motion_fy+fy>=ymin) && (bx>=0 || motion_bx+bx>=xmin) && (by>=0 || motion_by+by>=ymin)){\ |
1651 fbmin= score;\ | 1651 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);\ |
1652 motion_fx+=fx;\ | 1652 if(score < fbmin){\ |
1653 motion_fy+=fy;\ | 1653 fbmin= score;\ |
1654 motion_bx+=bx;\ | 1654 motion_fx+=fx;\ |
1655 motion_by+=by;\ | 1655 motion_fy+=fy;\ |
1656 end=0;\ | 1656 motion_bx+=bx;\ |
1657 motion_by+=by;\ | |
1658 end=0;\ | |
1659 }\ | |
1657 } | 1660 } |
1658 #define CHECK_BIDIR2(a,b,c,d)\ | 1661 #define CHECK_BIDIR2(a,b,c,d)\ |
1659 CHECK_BIDIR(a,b,c,d)\ | 1662 CHECK_BIDIR(a,b,c,d)\ |
1660 CHECK_BIDIR(-a,-b,-c,-d) | 1663 CHECK_BIDIR(-a,-b,-c,-d) |
1661 | 1664 |
1665 CHECK_BIDIR2(c,d,a,b)\ | 1668 CHECK_BIDIR2(c,d,a,b)\ |
1666 CHECK_BIDIR2(d,a,b,c) | 1669 CHECK_BIDIR2(d,a,b,c) |
1667 | 1670 |
1668 do{ | 1671 do{ |
1669 end=1; | 1672 end=1; |
1670 | |
1671 if( motion_fx >= xmax || motion_bx >= xmax || motion_fx <= xmin || motion_bx <= xmin | |
1672 || motion_fy >= ymax || motion_by >= ymax || motion_fy <= ymin || motion_by <= ymin) | |
1673 break; | |
1674 | 1673 |
1675 CHECK_BIDIRR( 0, 0, 0, 1) | 1674 CHECK_BIDIRR( 0, 0, 0, 1) |
1676 if(s->avctx->bidir_refine > 1){ | 1675 if(s->avctx->bidir_refine > 1){ |
1677 CHECK_BIDIRR( 0, 0, 1, 1) | 1676 CHECK_BIDIRR( 0, 0, 1, 1) |
1678 CHECK_BIDIR2( 0, 1, 0, 1) | 1677 CHECK_BIDIR2( 0, 1, 0, 1) |