aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/cue/decoder_cue.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-07-15 14:39:35 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-07-15 14:39:35 +0000
commitdb0834220d3c3e11c77d24de356cdd975343442d (patch)
tree483750c572af6d8c74852f9be37adb0c1c606c02 /src/plugins/Input/cue/decoder_cue.cpp
parentd69b825c74552cbaa7027297782e3c2bd89901a7 (diff)
downloadqmmp-db0834220d3c3e11c77d24de356cdd975343442d.tar.gz
qmmp-db0834220d3c3e11c77d24de356cdd975343442d.tar.bz2
qmmp-db0834220d3c3e11c77d24de356cdd975343442d.zip
fixed cue support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1037 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/cue/decoder_cue.cpp')
-rw-r--r--src/plugins/Input/cue/decoder_cue.cpp27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/plugins/Input/cue/decoder_cue.cpp b/src/plugins/Input/cue/decoder_cue.cpp
index f65e17f79..6064025e6 100644
--- a/src/plugins/Input/cue/decoder_cue.cpp
+++ b/src/plugins/Input/cue/decoder_cue.cpp
@@ -122,6 +122,7 @@ bool DecoderCUE::initialize()
connect(stateHandler(), SIGNAL(aboutToFinish()), SLOT(proccessFinish()));
//prepare decoder and ouput objects
m_decoder->initialize();
+ qDebug("%lld == %lld", m_offset, m_length);
m_decoder->setFragment(m_offset, m_length);
//send metadata
QMap<Qmmp::MetaData, QString> metaData = parser.info(track)->metaData();
@@ -257,34 +258,23 @@ void DecoderCUE::run()
void DecoderCUE::proccessFinish()
{
- qDebug("==>%s", qPrintable(SoundCore::instance()->nextUrl()));
- qDebug("==>%s", qPrintable(m_nextUrl));
- if(!SoundCore::instance()->nextUrl().isEmpty()
- && !m_nextUrl.isEmpty()
- && SoundCore::instance()->nextUrl() == m_nextUrl)
+ if(nextUrlRequest(m_nextUrl))
{
- qDebug("prefinish");
- qDebug("next url: %s", qPrintable(m_nextUrl));
+ qDebug("DecoderCUE: using next url");
int track = m_nextUrl.section("#", -1).toInt();
+ qDebug("==%d", track);
QString p = QUrl(m_nextUrl).path();
p.replace(QString(QUrl::toPercentEncoding("#")), "#");
p.replace(QString(QUrl::toPercentEncoding("%")), "%");
-
+ //update decoder's fragment
CUEParser parser(p);
m_length = parser.length(track);
m_offset = parser.offset(track);
m_decoder->mutex()->lock();
+ qDebug("%lld == %lld", m_offset, m_length);
m_decoder->setFragment(m_offset, m_length);
m_output2->seek(0);
m_decoder->mutex()->unlock();
-
- //stateHandler()->dispatch(Qmmp::Stopped);
- //stateHandler()->dispatch(Qmmp::Buffering);
- //stateHandler()->dispatch(Qmmp::Playing);
- //m_decoder->mutex()->lock();
- //m_output2->seek(0);
- //m_decoder->mutex()->unlock();
-
// find next track
if(track <= parser.count() - 1)
m_nextUrl = parser.info(track + 1)->path();
@@ -293,10 +283,11 @@ void DecoderCUE::proccessFinish()
//is it track of another file?
if(QUrl(m_nextUrl).path() != p)
m_nextUrl.clear();
+ //change track
emit playbackFinished();
+ QMap<Qmmp::MetaData, QString> metaData = parser.info(track)->metaData();
+ stateHandler()->dispatch(metaData);
}
- else
- Decoder::stop();
}
CUEStateHandler::CUEStateHandler(QObject *parent): StateHandler(parent){}