From 6bcd10bc4ada11a04bc2b7425afe5a8855592cd2 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Wed, 4 Sep 2013 20:14:12 +0000 Subject: [PATCH] mood: Deduplicate score formula. mood.c computes the score of an audio file from its subscores (mood, last_played, num_played) at two locations, both of which use the same formula (a + b + c) / 3. Get rid of this duplication by doing the calculation only once in compute_dynamic_score(). Rename this function to compute_score() as it now includes the (static) mood score as well. --- mood.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mood.c b/mood.c index 2cb7bc69..d15e011f 100644 --- a/mood.c +++ b/mood.c @@ -462,12 +462,13 @@ static int64_t normalized_value(int64_t x, int64_t n, int64_t sum, int64_t qd) return 100 * (n * x - sum) / (int64_t)int_sqrt(n * qd); } -static long compute_dynamic_score(struct afs_info *afsi) +static long compute_score(struct afs_info *afsi, long mood_score) { - return -normalized_value(afsi->num_played, statistics.num, - statistics.num_played_sum, statistics.num_played_qd) - - normalized_value(afsi->last_played, statistics.num, - statistics.last_played_sum, statistics.last_played_qd); + mood_score -= normalized_value(afsi->num_played, statistics.num, + statistics.num_played_sum, statistics.num_played_qd); + mood_score -= normalized_value(afsi->last_played, statistics.num, + statistics.last_played_sum, statistics.last_played_qd); + return mood_score / 3; } static int add_afs_statistics(const struct osl_row *row) @@ -665,7 +666,7 @@ static int add_to_score_table(const struct osl_row *aft_row, long mood_score) if (ret < 0) return ret; - score = (compute_dynamic_score(&afsi) + mood_score) / 3; + score = compute_score(&afsi, mood_score); return score_add(aft_row, score); } @@ -746,8 +747,7 @@ static int mood_update_audio_file(const struct osl_row *aft_row, if (ret < 0) return ret; } - score += compute_dynamic_score(&afsi); - score /= 3; + score = compute_score(&afsi, score); PARA_DEBUG_LOG("score: %li\n", score); percent = (score + 100) / 3; if (percent > 100) -- 2.39.5