ref: c614164cb6b16bcf26f30ed761950d0276769779
parent: 92ec0674fdb21f3f195a1aba227e53adc1033621
author: Marco <marpan@google.com>
date: Tue Apr 25 12:11:19 EDT 2017
vp9: SVC: Adjust some speed settings for temporal layers. Make some speed setting changes for temporal enhancement layers, and remove the switch in subpel_force_stop for the aggressive_base_mv in non-rd pickmode. Gain some 2-3% speed with little/negligible quality loss. Change-Id: I3e2a7f80ff45f38c0a6ceb01b34dbca2f53edbf0
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -211,9 +211,7 @@
!(RDCOST(x->rdmult, x->rddiv, (*rate_mv + rate_mode), 0) > best_rd_sofar);
if (rv) {
- const int subpel_force_stop = use_base_mv && cpi->sf.base_mv_aggressive
- ? 2
- : cpi->sf.mv.subpel_force_stop;
+ const int subpel_force_stop = cpi->sf.mv.subpel_force_stop;
cpi->find_fractional_mv_step(
x, &tmp_mv->as_mv, &ref_mv, cpi->common.allow_high_precision_mv,
x->errorperbit, &cpi->fn_ptr[bsize], subpel_force_stop,
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -530,7 +530,15 @@
// Enable short circuit for low temporal variance.
sf->short_circuit_low_temp_var = 1;
}
- if (cpi->use_svc) sf->base_mv_aggressive = 1;
+ if (cpi->svc.temporal_layer_id > 0) {
+ sf->adaptive_rd_thresh = 4;
+ sf->limit_newmv_early_exit = 0;
+ sf->mv.subpel_force_stop = (cpi->svc.temporal_layer_id == 1) ? 1 : 2;
+ sf->base_mv_aggressive =
+ (cpi->svc.temporal_layer_id == cpi->svc.number_temporal_layers - 1)
+ ? 1
+ : 0;
+ }
}
if (speed >= 7) {