]> granicus.if.org Git - libvpx/commitdiff
Fix skippable evaluation in mode decision
authorYunqing Wang <yunqingwang@google.com>
Mon, 27 Feb 2012 17:45:12 +0000 (12:45 -0500)
committerYunqing Wang <yunqingwang@google.com>
Mon, 27 Feb 2012 17:45:12 +0000 (12:45 -0500)
Yaowu fixed the skippable evaluation by correcting 2nd order
block's eob.

Change-Id: Id47930cbc74a90a046c0c0e324efb03477639ee0

vp8/encoder/rdopt.c

index 528e6bedf479c13f299a46f40ad9917b22f46f99..92f392e30cabba37243ae231d6a426913aa65616 100644 (file)
@@ -2214,22 +2214,22 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
             if (cpi->common.mb_no_coeff_skip)
             {
                 int tteob;
+                int has_y2_block = (this_mode!=SPLITMV && this_mode!=B_PRED);
 
                 tteob = 0;
+                if(has_y2_block)
+                    tteob += x->e_mbd.eobs[24];
+
+                for (i = 0; i < 16; i++)
+                    tteob += (x->e_mbd.eobs[i] > has_y2_block);
 
                 if (x->e_mbd.mode_info_context->mbmi.ref_frame)
                 {
-                    for (i = 0; i <= 24; i++)
+                    for (i = 16; i < 24; i++)
                         tteob += x->e_mbd.eobs[i];
                 }
                 else
-                {
-                    for (i = 0; i < 16; i++)
-                        tteob += x->e_mbd.eobs[i];
-
                     tteob += uv_intra_tteob;
-                    tteob += x->e_mbd.eobs[24];
-                }
 
                 if (tteob == 0)
                 {