Qmmp
/usr/src/RPM/BUILD/qmmp-1.1.7/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() = 0;
00052     virtual void seek(qint64 time) = 0;
00058     virtual qint64 read(unsigned char *data, qint64 maxSize) = 0;
00063     virtual int bitrate() = 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 *findByPath(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);
00131     static QList<DecoderFactory*> factories();
00135     static QList<DecoderFactory*> enabledFactories();
00140     static QString file(DecoderFactory *factory);
00145     static QStringList protocols();
00151     static void setEnabled(DecoderFactory* factory, bool enable = true);
00156     static bool isEnabled(DecoderFactory* factory);
00157 
00158 protected:
00165     void configure(quint32 srate, const ChannelMap &map, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
00172     void configure(quint32 srate, int channels, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
00173 
00174 private:
00175     static void loadPlugins();
00176     static DecoderFactory *m_lastFactory;
00177     static QList<QmmpPluginCache*> *m_cache;
00178     static QStringList m_disabledNames;
00179     AudioParameters m_parameters;
00180     QIODevice *m_input;
00181     bool m_hasMetaData;
00182     QMap<Qmmp::MetaData, QString> m_metaData;
00183     QMap <Qmmp::ReplayGainKey, double> m_rg; //replay gain information
00184 };
00185 
00186 #endif // DECODER_H
 All Classes Functions Variables Enumerations Enumerator