ref: d9d93140c437f0e5a2b4c6396831f4f465c8195e
parent: a2d35b234f176316fb978d8c7099a003ddd4e8ab
author: Marco Paniconi <marpan@google.com>
date: Fri Jun 29 11:34:54 EDT 2018
vp9: Reset params for cyclic refresh on slide change Reset the last_coded_q_map and the sb->index in the cyclic_refresh on a re-encode for slide change, so the refresh can start again right after slide change. Change-Id: I10cbc8354de8f7c2863b4212e6793b58a048b330
--- a/vp9/encoder/vp9_aq_cyclicrefresh.c
+++ b/vp9/encoder/vp9_aq_cyclicrefresh.c
@@ -593,7 +593,8 @@
const VP9_COMMON *const cm = &cpi->common;
CYCLIC_REFRESH *const cr = cpi->cyclic_refresh;
memset(cr->map, 0, cm->mi_rows * cm->mi_cols);
- memset(cr->last_coded_q_map, MAXQ, cm->mi_rows * cm->mi_cols);
+ memset(cr->last_coded_q_map, MAXQ,
+ cm->mi_rows * cm->mi_cols * sizeof(*cr->last_coded_q_map));
cr->sb_index = 0;
cpi->refresh_golden_frame = 1;
cpi->refresh_alt_ref_frame = 1;
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -3880,8 +3880,12 @@
suppress_active_map(cpi);
// Turn-off cyclic refresh for re-encoded frame.
if (cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ) {
+ CYCLIC_REFRESH *const cr = cpi->cyclic_refresh;
unsigned char *const seg_map = cpi->segmentation_map;
memset(seg_map, 0, cm->mi_rows * cm->mi_cols);
+ memset(cr->last_coded_q_map, MAXQ,
+ cm->mi_rows * cm->mi_cols * sizeof(*cr->last_coded_q_map));
+ cr->sb_index = 0;
vp9_disable_segmentation(&cm->seg);
}
apply_active_map(cpi);