AV1 RT: Moving initialization out of inner loop

Change-Id: I56acda3f434cc65016f4c5931ca53b869327c716
diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c
index c194c6a..efd9f15 100644
--- a/av1/encoder/nonrd_pickmode.c
+++ b/av1/encoder/nonrd_pickmode.c
@@ -1595,6 +1595,15 @@
 #if COLLECT_PICK_MODE_STAT
   ms_stat.num_blocks[bsize]++;
 #endif
+  init_mbmi(mi, DC_PRED, NONE_FRAME, NONE_FRAME, cm);
+  mi->tx_size =
+      AOMMIN(AOMMIN(max_txsize_lookup[bsize],
+                    tx_mode_to_biggest_tx_size[x->tx_mode_search_type]),
+             TX_16X16);
+  memset(mi->inter_tx_size, mi->tx_size, sizeof(mi->inter_tx_size));
+  memset(xd->tx_type_map, DCT_DCT,
+         sizeof(xd->tx_type_map[0]) * ctx->num_4x4_blk);
+  av1_zero(x->blk_skip);
 
   for (int idx = 0; idx < num_inter_modes; ++idx) {
     int rate_mv = 0;
@@ -1618,16 +1627,8 @@
     aom_usec_timer_start(&ms_stat.timer1);
     ms_stat.num_searches[bsize][this_mode]++;
 #endif
-    init_mbmi(mi, this_mode, ref_frame, NONE_FRAME, cm);
-
-    mi->tx_size =
-        AOMMIN(AOMMIN(max_txsize_lookup[bsize],
-                      tx_mode_to_biggest_tx_size[x->tx_mode_search_type]),
-               TX_16X16);
-    memset(mi->inter_tx_size, mi->tx_size, sizeof(mi->inter_tx_size));
-    memset(xd->tx_type_map, DCT_DCT,
-           sizeof(xd->tx_type_map[0]) * ctx->num_4x4_blk);
-    av1_zero(x->blk_skip);
+    mi->mode = this_mode;
+    mi->ref_frame[0] = ref_frame;
 
     if (ref_frame > usable_ref_frame) continue;
     if (skip_ref_find_pred[ref_frame]) continue;
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index 577d948..ca06f85 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -617,8 +617,8 @@
     av1_fill_mv_costs(cm->fc, cm->cur_frame_force_integer_mv,
                       cm->allow_high_precision_mv, x);
 
-  if (frame_is_intra_only(cm) && cm->allow_screen_content_tools &&
-      !is_stat_generation_stage(cpi)) {
+  if (!cpi->sf.rt_sf.use_nonrd_pick_mode && frame_is_intra_only(cm) &&
+      cm->allow_screen_content_tools && !is_stat_generation_stage(cpi)) {
     int *dvcost[2] = { &cpi->dv_cost[0][MV_MAX], &cpi->dv_cost[1][MV_MAX] };
     av1_build_nmv_cost_table(cpi->dv_joint_cost, dvcost, &cm->fc->ndvc,
                              MV_SUBPEL_NONE);