Qmmp
output.h
1 
2 // Copyright (c) 2000-2001 Brad Hughes <bhughes@trolltech.com>
3 //
4 // Use, modification and distribution is allowed without limitation,
5 // warranty, or liability of any kind.
6 //
7 
8 #ifndef OUTPUT_H
9 #define OUTPUT_H
10 
11 #include <QList>
12 #include <QIODevice>
13 #include <QMap>
14 #include "outputfactory.h"
15 #include "audioparameters.h"
16 #include "channelmap.h"
17 
18 class QTimer;
19 class QmmpSettings;
20 class QmmpPluginCache;
21 
26 class Output
27 {
28 public:
32  Output();
36  virtual ~Output();
45  virtual bool initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat format) = 0;
49  virtual qint64 latency() = 0;
59  virtual qint64 writeAudio(unsigned char *data, qint64 maxSize) = 0;
64  virtual void drain() = 0;
69  virtual void reset() = 0;
73  virtual void suspend();
77  virtual void resume();
83  virtual void setMetaData(const QMap<Qmmp::MetaData, QString> &metaData);
91  quint32 sampleRate() const;
95  int channels() const;
99  const ChannelMap channelMap() const;
103  Qmmp::AudioFormat format() const;
107  int sampleSize() const;
112  static Output *create();
116  static QList<OutputFactory*> factories();
121  static QString file(OutputFactory *factory);
125  static void setCurrentFactory(OutputFactory* factory);
129  static OutputFactory *currentFactory();
130 
131 protected:
138  void configure(quint32 freq, ChannelMap map, Qmmp::AudioFormat format);
139 
140 private:
141  quint32 m_frequency;
142  ChannelMap m_chan_map;
143  Qmmp::AudioFormat m_format;
144  int m_sample_size;
145  static void loadPlugins();
146  static QList<QmmpPluginCache*> *m_cache;
147 };
148 
149 
150 #endif // OUTPUT_H
int channels() const
static OutputFactory * currentFactory()
The QmmpSettings class provides access to global settings.
Definition: qmmpsettings.h:35
The AudioParameters class keeps information about audio settings.
Definition: audioparameters.h:31
The Output class provides the base interface class of audio outputs.
Definition: output.h:26
const ChannelMap channelMap() const
virtual void suspend()
AudioParameters audioParameters() const
virtual void reset()=0
virtual qint64 latency()=0
int sampleSize() const
void configure(quint32 freq, ChannelMap map, Qmmp::AudioFormat format)
virtual bool initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat format)=0
virtual void setMetaData(const QMap< Qmmp::MetaData, QString > &metaData)
virtual void drain()=0
static void setCurrentFactory(OutputFactory *factory)
virtual qint64 writeAudio(unsigned char *data, qint64 maxSize)=0
quint32 sampleRate() const
static QList< OutputFactory * > factories()
static Output * create()
virtual void resume()
AudioFormat
Definition: qmmp.h:91
Output plugin interface (output factory).
Definition: outputfactory.h:55
virtual ~Output()
static QString file(OutputFactory *factory)
Qmmp::AudioFormat format() const