Only allocate related tpl stats when using ext rc

Change-Id: I9173ef3792f18f174d1810aff8c5fb37ff2e003e
diff --git a/av1/encoder/tpl_model.c b/av1/encoder/tpl_model.c
index 68e39b7..8380646 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -1463,6 +1463,10 @@
       gf_group->layer_depth[frame_idx] >= layer_depth_th;
 }
 
+static inline bool use_tpl_for_extrc(AOM_EXT_RATECTRL const *ext_rc) {
+  return ext_rc->ready && ext_rc->funcs.send_tpl_gop_stats != NULL;
+}
+
 static void tpl_store_before_propagation(AomTplBlockStats *tpl_block_stats,
                                          TplDepStats *src_stats, int mi_row,
                                          int mi_col) {
@@ -1515,10 +1519,6 @@
   TplParams *const tpl_data = &cpi->ppi->tpl_data;
   TplDepFrame *tpl_frame = &tpl_data->tpl_frame[tpl_data->frame_idx];
   MACROBLOCKD *xd = &x->e_mbd;
-
-  AomTplFrameStats *tpl_frame_stats_before_propagation =
-      &cpi->extrc_tpl_gop_stats.frame_stats_list[tpl_data->frame_idx];
-
   const int tplb_cols_in_tile =
       ROUND_POWER_OF_TWO(mi_params->mi_cols, mi_size_wide_log2[bsize]);
   const int tplb_row = ROUND_POWER_OF_TWO(mi_row, mi_size_high_log2[bsize]);
@@ -1555,10 +1555,15 @@
     tpl_model_store(tpl_frame->tpl_stats_ptr, mi_row, mi_col, tpl_frame->stride,
                     &tpl_stats, tpl_data->tpl_stats_block_mis_log2);
 
-    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);
+    if (use_tpl_for_extrc(&cpi->ext_ratectrl)) {
+      AomTplFrameStats *tpl_frame_stats_before_propagation =
+          &cpi->extrc_tpl_gop_stats.frame_stats_list[tpl_data->frame_idx];
+      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_row_mt->sync_write_ptr)(&tpl_data->tpl_mt_sync, tplb_row,
                                   tplb_col_in_tile, tplb_cols_in_tile);
   }
@@ -2059,9 +2064,11 @@
 
   av1_init_tpl_stats(tpl_data);
 
-  init_tpl_stats_before_propagation(
-      cpi->common.error, &cpi->extrc_tpl_gop_stats, tpl_data,
-      tpl_gf_group_frames, cpi->common.width, cpi->common.height);
+  if (use_tpl_for_extrc(&cpi->ext_ratectrl)) {
+    init_tpl_stats_before_propagation(
+        cpi->common.error, &cpi->extrc_tpl_gop_stats, tpl_data,
+        tpl_gf_group_frames, cpi->common.width, cpi->common.height);
+  }
 
   TplBuffers *tpl_tmp_buffers = &cpi->td.tpl_tmp_buffers;
   if (!tpl_alloc_temp_buffers(tpl_tmp_buffers, tpl_data->tpl_bsize_1d)) {
@@ -2128,8 +2135,7 @@
                              num_planes);
   }
 
-  if (cpi->ext_ratectrl.ready &&
-      cpi->ext_ratectrl.funcs.send_tpl_gop_stats != NULL) {
+  if (use_tpl_for_extrc(&cpi->ext_ratectrl)) {
     // TPL stats has extra frames from next GOP. Trim those extra frames for
     // external RC.
     trim_tpl_stats(cpi->common.error, &cpi->extrc_tpl_gop_stats,