diff options
author | Angie Chiang <angiebird@google.com> | 2019-06-20 17:14:15 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-06-20 17:14:15 +0000 |
commit | cbf0b1688a95508db4e468506065538af1a73801 (patch) | |
tree | c8e955d6f09acb19c503be92dc6f9602cfc270dd /vp9/encoder | |
parent | 087f131851d452d71b617e33135cc8379796735b (diff) | |
parent | 9f8ee48611a9f7bc708d6698b388996d5c6e4fe3 (diff) | |
download | libvpx-cbf0b1688a95508db4e468506065538af1a73801.tar libvpx-cbf0b1688a95508db4e468506065538af1a73801.tar.gz libvpx-cbf0b1688a95508db4e468506065538af1a73801.tar.bz2 libvpx-cbf0b1688a95508db4e468506065538af1a73801.zip |
Merge "Change log2_fast to log2_approximation"
Diffstat (limited to 'vp9/encoder')
-rw-r--r-- | vp9/encoder/vp9_mcomp.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/vp9/encoder/vp9_mcomp.c b/vp9/encoder/vp9_mcomp.c index 2d4b81d72..572eb3f88 100644 --- a/vp9/encoder/vp9_mcomp.c +++ b/vp9/encoder/vp9_mcomp.c @@ -1884,12 +1884,15 @@ static const double log2_table[LOG2_TABLE_SIZE] = { 9.998590, }; -static double log2_fast(int v) { +static double log2_approximation(int v) { assert(v > 0); if (v < LOG2_TABLE_SIZE) { return log2_table[v]; } else { - return log2(v); + // use linear approximation when v >= 2^10 + const double slope = 0.001409; // slope = 1 / (log(2) * 1024) + assert(LOG2_TABLE_SIZE == 1 << 10); + return slope * (v - LOG2_TABLE_SIZE) + 10; } } double vp9_nb_mvs_inconsistency(const MV *mv, const int_mv *nb_mvs, @@ -1903,7 +1906,8 @@ double vp9_nb_mvs_inconsistency(const MV *mv, const int_mv *nb_mvs, MV nb_mv = nb_mvs[i].as_mv; const int row_diff = abs(mv->row - nb_mv.row); const int col_diff = abs(mv->col - nb_mv.col); - double cost = log2_fast(1 + row_diff * row_diff + col_diff * col_diff); + double cost = + log2_approximation(1 + row_diff * row_diff + col_diff * col_diff); if (update == 0) { best_cost = cost; update = 1; |