diff --git a/aom/aom_ext_ratectrl.h b/aom/aom_ext_ratectrl.h
index e689473..89507e9 100644
--- a/aom/aom_ext_ratectrl.h
+++ b/aom/aom_ext_ratectrl.h
@@ -469,7 +469,7 @@
  * \param[in]  tpl_gop_stats    TPL stats for current GOP
  */
 typedef aom_rc_status_t (*aom_rc_send_tpl_gop_stats_cb_fn_t)(
-    aom_rc_model_t rate_ctrl_model, const AomTplGopStats *tpl_gop_stats);
+    aom_rc_model_t rate_ctrl_model, const AomTplGopStats *extrc_tpl_gop_stats);
 
 /*!\brief Receive encode frame decision callback prototype
  *
diff --git a/av1/encoder/av1_ext_ratectrl.c b/av1/encoder/av1_ext_ratectrl.c
index 7ca1165..041a0a5 100644
--- a/av1/encoder/av1_ext_ratectrl.c
+++ b/av1/encoder/av1_ext_ratectrl.c
@@ -105,13 +105,13 @@
   return AOM_CODEC_OK;
 }
 
-aom_codec_err_t av1_extrc_send_tpl_stats(AOM_EXT_RATECTRL *ext_ratectrl,
-                                         const AomTplGopStats *tpl_gop_stats) {
+aom_codec_err_t av1_extrc_send_tpl_stats(
+    AOM_EXT_RATECTRL *ext_ratectrl, const AomTplGopStats *extrc_tpl_gop_stats) {
   assert(ext_ratectrl != NULL);
-  assert(tpl_gop_stats != NULL);
+  assert(extrc_tpl_gop_stats != NULL);
   if (ext_ratectrl->ready && ext_ratectrl->funcs.send_tpl_gop_stats != NULL) {
     aom_rc_status_t rc_status = ext_ratectrl->funcs.send_tpl_gop_stats(
-        ext_ratectrl->model, tpl_gop_stats);
+        ext_ratectrl->model, extrc_tpl_gop_stats);
     if (rc_status == AOM_RC_ERROR) {
       return AOM_CODEC_ERROR;
     }
diff --git a/av1/encoder/av1_ext_ratectrl.h b/av1/encoder/av1_ext_ratectrl.h
index 7a94cd5..6c46a78 100644
--- a/av1/encoder/av1_ext_ratectrl.h
+++ b/av1/encoder/av1_ext_ratectrl.h
@@ -37,8 +37,8 @@
 aom_codec_err_t av1_extrc_send_firstpass_stats(
     AOM_EXT_RATECTRL *ext_ratectrl, const FIRSTPASS_INFO *first_pass_info);
 
-aom_codec_err_t av1_extrc_send_tpl_stats(AOM_EXT_RATECTRL *ext_ratectrl,
-                                         const AomTplGopStats *tpl_gop_stats);
+aom_codec_err_t av1_extrc_send_tpl_stats(
+    AOM_EXT_RATECTRL *ext_ratectrl, const AomTplGopStats *extrc_tpl_gop_stats);
 
 aom_codec_err_t av1_extrc_get_encodeframe_decision(
     AOM_EXT_RATECTRL *ext_ratectrl, int gop_index,
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 24dc1d8..c68f7e9 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -3716,7 +3716,7 @@
   /*!
    * Store TPL stats before propagation
    */
-  AomTplGopStats tpl_gop_stats;
+  AomTplGopStats extrc_tpl_gop_stats;
 } AV1_COMP;
 
 /*!
diff --git a/av1/encoder/encoder_alloc.h b/av1/encoder/encoder_alloc.h
index 0ffb7cc..52b2a37 100644
--- a/av1/encoder/encoder_alloc.h
+++ b/av1/encoder/encoder_alloc.h
@@ -380,7 +380,7 @@
   cpi->mb_delta_q = NULL;
 
 #if !CONFIG_REALTIME_ONLY
-  av1_free_tpl_gop_stats(&cpi->tpl_gop_stats);
+  av1_free_tpl_gop_stats(&cpi->extrc_tpl_gop_stats);
 #endif
 }
 
diff --git a/av1/encoder/tpl_model.c b/av1/encoder/tpl_model.c
index 60dd4de..fca14fd 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -1481,7 +1481,7 @@
   MACROBLOCKD *xd = &x->e_mbd;
 
   AomTplFrameStats *tpl_frame_stats_before_propagation =
-      &cpi->tpl_gop_stats.frame_stats_list[tpl_data->frame_idx];
+      &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]);
@@ -1905,56 +1905,62 @@
   return exp((mc_dep_cost_base - intra_cost_base) / cbcmp_base);
 }
 
-void av1_free_tpl_gop_stats(AomTplGopStats *tpl_gop_stats) {
-  if (tpl_gop_stats == NULL || tpl_gop_stats->frame_stats_list == NULL) {
+void av1_free_tpl_gop_stats(AomTplGopStats *extrc_tpl_gop_stats) {
+  if (extrc_tpl_gop_stats == NULL ||
+      extrc_tpl_gop_stats->frame_stats_list == NULL) {
     return;
   }
-  for (int frame_index = 0; frame_index < tpl_gop_stats->size; ++frame_index) {
-    aom_free(tpl_gop_stats->frame_stats_list[frame_index].block_stats_list);
-    tpl_gop_stats->frame_stats_list[frame_index].block_stats_list = NULL;
+  for (int frame_index = 0; frame_index < extrc_tpl_gop_stats->size;
+       ++frame_index) {
+    AomTplFrameStats *this_frame_stats =
+        &extrc_tpl_gop_stats->frame_stats_list[frame_index];
+    aom_free(this_frame_stats->block_stats_list);
+    this_frame_stats->block_stats_list = NULL;
   }
-  aom_free(tpl_gop_stats->frame_stats_list);
-  tpl_gop_stats->frame_stats_list = NULL;
-  tpl_gop_stats->size = 0;
+  aom_free(extrc_tpl_gop_stats->frame_stats_list);
+  extrc_tpl_gop_stats->frame_stats_list = NULL;
+  extrc_tpl_gop_stats->size = 0;
 }
 
 static void init_tpl_stats_before_propagation(
-    struct aom_internal_error_info *error_info, AomTplGopStats *tpl_gop_stats,
-    TplParams *tpl_stats, int tpl_gop_frames, int frame_width,
-    int frame_height) {
-  av1_free_tpl_gop_stats(tpl_gop_stats);
+    struct aom_internal_error_info *error_info,
+    AomTplGopStats *extrc_tpl_gop_stats, TplParams *tpl_stats,
+    int tpl_gop_frames, int frame_width, int frame_height) {
+  av1_free_tpl_gop_stats(extrc_tpl_gop_stats);
   AOM_CHECK_MEM_ERROR(
-      error_info, tpl_gop_stats->frame_stats_list,
-      aom_calloc(tpl_gop_frames, sizeof(*tpl_gop_stats->frame_stats_list)));
-  tpl_gop_stats->size = tpl_gop_frames;
+      error_info, extrc_tpl_gop_stats->frame_stats_list,
+      aom_calloc(tpl_gop_frames,
+                 sizeof(*extrc_tpl_gop_stats->frame_stats_list)));
+  extrc_tpl_gop_stats->size = tpl_gop_frames;
   for (int frame_index = 0; frame_index < tpl_gop_frames; ++frame_index) {
     const int mi_rows = tpl_stats->tpl_frame[frame_index].mi_rows;
     const int mi_cols = tpl_stats->tpl_frame[frame_index].mi_cols;
+    AomTplFrameStats *this_frame_stats =
+        &extrc_tpl_gop_stats->frame_stats_list[frame_index];
     AOM_CHECK_MEM_ERROR(
-        error_info,
-        tpl_gop_stats->frame_stats_list[frame_index].block_stats_list,
+        error_info, this_frame_stats->block_stats_list,
         aom_calloc(mi_rows * mi_cols,
-                   sizeof(*tpl_gop_stats->frame_stats_list[frame_index]
-                               .block_stats_list)));
-    tpl_gop_stats->frame_stats_list[frame_index].num_blocks = mi_rows * mi_cols;
-    tpl_gop_stats->frame_stats_list[frame_index].frame_width = frame_width;
-    tpl_gop_stats->frame_stats_list[frame_index].frame_height = frame_height;
+                   sizeof(*this_frame_stats->block_stats_list)));
+    this_frame_stats->num_blocks = mi_rows * mi_cols;
+    this_frame_stats->frame_width = frame_width;
+    this_frame_stats->frame_height = frame_height;
   }
 }
 
 static void trim_tpl_stats(struct aom_internal_error_info *error_info,
-                           AomTplGopStats *tpl_gop_stats, int extra_frames) {
+                           AomTplGopStats *extrc_tpl_gop_stats,
+                           int extra_frames) {
   int i;
   AomTplFrameStats *new_frame_stats;
-  const int new_size = tpl_gop_stats->size - extra_frames;
-  if (tpl_gop_stats->size <= extra_frames)
+  const int new_size = extrc_tpl_gop_stats->size - extra_frames;
+  if (extrc_tpl_gop_stats->size <= extra_frames)
     aom_internal_error(
         error_info, AOM_CODEC_ERROR,
         "The number of frames in AomTplGopStats is fewer than expected.");
   AOM_CHECK_MEM_ERROR(error_info, new_frame_stats,
                       aom_calloc(new_size, sizeof(*new_frame_stats)));
   for (i = 0; i < new_size; i++) {
-    AomTplFrameStats *frame_stats = &tpl_gop_stats->frame_stats_list[i];
+    AomTplFrameStats *frame_stats = &extrc_tpl_gop_stats->frame_stats_list[i];
     const int num_blocks = frame_stats->num_blocks;
     new_frame_stats[i].num_blocks = frame_stats->num_blocks;
     new_frame_stats[i].frame_width = frame_stats->frame_width;
@@ -1966,9 +1972,9 @@
     memcpy(new_frame_stats[i].block_stats_list, frame_stats->block_stats_list,
            num_blocks * sizeof(*new_frame_stats[i].block_stats_list));
   }
-  av1_free_tpl_gop_stats(tpl_gop_stats);
-  tpl_gop_stats->size = new_size;
-  tpl_gop_stats->frame_stats_list = new_frame_stats;
+  av1_free_tpl_gop_stats(extrc_tpl_gop_stats);
+  extrc_tpl_gop_stats->size = new_size;
+  extrc_tpl_gop_stats->frame_stats_list = new_frame_stats;
 }
 
 int av1_tpl_setup_stats(AV1_COMP *cpi, int gop_eval,
@@ -2012,9 +2018,9 @@
 
   av1_init_tpl_stats(tpl_data);
 
-  init_tpl_stats_before_propagation(cpi->common.error, &cpi->tpl_gop_stats,
-                                    tpl_data, tpl_gf_group_frames,
-                                    cpi->common.width, cpi->common.height);
+  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)) {
@@ -2085,10 +2091,10 @@
       cpi->ext_ratectrl.funcs.send_tpl_gop_stats != NULL) {
     // TPL stats has extra frames from next GOP. Trim those extra frames for
     // external RC.
-    trim_tpl_stats(cpi->common.error, &cpi->tpl_gop_stats,
+    trim_tpl_stats(cpi->common.error, &cpi->extrc_tpl_gop_stats,
                    extended_frame_count);
     const aom_codec_err_t codec_status =
-        av1_extrc_send_tpl_stats(&cpi->ext_ratectrl, &cpi->tpl_gop_stats);
+        av1_extrc_send_tpl_stats(&cpi->ext_ratectrl, &cpi->extrc_tpl_gop_stats);
     if (codec_status != AOM_CODEC_OK) {
       aom_internal_error(cpi->common.error, codec_status,
                          "av1_extrc_send_tpl_stats() failed");
diff --git a/av1/encoder/tpl_model.h b/av1/encoder/tpl_model.h
index 68498aa..264bc09 100644
--- a/av1/encoder/tpl_model.h
+++ b/av1/encoder/tpl_model.h
@@ -687,11 +687,11 @@
 double av1_tpl_compute_frame_mv_entropy(const TplDepFrame *tpl_frame,
                                         uint8_t right_shift);
 
-/*!\brief Free the memory allocated for cpi->tpl_gop_stats.
+/*!\brief Free the memory allocated for cpi->extrc_tpl_gop_stats.
  *
- * \param[in] tpl_gop_stats TPL stats for the GOP used for external RC.
+ * \param[in] extrc_tpl_gop_stats TPL stats for the GOP used for external RC.
  */
-void av1_free_tpl_gop_stats(AomTplGopStats *tpl_gop_stats);
+void av1_free_tpl_gop_stats(AomTplGopStats *extrc_tpl_gop_stats);
 
 #if CONFIG_RATECTRL_LOG
 typedef struct {
diff --git a/test/ext_ratectrl_test.cc b/test/ext_ratectrl_test.cc
index 4027025..c9a5b95 100644
--- a/test/ext_ratectrl_test.cc
+++ b/test/ext_ratectrl_test.cc
@@ -37,7 +37,7 @@
 bool is_send_firstpass_stats_called = false;
 
 // A flag to indicate if send_tpl_gop_stats() is called.
-bool is_send_tpl_gop_stats_called = false;
+bool is_send_extrc_tpl_gop_stats_called = false;
 
 aom_rc_status_t mock_create_model(void *priv,
                                   const aom_rc_config_t *ratectrl_config,
@@ -68,13 +68,13 @@
   return AOM_RC_OK;
 }
 
-aom_rc_status_t mock_send_tpl_gop_stats(aom_rc_model_t ratectrl_model,
-                                        const AomTplGopStats *tpl_gop_stats) {
+aom_rc_status_t mock_send_extrc_tpl_gop_stats(
+    aom_rc_model_t ratectrl_model, const AomTplGopStats *extrc_tpl_gop_stats) {
   EXPECT_NE(ratectrl_model, nullptr);
-  EXPECT_NE(tpl_gop_stats, nullptr);
-  EXPECT_GT(tpl_gop_stats->size, 0);
-  EXPECT_NE(tpl_gop_stats->frame_stats_list, nullptr);
-  is_send_tpl_gop_stats_called = true;
+  EXPECT_NE(extrc_tpl_gop_stats, nullptr);
+  EXPECT_GT(extrc_tpl_gop_stats->size, 0);
+  EXPECT_NE(extrc_tpl_gop_stats->frame_stats_list, nullptr);
+  is_send_extrc_tpl_gop_stats_called = true;
   return AOM_RC_OK;
 }
 
@@ -104,7 +104,7 @@
     rc_funcs->create_model = mock_create_model;
     rc_funcs->delete_model = mock_delete_model;
     rc_funcs->send_firstpass_stats = mock_send_firstpass_stats;
-    rc_funcs->send_tpl_gop_stats = mock_send_tpl_gop_stats;
+    rc_funcs->send_tpl_gop_stats = mock_send_extrc_tpl_gop_stats;
     rc_funcs->get_encodeframe_decision = mock_get_encodeframe_decision;
     rc_funcs->update_encodeframe_result = mock_update_encodeframe_result;
   }
@@ -117,7 +117,7 @@
     is_create_model_called = false;
     is_delete_model_called = false;
     is_send_firstpass_stats_called = false;
-    is_send_tpl_gop_stats_called = false;
+    is_send_extrc_tpl_gop_stats_called = false;
   }
 
   void PreEncodeFrameHook(::libaom_test::VideoSource *video,
@@ -137,7 +137,7 @@
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
   EXPECT_TRUE(is_create_model_called);
   EXPECT_TRUE(is_send_firstpass_stats_called);
-  EXPECT_TRUE(is_send_tpl_gop_stats_called);
+  EXPECT_TRUE(is_send_extrc_tpl_gop_stats_called);
   EXPECT_TRUE(is_delete_model_called);
 }
 
