rtc: More aggressive color_sen for screen high motion Reduces chrome artifacts observed for screen content at speed 10, under high motion. Target areas with low spatiial variance. bdrate/speed change across rtc_screen are small/acceptable, given the color artifacts that are reduced. Some bdrate gain at speeds 6/7/8, some bdrate loss (~1%) at speeds 9/10/11. Speed/IC loss about ~1% on average. Change-Id: I91a369b24d5746faa04574233cf768dc15ccfe43
diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c index 9be3237..5dd54a5 100644 --- a/av1/encoder/nonrd_pickmode.c +++ b/av1/encoder/nonrd_pickmode.c
@@ -1933,11 +1933,16 @@ return; } int shift = 3; + unsigned int source_var_thr = 50; + int uv_sad_thr = 100; if (source_sad_nonrd >= kMedSad && x->source_variance > 0 && high_res) shift = 4; - if (cpi->oxcf.tune_cfg.content == AOM_CONTENT_SCREEN && - cpi->rc.high_source_sad) { - shift = 6; + if (cpi->oxcf.tune_cfg.content == AOM_CONTENT_SCREEN) { + if (cpi->rc.high_source_sad) shift = 6; + if (source_sad_nonrd > kMedSad) { + source_var_thr = 1200; + uv_sad_thr = 10; + } } NOISE_LEVEL noise_level = kLow; int norm_sad = @@ -1975,7 +1980,7 @@ uv_sad >> (b_width_log2_lookup[bs] + b_height_log2_lookup[bs]); x->color_sensitivity[COLOR_SENS_IDX(plane)] = uv_sad > (y_sad >> shift) && norm_uv_sad > 40; - if (source_variance < 50 && norm_uv_sad > 100) + if (source_variance < source_var_thr && norm_uv_sad > uv_sad_thr) x->color_sensitivity[COLOR_SENS_IDX(plane)] = 1; } }