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
diff --git a/av1/encoder/encode_strategy.c b/av1/encoder/encode_strategy.c
index c9e4e17..611fe56 100644
--- a/av1/encoder/encode_strategy.c
+++ b/av1/encoder/encode_strategy.c
@@ -956,9 +956,9 @@
av1_set_frame_size(cpi, cm->width, cm->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 e83e73a..a9ad30c 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -1107,9 +1107,10 @@
av1_get_ref_frames(cpi, &cpi->ref_buffer_stack);
}
-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));
@@ -1156,7 +1157,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 40aabae..a63d1a4 100644
--- a/av1/encoder/tpl_model.h
+++ b/av1/encoder/tpl_model.h
@@ -207,6 +207,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,