aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/wavpack/decoder_wavpack.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-04-28 09:57:16 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-04-28 09:57:16 +0000
commit4d8df087fb7eb80ac100e5024348b0917e46e7dd (patch)
tree2a2f9aa942f98e1209fc4fedbc89501ab923b8f6 /src/plugins/Input/wavpack/decoder_wavpack.cpp
parentf9e1ec0ba4f33fcfc74eb7f200589721f6a7566a (diff)
downloadqmmp-4d8df087fb7eb80ac100e5024348b0917e46e7dd.tar.gz
qmmp-4d8df087fb7eb80ac100e5024348b0917e46e7dd.tar.bz2
qmmp-4d8df087fb7eb80ac100e5024348b0917e46e7dd.zip
wavpack: using shared cue parser
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8801 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/wavpack/decoder_wavpack.cpp')
-rw-r--r--src/plugins/Input/wavpack/decoder_wavpack.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/plugins/Input/wavpack/decoder_wavpack.cpp b/src/plugins/Input/wavpack/decoder_wavpack.cpp
index a9daaf20a..0c75cb914 100644
--- a/src/plugins/Input/wavpack/decoder_wavpack.cpp
+++ b/src/plugins/Input/wavpack/decoder_wavpack.cpp
@@ -24,8 +24,8 @@
#include <QRegExp>
#include <math.h>
#include <stdint.h>
+#include <qmmp/cueparser.h>
#include <qmmp/buffer.h>
-#include <qmmp/output.h>
#include <stdlib.h>
#include "decoder_wavpack.h"
#include "cueparser.h"
@@ -62,7 +62,7 @@ bool DecoderWavPack::initialize()
m_chan = 0;
m_totalTime = 0;
- char err [80];
+ char err[80] = { 0 };
if (m_path.startsWith("wvpack://")) //embeded cue track
{
QString p = m_path;
@@ -80,14 +80,15 @@ bool DecoderWavPack::initialize()
return false;
}
int cue_len = WavpackGetTagItem (m_context, "cuesheet", nullptr, 0);
- char *value;
- if (cue_len)
+ if (cue_len > 0)
{
- value = (char*)malloc (cue_len * 2 + 1);
- WavpackGetTagItem (m_context, "cuesheet", value, cue_len + 1);
- m_parser = new CUEParser(value, p);
+ char *value = (char*)malloc (cue_len * 2 + 1);
+ WavpackGetTagItem(m_context, "cuesheet", value, cue_len + 1);
+ m_parser = new CueParser(value);
+ m_parser->setDuration((qint64)WavpackGetNumSamples(m_context) * 1000 / WavpackGetSampleRate(m_context));
+ m_parser->setUrl("wvpack", p);
m_track = m_path.section("#", -1).toInt();
- if(m_track > m_parser->count())
+ if(m_track < 1 || m_track > m_parser->count())
{
qWarning("DecoderWavPack: invalid cuesheet comment");
return false;
@@ -155,7 +156,7 @@ bool DecoderWavPack::initialize()
m_offset = m_parser->offset(m_track);
m_length_in_bytes = audioParameters().sampleRate() *
audioParameters().frameSize() * m_length/1000;
- setReplayGainInfo(m_parser->replayGain(m_track));
+ setReplayGainInfo(m_parser->info(m_track)->replayGainInfo());
seek(0);
}
m_totalBytes = 0;
@@ -218,7 +219,7 @@ qint64 DecoderWavPack::read(unsigned char *data, qint64 size)
const QString DecoderWavPack::nextURL() const
{
if(m_parser && m_track +1 <= m_parser->count())
- return m_parser->trackURL(m_track + 1);
+ return m_parser->url(m_track + 1);
else
return QString();
}
@@ -234,7 +235,7 @@ void DecoderWavPack::next()
audioParameters().channels() *
audioParameters().sampleSize() * m_length/1000;
addMetaData(m_parser->info(m_track)->metaData());
- setReplayGainInfo(m_parser->replayGain(m_track));
+ setReplayGainInfo(m_parser->info(m_track)->replayGainInfo());
m_totalBytes = 0;
}
}