diff options
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | src/decoder/plugins/MpcdecDecoderPlugin.cxx | 11 |
2 files changed, 9 insertions, 3 deletions
@@ -1,6 +1,7 @@ ver 0.21.15 (not yet released) * decoder - dsdiff, dsf: fix displayed bit rate + - mpcdec: fix bogus ReplayGain values * output - solaris: fix build with glibc 2.30 diff --git a/src/decoder/plugins/MpcdecDecoderPlugin.cxx b/src/decoder/plugins/MpcdecDecoderPlugin.cxx index f7f0870fd..68ecc115d 100644 --- a/src/decoder/plugins/MpcdecDecoderPlugin.cxx +++ b/src/decoder/plugins/MpcdecDecoderPlugin.cxx @@ -141,8 +141,12 @@ static constexpr ReplayGainTuple ImportMpcdecReplayGain(mpc_uint16_t gain, mpc_uint16_t peak) noexcept { auto t = ReplayGainTuple::Undefined(); - t.gain = MPC_OLD_GAIN_REF - (gain / 256.); - t.peak = pow(10, peak / 256. / 20) / 32767; + + if (gain != 0 && peak != 0) { + t.gain = MPC_OLD_GAIN_REF - (gain / 256.); + t.peak = pow(10, peak / 256. / 20) / 32767; + } + return t; } @@ -187,7 +191,8 @@ mpcdec_decode(DecoderClient &client, InputStream &is) { const auto rgi = ImportMpcdecReplayGain(info); - client.SubmitReplayGain(&rgi); + if (rgi.IsDefined()) + client.SubmitReplayGain(&rgi); } client.Ready(audio_format, is.IsSeekable(), |