]> granicus.if.org Git - libvpx/commitdiff
Revert "vp9: Speed feature to adapt partition based on source_sad."
authorJames Zern <jzern@google.com>
Sat, 29 Jul 2017 18:34:57 +0000 (11:34 -0700)
committerJames Zern <jzern@google.com>
Sat, 29 Jul 2017 18:36:58 +0000 (11:36 -0700)
This reverts commit 064fc570ff8399536563e3846500fd99b273b034.

This causes an assertion failure in vp9_mcomp.c when running
gtest_filter=VP9/MotionVectorTestLarge.OverallTest/41:
`mv->col >= -((1 << (11 + 1 + 2)) - 1) && mv->col < ((1 << (11 + 1 + 2))
- 1)'

Change-Id: I449e777bf18b661cb3f1d82253610c55c51687f6

vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_speed_features.c
vp9/encoder/vp9_speed_features.h

index 0f486ad4f69cd1ed1327022225092c22687a31bf..b927bac02614f70855ef0f0becfcf8e7c39c50df 100644 (file)
@@ -981,8 +981,8 @@ static void chroma_check(VP9_COMP *cpi, MACROBLOCK *x, int bsize,
   }
 }
 
-static uint64_t avg_source_sad(VP9_COMP *cpi, MACROBLOCK *x, int shift,
-                               int sb_offset) {
+static void avg_source_sad(VP9_COMP *cpi, MACROBLOCK *x, int shift,
+                           int sb_offset) {
   unsigned int tmp_sse;
   uint64_t tmp_sad;
   unsigned int tmp_variance;
@@ -994,7 +994,7 @@ static uint64_t avg_source_sad(VP9_COMP *cpi, MACROBLOCK *x, int shift,
   uint64_t avg_source_sad_threshold = 10000;
   uint64_t avg_source_sad_threshold2 = 12000;
 #if CONFIG_VP9_HIGHBITDEPTH
-  if (cpi->common.use_highbitdepth) return 0;
+  if (cpi->common.use_highbitdepth) return;
 #endif
   src_y += shift;
   last_src_y += shift;
@@ -1026,7 +1026,7 @@ static uint64_t avg_source_sad(VP9_COMP *cpi, MACROBLOCK *x, int shift,
       cpi->content_state_sb_fd[sb_offset] = 0;
     }
   }
-  return tmp_sad;
+  return;
 }
 
 // This function chooses partitioning based on the variance between source and
@@ -4168,9 +4168,7 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, ThreadData *td,
     if (cpi->compute_source_sad_onepass && cpi->sf.use_source_sad) {
       int shift = cpi->Source->y_stride * (mi_row << 3) + (mi_col << 3);
       int sb_offset2 = ((cm->mi_cols + 7) >> 3) * (mi_row >> 3) + (mi_col >> 3);
-      int64_t source_sad = avg_source_sad(cpi, x, shift, sb_offset2);
-      if (sf->adapt_partition_source_sad && source_sad > 40000)
-        partition_search_type = REFERENCE_PARTITION;
+      avg_source_sad(cpi, x, shift, sb_offset2);
     }
 
     // Set the partition type of the 64X64 block
index 6488dfd531a5aea8ff9194b4cab4ae4b55d48449..d91142845d4a64d2b5899cb8f66790a39048276b 100644 (file)
@@ -364,7 +364,6 @@ static void set_rt_speed_feature_framesize_independent(
   sf->copy_partition_flag = 0;
   sf->use_source_sad = 0;
   sf->use_simple_block_yrd = 0;
-  sf->adapt_partition_source_sad = 0;
 
   if (speed >= 1) {
     sf->allow_txfm_domain_distortion = 1;
@@ -528,17 +527,6 @@ static void set_rt_speed_feature_framesize_independent(
     sf->mv.search_method = NSTEP;
     sf->mv.reduce_first_step_size = 1;
     sf->skip_encode_sb = 0;
-    if (!cpi->external_resize) sf->use_source_sad = 1;
-    if (sf->use_source_sad) {
-      if (cm->width * cm->height <= 640 * 360)
-        sf->adapt_partition_source_sad = 1;
-      if (cpi->content_state_sb_fd == NULL &&
-          (!cpi->use_svc ||
-           cpi->svc.spatial_layer_id == cpi->svc.number_spatial_layers - 1)) {
-        cpi->content_state_sb_fd = (uint8_t *)vpx_calloc(
-            (cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1), sizeof(uint8_t));
-      }
-    }
     if (cpi->oxcf.rc_mode == VPX_CBR && content != VP9E_CONTENT_SCREEN) {
       // Enable short circuit for low temporal variance.
       sf->short_circuit_low_temp_var = 1;
@@ -551,7 +539,6 @@ static void set_rt_speed_feature_framesize_independent(
   }
 
   if (speed >= 7) {
-    sf->adapt_partition_source_sad = 0;
     sf->adaptive_rd_thresh = 3;
     sf->mv.search_method = FAST_DIAMOND;
     sf->mv.fullpel_search_step_param = 10;
@@ -565,6 +552,15 @@ static void set_rt_speed_feature_framesize_independent(
       if (cpi->svc.non_reference_frame)
         sf->mv.subpel_search_method = SUBPEL_TREE_PRUNED_EVENMORE;
     }
+    if (!cpi->external_resize) sf->use_source_sad = 1;
+    if (sf->use_source_sad) {
+      if (cpi->content_state_sb_fd == NULL &&
+          (!cpi->use_svc ||
+           cpi->svc.spatial_layer_id == cpi->svc.number_spatial_layers - 1)) {
+        cpi->content_state_sb_fd = (uint8_t *)vpx_calloc(
+            (cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1), sizeof(uint8_t));
+      }
+    }
     // Enable partition copy. For SVC only enabled for top spatial resolution
     // layer.
     cpi->max_copied_frame = 0;
index 11e3154a0c9725705081c46c9478c918c0072565..ee485a35f4d2dd96aa6c2e3db4edea59a1a173e6 100644 (file)
@@ -490,10 +490,6 @@ typedef struct SPEED_FEATURES {
   int use_source_sad;
 
   int use_simple_block_yrd;
-
-  // If source sad of superblock is high, will switch from VARIANCE_PARTITION to
-  // REFERENCE_PARTITION (which selects partition based on the nonrd-pickmode).
-  int adapt_partition_source_sad;
 } SPEED_FEATURES;
 
 struct VP9_COMP;