summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Paniconi <marpan@google.com>2018-06-24 21:44:29 -0700
committerMarco Paniconi <marpan@google.com>2018-06-25 14:16:32 -0700
commitdd3d08f0c227ebe08b445801eeb38d39cc06f377 (patch)
tree83b4ad000c317126a814b2a8e09e151a6f1bfa4b
parenta5d499e16570d00d5e1348b1c7977ced7af3670f (diff)
downloadlibvpx-dd3d08f0c227ebe08b445801eeb38d39cc06f377.tar
libvpx-dd3d08f0c227ebe08b445801eeb38d39cc06f377.tar.gz
libvpx-dd3d08f0c227ebe08b445801eeb38d39cc06f377.tar.bz2
libvpx-dd3d08f0c227ebe08b445801eeb38d39cc06f377.zip
vp9: Add lower Q limt to cyclic refresh usage.
Disable the cyclic refresh for very low average Q. This reduces encoded bitrate for static slides after the the quality has ramped up well enough (low Q). And as the cyclic refresh is not needed at low Q in most cases, this has minimal/no effect on quality on RTC set. Change-Id: Id6d449aa2351bb6886d72aafb2d406e967ed2789
-rw-r--r--vp9/encoder/vp9_aq_cyclicrefresh.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_aq_cyclicrefresh.c b/vp9/encoder/vp9_aq_cyclicrefresh.c
index f47da2fa4..e11c94932 100644
--- a/vp9/encoder/vp9_aq_cyclicrefresh.c
+++ b/vp9/encoder/vp9_aq_cyclicrefresh.c
@@ -427,9 +427,11 @@ void vp9_cyclic_refresh_update_parameters(VP9_COMP *const cpi) {
double weight_segment_target = 0;
double weight_segment = 0;
int thresh_low_motion = (cm->width < 720) ? 55 : 20;
+ int qp_thresh = VPXMIN(20, rc->best_quality << 1);
cr->apply_cyclic_refresh = 1;
if (cm->frame_type == KEY_FRAME || cpi->svc.temporal_layer_id > 0 ||
is_lossless_requested(&cpi->oxcf) ||
+ rc->avg_frame_qindex[INTER_FRAME] < qp_thresh ||
(cpi->use_svc &&
cpi->svc.layer_context[cpi->svc.temporal_layer_id].is_key_frame) ||
(!cpi->use_svc && rc->avg_frame_low_motion < thresh_low_motion &&