Fix partition eval flag setting
Under x->must_find_valid_partition, partition eval flags are
set appropriately based on min_partition_size.
BUG=aomedia:2602
STATS_CHANGED probably for 4K contents
Change-Id: I6a092a17a58d968d77f8f8c129e4d11ebfe2121d
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 8c93bf4..3e1522e 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -2816,14 +2816,17 @@
BEGIN_PARTITION_SEARCH:
if (x->must_find_valid_partition) {
- do_square_split = bsize_at_least_8x8;
- partition_none_allowed = has_rows && has_cols;
+ do_square_split = bsize_at_least_8x8 && (blksize > min_partition_size);
+ partition_none_allowed =
+ has_rows && has_cols && (blksize >= min_partition_size);
partition_horz_allowed =
has_cols && bsize_at_least_8x8 && cpi->oxcf.enable_rect_partitions &&
+ (blksize > min_partition_size) &&
get_plane_block_size(get_partition_subsize(bsize, PARTITION_HORZ), xss,
yss) != BLOCK_INVALID;
partition_vert_allowed =
has_rows && bsize_at_least_8x8 && cpi->oxcf.enable_rect_partitions &&
+ (blksize > min_partition_size) &&
get_plane_block_size(get_partition_subsize(bsize, PARTITION_VERT), xss,
yss) != BLOCK_INVALID;
terminate_partition_search = 0;
@@ -4627,12 +4630,11 @@
float features[FEATURE_SIZE_MAX_MIN_PART_PRED] = { 0.0f };
av1_get_max_min_partition_features(cpi, x, mi_row, mi_col, features);
- max_sq_size =
- AOMMIN(av1_predict_max_partition(cpi, x, features), max_sq_size);
+ max_sq_size = AOMMAX(
+ AOMMIN(av1_predict_max_partition(cpi, x, features), max_sq_size),
+ min_sq_size);
}
- min_sq_size = AOMMIN(min_sq_size, max_sq_size);
-
const int num_passes = cpi->oxcf.sb_multipass_unit_test ? 2 : 1;
if (num_passes == 1) {