shithub: libvpx

Download patch

ref: 4d0fe85c1957cea215085e7da41ee797e6a51f01
parent: 7877b911a425ad7e1c829d86eeac0c334f19de39
parent: 152358da777d45613b386be3a116719b8b16bd6d
author: Jerome Jiang <[email protected]>
date: Fri May 10 19:15:04 EDT 2019

Merge "Revert "vp9: Enable ml based partition for speed>=8 low res.""

--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -569,6 +569,14 @@
         (frames_since_key % (sf->last_partitioning_redo_frequency << 1) == 1);
     sf->max_delta_qindex = is_keyframe ? 20 : 15;
     sf->partition_search_type = REFERENCE_PARTITION;
+    if (sf->nonrd_use_ml_partition) {
+      if (!frame_is_intra_only(cm) && cm->width >= 360 && cm->height >= 360)
+        sf->partition_search_type = ML_BASED_PARTITION;
+#if CONFIG_VP9_HIGHBITDEPTH
+      if (cpi->Source->flags & YV12_FLAG_HIGHBITDEPTH)
+        sf->partition_search_type = REFERENCE_PARTITION;
+#endif  // CONFIG_VP9_HIGHBITDEPTH
+    }
     if (cpi->oxcf.rc_mode == VPX_VBR && cpi->oxcf.lag_in_frames > 0 &&
         cpi->rc.is_src_frame_alt_ref) {
       sf->partition_search_type = VAR_BASED_PARTITION;
@@ -633,7 +641,10 @@
       sf->use_altref_onepass = 1;
       sf->use_compound_nonrd_pickmode = 1;
     }
-    sf->partition_search_type = VAR_BASED_PARTITION;
+
+    if (!sf->nonrd_use_ml_partition)
+      sf->partition_search_type = VAR_BASED_PARTITION;
+
     sf->mv.search_method = NSTEP;
     sf->mv.reduce_first_step_size = 1;
     sf->skip_encode_sb = 0;
@@ -721,10 +732,6 @@
     if (!cpi->use_svc) cpi->max_copied_frame = 4;
     if (cpi->row_mt && cpi->oxcf.max_threads > 1)
       sf->adaptive_rd_thresh_row_mt = 1;
-    // Enable ML based partition for low res.
-    if (!frame_is_intra_only(cm) && cm->width * cm->height <= 352 * 288) {
-      sf->nonrd_use_ml_partition = 1;
-    }
     if (content == VP9E_CONTENT_SCREEN) sf->mv.subpel_force_stop = HALF_PEL;
     // Only keep INTRA_DC mode for speed 8.
     if (!is_keyframe) {
@@ -770,9 +777,6 @@
     if (cpi->rc.avg_frame_low_motion < 70) sf->default_interp_filter = BILINEAR;
     if (cm->width * cm->height >= 640 * 360) sf->variance_part_thresh_mult = 2;
   }
-
-  if (sf->nonrd_use_ml_partition)
-    sf->partition_search_type = ML_BASED_PARTITION;
 
   if (sf->use_altref_onepass) {
     if (cpi->rc.is_src_frame_alt_ref && cm->frame_type != KEY_FRAME) {