44 explicit InputSource(
const QString &path, QObject *parent =
nullptr);
50 virtual QIODevice *ioDevice()
const = 0;
55 virtual bool initialize() = 0;
59 virtual bool isReady()
const = 0;
65 virtual bool isWaiting()
const;
69 virtual QString contentType()
const;
86 void setOffset(qint64 offset);
92 void addMetaData(
const QMap<Qmmp::MetaData, QString> &metaData);
96 bool hasMetaData()
const;
101 QMap<Qmmp::MetaData, QString> takeMetaData();
112 void setProperties(
const QMap<Qmmp::TrackProperty, QString> &properties);
116 const QMap<Qmmp::TrackProperty, QString> &properties()
const;
122 void addStreamInfo(
const QHash<QString, QString> &info);
126 bool hasStreamInfo()
const;
131 QHash<QString, QString> takeStreamInfo();
138 static InputSource *create(
const QString &path, QObject *parent =
nullptr);
142 static QList<InputSourceFactory *> factories();
146 static QList<InputSourceFactory *> enabledFactories();
155 static QStringList protocols();
159 static QList<RegularExpression> regExps();
188 qint64 m_offset = -1;
192 bool m_hasMetaData =
false, m_hasStreamInfo =
false;
194 static void loadPlugins();
static constexpr wchar_t key[]