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();
84  virtual void setTrackInfo(const TrackInfo &info);
92  quint32 sampleRate() const;
96  int channels() const;
100  const ChannelMap &channelMap() const;
108  int sampleSize() const;
113  static Output *create();
117  static QList<OutputFactory*> factories();
122  static QString file(const OutputFactory *factory);
126  static void setCurrentFactory(const OutputFactory* factory);
131 
132 protected:
139  void configure(quint32 freq, ChannelMap map, Qmmp::AudioFormat format);
140 
141 private:
142  quint32 m_frequency = 0;
143  ChannelMap m_chan_map;
145  int m_sample_size = 0;
146  static void loadPlugins();
147  static QList<QmmpPluginCache*> *m_cache;
148 };
149 
150 
151 #endif // OUTPUT_H
The AudioParameters class keeps information about audio settings.
Definition: audioparameters.h:32
This class represents audio channel mapping.
Definition: channelmap.h:31
Output plugin interface (output factory).
Definition: outputfactory.h:48
The Output class provides the base interface class of audio outputs.
Definition: output.h:28
Qmmp::AudioFormat format() const
virtual void reset()=0
static Output * create()
virtual void setTrackInfo(const TrackInfo &info)
virtual bool initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat format)=0
quint32 sampleRate() const
virtual void drain()=0
int channels() const
static QList< OutputFactory * > factories()
static QString file(const OutputFactory *factory)
virtual void resume()
virtual ~Output()
virtual qint64 writeAudio(unsigned char *data, qint64 maxSize)=0
static void setCurrentFactory(const OutputFactory *factory)
const ChannelMap & channelMap() const
static OutputFactory * currentFactory()
void configure(quint32 freq, ChannelMap map, Qmmp::AudioFormat format)
virtual void suspend()
int sampleSize() const
virtual qint64 latency()=0
AudioParameters audioParameters() const
AudioFormat
Definition: qmmp.h:106
@ PCM_UNKNOWN
Definition: qmmp.h:107
The QmmpSettings class provides access to global settings.
Definition: qmmpsettings.h:36
The TrackInfo class stores metadata and other information about track.
Definition: trackinfo.h:32