shithub: libvpx

Download patch

ref: 9f79259e545eb3b9ddabbbc6bd9eab842e5f629d
parent: 8e112d9586a9a79227859fc0a39150ac955ff134
author: Yaowu Xu <[email protected]>
date: Thu Nov 13 06:20:04 EST 2014

adapt the adjustment limit for rate correction factor in RTC mode

Rate correction factor is used to correct the estimated rate for any
given quantizer, and feeds into rate control for quantizer selection.
We make use of the actual bits used to calculate this rate correction
factor with an adjustment limit to prevent over-adjustment.

This commit adapts the adjustment limit to the difference between the
estimated bits and the actual bits, allows the adjustment limit to vary
between 0.125 (when estimate is close to actual) and 0.625 (when there
is >10X factor off between estimated and actual bits). By doing this,
the commit appears to have largely corrected two observed issues:
1. Adjustment is too slow when the actual bits used is way off from
estimate due to the small adjustment limit.
2. Extreme oscillating quantizer choices due to the feedback loop.

Change-Id: I4ee148d2c9d26d173b6c48011313ddb07ce2d7d6

--- a/vp9/encoder/vp9_ratectrl.c
+++ b/vp9/encoder/vp9_ratectrl.c
@@ -430,7 +430,7 @@
       adjustment_limit = 0.75;
       break;
     case 1:
-      adjustment_limit = 0.375;
+      adjustment_limit = 0.125 + 0.5 * MIN(1, fabs(log10(0.01 * correction_factor)));
       break;
     case 2:
     default: