Allintra: Set aggressive cost update frequencies for speed 9

The cost update frequencies of coeff and mode symbols are
set as COST_UPD_OFF and COST_UPD_SBROW depending on the
resolution for speed >= 9.

For AVIF still image encode,

             Encode time         BD-Rate Loss(%)
cpu-used     Reduction(%)   avg.psnr  ovr.psnr   ssim
   9           3.900       -0.0433   -0.0433     0.1134

STATS_CHANGED

Change-Id: Ia2e5ae6e09ba99d3edfeba89b55fad1af6dd7b34
diff --git a/av1/encoder/encodeframe_utils.c b/av1/encoder/encodeframe_utils.c
index 48d4adc..a86359f 100644
--- a/av1/encoder/encodeframe_utils.c
+++ b/av1/encoder/encodeframe_utils.c
@@ -1335,8 +1335,8 @@
 
 /*! Checks whether to skip updating the entropy cost based on tile info.
  *
- * This function contains codes common to both \ref skip_mv_cost_update and
- * \ref skip_dv_cost_update.
+ * This function contains the common code used to skip the cost update of coeff,
+ * mode, mv and dv symbols.
  */
 static int skip_cost_update(const SequenceHeader *seq_params,
                             const TileInfo *const tile_info, const int mi_row,
@@ -1419,8 +1419,8 @@
       if (mi_col != tile_info->mi_col_start) break;
       AOM_FALLTHROUGH_INTENDED;
     case COST_UPD_SB:  // SB level
-      if (cpi->sf.inter_sf.coeff_cost_upd_level == INTERNAL_COST_UPD_SBROW &&
-          mi_col != tile_info->mi_col_start)
+      if (skip_cost_update(cm->seq_params, tile_info, mi_row, mi_col,
+                           cpi->sf.inter_sf.coeff_cost_upd_level))
         break;
       av1_fill_coeff_costs(&x->coeff_costs, xd->tile_ctx, num_planes);
       break;
@@ -1435,8 +1435,8 @@
       if (mi_col != tile_info->mi_col_start) break;
       AOM_FALLTHROUGH_INTENDED;
     case COST_UPD_SB:  // SB level
-      if (cpi->sf.inter_sf.mode_cost_upd_level == INTERNAL_COST_UPD_SBROW &&
-          mi_col != tile_info->mi_col_start)
+      if (skip_cost_update(cm->seq_params, tile_info, mi_row, mi_col,
+                           cpi->sf.inter_sf.mode_cost_upd_level))
         break;
       av1_fill_mode_rates(cm, &x->mode_costs, xd->tile_ctx);
       break;
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 5c601a3..1d469f0 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -291,6 +291,10 @@
 
   if (speed >= 9) {
     // TODO(kyslov): add more speed features to control speed/quality
+    if (!is_4k_or_larger) {
+      sf->inter_sf.coeff_cost_upd_level = INTERNAL_COST_UPD_OFF;
+      sf->inter_sf.mode_cost_upd_level = INTERNAL_COST_UPD_OFF;
+    }
   }
 }
 
@@ -516,6 +520,9 @@
   }
 
   if (speed >= 9) {
+    sf->inter_sf.coeff_cost_upd_level = INTERNAL_COST_UPD_SBROW;
+    sf->inter_sf.mode_cost_upd_level = INTERNAL_COST_UPD_SBROW;
+
     sf->rt_sf.nonrd_check_partition_merge_mode = 0;
     sf->rt_sf.hybrid_intra_pickmode = 0;
   }