From 53c5bab108cc11695a40de9f3cbf24fff2d619e1 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Thu, 15 Nov 2018 21:30:30 +0000 Subject: mplayer: fixed latest api support git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8436 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Engines/mplayer/mplayerengine.cpp | 29 +++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'src/plugins/Engines/mplayer/mplayerengine.cpp') diff --git a/src/plugins/Engines/mplayer/mplayerengine.cpp b/src/plugins/Engines/mplayer/mplayerengine.cpp index bb4d65c8d..dbd01b871 100644 --- a/src/plugins/Engines/mplayer/mplayerengine.cpp +++ b/src/plugins/Engines/mplayer/mplayerengine.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include "mplayerengine.h" @@ -37,11 +38,15 @@ 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"; @@ -61,9 +66,20 @@ TrackInfo *MplayerInfo::createTrackInfo(const QString &path) QStringList lines = str.split("\n"); foreach(QString line, lines) { - if (rx_id_length.indexIn(line) > -1) + 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)); } + info->setValue(Qmmp::BITS_PER_SAMPLE, 32); + info->setValue(Qmmp::DECODER, "mplayer"); + info->setValue(Qmmp::FILE_SIZE, QFileInfo(path).size()); #ifdef MPLAYER_DEBUG qDebug("%s",qPrintable(str)); #endif @@ -243,6 +259,15 @@ void MplayerEngine::readStdOut() AudioParameters ap(m_samplerate, ChannelMap(m_channels), AudioParameters::findAudioFormat(m_bitsPerSample)); StateHandler::instance()->dispatch(ap); } + else if (rx_audio2.indexIn(line) > -1) + { + m_samplerate = rx_audio2.cap(1).toInt(); + m_channels = rx_audio2.cap(2).toInt(); + m_bitsPerSample = 32; + m_bitrate = rx_audio2.cap(4).toDouble(); + AudioParameters ap(m_samplerate, ChannelMap(m_channels), AudioParameters::findAudioFormat(m_bitsPerSample)); + StateHandler::instance()->dispatch(ap); + } #ifdef MPLAYER_DEBUG else qDebug("%s",qPrintable(line)); -- cgit v1.2.3-13-gbd6f