diff --git a/av1/encoder/motion_search_facade.c b/av1/encoder/motion_search_facade.c
index 70ce23f..52f4850 100644
--- a/av1/encoder/motion_search_facade.c
+++ b/av1/encoder/motion_search_facade.c
@@ -437,8 +437,8 @@
 
     // Since we have scaled the reference frames to match the size of the
     // current frame we must use a unit scaling factor during mode selection.
-    av1_build_inter_predictor(second_pred, pw, &cur_mv[!id].as_mv,
-                              &inter_pred_params);
+    av1_enc_build_one_inter_predictor(second_pred, pw, &cur_mv[!id].as_mv,
+                                      &inter_pred_params);
 
     const int order_idx = id != 0;
     av1_dist_wtd_comp_weight_assign(
@@ -662,7 +662,8 @@
   inter_pred_params.conv_params = get_conv_params(0, plane, xd->bd);
 
   // Get the prediction block from the 'other' reference frame.
-  av1_build_inter_predictor(second_pred, pw, other_mv, &inter_pred_params);
+  av1_enc_build_one_inter_predictor(second_pred, pw, other_mv,
+                                    &inter_pred_params);
 
   av1_dist_wtd_comp_weight_assign(cm, mbmi, 0, &xd->jcp_param.fwd_offset,
                                   &xd->jcp_param.bck_offset,
diff --git a/av1/encoder/reconinter_enc.c b/av1/encoder/reconinter_enc.c
index d437229..51c6e0e 100644
--- a/av1/encoder/reconinter_enc.c
+++ b/av1/encoder/reconinter_enc.c
@@ -120,8 +120,8 @@
             ref, plane, xd->tmp_conv_dst, tmp_dst_stride, is_compound, xd->bd);
         inter_pred_params.conv_params.use_dist_wtd_comp_avg = 0;
 
-        av1_build_inter_predictor(dst, dst_buf->stride, &mv,
-                                  &inter_pred_params);
+        av1_enc_build_one_inter_predictor(dst, dst_buf->stride, &mv,
+                                          &inter_pred_params);
         ++col;
       }
       ++row;
@@ -169,7 +169,8 @@
         inter_pred_params.mask_comp.seg_mask = xd->seg_mask;
       }
 
-      av1_build_inter_predictor(dst, dst_buf->stride, &mv, &inter_pred_params);
+      av1_enc_build_one_inter_predictor(dst, dst_buf->stride, &mv,
+                                        &inter_pred_params);
     }
   }
 }
@@ -194,7 +195,8 @@
       0, AOM_PLANE_Y, xd->tmp_conv_dst, MAX_SB_SIZE, false, xd->bd);
 
   inter_pred_params.conv_params.use_dist_wtd_comp_avg = 0;
-  av1_build_inter_predictor(dst, dst_buf->stride, &mv, &inter_pred_params);
+  av1_enc_build_one_inter_predictor(dst, dst_buf->stride, &mv,
+                                    &inter_pred_params);
 }
 
 void av1_enc_build_inter_predictor(const AV1_COMMON *cm, MACROBLOCKD *xd,
@@ -258,8 +260,9 @@
   *src_stride = pre_buf->stride;
 }
 
-void av1_build_inter_predictor(uint8_t *dst, int dst_stride, const MV *src_mv,
-                               InterPredParams *inter_pred_params) {
+void av1_enc_build_one_inter_predictor(uint8_t *dst, int dst_stride,
+                                       const MV *src_mv,
+                                       InterPredParams *inter_pred_params) {
   uint8_t *src;
   SubpelParams subpel_params;
   int src_stride;
@@ -318,8 +321,8 @@
                           above_mbmi->interp_filters);
     inter_pred_params.conv_params = get_conv_params(0, j, xd->bd);
 
-    av1_build_inter_predictor(pd->dst.buf, pd->dst.stride, &mv,
-                              &inter_pred_params);
+    av1_enc_build_one_inter_predictor(pd->dst.buf, pd->dst.stride, &mv,
+                                      &inter_pred_params);
   }
 }
 
@@ -430,8 +433,8 @@
     uint8_t *const dst = get_buf_by_bd(xd, ext_dst[plane]);
     const MV mv = mi->mv[ref].as_mv;
 
-    av1_build_inter_predictor(dst, ext_dst_stride[plane], &mv,
-                              &inter_pred_params);
+    av1_enc_build_one_inter_predictor(dst, ext_dst_stride[plane], &mv,
+                                      &inter_pred_params);
   }
 }
 
diff --git a/av1/encoder/reconinter_enc.h b/av1/encoder/reconinter_enc.h
index 89b22ca..fdc1f31 100644
--- a/av1/encoder/reconinter_enc.h
+++ b/av1/encoder/reconinter_enc.h
@@ -24,6 +24,8 @@
 extern "C" {
 #endif
 
+// Build single or compound reference inter predictors for all planes.
+// Can build inter-intra predictors, masked predictors etc as well.
 void av1_enc_build_inter_predictor(const AV1_COMMON *cm, MACROBLOCKD *xd,
                                    int mi_row, int mi_col,
                                    const BUFFER_SET *ctx, BLOCK_SIZE bsize,
@@ -31,8 +33,12 @@
 
 void av1_enc_build_inter_predictor_y(MACROBLOCKD *xd, int mi_row, int mi_col);
 
-void av1_build_inter_predictor(uint8_t *dst, int dst_stride, const MV *src_mv,
-                               InterPredParams *inter_pred_params);
+// Build one inter predictor. It is called for building predictor for single
+// reference case, or just the 1st or 2nd reference in compound reference case.
+// Can build both regular and masked predictors.
+void av1_enc_build_one_inter_predictor(uint8_t *dst, int dst_stride,
+                                       const MV *src_mv,
+                                       InterPredParams *inter_pred_params);
 
 void av1_build_prediction_by_above_preds(const AV1_COMMON *cm, MACROBLOCKD *xd,
                                          uint8_t *tmp_buf[MAX_MB_PLANE],
diff --git a/av1/encoder/temporal_filter.c b/av1/encoder/temporal_filter.c
index 4592813..37487c3 100644
--- a/av1/encoder/temporal_filter.c
+++ b/av1/encoder/temporal_filter.c
@@ -364,8 +364,8 @@
                               subsampling_y, bit_depth, is_high_bitdepth,
                               is_intrabc, scale, &ref_buf, interp_filters);
         inter_pred_params.conv_params = get_conv_params(0, plane, bit_depth);
-        av1_build_inter_predictor(&pred[plane_offset + i * plane_w + j],
-                                  plane_w, &mv, &inter_pred_params);
+        av1_enc_build_one_inter_predictor(&pred[plane_offset + i * plane_w + j],
+                                          plane_w, &mv, &inter_pred_params);
 
         ++subblock_idx;
       }
diff --git a/av1/encoder/tpl_model.c b/av1/encoder/tpl_model.c
index 8d214bb..733cb44 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -369,8 +369,8 @@
                           sf, &ref_buf, kernel);
     inter_pred_params.conv_params = get_conv_params(0, 0, xd->bd);
 
-    av1_build_inter_predictor(predictor, bw, &best_rfidx_mv.as_mv,
-                              &inter_pred_params);
+    av1_enc_build_one_inter_predictor(predictor, bw, &best_rfidx_mv.as_mv,
+                                      &inter_pred_params);
 
     inter_cost = tpl_get_satd_cost(x, src_diff, bw, src_mb_buffer, src_stride,
                                    predictor, bw, coeff, bw, bh, tx_size);
@@ -424,8 +424,8 @@
                           sf, &ref_buf, kernel);
     inter_pred_params.conv_params = get_conv_params(0, 0, xd->bd);
 
-    av1_build_inter_predictor(dst_buffer, dst_buffer_stride, &best_mv.as_mv,
-                              &inter_pred_params);
+    av1_enc_build_one_inter_predictor(dst_buffer, dst_buffer_stride,
+                                      &best_mv.as_mv, &inter_pred_params);
   } else {
     av1_predict_intra_block(cm, xd, block_size_wide[bsize],
                             block_size_high[bsize], tx_size, best_mode, 0, 0,
