Qmmp
|
00001 00002 // Copyright (c) 2000-2001 Brad Hughes <bhughes@trolltech.com> 00003 // 00004 // Use, modification and distribution is allowed without limitation, 00005 // warranty, or liability of any kind. 00006 // 00007 00008 #ifndef OUTPUT_H 00009 #define OUTPUT_H 00010 00011 #include <QList> 00012 #include <QIODevice> 00013 #include "outputfactory.h" 00014 #include "audioparameters.h" 00015 #include "channelmap.h" 00016 00017 class QTimer; 00018 class QmmpSettings; 00019 class QmmpPluginCache; 00020 00025 class Output 00026 { 00027 public: 00031 Output(); 00035 virtual ~Output(); 00044 virtual bool initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat format) = 0; 00048 virtual qint64 latency() = 0; 00058 virtual qint64 writeAudio(unsigned char *data, qint64 maxSize) = 0; 00063 virtual void drain() = 0; 00068 virtual void reset() = 0; 00072 virtual void suspend(); 00076 virtual void resume(); 00080 AudioParameters audioParameters() const; 00084 quint32 sampleRate() const; 00088 int channels() const; 00092 const ChannelMap channelMap() const; 00096 Qmmp::AudioFormat format() const; 00100 int sampleSize() const; 00105 static Output *create(); 00109 static QList<OutputFactory*> factories(); 00114 static QString file(OutputFactory *factory); 00118 static void setCurrentFactory(OutputFactory* factory); 00122 static OutputFactory *currentFactory(); 00123 00124 protected: 00131 void configure(quint32 freq, ChannelMap map, Qmmp::AudioFormat format); 00132 00133 private: 00134 quint32 m_frequency; 00135 ChannelMap m_chan_map; 00136 Qmmp::AudioFormat m_format; 00137 int m_sample_size; 00138 static void loadPlugins(); 00139 static QList<QmmpPluginCache*> *m_cache; 00140 }; 00141 00142 00143 #endif // OUTPUT_H