Commit 577e360c9a for aom

commit 577e360c9a66b893750c1d196e45f6f4ef589ae2
Author: Lin Zheng <linzhen@google.com>
Date:   Tue Jun 16 18:05:46 2026 +0000

    Tweak screen content tools detection algorithm

    Improve the screen content tools decision algorithms to catch some
    corner cases. For ugc1080p testset, the coding efficiency gain vs. speed
    trade-off are as follows, and no degradations on other testsets.

             ssim  psnr1411 vmaf   vmaf_neg uvqone  encoding_spdup
    speed=0 -0.798  -0.79   -0.72   -0.868  -1      -3.989
    speed=1 -0.985  -0.998  -0.986  -1.106  -0.891  -2.768
    speed=2 -1.224  -1.156  -1.123  -1.218  -1.146  -1.681
    speed=3 -0.803  -0.737  -0.66   -0.762  -0.953  -0.505
    speed=4 -0.838  -0.785  -0.785  -0.889  -1.762  -0.001

    STATS_CHANGED

    Change-Id: Id076ec753931d6c9a343c3a349be06f8fb974278

diff --git a/av1/encoder/encoder_utils.c b/av1/encoder/encoder_utils.c
index 47d6921aac..7e1db0c2dd 100644
--- a/av1/encoder/encoder_utils.c
+++ b/av1/encoder/encoder_utils.c
@@ -1157,11 +1157,16 @@ static void screen_content_tools_determination(
   const int psnr_diff_is_large = (psnr_diff > STRICT_PSNR_DIFF_THRESH);
   const int ratio_is_large =
       ((palette_ratio >= 0.0001) && ((psnr_diff / palette_ratio) > 4));
-  const int is_sc_encoding_much_better = (psnr_diff_is_large || ratio_is_large);
+  const int ratio_is_large_2 = ((psnr_diff > 0.1) && (palette_ratio >= 0.05) &&
+                                ((psnr_diff / palette_ratio) > 2));
+  const int is_sc_encoding_much_better =
+      (psnr_diff_is_large || ratio_is_large || ratio_is_large_2);
+
   if (is_sc_encoding_much_better) {
     // Use screen content tools, if we get coding gain.
     features->allow_screen_content_tools = 1;
-    features->allow_intrabc = cpi->intrabc_used;
+    features->allow_intrabc =
+        (allow_intrabc_orig_decision || cpi->intrabc_used);
     cpi->use_screen_content_tools = 1;
     cpi->is_screen_content_type = 1;
   } else {