]> granicus.if.org Git - libvpx/blobdiff - vp9/encoder/vp9_speed_features.c
Merge "Make the row based multi-threaded encoder deterministic"
[libvpx] / vp9 / encoder / vp9_speed_features.c
index fbf13969ea4cf58d6adc042a089a8cc57d7dfb79..17b0a5644bc84c94fd0c19984d9590595c574f80 100644 (file)
@@ -530,7 +530,15 @@ static void set_rt_speed_feature_framesize_independent(
       // 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) {
@@ -639,10 +647,7 @@ void vp9_set_speed_features_framesize_dependent(VP9_COMP *cpi) {
   // With row based multi-threading, the following speed features
   // have to be disabled to guarantee that bitstreams encoded with single thread
   // and multiple threads match
-  if (cpi->oxcf.row_mt_bit_exact) {
-    sf->adaptive_rd_thresh = 0;
-    sf->adaptive_pred_interp_filter = 0;
-  }
+  if (cpi->row_mt_bit_exact) sf->adaptive_rd_thresh = 0;
 
   // This is only used in motion vector unit test.
   if (cpi->oxcf.motion_vector_unit_test == 1)
@@ -796,10 +801,7 @@ void vp9_set_speed_features_framesize_independent(VP9_COMP *cpi) {
   // With row based multi-threading, the following speed features
   // have to be disabled to guarantee that bitstreams encoded with single thread
   // and multiple threads match
-  if (cpi->oxcf.row_mt_bit_exact) {
-    sf->adaptive_rd_thresh = 0;
-    sf->adaptive_pred_interp_filter = 0;
-  }
+  if (cpi->row_mt_bit_exact) sf->adaptive_rd_thresh = 0;
 
   // This is only used in motion vector unit test.
   if (cpi->oxcf.motion_vector_unit_test == 1)