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;
}
}