From 8b810c7a78cbaac715cc516973de2bfdbf4067f9 Mon Sep 17 00:00:00 2001 From: Deb Mukherjee Date: Wed, 21 Aug 2013 16:19:35 -0700 Subject: [PATCH] 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 --- vp9/encoder/vp9_encodeframe.c | 9 +++++---- vp9/encoder/vp9_onyx_if.c | 4 ++-- 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) {