aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-10-09 20:01:12 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-10-09 20:01:12 +0000
commit7a3c89bf2d71b74a8edbc39ec1264c68307cc888 (patch)
treed1d062c44d9d3c29d5299a59305585e87b00190b /src/plugins
parent75380f4441ca591b3a501a13da8fe2428f730933 (diff)
downloadqmmp-7a3c89bf2d71b74a8edbc39ec1264c68307cc888.tar.gz
qmmp-7a3c89bf2d71b74a8edbc39ec1264c68307cc888.tar.bz2
qmmp-7a3c89bf2d71b74a8edbc39ec1264c68307cc888.zip
added engine api, enabled mplayer plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1296 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/CMakeLists.txt1
-rw-r--r--src/plugins/Engines/CMakeLists.txt5
-rw-r--r--src/plugins/Engines/Engines.pro4
-rw-r--r--src/plugins/Engines/mplayer/CMakeLists.txt (renamed from src/plugins/Input/mplayer/CMakeLists.txt)15
-rw-r--r--src/plugins/Engines/mplayer/mplayer.pro34
-rw-r--r--src/plugins/Engines/mplayer/mplayerengine.cpp (renamed from src/plugins/Input/mplayer/decoder_mplayer.cpp)101
-rw-r--r--src/plugins/Engines/mplayer/mplayerengine.h (renamed from src/plugins/Input/mplayer/decoder_mplayer.h)28
-rw-r--r--src/plugins/Engines/mplayer/mplayerenginefactory.cpp (renamed from src/plugins/Input/mplayer/decodermplayerfactory.cpp)66
-rw-r--r--src/plugins/Engines/mplayer/mplayerenginefactory.h (renamed from src/plugins/Input/mplayer/decodermplayerfactory.h)23
-rw-r--r--src/plugins/Engines/mplayer/mplayermetadatamodel.cpp (renamed from src/plugins/Input/mplayer/detailsdialog.cpp)57
-rw-r--r--src/plugins/Engines/mplayer/mplayermetadatamodel.h (renamed from src/plugins/Input/mplayer/detailsdialog.h)25
-rw-r--r--src/plugins/Engines/mplayer/settingsdialog.cpp (renamed from src/plugins/Input/mplayer/settingsdialog.cpp)0
-rw-r--r--src/plugins/Engines/mplayer/settingsdialog.h (renamed from src/plugins/Input/mplayer/settingsdialog.h)0
-rw-r--r--src/plugins/Engines/mplayer/settingsdialog.ui (renamed from src/plugins/Input/mplayer/settingsdialog.ui)0
-rw-r--r--src/plugins/Engines/mplayer/translations/mplayer_plugin_cs.ts (renamed from src/plugins/Input/mplayer/translations/mplayer_plugin_cs.ts)0
-rw-r--r--src/plugins/Engines/mplayer/translations/mplayer_plugin_de.ts (renamed from src/plugins/Input/mplayer/translations/mplayer_plugin_de.ts)0
-rw-r--r--src/plugins/Engines/mplayer/translations/mplayer_plugin_it.ts (renamed from src/plugins/Input/mplayer/translations/mplayer_plugin_it.ts)0
-rw-r--r--src/plugins/Engines/mplayer/translations/mplayer_plugin_lt.ts (renamed from src/plugins/Input/mplayer/translations/mplayer_plugin_lt.ts)0
-rw-r--r--src/plugins/Engines/mplayer/translations/mplayer_plugin_pl.ts (renamed from src/plugins/Input/mplayer/translations/mplayer_plugin_pl.ts)0
-rw-r--r--src/plugins/Engines/mplayer/translations/mplayer_plugin_ru.ts (renamed from src/plugins/Input/mplayer/translations/mplayer_plugin_ru.ts)0
-rw-r--r--src/plugins/Engines/mplayer/translations/mplayer_plugin_tr.ts (renamed from src/plugins/Input/mplayer/translations/mplayer_plugin_tr.ts)0
-rw-r--r--src/plugins/Engines/mplayer/translations/mplayer_plugin_uk_UA.ts (renamed from src/plugins/Input/mplayer/translations/mplayer_plugin_uk_UA.ts)0
-rw-r--r--src/plugins/Engines/mplayer/translations/mplayer_plugin_zh_CN.ts (renamed from src/plugins/Input/mplayer/translations/mplayer_plugin_zh_CN.ts)0
-rw-r--r--src/plugins/Engines/mplayer/translations/mplayer_plugin_zh_TW.ts (renamed from src/plugins/Input/mplayer/translations/mplayer_plugin_zh_TW.ts)0
-rw-r--r--src/plugins/Engines/mplayer/translations/translations.qrc (renamed from src/plugins/Input/mplayer/translations/translations.qrc)0
-rw-r--r--src/plugins/Input/CMakeLists.txt5
-rw-r--r--src/plugins/Input/cue/cueparser.cpp5
-rw-r--r--src/plugins/Input/flac/cueparser.cpp4
-rw-r--r--src/plugins/Input/mplayer/detailsdialog.ui390
-rw-r--r--src/plugins/Input/mplayer/mplayer.pro45
-rw-r--r--src/plugins/Input/wavpack/cueparser.cpp6
-rw-r--r--src/plugins/plugins.pro3
32 files changed, 222 insertions, 595 deletions
diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt
index 00eabaad5..4f4c53f03 100644
--- a/src/plugins/CMakeLists.txt
+++ b/src/plugins/CMakeLists.txt
@@ -7,3 +7,4 @@ add_subdirectory(PlaylistFormats)
add_subdirectory(CommandLineOptions)
add_subdirectory(FileDialogs)
add_subdirectory(Transports)
+add_subdirectory(Engines) \ No newline at end of file
diff --git a/src/plugins/Engines/CMakeLists.txt b/src/plugins/Engines/CMakeLists.txt
new file mode 100644
index 000000000..636972563
--- /dev/null
+++ b/src/plugins/Engines/CMakeLists.txt
@@ -0,0 +1,5 @@
+SET(USE_MPLAYER TRUE CACHE BOOL "enable/disable mplayer support")
+
+IF(USE_MPLAYER)
+add_subdirectory(mplayer)
+ENDIF(USE_MPLAYER)
diff --git a/src/plugins/Engines/Engines.pro b/src/plugins/Engines/Engines.pro
new file mode 100644
index 000000000..1dddcfd5d
--- /dev/null
+++ b/src/plugins/Engines/Engines.pro
@@ -0,0 +1,4 @@
+include(../../../qmmp.pri)
+
+SUBDIRS += mplayer
+TEMPLATE = subdirs
diff --git a/src/plugins/Input/mplayer/CMakeLists.txt b/src/plugins/Engines/mplayer/CMakeLists.txt
index 2b87c27c7..1dea9477b 100644
--- a/src/plugins/Input/mplayer/CMakeLists.txt
+++ b/src/plugins/Engines/mplayer/CMakeLists.txt
@@ -28,16 +28,16 @@ link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmp)
SET(libmplayer_SRCS
- decoder_mplayer.cpp
- decodermplayerfactory.cpp
- detailsdialog.cpp
+ mplayerenginefactory.cpp
+ mplayerengine.cpp
+ mplayermetadatamodel.cpp
settingsdialog.cpp
)
SET(libmplayer_MOC_HDRS
- decodermplayerfactory.h
- decoder_mplayer.h
- detailsdialog.h
+ mplayerenginefactory.h
+ mplayerengine.h
+ mplayermetadatamodel.h
settingsdialog.h
)
@@ -52,7 +52,6 @@ QT4_WRAP_CPP(libmplayer_MOC_SRCS ${libmplayer_MOC_HDRS})
SET(libmplayer_UIS
settingsdialog.ui
- detailsdialog.ui
)
QT4_WRAP_UI(libmplayer_UIS_H ${libmplayer_UIS})
@@ -63,5 +62,5 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
ADD_LIBRARY(mplayer MODULE ${libmplayer_SRCS} ${libmplayer_MOC_SRCS} ${libmplayer_RCC_SRCS} ${libmplayer_UIS_H})
add_dependencies(mplayer qmmp)
target_link_libraries(mplayer ${QT_LIBRARIES} -lqmmp)
-install(TARGETS mplayer DESTINATION ${LIB_DIR}/qmmp/Input)
+install(TARGETS mplayer DESTINATION ${LIB_DIR}/qmmp/Engines)
diff --git a/src/plugins/Engines/mplayer/mplayer.pro b/src/plugins/Engines/mplayer/mplayer.pro
new file mode 100644
index 000000000..dbcde014d
--- /dev/null
+++ b/src/plugins/Engines/mplayer/mplayer.pro
@@ -0,0 +1,34 @@
+include(../../plugins.pri)
+HEADERS += mplayerenginefactory.h \
+ mplayerengine.h \
+ settingsdialog.h \
+ mplayermetadatamodel.h
+SOURCES += mplayerengine.cpp \
+ mplayerenginefactory.cpp \
+ settingsdialog.cpp \
+ mplayermetadatamodel.cpp
+TARGET = $$PLUGINS_PREFIX/Engines/mplayer
+QMAKE_CLEAN = $$PLUGINS_PREFIX/Engines/libmplayer.so
+INCLUDEPATH += ../../../
+CONFIG += release \
+ warn_on \
+ plugin
+TEMPLATE = lib
+QMAKE_LIBDIR += ../../../../lib
+LIBS += -lqmmp \
+ -L/usr/lib
+TRANSLATIONS = translations/mplayer_plugin_ru.ts \
+ translations/mplayer_plugin_uk_UA.ts \
+ translations/mplayer_plugin_zh_CN.ts \
+ translations/mplayer_plugin_zh_TW.ts \
+ translations/mplayer_plugin_cs.ts \
+ translations/mplayer_plugin_pl.ts \
+ translations/mplayer_plugin_de.ts \
+ translations/mplayer_plugin_it.ts \
+ translations/mplayer_plugin_tr.ts \
+ translations/mplayer_plugin_lt.ts
+RESOURCES = translations/translations.qrc
+isEmpty(LIB_DIR):LIB_DIR = /lib
+target.path = $$LIB_DIR/qmmp/Input
+INSTALLS += target
+FORMS += settingsdialog.ui
diff --git a/src/plugins/Input/mplayer/decoder_mplayer.cpp b/src/plugins/Engines/mplayer/mplayerengine.cpp
index 862bc3c90..33a2c69ae 100644
--- a/src/plugins/Input/mplayer/decoder_mplayer.cpp
+++ b/src/plugins/Engines/mplayer/mplayerengine.cpp
@@ -18,12 +18,6 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#include <qmmp/buffer.h>
-#include <qmmp/output.h>
-#include <qmmp/recycler.h>
-#include <qmmp/fileinfo.h>
-#include <qmmp/decoderfactory.h>
-
#include <QObject>
#include <QProcess>
#include <QFile>
@@ -34,8 +28,13 @@
#include <QMenu>
#include <QRegExp>
#include <QSettings>
-
-#include "decoder_mplayer.h"
+#include <qmmp/buffer.h>
+#include <qmmp/output.h>
+#include <qmmp/recycler.h>
+#include <qmmp/fileinfo.h>
+#include <qmmp/decoderfactory.h>
+#include <qmmp/inputsource.h>
+#include "mplayerengine.h"
#define MPLAYER_DEBUG
@@ -84,10 +83,10 @@ QStringList MplayerInfo::filters()
return filters;
}
-DecoderMplayer::DecoderMplayer(QObject *parent, DecoderFactory *d, const QString &url)
- : Decoder(parent, d)
+MplayerEngine::MplayerEngine(QObject *parent)
+ : AbstractEngine(parent)
{
- m_url = url;
+ //m_url = url;
m_bitrate = 0;
m_samplerate = 0;
m_channels = 0;
@@ -95,15 +94,46 @@ DecoderMplayer::DecoderMplayer(QObject *parent, DecoderFactory *d, const QString
m_length = 0;
m_currentTime = 0;
m_process = new QProcess(this);
+ connect(m_process, SIGNAL(readyReadStandardOutput()), SLOT(readStdOut()));
}
-DecoderMplayer::~DecoderMplayer()
+MplayerEngine::~MplayerEngine()
{
qDebug("%s",__FUNCTION__);
m_process->close();
}
-bool DecoderMplayer::initialize()
+bool MplayerEngine::play()
+{
+ if(m_process->state() != QProcess::NotRunning)
+ return FALSE;
+ startMplayerProcess();
+ return TRUE;
+}
+
+bool MplayerEngine::enqueue(InputSource *source)
+{
+ QString url = source->url();
+ QStringList filters = MplayerInfo::filters();
+ bool supports = FALSE;
+ foreach(QString filter, filters)
+ {
+ QRegExp regexp(filter, Qt::CaseInsensitive, QRegExp::Wildcard);
+ supports = regexp.exactMatch(source->url());
+ if(supports)
+ break;
+ }
+ if(!supports)
+ return FALSE;
+ source->deleteLater();
+ if(m_process->state() == QProcess::NotRunning)
+ m_url = url;
+ else
+ m_files.enqueue(url);
+ return TRUE;
+}
+
+bool MplayerEngine::initialize()
{
FileInfo *info = MplayerInfo::createFileInfo(m_url);
m_length = info->length();
@@ -122,22 +152,21 @@ bool DecoderMplayer::initialize()
m_args << QString("-autosync %1").arg(settings.value("autosync_factor", 100).toInt());
m_args << m_url;
- connect(m_process, SIGNAL(readyReadStandardOutput()), SLOT(readStdOut()));
return TRUE;
}
-qint64 DecoderMplayer::totalTime()
+qint64 MplayerEngine::totalTime()
{
return m_length * 1000;
}
-void DecoderMplayer::seek(qint64 pos)
+void MplayerEngine::seek(qint64 pos)
{
if (m_process->state() == QProcess::Running)
m_process->write(QString("seek %1 \n").arg(pos/1000 - m_currentTime).toLocal8Bit ());
}
-void DecoderMplayer::stop()
+void MplayerEngine::stop()
{
if (m_process->state() == QProcess::Running)
{
@@ -145,31 +174,27 @@ void DecoderMplayer::stop()
m_process->waitForFinished(1500);
}
StateHandler::instance()->dispatch(Qmmp::Stopped);
+ m_files.clear();
+ m_url.clear();
}
-void DecoderMplayer::pause()
+void MplayerEngine::pause()
{
m_process->write("pause\n");
}
-void DecoderMplayer::setEQ(double bands[10], double preamp)
+void MplayerEngine::setEQ(double bands[10], double preamp)
{
Q_UNUSED(bands[10]);
Q_UNUSED(preamp);
}
-void DecoderMplayer::setEQEnabled(bool on)
+void MplayerEngine::setEQEnabled(bool on)
{
Q_UNUSED(on);
}
-void DecoderMplayer::run()
-{
- QMetaObject::invokeMethod(this, "startMplayerProcess");
- StateHandler::instance()->dispatch(Qmmp::Playing);
-}
-
-void DecoderMplayer::readStdOut()
+void MplayerEngine::readStdOut()
{
QString line = QString::fromLocal8Bit(m_process->readAll ()).trimmed();
QStringList lines = line.split("\n");
@@ -192,8 +217,19 @@ void DecoderMplayer::readStdOut()
else if (rx_end.indexIn(line) > -1)
{
if (m_process->state() == QProcess::Running)
- m_process->waitForFinished(1500);
- finish();
+ m_process->waitForFinished(3500);
+ emit playbackFinished();
+ if(!m_files.isEmpty())
+ {
+ StateHandler::instance()->dispatch(Qmmp::Stopped);
+ m_url = m_files.dequeue();
+ startMplayerProcess();
+ }
+ else
+ {
+ StateHandler::instance()->dispatch(Qmmp::Stopped);
+ return;
+ }
}
else if (rx_quit.indexIn(line) > -1)
{
@@ -215,7 +251,12 @@ void DecoderMplayer::readStdOut()
}
}
-void DecoderMplayer::startMplayerProcess()
+void MplayerEngine::startMplayerProcess()
{
+ initialize();
m_process->start ("mplayer", m_args);
+ StateHandler::instance()->dispatch(Qmmp::Playing);
+ FileInfo *info = MplayerInfo::createFileInfo(m_url);
+ StateHandler::instance()->dispatch(info->metaData());
+ delete info;
}
diff --git a/src/plugins/Input/mplayer/decoder_mplayer.h b/src/plugins/Engines/mplayer/mplayerengine.h
index 38d47e629..cc6b12d16 100644
--- a/src/plugins/Input/mplayer/decoder_mplayer.h
+++ b/src/plugins/Engines/mplayer/mplayerengine.h
@@ -18,18 +18,21 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#ifndef DECODER_MPLAYER_H
-#define DECODER_MPLAYER_H
+#ifndef MPLAYERENGINE_H
+#define MPLAYERENGINE_H
-#include <qmmp/decoder.h>
+#include <QQueue>
+#include <QString>
#include <qmmp/statehandler.h>
+#include <qmmp/abstractengine.h>
class Output;
class QIDevice;
class DecoderPhonon;
class QMenu;
class QProcess;
-
+class FileInfo;
+class InputSource;
class MplayerInfo
{
@@ -38,16 +41,16 @@ public:
static QStringList filters();
};
-
-
-class DecoderMplayer : public Decoder
+class MplayerEngine : public AbstractEngine
{
Q_OBJECT
public:
- DecoderMplayer(QObject *, DecoderFactory *, const QString &url);
- virtual ~DecoderMplayer();
+ MplayerEngine(QObject *parent);
+ virtual ~MplayerEngine();
- // Standard Decoder API
+ // Engine API
+ bool play();
+ bool enqueue(InputSource *source);
bool initialize();
qint64 totalTime();
void seek(qint64);
@@ -63,8 +66,6 @@ private slots:
void startMplayerProcess();
private:
- // thread run function
- void run();
int mplayer_pipe[2];
QString m_url;
QStringList m_args;
@@ -75,7 +76,8 @@ private:
int m_bitsPerSample;
qint64 m_currentTime;
qint64 m_length;
+ QQueue <QString> m_files;
};
-#endif // DECODER_MPLAYER_H
+#endif // MPLAYERENGINE_H
diff --git a/src/plugins/Input/mplayer/decodermplayerfactory.cpp b/src/plugins/Engines/mplayer/mplayerenginefactory.cpp
index 15db7cd34..33ca2e4cf 100644
--- a/src/plugins/Input/mplayer/decodermplayerfactory.cpp
+++ b/src/plugins/Engines/mplayer/mplayerenginefactory.cpp
@@ -19,34 +19,17 @@
***************************************************************************/
#include <QtGui>
-#include "detailsdialog.h"
+#include "mplayermetadatamodel.h"
#include "settingsdialog.h"
-#include "decoder_mplayer.h"
-#include "decodermplayerfactory.h"
+#include "mplayerengine.h"
+#include "mplayerenginefactory.h"
-// DecoderMplayerFactory
+// MplayerEngineFactory
-bool DecoderMplayerFactory::supports(const QString &source) const
+const EngineProperties MplayerEngineFactory::properties() const
{
- QStringList filters = MplayerInfo::filters();
- foreach(QString filter, filters)
- {
- QRegExp regexp(filter, Qt::CaseInsensitive, QRegExp::Wildcard);
- if (regexp.exactMatch(source))
- return TRUE;
- }
- return FALSE;
-}
-
-bool DecoderMplayerFactory::canDecode(QIODevice *) const
-{
- return FALSE;
-}
-
-const DecoderProperties DecoderMplayerFactory::properties() const
-{
- DecoderProperties properties;
+ EngineProperties properties;
properties.name = tr("Mplayer Plugin");
properties.shortName = "mplayer";
properties.filter = MplayerInfo::filters().join(" ");
@@ -55,20 +38,27 @@ const DecoderProperties DecoderMplayerFactory::properties() const
properties.protocols = "file";
properties.hasAbout = TRUE;
properties.hasSettings = TRUE;
- properties.noInput = TRUE;
- properties.noOutput = TRUE;
return properties;
}
-Decoder *DecoderMplayerFactory::create(QObject *parent, QIODevice *input,
- Output *output, const QString &url)
+bool MplayerEngineFactory::supports(const QString &source) const
+{
+ QStringList filters = MplayerInfo::filters();
+ foreach(QString filter, filters)
+ {
+ QRegExp regexp(filter, Qt::CaseInsensitive, QRegExp::Wildcard);
+ if (regexp.exactMatch(source))
+ return TRUE;
+ }
+ return FALSE;
+}
+
+AbstractEngine *MplayerEngineFactory::create(QObject *parent)
{
- Q_UNUSED(input);
- Q_UNUSED(output);
- return new DecoderMplayer(parent, this, url);
+ return new MplayerEngine(parent);
}
-QList<FileInfo *> DecoderMplayerFactory::createPlayList(const QString &fileName, bool useMetaData)
+QList<FileInfo *> MplayerEngineFactory::createPlayList(const QString &fileName, bool useMetaData)
{
Q_UNUSED(useMetaData);
QList<FileInfo *> info;
@@ -76,20 +66,18 @@ QList<FileInfo *> DecoderMplayerFactory::createPlayList(const QString &fileName,
return info;
}
-QObject* DecoderMplayerFactory::showDetails(QWidget *parent, const QString &path)
+MetaDataModel* MplayerEngineFactory::createMetaDataModel(const QString &path, QObject *parent)
{
- DetailsDialog *d = new DetailsDialog(path, parent);
- d->show();
- return d;
+ return new MplayerMetaDataModel(path, parent);
}
-void DecoderMplayerFactory::showSettings(QWidget *parent)
+void MplayerEngineFactory::showSettings(QWidget *parent)
{
SettingsDialog *s = new SettingsDialog(parent);
s->show();
}
-void DecoderMplayerFactory::showAbout(QWidget *parent)
+void MplayerEngineFactory::showAbout(QWidget *parent)
{
QMessageBox::about (parent, tr("About MPlayer Plugin"),
tr("Qmmp MPlayer Plugin")+"\n"+
@@ -97,7 +85,7 @@ void DecoderMplayerFactory::showAbout(QWidget *parent)
tr("Writen by: Ilya Kotov <forkotov02@hotmail.ru>"));
}
-QTranslator *DecoderMplayerFactory::createTranslator(QObject *parent)
+QTranslator *MplayerEngineFactory::createTranslator(QObject *parent)
{
QTranslator *translator = new QTranslator(parent);
QString locale = Qmmp::systemLanguageID();
@@ -105,4 +93,4 @@ QTranslator *DecoderMplayerFactory::createTranslator(QObject *parent)
return translator;
}
-Q_EXPORT_PLUGIN(DecoderMplayerFactory)
+Q_EXPORT_PLUGIN(MplayerEngineFactory)
diff --git a/src/plugins/Input/mplayer/decodermplayerfactory.h b/src/plugins/Engines/mplayer/mplayerenginefactory.h
index a752d5a43..4c43b15a2 100644
--- a/src/plugins/Input/mplayer/decodermplayerfactory.h
+++ b/src/plugins/Engines/mplayer/mplayerenginefactory.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2008 by Ilya Kotov *
+ * Copyright (C) 2006-2009 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -17,31 +17,30 @@
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#ifndef DECODERMPLAYERFACTORY_H
-#define DECODERMPLAYERFACTORY_H
+#ifndef MPLAYERENGINEFACTORY_H
+#define MPLAYERENGINEFACTORY_H
#include <QObject>
#include <QString>
#include <QIODevice>
#include <QWidget>
-#include <qmmp/decoder.h>
-#include <qmmp/output.h>
-#include <qmmp/decoderfactory.h>
+#include <qmmp/abstractengine.h>
+#include <qmmp/enginefactory.h>
#include <qmmp/fileinfo.h>
+#include <qmmp/metadatamodel.h>
-class DecoderMplayerFactory : public QObject, DecoderFactory
+class MplayerEngineFactory : public QObject, EngineFactory
{
Q_OBJECT
-Q_INTERFACES(DecoderFactory);
+Q_INTERFACES(EngineFactory);
public:
+ const EngineProperties properties() const;
bool supports(const QString &source) const;
- bool canDecode(QIODevice *input) const;
- const DecoderProperties properties() const;
- Decoder *create(QObject *, QIODevice *, Output *, const QString &);
+ AbstractEngine *create(QObject *parent = 0);
QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
- QObject* showDetails(QWidget *parent, const QString &path);
+ MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
QTranslator *createTranslator(QObject *parent);
diff --git a/src/plugins/Input/mplayer/detailsdialog.cpp b/src/plugins/Engines/mplayer/mplayermetadatamodel.cpp
index b541c1162..7aa8b3e3a 100644
--- a/src/plugins/Input/mplayer/detailsdialog.cpp
+++ b/src/plugins/Engines/mplayer/mplayermetadatamodel.cpp
@@ -18,20 +18,25 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#include <QProcess>
#include <QRegExp>
#include <QFileInfo>
+#include <QStringList>
+#include <QProcess>
+#include "mplayermetadatamodel.h"
+
+MplayerMetaDataModel::MplayerMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
+{
+ m_path = path;
+}
-#include "detailsdialog.h"
+MplayerMetaDataModel::~MplayerMetaDataModel()
+{}
-DetailsDialog::DetailsDialog(const QString &path, QWidget *parent)
- : QDialog(parent)
+QHash<QString, QString> MplayerMetaDataModel::audioProperties()
{
- ui.setupUi(this);
- setAttribute(Qt::WA_DeleteOnClose);
- ui.pathLineEdit->setText(path);
- ui.sizeLabel->setText(QString("%1 ").arg(QFileInfo(path).size ()/1024)+tr("KB"));
- setWindowTitle(QFileInfo(path).fileName());
+ QHash<QString, QString> vp;
+ QHash<QString, QString> ap;
+ ap.insert(tr("Size"), QString("%1 ").arg(QFileInfo(m_path).size ()/1024)+tr("KB"));
//regular expressions
QRegExp rx_id_length("^ID_LENGTH=([0-9,.]+)*");
QRegExp rx_id_demuxer("^ID_DEMUXER=(.*)");
@@ -56,7 +61,7 @@ DetailsDialog::DetailsDialog(const QString &path, QWidget *parent)
args << "null";
args << "-ao";
args << "null";
- args << path;
+ args << m_path;
QProcess mplayer_process;
mplayer_process.start("mplayer", args);
mplayer_process.waitForFinished();
@@ -68,40 +73,34 @@ DetailsDialog::DetailsDialog(const QString &path, QWidget *parent)
{
//general info
if (rx_id_length.indexIn(line) > -1)
- ui.lengthLabel->setText(rx_id_length.cap(1)); //TODO use hh:mm:ss format
+ ap.insert(tr("Length"),rx_id_length.cap(1)); //TODO use hh:mm:ss format
else if (rx_id_demuxer.indexIn(line) > -1)
- ui.demuxerLabel->setText(rx_id_demuxer.cap(1));
+ ap.insert(tr("Demuxer"), rx_id_demuxer.cap(1));
//video info
else if (rx_id_video_format.indexIn(line) > -1)
- ui.videoFormatLabel->setText(rx_id_video_format.cap(1));
+ ap.insert(tr("Video format"), rx_id_video_format.cap(1));
else if (rx_id_video_fps.indexIn(line) > -1)
- ui.fpsLabel->setText(rx_id_video_fps.cap(1));
+ ap.insert(tr("FPS"), rx_id_video_fps.cap(1));
else if (rx_id_video_codec.indexIn(line) > -1)
- ui.videoCodecLabel->setText(rx_id_video_codec.cap(1));
+ ap.insert(tr("Video codec"), rx_id_video_codec.cap(1));
else if (rx_id_video_aspect.indexIn(line) > -1)
- ui. ratioLabel->setText(rx_id_video_aspect.cap(1));
+ ap.insert(tr("Aspect ratio"),rx_id_video_aspect.cap(1));
else if (rx_id_video_bitrate.indexIn(line) > -1)
- ui.videoBitrateLabel->setText(rx_id_video_bitrate.cap(1));
+ ap.insert(tr("Video bitrate"), rx_id_video_bitrate.cap(1));
else if (rx_id_width.indexIn(line) > -1)
width = rx_id_width.cap(1).toInt();
else if (rx_id_height.indexIn(line) > -1)
height = rx_id_height.cap(1).toInt();
//audio info
else if (rx_id_audio_codec.indexIn(line) > -1)
- ui.audioCodecLabel->setText(rx_id_audio_codec.cap(1));
+ ap.insert(tr("Audio codec"),rx_id_audio_codec.cap(1));
else if (rx_id_audio_rate.indexIn(line) > -1)
- ui.sampleRateLabel->setText(rx_id_audio_rate.cap(1));
+ ap.insert(tr("Sample rate"), rx_id_audio_rate.cap(1));
else if (rx_id_audio_bitrate.indexIn(line) > -1)
- ui.audioBitrateLabel->setText(rx_id_audio_bitrate.cap(1));
+ ap.insert(tr("Audio bitrate"), rx_id_audio_bitrate.cap(1));
else if (rx_id_audio_nch.indexIn(line) > -1)
- ui.channelsLabel->setText(rx_id_audio_nch.cap(1));
+ ap.insert(tr("Channels"), rx_id_audio_nch.cap(1));
}
- ui.resolutionLabel->setText(QString("%1x%2").arg(width).arg(height));
+ vp.insert(tr("Resolution"), QString("%1x%2").arg(width).arg(height));
+ return ap;
}
-
-
-DetailsDialog::~DetailsDialog()
-{
-}
-
-
diff --git a/src/plugins/Input/mplayer/detailsdialog.h b/src/plugins/Engines/mplayer/mplayermetadatamodel.h
index 0d4af20a7..3cfe4662c 100644
--- a/src/plugins/Input/mplayer/detailsdialog.h
+++ b/src/plugins/Engines/mplayer/mplayermetadatamodel.h
@@ -17,27 +17,22 @@
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#ifndef DETAILSDIALOG_H
-#define DETAILSDIALOG_H
-#include <QDialog>
+#ifndef MPLAYERMETADATAMODEL_H
+#define MPLAYERMETADATAMODEL_H
-#include "ui_detailsdialog.h"
+#include <qmmp/metadatamodel.h>
-/**
- @author Ilya Kotov <forkotov02@hotmail.ru>
-*/
-class DetailsDialog : public QDialog
+class MplayerMetaDataModel : public MetaDataModel
{
- Q_OBJECT
+Q_OBJECT
public:
- DetailsDialog(const QString &path, QWidget *parent = 0);
-
- ~DetailsDialog();
+ MplayerMetaDataModel(const QString &path, QObject *parent);
+ ~MplayerMetaDataModel();
+ QHash<QString, QString> audioProperties();
private:
- Ui::DetailsDialog ui;
-
+ QString m_path;
};
-#endif
+#endif // MPLAYERMETADATAMODEL_H
diff --git a/src/plugins/Input/mplayer/settingsdialog.cpp b/src/plugins/Engines/mplayer/settingsdialog.cpp
index 029890eb1..029890eb1 100644
--- a/src/plugins/Input/mplayer/settingsdialog.cpp
+++ b/src/plugins/Engines/mplayer/settingsdialog.cpp
diff --git a/src/plugins/Input/mplayer/settingsdialog.h b/src/plugins/Engines/mplayer/settingsdialog.h
index 9ba56bce8..9ba56bce8 100644
--- a/src/plugins/Input/mplayer/settingsdialog.h
+++ b/src/plugins/Engines/mplayer/settingsdialog.h
diff --git a/src/plugins/Input/mplayer/settingsdialog.ui b/src/plugins/Engines/mplayer/settingsdialog.ui
index 86dbfe8f6..86dbfe8f6 100644
--- a/src/plugins/Input/mplayer/settingsdialog.ui
+++ b/src/plugins/Engines/mplayer/settingsdialog.ui
diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_cs.ts b/src/plugins/Engines/mplayer/translations/mplayer_plugin_cs.ts
index 26f09d606..26f09d606 100644
--- a/src/plugins/Input/mplayer/translations/mplayer_plugin_cs.ts
+++ b/src/plugins/Engines/mplayer/translations/mplayer_plugin_cs.ts
diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_de.ts b/src/plugins/Engines/mplayer/translations/mplayer_plugin_de.ts
index 2f029c38b..2f029c38b 100644
--- a/src/plugins/Input/mplayer/translations/mplayer_plugin_de.ts
+++ b/src/plugins/Engines/mplayer/translations/mplayer_plugin_de.ts
diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_it.ts b/src/plugins/Engines/mplayer/translations/mplayer_plugin_it.ts
index f405e4505..f405e4505 100644
--- a/src/plugins/Input/mplayer/translations/mplayer_plugin_it.ts
+++ b/src/plugins/Engines/mplayer/translations/mplayer_plugin_it.ts
diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_lt.ts b/src/plugins/Engines/mplayer/translations/mplayer_plugin_lt.ts
index 87d1c6b33..87d1c6b33 100644
--- a/src/plugins/Input/mplayer/translations/mplayer_plugin_lt.ts
+++ b/src/plugins/Engines/mplayer/translations/mplayer_plugin_lt.ts
diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_pl.ts b/src/plugins/Engines/mplayer/translations/mplayer_plugin_pl.ts
index fadc08ecc..fadc08ecc 100644
--- a/src/plugins/Input/mplayer/translations/mplayer_plugin_pl.ts
+++ b/src/plugins/Engines/mplayer/translations/mplayer_plugin_pl.ts
diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_ru.ts b/src/plugins/Engines/mplayer/translations/mplayer_plugin_ru.ts
index b4169c849..b4169c849 100644
--- a/src/plugins/Input/mplayer/translations/mplayer_plugin_ru.ts
+++ b/src/plugins/Engines/mplayer/translations/mplayer_plugin_ru.ts
diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_tr.ts b/src/plugins/Engines/mplayer/translations/mplayer_plugin_tr.ts
index f1ba30cb0..f1ba30cb0 100644
--- a/src/plugins/Input/mplayer/translations/mplayer_plugin_tr.ts
+++ b/src/plugins/Engines/mplayer/translations/mplayer_plugin_tr.ts
diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_uk_UA.ts b/src/plugins/Engines/mplayer/translations/mplayer_plugin_uk_UA.ts
index 95a95ccb6..95a95ccb6 100644
--- a/src/plugins/Input/mplayer/translations/mplayer_plugin_uk_UA.ts
+++ b/src/plugins/Engines/mplayer/translations/mplayer_plugin_uk_UA.ts
diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_zh_CN.ts b/src/plugins/Engines/mplayer/translations/mplayer_plugin_zh_CN.ts
index a20be020d..a20be020d 100644
--- a/src/plugins/Input/mplayer/translations/mplayer_plugin_zh_CN.ts
+++ b/src/plugins/Engines/mplayer/translations/mplayer_plugin_zh_CN.ts
diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_zh_TW.ts b/src/plugins/Engines/mplayer/translations/mplayer_plugin_zh_TW.ts
index 66c75d389..66c75d389 100644
--- a/src/plugins/Input/mplayer/translations/mplayer_plugin_zh_TW.ts
+++ b/src/plugins/Engines/mplayer/translations/mplayer_plugin_zh_TW.ts
diff --git a/src/plugins/Input/mplayer/translations/translations.qrc b/src/plugins/Engines/mplayer/translations/translations.qrc
index 7a98c5a7f..7a98c5a7f 100644
--- a/src/plugins/Input/mplayer/translations/translations.qrc
+++ b/src/plugins/Engines/mplayer/translations/translations.qrc
diff --git a/src/plugins/Input/CMakeLists.txt b/src/plugins/Input/CMakeLists.txt
index b6cb405d5..2d2ca0a49 100644
--- a/src/plugins/Input/CMakeLists.txt
+++ b/src/plugins/Input/CMakeLists.txt
@@ -11,7 +11,6 @@ SET(USE_WAVPACK TRUE CACHE BOOL "enable/disable wavpack plugin")
SET(USE_MODPLUG TRUE CACHE BOOL "enable/disable modplug plugin")
SET(USE_AAC TRUE CACHE BOOL "enable/disable aac plugin")
SET(USE_CUE TRUE CACHE BOOL "enable/disable cue plugin")
-#SET(USE_MPLAYER TRUE CACHE BOOL "enable/disable mplayer support")
SET(USE_CDA TRUE CACHE BOOL "enable/disable cd audio support")
pkg_check_modules(TAGLIB taglib)
@@ -56,10 +55,6 @@ IF(USE_CUE)
add_subdirectory(cue)
ENDIF(USE_CUE)
-IF(USE_MPLAYER)
-#add_subdirectory(mplayer)
-ENDIF(USE_MPLAYER)
-
IF(USE_CDA)
add_subdirectory(cdaudio)
ENDIF(USE_CDA)
diff --git a/src/plugins/Input/cue/cueparser.cpp b/src/plugins/Input/cue/cueparser.cpp
index b6fb8594d..ba4305bfc 100644
--- a/src/plugins/Input/cue/cueparser.cpp
+++ b/src/plugins/Input/cue/cueparser.cpp
@@ -25,6 +25,7 @@
#include <QTextCodec>
#include <qmmp/decoder.h>
+#include <qmmp/metadatamanager.h>
#include "cueparser.h"
@@ -113,7 +114,7 @@ CUEParser::CUEParser(const QString &fileName)
m_infoList[i].setLength(m_infoList[i+1].length() - m_infoList[i].length());
else
{
- QList <FileInfo *> f_list = Decoder::createPlayList(m_files[i], FALSE);
+ QList <FileInfo *> f_list = MetaDataManager::instance()->createPlayList(m_files[i], FALSE);
qint64 l = f_list.isEmpty() ? 0 : f_list.at(0)->length() * 1000;
if (l > m_infoList[i].length())
m_infoList[i].setLength(l - m_infoList[i].length());
@@ -123,7 +124,7 @@ CUEParser::CUEParser(const QString &fileName)
}
//calculate last item length
- QList <FileInfo *> f_list = Decoder::createPlayList(m_filePath, FALSE);
+ QList <FileInfo *> f_list = MetaDataManager::instance()->createPlayList(m_filePath, FALSE);
qint64 l = f_list.isEmpty() ? 0 : f_list.at(0)->length() * 1000;
if (l > m_infoList.last().length())
m_infoList.last().setLength(l - m_infoList.last().length());
diff --git a/src/plugins/Input/flac/cueparser.cpp b/src/plugins/Input/flac/cueparser.cpp
index 20bf94ec7..75b538bcf 100644
--- a/src/plugins/Input/flac/cueparser.cpp
+++ b/src/plugins/Input/flac/cueparser.cpp
@@ -21,7 +21,7 @@
#include <QTextStream>
#include <QTextCodec>
-#include <qmmp/decoder.h>
+#include <qmmp/metadatamanager.h>
#include "cueparser.h"
@@ -94,7 +94,7 @@ CUEParser::CUEParser(const QByteArray &array, const QString &fileName)
for (int i = 0; i < m_infoList.size() - 1; ++i)
m_infoList[i].setLength(m_infoList[i+1].length() - m_infoList[i].length());
//calculate last item length
- QList <FileInfo *> f_list = Decoder::createPlayList(m_filePath, FALSE);
+ QList <FileInfo *> f_list = MetaDataManager::instance()->createPlayList(m_filePath, FALSE);
qint64 l = f_list.isEmpty() ? 0 : f_list.at(0)->length() * 1000;
if (l > m_infoList.last().length())
m_infoList.last().setLength(l - m_infoList.last().length());
diff --git a/src/plugins/Input/mplayer/detailsdialog.ui b/src/plugins/Input/mplayer/detailsdialog.ui
deleted file mode 100644
index 37358df2b..000000000
--- a/src/plugins/Input/mplayer/detailsdialog.ui
+++ /dev/null
@@ -1,390 +0,0 @@
-<ui version="4.0" >
- <class>DetailsDialog</class>
- <widget class="QDialog" name="DetailsDialog" >
- <property name="geometry" >
- <rect>
- <x>0</x>
- <y>0</y>
- <width>415</width>
- <height>351</height>
- </rect>
- </property>
- <property name="windowTitle" >
- <string>Details</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_4" >
- <property name="leftMargin" >
- <number>5</number>
- </property>
- <property name="topMargin" >
- <number>9</number>
- </property>
- <property name="rightMargin" >
- <number>5</number>
- </property>
- <property name="bottomMargin" >
- <number>5</number>
- </property>
- <item row="0" column="0" colspan="2" >
- <widget class="QGroupBox" name="groupBox_3" >
- <property name="title" >
- <string>General information</string>
- </property>
- <layout class="QGridLayout" name="gridLayout" >
- <item row="0" column="0" >
- <widget class="QLabel" name="label" >
- <property name="text" >
- <string>File path:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1" >
- <widget class="QLineEdit" name="pathLineEdit" >
- <property name="readOnly" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <widget class="QLabel" name="label_2" >
- <property name="text" >
- <string>Size:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1" >
- <widget class="QLabel" name="sizeLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0" >
- <widget class="QLabel" name="label_4" >
- <property name="text" >
- <string>Demuxer:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="1" >
- <widget class="QLabel" name="demuxerLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0" >
- <widget class="QLabel" name="label_3" >
- <property name="text" >
- <string>Length:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1" >
- <widget class="QLabel" name="lengthLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="1" column="0" >
- <widget class="QGroupBox" name="groupBox" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title" >
- <string>Video</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_2" >
- <item row="0" column="0" >
- <widget class="QLabel" name="label_9" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Resolution:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1" colspan="2" >
- <widget class="QLabel" name="resolutionLabel" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <widget class="QLabel" name="label_10" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Bitrate:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1" colspan="2" >
- <widget class="QLabel" name="videoBitrateLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0" >
- <widget class="QLabel" name="label_11" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Format:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="1" colspan="2" >
- <widget class="QLabel" name="videoFormatLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0" >
- <widget class="QLabel" name="label_12" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>FPS:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1" colspan="2" >
- <widget class="QLabel" name="fpsLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0" >
- <widget class="QLabel" name="label_13" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Codec:</string>
- </property>
- </widget>
- </item>
- <item row="4" column="1" colspan="2" >
- <widget class="QLabel" name="videoCodecLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="5" column="0" >
- <widget class="QLabel" name="label_19" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Aspect ratio:</string>
- </property>
- </widget>
- </item>
- <item row="5" column="1" colspan="2" >
- <widget class="QLabel" name="ratioLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="1" column="1" >
- <widget class="QGroupBox" name="groupBox_2" >
- <property name="title" >
- <string>Audio</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_3" >
- <item row="0" column="0" >
- <widget class="QLabel" name="label_21" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Codec:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="2" >
- <widget class="QLabel" name="audioCodecLabel" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <widget class="QLabel" name="label_23" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Sample rate:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="2" >
- <widget class="QLabel" name="sampleRateLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0" >
- <widget class="QLabel" name="label_25" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Bitrate:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="2" >
- <widget class="QLabel" name="audioBitrateLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0" >
- <widget class="QLabel" name="label_24" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Channels:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="2" >
- <widget class="QLabel" name="channelsLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0" colspan="2" >
- <spacer name="verticalSpacer" >
- <property name="orientation" >
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>20</width>
- <height>37</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- </item>
- <item row="2" column="0" colspan="2" >
- <layout class="QHBoxLayout" name="horizontalLayout" >
- <property name="spacing" >
- <number>0</number>
- </property>
- <item>
- <spacer name="horizontalSpacer" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>330</width>
- <height>24</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="closeButton" >
- <property name="text" >
- <string>Close</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>closeButton</sender>
- <signal>clicked()</signal>
- <receiver>DetailsDialog</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>381</x>
- <y>334</y>
- </hint>
- <hint type="destinationlabel" >
- <x>23</x>
- <y>324</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/src/plugins/Input/mplayer/mplayer.pro b/src/plugins/Input/mplayer/mplayer.pro
deleted file mode 100644
index 4be7bbd50..000000000
--- a/src/plugins/Input/mplayer/mplayer.pro
+++ /dev/null
@@ -1,45 +0,0 @@
-include(../../plugins.pri)
-
-HEADERS += decodermplayerfactory.h \
- decoder_mplayer.h \
- detailsdialog.h \
- settingsdialog.h
-
-SOURCES += decoder_mplayer.cpp \
- decodermplayerfactory.cpp \
- detailsdialog.cpp \
- settingsdialog.cpp
-
-TARGET =$$PLUGINS_PREFIX/Input/mplayer
-QMAKE_CLEAN =$$PLUGINS_PREFIX/Input/libmplayer.so
-
-INCLUDEPATH += ../../../
-CONFIG += release \
-warn_on \
-plugin
-
-TEMPLATE = lib
-
-QMAKE_LIBDIR += ../../../../lib
-LIBS += -lqmmp -L/usr/lib
-
-TRANSLATIONS = translations/mplayer_plugin_ru.ts \
- translations/mplayer_plugin_uk_UA.ts \
- translations/mplayer_plugin_zh_CN.ts \
- translations/mplayer_plugin_zh_TW.ts \
- translations/mplayer_plugin_cs.ts \
- translations/mplayer_plugin_pl.ts \
- translations/mplayer_plugin_de.ts \
- translations/mplayer_plugin_it.ts \
- translations/mplayer_plugin_tr.ts \
- translations/mplayer_plugin_lt.ts
-RESOURCES = translations/translations.qrc
-
-isEmpty(LIB_DIR){
- LIB_DIR = /lib
-}
-target.path = $$LIB_DIR/qmmp/Input
-INSTALLS += target
-
-FORMS += detailsdialog.ui \
- settingsdialog.ui
diff --git a/src/plugins/Input/wavpack/cueparser.cpp b/src/plugins/Input/wavpack/cueparser.cpp
index 41190be4b..cf63e41a1 100644
--- a/src/plugins/Input/wavpack/cueparser.cpp
+++ b/src/plugins/Input/wavpack/cueparser.cpp
@@ -20,9 +20,7 @@
#include <QTextStream>
#include <QTextCodec>
-
-#include <qmmp/decoder.h>
-
+#include <qmmp/metadatamanager.h>
#include "cueparser.h"
CUEParser::CUEParser(const QByteArray &array, const QString &fileName)
@@ -94,7 +92,7 @@ CUEParser::CUEParser(const QByteArray &array, const QString &fileName)
for (int i = 0; i < m_infoList.size() - 1; ++i)
m_infoList[i].setLength(m_infoList[i+1].length() - m_infoList[i].length());
//calculate last item length
- QList <FileInfo *> f_list = Decoder::createPlayList(m_filePath, FALSE);
+ QList <FileInfo *> f_list = MetaDataManager::instance()->createPlayList(m_filePath, FALSE);
qint64 l = f_list.isEmpty() ? 0 : f_list.at(0)->length() * 1000;
if (l > m_infoList.last().length())
m_infoList.last().setLength(l - m_infoList.last().length());
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index dfa993d89..17c618685 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -2,7 +2,8 @@ SUBDIRS += Input \
Output \
General \
Visual \
- Transports
+ Transports \
+ Engines
unix:SUBDIRS += Effect \
PlaylistFormats \