X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=mood.c;h=2cb7bc699f3688985565142af40762a73ea82311;hb=f24778705c853647f48b89c8d27ba1ded27a6f29;hp=e60ef2fd6fc97cac81d65e32431749dab3c935eb;hpb=5e9ded6843a720a4d234ba63143d14e05f4746b4;p=paraslash.git diff --git a/mood.c b/mood.c index e60ef2fd..2cb7bc69 100644 --- a/mood.c +++ b/mood.c @@ -462,25 +462,12 @@ 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_num_played_score(struct afs_info *afsi) +static long compute_dynamic_score(struct afs_info *afsi) { return -normalized_value(afsi->num_played, statistics.num, - statistics.num_played_sum, statistics.num_played_qd); -} - -static long compute_last_played_score(struct afs_info *afsi) -{ - return -normalized_value(afsi->last_played, statistics.num, - statistics.last_played_sum, statistics.last_played_qd); -} - -static long compute_dynamic_score(const struct osl_row *aft_row) -{ - struct afs_info afsi; - - if (get_afsi_of_row(aft_row, &afsi) < 0) - return -100; - return compute_num_played_score(&afsi) + compute_last_played_score(&afsi); + statistics.num_played_sum, statistics.num_played_qd) + - normalized_value(afsi->last_played, statistics.num, + statistics.last_played_sum, statistics.last_played_qd); } static int add_afs_statistics(const struct osl_row *row) @@ -672,7 +659,13 @@ static int update_afs_statistics(struct afs_info *old_afsi, struct afs_info *new static int add_to_score_table(const struct osl_row *aft_row, long mood_score) { - long score = (compute_dynamic_score(aft_row) + mood_score) / 3; + long score; + struct afs_info afsi; + int ret = get_afsi_of_row(aft_row, &afsi); + + if (ret < 0) + return ret; + score = (compute_dynamic_score(&afsi) + mood_score) / 3; return score_add(aft_row, score); } @@ -753,8 +746,7 @@ static int mood_update_audio_file(const struct osl_row *aft_row, if (ret < 0) return ret; } - score += compute_num_played_score(&afsi); - score += compute_last_played_score(&afsi); + score += compute_dynamic_score(&afsi); score /= 3; PARA_DEBUG_LOG("score: %li\n", score); percent = (score + 100) / 3;