From: Yaowu Xu Date: Fri, 21 Nov 2014 19:55:27 +0000 (-0800) Subject: Separate rate_correction_factor for boosted GFs X-Git-Tag: v1.4.0~456^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e4234b3f8b704250dfcf8f97096534a3eef114d9;p=libvpx Separate rate_correction_factor for boosted GFs When the golden frame is boosted, the rate correction factor is not correlated well with other inter frames even in CBR mode. This commit changes to use GF specific rate_correction_factor when gf_cbr_boost is greater than 20%. Change-Id: I6312c1564387bcacc11f4c5e8a9cfdc781b5c3ab --- diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c index 32acea0ff..97ededc5d 100644 --- a/vp9/encoder/vp9_ratectrl.c +++ b/vp9/encoder/vp9_ratectrl.c @@ -370,7 +370,7 @@ static double get_rate_correction_factor(const VP9_COMP *cpi) { } else { if ((cpi->refresh_alt_ref_frame || cpi->refresh_golden_frame) && !rc->is_src_frame_alt_ref && !cpi->use_svc && - cpi->oxcf.rc_mode != VPX_CBR) + (cpi->oxcf.rc_mode != VPX_CBR || cpi->oxcf.gf_cbr_boost_pct > 20)) return rc->rate_correction_factors[GF_ARF_STD]; else return rc->rate_correction_factors[INTER_NORMAL]; @@ -389,7 +389,7 @@ static void set_rate_correction_factor(VP9_COMP *cpi, double factor) { } else { if ((cpi->refresh_alt_ref_frame || cpi->refresh_golden_frame) && !rc->is_src_frame_alt_ref && !cpi->use_svc && - cpi->oxcf.rc_mode != VPX_CBR) + (cpi->oxcf.rc_mode != VPX_CBR || cpi->oxcf.gf_cbr_boost_pct > 20)) rc->rate_correction_factors[GF_ARF_STD] = factor; else rc->rate_correction_factors[INTER_NORMAL] = factor;