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 "trackinfo.h"
17 #include "channelmap.h"
18 
19 class QTimer;
20 class QmmpSettings;
21 class QmmpPluginCache;
22 
27 class QMMP_EXPORT Output
28 {
29 public:
33  Output();
37  virtual ~Output();
46  virtual bool initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat format) = 0;
50  virtual qint64 latency() = 0;
60  virtual qint64 writeAudio(unsigned char *data, qint64 maxSize) = 0;
65  virtual void drain() = 0;
70  virtual void reset() = 0;
74  virtual void suspend();
78  virtual void resume();
79 
80  virtual void setTrackInfo(const TrackInfo &info);
84  AudioParameters audioParameters() const;
88  quint32 sampleRate() const;
92  int channels() const;
96  const ChannelMap channelMap() const;
100  Qmmp::AudioFormat format() const;
104  int sampleSize() const;
109  static Output *create();
113  static QList<OutputFactory*> factories();
118  static QString file(OutputFactory *factory);
122  static void setCurrentFactory(OutputFactory* factory);
126  static OutputFactory *currentFactory();
127 
128 protected:
135  void configure(quint32 freq, ChannelMap map, Qmmp::AudioFormat format);
136 
137 private:
138  quint32 m_frequency;
139  ChannelMap m_chan_map;
140  Qmmp::AudioFormat m_format;
141  int m_sample_size;
142  static void loadPlugins();
143  static QList<QmmpPluginCache*> *m_cache;
144 };
145 
146 
147 #endif // OUTPUT_H
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:27
AudioFormat
Definition: qmmp.h:105
Output plugin interface (output factory).
Definition: outputfactory.h:56