From 586a2a05babb14501ebfde75ae75fd0b6bd7c820 Mon Sep 17 00:00:00 2001 From: "sgunderson@bigfoot.com" <> Date: Sun, 3 Feb 2008 18:48:11 +0100 Subject: [PATCH] Do rounding. --- qscale.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/qscale.c b/qscale.c index 7943f90..f3f0fa9 100644 --- a/qscale.c +++ b/qscale.c @@ -101,25 +101,28 @@ void hscale(float *pix, unsigned char *npix, unsigned w, unsigned h, unsigned nw unsigned char *dptr = npix + y*dstride; unsigned char ch; for (x = 0; x < nw; ++x) { + int result; float acc; int tmp; static const float low = 0.0, high = 255.0; asm ( - "pxor %0, %0 \n" - "xor %1, %1 \n" + "pxor %1, %1 \n" + "xor %2, %2 \n" ".lbl2: \n" - "movups (%3,%1),%%xmm1 \n" - "movups (%2,%1),%%xmm2 \n" + "movups (%4,%2),%%xmm1 \n" + "movups (%3,%2),%%xmm2 \n" "mulps %%xmm2,%%xmm1 \n" - "addps %%xmm1,%0 \n" - "addl $16,%1 \n" - "dec %4 \n" + "addps %%xmm1,%1 \n" + "addl $16,%2 \n" + "dec %5 \n" "jnz .lbl2 \n" - "haddps %0,%0 \n" - "haddps %0,%0 \n" - "maxss %5,%0 \n" - "minss %6,%0 \n" - : "=&x" (acc), + "haddps %1,%1 \n" + "haddps %1,%1 \n" + "maxss %6,%1 \n" + "minss %7,%1 \n" + "cvtss2si %1,%0 \n" + : "=r" (result), + "=&x" (acc), "=&r" (tmp) : "r" (&coeffs[pd[x].startcoeff]), "r" (&sptr[pd[x].start]), @@ -138,7 +141,7 @@ void hscale(float *pix, unsigned char *npix, unsigned w, unsigned h, unsigned nw ch = (unsigned char)acc; *dptr++ = ch; #endif - *dptr++ = (unsigned char)acc; + *dptr++ = (unsigned char)result; } ch = dptr[-1]; for ( ; x < dstride; ++x) { -- 2.39.2