Commit 26888f351b for aom

commit 26888f351b2419a8ade58e84c85031b97e40fa6a
Author: Jerome Jiang <jianj@google.com>
Date:   Fri Jan 16 09:53:58 2026 -0500

    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 68e39b7139..838064678d 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -1463,6 +1463,10 @@ static inline void init_mc_flow_dispenser(AV1_COMP *cpi, int frame_idx,
       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 @@ void av1_mc_flow_dispenser_row(AV1_COMP *cpi, TplTxfmStats *tpl_txfm_stats,
   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 @@ void av1_mc_flow_dispenser_row(AV1_COMP *cpi, TplTxfmStats *tpl_txfm_stats,
     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 @@ int av1_tpl_setup_stats(AV1_COMP *cpi, int gop_eval,

   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 @@ int av1_tpl_setup_stats(AV1_COMP *cpi, int gop_eval,
                              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,