Qmmp
/usr/src/RPM/BUILD/qmmp-0.7-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 <QList>
00011 #include <QStringList>
00012 #include <QUrl>
00013 #include <QList>
00014 #include <QPixmap>
00015 #include <QMap>
00016 #include "fileinfo.h"
00017 #include "qmmp.h"
00018 #include "audioparameters.h"
00019 
00020 class Decoder;
00021 class DecoderFactory;
00022 class QIODevice;
00023 
00028 class Decoder
00029 {
00030 public:
00035     Decoder(QIODevice *input = 0);
00039     virtual ~Decoder();
00044     virtual bool initialize() = 0;
00049     virtual qint64 totalTime() = 0;
00053     virtual void seek(qint64 time) = 0;
00059     virtual qint64 read(char *data, qint64 maxSize) = 0;
00064     virtual int bitrate() = 0;
00071     virtual void next();
00077     virtual const QString nextURL();
00081     AudioParameters audioParameters() const;
00085     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();
00136     static QString file(DecoderFactory *factory);
00141     static QStringList protocols();
00147     static void setEnabled(DecoderFactory* factory, bool enable = true);
00152     static bool isEnabled(DecoderFactory* factory);
00153 
00154 protected:
00161     void configure(quint32 srate = 44100, int chan = 2, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
00162 
00163 private:
00164     static void checkFactories();
00165     static QList<DecoderFactory*> *m_factories;
00166     static QList<DecoderFactory*> *m_disabledFactories;
00167     static DecoderFactory *m_lastFactory;
00168     static QHash <DecoderFactory*, QString> *m_files;
00169     AudioParameters m_parameters;
00170     QIODevice *m_input;
00171     bool m_hasMetaData;
00172     QMap<Qmmp::MetaData, QString> m_metaData;
00173     QMap <Qmmp::ReplayGainKey, double> m_rg; //replay gain information
00174 };
00175 
00176 #endif // DECODER_H
 All Classes Functions Variables Enumerations Enumerator