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 #include <QWaitCondition>
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();
00081 QWaitCondition *cond();
00086 virtual void setEQ(double bands[10], double preamp) = 0;
00091 virtual void setEQEnabled(bool on) = 0;
00095 static QList<EngineFactory*> *factories();
00099 static EngineFactory *findByPath(const QString &path);
00105 static void setEnabled(EngineFactory* factory, bool enable = true);
00110 static bool isEnabled(EngineFactory* factory);
00114 static QStringList files();
00115
00116 signals:
00120 void playbackFinished();
00121
00122 private:
00123 QMutex m_mutex;
00124 QWaitCondition m_waitCondition;
00125
00126 static void checkFactories();
00127 static QList<EngineFactory*> *m_factories;
00128 static QStringList m_files;
00129 };
00130
00131
00132 #endif // ABSTRACTENGINE_H