]> granicus.if.org Git - libx264/commitdiff
fix an arithmetic overflow that disabled SEA threshold after finding a mv with SAD...
authorLoren Merritt <pengvado@akuvian.org>
Tue, 25 Mar 2008 13:31:51 +0000 (07:31 -0600)
committerLoren Merritt <pengvado@akuvian.org>
Tue, 25 Mar 2008 19:13:29 +0000 (13:13 -0600)
encoder/me.c

index cd5a9fccaf26bd1a9bdbaf178492e7a0cccd3146..310c5868ec1d4de04034c64a455f64b02a4b5820 100644 (file)
@@ -498,7 +498,7 @@ me_hex2:
                     int ycost = p_cost_mvy[my<<2];
                     bsad -= ycost;
                     xn = h->pixf.ads[i_pixel]( enc_dc, sums_base + min_x + my * stride, delta,
-                                               cost_fpel_mvx+min_x, xs, width, bsad*17/16 );
+                                               cost_fpel_mvx+min_x, xs, width, X264_MAX(bsad,0)*17/16 );
                     for( i=0; i<xn-2; i+=3 )
                     {
                         uint8_t *ref = p_fref+min_x+my*stride;
@@ -569,7 +569,7 @@ me_hex2:
                 {
                     bcost -= p_cost_mvy[my<<2];
                     xn = h->pixf.ads[i_pixel]( enc_dc, sums_base + min_x + my * stride, delta,
-                                               cost_fpel_mvx+min_x, xs, width, bcost );
+                                               cost_fpel_mvx+min_x, xs, width, X264_MAX(bcost,0) );
                     for( i=0; i<xn-2; i+=3 )
                         COST_MV_X3_ABS( min_x+xs[i],my, min_x+xs[i+1],my, min_x+xs[i+2],my );
                     bcost += p_cost_mvy[my<<2];