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.
This commit is contained in:
Max Kellermann 2013-01-05 02:07:44 +01:00
parent 46ed91b53d
commit 7be33eba48
1 changed files with 5 additions and 1 deletions

View File

@ -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));
}