Commit ca6eb13f02 for aom

commit ca6eb13f021a66f59518b0a70480384663f3f4c3
Author: Satheesh Kumar <satheesh.kumar@ittiam.com>
Date:   Thu Jan 22 17:32:35 2026 +0530

    Tune sf 'use_bsize_dependent_search_method' for speed 6

    This patch introduces more block size levels for the
    'use_bsize_dependent_search_method' speed feature. The speed feature
    level is chosen based on the frame resolution.

    Encoder performance results averaged over all resolutions are as
    follows:

        Encoder Instruction                BD-Rate Loss(%)
    cpu  Count Reduction(%)  avg.psnr  ovr.psnr   ssim    vmaf    vmaf_neg
     6       -1.40           -0.3003   -0.3055  -0.3463  -0.3999  -0.3844

    STATS_CHANGED for speed=6

    Change-Id: Iaa81b011701d6cd4bb8cf64e414eacee1341b64f

diff --git a/av1/encoder/motion_search_facade.h b/av1/encoder/motion_search_facade.h
index a1cbb77a79..5e7f4178e8 100644
--- a/av1/encoder/motion_search_facade.h
+++ b/av1/encoder/motion_search_facade.h
@@ -123,10 +123,17 @@ static inline SEARCH_METHODS av1_get_default_mv_search_method(
   const int sf_blk_search_method = mv_sf->use_bsize_dependent_search_method;
   const int min_dim = AOMMIN(block_size_wide[bsize], block_size_high[bsize]);
   const int qband = x->qindex >> (QINDEX_BITS - 2);
-  const bool use_faster_search_method =
-      (sf_blk_search_method == 1 && min_dim >= 32) ||
-      (sf_blk_search_method >= 2 && min_dim >= 16 &&
-       x->content_state_sb.source_sad_nonrd <= kMedSad && qband < 3);
+  const int min_dim_th[4] = { 128, 64, 32, 16 };
+  bool use_faster_search_method = false;
+
+  if (sf_blk_search_method >= 1 && sf_blk_search_method <= 3) {
+    use_faster_search_method =
+        (min_dim >= min_dim_th[sf_blk_search_method - 1]);
+  } else if (sf_blk_search_method == 4) {
+    use_faster_search_method =
+        (min_dim >= min_dim_th[sf_blk_search_method - 1] &&
+         x->content_state_sb.source_sad_nonrd <= kMedSad && qband < 3);
+  }

   if (use_faster_search_method) {
     search_method = av1_get_faster_search_method(search_method);
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 2f96b2ca51..ef450213de 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -560,7 +560,7 @@ static void set_allintra_speed_features_framesize_independent(
     // target image quality is very low.
     sf->part_sf.default_max_partition_size = BLOCK_32X32;

-    sf->mv_sf.use_bsize_dependent_search_method = 1;
+    sf->mv_sf.use_bsize_dependent_search_method = 3;
     sf->mv_sf.intrabc_search_level = 1;

     sf->tx_sf.tx_type_search.winner_mode_tx_type_pruning = 3;
@@ -1050,6 +1050,12 @@ static void set_good_speed_feature_framesize_dependent(
       sf->inter_sf.prune_ref_mv_idx_search = 1;
     }

+    if (is_720p_or_larger) {
+      sf->mv_sf.use_bsize_dependent_search_method = 1;
+    } else {
+      sf->mv_sf.use_bsize_dependent_search_method = 2;
+    }
+
     if (!is_720p_or_larger) {
       sf->tx_sf.tx_type_search.fast_inter_tx_type_prob_thresh =
           is_boosted_arf2_bwd_type ? 450 : 150;
@@ -1458,7 +1464,6 @@ static void set_good_speed_features_framesize_independent(
     sf->part_sf.prune_part4_search = 3;

     sf->mv_sf.simple_motion_subpel_force_stop = FULL_PEL;
-    sf->mv_sf.use_bsize_dependent_search_method = 1;

     sf->tpl_sf.gop_length_decision_method = 3;

@@ -2134,7 +2139,7 @@ static void set_rt_speed_features_framesize_independent(AV1_COMP *cpi,
     sf->rt_sf.var_part_based_on_qidx = 4;
     sf->rt_sf.partition_direct_merging = 1;
     sf->rt_sf.prune_compoundmode_with_singlemode_var = false;
-    sf->mv_sf.use_bsize_dependent_search_method = 2;
+    sf->mv_sf.use_bsize_dependent_search_method = 4;
     sf->rt_sf.prune_hv_pred_modes_using_src_sad = true;
   }
   if (speed >= 9) {
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index c73cea1f0b..cae217f9a4 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -861,7 +861,9 @@ typedef struct MV_SPEED_FEATURES {
   SEARCH_METHODS search_method;

   // Enable the use of faster, less accurate mv search method
-  // 0: disable, 1: if bsize >= BLOCK_32X32, 2: based on bsize, SAD and qp
+  // 0: Disable
+  // 1 - 3: Disable for larger bsize
+  // 4: Based on bsize, SAD and qp
   // TODO(chiyotsai@google.com): Take the clip's resolution and mv activity into
   // account.
   int use_bsize_dependent_search_method;