ref: 89b8c7a51390351db4fd5f7bbf1c8a3c547898e5
parent: 2040bb58fbec7d06d5bdb1f6628bb058d3132ebf
author: Jingning Han <[email protected]>
date: Wed Oct 15 07:37:20 EDT 2014
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
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -3158,7 +3158,6 @@
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 @@
&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);
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -271,6 +271,10 @@
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 @@
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;