26 #include <QStringList> 31 #include "inputsourcefactory.h" 33 class QmmpPluginCache;
47 InputSource(
const QString &path, QObject *parent = 0);
52 virtual QIODevice *ioDevice() = 0;
57 virtual bool initialize() = 0;
61 virtual bool isReady() = 0;
67 virtual bool isWaiting();
71 virtual QString contentType()
const;
75 const QString path()
const;
79 qint64 offset()
const;
83 void setOffset(qint64 offset);
89 void addMetaData(
const QMap<Qmmp::MetaData, QString> &metaData);
93 bool hasMetaData()
const;
98 QMap<Qmmp::MetaData, QString> takeMetaData();
104 void addStreamInfo(
const QHash<QString, QString> &info);
108 bool hasStreamInfo()
const;
113 QHash<QString, QString> takeStreamInfo();
120 static InputSource *create(
const QString &path, QObject *parent = 0);
124 static QList<InputSourceFactory *> factories();
128 static QList<InputSourceFactory *> enabledFactories();
137 static QStringList protocols();
163 QMap<Qmmp::MetaData, QString> m_metaData;
164 QHash<QString, QString> m_streamInfo;
165 bool m_hasMetaData, m_hasStreamInfo;
166 static void loadPlugins();
167 static QList<QmmpPluginCache*> *m_cache;
168 static QStringList m_disabledNames;
171 #endif // INPUTSOURCE_H