From 89b8c7a51390351db4fd5f7bbf1c8a3c547898e5 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Wed, 15 Oct 2014 11:37:20 -0700 Subject: [PATCH] Replace copy_partitioning use case with choose_partitioning This commit replaces the use of copy_partitioning with choose_partitioning based on the sse of subsamped pixels, which provides significantly better coding performance and runs at similar speed, as compared to copy_partitioning. It improves rtc speed 5 coding performance by 3%. Change-Id: I52d3682a12dce0147f5e52383a594fc242ca3228 --- vp9/encoder/vp9_encodeframe.c | 3 +-- vp9/encoder/vp9_speed_features.c | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index b43ff9747..193a3a559 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -3158,7 +3158,6 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, const TileInfo *const tile, int64_t dummy_dist = 0; const int idx_str = cm->mi_stride * mi_row + mi_col; MODE_INFO *mi = cm->mi + idx_str; - MODE_INFO *prev_mi = (cm->prev_mip + cm->mi_stride + 1 + idx_str)->src_mi; BLOCK_SIZE bsize; x->in_static_area = 0; x->source_variance = UINT_MAX; @@ -3196,7 +3195,7 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, const TileInfo *const tile, &dummy_rate, &dummy_dist, 1, INT64_MAX, cpi->pc_root); } else { - copy_partitioning(cm, mi, prev_mi); + choose_partitioning(cpi, tile, mi_row, mi_col); nonrd_use_partition(cpi, tile, mi, tp, mi_row, mi_col, BLOCK_64X64, 1, &dummy_rate, &dummy_dist, cpi->pc_root); diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index 8788be645..bec77d71f 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -271,6 +271,10 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, sf->partition_search_type = REFERENCE_PARTITION; sf->use_nonrd_pick_mode = 1; sf->allow_skip_recode = 0; + sf->inter_mode_mask[BLOCK_32X32] = INTER_NEAREST_NEW_ZERO; + sf->inter_mode_mask[BLOCK_32X64] = INTER_NEAREST_NEW_ZERO; + sf->inter_mode_mask[BLOCK_64X32] = INTER_NEAREST_NEW_ZERO; + sf->inter_mode_mask[BLOCK_64X64] = INTER_NEAREST_NEW_ZERO; } if (speed >= 6) { @@ -285,10 +289,6 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, sf->partition_search_type = VAR_BASED_PARTITION; sf->search_type_check_frequency = 50; sf->mv.search_method = NSTEP; - sf->inter_mode_mask[BLOCK_32X32] = INTER_NEAREST_NEW_ZERO; - sf->inter_mode_mask[BLOCK_32X64] = INTER_NEAREST_NEW_ZERO; - sf->inter_mode_mask[BLOCK_64X32] = INTER_NEAREST_NEW_ZERO; - sf->inter_mode_mask[BLOCK_64X64] = INTER_NEAREST_NEW_ZERO; sf->tx_size_search_method = is_keyframe ? USE_LARGESTALL : USE_TX_8X8;