Qmmp
/usr/src/RPM/BUILD/qmmp-0.8-svn/src/qmmp/decoder.h
00001 // Copyright (c) 2000-2001 Brad Hughes <bhughes@trolltech.com>
00002 //
00003 // Use, modification and distribution is allowed without limitation,
00004 // warranty, or liability of any kind.
00005 //
00006 
00007 #ifndef DECODER_H
00008 #define DECODER_H
00009 
00010 #include <QStringList>
00011 #include <QList>
00012 #include <QMap>
00013 #include <QIODevice>
00014 #include "fileinfo.h"
00015 #include "qmmp.h"
00016 #include "audioparameters.h"
00017 #include "decoderfactory.h"
00018 
00019 class QmmpPluginCache;
00020 
00025 class Decoder
00026 {
00027 public:
00032     Decoder(QIODevice *input = 0);
00036     virtual ~Decoder();
00041     virtual bool initialize() = 0;
00046     virtual qint64 totalTime() = 0;
00051     virtual void seek(qint64 time) = 0;
00057     virtual qint64 read(char *data, qint64 maxSize) = 0;
00067     virtual qint64 read(float *data, qint64 samples);
00072     virtual int bitrate() = 0;
00079     virtual void next();
00085     virtual const QString nextURL();
00089     AudioParameters audioParameters() const;
00093     QMap<Qmmp::ReplayGainKey, double> replayGainInfo() const;
00100     void setReplayGainInfo(const QMap<Qmmp::ReplayGainKey,double> &rg, bool headroom = false);
00104     QIODevice *input();
00110     void addMetaData(const QMap<Qmmp::MetaData, QString> &metaData);
00114     bool hasMetaData() const;
00118     bool hasHeadroom() const;
00123     QMap<Qmmp::MetaData, QString> takeMetaData();
00129     static DecoderFactory *findByPath(const QString &path, bool useContent = false);
00133     static DecoderFactory *findByMime(const QString &mime);
00138     static DecoderFactory *findByContent(QIODevice *input);
00142     static DecoderFactory *findByProtocol(const QString &p);
00146     static QList<DecoderFactory*> factories();
00150     static QList<DecoderFactory*> enabledFactories();
00155     static QString file(DecoderFactory *factory);
00160     static QStringList protocols();
00166     static void setEnabled(DecoderFactory* factory, bool enable = true);
00171     static bool isEnabled(DecoderFactory* factory);
00172 
00173 protected:
00180     void configure(quint32 srate = 44100, int chan = 2, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
00181 
00182 private:
00183     static void loadPlugins();
00184     static DecoderFactory *m_lastFactory;
00185     static QList<QmmpPluginCache*> *m_cache;
00186     static QStringList m_disabledNames;
00187     AudioParameters m_parameters;
00188     QIODevice *m_input;
00189     bool m_hasMetaData;
00190     bool m_hasHeadroom;
00191     QMap<Qmmp::MetaData, QString> m_metaData;
00192     QMap <Qmmp::ReplayGainKey, double> m_rg; //replay gain information
00193 };
00194 
00195 #endif // DECODER_H
 All Classes Functions Variables Enumerations Enumerator