Enable av1_ml_predict_breakout() for speed 0 hbd
This CL enables the speed feature av1_ml_predict_breakout() to
speed preset 0 for high bit-depth encoding.
Instruction Count BD-Rate Loss(%)
cpu-used Reduction(%) avg.psnr ovr.psnr ssim
0 2.841 0.0441 0.0458 0.0462
STATS_CHANGED for hbd encoding
Change-Id: If3de3aae5a56536f0c12f2ecc8d824363a81e123
diff --git a/av1/encoder/partition_strategy.c b/av1/encoder/partition_strategy.c
index 686623b..3cae746 100644
--- a/av1/encoder/partition_strategy.c
+++ b/av1/encoder/partition_strategy.c
@@ -1259,10 +1259,9 @@
if (!nn_config || thresh < 0) return 0;
const float ml_predict_breakout_thresh_scale[3] = { 1.15f, 1.05f, 1.0f };
- thresh =
- (int)((float)thresh *
- ml_predict_breakout_thresh_scale[cpi->sf.part_sf
- .ml_predict_breakout_level]);
+ thresh = (int)((float)thresh *
+ ml_predict_breakout_thresh_scale
+ [cpi->sf.part_sf.ml_predict_breakout_level - 1]);
// Generate feature values.
float features[FEATURES];
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 47b0fc3..1c17568 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -340,7 +340,7 @@
sf->part_sf.ml_prune_rect_partition = 1;
sf->part_sf.prune_ext_partition_types_search_level = 1;
sf->part_sf.simple_motion_search_prune_rect = 1;
- sf->part_sf.ml_predict_breakout_level = use_hbd ? 0 : 2;
+ sf->part_sf.ml_predict_breakout_level = use_hbd ? 1 : 3;
sf->inter_sf.disable_wedge_search_var_thresh = 0;
// TODO(debargha): Test, tweak and turn on either 1 or 2
@@ -390,7 +390,7 @@
// simple_motion_search_split in partition search function and set the
// speed feature accordingly
sf->part_sf.simple_motion_search_split = allow_screen_content_tools ? 1 : 2;
- sf->part_sf.ml_predict_breakout_level = use_hbd ? 1 : 2;
+ sf->part_sf.ml_predict_breakout_level = use_hbd ? 2 : 3;
sf->mv_sf.exhaustive_searches_thresh <<= 1;
sf->mv_sf.obmc_full_pixel_search_level = 1;
@@ -547,7 +547,7 @@
sf->part_sf.simple_motion_search_reduce_search_steps = 4;
sf->part_sf.prune_ab_partition_using_split_info = 1;
sf->part_sf.early_term_after_none_split = 1;
- sf->part_sf.ml_predict_breakout_level = 2;
+ sf->part_sf.ml_predict_breakout_level = 3;
sf->inter_sf.alt_ref_search_fp = 1;
sf->inter_sf.txfm_rd_gate_level = boosted ? 0 : 4;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index 20e8056..1926dec 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -475,8 +475,9 @@
int early_term_after_none_split;
// Level used to adjust threshold for av1_ml_predict_breakout(). At lower
- // levels, more conservative threshold is used. Value of 2 corresponds to
- // default case with no adjustment to lbd thresholds.
+ // levels, more conservative threshold is used, and value of 0 indicates
+ // av1_ml_predict_breakout() is disabled. Value of 3 corresponds to default
+ // case with no adjustment to lbd thresholds.
int ml_predict_breakout_level;
} PARTITION_SPEED_FEATURES;