From aaa6cdcc2ea68fbab1d4422174fac85459ad6d37 Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 19 Sep 2017 15:19:41 -0700 Subject: [PATCH] vp9: Modify simple_block_yrd condition for SVC Modify simple_block_yrd condition in nonrd_pickmode for SVC: allow it to be used also on base temporal_layer, only when spatial_layer > 1 and block size < 32x32. Speed up of about ~2% for 3 layer SVC, with little/negligible loss in quality. Change-Id: I7734bdae51cf51f22b96f6b2b27da20ea1d84344 --- vp9/encoder/vp9_pickmode.c | 4 +++- vp9/encoder/vp9_speed_features.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c index 826bb31d3..d22dcddfe 100644 --- a/vp9/encoder/vp9_pickmode.c +++ b/vp9/encoder/vp9_pickmode.c @@ -676,7 +676,9 @@ static void block_yrd(VP9_COMP *cpi, MACROBLOCK *x, RD_COST *this_rdc, #endif if (cpi->sf.use_simple_block_yrd && cpi->common.frame_type != KEY_FRAME && - (bsize < BLOCK_32X32 || cpi->use_svc)) { + (bsize < BLOCK_32X32 || + (cpi->use_svc && + (bsize < BLOCK_32X32 || cpi->svc.temporal_layer_id > 0)))) { unsigned int var_y, sse_y; (void)tx_size; if (!rd_computed) diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index ea49dec30..51abb2880 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -572,7 +572,7 @@ static void set_rt_speed_feature_framesize_independent( sf->mv.search_method = NSTEP; sf->mv.fullpel_search_step_param = 6; } - if (cpi->svc.temporal_layer_id > 0) { + if (cpi->svc.temporal_layer_id > 0 || cpi->svc.spatial_layer_id > 1) { sf->use_simple_block_yrd = 1; if (cpi->svc.non_reference_frame) sf->mv.subpel_search_method = SUBPEL_TREE_PRUNED_EVENMORE; -- 2.40.0