aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Engines
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-10-25 21:24:43 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-10-25 21:24:43 +0000
commitff83ab580c847f8f8e684f3b1d7bc100ff2f1510 (patch)
treea5578067bb808e2a252c173664ee34afdc87bbfd /src/plugins/Engines
parent95c8717ceeb61baccdcc5929fecf1faa3e2e98cf (diff)
downloadqmmp-ff83ab580c847f8f8e684f3b1d7bc100ff2f1510.tar.gz
qmmp-ff83ab580c847f8f8e684f3b1d7bc100ff2f1510.tar.bz2
qmmp-ff83ab580c847f8f8e684f3b1d7bc100ff2f1510.zip
ported some code to QRegularExpression
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9529 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Engines')
-rw-r--r--src/plugins/Engines/mplayer/mplayerengine.cpp115
-rw-r--r--src/plugins/Engines/mplayer/mplayerengine.h3
-rw-r--r--src/plugins/Engines/mplayer/mplayerenginefactory.cpp13
-rw-r--r--src/plugins/Engines/mplayer/mplayermetadatamodel.cpp23
4 files changed, 64 insertions, 90 deletions
diff --git a/src/plugins/Engines/mplayer/mplayerengine.cpp b/src/plugins/Engines/mplayer/mplayerengine.cpp
index c9d0ee4d6..ffa5e6025 100644
--- a/src/plugins/Engines/mplayer/mplayerengine.cpp
+++ b/src/plugins/Engines/mplayer/mplayerengine.cpp
@@ -24,10 +24,11 @@
#include <QAction>
#include <QKeyEvent>
#include <QMenu>
-#include <QRegExp>
+#include <QRegularExpression>
#include <QSettings>
#include <QFileInfo>
#include <QDebug>
+#include <QDir>
#include <qmmp/trackinfo.h>
#include <qmmp/inputsource.h>
#include <qmmp/volumehandler.h>
@@ -35,30 +36,14 @@
//#define MPLAYER_DEBUG
-static QRegExp rx_av("^[AV]: *([0-9,:.-]+)");
-static QRegExp rx_pause("^(.*)=(.*)PAUSE(.*)");
-static QRegExp rx_end("^(.*)End of file(.*)");
-static QRegExp rx_quit("^(.*)Quit(.*)");
-static QRegExp rx_audio("^AUDIO: *([0-9,.]+) *Hz.*([0-9,.]+) *ch.*([0-9]+).* ([0-9,.]+) *kbit.*");
-static QRegExp rx_audio2("^AUDIO: *([0-9,.]+) *Hz.*([0-9,.]+) *ch.*([a-z]+).* ([0-9,.]+) *kbit.*");
-
TrackInfo *MplayerInfo::createTrackInfo(const QString &path)
{
- QRegExp rx_id_length("^ID_LENGTH=([0-9,.]+)*");
- QRegExp rx_id_audio_bitrate("^ID_AUDIO_BITRATE=([0-9,.]+)*");
- QRegExp rx_id_audio_rate("^ID_AUDIO_RATE=([0-9,.]+)*");
- QRegExp rx_id_audio_nch("^ID_AUDIO_NCH=([0-9,.]+)*");
- QRegExp rx_id_audio_codec("^ID_AUDIO_CODEC=(.*)");
- QStringList args;
- args << "-slave";
- args << "-identify";
- args << "-frames";
- args << "0";
- args << "-vo";
- args << "null";
- args << "-ao";
- args << "null";
- args << path;
+ QRegularExpression rx_id_length("^ID_LENGTH=([0-9,.]+)*");
+ QRegularExpression rx_id_audio_bitrate("^ID_AUDIO_BITRATE=([0-9,.]+)*");
+ QRegularExpression rx_id_audio_rate("^ID_AUDIO_RATE=([0-9,.]+)*");
+ QRegularExpression rx_id_audio_nch("^ID_AUDIO_NCH=([0-9,.]+)*");
+ QRegularExpression rx_id_audio_codec("^ID_AUDIO_CODEC=(.*)");
+ QStringList args = { "-slave", "-identify", "-frames", "0", "-vo", "null", "-ao", "null", path };
QProcess mplayer_process;
mplayer_process.start("mplayer", args);
mplayer_process.waitForFinished(1500);
@@ -68,16 +53,18 @@ TrackInfo *MplayerInfo::createTrackInfo(const QString &path)
const QStringList lines = str.split("\n");
for(const QString &line : qAsConst(lines))
{
- if(rx_id_length.indexIn(line) > -1)
- info->setDuration((qint64) rx_id_length.cap(1).toDouble() * 1000);
- else if(rx_id_audio_bitrate.indexIn(line) > -1)
- info->setValue(Qmmp::BITRATE, rx_id_audio_bitrate.cap(1).toDouble());
- else if(rx_id_audio_rate.indexIn(line) > -1)
- info->setValue(Qmmp::SAMPLERATE, rx_id_audio_rate.cap(1).toDouble());
- else if(rx_id_audio_nch.indexIn(line) > -1)
- info->setValue(Qmmp::CHANNELS, rx_id_audio_nch.cap(1).toInt());
- else if(rx_id_audio_codec.indexIn(line) > -1)
- info->setValue(Qmmp::FORMAT_NAME, rx_id_audio_codec.cap(1));
+ QRegularExpressionMatch match;
+
+ if((match = rx_id_length.match(line)).hasMatch())
+ info->setDuration(match.captured(1).toDouble() * 1000);
+ else if((match = rx_id_audio_bitrate.match(line)).hasMatch())
+ info->setValue(Qmmp::BITRATE, match.captured(1).toDouble());
+ else if((match = rx_id_audio_rate.match(line)).hasMatch())
+ info->setValue(Qmmp::SAMPLERATE, match.captured(1).toDouble());
+ else if((match = rx_id_audio_nch.match(line)).hasMatch())
+ info->setValue(Qmmp::CHANNELS, match.captured(1).toInt());
+ else if((match = rx_id_audio_codec.match(line)).hasMatch())
+ info->setValue(Qmmp::FORMAT_NAME, match.captured(1));
}
info->setValue(Qmmp::BITS_PER_SAMPLE, 32);
info->setValue(Qmmp::DECODER, "mplayer");
@@ -88,14 +75,18 @@ TrackInfo *MplayerInfo::createTrackInfo(const QString &path)
return info;
}
-QStringList MplayerInfo::filters()
+const QStringList &MplayerInfo::filters()
{
- QStringList filters;
- filters << "*.avi" << "*.mpg" << "*.mpeg" << "*.divx" << "*.qt" << "*.mov" << "*.wmv" << "*.asf"
- << "*.flv" << "*.3gp" << "*.mkv" << "*.mp4" << "*.webm";
+ static const QStringList filters = { "*.avi", "*.mpg", "*.mpeg", "*.divx", "*.qt", "*.mov", "*.wmv", "*.asf",
+ "*.flv", "*.3gp", "*.mkv", "*.mp4", "*.webm" };
return filters;
}
+bool MplayerInfo::supports(const QString &path)
+{
+ return QDir::match(filters(), path.section("/", -1));
+}
+
MplayerEngine::MplayerEngine(QObject *parent)
: AbstractEngine(parent)
{
@@ -122,16 +113,7 @@ bool MplayerEngine::play()
bool MplayerEngine::enqueue(InputSource *source)
{
- const QStringList filters = MplayerInfo::filters();
- bool supports = false;
- for(const QString &filter : qAsConst(filters))
- {
- QRegExp regexp(filter, Qt::CaseInsensitive, QRegExp::Wildcard);
- supports = regexp.exactMatch(source->path());
- if(supports)
- break;
- }
- if(!supports)
+ if(!MplayerInfo::supports(source->path()))
return false;
if(!m_process || m_process->state() == QProcess::NotRunning)
@@ -203,20 +185,29 @@ void MplayerEngine::setMuted(bool muted)
void MplayerEngine::readStdOut()
{
+ static const QRegularExpression rx_av("^[AV]: *([0-9,:.-]+)");
+ static const QRegularExpression rx_pause("^(.*)=(.*)PAUSE(.*)");
+ static const QRegularExpression rx_end("^(.*)End of file(.*)");
+ static const QRegularExpression rx_quit("^(.*)Quit(.*)");
+ static const QRegularExpression rx_audio("^AUDIO: *([0-9,.]+) *Hz.*([0-9,.]+) *ch.*([0-9]+).* ([0-9,.]+) *kbit.*");
+ static const QRegularExpression rx_audio2("^AUDIO: *([0-9,.]+) *Hz.*([0-9,.]+) *ch.*([a-z]+).* ([0-9,.]+) *kbit.*");
+
const QStringList lines = QString::fromLocal8Bit(m_process->readAll()).trimmed().split("\n");
- for(const QString &line : lines)
+ for(const QString &line : qAsConst(lines))
{
- if (rx_av.indexIn(line) > -1)
+ QRegularExpressionMatch match;
+
+ if ((match = rx_av.match(line)).hasMatch())
{
StateHandler::instance()->dispatch(Qmmp::Playing);
- m_currentTime = (qint64) rx_av.cap(1).toDouble();
+ m_currentTime = (qint64) match.captured(1).toDouble();
StateHandler::instance()->dispatch(m_currentTime * 1000, m_bitrate);
}
- else if (rx_pause.indexIn(line) > -1)
+ else if ((match = rx_pause.match(line)).hasMatch())
{
StateHandler::instance()->dispatch(Qmmp::Paused);
}
- else if (rx_end.indexIn(line) > -1)
+ else if ((match = rx_end.match(line)).hasMatch())
{
if (m_process->state() == QProcess::Running)
m_process->waitForFinished(3500);
@@ -233,7 +224,7 @@ void MplayerEngine::readStdOut()
return;
}
}
- else if (rx_quit.indexIn(line) > -1 && !m_user_stop)
+ else if ((match = rx_quit.match(line)).hasMatch() && !m_user_stop)
{
if (m_process->state() == QProcess::Running)
{
@@ -242,21 +233,21 @@ void MplayerEngine::readStdOut()
}
StateHandler::instance()->dispatch(Qmmp::Stopped);
}
- else if (rx_audio.indexIn(line) > -1)
+ else if ((match = rx_audio.match(line)).hasMatch())
{
- m_samplerate = rx_audio.cap(1).toInt();
- m_channels = rx_audio.cap(2).toInt();
- m_bitsPerSample = rx_audio.cap(3).toDouble();
- m_bitrate = rx_audio.cap(4).toDouble();
+ m_samplerate = match.captured(1).toInt();
+ m_channels = match.captured(2).toInt();
+ m_bitsPerSample = match.captured(3).toDouble();
+ m_bitrate = match.captured(4).toDouble();
AudioParameters ap(m_samplerate, ChannelMap(m_channels), AudioParameters::findAudioFormat(m_bitsPerSample));
StateHandler::instance()->dispatch(ap);
}
- else if (rx_audio2.indexIn(line) > -1)
+ else if ((match = rx_audio2.match(line)).hasMatch())
{
- m_samplerate = rx_audio2.cap(1).toInt();
- m_channels = rx_audio2.cap(2).toInt();
+ m_samplerate = match.captured(1).toInt();
+ m_channels = match.captured(2).toInt();
m_bitsPerSample = 32;
- m_bitrate = rx_audio2.cap(4).toDouble();
+ m_bitrate = match.captured(4).toDouble();
AudioParameters ap(m_samplerate, ChannelMap(m_channels), AudioParameters::findAudioFormat(m_bitsPerSample));
StateHandler::instance()->dispatch(ap);
}
diff --git a/src/plugins/Engines/mplayer/mplayerengine.h b/src/plugins/Engines/mplayer/mplayerengine.h
index b0edff08b..47f2005e6 100644
--- a/src/plugins/Engines/mplayer/mplayerengine.h
+++ b/src/plugins/Engines/mplayer/mplayerengine.h
@@ -38,7 +38,8 @@ class MplayerInfo
{
public:
static TrackInfo *createTrackInfo(const QString &path);
- static QStringList filters();
+ static const QStringList &filters();
+ static bool supports(const QString &path);
};
class MplayerEngine : public AbstractEngine
diff --git a/src/plugins/Engines/mplayer/mplayerenginefactory.cpp b/src/plugins/Engines/mplayer/mplayerenginefactory.cpp
index dfc13cf27..491dc7cb0 100644
--- a/src/plugins/Engines/mplayer/mplayerenginefactory.cpp
+++ b/src/plugins/Engines/mplayer/mplayerenginefactory.cpp
@@ -43,14 +43,7 @@ EngineProperties MplayerEngineFactory::properties() const
bool MplayerEngineFactory::supports(const QString &source) const
{
- const QStringList filters = MplayerInfo::filters();
- for(const QString &filter : qAsConst(filters))
- {
- QRegExp regexp(filter, Qt::CaseInsensitive, QRegExp::Wildcard);
- if (regexp.exactMatch(source))
- return true;
- }
- return false;
+ return MplayerInfo::supports(source);
}
AbstractEngine *MplayerEngineFactory::create(QObject *parent)
@@ -61,9 +54,7 @@ AbstractEngine *MplayerEngineFactory::create(QObject *parent)
QList<TrackInfo *> MplayerEngineFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *)
{
Q_UNUSED(parts);
- QList<TrackInfo *> info;
- info << MplayerInfo::createTrackInfo(path);
- return info;
+ return { MplayerInfo::createTrackInfo(path) };
}
MetaDataModel* MplayerEngineFactory::createMetaDataModel(const QString &path, bool readOnly)
diff --git a/src/plugins/Engines/mplayer/mplayermetadatamodel.cpp b/src/plugins/Engines/mplayer/mplayermetadatamodel.cpp
index 73c7a2ff5..ebe698795 100644
--- a/src/plugins/Engines/mplayer/mplayermetadatamodel.cpp
+++ b/src/plugins/Engines/mplayer/mplayermetadatamodel.cpp
@@ -18,7 +18,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#include <QRegExp>
+#include <QRegularExpression>
#include <QFileInfo>
#include <QStringList>
#include <QProcess>
@@ -37,28 +37,20 @@ QList<MetaDataItem> MplayerMetaDataModel::extraProperties() const
QList<MetaDataItem> ep;
ep << MetaDataItem(tr("Size"), QFileInfo(m_path).size ()/1024, tr("KiB"));
//prepare and start mplayer process
- QStringList args;
- args << "-slave";
- args << "-identify";
- args << "-frames";
- args << "0";
- args << "-vo";
- args << "null";
- args << "-ao";
- args << "null";
- args << m_path;
+ QStringList args = { "-slave", "-identify", "-frames", "0", "-vo", "null", "-ao", "null", m_path };
QProcess mplayer_process;
mplayer_process.start("mplayer", args);
mplayer_process.waitForFinished();
QString str = QString::fromLocal8Bit(mplayer_process.readAll()).trimmed();
const QStringList lines = str.split("\n");
//mplayer std output parsing
- QRegExp rx_id("^(ID_.*)=(.*)");
+ QRegularExpression rx_id("^(ID_.*)=(.*)");
QMap<QString, QString> params;
for(const QString &line : qAsConst(lines))
{
- if(rx_id.indexIn(line.trimmed()) > -1)
- params.insert(rx_id.cap(1), rx_id.cap(2));
+ QRegularExpressionMatch match = rx_id.match(line.trimmed());
+ if(match.hasMatch())
+ params.insert(match.captured(1), match.captured(2));
}
//general info
ep << MetaDataItem(tr("Demuxer"), params["ID_DEMUXER"]);
@@ -68,8 +60,7 @@ QList<MetaDataItem> MplayerMetaDataModel::extraProperties() const
ep << MetaDataItem(tr("Video codec"), params["ID_VIDEO_CODEC"]);
ep << MetaDataItem(tr("Aspect ratio"), params["ID_VIDEO_ASPECT"]);
ep << MetaDataItem(tr("Video bitrate"), params["ID_VIDEO_BITRATE"].toInt() / 1000, tr("kbps"));
- ep << MetaDataItem(tr("Resolution"), QString("%1x%2").arg(params["ID_VIDEO_WIDTH"])
- .arg(params["ID_VIDEO_HEIGHT"]));
+ ep << MetaDataItem(tr("Resolution"), QString("%1x%2").arg(params["ID_VIDEO_WIDTH"]).arg(params["ID_VIDEO_HEIGHT"]));
ep << MetaDataItem(tr("Audio codec"), params["ID_AUDIO_CODEC"]);
ep << MetaDataItem(tr("Sample rate"), params["ID_AUDIO_RATE"], tr("Hz"));
ep << MetaDataItem(tr("Audio bitrate"), params["ID_AUDIO_BITRATE"].toInt() / 1000, tr("kbps"));