Reset TPL stats regardless if it is set up Avoid the use of unintended TPL stats from previous GOP's results. STATS_CHANGED Change-Id: I387bc141c76f094518af95951e2c156e0dcaaf6a (cherry picked from commit dcb4fdcce5332e59951bd883bd66310773295f10)
diff --git a/av1/encoder/encode_strategy.c b/av1/encoder/encode_strategy.c index 4e0eaca..3b69cb2 100644 --- a/av1/encoder/encode_strategy.c +++ b/av1/encoder/encode_strategy.c
@@ -1195,9 +1195,9 @@ cm->superres_upscaled_height); } } - if (allow_tpl) { - av1_tpl_setup_stats(cpi, 0, frame_params, frame_input); - } + + if (gf_group->index == 0) av1_init_tpl_stats(&cpi->tpl_data); + if (allow_tpl) av1_tpl_setup_stats(cpi, 0, frame_params, frame_input); if (av1_encode(cpi, dest, frame_input, frame_params, frame_results) != AOM_CODEC_OK) {
diff --git a/av1/encoder/tpl_model.c b/av1/encoder/tpl_model.c index eaedcb3..c5b960d 100644 --- a/av1/encoder/tpl_model.c +++ b/av1/encoder/tpl_model.c
@@ -1150,9 +1150,10 @@ ref_frame_map_pairs); } -static AOM_INLINE void init_tpl_stats(TplParams *const tpl_data) { +void av1_init_tpl_stats(TplParams *const tpl_data) { for (int frame_idx = 0; frame_idx < MAX_LAG_BUFFERS; ++frame_idx) { TplDepFrame *tpl_frame = &tpl_data->tpl_stats_buffer[frame_idx]; + if (tpl_data->tpl_stats_pool[frame_idx] == NULL) continue; memset(tpl_data->tpl_stats_pool[frame_idx], 0, tpl_frame->height * tpl_frame->width * sizeof(*tpl_frame->tpl_stats_ptr)); @@ -1200,7 +1201,7 @@ cpi->rc.base_layer_qp = pframe_qindex; - init_tpl_stats(tpl_data); + av1_init_tpl_stats(tpl_data); tpl_row_mt->sync_read_ptr = av1_tpl_row_mt_sync_read_dummy; tpl_row_mt->sync_write_ptr = av1_tpl_row_mt_sync_write_dummy;
diff --git a/av1/encoder/tpl_model.h b/av1/encoder/tpl_model.h index b4d3db2..85b3b9f 100644 --- a/av1/encoder/tpl_model.h +++ b/av1/encoder/tpl_model.h
@@ -209,6 +209,8 @@ int av1_tpl_ptr_pos(int mi_row, int mi_col, int stride, uint8_t right_shift); +void av1_init_tpl_stats(TplParams *const tpl_data); + void av1_tpl_rdmult_setup(struct AV1_COMP *cpi); void av1_tpl_rdmult_setup_sb(struct AV1_COMP *cpi, MACROBLOCK *const x,