diff options
author | Max Kellermann <max@duempel.org> | 2013-01-05 02:07:44 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-01-05 02:40:32 +0100 |
commit | 7be33eba489825d3a36f3ccbb3571002fcc06c0b (patch) | |
tree | 01a50982ccc4e6078a2213c763a3f137d36bc62c /src | |
parent | 46ed91b53d4ee6df3f9b98bcfb4e36a97420b885 (diff) | |
download | mpd-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.cxx | 6 |
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)); } |