Clear logic about partition search mode selection

Change-Id: I64d2c11addeb9137b4ccda08869e2305dd28b9f8
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index f8ea5e4..66e08dc 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -4046,6 +4046,7 @@
           map ? get_segment_id(cm, map, sb_size, mi_row, mi_col) : 0;
       seg_skip = segfeature_active(seg, segment_id, SEG_LVL_SKIP);
     }
+
     // Realtime non-rd path.
     if (!(sf->partition_search_type == FIXED_PARTITION || seg_skip) &&
         !cpi->partition_search_skippable_frame &&
@@ -4056,77 +4057,75 @@
       td->mb.cb_offset = 0;
       nonrd_use_partition(cpi, td, tile_data, mi, tp, mi_row, mi_col, sb_size,
                           pc_root);
-    }
-
+    } else {
 #if !CONFIG_REALTIME_ONLY
-    int dummy_rate;
-    int64_t dummy_dist;
-    RD_STATS dummy_rdc;
-    av1_invalid_rd_stats(&dummy_rdc);
-    if (sf->partition_search_type == FIXED_PARTITION || seg_skip) {
+      int dummy_rate;
+      int64_t dummy_dist;
+      RD_STATS dummy_rdc;
+      av1_invalid_rd_stats(&dummy_rdc);
       adjust_rdmult_tpl_model(cpi, x, mi_row, mi_col);
-      set_offsets(cpi, tile_info, x, mi_row, mi_col, sb_size);
-      const BLOCK_SIZE bsize = seg_skip ? sb_size : sf->always_this_block_size;
-      set_fixed_partitioning(cpi, tile_info, mi, mi_row, mi_col, bsize);
-      rd_use_partition(cpi, td, tile_data, mi, tp, mi_row, mi_col, sb_size,
-                       &dummy_rate, &dummy_dist, 1, pc_root);
-    } else if (cpi->partition_search_skippable_frame) {
-      adjust_rdmult_tpl_model(cpi, x, mi_row, mi_col);
-      set_offsets(cpi, tile_info, x, mi_row, mi_col, sb_size);
-      const BLOCK_SIZE bsize =
-          get_rd_var_based_fixed_partition(cpi, x, mi_row, mi_col);
-      set_fixed_partitioning(cpi, tile_info, mi, mi_row, mi_col, bsize);
-      rd_use_partition(cpi, td, tile_data, mi, tp, mi_row, mi_col, sb_size,
-                       &dummy_rate, &dummy_dist, 1, pc_root);
-    } else if (!(sf->partition_search_type == VAR_BASED_PARTITION &&
-                 use_nonrd_mode)) {
-      adjust_rdmult_tpl_model(cpi, x, mi_row, mi_col);
-      reset_partition(pc_root, sb_size);
+      if (sf->partition_search_type == FIXED_PARTITION || seg_skip) {
+        set_offsets(cpi, tile_info, x, mi_row, mi_col, sb_size);
+        const BLOCK_SIZE bsize =
+            seg_skip ? sb_size : sf->always_this_block_size;
+        set_fixed_partitioning(cpi, tile_info, mi, mi_row, mi_col, bsize);
+        rd_use_partition(cpi, td, tile_data, mi, tp, mi_row, mi_col, sb_size,
+                         &dummy_rate, &dummy_dist, 1, pc_root);
+      } else if (cpi->partition_search_skippable_frame) {
+        set_offsets(cpi, tile_info, x, mi_row, mi_col, sb_size);
+        const BLOCK_SIZE bsize =
+            get_rd_var_based_fixed_partition(cpi, x, mi_row, mi_col);
+        set_fixed_partitioning(cpi, tile_info, mi, mi_row, mi_col, bsize);
+        rd_use_partition(cpi, td, tile_data, mi, tp, mi_row, mi_col, sb_size,
+                         &dummy_rate, &dummy_dist, 1, pc_root);
+      } else {
+        reset_partition(pc_root, sb_size);
 
 #if CONFIG_COLLECT_COMPONENT_TIMING
-      start_timing(cpi, rd_pick_partition_time);
+        start_timing(cpi, rd_pick_partition_time);
 #endif
-      BLOCK_SIZE max_sq_size = BLOCK_128X128;
-      switch (cpi->oxcf.max_partition_size) {
-        case 4: max_sq_size = BLOCK_4X4; break;
-        case 8: max_sq_size = BLOCK_8X8; break;
-        case 16: max_sq_size = BLOCK_16X16; break;
-        case 32: max_sq_size = BLOCK_32X32; break;
-        case 64: max_sq_size = BLOCK_64X64; break;
-        case 128: max_sq_size = BLOCK_128X128; break;
-        default: assert(0); break;
-      }
-      max_sq_size = AOMMIN(max_sq_size, sb_size);
+        BLOCK_SIZE max_sq_size = BLOCK_128X128;
+        switch (cpi->oxcf.max_partition_size) {
+          case 4: max_sq_size = BLOCK_4X4; break;
+          case 8: max_sq_size = BLOCK_8X8; break;
+          case 16: max_sq_size = BLOCK_16X16; break;
+          case 32: max_sq_size = BLOCK_32X32; break;
+          case 64: max_sq_size = BLOCK_64X64; break;
+          case 128: max_sq_size = BLOCK_128X128; break;
+          default: assert(0); break;
+        }
+        max_sq_size = AOMMIN(max_sq_size, sb_size);
 
-      BLOCK_SIZE min_sq_size = BLOCK_4X4;
-      switch (cpi->oxcf.min_partition_size) {
-        case 4: min_sq_size = BLOCK_4X4; break;
-        case 8: min_sq_size = BLOCK_8X8; break;
-        case 16: min_sq_size = BLOCK_16X16; break;
-        case 32: min_sq_size = BLOCK_32X32; break;
-        case 64: min_sq_size = BLOCK_64X64; break;
-        case 128: min_sq_size = BLOCK_128X128; break;
-        default: assert(0); break;
-      }
+        BLOCK_SIZE min_sq_size = BLOCK_4X4;
+        switch (cpi->oxcf.min_partition_size) {
+          case 4: min_sq_size = BLOCK_4X4; break;
+          case 8: min_sq_size = BLOCK_8X8; break;
+          case 16: min_sq_size = BLOCK_16X16; break;
+          case 32: min_sq_size = BLOCK_32X32; break;
+          case 64: min_sq_size = BLOCK_64X64; break;
+          case 128: min_sq_size = BLOCK_128X128; break;
+          default: assert(0); break;
+        }
 
-      if (use_auto_max_partition(cpi, sb_size, mi_row, mi_col)) {
-        float features[FEATURE_SIZE_MAX_MIN_PART_PRED] = { 0.0f };
+        if (use_auto_max_partition(cpi, sb_size, mi_row, mi_col)) {
+          float features[FEATURE_SIZE_MAX_MIN_PART_PRED] = { 0.0f };
 
-        av1_get_max_min_partition_features(cpi, x, mi_row, mi_col, features);
-        max_sq_size =
-            AOMMIN(av1_predict_max_partition(cpi, x, features), max_sq_size);
-      }
+          av1_get_max_min_partition_features(cpi, x, mi_row, mi_col, features);
+          max_sq_size =
+              AOMMIN(av1_predict_max_partition(cpi, x, features), max_sq_size);
+        }
 
-      min_sq_size = AOMMIN(min_sq_size, max_sq_size);
+        min_sq_size = AOMMIN(min_sq_size, max_sq_size);
 
-      rd_pick_partition(cpi, td, tile_data, tp, mi_row, mi_col, sb_size,
-                        max_sq_size, min_sq_size, &dummy_rdc, dummy_rdc,
-                        pc_root, NULL);
+        rd_pick_partition(cpi, td, tile_data, tp, mi_row, mi_col, sb_size,
+                          max_sq_size, min_sq_size, &dummy_rdc, dummy_rdc,
+                          pc_root, NULL);
 #if CONFIG_COLLECT_COMPONENT_TIMING
-      end_timing(cpi, rd_pick_partition_time);
+        end_timing(cpi, rd_pick_partition_time);
 #endif
-    }
+      }
 #endif  // !CONFIG_REALTIME_ONLY
+    }
 
     // TODO(angiebird): Let inter_mode_rd_model_estimation support multi-tile.
     if (cpi->sf.inter_mode_rd_model_estimation == 1 && cm->tile_cols == 1 &&