diff options
author | Max Kellermann <max@duempel.org> | 2008-11-11 16:24:27 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-11-11 16:24:27 +0100 |
commit | 5ddde0aac790c57b75f20ce71e100f4379f1c653 (patch) | |
tree | b2e8ec4a99e032bf894002fd436c00e35e3cf5fd /src/replay_gain.c | |
parent | 5e686add91a7c2a89b886d04136983480793a26f (diff) | |
download | mpd-5ddde0aac790c57b75f20ce71e100f4379f1c653.tar.gz mpd-5ddde0aac790c57b75f20ce71e100f4379f1c653.tar.xz mpd-5ddde0aac790c57b75f20ce71e100f4379f1c653.zip |
replay_gain: converted struct replay_gain_info elements to an array
Having an array instead of individual variables allows the use of the
replay_gain_mode enum as an array index.
Diffstat (limited to 'src/replay_gain.c')
-rw-r--r-- | src/replay_gain.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/src/replay_gain.c b/src/replay_gain.c index 4f589c233..ebd8e40ca 100644 --- a/src/replay_gain.c +++ b/src/replay_gain.c @@ -25,6 +25,13 @@ #include "audio_format.h" #include "os_compat.h" +#include <glib.h> + +static const char *const replay_gain_mode_names[] = { + [REPLAY_GAIN_ALBUM] = "album", + [REPLAY_GAIN_TRACK] = "track", +}; + enum replay_gain_mode replay_gain_mode = REPLAY_GAIN_OFF; static float replay_gain_preamp = 1.0; @@ -86,11 +93,10 @@ struct replay_gain_info *replay_gain_info_new(void) { struct replay_gain_info *ret = xmalloc(sizeof(*ret)); - ret->album_gain = 0.0; - ret->album_peak = 0.0; - - ret->track_gain = 0.0; - ret->track_peak = 0.0; + for (unsigned i = 0; i < G_N_ELEMENTS(ret->tuples); ++i) { + ret->tuples[i].gain = 0.0; + ret->tuples[i].peak = 0.0; + } /* set to -1 so that we know in replay_gain_apply to compute the scale */ ret->scale = -1.0; @@ -116,20 +122,14 @@ replay_gain_apply(struct replay_gain_info *info, char *buffer, int size, return; if (info->scale < 0) { - switch (replay_gain_mode) { - case REPLAY_GAIN_TRACK: - DEBUG("computing ReplayGain track scale with gain %f, " - "peak %f\n", info->track_gain, info->track_peak); - info->scale = calc_replay_gain_scale(info->track_gain, - info->track_peak); - break; - default: - DEBUG("computing ReplayGain album scale with gain %f, " - "peak %f\n", info->album_gain, info->album_peak); - info->scale = calc_replay_gain_scale(info->album_gain, - info->album_peak); - break; - } + const struct replay_gain_tuple *tuple = + &info->tuples[replay_gain_mode]; + + DEBUG("computing ReplayGain %s scale with gain %f, peak %f\n", + replay_gain_mode_names[replay_gain_mode], + tuple->gain, tuple->peak); + + info->scale = calc_replay_gain_scale(tuple->gain, tuple->peak); } if (info->scale <= 1.01 && info->scale >= 0.99) |