Qmmp
/usr/src/RPM/BUILD/qmmp-0.8-svn/src/qmmp/output.h
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
 All Classes Functions Variables Enumerations Enumerator