00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef ABSTRACTENGINE_H
00022 #define ABSTRACTENGINE_H
00023
00024 #include <QMutex>
00025
00026 #include <QThread>
00027 #include <QStringList>
00028 #include "enginefactory.h"
00029 #include "qmmpsettings.h"
00030
00031 class QIODevice;
00032 class InputSource;
00033
00034
00038 class AbstractEngine : public QThread
00039 {
00040 Q_OBJECT
00041 public:
00046 AbstractEngine(QObject *parent = 0);
00051 virtual bool enqueue(InputSource *source) = 0;
00056 virtual qint64 totalTime() = 0;
00061 virtual bool play() = 0;
00065 virtual void seek(qint64 time) = 0;
00069 virtual void stop() = 0;
00073 virtual void pause() = 0;
00077 QMutex *mutex();
00084 static AbstractEngine *create(InputSource *s, QObject *parent = 0);
00088 static QList<EngineFactory*> *factories();
00092 static EngineFactory *findByPath(const QString &path);
00098 static void setEnabled(EngineFactory* factory, bool enable = true);
00103 static bool isEnabled(EngineFactory* factory);
00108 static QString file(EngineFactory *factory);
00113 static QStringList protocols();
00114
00115 private:
00116 QMutex m_mutex;
00117 static void checkFactories();
00118 static QList<EngineFactory*> *m_factories;
00119 static QList<EngineFactory*> *m_disabledFactories;
00120 static QHash <EngineFactory*, QString> *m_files;
00121 };
00122
00123
00124 #endif // ABSTRACTENGINE_H