From d9fc28c0a15f6731b93796c5686af339c91c7401 Mon Sep 17 00:00:00 2001 From: Marco Date: Mon, 26 Sep 2016 09:57:49 -0700 Subject: [PATCH] vp9: Reduce frame loopfilter-level for 1 pass cbr. Reduce the filt_guess for 1 pass cbr on inter-frames. This reduces visual artifact seen in rtc clip (jimred.vga), and improves metrics on rtc set. Metrics on rtc set for cbr mode overall positive, most clips are up: Speed 7 rtc: avgPSNR/SSIM up by: ~2.6/3.9% Speed 8 rtc: avgPSNR/SSIM up by: ~1.3/2.5% Change-Id: Ia4eccea1c19d65b583516df28823cd756c49464f --- vp9/encoder/vp9_picklpf.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/vp9/encoder/vp9_picklpf.c b/vp9/encoder/vp9_picklpf.c index 1583cc8ab..6fc7cd1e3 100644 --- a/vp9/encoder/vp9_picklpf.c +++ b/vp9/encoder/vp9_picklpf.c @@ -180,6 +180,10 @@ void vp9_pick_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi, } #else int filt_guess = ROUND_POWER_OF_TWO(q * 20723 + 1015158, 18); + if (cpi->oxcf.pass == 0 && cpi->oxcf.rc_mode == VPX_CBR && + cpi->oxcf.content != VP9E_CONTENT_SCREEN && cm->frame_type != KEY_FRAME) + filt_guess = 5 * filt_guess >> 3; + #endif // CONFIG_VP9_HIGHBITDEPTH if (cm->frame_type == KEY_FRAME) filt_guess -= 4; lf->filter_level = clamp(filt_guess, min_filter_level, max_filter_level); -- 2.40.0