shithub: libvpx

Download patch

ref: 531468a07a62de99521e92377b440d7c87705812
parent: 014fa4529802ec89d1f3239722955c1493b688db
author: Jingning Han <jingning@google.com>
date: Tue Mar 31 06:57:41 EDT 2015

Tuning SATD rate calculation for speed

This commit allows the encoder to check the eob per transform
block to decide how to compute the SATD rate cost. If the entire
block is quantized to zero, there is no need to add anything; if
only the DC coefficient is non-zero, add its absolute value;
otherwise, sum over the block. This reduces the CPU cycles spent
on vp9_satd_sse2 to one third.

Change-Id: I0d56044b793b286efc0875fafc0b8bf2d2047e32

--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -401,7 +401,11 @@
         }
 
         *dist += vp9_block_error(coeff, dqcoeff, step << 4, &this_sse) >> shift;
-        *rate += (int)vp9_satd((const int16_t *)qcoeff, step << 4);
+
+        if (*eob == 1)
+          *rate += (int)abs(qcoeff[0]);
+        else if (*eob > 1)
+          *rate += (int)vp9_satd((const int16_t *)qcoeff, step << 4);
 
         *sse += (this_sse >> shift);
         *skippable &= (*eob == 0);