summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeb Mukherjee <debargha@google.com>2013-08-21 16:19:35 -0700
committerDeb Mukherjee <debargha@google.com>2013-08-22 07:05:44 -0700
commit8b810c7a78cbaac715cc516973de2bfdbf4067f9 (patch)
tree06a7ff370983a4e6a0d5da718b4d64a7d918f217
parentf39bf458e55c55f86d46b29a4b34d91a07e2ad1b (diff)
downloadlibvpx-8b810c7a78cbaac715cc516973de2bfdbf4067f9.tar
libvpx-8b810c7a78cbaac715cc516973de2bfdbf4067f9.tar.gz
libvpx-8b810c7a78cbaac715cc516973de2bfdbf4067f9.tar.bz2
libvpx-8b810c7a78cbaac715cc516973de2bfdbf4067f9.zip
Fixes on feature disabling split based on variance
Adds a couple of minor fixes, which may be absorbed in Jingning's patch. Thanks to Guillaume for pointing these out. Also adjusts the thresholds for speed 1 and 2 to 16 and 32 respectively, to keep quality drops small. Results: -------- derfraw300: threshold = 16, psnr -0.082%, speedup 2-3% threshold = 32, psnr -0.218%, speedup 5-6% stdhdraw250: threshold = 16, psnr -0.031%, speedup 2-3% threshold = 32, psnr -0.273%, speedup 5-6% Change-Id: I4b11ae8296cca6c2a9f644be7e40de7c423b8330
-rw-r--r--vp9/encoder/vp9_encodeframe.c9
-rw-r--r--vp9/encoder/vp9_onyx_if.c4
2 files changed, 7 insertions, 6 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c
index 9b5d825cc..160833baf 100644
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -1713,15 +1713,16 @@ static void rd_pick_partition(VP9_COMP *cpi, TOKENEXTRA **tp, int mi_row,
unsigned int source_variancey;
vp9_setup_src_planes(x, cpi->Source, mi_row, mi_col);
source_variancey = get_sby_perpixel_variance(cpi, x, bsize);
- if (source_variancey < cpi->sf.disable_split_var_thresh)
+ if (source_variancey < cpi->sf.disable_split_var_thresh) {
do_split = 0;
- else if (source_variancey < cpi->sf.disable_split_var_thresh / 2)
- do_rect = 0;
+ if (source_variancey < cpi->sf.disable_split_var_thresh / 2)
+ do_rect = 0;
+ }
}
// PARTITION_SPLIT
if (do_split &&
(!cpi->sf.auto_min_max_partition_size ||
- bsize >= cpi->sf.min_partition_size)) {
+ bsize > cpi->sf.min_partition_size)) {
if (bsize > BLOCK_8X8) {
subsize = get_subsize(bsize, PARTITION_SPLIT);
for (i = 0; i < 4 && sum_rd < best_rd; ++i) {
diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c
index 13b8c82f2..cef12ffa6 100644
--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -793,7 +793,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) {
sf->auto_min_max_partition_size = 1;
sf->auto_min_max_partition_interval = 1;
- sf->disable_split_var_thresh = 32;
+ sf->disable_split_var_thresh = 16;
sf->disable_filter_search_var_thresh = 16;
}
if (speed == 2) {
@@ -828,9 +828,9 @@ void vp9_set_speed_features(VP9_COMP *cpi) {
sf->search_method = SQUARE;
sf->subpel_iters_per_step = 1;
sf->use_fast_lpf_pick = 1;
- sf->disable_split_var_thresh = 64;
sf->auto_min_max_partition_size = 1;
sf->auto_min_max_partition_interval = 2;
+ sf->disable_split_var_thresh = 32;
sf->disable_filter_search_var_thresh = 32;
}
if (speed == 3) {