Fix tpl stored ref frame indices

Some details on this:

- gf_group->ref_frame_list stores the absolute slot idx from ext rc;

And:

- src_stats->ref_frame_index comes from best_rf_idx in function mode_estimation;
- best_rf_idx was used to retrieve the ref like this:
    const YV12_BUFFER_CONFIG *ref_frame_ptr = tpl_data->src_ref_frame[rf_idx];
- tpl_data->src_ref_frame[rf_idx] comes from tpl_data->tpl_frame[tpl_frame->ref_map_index[rf_idx]];
- tpl_frame->ref_map_index[i - LAST_FRAME] = ref_picture_map[remapped_ref_idx[i- LAST_FRAME]];
- ref_picture_map handles the map from ref slot idx to the actual frame idx in tpl
- remapped_ref_idx[rf - LAST_FRAME] = gf_group.ref_frame_list[gf_index][rf];

Therefore if a block has src_stats->ref_frame_index[i] == X, then that
means it uses ref frame stored at
tpl_data->tpl_frame[tpl_frame->ref_map_index[X]], which is
tpl_data->tpl_frame[ref_picture_map[remapped_ref_idx[X]]], which is
tpl_data->tpl_frame[ref_picture_map[gf_group.ref_frame_list[gf_index][X+LAST_FRAME]]],

So that ultimately means if a block has src_stats->ref_frame_index[i] ==
X, then it uses ref slot
gf_group.ref_frame_list[gf_index][X+LAST_FRAME].

Change-Id: I85f758da85575f2eeb00a75811118d0155462f0e
diff --git a/av1/encoder/tpl_model.c b/av1/encoder/tpl_model.c
index 5dcf47b..0269f43 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -1463,9 +1463,13 @@
       gf_group->layer_depth[frame_idx] >= layer_depth_th;
 }
 
-static void tpl_store_before_propagation(AomTplBlockStats *tpl_block_stats,
+static void tpl_store_before_propagation(AV1_COMP *cpi,
+                                         AomTplBlockStats *tpl_block_stats,
                                          TplDepStats *src_stats, int mi_row,
                                          int mi_col) {
+  TplParams *const tpl_data = &cpi->ppi->tpl_data;
+  GF_GROUP *gf_group = &cpi->ppi->gf_group;
+
   tpl_block_stats->row = mi_row * MI_SIZE;
   tpl_block_stats->col = mi_col * MI_SIZE;
   tpl_block_stats->srcrf_sse = src_stats->srcrf_sse;
@@ -1490,8 +1494,12 @@
   tpl_block_stats->intra_rate = src_stats->intra_rate;
   tpl_block_stats->cmp_recrf_rate[0] = src_stats->cmp_recrf_rate[0];
   tpl_block_stats->cmp_recrf_rate[1] = src_stats->cmp_recrf_rate[1];
-  tpl_block_stats->ref_frame_index[0] = src_stats->ref_frame_index[0];
-  tpl_block_stats->ref_frame_index[1] = src_stats->ref_frame_index[1];
+  tpl_block_stats->ref_frame_index[0] =
+      gf_group->ref_frame_list[tpl_data->frame_idx]
+                              [LAST_FRAME + src_stats->ref_frame_index[0]];
+  tpl_block_stats->ref_frame_index[1] =
+      gf_group->ref_frame_list[tpl_data->frame_idx]
+                              [LAST_FRAME + src_stats->ref_frame_index[1]];
   for (int ref = 0; ref < AOM_RC_INTER_REFS_PER_FRAME; ++ref) {
     tpl_block_stats->mv[ref].as_mv.col = src_stats->mv[ref].as_mv.col;
     tpl_block_stats->mv[ref].as_mv.row = src_stats->mv[ref].as_mv.row;
@@ -1557,7 +1565,8 @@
       AomTplBlockStats *block_stats =
           &tpl_frame_stats_before_propagation
                ->block_stats_list[mi_row * tpl_frame->mi_cols + mi_col];
-      tpl_store_before_propagation(block_stats, &tpl_stats, mi_row, mi_col);
+      tpl_store_before_propagation(cpi, block_stats, &tpl_stats, mi_row,
+                                   mi_col);
     }
 
     (*tpl_row_mt->sync_write_ptr)(&tpl_data->tpl_mt_sync, tplb_row,