Reuse single inter predictors in wedge index search

For derived motion vector modes, prepare and reuse the single inter
predictors in the wedge index search. There is a slight stats change
due to the rounding errors in building the compound wedge prediction.
The encoding speed is improved by 2-3% in low bit-rate range.

STATS_CHANGED

Change-Id: Ia14cc3450c503691516c493e708cc648b0312787
diff --git a/av1/encoder/compound_type.c b/av1/encoder/compound_type.c
index 4a188ad..5bbe0c4 100644
--- a/av1/encoder/compound_type.c
+++ b/av1/encoder/compound_type.c
@@ -1355,6 +1355,14 @@
       const int wedge_mask_size = get_wedge_types_lookup(bsize);
       int need_mask_search = args->wedge_index == -1;
 
+      if (need_mask_search && !have_newmv_in_inter_mode(this_mode)) {
+        // short cut repeated single reference block build
+        av1_build_inter_predictors_for_planes_single_buf(xd, bsize, 0, 0, 0,
+                                                         preds0, strides);
+        av1_build_inter_predictors_for_planes_single_buf(xd, bsize, 0, 0, 1,
+                                                         preds1, strides);
+      }
+
       for (int wedge_mask = 0; wedge_mask < wedge_mask_size && need_mask_search;
            ++wedge_mask) {
         for (int wedge_sign = 0; wedge_sign < 2; ++wedge_sign) {
@@ -1370,10 +1378,13 @@
           if (have_newmv_in_inter_mode(this_mode)) {
             tmp_rate_mv = av1_interinter_compound_motion_search(
                 cpi, x, cur_mv, bsize, this_mode);
+            av1_enc_build_inter_predictor(cm, xd, mi_row, mi_col, orig_dst,
+                                          bsize, AOM_PLANE_Y, AOM_PLANE_Y);
+          } else {
+            av1_build_wedge_inter_predictor_from_buf(xd, bsize, 0, 0, preds0,
+                                                     strides, preds1, strides);
           }
 
-          av1_enc_build_inter_predictor(cm, xd, mi_row, mi_col, orig_dst, bsize,
-                                        AOM_PLANE_Y, AOM_PLANE_Y);
           RD_STATS est_rd_stats;
           int64_t this_rd_cur =
               estimate_yrd_for_sb(cpi, bsize, x, best_rd_cur, &est_rd_stats);