From 5eb5c4d9c63763348ade828d187c723ee44f8228 Mon Sep 17 00:00:00 2001 From: waker Date: Sat, 16 Apr 2011 13:38:12 +0200 Subject: replaygain: added fallback mode that will use album gain, if track gain was not set, and vice-versa --- playlist.c | 2 +- replaygain.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/playlist.c b/playlist.c index 5b1443a1..22c3a3bf 100644 --- a/playlist.c +++ b/playlist.c @@ -2612,7 +2612,7 @@ pl_get_item_replaygain (playItem_t *it, int idx) { switch (idx) { case DDB_REPLAYGAIN_ALBUMGAIN: case DDB_REPLAYGAIN_TRACKGAIN: - return pl_find_meta_float (it, rg_keys[idx], 0); + return pl_find_meta_float (it, rg_keys[idx], 1000); case DDB_REPLAYGAIN_ALBUMPEAK: case DDB_REPLAYGAIN_TRACKPEAK: return pl_find_meta_float (it, rg_keys[idx], 1); diff --git a/replaygain.c b/replaygain.c index 50f88535..18e07264 100644 --- a/replaygain.c +++ b/replaygain.c @@ -63,6 +63,17 @@ replaygain_set (int mode, int scale, float preamp) { void replaygain_set_values (float albumgain, float albumpeak, float trackgain, float trackpeak) { + if (albumgain > 100 && trackgain <= 100) { + albumgain = trackgain; + albumpeak = trackpeak; + } + else if (albumgain <= 100 && trackgain > 100) { + trackgain = albumgain; + trackpeak = albumpeak; + } + else if (albumgain > 100 && trackgain > 100) { + trackgain = albumgain = 0; + } rg_albumgain = db_to_amp (albumgain); rg_trackgain = db_to_amp (trackgain); rg_albumgain_preamp = rg_albumgain * conf_replaygain_preamp; -- cgit v1.2.3