diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index eab01f6..6f82e83 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -6185,7 +6185,7 @@
     const struct macroblockd_plane *const pd = &xd->plane[plane];
     int coeff_ctx = 1;
     RD_STATS this_rd_stats;
-    init_rd_stats(&this_rd_stats);
+    av1_init_rd_stats(&this_rd_stats);
 
     tx_size = max_txsize_lookup[bsize];
     tx_size =
@@ -6240,7 +6240,7 @@
     mbmi->tx_type = tx_type;
 
 #if CONFIG_VAR_TX
-    init_rd_stats(&this_rd_stats);
+    av1_init_rd_stats(&this_rd_stats);
 
     av1_get_entropy_contexts(bsize, tx_size, pd, ctxa, ctxl);
     coeff_ctx = combine_entropy_contexts(ctxa[0], ctxl[0]);
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 4fa4ff0..b337ec2 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -3076,7 +3076,7 @@
   int tmp_eob = 0;
   int zero_blk_rate;
   RD_STATS sum_rd_stats;
-  init_rd_stats(&sum_rd_stats);
+  av1_init_rd_stats(&sum_rd_stats);
 
 #if CONFIG_EXT_TX
   assert(tx_size < TX_SIZES);
@@ -3089,7 +3089,7 @@
 
   coeff_ctx = get_entropy_context(tx_size, pta, ptl);
 
-  init_rd_stats(rd_stats);
+  av1_init_rd_stats(rd_stats);
 
   if (blk_row >= max_blocks_high || blk_col >= max_blocks_wide) return;
 
@@ -3145,7 +3145,7 @@
                       depth + 1, plane_bsize, ta, tl, tx_above, tx_left,
                       &this_rd_stats, ref_best_rd - tmp_rd, &this_cost_valid);
 
-      merge_rd_stats(&sum_rd_stats, &this_rd_stats);
+      av1_merge_rd_stats(&sum_rd_stats, &this_rd_stats);
 
       tmp_rd =
           RDCOST(x->rdmult, x->rddiv, sum_rd_stats.rate, sum_rd_stats.dist);
@@ -3183,7 +3183,7 @@
 
   if (ref_best_rd < 0) is_cost_valid = 0;
 
-  init_rd_stats(rd_stats);
+  av1_init_rd_stats(rd_stats);
 
   if (is_cost_valid) {
     const struct macroblockd_plane *const pd = &xd->plane[0];
@@ -3202,7 +3202,7 @@
     TXFM_CONTEXT tx_left[MAX_MIB_SIZE];
 
     RD_STATS pn_rd_stats;
-    init_rd_stats(&pn_rd_stats);
+    av1_init_rd_stats(&pn_rd_stats);
 
     av1_get_entropy_contexts(bsize, TX_4X4, pd, ctxa, ctxl);
     memcpy(tx_above, xd->above_txfm_context,
@@ -3216,7 +3216,7 @@
                         mi_height != mi_width, plane_bsize, ctxa, ctxl,
                         tx_above, tx_left, &pn_rd_stats, ref_best_rd - this_rd,
                         &is_cost_valid);
-        merge_rd_stats(rd_stats, &pn_rd_stats);
+        av1_merge_rd_stats(rd_stats, &pn_rd_stats);
         this_rd += AOMMIN(
             RDCOST(x->rdmult, x->rddiv, pn_rd_stats.rate, pn_rd_stats.dist),
             RDCOST(x->rdmult, x->rddiv, 0, pn_rd_stats.sse));
@@ -3231,7 +3231,7 @@
 
   if (!is_cost_valid) {
     // reset cost value
-    invalid_rd_stats(rd_stats);
+    av1_invalid_rd_stats(rd_stats);
   }
 }
 
@@ -3370,11 +3370,11 @@
     prune = prune_tx_types(cpi, bsize, x, xd, 0);
 #endif
 
-  invalid_rd_stats(rd_stats);
+  av1_invalid_rd_stats(rd_stats);
 
   for (tx_type = DCT_DCT; tx_type < TX_TYPES; ++tx_type) {
     RD_STATS this_rd_stats;
-    init_rd_stats(&this_rd_stats);
+    av1_init_rd_stats(&this_rd_stats);
 #if CONFIG_EXT_TX
     if (is_inter) {
       if (!ext_tx_used_inter[ext_tx_set][tx_type]) continue;
@@ -3491,7 +3491,7 @@
 
   if (ref_best_rd < 0) is_cost_valid = 0;
 
-  init_rd_stats(rd_stats);
+  av1_init_rd_stats(rd_stats);
 
 #if CONFIG_EXT_TX && CONFIG_RECT_TX
   if (is_rect_tx(mbmi->tx_size)) {
@@ -3520,7 +3520,7 @@
     ENTROPY_CONTEXT ta[2 * MAX_MIB_SIZE];
     ENTROPY_CONTEXT tl[2 * MAX_MIB_SIZE];
     RD_STATS pn_rd_stats;
-    init_rd_stats(&pn_rd_stats);
+    av1_init_rd_stats(&pn_rd_stats);
 
     av1_get_entropy_contexts(bsize, TX_4X4, pd, ta, tl);
 
@@ -3554,7 +3554,7 @@
 
   if (!is_cost_valid) {
     // reset cost value
-    invalid_rd_stats(rd_stats);
+    av1_invalid_rd_stats(rd_stats);
   }
 
   return is_cost_valid;
diff --git a/av1/encoder/rdopt.h b/av1/encoder/rdopt.h
index bbed9de..cb9666a 100644
--- a/av1/encoder/rdopt.h
+++ b/av1/encoder/rdopt.h
@@ -38,7 +38,7 @@
 #endif
 } RD_STATS;
 
-static INLINE void init_rd_stats(RD_STATS *rd_stats) {
+static INLINE void av1_init_rd_stats(RD_STATS *rd_stats) {
 #if CONFIG_RD_DEBUG
   int plane;
 #endif
@@ -52,7 +52,7 @@
 #endif
 }
 
-static INLINE void invalid_rd_stats(RD_STATS *rd_stats) {
+static INLINE void av1_invalid_rd_stats(RD_STATS *rd_stats) {
 #if CONFIG_RD_DEBUG
   int plane;
 #endif
@@ -66,8 +66,8 @@
 #endif
 }
 
-static INLINE void merge_rd_stats(RD_STATS *rd_stats_dst,
-                                  const RD_STATS *rd_stats_src) {
+static INLINE void av1_merge_rd_stats(RD_STATS *rd_stats_dst,
+                                      const RD_STATS *rd_stats_src) {
 #if CONFIG_RD_DEBUG
   int plane;
 #endif
