diff options
author | Max Kellermann <max@duempel.org> | 2010-01-03 22:44:23 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2010-01-04 20:42:49 +0100 |
commit | cd8f92c9285e9b3b460ff47d2f251bfabce544da (patch) | |
tree | 594de0f646b0fc69405132c3a9e2f05060399abf /src/decoder_api.c | |
parent | e58b4f773f28ad7b8e26c14c9c853fc2798408a1 (diff) | |
download | mpd-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.c | 20 |
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; +} |