aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-01-05 02:07:44 +0100
committerMax Kellermann <max@duempel.org>2013-01-05 02:40:32 +0100
commit7be33eba489825d3a36f3ccbb3571002fcc06c0b (patch)
tree01a50982ccc4e6078a2213c763a3f137d36bc62c
parent46ed91b53d4ee6df3f9b98bcfb4e36a97420b885 (diff)
downloadmpd-7be33eba489825d3a36f3ccbb3571002fcc06c0b.tar.gz
mpd-7be33eba489825d3a36f3ccbb3571002fcc06c0b.tar.xz
mpd-7be33eba489825d3a36f3ccbb3571002fcc06c0b.zip
DecoderAPI: don't use replay_gain_get_real_mode()
replay_gain_get_real_mode() accesses dangerous globals. Let's just use the global variable replay_gain_mode, and assume "AUTO" means "TRACK". At this point, this is the best we can do, because neither the decoder nor the player should know about the current replay gain mode. This is applied as a filter in the output thread.
Diffstat (limited to '')
-rw-r--r--src/DecoderAPI.cxx6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/DecoderAPI.cxx b/src/DecoderAPI.cxx
index c703faa6c..6e0460a8c 100644
--- a/src/DecoderAPI.cxx
+++ b/src/DecoderAPI.cxx
@@ -531,9 +531,13 @@ decoder_replay_gain(struct decoder *decoder,
serial = 1;
if (REPLAY_GAIN_OFF != replay_gain_mode) {
+ enum replay_gain_mode rgm = replay_gain_mode;
+ if (rgm != REPLAY_GAIN_ALBUM)
+ rgm = REPLAY_GAIN_TRACK;
+
decoder->dc->replay_gain_db = 20.0 * log10f(
replay_gain_tuple_scale(
- &replay_gain_info->tuples[replay_gain_get_real_mode()],
+ &replay_gain_info->tuples[rgm],
replay_gain_preamp, replay_gain_missing_preamp,
replay_gain_limit));
}