shithub: libvpx

Download patch

ref: d338d14c6bcf1bd9f9d028cf7ee177503076da47
parent: 7be093ea4d50c8d38438f88cb9fa817c1c9de8dd
author: Yaowu Xu <yaowu@google.com>
date: Wed Oct 6 09:28:36 EDT 2010

optimize fast_quantizer c version

As the zbin and rounding constants are normalized, rounding effectively
does the zbinning, therefore the zbin operation can be removed. In
addition, the memset on the two arrays are no longer necessary.

Change-Id: If39c353c42d7e052296cb65322e5218810b5cc4c

--- a/vp8/encoder/quantize.c
+++ b/vp8/encoder/quantize.c
@@ -125,7 +125,6 @@
     int zbin;
     int x, y, z, sz;
     short *coeff_ptr  = &b->coeff[0];
-    short *zbin_ptr   = &b->zbin[0][0];
     short *round_ptr  = &b->round[0][0];
     short *quant_ptr  = &b->quant[0][0];
     short *qcoeff_ptr = d->qcoeff;
@@ -132,31 +131,23 @@
     short *dqcoeff_ptr = d->dqcoeff;
     short *dequant_ptr = &d->dequant[0][0];
 
-    vpx_memset(qcoeff_ptr, 0, 32);
-    vpx_memset(dqcoeff_ptr, 0, 32);
-
     eob = -1;
-
     for (i = 0; i < 16; i++)
     {
         rc   = vp8_default_zig_zag1d[i];
         z    = coeff_ptr[rc];
-        zbin = zbin_ptr[rc] ;
 
         sz = (z >> 31);                                 // sign of z
         x  = (z ^ sz) - sz;                             // x = abs(z)
 
-        if (x >= zbin)
-        {
-            y  = ((x + round_ptr[rc]) * quant_ptr[rc]) >> 16; // quantize (x)
-            x  = (y ^ sz) - sz;                         // get the sign back
-            qcoeff_ptr[rc] = x;                          // write to destination
-            dqcoeff_ptr[rc] = x * dequant_ptr[rc];        // dequantized value
+        y  = ((x + round_ptr[rc]) * quant_ptr[rc]) >> 16; // quantize (x)
+        x  = (y ^ sz) - sz;                         // get the sign back
+        qcoeff_ptr[rc] = x;                          // write to destination
+        dqcoeff_ptr[rc] = x * dequant_ptr[rc];        // dequantized value
 
-            if (y)
-            {
-                eob = i;                                // last nonzero coeffs
-            }
+        if (y)
+        {
+            eob = i;                                // last nonzero coeffs
         }
     }
     d->eob = eob + 1;