Make convolve_round work with warped_motion

Warped_motion doesn't go through inter_predictor() function to
generate prediction where convolve_round is activated.
Therefore, we could avoid doing post rounding when the
warped_motion mode is on.

We use do_post_rounding to indicate whether post rounding is
needed
Change-Id: Ib17a0c0d4e6e5232e9682afa8cfdb9576f5cf4c0
diff --git a/av1/common/convolve.h b/av1/common/convolve.h
index 15a3087..48b476e 100644
--- a/av1/common/convolve.h
+++ b/av1/common/convolve.h
@@ -33,6 +33,7 @@
   int round_0;
   int round_1;
   int plane;
+  int do_post_rounding;
 } ConvolveParams;
 
 static INLINE ConvolveParams get_conv_params(int ref, int plane) {
@@ -40,6 +41,7 @@
   conv_params.ref = ref;
   conv_params.round = CONVOLVE_OPT_ROUND;
   conv_params.plane = plane;
+  conv_params.do_post_rounding = 0;
   return conv_params;
 }
 struct AV1Common;
@@ -73,6 +75,7 @@
   conv_params.dst = dst;
   conv_params.dst_stride = dst_stride;
   conv_params.plane = plane;
+  conv_params.do_post_rounding = 0;
   return conv_params;
 }
 
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c
index 8bb4a9b..8975b17 100644
--- a/av1/common/reconinter.c
+++ b/av1/common/reconinter.c
@@ -1151,19 +1151,21 @@
     }
 
 #if CONFIG_CONVOLVE_ROUND
-// TODO(angiebird): This part needs optimization
+    // TODO(angiebird): This part needs optimization
+    if (conv_params.do_post_rounding) {
 #if CONFIG_HIGHBITDEPTH
-    if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH)
-      av1_highbd_convolve_rounding(tmp_dst, MAX_SB_SIZE, dst, dst_buf->stride,
-                                   w, h, FILTER_BITS * 2 + is_compound -
-                                             conv_params.round_0 -
-                                             conv_params.round_1,
-                                   xd->bd);
-    else
+      if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH)
+        av1_highbd_convolve_rounding(tmp_dst, MAX_SB_SIZE, dst, dst_buf->stride,
+                                     w, h, FILTER_BITS * 2 + is_compound -
+                                               conv_params.round_0 -
+                                               conv_params.round_1,
+                                     xd->bd);
+      else
 #endif  // CONFIG_HIGHBITDEPTH
-      av1_convolve_rounding(tmp_dst, MAX_SB_SIZE, dst, dst_buf->stride, w, h,
-                            FILTER_BITS * 2 + is_compound -
-                                conv_params.round_0 - conv_params.round_1);
+        av1_convolve_rounding(tmp_dst, MAX_SB_SIZE, dst, dst_buf->stride, w, h,
+                              FILTER_BITS * 2 + is_compound -
+                                  conv_params.round_0 - conv_params.round_1);
+    }
 #endif  // CONFIG_CONVOLVE_ROUND
   }
 }
diff --git a/av1/common/reconinter.h b/av1/common/reconinter.h
index 1a6c7b8..8dcea88 100644
--- a/av1/common/reconinter.h
+++ b/av1/common/reconinter.h
@@ -72,6 +72,7 @@
                            &interp_filter,
 #endif  // CONFIG_DUAL_FILTER
                            subpel_x, xs, subpel_y, ys, conv_params);
+    conv_params->do_post_rounding = 1;
 #else
     assert(0);
 #endif  // CONFIG_CONVOLVE_ROUND
@@ -136,6 +137,7 @@
                                   &interp_filter,
 #endif  // CONFIG_DUAL_FILTER
                                   subpel_x, xs, subpel_y, ys, conv_params, bd);
+    conv_params->do_post_rounding = 1;
 #else
     assert(0);
 #endif  // CONFIG_CONVOLVE_ROUND