From d9d93140c437f0e5a2b4c6396831f4f465c8195e Mon Sep 17 00:00:00 2001 From: Marco Paniconi Date: Fri, 29 Jun 2018 15:34:54 -0700 Subject: [PATCH] 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 --- vp9/encoder/vp9_aq_cyclicrefresh.c | 3 ++- vp9/encoder/vp9_encoder.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/vp9/encoder/vp9_aq_cyclicrefresh.c b/vp9/encoder/vp9_aq_cyclicrefresh.c index e11c94932..d89295bdf 100644 --- a/vp9/encoder/vp9_aq_cyclicrefresh.c +++ b/vp9/encoder/vp9_aq_cyclicrefresh.c @@ -593,7 +593,8 @@ void vp9_cyclic_refresh_reset_resize(VP9_COMP *const cpi) { 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; diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index dc2a5a56c..976199759 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -3880,8 +3880,12 @@ static int encode_without_recode_loop(VP9_COMP *cpi, size_t *size, 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); -- 2.40.0