aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder_api.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2010-01-03 22:44:23 +0100
committerMax Kellermann <max@duempel.org>2010-01-04 20:42:49 +0100
commitcd8f92c9285e9b3b460ff47d2f251bfabce544da (patch)
tree594de0f646b0fc69405132c3a9e2f05060399abf /src/decoder_api.c
parente58b4f773f28ad7b8e26c14c9c853fc2798408a1 (diff)
downloadmpd-cd8f92c9285e9b3b460ff47d2f251bfabce544da.tar.gz
mpd-cd8f92c9285e9b3b460ff47d2f251bfabce544da.tar.xz
mpd-cd8f92c9285e9b3b460ff47d2f251bfabce544da.zip
decoder_api: added function decoder_replay_gain()
This function replaces the replay_gain_info parameter for decoder_data(). This allows the decoder to announce replay gain changes, instead of having to pass the same object over and over.
Diffstat (limited to 'src/decoder_api.c')
-rw-r--r--src/decoder_api.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/decoder_api.c b/src/decoder_api.c
index 3ef24ee97..5106b564f 100644
--- a/src/decoder_api.c
+++ b/src/decoder_api.c
@@ -266,8 +266,7 @@ enum decoder_command
decoder_data(struct decoder *decoder,
struct input_stream *is,
const void *_data, size_t length,
- uint16_t kbit_rate,
- struct replay_gain_info *replay_gain_info)
+ uint16_t kbit_rate)
{
struct decoder_control *dc = decoder->dc;
const char *data = _data;
@@ -354,7 +353,8 @@ decoder_data(struct decoder *decoder,
/* apply replay gain or normalization */
if (replay_gain_mode != REPLAY_GAIN_OFF)
- replay_gain_apply(replay_gain_info, dest, nbytes,
+ replay_gain_apply(decoder->replay_gain,
+ dest, nbytes,
&dc->out_audio_format);
/* expand the music pipe chunk */
@@ -418,3 +418,17 @@ decoder_tag(G_GNUC_UNUSED struct decoder *decoder, struct input_stream *is,
return cmd;
}
+
+void
+decoder_replay_gain(struct decoder *decoder,
+ const struct replay_gain_info *replay_gain_info)
+{
+ assert(decoder != NULL);
+
+ if (decoder->replay_gain != NULL)
+ replay_gain_info_free(decoder->replay_gain);
+
+ decoder->replay_gain = replay_gain_info != NULL
+ ? replay_gain_info_dup(replay_gain_info)
+ : NULL;
+}