diff --git a/NEWS b/NEWS index c2c9817ee..7e2ea95f8 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ ver 0.15.9 (2009/??/??) * decoders: - mad: fix crash when seeking at end of song - mpcdec: fix negative shift on fixed-point samples + - mpcdec: fix replay gain formula with v8 * playlist: fix single+repeat in random mode * player: postpone song tags during cross-fade 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 #else #include +#include #endif #include @@ -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,