summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpaulwilkins <paulwilkins@google.com>2015-05-01 11:31:13 +0100
committerpaulwilkins <paulwilkins@google.com>2015-05-01 15:15:16 +0100
commit287b0c6da95d74f7f20e23f29aa0ff964856f4e4 (patch)
tree0e208efe4ab44b9a9f5339e9ef5cfa22811e1820
parente0786c280e3b4fca3e6236eb2043b17c112aa9a2 (diff)
downloadlibvpx-287b0c6da95d74f7f20e23f29aa0ff964856f4e4.tar
libvpx-287b0c6da95d74f7f20e23f29aa0ff964856f4e4.tar.gz
libvpx-287b0c6da95d74f7f20e23f29aa0ff964856f4e4.tar.bz2
libvpx-287b0c6da95d74f7f20e23f29aa0ff964856f4e4.zip
Remove CONSTRAIN_NEIGHBORING_MIN_MAX.
Remove one of the auto partition size cases. This case can behaves badly in some types of animated content and was only used for the rd encode path. A subsequent patch will add additional checks to help further improve visual quality. Change-Id: I0ebd8da3d45ab8501afa45d7959ced8c2d60ee4e
-rw-r--r--vp9/encoder/vp9_encodeframe.c29
-rw-r--r--vp9/encoder/vp9_speed_features.c2
-rw-r--r--vp9/encoder/vp9_speed_features.h3
3 files changed, 3 insertions, 31 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c
index fa7a694c5..568314174 100644
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -2157,7 +2157,6 @@ static void rd_auto_partition_range(VP9_COMP *cpi, const TileInfo *const tile,
int bh, bw;
BLOCK_SIZE min_size = BLOCK_4X4;
BLOCK_SIZE max_size = BLOCK_64X64;
- int i = 0;
int bs_hist[BLOCK_SIZES] = {0};
// Trap case where we do not have a prediction.
@@ -2187,36 +2186,10 @@ static void rd_auto_partition_range(VP9_COMP *cpi, const TileInfo *const tile,
bs_hist);
}
- // adjust observed min and max
+ // Adjust observed min and max for "relaxed" auto partition case.
if (cpi->sf.auto_min_max_partition_size == RELAXED_NEIGHBORING_MIN_MAX) {
min_size = min_partition_size[min_size];
max_size = max_partition_size[max_size];
- } else if (cpi->sf.auto_min_max_partition_size ==
- CONSTRAIN_NEIGHBORING_MIN_MAX) {
- // adjust the search range based on the histogram of the observed
- // partition sizes from left, above the previous co-located blocks
- int sum = 0;
- int first_moment = 0;
- int second_moment = 0;
- int var_unnormalized = 0;
-
- for (i = 0; i < BLOCK_SIZES; i++) {
- sum += bs_hist[i];
- first_moment += bs_hist[i] * i;
- second_moment += bs_hist[i] * i * i;
- }
-
- // if variance is small enough,
- // adjust the range around its mean size, which gives a tighter range
- var_unnormalized = second_moment - first_moment * first_moment / sum;
- if (var_unnormalized <= 4 * sum) {
- int mean = first_moment / sum;
- min_size = min_partition_size[mean];
- max_size = max_partition_size[mean];
- } else {
- min_size = min_partition_size[min_size];
- max_size = max_partition_size[max_size];
- }
}
}
diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c
index 4c5ba5df3..372f1673d 100644
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -115,7 +115,7 @@ static void set_good_speed_feature(VP9_COMP *cpi, VP9_COMMON *cm,
FLAG_SKIP_INTRA_LOWVAR;
sf->disable_filter_search_var_thresh = 100;
sf->comp_inter_joint_search_thresh = BLOCK_SIZES;
- sf->auto_min_max_partition_size = CONSTRAIN_NEIGHBORING_MIN_MAX;
+ sf->auto_min_max_partition_size = RELAXED_NEIGHBORING_MIN_MAX;
sf->allow_partition_search_skip = 1;
}
diff --git a/vp9/encoder/vp9_speed_features.h b/vp9/encoder/vp9_speed_features.h
index 8722d9cec..ec2560e90 100644
--- a/vp9/encoder/vp9_speed_features.h
+++ b/vp9/encoder/vp9_speed_features.h
@@ -101,8 +101,7 @@ typedef enum {
typedef enum {
NOT_IN_USE = 0,
RELAXED_NEIGHBORING_MIN_MAX = 1,
- CONSTRAIN_NEIGHBORING_MIN_MAX = 2,
- STRICT_NEIGHBORING_MIN_MAX = 3
+ STRICT_NEIGHBORING_MIN_MAX = 2
} AUTO_MIN_MAX_MODE;
typedef enum {