Qmmp
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 <QIODevice>
14 #include "qmmp.h"
15 #include "audioparameters.h"
16 #include "channelmap.h"
17 
18 class QmmpPluginCache;
19 class DecoderFactory;
20 
25 class QMMP_EXPORT Decoder
26 {
27 public:
32  Decoder(QIODevice *input = 0);
36  virtual ~Decoder();
41  virtual bool initialize() = 0;
46  virtual qint64 totalTime() const = 0;
51  virtual void seek(qint64 time) = 0;
57  virtual qint64 read(unsigned char *data, qint64 maxSize) = 0;
62  virtual int bitrate() const = 0;
69  virtual void next();
75  virtual const QString nextURL() const;
79  AudioParameters audioParameters() const;
83  QMap<Qmmp::ReplayGainKey, double> replayGainInfo() const;
88  void setReplayGainInfo(const QMap<Qmmp::ReplayGainKey,double> &rg);
92  QIODevice *input();
98  void addMetaData(const QMap<Qmmp::MetaData, QString> &metaData);
102  bool hasMetaData() const;
107  QMap<Qmmp::MetaData, QString> takeMetaData();
113  void setProperty(Qmmp::TrackProperty key, const QVariant &value);
118  void setProperties(const QMap<Qmmp::TrackProperty, QString> &properties);
122  const QMap<Qmmp::TrackProperty, QString> &properties() const;
128  static DecoderFactory *findByFilePath(const QString &path, bool useContent = false);
132  static DecoderFactory *findByMime(const QString &mime);
137  static DecoderFactory *findByContent(QIODevice *input);
141  static DecoderFactory *findByProtocol(const QString &p);
146  static QList<DecoderFactory *> findByFileExtension(const QString &path);
150  static QList<DecoderFactory*> factories();
154  static QList<DecoderFactory*> enabledFactories();
158  static QStringList nameFilters();
163  static QString file(DecoderFactory *factory);
168  static QStringList protocols();
174  static void setEnabled(DecoderFactory* factory, bool enable = true);
179  static bool isEnabled(DecoderFactory* factory);
180 
181 protected:
188  void configure(quint32 srate, const ChannelMap &map, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
195  void configure(quint32 srate, int channels, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
200  void configure(const AudioParameters &p);
201 
202 private:
203  static void loadPlugins();
204  static QList<QmmpPluginCache*> *m_cache;
205  static QStringList m_disabledNames;
206  AudioParameters m_parameters;
207  QMap<Qmmp::TrackProperty, QString> m_properties;
208  QIODevice *m_input;
209  bool m_hasMetaData;
210  QMap<Qmmp::MetaData, QString> m_metaData;
211  QMap <Qmmp::ReplayGainKey, double> m_rg; //replay gain information
212 };
213 
214 #endif // DECODER_H
Definition: qmmp.h:110
The AudioParameters class keeps information about audio settings.
Definition: audioparameters.h:31
Input plugin interface (decoder factory).
Definition: decoderfactory.h:64
This class represents audio channel mapping.
Definition: channelmap.h:30
The Decoder class provides the base interface class of audio decoders.
Definition: decoder.h:25
AudioFormat
Definition: qmmp.h:105
TrackProperty
Definition: qmmp.h:81