From 942a4df4d9b1c7683ec9f6d9e72ca9e6d0bae14a Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 7 Jan 2019 13:17:07 +0000 Subject: wavpack: fixed 12, 20-bit integer and 32-bit float formats support git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8604 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Input/wavpack/decoder_wavpack.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/plugins/Input/wavpack/decoder_wavpack.cpp') diff --git a/src/plugins/Input/wavpack/decoder_wavpack.cpp b/src/plugins/Input/wavpack/decoder_wavpack.cpp index 3b6da3de9..a9daaf20a 100644 --- a/src/plugins/Input/wavpack/decoder_wavpack.cpp +++ b/src/plugins/Input/wavpack/decoder_wavpack.cpp @@ -130,12 +130,22 @@ bool DecoderWavPack::initialize() case 8: configure(freq, chmap, Qmmp::PCM_S8); break; + case 12: case 16: configure(freq, chmap, Qmmp::PCM_S16LE); break; + case 20: case 24: case 32: +#ifdef MODE_FLOAT + configure(freq, chmap, (WavpackGetMode(m_context) & MODE_FLOAT) ? Qmmp::PCM_FLOAT : Qmmp::PCM_S32LE); +#else configure(freq, chmap, Qmmp::PCM_S32LE); +#endif + break; + default: + qWarning("DecoderWavPack: unsupported bit depth"); + return false; } if(!m_parser) m_totalTime = (qint64) WavpackGetNumSamples(m_context) * 1000 / freq; @@ -244,10 +254,12 @@ qint64 DecoderWavPack::wavpack_decode(unsigned char *data, qint64 size) for (i = 0; i < len * m_chan; ++i) data8[i] = m_output_buf[i]; return len * m_chan; + case 12: case 16: for (i = 0; i < len * m_chan; ++i) data16[i] = m_output_buf[i]; return len * m_chan * 2; + case 20: case 24: for (i = 0; i < len * m_chan; ++i) data32[i] = m_output_buf[i] << 8; -- cgit v1.2.3-13-gbd6f