Hi, On Wed, Oct 19, 2011 at 7:57 PM, Ronald S. Bultje <[email protected]> wrote: > --- > libswscale/utils.c | 21 +++++++++++---------- > 1 files changed, 11 insertions(+), 10 deletions(-) > > diff --git a/libswscale/utils.c b/libswscale/utils.c > index 8e5daf9..ea5a1ab 100644 > --- a/libswscale/utils.c > +++ b/libswscale/utils.c > @@ -271,19 +271,20 @@ static int initFilter(int16_t **outFilter, int16_t > **filterPos, int *outFilterSi > floatd= d * (1.0/(1<<30)); > > if (flags & SWS_BICUBIC) { > -#define SQRT_INT64_MAX 0xb504f333 > int64_t B= (param[0] != SWS_PARAM_DEFAULT ? param[0] : > 0) * (1<<24); > int64_t C= (param[1] != SWS_PARAM_DEFAULT ? param[1] : > 0.6) * (1<<24); > - int64_t dd = d > SQRT_INT64_MAX ? ((d >> 1) * d) >> 29 > : (d * d) >> 30; > - int64_t ddd = d > SQRT_INT64_MAX || dd > SQRT_INT64_MAX ? > - ((dd >> 2) * d) >> 28 > : (dd * d) >> 30; > - > - if (d < 1LL<<30) > - coeff = (12*(1<<24)-9*B-6*C)*ddd + > (-18*(1<<24)+12*B+6*C)*dd + (6*(1<<24)-2*B)*(1<<30); > - else if (d < 1LL<<31) > - coeff = (-B-6*C)*ddd + (6*B+30*C)*dd + > (-12*B-48*C)*d + (8*B+24*C)*(1<<30); > - else > - coeff=0.0; > + > + if (d >= 1LL<<31) { > + coeff = 0.0; > + } else { > + int64_t dd = (d * d) >> 30; > + int64_t ddd = (dd * d) >> 30; > + > + if (d < 1LL<<30) > + coeff = (12*(1<<24)-9*B-6*C)*ddd + > (-18*(1<<24)+12*B+6*C)*dd + (6*(1<<24)-2*B)*(1<<30); > + else > + coeff = (-B-6*C)*ddd + (6*B+30*C)*dd + > (-12*B-48*C)*d + (8*B+24*C)*(1<<30); > + } > coeff *= fone>>(30+24);
Ping. Ronald _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
