aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAleksei Kaveshnikov <4nykey@gmail.com>2010-03-12 18:04:46 +0100
committerMax Kellermann <max@duempel.org>2010-03-19 10:26:08 +0100
commit73ba4ea3da0a066f6241e661ca145f3aa0d64d09 (patch)
treeafc7dd61c6cf39c5b7ed975c3d5447d15efd9ad7 /src
parentcbfaa4a2662c55d7ad6339d70b3665d066bf491a (diff)
downloadmpd-73ba4ea3da0a066f6241e661ca145f3aa0d64d09.tar.gz
mpd-73ba4ea3da0a066f6241e661ca145f3aa0d64d09.tar.xz
mpd-73ba4ea3da0a066f6241e661ca145f3aa0d64d09.zip
decoder/mpcdec: fix replay gain formula with v8
"When playing musepack files with mpd v0.15.8, rg seems to have no effect. Using sample file below, mpd says 'computing ReplayGain album scale with gain 122.879997, peak 0.549150'. One thing though, if I build mpd against old libmpcdec-1.2.6, rg works as expected: 'computing ReplayGain album scale with gain 16.820000, peak 0.099765'"
Diffstat (limited to 'src')
-rw-r--r--src/decoder/mpcdec_plugin.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/decoder/mpcdec_plugin.c b/src/decoder/mpcdec_plugin.c
index b3582c689..72a516f22 100644
--- a/src/decoder/mpcdec_plugin.c
+++ b/src/decoder/mpcdec_plugin.c
@@ -24,6 +24,7 @@
#include <mpcdec/mpcdec.h>
#else
#include <mpc/mpcdec.h>
+#include <math.h>
#endif
#include <glib.h>
@@ -209,10 +210,17 @@ mpcdec_decode(struct decoder *mpd_decoder, struct input_stream *is)
}
replay_gain_info = replay_gain_info_new();
+#ifdef MPC_IS_OLD_API
replay_gain_info->tuples[REPLAY_GAIN_ALBUM].gain = info.gain_album * 0.01;
replay_gain_info->tuples[REPLAY_GAIN_ALBUM].peak = info.peak_album / 32767.0;
replay_gain_info->tuples[REPLAY_GAIN_TRACK].gain = info.gain_title * 0.01;
replay_gain_info->tuples[REPLAY_GAIN_TRACK].peak = info.peak_title / 32767.0;
+#else
+ replay_gain_info->tuples[REPLAY_GAIN_ALBUM].gain = MPC_OLD_GAIN_REF - (info.gain_album / 256.);
+ replay_gain_info->tuples[REPLAY_GAIN_ALBUM].peak = pow(10, info.peak_album / 256. / 20) / 32767;
+ replay_gain_info->tuples[REPLAY_GAIN_TRACK].gain = MPC_OLD_GAIN_REF - (info.gain_title / 256.);
+ replay_gain_info->tuples[REPLAY_GAIN_TRACK].peak = pow(10, info.peak_title / 256. / 20) / 32767;
+#endif
decoder_initialized(mpd_decoder, &audio_format,
is->seekable,