shithub: libvpx

Download patch

ref: 849c9540d5070a7bfbdb9a4545da763d87bbce15
parent: ee38c4184b46869616e1b0a0d207f34bbed8e7eb
parent: 6cd2541379be95d002c6059b4b5b64697c2aa543
author: Ronald S. Bultje <rbultje@google.com>
date: Mon Nov 5 01:21:03 EST 2012

Merge "Don't generate residual 3x when doing a macroblock luma RD estimate." into experimental

--- a/vp9/encoder/rdopt.c
+++ b/vp9/encoder/rdopt.c
@@ -651,9 +651,6 @@
   BLOCK *beptr;
   int d;
 
-  vp9_subtract_mby(mb->src_diff, *(mb->block[0].base_src), xd->predictor,
-                   mb->block[0].src_stride);
-
   // Fdct and building the 2nd order block
   for (beptr = mb->block; beptr < mb->block + 16; beptr += 2) {
     mb->vp9_short_fdct8x4(beptr->src_diff, beptr->coeff, 32);
@@ -722,9 +719,6 @@
   BLOCKD *const x_y2  = xd->block + 24;
   int d;
 
-  vp9_subtract_mby(mb->src_diff, *(mb->block[0].base_src), xd->predictor,
-                   mb->block[0].src_stride);
-
   vp9_transform_mby_8x8(mb);
   vp9_quantize_mby_8x8(mb);
 
@@ -771,9 +765,6 @@
   BLOCK  *be = &mb->block[0];
   TX_TYPE tx_type;
 
-  vp9_subtract_mby(mb->src_diff, *(mb->block[0].base_src), mb->e_mbd.predictor,
-                   mb->block[0].src_stride);
-
   tx_type = get_tx_type_16x16(xd, b);
   if (tx_type != DCT_DCT) {
     vp9_fht(be->src_diff, 32, be->coeff, tx_type, 16);
@@ -810,7 +801,9 @@
   int d16x16, r16x16, r16x16s, s16x16;
   int64_t rd16x16, rd16x16s;
 
-  // FIXME don't do sub x3
+  vp9_subtract_mby(x->src_diff, *(x->block[0].base_src), xd->predictor,
+                   x->block[0].src_stride);
+
   if (skip_prob == 0)
     skip_prob = 1;
   s0 = vp9_cost_bit(skip_prob, 0);