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 00016 class QTimer; 00017 class QmmpSettings; 00018 class QmmpPluginCache; 00019 00024 class Output 00025 { 00026 public: 00030 Output(); 00034 virtual ~Output(); 00043 virtual bool initialize(quint32 freq, int chan, Qmmp::AudioFormat format) = 0; 00047 virtual qint64 latency() = 0; 00057 virtual qint64 writeAudio(unsigned char *data, qint64 maxSize) = 0; 00062 virtual void drain() = 0; 00067 virtual void reset() = 0; 00071 virtual void suspend(); 00075 virtual void resume(); 00079 AudioParameters audioParameters() const; 00083 quint32 sampleRate(); 00087 int channels(); 00091 Qmmp::AudioFormat format() const; 00095 int sampleSize() const; 00100 static Output *create(); 00104 static QList<OutputFactory*> factories(); 00109 static QString file(OutputFactory *factory); 00113 static void setCurrentFactory(OutputFactory* factory); 00117 static OutputFactory *currentFactory(); 00118 00119 protected: 00126 void configure(quint32 freq, int chan, Qmmp::AudioFormat format); 00127 00128 private: 00129 quint32 m_frequency; 00130 int m_channels; 00131 Qmmp::AudioFormat m_format; 00132 static void loadPlugins(); 00133 static QList<QmmpPluginCache*> *m_cache; 00134 }; 00135 00136 00137 #endif // OUTPUT_H