Commit c8db5b2007 for aom

commit c8db5b2007925bc8044aec0546aa9296bce2c5b9
Author: Mudassir Galaganath <mudassir.galaganath@ittiam.com>
Date:   Fri Jun 5 18:25:31 2026 +0530

    lc-dec: Extend sf gm_erroradv_tr_level to shorts

    This patch extends the sf gm_erroradv_tr_level to shorts (vertical
    videos) by adding an intermediate level=1 (erroradv_tr= 0.3).
    Existing level=1 (erroradv_tr= 0.2) for VOD test set has been made
    as level=2.

    Performance results of encoder and decoder for the streams
    generated with low complexity decode enabled.

          Decode Time                   BD-Rate Loss(%)
    cpu  Reduction(%)  avg.psnr   ssim     vmaf   vmaf_neg  uvq_1p5
     1     0.745        0.0789   0.0710   0.0916   0.0930    0.2183
     2     0.916        0.0829   0.0930   0.1317   0.1066    0.0262
     3     1.147        0.0938   0.1144   0.1114   0.1181   -0.0033

    STATS_CHANGED for low complexity decode, shorts

    Change-Id: I6a02be5d5fae7de27184874eecdb25cf4891052a

diff --git a/av1/encoder/global_motion.h b/av1/encoder/global_motion.h
index 97feff41f7..0d25c7079c 100644
--- a/av1/encoder/global_motion.h
+++ b/av1/encoder/global_motion.h
@@ -77,7 +77,7 @@ void av1_convert_model_to_params(const double *params,
                                  WarpedMotionParams *model);

 // Criteria for accepting a global motion model
-static const double erroradv_tr[2] = { 0.65, 0.2 };
+static const double erroradv_tr[3] = { 0.65, 0.3, 0.2 };
 static const double erroradv_prod_tr = 20000;

 // Early exit threshold for global motion refinement
diff --git a/av1/encoder/global_motion_facade.c b/av1/encoder/global_motion_facade.c
index df625c0fa1..4fdad0bedb 100644
--- a/av1/encoder/global_motion_facade.c
+++ b/av1/encoder/global_motion_facade.c
@@ -94,7 +94,7 @@ static inline void compute_global_motion_for_ref_frame(
   int gm_erroradv_tr_level = cpi->sf.gm_sf.gm_erroradv_tr_level;
   bool mem_alloc_failed = false;

-  assert(gm_erroradv_tr_level < 2);
+  assert(gm_erroradv_tr_level < 3);
   // Select the best model based on fractional error reduction.
   // By initializing this to erroradv_tr, the same logic which is used to
   // select the best model will automatically filter out any model which
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 0ce15c84bf..d4e1f011de 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -641,6 +641,7 @@ static void set_good_speed_features_lc_dec_framesize_dependent(
         (update_type == LF_UPDATE || update_type == OVERLAY_UPDATE ||
          update_type == INTNL_OVERLAY_UPDATE);
     if (leaf_and_overlay_frames) sf->gm_sf.gm_search_type = GM_DISABLE_SEARCH;
+    sf->gm_sf.gm_erroradv_tr_level = 1;

     sf->hl_sf.ref_frame_mvs_lvl = 2;

@@ -665,7 +666,7 @@ static void set_good_speed_features_lc_dec_framesize_dependent(

   // Speed features for regular videos
   if (!is_vertical_video && is_between_720p_and_1080p) {
-    sf->gm_sf.gm_erroradv_tr_level = 1;
+    sf->gm_sf.gm_erroradv_tr_level = 2;

     sf->hl_sf.ref_frame_mvs_lvl = 1;

diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index ca885c7800..da6f18b655 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -616,7 +616,8 @@ typedef struct GLOBAL_MOTION_SPEED_FEATURES {
   int num_refinement_steps;

   // Error advantage threshold level used to determine whether global motion
-  // compensation should be enabled
+  // compensation should be enabled. It Can take values 0 - 2 increasing
+  // aggressiveness of skipping GM in order.
   int gm_erroradv_tr_level;
 } GLOBAL_MOTION_SPEED_FEATURES;