Initial commit to the repository
[deb_shairplay.git] / AirTV-Qt / audiooutput.h
1 #ifndef AUDIOOUTPUT_H
2 #define AUDIOOUTPUT_H
3
4 #include <QObject>
5 #include <QIODevice>
6 #include <QByteArray>
7 #include <QAudioFormat>
8 #include <QAudioDeviceInfo>
9 #include <QAudioOutput>
10 #include <QIODevice>
11
12 class AudioOutput : public QIODevice
13 {
14 Q_OBJECT
15 public:
16 explicit AudioOutput(QObject *parent = 0);
17 bool init(int bits, int channels, int samplerate);
18 bool setDevice(QAudioDeviceInfo deviceInfo);
19
20 void start();
21 void setVolume(float volume);
22 void output(const char *data, int datalen);
23 void flush();
24 void stop();
25
26 qint64 readData(char *data, qint64 maxlen);
27 qint64 writeData(const char *data, qint64 len);
28 qint64 bytesAvailable() const;
29 bool isSequential() const;
30
31 private:
32 void reinit();
33
34 private:
35 bool m_initialized;
36 QByteArray m_buffer;
37 QAudioFormat m_format;
38 QAudioDeviceInfo m_deviceInfo;
39 QAudioOutput* m_output;
40 float m_volume;
41
42 signals:
43
44 public slots:
45
46 private slots:
47 void notified();
48 void stateChanged(QAudio::State state);
49 };
50
51 #endif // AUDIOOUTPUT_H