A fix in online inter_mode_rd_model_estimation

Change-Id: Ieed39ef1adfcf7b50e641aea414eb217d2a7f782
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 2d4c78e..a4c18a1a 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -776,10 +776,17 @@
       const double est_ld = md->a * sse + md->b;
       // Clamp estimated rate cost by INT_MAX / 2.
       // TODO(angiebird@google.com): find better solution than clamping.
-      *est_residue_cost =
-          fabs(est_ld) < 1e-2
-              ? INT_MAX / 2
-              : (int)AOMMIN(round((sse - md->dist_mean) / est_ld), INT_MAX / 2);
+      if (fabs(est_ld) < 1e-2) {
+        *est_residue_cost = INT_MAX / 2;
+      } else {
+        double est_residue_cost_dbl = ((sse - md->dist_mean) / est_ld);
+        if (est_residue_cost_dbl < 0) {
+          *est_residue_cost = 0;
+        } else {
+          *est_residue_cost =
+              (int)AOMMIN((int64_t)round(est_residue_cost_dbl), INT_MAX / 2);
+        }
+      }
       if (*est_residue_cost <= 0) {
         *est_residue_cost = 0;
         *est_dist = sse;