Qmmp
Loading...
Searching...
No Matches
decoder.h
1// Copyright (c) 2000-2001 Brad Hughes <bhughes@trolltech.com>
2//
3// Use, modification and distribution is allowed without limitation,
4// warranty, or liability of any kind.
5//
6
7#ifndef DECODER_H
8#define DECODER_H
9
10#include <QStringList>
11#include <QList>
12#include <QMap>
13#include <QVariant>
14#include <QIODevice>
15#include "qmmp.h"
16#include "audioparameters.h"
17#include "channelmap.h"
18
19class QmmpPluginCache;
20class DecoderFactory;
21
26class QMMP_EXPORT Decoder
27{
28public:
33 Decoder(QIODevice *input = nullptr);
37 virtual ~Decoder();
42 virtual bool initialize() = 0;
47 virtual qint64 totalTime() const = 0;
52 virtual void seek(qint64 time) = 0;
58 virtual qint64 read(unsigned char *data, qint64 maxSize) = 0;
63 virtual int bitrate() const = 0;
70 virtual void next();
76 virtual const QString nextURL() const;
84 const QMap<Qmmp::ReplayGainKey, double> &replayGainInfo() const;
89 void setReplayGainInfo(const QMap<Qmmp::ReplayGainKey,double> &rg);
93 QIODevice *input();
99 void addMetaData(const QMap<Qmmp::MetaData, QString> &metaData);
103 bool hasMetaData() const;
108 QMap<Qmmp::MetaData, QString> takeMetaData();
114 void setProperty(Qmmp::TrackProperty key, const QVariant &value);
119 void setProperties(const QMap<Qmmp::TrackProperty, QString> &properties);
123 QMap<Qmmp::TrackProperty, QString> properties() const;
129 static DecoderFactory *findByFilePath(const QString &path, bool useContent = false);
133 static DecoderFactory *findByMime(const QString &mime);
138 static DecoderFactory *findByContent(QIODevice *input);
142 static DecoderFactory *findByProtocol(const QString &p);
147 static QList<DecoderFactory *> findByFileExtension(const QString &path);
151 static QList<DecoderFactory*> factories();
155 static QList<DecoderFactory*> enabledFactories();
159 static QStringList nameFilters();
163 static QStringList contentTypes();
168 static QString file(const DecoderFactory *factory);
173 static QStringList protocols();
179 static void setEnabled(DecoderFactory *factory, bool enable = true);
184 static bool isEnabled(const DecoderFactory* factory);
185
186protected:
193 void configure(quint32 srate, const ChannelMap &map, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
200 void configure(quint32 srate, int channels, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
206
207private:
208 static void loadPlugins();
209 static void updateCache();
210 static QList<QmmpPluginCache*> *m_cache;
211 static QStringList m_disabledNames;
212 AudioParameters m_parameters;
213 QMap<Qmmp::TrackProperty, QString> m_properties;
214 QIODevice *m_input;
215 bool m_hasMetaData = false;
216 QMap<Qmmp::MetaData, QString> m_metaData;
217 QMap <Qmmp::ReplayGainKey, double> m_rg; //replay gain information
218};
219
220#endif // DECODER_H
The AudioParameters class keeps information about audio settings.
Definition audioparameters.h:32
This class represents audio channel mapping.
Definition channelmap.h:31
Input plugin interface (decoder factory).
Definition decoderfactory.h:54
void setProperties(const QMap< Qmmp::TrackProperty, QString > &properties)
static QStringList nameFilters()
QMap< Qmmp::TrackProperty, QString > properties() const
static QStringList protocols()
static QStringList contentTypes()
void setProperty(Qmmp::TrackProperty key, const QVariant &value)
QIODevice * input()
virtual ~Decoder()
virtual bool initialize()=0
void addMetaData(const QMap< Qmmp::MetaData, QString > &metaData)
static DecoderFactory * findByContent(QIODevice *input)
static QList< DecoderFactory * > factories()
void configure(const AudioParameters &p)
virtual int bitrate() const =0
virtual void next()
bool hasMetaData() const
virtual qint64 read(unsigned char *data, qint64 maxSize)=0
Decoder(QIODevice *input=nullptr)
void configure(quint32 srate, const ChannelMap &map, Qmmp::AudioFormat f=Qmmp::PCM_S16LE)
void configure(quint32 srate, int channels, Qmmp::AudioFormat f=Qmmp::PCM_S16LE)
virtual const QString nextURL() const
static QString file(const DecoderFactory *factory)
static void setEnabled(DecoderFactory *factory, bool enable=true)
static DecoderFactory * findByMime(const QString &mime)
static QList< DecoderFactory * > enabledFactories()
static DecoderFactory * findByFilePath(const QString &path, bool useContent=false)
static bool isEnabled(const DecoderFactory *factory)
static QList< DecoderFactory * > findByFileExtension(const QString &path)
QMap< Qmmp::MetaData, QString > takeMetaData()
const AudioParameters & audioParameters() const
const QMap< Qmmp::ReplayGainKey, double > & replayGainInfo() const
virtual void seek(qint64 time)=0
virtual qint64 totalTime() const =0
void setReplayGainInfo(const QMap< Qmmp::ReplayGainKey, double > &rg)
static DecoderFactory * findByProtocol(const QString &p)