]> granicus.if.org Git - libvpx/commitdiff
vp9-svc: Bugfix on usage of svc_force_zeromv in non-rd pickmode.
authorMarco <marpan@google.com>
Wed, 16 Mar 2016 18:53:43 +0000 (11:53 -0700)
committerMarco <marpan@google.com>
Wed, 16 Mar 2016 23:12:16 +0000 (16:12 -0700)
Only affects 1 pass cbr svc mode.

Change-Id: Ifc0948b4aabffa64a9701295d8dbc58a7208a30f

vp9/encoder/vp9_pickmode.c

index f29a5d84a1a22545198880d140a1b085f698264c..3ea2ccd88fff6637394bde76bc3380e2c67757ad 100644 (file)
@@ -1689,12 +1689,15 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
   xd->mi[0]->bmi[0].as_mv[0].as_int = mi->mv[0].as_int;
   x->skip_txfm[0] = best_mode_skip_txfm;
 
-  // Perform intra prediction only if base layer is chosen as the reference.
+  // For spatial enhancemanent layer: perform intra prediction only if base
+  // layer is chosen as the reference. Always perform intra prediction if
+  // LAST is the only reference or is_key_frame is set.
   if (cpi->svc.spatial_layer_id) {
     perform_intra_pred =
         cpi->svc.layer_context[cpi->svc.temporal_layer_id].is_key_frame ||
+        !(cpi->ref_frame_flags & flag_list[GOLDEN_FRAME])  ||
         (!cpi->svc.layer_context[cpi->svc.temporal_layer_id].is_key_frame
-            && svc_force_zero_mode[best_ref_frame]);
+            && svc_force_zero_mode[best_ref_frame - 1]);
     inter_mode_thresh = (inter_mode_thresh << 1) + inter_mode_thresh;
   }
   // Perform intra prediction search, if the best SAD is above a certain