From: Paul Wilkins Date: Wed, 16 Apr 2014 02:15:43 +0000 (-0700) Subject: Fix rate control bug. X-Git-Tag: v1.4.0~1789^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=658daf36fa25ff89a4041d398b7a572898b23ead;p=libvpx 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 --- diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c index f2afc4645..806ab9379 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();