rtc: golden update under cyclic refresh

For 1 pass rtc mode: when golden is used as
periodic updated reference (i.e., gld_fixed_slot),
disable the cyclic refresh on this golden update frame.
By turning off the lower segment delta-qp, the frame level
qp will generally be lower, making the gld update frame
overall slightly better reference.

On rtc_derf for speed 7: all clips show bdrate gain,
range from 0.1 to 1.2%, with average of 0.43%.

Negligible speed/fps change.

Change-Id: Ic2fab6d19e2b0563f1375bee439054d67be06636
diff --git a/av1/encoder/aq_cyclicrefresh.c b/av1/encoder/aq_cyclicrefresh.c
index 49221a6..738a02a 100644
--- a/av1/encoder/aq_cyclicrefresh.c
+++ b/av1/encoder/aq_cyclicrefresh.c
@@ -38,6 +38,7 @@
   assert(MAXQ <= 255);
   memset(cr->last_coded_q_map, MAXQ, last_coded_q_map_size);
   cr->avg_frame_low_motion = 0.0;
+  cr->gld_fixed_slot = 0;
   return cr;
 }
 
@@ -343,6 +344,7 @@
   cr->apply_cyclic_refresh = 1;
   if (frame_is_intra_only(cm) || is_lossless_requested(&cpi->oxcf) ||
       cpi->svc.temporal_layer_id > 0 ||
+      (cr->gld_fixed_slot && cpi->refresh_golden_frame) ||
       rc->avg_frame_qindex[INTER_FRAME] < qp_thresh ||
       (rc->frames_since_key > 20 &&
        rc->avg_frame_qindex[INTER_FRAME] > qp_max_thresh) ||
diff --git a/av1/encoder/aq_cyclicrefresh.h b/av1/encoder/aq_cyclicrefresh.h
index ee62f6a..304c598 100644
--- a/av1/encoder/aq_cyclicrefresh.h
+++ b/av1/encoder/aq_cyclicrefresh.h
@@ -67,6 +67,7 @@
   int apply_cyclic_refresh;
   int cnt_zeromv;
   double avg_frame_low_motion;
+  int gld_fixed_slot;
 };
 
 struct AV1_COMP;
diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c
index 01b6956..0573f18 100644
--- a/av1/encoder/ratectrl.c
+++ b/av1/encoder/ratectrl.c
@@ -1919,6 +1919,7 @@
     cpi->ext_refresh_golden_frame = 1;
     cpi->svc.refresh[gld_idx] = 1;
   }
+  cpi->cyclic_refresh->gld_fixed_slot = gld_fixed_slot;
 }
 
 #define DEFAULT_KF_BOOST_RT 2300