]> granicus.if.org Git - libvpx/commitdiff
vp9: Add lower Q limt to cyclic refresh usage.
authorMarco Paniconi <marpan@google.com>
Mon, 25 Jun 2018 04:44:29 +0000 (21:44 -0700)
committerMarco Paniconi <marpan@google.com>
Mon, 25 Jun 2018 21:16:32 +0000 (14:16 -0700)
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

vp9/encoder/vp9_aq_cyclicrefresh.c

index f47da2fa487ff53f776757062993a2265206618a..e11c9493266c371f54f69c5e705ca9e3307e5647 100644 (file)
@@ -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 &&