aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/decoder_api.c23
-rw-r--r--src/decoder_control.h8
2 files changed, 20 insertions, 11 deletions
diff --git a/src/decoder_api.c b/src/decoder_api.c
index 715a46c8d..73b5d23f6 100644
--- a/src/decoder_api.c
+++ b/src/decoder_api.c
@@ -39,8 +39,8 @@ void decoder_initialized(struct decoder * decoder,
pcm_convert_init(&decoder->conv_state);
- dc.audioFormat = *audio_format;
- getOutputAudioFormat(audio_format, &ob.audioFormat);
+ dc.in_audio_format = *audio_format;
+ getOutputAudioFormat(audio_format, &dc.out_audio_format);
dc.totalTime = total_time;
@@ -157,12 +157,12 @@ decoder_data(struct decoder *decoder,
static char *convBuffer;
static size_t convBufferLen;
- if (audio_format_equals(&ob.audioFormat, &dc.audioFormat)) {
+ if (audio_format_equals(&dc.in_audio_format, &dc.out_audio_format)) {
data = dataIn;
datalen = dataInLen;
} else {
- datalen = pcm_convert_size(&(dc.audioFormat), dataInLen,
- &(ob.audioFormat));
+ datalen = pcm_convert_size(&dc.in_audio_format, dataInLen,
+ &dc.out_audio_format);
if (datalen > convBufferLen) {
if (convBuffer != NULL)
free(convBuffer);
@@ -170,18 +170,21 @@ decoder_data(struct decoder *decoder,
convBufferLen = datalen;
}
data = convBuffer;
- datalen = pcm_convert(&(dc.audioFormat), dataIn,
- dataInLen, &(ob.audioFormat),
+ datalen = pcm_convert(&dc.in_audio_format, dataIn,
+ dataInLen, &dc.out_audio_format,
data, &decoder->conv_state);
}
if (replayGainInfo != NULL && (replayGainState != REPLAYGAIN_OFF))
- doReplayGain(replayGainInfo, data, datalen, &ob.audioFormat);
+ doReplayGain(replayGainInfo, data, datalen,
+ &dc.out_audio_format);
else if (normalizationEnabled)
- normalizeData(data, datalen, &ob.audioFormat);
+ normalizeData(data, datalen, &dc.out_audio_format);
while (datalen > 0) {
- nbytes = music_pipe_append(data, datalen, data_time, bitRate);
+ nbytes = music_pipe_append(data, datalen,
+ &dc.out_audio_format,
+ data_time, bitRate);
datalen -= nbytes;
data += nbytes;
diff --git a/src/decoder_control.h b/src/decoder_control.h
index bfee8a259..5f7bbf546 100644
--- a/src/decoder_control.h
+++ b/src/decoder_control.h
@@ -47,7 +47,13 @@ struct decoder_control {
bool seekError;
bool seekable;
volatile double seekWhere;
- struct audio_format audioFormat;
+
+ /** the format of the song file */
+ struct audio_format in_audio_format;
+
+ /** the format being sent to the music pipe */
+ struct audio_format out_audio_format;
+
struct song *current_song;
struct song *volatile next_song;
volatile float totalTime;