diff --git a/av2/common/warped_motion.c b/av2/common/warped_motion.c
index 75f0119..b1ad38e 100644
--- a/av2/common/warped_motion.c
+++ b/av2/common/warped_motion.c
@@ -1193,13 +1193,14 @@
   }
 }
 
-void highbd_warp_plane(WarpedMotionParams *wm, const uint16_t *const ref,
-                       int width, int height, int stride, uint16_t *const pred,
-                       int p_col, int p_row, int p_width, int p_height,
-                       int p_stride, int subsampling_x, int subsampling_y,
-                       int bd, ConvolveParams *conv_params,
-                       const struct scale_factors *sf, int use_warp_bd_box,
-                       PadBlock *warp_bd_box) {
+void av2_highbd_warp_plane(WarpedMotionParams *wm, const uint16_t *const ref,
+                           int width, int height, int stride,
+                           uint16_t *const pred, int p_col, int p_row,
+                           int p_width, int p_height, int p_stride,
+                           int subsampling_x, int subsampling_y, int bd,
+                           ConvolveParams *conv_params,
+                           const struct scale_factors *sf, int use_warp_bd_box,
+                           PadBlock *warp_bd_box) {
   const int is_scaled = sf ? av2_is_scaled(sf) : 0;
   assert(wm->wmtype <= AFFINE);
   if (wm->wmtype == ROTZOOM) {
@@ -1246,9 +1247,10 @@
 
                     ,
                     int use_warp_bd_box, PadBlock *warp_bd_box) {
-  highbd_warp_plane(wm, ref, width, height, stride, pred, p_col, p_row, p_width,
-                    p_height, p_stride, subsampling_x, subsampling_y, bd,
-                    conv_params, sf, use_warp_bd_box, warp_bd_box);
+  av2_highbd_warp_plane(wm, ref, width, height, stride, pred, p_col, p_row,
+                        p_width, p_height, p_stride, subsampling_x,
+                        subsampling_y, bd, conv_params, sf, use_warp_bd_box,
+                        warp_bd_box);
 }
 
 #define LS_MV_MAX 256  // max mv in 1/8-pel
diff --git a/av2/common/warped_motion.h b/av2/common/warped_motion.h
index 8858b35..628acd7 100644
--- a/av2/common/warped_motion.h
+++ b/av2/common/warped_motion.h
@@ -182,15 +182,16 @@
 void av2_set_warp_translation(int mi_row, int mi_col, BLOCK_SIZE bsize, MV mv,
                               WarpedMotionParams *wm);
 
-void highbd_warp_plane(WarpedMotionParams *wm, const uint16_t *const ref,
-                       int width, int height, int stride, uint16_t *const pred,
-                       int p_col, int p_row, int p_width, int p_height,
-                       int p_stride, int subsampling_x, int subsampling_y,
-                       int bd, ConvolveParams *conv_params,
-                       const struct scale_factors *sf
+void av2_highbd_warp_plane(WarpedMotionParams *wm, const uint16_t *const ref,
+                           int width, int height, int stride,
+                           uint16_t *const pred, int p_col, int p_row,
+                           int p_width, int p_height, int p_stride,
+                           int subsampling_x, int subsampling_y, int bd,
+                           ConvolveParams *conv_params,
+                           const struct scale_factors *sf
 
-                       ,
-                       int use_warp_bd_box, PadBlock *warp_bd_box);
+                           ,
+                           int use_warp_bd_box, PadBlock *warp_bd_box);
 
 void av2_warp_plane(WarpedMotionParams *wm, int bd, const uint16_t *ref,
                     int width, int height, int stride, uint16_t *pred,
diff --git a/av2/encoder/global_motion.c b/av2/encoder/global_motion.c
index 98ddd33..6012dd4 100644
--- a/av2/encoder/global_motion.c
+++ b/av2/encoder/global_motion.c
@@ -165,12 +165,12 @@
       // when p_width and p_height are not multiples of WARP_ERROR_BLOCK
       const int warp_w = AVMMIN(error_bsize_w, p_col + ref_width - j);
       const int warp_h = AVMMIN(error_bsize_h, p_row + ref_height - i);
-      highbd_warp_plane(wm, ref, ref_width, ref_height, ref_stride, tmp, j, i,
-                        warp_w, warp_h, WARP_ERROR_BLOCK, subsampling_x,
-                        subsampling_y, bd, &conv_params, NULL
+      av2_highbd_warp_plane(wm, ref, ref_width, ref_height, ref_stride, tmp, j,
+                            i, warp_w, warp_h, WARP_ERROR_BLOCK, subsampling_x,
+                            subsampling_y, bd, &conv_params, NULL
 
-                        ,
-                        0, NULL);
+                            ,
+                            0, NULL);
 
       if (warp_w == WARP_ERROR_BLOCK && warp_h == WARP_ERROR_BLOCK) {
         gm_sumerr += avm_highbd_sad32x32(tmp, WARP_ERROR_BLOCK,
diff --git a/avm_dsp/flow_estimation/corner_match.c b/avm_dsp/flow_estimation/corner_match.c
index 9608eed..571ec84 100644
--- a/avm_dsp/flow_estimation/corner_match.c
+++ b/avm_dsp/flow_estimation/corner_match.c
@@ -302,8 +302,8 @@
       ref_corners->corners, ref_corners->num_corners, src_width, src_height,
       src_stride, ref_stride, correspondences);
 
-  bool result = ransac(correspondences, num_correspondences, type,
-                       motion_models, num_motion_models, mem_alloc_failed);
+  bool result = avm_ransac(correspondences, num_correspondences, type,
+                           motion_models, num_motion_models, mem_alloc_failed);
 
   avm_free(correspondences);
   return result;
diff --git a/avm_dsp/flow_estimation/disflow.c b/avm_dsp/flow_estimation/disflow.c
index 86aa644..aa2dd32 100644
--- a/avm_dsp/flow_estimation/disflow.c
+++ b/avm_dsp/flow_estimation/disflow.c
@@ -816,8 +816,8 @@
   const int num_correspondences = determine_disflow_correspondence(
       src_pyramid, ref_pyramid, src_corners, flow, correspondences);
 
-  bool result = ransac(correspondences, num_correspondences, type,
-                       motion_models, num_motion_models, mem_alloc_failed);
+  bool result = avm_ransac(correspondences, num_correspondences, type,
+                           motion_models, num_motion_models, mem_alloc_failed);
 
   avm_free(correspondences);
   free_flow_field(flow);
diff --git a/avm_dsp/flow_estimation/ransac.c b/avm_dsp/flow_estimation/ransac.c
index ced98cd..5f26301 100644
--- a/avm_dsp/flow_estimation/ransac.c
+++ b/avm_dsp/flow_estimation/ransac.c
@@ -671,9 +671,9 @@
 };
 
 // Returns true on success, false on error
-bool ransac(const Correspondence *matched_points, int npoints,
-            TransformationType type, MotionModel *motion_models,
-            int num_desired_motions, bool *mem_alloc_failed) {
+bool avm_ransac(const Correspondence *matched_points, int npoints,
+                TransformationType type, MotionModel *motion_models,
+                int num_desired_motions, bool *mem_alloc_failed) {
 #if ALLOW_TRANSLATION_MODELS
   assert(type > IDENTITY && type < TRANS_TYPES);
 #else
diff --git a/avm_dsp/flow_estimation/ransac.h b/avm_dsp/flow_estimation/ransac.h
index ef1fa6f..7ac51ed 100644
--- a/avm_dsp/flow_estimation/ransac.h
+++ b/avm_dsp/flow_estimation/ransac.h
@@ -24,9 +24,9 @@
 extern "C" {
 #endif
 
-bool ransac(const Correspondence *matched_points, int npoints,
-            TransformationType type, MotionModel *motion_models,
-            int num_desired_motions, bool *mem_alloc_failed);
+bool avm_ransac(const Correspondence *matched_points, int npoints,
+                TransformationType type, MotionModel *motion_models,
+                int num_desired_motions, bool *mem_alloc_failed);
 
 #ifdef __cplusplus
 }
