summaryrefslogtreecommitdiff
path: root/vp9/encoder
diff options
context:
space:
mode:
authorAngie Chiang <angiebird@google.com>2019-06-20 17:14:15 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-06-20 17:14:15 +0000
commitcbf0b1688a95508db4e468506065538af1a73801 (patch)
treec8e955d6f09acb19c503be92dc6f9602cfc270dd /vp9/encoder
parent087f131851d452d71b617e33135cc8379796735b (diff)
parent9f8ee48611a9f7bc708d6698b388996d5c6e4fe3 (diff)
downloadlibvpx-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.c10
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;