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,