From 9f79259e545eb3b9ddabbbc6bd9eab842e5f629d Mon Sep 17 00:00:00 2001 From: Yaowu Xu Date: Thu, 13 Nov 2014 11:20:04 -0800 Subject: [PATCH] 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 --- vp9/encoder/vp9_ratectrl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c index 6f165797e..3da466175 100644 --- a/vp9/encoder/vp9_ratectrl.c +++ b/vp9/encoder/vp9_ratectrl.c @@ -430,7 +430,7 @@ void vp9_rc_update_rate_correction_factors(VP9_COMP *cpi, int damp_var) { 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: -- 2.40.0