summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2011-04-16 13:38:12 +0200
committerGravatar waker <wakeroid@gmail.com>2011-04-16 13:38:12 +0200
commit5eb5c4d9c63763348ade828d187c723ee44f8228 (patch)
tree321fdaceebb792a1f01cb78d767c26f326ae1c2f
parentceb2a249d758c1a38f62ca830f04ea33a3a0a5fd (diff)
replaygain: added fallback mode that will use album gain, if track gain was not set, and vice-versa
-rw-r--r--playlist.c2
-rw-r--r--replaygain.c11
2 files changed, 12 insertions, 1 deletions
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;