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