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 a1cbb77..5e7f417 100644
--- a/av1/encoder/motion_search_facade.h
+++ b/av1/encoder/motion_search_facade.h
@@ -123,10 +123,17 @@
   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 2f96b2c..ef45021 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -560,7 +560,7 @@
     // 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 @@
       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 @@
     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 @@
     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 c73cea1..cae217f 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -861,7 +861,9 @@
   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;