Qmmp
/usr/src/RPM/BUILD/qmmp-0.11-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 "channelmap.h"
00018 #include "decoderfactory.h"
00019 
00020 class QmmpPluginCache;
00021 
00026 class Decoder
00027 {
00028 public:
00033     Decoder(QIODevice *input = 0);
00037     virtual ~Decoder();
00042     virtual bool initialize() = 0;
00047     virtual qint64 totalTime() const = 0;
00052     virtual void seek(qint64 time) = 0;
00058     virtual qint64 read(unsigned char *data, qint64 maxSize) = 0;
00063     virtual int bitrate() const = 0;
00070     virtual void next();
00076     virtual const QString nextURL() const;
00080     AudioParameters audioParameters() const;
00084     QMap<Qmmp::ReplayGainKey, double> replayGainInfo() const;
00089     void setReplayGainInfo(const QMap<Qmmp::ReplayGainKey,double> &rg);
00093     QIODevice *input();
00099     void addMetaData(const QMap<Qmmp::MetaData, QString> &metaData);
00103     bool hasMetaData() const;
00108     QMap<Qmmp::MetaData, QString> takeMetaData();
00114     static DecoderFactory *findByFilePath(const QString &path, bool useContent = false);
00118     static DecoderFactory *findByMime(const QString &mime);
00123     static DecoderFactory *findByContent(QIODevice *input);
00127     static DecoderFactory *findByProtocol(const QString &p);
00132     static QList<DecoderFactory *> findByFileExtension(const QString &path);
00136     static QList<DecoderFactory*> factories();
00140     static QList<DecoderFactory*> enabledFactories();
00145     static QString file(DecoderFactory *factory);
00150     static QStringList protocols();
00156     static void setEnabled(DecoderFactory* factory, bool enable = true);
00161     static bool isEnabled(DecoderFactory* factory);
00162 
00163 protected:
00170     void configure(quint32 srate, const ChannelMap &map, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
00177     void configure(quint32 srate, int channels, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
00182     void configure(const AudioParameters &p);
00183 
00184 private:
00185     static void loadPlugins();
00186     static QList<QmmpPluginCache*> *m_cache;
00187     static QStringList m_disabledNames;
00188     AudioParameters m_parameters;
00189     QIODevice *m_input;
00190     bool m_hasMetaData;
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