AV1 RT: Tune speed features for lowres
This gives ~5% BDRate improvement on specific lowres clips that have
global motion (street180p.y4m) and on other clips the BDRate
improvement is ~1-2%
Change-Id: I0b758b1ee3173836c58546f0fdd36e6a0405ef79
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index f620012..d22c769 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -205,6 +205,23 @@
}
}
+static void set_rt_speed_feature_framesize_dependent(const AV1_COMP *const cpi,
+ SPEED_FEATURES *const sf,
+ int speed) {
+ const AV1_COMMON *const cm = &cpi->common;
+ const int is_720p_or_larger = AOMMIN(cm->width, cm->height) >= 720;
+ const int is_480p_or_larger = AOMMIN(cm->width, cm->height) >= 480;
+
+ (void)is_720p_or_larger; // Not used so far
+
+ if (!is_480p_or_larger) {
+ if (speed >= 8) {
+ sf->mv.subpel_search_method = SUBPEL_TREE;
+ sf->estimate_motion_for_var_based_partition = 1;
+ }
+ }
+}
+
static void set_good_speed_features_framesize_independent(
const AV1_COMP *const cpi, SPEED_FEATURES *const sf, int speed) {
const AV1_COMMON *const cm = &cpi->common;
@@ -654,6 +671,8 @@
if (oxcf->mode == GOOD) {
set_good_speed_feature_framesize_dependent(cpi, sf, speed);
+ } else if (oxcf->mode == REALTIME) {
+ set_rt_speed_feature_framesize_dependent(cpi, sf, speed);
}
// This is only used in motion vector unit test.