aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Engines
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-07-24 13:21:47 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-07-24 13:21:47 +0000
commit834e42ffdb4bee4c22f96cb459c406cab6539610 (patch)
tree846b97230641020c0e99a7174d23fc39025386d5 /src/plugins/Engines
parent1e27d03783c264e899ccb96ebcbcff76f131cc14 (diff)
downloadqmmp-834e42ffdb4bee4c22f96cb459c406cab6539610.tar.gz
qmmp-834e42ffdb4bee4c22f96cb459c406cab6539610.tar.bz2
qmmp-834e42ffdb4bee4c22f96cb459c406cab6539610.zip
mplayer engine: added offset support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1811 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Engines')
-rw-r--r--src/plugins/Engines/mplayer/mplayerengine.cpp30
-rw-r--r--src/plugins/Engines/mplayer/mplayerengine.h4
2 files changed, 19 insertions, 15 deletions
diff --git a/src/plugins/Engines/mplayer/mplayerengine.cpp b/src/plugins/Engines/mplayer/mplayerengine.cpp
index c3a969d2a..39aaa5401 100644
--- a/src/plugins/Engines/mplayer/mplayerengine.cpp
+++ b/src/plugins/Engines/mplayer/mplayerengine.cpp
@@ -42,7 +42,6 @@ static QRegExp rx_audio("^AUDIO: *([0-9,.]+) *Hz.*([0-9,.]+) *ch.*([0-9]+).* ([0
FileInfo *MplayerInfo::createFileInfo(const QString &path)
{
- qDebug("%s", Q_FUNC_INFO);
QRegExp rx_id_length("^ID_LENGTH=([0-9,.]+)*");
QStringList args;
args << "-slave";
@@ -68,7 +67,6 @@ FileInfo *MplayerInfo::createFileInfo(const QString &path)
#ifdef MPLAYER_DEBUG
qDebug("%s",qPrintable(str));
#endif
- qDebug("%s+", Q_FUNC_INFO);
return info;
}
@@ -83,7 +81,7 @@ QStringList MplayerInfo::filters()
MplayerEngine::MplayerEngine(QObject *parent)
: AbstractEngine(parent)
{
- //m_url = url;
+ m_source = 0;
m_bitrate = 0;
m_samplerate = 0;
m_channels = 0;
@@ -98,6 +96,8 @@ MplayerEngine::~MplayerEngine()
{
qDebug("%s",__FUNCTION__);
m_process->kill();
+ while(!m_sources.isEmpty())
+ m_sources.dequeue()->deleteLater();
}
bool MplayerEngine::play()
@@ -122,17 +122,17 @@ bool MplayerEngine::enqueue(InputSource *source)
}
if(!supports)
return false;
- source->deleteLater();
+
if(m_process->state() == QProcess::NotRunning)
- m_url = url;
+ m_source = source;
else
- m_files.enqueue(url);
+ m_sources.enqueue(source);
return true;
}
bool MplayerEngine::initialize()
{
- FileInfo *info = MplayerInfo::createFileInfo(m_url);
+ FileInfo *info = MplayerInfo::createFileInfo(m_source->url());
m_length = info->length();
delete info;
m_args.clear();
@@ -148,7 +148,9 @@ bool MplayerEngine::initialize()
if (settings.value("autosync", false).toBool())
m_args << "-autosync" << QString("%1").arg(settings.value("autosync_factor", 100).toInt());
- m_args << m_url;
+ if(m_source->offset() > 0)
+ m_args << "-ss" << QString("%1").arg(m_source->offset()/1000);
+ m_args << m_source->url();
return true;
}
@@ -171,8 +173,8 @@ void MplayerEngine::stop()
m_process->waitForFinished(1500);
}
StateHandler::instance()->dispatch(Qmmp::Stopped);
- m_files.clear();
- m_url.clear();
+ while(!m_sources.isEmpty())
+ m_sources.dequeue()->deleteLater();
}
void MplayerEngine::pause()
@@ -205,10 +207,10 @@ void MplayerEngine::readStdOut()
if (m_process->state() == QProcess::Running)
m_process->waitForFinished(3500);
emit playbackFinished();
- if(!m_files.isEmpty())
+ if(!m_sources.isEmpty())
{
StateHandler::instance()->dispatch(Qmmp::Stopped);
- m_url = m_files.dequeue();
+ m_source = m_sources.dequeue();
startMplayerProcess();
}
else
@@ -242,7 +244,9 @@ void MplayerEngine::startMplayerProcess()
initialize();
m_process->start ("mplayer", m_args);
StateHandler::instance()->dispatch(Qmmp::Playing);
- FileInfo *info = MplayerInfo::createFileInfo(m_url);
+ FileInfo *info = MplayerInfo::createFileInfo(m_source->url());
StateHandler::instance()->dispatch(info->metaData());
delete info;
+ m_source->deleteLater();
+ m_source = 0;
}
diff --git a/src/plugins/Engines/mplayer/mplayerengine.h b/src/plugins/Engines/mplayer/mplayerengine.h
index b208839bb..0d9ce30bc 100644
--- a/src/plugins/Engines/mplayer/mplayerengine.h
+++ b/src/plugins/Engines/mplayer/mplayerengine.h
@@ -63,7 +63,6 @@ private slots:
private:
int mplayer_pipe[2];
- QString m_url;
QStringList m_args;
QProcess *m_process;
int m_bitrate;
@@ -72,7 +71,8 @@ private:
int m_bitsPerSample;
qint64 m_currentTime;
qint64 m_length;
- QQueue <QString> m_files;
+ QQueue <InputSource*> m_sources;
+ InputSource *m_source;
};