aboutsummaryrefslogtreecommitdiff
path: root/src/DecoderAPI.cxx
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 /src/DecoderAPI.cxx
parent46ed91b53d4ee6df3f9b98bcfb4e36a97420b885 (diff)
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 'src/DecoderAPI.cxx')
-rw-r--r--src/DecoderAPI.cxx6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/DecoderAPI.cxx b/src/DecoderAPI.cxx
index c703faa6..6e0460a8 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));
}