ref: b6597745f9dcec807b225b67e8069d5a3287e46e
parent: 0966757874c4555d0e781362389711dfe6e9aec7
author: Marco <[email protected]>
date: Tue Nov 22 05:10:06 EST 2016
vp9: Use more aggressive skip when short_circuit_low_temp_var = 1. Use the same feature as https://chromium-review.googlesource.com/#/c/411327/, but allow it to be used for speed = 6 and 7, where short_circuit_low_temp_var = 1. Speed up of ~2-3% for speed 7, with little/no loss in compression. Change-Id: I263a0f261ad9929034392d68f0153dc6376fdb5f
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -742,7 +742,8 @@
continue;
if ((*this_mi)->sb_type == BLOCK_32X32) {
- int64_t threshold_32x32 = cpi->sf.short_circuit_low_temp_var == 3
+ int64_t threshold_32x32 = (cpi->sf.short_circuit_low_temp_var == 1 ||
+ cpi->sf.short_circuit_low_temp_var == 3)
? ((3 * thresholds[1]) >> 2)
: (thresholds[1] >> 1);
if (vt->split[i].part_variances.none.variance < threshold_32x32)
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -1490,8 +1490,11 @@
if (cpi->sf.short_circuit_low_temp_var) {
force_skip_low_temp_var =
get_force_skip_low_temp_var(&x->variance_low[0], mi_row, mi_col, bsize);
- // In the most aggresive short circuit, skip golden in any mode
- if (cpi->sf.short_circuit_low_temp_var == 3 && force_skip_low_temp_var) {
+ // If force_skip_low_temp_var is set, and for short circuit mode = 1 and 3,
+ // skip golden reference.
+ if ((cpi->sf.short_circuit_low_temp_var == 1 ||
+ cpi->sf.short_circuit_low_temp_var == 3) &&
+ force_skip_low_temp_var) {
usable_ref_frame = LAST_FRAME;
}
}
--- a/vp9/encoder/vp9_speed_features.h
+++ b/vp9/encoder/vp9_speed_features.h
@@ -457,11 +457,11 @@
// Skip a number of expensive mode evaluations for blocks with very low
// temporal variance.
- // 1: Skip golden non-zeromv and ALL INTRA for bsize >= 32x32.
+ // 1: Skip all golden modes and ALL INTRA for bsize >= 32x32.
// 2: Skip golden non-zeromv and newmv-last for bsize >= 16x16, skip ALL
// INTRA for bsize >= 32x32 and vert/horz INTRA for bsize 16x16, 16x32 and
// 32x16.
- // 3: Same as (2), also skip golden in any mode for low res
+ // 3: Same as (2), but also skip golden zeromv for low res.
int short_circuit_low_temp_var;
// Limits the rd-threshold update for early exit for the newmv-last mode,