aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/wavpack/decoder_wavpack.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-01-16 15:33:17 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-01-16 15:33:17 +0000
commit435f1da1de18bafe57e43e47fd8a6fc69fd8bab7 (patch)
treee332293971b3b3883685b79c62bcd50bf2f49c12 /src/plugins/Input/wavpack/decoder_wavpack.cpp
parent2fa169a585994ceb40db55405f46783d06820947 (diff)
downloadqmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.tar.gz
qmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.tar.bz2
qmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.zip
updated audio engine
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1503 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/wavpack/decoder_wavpack.cpp')
-rw-r--r--src/plugins/Input/wavpack/decoder_wavpack.cpp25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/plugins/Input/wavpack/decoder_wavpack.cpp b/src/plugins/Input/wavpack/decoder_wavpack.cpp
index 9c99c7992..d9ea2b62d 100644
--- a/src/plugins/Input/wavpack/decoder_wavpack.cpp
+++ b/src/plugins/Input/wavpack/decoder_wavpack.cpp
@@ -106,8 +106,21 @@ bool DecoderWavPack::initialize()
m_freq = WavpackGetSampleRate (m_context);
int bps = WavpackGetBitsPerSample (m_context);
if (!m_output_buf)
- m_output_buf = new int32_t[Qmmp::globalBufferSize()/4];
- configure(m_freq, m_chan, bps);
+ m_output_buf = new int32_t[QMMP_BUFFER_SIZE/4];
+ switch(bps)
+ {
+ case 8:
+ configure(m_freq, m_chan, Qmmp::PCM_S8);
+ break;
+ case 16:
+ configure(m_freq, m_chan, Qmmp::PCM_S16LE);
+ break;
+ case 24:
+ configure(m_freq, m_chan, Qmmp::PCM_S24LE);
+ break;
+ case 32:
+ configure(m_freq, m_chan, Qmmp::PCM_S32LE);
+ }
if(!m_parser)
m_totalTime = (qint64) WavpackGetNumSamples(m_context) * 1000 / m_freq;
else
@@ -116,11 +129,11 @@ bool DecoderWavPack::initialize()
m_offset = m_parser->offset(m_track);
length_in_bytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * m_length/8000;
+ audioParameters().sampleSize() * m_length/1000;
seek(0);
}
m_totalBytes = 0;
- m_sz = audioParameters().bits() * audioParameters().channels()/8;
+ m_sz = audioParameters().sampleSize() * audioParameters().channels();
qDebug("DecoderWavPack: initialize succes");
return TRUE;
}
@@ -158,7 +171,7 @@ void DecoderWavPack::seek(qint64 time)
{
m_totalBytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * time/8000;
+ audioParameters().sampleSize() * time/1000;
if(m_parser)
time += m_offset;
WavpackSeekSample (m_context, time * m_freq / 1000);
@@ -229,7 +242,7 @@ void DecoderWavPack::next()
m_length = m_parser->length(m_track);
length_in_bytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * m_length/8000;
+ audioParameters().sampleSize() * m_length/1000;
StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData());
m_totalBytes = 0;
}