Qmmp
/usr/src/RPM/BUILD/qmmp-0.11-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 #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
 All Classes Functions Variables Enumerations Enumerator