AV1 RT: Simplified Inter Prediction

3-4% speed up on lowres speed 7. No BDRate impact

Change-Id: Ifa0bca232bc7073a729ecab6634e6406c65aee28
diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c
index 3ff3645..11f3132 100644
--- a/av1/encoder/nonrd_pickmode.c
+++ b/av1/encoder/nonrd_pickmode.c
@@ -1281,8 +1281,7 @@
     int64_t cost;
     InterpFilter filter = filters[i];
     mi->interp_filters = av1_broadcast_interp_filter(filter);
-    av1_enc_build_inter_predictor(cm, xd, mi_row, mi_col, NULL, bsize,
-                                  AOM_PLANE_Y, AOM_PLANE_Y);
+    av1_enc_build_inter_predictor_y(xd, mi_row, mi_col);
     if (use_model_yrd_large)
       model_skip_for_sb_y_large(
           cpi, bsize, mi_row, mi_col, x, xd, &pf_rate[i], &pf_dist[i],
@@ -1338,8 +1337,7 @@
     pd->dst.buf = (*this_mode_pred)->data;
     pd->dst.stride = (*this_mode_pred)->stride;
   } else if (best_filter_index < filter_search_size - 1) {
-    av1_enc_build_inter_predictor(cm, xd, mi_row, mi_col, NULL, bsize,
-                                  AOM_PLANE_Y, AOM_PLANE_Y);
+    av1_enc_build_inter_predictor_y(xd, mi_row, mi_col);
   }
 }
 
@@ -1841,8 +1839,7 @@
       mi->interp_filters = (filter_ref == SWITCHABLE)
                                ? av1_broadcast_interp_filter(EIGHTTAP_REGULAR)
                                : av1_broadcast_interp_filter(filter_ref);
-      av1_enc_build_inter_predictor(cm, xd, mi_row, mi_col, NULL, bsize,
-                                    AOM_PLANE_Y, AOM_PLANE_Y);
+      av1_enc_build_inter_predictor_y(xd, mi_row, mi_col);
       if (cpi->sf.rt_sf.use_modeled_non_rd_cost) {
         model_rd_for_sb_y(cpi, bsize, x, xd, &this_rdc.rate, &this_rdc.dist,
                           &this_rdc.skip, NULL, &var_y, &sse_y, 1);
diff --git a/av1/encoder/reconinter_enc.c b/av1/encoder/reconinter_enc.c
index b1e1645..8269d2d 100644
--- a/av1/encoder/reconinter_enc.c
+++ b/av1/encoder/reconinter_enc.c
@@ -197,6 +197,29 @@
   }
 }
 
+void av1_enc_build_inter_predictor_y(MACROBLOCKD *xd, int mi_row, int mi_col) {
+  const int mi_x = mi_col * MI_SIZE;
+  const int mi_y = mi_row * MI_SIZE;
+  struct macroblockd_plane *const pd = &xd->plane[AOM_PLANE_Y];
+  InterPredParams inter_pred_params;
+
+  struct buf_2d *const dst_buf = &pd->dst;
+  uint8_t *const dst = dst_buf->buf;
+  const MV mv = xd->mi[0]->mv[0].as_mv;
+  const struct scale_factors *const sf = xd->block_ref_scale_factors[0];
+
+  av1_init_inter_params(&inter_pred_params, pd->width, pd->height, mi_y, mi_x,
+                        pd->subsampling_x, pd->subsampling_y, xd->bd,
+                        is_cur_buf_hbd(xd), false, sf, pd->pre,
+                        xd->mi[0]->interp_filters);
+
+  inter_pred_params.conv_params = get_conv_params_no_round(
+      0, AOM_PLANE_Y, xd->tmp_conv_dst, MAX_SB_SIZE, false, xd->bd);
+
+  inter_pred_params.conv_params.use_dist_wtd_comp_avg = 0;
+  av1_build_inter_predictor(dst, dst_buf->stride, &mv, &inter_pred_params);
+}
+
 void av1_enc_build_inter_predictor(const AV1_COMMON *cm, MACROBLOCKD *xd,
                                    int mi_row, int mi_col,
                                    const BUFFER_SET *ctx, BLOCK_SIZE bsize,
diff --git a/av1/encoder/reconinter_enc.h b/av1/encoder/reconinter_enc.h
index 279d2ae..49bb893 100644
--- a/av1/encoder/reconinter_enc.h
+++ b/av1/encoder/reconinter_enc.h
@@ -29,6 +29,8 @@
                                    const BUFFER_SET *ctx, BLOCK_SIZE bsize,
                                    int plane_from, int plane_to);
 
+void av1_enc_build_inter_predictor_y(MACROBLOCKD *xd, int mi_row, int mi_col);
+
 void av1_build_inter_predictor(uint8_t *dst, int dst_stride, const MV *src_mv,
                                InterPredParams *inter_pred_params);