Consolidate prune extended partition search speed features
This patch combines prune_4_partition_using_split_info and
prune_ab_partition_using_split_info speed features
Change-Id: I3efc88dc995ea67d243134ff85287b81233dd5d3
diff --git a/av1/encoder/partition_search.c b/av1/encoder/partition_search.c
index 5f5cbfd..8d0bf74 100644
--- a/av1/encoder/partition_search.c
+++ b/av1/encoder/partition_search.c
@@ -3022,7 +3022,7 @@
const int num_win_thresh = AOMMIN(3 * (MAXQ - x->qindex) / MAXQ + 1, 3);
for (RECT_PART_TYPE i = HORZ; i < NUM_RECT_PARTS; i++) {
- if (!(cpi->sf.part_sf.prune_4_partition_using_split_info &&
+ if (!(cpi->sf.part_sf.prune_ext_part_using_split_info &&
part4_search_allowed[cur_part[i]]))
continue;
// Loop over split partitions.
diff --git a/av1/encoder/partition_strategy.c b/av1/encoder/partition_strategy.c
index 706df56..87b6084 100644
--- a/av1/encoder/partition_strategy.c
+++ b/av1/encoder/partition_strategy.c
@@ -1584,22 +1584,22 @@
// Pruning: pruning AB partitions based on the number of horz/vert wins
// in the current block and sub-blocks in PARTITION_SPLIT.
- if (cpi->sf.part_sf.prune_ab_partition_using_split_info &&
+ if (cpi->sf.part_sf.prune_ext_part_using_split_info >= 2 &&
*horza_partition_allowed) {
*horza_partition_allowed &= evaluate_ab_partition_based_on_split(
pc_tree, PARTITION_HORZ, rect_part_win_info, x->qindex, 0, 1);
}
- if (cpi->sf.part_sf.prune_ab_partition_using_split_info &&
+ if (cpi->sf.part_sf.prune_ext_part_using_split_info >= 2 &&
*horzb_partition_allowed) {
*horzb_partition_allowed &= evaluate_ab_partition_based_on_split(
pc_tree, PARTITION_HORZ, rect_part_win_info, x->qindex, 2, 3);
}
- if (cpi->sf.part_sf.prune_ab_partition_using_split_info &&
+ if (cpi->sf.part_sf.prune_ext_part_using_split_info >= 2 &&
*verta_partition_allowed) {
*verta_partition_allowed &= evaluate_ab_partition_based_on_split(
pc_tree, PARTITION_VERT, rect_part_win_info, x->qindex, 0, 2);
}
- if (cpi->sf.part_sf.prune_ab_partition_using_split_info &&
+ if (cpi->sf.part_sf.prune_ext_part_using_split_info >= 2 &&
*vertb_partition_allowed) {
*vertb_partition_allowed &= evaluate_ab_partition_based_on_split(
pc_tree, PARTITION_VERT, rect_part_win_info, x->qindex, 1, 3);
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index c871661..5585053 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -525,7 +525,7 @@
sf->part_sf.less_rectangular_check_level = 2;
sf->part_sf.simple_motion_search_prune_agg = 1;
- sf->part_sf.prune_4_partition_using_split_info = 1;
+ sf->part_sf.prune_ext_part_using_split_info = 1;
// adaptive_motion_search breaks encoder multi-thread tests.
// The values in x->pred_mv[] differ for single and multi-thread cases.
@@ -599,7 +599,7 @@
sf->part_sf.simple_motion_search_prune_agg = 2;
sf->part_sf.simple_motion_search_reduce_search_steps = 4;
- sf->part_sf.prune_ab_partition_using_split_info = 1;
+ sf->part_sf.prune_ext_part_using_split_info = 2;
sf->part_sf.early_term_after_none_split = 1;
sf->part_sf.ml_predict_breakout_level = 3;
@@ -1100,8 +1100,7 @@
part_sf->simple_motion_search_reduce_search_steps = 0;
part_sf->intra_cnn_split = 0;
part_sf->ext_partition_eval_thresh = BLOCK_8X8;
- part_sf->prune_4_partition_using_split_info = 0;
- part_sf->prune_ab_partition_using_split_info = 0;
+ part_sf->prune_ext_part_using_split_info = 0;
part_sf->prune_rectangular_split_based_on_qidx = 0;
part_sf->early_term_after_none_split = 0;
part_sf->ml_predict_breakout_level = 0;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index e534c96..19a4229 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -482,11 +482,11 @@
// Disable extended partition search for lower block sizes.
int ext_partition_eval_thresh;
- // Prune 1:4 partition search based on winner info from split partitions
- int prune_4_partition_using_split_info;
-
- // Prune AB partition search using split and HORZ/VERT info
- int prune_ab_partition_using_split_info;
+ // prune extended partition search
+ // 0 : no pruning
+ // 1 : prune 1:4 partition search using winner info from split partitions
+ // 2 : prune 1:4 and AB partition search using split and HORZ/VERT info
+ int prune_ext_part_using_split_info;
// Prunt rectangular, AB and 4-way partition based on q index and block size
int prune_rectangular_split_based_on_qidx;