From 658daf36fa25ff89a4041d398b7a572898b23ead Mon Sep 17 00:00:00 2001
From: Paul Wilkins <paulwilkins@google.com>
Date: Tue, 15 Apr 2014 19:15:43 -0700
Subject: [PATCH] Fix rate control bug.

Fix rate control bug whereby the rate factor heuristics
were being updated on arf overlays causing a rate surge
for a few frames followed by a corrective drop.

This fix eliminates many of the overshoot problems that
we were seeing on hard clips (even without applying
stricter vbr rate control) and also helps quality on
almost all clips with some hard clips improving by >5%.

Overall quality results measured at speed 2.
Derf  +1.78% opsnr , +2.44% SSIM
Stdhd +2.41% opsnr, +2.85% SSIM

Change-Id: I2369df6295c2705963fa6307877f6acb304bcc39
---
 vp9/encoder/vp9_ratectrl.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c
index f2afc46459..806ab93796 100644
--- a/vp9/encoder/vp9_ratectrl.c
+++ b/vp9/encoder/vp9_ratectrl.c
@@ -308,6 +308,10 @@ void vp9_rc_update_rate_correction_factors(VP9_COMP *cpi, int damp_var) {
 
   int projected_size_based_on_q = 0;
 
+  // Do not update the rate factors for arf overlay frames.
+  if (cpi->rc.is_src_frame_alt_ref)
+    return;
+
   // Clear down mmx registers to allow floating point in what follows
   vp9_clear_system_state();
 
-- 
GitLab