Reduce number of fullpx steps taken by tpl in spd 5
Performance:
RES | AVG_PSNR | OVR_PSNR | SSIM | AVG_SPD | OVR_SPD
LOWRES | +0.009% | -0.001% | +0.185% | +1.044% | +0.699%
MIDRES | +0.026% | +0.013% | +0.228% | +2.001% | +1.081%
HDRES | +0.062% | +0.051% | +0.216% | +3.969% | +2.617%
STATS_CHANGED
Change-Id: I52854ab356ab01553bda833c8baed80d39b6336a
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index b1c5eae..76ec863 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -494,6 +494,7 @@
sf->disable_smooth_interintra = 1;
sf->disable_onesided_comp = 1;
sf->tpl_sf.prune_intra_modes = 1;
+ sf->tpl_sf.reduce_first_step_size = 6;
}
}
@@ -924,6 +925,7 @@
// TODO(any) Cleanup this speed feature
sf->prune_single_motion_modes_by_simple_trans = 0;
sf->tpl_sf.prune_intra_modes = 0;
+ sf->tpl_sf.reduce_first_step_size = 0;
// Set decoder side speed feature to use less dual sgr modes
sf->dual_sgr_penalty_level = 0;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index bbf358f..636a136 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -252,6 +252,9 @@
// modes from DC_PRED to PAETH_PRED. If set to one, we only search DC_PRED and
// the direction modes
int prune_intra_modes;
+
+ // This parameter controls which step in the n-step process we start at.
+ int reduce_first_step_size;
} TPL_SPEED_FEATURES;
#define MAX_MESH_STEP 4
diff --git a/av1/encoder/tpl_model.c b/av1/encoder/tpl_model.c
index 7c5fabf..95bd703 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -111,6 +111,7 @@
AV1_COMMON *cm = &cpi->common;
MACROBLOCKD *const xd = &x->e_mbd;
MV_SPEED_FEATURES *const mv_sf = &cpi->sf.mv;
+ TPL_SPEED_FEATURES *tpl_sf = &cpi->sf.tpl_sf;
const SEARCH_METHODS search_method = NSTEP;
int step_param;
int sadpb = x->sadperbit16;
@@ -137,7 +138,7 @@
xd->plane[0].pre[0].buf = ref_frame_buf;
xd->plane[0].pre[0].stride = stride_ref;
- step_param = mv_sf->reduce_first_step_size;
+ step_param = mv_sf->reduce_first_step_size + tpl_sf->reduce_first_step_size;
step_param = AOMMIN(step_param, MAX_MVSEARCH_STEPS - 2);
av1_set_mv_search_range(&x->mv_limits, &best_ref_mv1);