shithub: libvpx

Download patch

ref: 4ef1d35abfb96f92b8999cea4ffed099518a1eba
parent: c3871f8f70f8b54db898f5134f0596d8de70182f
parent: 0359ad7f9a8d8e78482b869d9c911df4d02f5dbf
author: Jingning Han <jingning@google.com>
date: Tue Jul 23 06:31:19 EDT 2013

Merge "Skip inverse transform when eob is zero"

--- a/vp9/encoder/vp9_encodemb.c
+++ b/vp9/encoder/vp9_encodemb.c
@@ -533,6 +533,8 @@
 
   if (x->skip_encode)
     return;
+  if (pd->eobs[block] == 0)
+    return;
 
   switch (ss_txfrm_size / 2) {
     case TX_32X32:
@@ -657,7 +659,7 @@
       vp9_quantize_b_32x32(coeff, 1024, x->skip_block, p->zbin, p->round,
                            p->quant, p->quant_shift, qcoeff, dqcoeff,
                            pd->dequant, p->zbin_extra, eob, scan, iscan);
-      if (!x->skip_encode)
+      if (!x->skip_encode && *eob)
         vp9_short_idct32x32_add(dqcoeff, dst, pd->dst.stride);
       break;
     case TX_16X16:
@@ -682,7 +684,7 @@
       vp9_quantize_b(coeff, 256, x->skip_block, p->zbin, p->round, p->quant,
                      p->quant_shift, qcoeff, dqcoeff,
                      pd->dequant, p->zbin_extra, eob, scan, iscan);
-      if (!x->skip_encode) {
+      if (!x->skip_encode && *eob) {
         if (tx_type == DCT_DCT)
           vp9_short_idct16x16_add(dqcoeff, dst, pd->dst.stride);
         else
@@ -711,7 +713,7 @@
       vp9_quantize_b(coeff, 64, x->skip_block, p->zbin, p->round, p->quant,
                      p->quant_shift, qcoeff, dqcoeff,
                      pd->dequant, p->zbin_extra, eob, scan, iscan);
-      if (!x->skip_encode) {
+      if (!x->skip_encode && *eob) {
         if (tx_type == DCT_DCT)
           vp9_short_idct8x8_add(dqcoeff, dst, pd->dst.stride);
         else
@@ -743,7 +745,7 @@
       vp9_quantize_b(coeff, 16, x->skip_block, p->zbin, p->round, p->quant,
                      p->quant_shift, qcoeff, dqcoeff,
                      pd->dequant, p->zbin_extra, eob, scan, iscan);
-      if (!x->skip_encode) {
+      if (!x->skip_encode && *eob) {
         if (tx_type == DCT_DCT)
           // this is like vp9_short_idct4x4 but has a special case around eob<=1
           // which is significant (not just an optimization) for the lossless