vp9-svc: Fix to disable cyclic refresh on key superframes.
authorMarco Paniconi <marpan@google.com>
Thu, 5 Apr 2018 22:54:17 +0000 (15:54 -0700)
committerMarco Paniconi <marpan@google.com>
Thu, 5 Apr 2018 22:58:36 +0000 (15:58 -0700)
Cyclic refresh is disabled on key frames, but we did not
disable it for for spatial layers whose base is a key frame
(i.e., on a key-superframe).

This fix means generally somewhat lower frame-level QP will be
used for those spatial layers whose base is a key frame,
which will generally mean little better quality for the
key-superframes.

Change-Id: Idf090651aa2f5856fb6696c89198a9f6d5d50280

vp9/encoder/vp9_aq_cyclicrefresh.c

index ed43de7..ef8484f 100644 (file)
@@ -428,6 +428,8 @@ void vp9_cyclic_refresh_update_parameters(VP9_COMP *const cpi) {
   int thresh_low_motion = (cm->width < 720) ? 55 : 20;
   cr->apply_cyclic_refresh = 1;
   if (cm->frame_type == KEY_FRAME || cpi->svc.temporal_layer_id > 0 ||
+      (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 &&
        rc->frames_since_key > 40)) {
     cr->apply_cyclic_refresh = 0;