Add unit test for av1_delta_rate_cost()

BUG=aomedia:3018

Change-Id: I26158ca4750ad974b27ebaecc1ccc6e5bd8c2649
diff --git a/av1/encoder/tpl_model.c b/av1/encoder/tpl_model.c
index 00dfd2f..38b0a90 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -912,8 +912,8 @@
   return (mi_row >> right_shift) * stride + (mi_col >> right_shift);
 }
 
-static int64_t delta_rate_cost(int64_t delta_rate, int64_t recrf_dist,
-                               int64_t srcrf_dist, int pix_num) {
+int64_t av1_delta_rate_cost(int64_t delta_rate, int64_t recrf_dist,
+                            int64_t srcrf_dist, int pix_num) {
   double beta = (double)srcrf_dist / recrf_dist;
   int64_t rate_cost = delta_rate;
 
@@ -990,8 +990,8 @@
                  tpl_stats_ptr->recrf_dist));
   int64_t delta_rate = tpl_stats_ptr->recrf_rate - srcrf_rate;
   int64_t mc_dep_rate =
-      delta_rate_cost(tpl_stats_ptr->mc_dep_rate, tpl_stats_ptr->recrf_dist,
-                      srcrf_dist, pix_num);
+      av1_delta_rate_cost(tpl_stats_ptr->mc_dep_rate, tpl_stats_ptr->recrf_dist,
+                          srcrf_dist, pix_num);
 
   for (block = 0; block < 4; ++block) {
     int grid_pos_row = grid_pos_row_base + bh * (block >> 1);
diff --git a/av1/encoder/tpl_model.h b/av1/encoder/tpl_model.h
index 44c712f..592e285 100644
--- a/av1/encoder/tpl_model.h
+++ b/av1/encoder/tpl_model.h
@@ -348,6 +348,10 @@
                                        const double *abs_coeff_mean,
                                        int *qcoeff_arr, int coeff_num);
 
+// TODO(angiebird): Add doxygen description here.
+int64_t av1_delta_rate_cost(int64_t delta_rate, int64_t recrf_dist,
+                            int64_t srcrf_dist, int pix_num);
+
 /*!\endcond */
 #ifdef __cplusplus
 }  // extern "C"
diff --git a/test/tpl_model_test.cc b/test/tpl_model_test.cc
index 72f5ebf..165690f 100644
--- a/test/tpl_model_test.cc
+++ b/test/tpl_model_test.cc
@@ -62,4 +62,15 @@
   EXPECT_NEAR(expected_rate, est_expected_rate, 0.001);
 }
 
+TEST(TplModelTest, DeltaRateCostZeroFlow) {
+  // When srcrf_dist equal to recrf_dist, av1_delta_rate_cost should return 0
+  int64_t srcrf_dist = 256;
+  int64_t recrf_dist = 256;
+  int64_t delta_rate = 512;
+  int pixel_num = 256;
+  int64_t rate_cost =
+      av1_delta_rate_cost(delta_rate, recrf_dist, srcrf_dist, pixel_num);
+  EXPECT_EQ(rate_cost, 0);
+}
+
 }  // namespace