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(); 00097 static DecoderFactory *findByPath(const QString &path); 00101 static DecoderFactory *findByMime(const QString &mime); 00106 static DecoderFactory *findByContent(QIODevice *input); 00110 static DecoderFactory *findByProtocol(const QString &p); 00114 static QList<DecoderFactory*> *factories(); 00118 static QStringList files(); 00124 static void setEnabled(DecoderFactory* factory, bool enable = true); 00129 static bool isEnabled(DecoderFactory* factory); 00130 00131 protected: 00138 void configure(quint32 srate = 44100, int chan = 2, Qmmp::AudioFormat f = Qmmp::PCM_S16LE); 00139 00140 private: 00141 static void checkFactories(); 00142 static QList<DecoderFactory*> *m_factories; 00143 static DecoderFactory *m_lastFactory; 00144 static QStringList m_files; 00145 AudioParameters m_parameters; 00146 QIODevice *m_input; 00147 QMap <Qmmp::ReplayGainKey, double> m_rg; //replay gain information 00148 }; 00149 00150 #endif // DECODER_H
1.5.9