]> granicus.if.org Git - libvpx/commitdiff
optimize fast_quantizer c version
authorYaowu Xu <yaowu@google.com>
Wed, 6 Oct 2010 20:28:36 +0000 (13:28 -0700)
committerYaowu Xu <yaowu@google.com>
Wed, 6 Oct 2010 20:28:36 +0000 (13:28 -0700)
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

vp8/encoder/quantize.c

index 20ec9d11bb5e1dbc0fe8f77157132cf3dbb09e29..d06b0489681024af00f1308a4e8e06bd18083587 100644 (file)
@@ -125,38 +125,29 @@ void vp8_fast_quantize_b_c(BLOCK *b, BLOCKD *d)
     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;
     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;