From af66f666c65cfdca3cf717a923a0e440bb75afe2 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 1 Mar 2009 10:53:46 +0100 Subject: audiofile: added 24 bit support Don't hard code the "bits" parameter to 16. Try to use the input's sample format, if possible. --- NEWS | 1 + src/decoder/audiofile_plugin.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 153cbd837..aa74e95dc 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,7 @@ ver 0.15 - (200?/??/??) - parse RVA2 tags in mp3 files * decoders: - audiofile: streaming support added + - audiofile: added 24 bit support - modplug: another MOD plugin, based on libmodplug - mikmod disabled by default, due to severe security issues in libmikmod - sidplay: new decoder plugin for C64 SID (using libsidplay2) 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 = -- cgit v1.2.3