]> granicus.if.org Git - libvpx/commitdiff
vp9: Modify simple_block_yrd condition for SVC
authorMarco <marpan@google.com>
Tue, 19 Sep 2017 22:19:41 +0000 (15:19 -0700)
committerMarco <marpan@google.com>
Tue, 19 Sep 2017 22:39:05 +0000 (15:39 -0700)
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
vp9/encoder/vp9_speed_features.c

index 826bb31d350a5f21a16fce994321e32b7390e5ee..d22dcddfe63423d4c6e8173f71cc85bce161db6e 100644 (file)
@@ -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)
index ea49dec30e440ac210d5e926819ae15f09c2fab4..51abb28803020707fbce1770a0d01120acdcd4ee 100644 (file)
@@ -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;