Tune rate-distortion modeling for non-RD mode decision
authorJingning Han <jingning@google.com>
Wed, 12 Mar 2014 17:03:28 +0000 (10:03 -0700)
committerJingning Han <jingning@google.com>
Wed, 12 Mar 2014 21:31:59 +0000 (14:31 -0700)
This commit adjusts the rate-distortion modeling for non-RD mode
decision. It puts more weights on energy from AC coefficients when
estimating the cost. The coding performance for rtc testset is
improved by 0.72%.

Change-Id: Ifa6ff11311a513ec2b10586589e82a9a21f6c61c

vp9/encoder/vp9_pickmode.c

index e38ba98..4bafabd 100644 (file)
@@ -207,14 +207,14 @@ static void model_rd_for_sb_y(VP9_COMP *cpi, BLOCK_SIZE bsize,
   struct macroblockd_plane *const pd = &xd->plane[0];
   const BLOCK_SIZE bs = get_plane_block_size(bsize, pd);
 
-  (void) cpi->fn_ptr[bs].vf(p->src.buf, p->src.stride,
-                            pd->dst.buf, pd->dst.stride, &sse);
+  int var = cpi->fn_ptr[bs].vf(p->src.buf, p->src.stride,
+                               pd->dst.buf, pd->dst.stride, &sse);
 
-  vp9_model_rd_from_var_lapndz(sse, 1 << num_pels_log2_lookup[bs],
+  vp9_model_rd_from_var_lapndz(var + sse, 1 << num_pels_log2_lookup[bs],
                                pd->dequant[1] >> 3, &rate, &dist);
 
   *out_rate_sum = rate;
-  *out_dist_sum = dist << 4;
+  *out_dist_sum = dist << 3;
 }
 
 // TODO(jingning) placeholder for inter-frame non-RD mode decision.