summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_pickmode.c
diff options
context:
space:
mode:
authorJerome Jiang <jianj@google.com>2016-11-15 10:37:12 -0800
committerJerome Jiang <jianj@google.com>2016-11-15 13:56:27 -0800
commit360217a233bf67f78a3ab60a6a36e75b20cef816 (patch)
tree3b2bfcfd6f3d75c6f0fdb515e408b1736e0fc5dd /vp9/encoder/vp9_pickmode.c
parenta3128ad33af5a348269c01c3fd3c30a1d8d53f39 (diff)
downloadlibvpx-360217a233bf67f78a3ab60a6a36e75b20cef816.tar
libvpx-360217a233bf67f78a3ab60a6a36e75b20cef816.tar.gz
libvpx-360217a233bf67f78a3ab60a6a36e75b20cef816.tar.bz2
libvpx-360217a233bf67f78a3ab60a6a36e75b20cef816.zip
vp9: Speed 8: More aggresive golden skip for low res.
Add a new, more aggresive short circuit: short_circuit_low_temp_var = 3 to skip golden of any mode when variance is lower than threshold for low res. This change only affects speed = 8, low resolution. Metrics for avgPSNR/SSIM on rtc_derf (low resolution) show loss of 0.27/0.31%. On Nexus 6, the encoding time is reduced by ~2.3% on average across all low-res clips. Visually little change on rtc_derf clips. Change-Id: Ia8f7366fc2d49181a96733a380b4dbd7390246ec
Diffstat (limited to 'vp9/encoder/vp9_pickmode.c')
-rw-r--r--vp9/encoder/vp9_pickmode.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c
index 2b7ddbcd9..8b84c3825 100644
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -1490,6 +1490,10 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
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) {
+ usable_ref_frame = LAST_FRAME;
+ }
}
if (!((cpi->ref_frame_flags & flag_list[GOLDEN_FRAME]) &&
@@ -1558,7 +1562,7 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
continue;
}
- if (cpi->sf.short_circuit_low_temp_var == 2 && force_skip_low_temp_var &&
+ if (cpi->sf.short_circuit_low_temp_var >= 2 && force_skip_low_temp_var &&
ref_frame == LAST_FRAME && this_mode == NEWMV) {
continue;
}