diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c
index 8578177..d696d18 100644
--- a/av1/encoder/nonrd_pickmode.c
+++ b/av1/encoder/nonrd_pickmode.c
@@ -353,19 +353,17 @@
 }
 
 bool use_aggressive_subpel_search_method(MACROBLOCK *x,
-                                         int adaptive_subpel_search_level,
+                                         bool use_adaptive_subpel_search,
                                          const bool fullpel_performed_well) {
-  if (!adaptive_subpel_search_level) return false;
+  if (!use_adaptive_subpel_search) return false;
   const int qband = x->qindex >> (QINDEX_BITS - 2);
   assert(qband < 4);
-  const bool is_fullpel_well_or_lowsad =
-      fullpel_performed_well || x->content_state_sb.source_sad_nonrd <= kLowSad;
-  if (adaptive_subpel_search_level == 2 && qband != 0 &&
-      (is_fullpel_well_or_lowsad || x->source_variance < 100))
+  if ((qband > 0) && (fullpel_performed_well ||
+                      (x->content_state_sb.source_sad_nonrd <= kLowSad) ||
+                      (x->source_variance < 100)))
     return true;
-  else if (adaptive_subpel_search_level == 1 && is_fullpel_well_or_lowsad)
-    return true;
-  return false;
+  else
+    return false;
 }
 
 /*!\brief Runs Motion Estimation for a specific block and specific ref frame.
@@ -472,7 +470,7 @@
     MV subpel_start_mv = get_mv_from_fullmv(&tmp_mv->as_fullmv);
     // adaptively downgrade subpel search method based on block properties
     if (use_aggressive_subpel_search_method(
-            x, sf->rt_sf.adaptive_subpel_search_level, fullpel_performed_well))
+            x, sf->rt_sf.use_adaptive_subpel_search, fullpel_performed_well))
       av1_find_best_sub_pixel_tree_pruned_more(xd, cm, &ms_params,
                                                subpel_start_mv, &tmp_mv->as_mv,
                                                &dis, &x->pred_sse[ref], NULL);
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 975f4b5..7a87416 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -1297,7 +1297,7 @@
       }
 #endif
 #endif
-      sf->rt_sf.adaptive_subpel_search_level = 0;
+      sf->rt_sf.use_adaptive_subpel_search = false;
     }
     if (speed >= 10) {
       sf->rt_sf.skip_intra_pred = 2;
@@ -1329,14 +1329,14 @@
       sf->rt_sf.skip_cdef_sb = 1;
       sf->rt_sf.sad_based_adp_altref_lag = 2;
       sf->rt_sf.reduce_mv_pel_precision_highmotion = 2;
-      sf->rt_sf.adaptive_subpel_search_level = 2;
+      sf->rt_sf.use_adaptive_subpel_search = true;
     }
     if (speed >= 10) {
       sf->rt_sf.hybrid_intra_pickmode = 2;
       sf->rt_sf.sad_based_adp_altref_lag = 4;
       sf->rt_sf.tx_size_level_based_on_qstep = 0;
       sf->rt_sf.reduce_mv_pel_precision_highmotion = 3;
-      sf->rt_sf.adaptive_subpel_search_level = 0;
+      sf->rt_sf.use_adaptive_subpel_search = false;
     }
   }
   if (!is_480p_or_larger) {
@@ -1375,7 +1375,7 @@
   if (is_1080p_or_larger) {
     if (speed >= 7) {
       sf->rt_sf.reduce_mv_pel_precision_highmotion = 0;
-      sf->rt_sf.adaptive_subpel_search_level = 0;
+      sf->rt_sf.use_adaptive_subpel_search = 0;
     }
   } else {
     if (speed >= 9) sf->lpf_sf.cdef_pick_method = CDEF_PICK_FROM_Q;
@@ -1730,7 +1730,7 @@
     sf->rt_sf.prune_compoundmode_with_singlecompound_var = true;
     sf->rt_sf.prune_compoundmode_with_singlemode_var = true;
     sf->rt_sf.skip_compound_based_on_var = true;
-    sf->rt_sf.adaptive_subpel_search_level = 1;
+    sf->rt_sf.use_adaptive_subpel_search = true;
   }
 
   if (speed >= 8) {
@@ -1758,7 +1758,7 @@
     sf->rt_sf.frame_level_mode_cost_update = true;
     sf->rt_sf.check_only_zero_zeromv_on_large_blocks = true;
     sf->rt_sf.reduce_mv_pel_precision_highmotion = 0;
-    sf->rt_sf.adaptive_subpel_search_level = 2;
+    sf->rt_sf.use_adaptive_subpel_search = true;
   }
   if (speed >= 10) {
     sf->rt_sf.sse_early_term_inter_search = EARLY_TERM_IDX_4;
@@ -2099,7 +2099,7 @@
   rt_sf->prune_compoundmode_with_singlemode_var = false;
   rt_sf->skip_compound_based_on_var = false;
   rt_sf->set_zeromv_skip_based_on_source_sad = 1;
-  rt_sf->adaptive_subpel_search_level = 0;
+  rt_sf->use_adaptive_subpel_search = false;
   rt_sf->screen_content_cdef_filter_qindex_thresh = 0;
   rt_sf->enable_ref_short_signaling = false;
   rt_sf->check_globalmv_on_single_ref = true;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index ee51a85..ee764cf 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -1644,12 +1644,9 @@
   int set_zeromv_skip_based_on_source_sad;
 
   // Downgrades the block-level subpel motion search to
-  // av1_find_best_sub_pixel_tree_pruned_more.
-  // 0: disable
-  // 1: when either fullpel search performed well, or when zeromv has low sad.
-  // 2: for higher QP and when fullpel search performed well, zeromv has low sad
-  // or low source_var
-  int adaptive_subpel_search_level;
+  // av1_find_best_sub_pixel_tree_pruned_more for higher QP and when fullpel
+  // search performed well, zeromv has low sad or low source_var
+  bool use_adaptive_subpel_search;
 
   // A flag used in RTC case to control frame_refs_short_signaling. Note that
   // the final decision is made in check_frame_refs_short_signaling(). The flag
