shithub: libvpx

Download patch

ref: 00c0cbb4452fe532c6b792c5aae0f659136d229d
parent: 33a0deb92835500f4f1edf71fe085f530acd0cc5
parent: e4702deeec1573a0258e5befd01178cca045584f
author: paulwilkins <[email protected]>
date: Tue Jul 7 04:44:15 EDT 2015

Merge "ARF Boost correction for inactive regions."

--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -1450,15 +1450,21 @@
                                const FIRSTPASS_STATS *this_frame,
                                double this_frame_mv_in_out,
                                double max_boost) {
+  VP9_COMMON *const cm = &cpi->common;
   double frame_boost;
   const double lq =
     vp9_convert_qindex_to_q(cpi->rc.avg_frame_qindex[INTER_FRAME],
                             cpi->common.bit_depth);
   const double boost_q_correction = MIN((0.5 + (lq * 0.015)), 1.5);
-  const int num_mbs = (cpi->oxcf.resize_mode != RESIZE_NONE)
-                      ? cpi->initial_mbs : cpi->common.MBs;
+  double inactive_pct;
+  int num_mbs = (cpi->oxcf.resize_mode != RESIZE_NONE)
+                ? cpi->initial_mbs : cpi->common.MBs;
 
-  // TODO(paulwilkins): correct for dead zone
+  // Correct for any inactive zone in the image
+  inactive_pct = (this_frame->intra_skip_pct / 2) +
+                 ((this_frame->inactive_zone_rows * 2) / (double)cm->mb_rows);
+  inactive_pct = fclamp(inactive_pct, 0.0, 0.5);
+  num_mbs = (int)MAX(1, num_mbs - (num_mbs * inactive_pct));
 
   // Underlying boost factor is based on inter error ratio.
   frame_boost = (BASELINE_ERR_PER_MB * num_mbs) /