From b04d766800f39ed97361d2ec13b740cbf5bca534 Mon Sep 17 00:00:00 2001 From: Yunqing Wang Date: Thu, 29 May 2014 16:53:23 -0700 Subject: Use small transform size in non-rd real-time mode In non-rd real-time mode, choosing smaller transform size in encoding gives better video quality and good speed gain than choosing larger transform size. This patch set tx size search method to ALLOW_8X8, which is better than using 4x4 or other larger sizes. Borg tests on rtc set at speed 6 showed significant gain on quality. PSNR gain: 11.034% and SSIM gain: 15.466%. The speed gain is 5% - 12% for <720p clips, and 2% - 7% for 720p clips. Change-Id: If4dc74ed2df359346b059f47fb73b4a0193ec548 --- vp9/encoder/vp9_encodeframe.c | 2 ++ vp9/encoder/vp9_speed_features.c | 2 ++ vp9/encoder/vp9_speed_features.h | 3 ++- 3 files changed, 6 insertions(+), 1 deletion(-) (limited to 'vp9/encoder') diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 914bb370a..98f7ee4ce 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -2418,6 +2418,8 @@ static TX_MODE select_tx_mode(const VP9_COMP *cpi) { return rd_opt->tx_select_threshes[frame_type][ALLOW_32X32] > rd_opt->tx_select_threshes[frame_type][TX_MODE_SELECT] ? ALLOW_32X32 : TX_MODE_SELECT; + } else if (cpi->sf.tx_size_search_method == USE_TX_8X8) { + return ALLOW_8X8; } else { unsigned int total = 0; int i; diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index b7f839747..729fa481b 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -269,6 +269,8 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, sf->partition_search_type = SOURCE_VAR_BASED_PARTITION; sf->search_type_check_frequency = 50; sf->source_var_thresh = 360; + + sf->tx_size_search_method = USE_TX_8X8; } if (speed >= 7) { diff --git a/vp9/encoder/vp9_speed_features.h b/vp9/encoder/vp9_speed_features.h index 3e7cd27d8..09180950d 100644 --- a/vp9/encoder/vp9_speed_features.h +++ b/vp9/encoder/vp9_speed_features.h @@ -58,7 +58,8 @@ typedef enum { USE_FULL_RD = 0, USE_LARGESTINTRA, USE_LARGESTINTRA_MODELINTER, - USE_LARGESTALL + USE_LARGESTALL, + USE_TX_8X8 } TX_SIZE_SEARCH_METHOD; typedef enum { -- cgit v1.2.3