diff options
author | Max Kellermann <max@duempel.org> | 2009-03-01 10:53:46 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-03-01 10:53:46 +0100 |
commit | af66f666c65cfdca3cf717a923a0e440bb75afe2 (patch) | |
tree | aff07318a65dff2296ffe3a0ded03863ec7972cd /src/decoder | |
parent | 614fe8b341a68aa06d1d5259475147a0afde163f (diff) | |
download | mpd-af66f666c65cfdca3cf717a923a0e440bb75afe2.tar.gz mpd-af66f666c65cfdca3cf717a923a0e440bb75afe2.tar.xz mpd-af66f666c65cfdca3cf717a923a0e440bb75afe2.zip |
audiofile: added 24 bit support
Don't hard code the "bits" parameter to 16. Try to use the input's
sample format, if possible.
Diffstat (limited to 'src/decoder')
-rw-r--r-- | src/decoder/audiofile_plugin.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/decoder/audiofile_plugin.c b/src/decoder/audiofile_plugin.c index bc517d49c..e1e848c05 100644 --- a/src/decoder/audiofile_plugin.c +++ b/src/decoder/audiofile_plugin.c @@ -127,8 +127,15 @@ audiofile_stream_decode(struct decoder *decoder, struct input_stream *is) return; } + afGetSampleFormat(af_fp, AF_DEFAULT_TRACK, &fs, &bits); + if (!audio_valid_sample_format(bits)) { + g_debug("input file has %d bit samples, converting to 16", + bits); + bits = 16; + } + afSetVirtualSampleFormat(af_fp, AF_DEFAULT_TRACK, - AF_SAMPFMT_TWOSCOMP, 16); + AF_SAMPFMT_TWOSCOMP, bits); afGetVirtualSampleFormat(af_fp, AF_DEFAULT_TRACK, &fs, &bits); audio_format.bits = (uint8_t)bits; audio_format.sample_rate = |