Merge tag 'v0.23.8'

release v0.23.8
This commit is contained in:
Max Kellermann
2022-07-09 01:08:16 +02:00
21 changed files with 317 additions and 180 deletions

View File

@@ -257,6 +257,12 @@ public:
return HasFailed();
}
[[gnu::pure]]
bool LockIsReplayGainEnabled() const noexcept {
const std::scoped_lock<Mutex> protect(mutex);
return replay_gain_mode != ReplayGainMode::OFF;
}
/**
* Transition this obejct from DecoderState::START to
* DecoderState::DECODE.

View File

@@ -36,6 +36,7 @@
#include "util/RuntimeError.hxx"
#include "util/Domain.hxx"
#include "util/ScopeExit.hxx"
#include "util/StringCompare.hxx"
#include "thread/Name.hxx"
#include "tag/ApeReplayGain.hxx"
#include "Log.hxx"
@@ -261,12 +262,16 @@ LoadReplayGain(DecoderClient &client, InputStream &is)
static void
MaybeLoadReplayGain(DecoderBridge &bridge, InputStream &is)
{
{
const std::scoped_lock<Mutex> protect(bridge.dc.mutex);
if (bridge.dc.replay_gain_mode == ReplayGainMode::OFF)
/* ReplayGain is disabled */
return;
}
if (!bridge.dc.LockIsReplayGainEnabled())
/* ReplayGain is disabled */
return;
if (is.HasMimeType() &&
StringStartsWith(is.GetMimeType(), "audio/x-mpd-"))
/* skip for (virtual) files (e.g. from the
cdio_paranoia input plugin) which cannot possibly
contain tags */
return;
LoadReplayGain(bridge, is);
}