Initial commit
[camargo/neiasound.git] / src / qt / qtaudiostream.h
1 #ifndef QTAUDIOSTREAM_H
2 #define QTAUDIOSTREAM_H
3
4 #include "../nSoundStream.h"
5 #include <QAudioFormat>
6 #include <QAudioBuffer>
7 #include <QBuffer>
8
9
10 class QIODevice;
11 class QAudioDecoder;
12
13 class nQtAudioStream : public nSoundStream
14 {
15     Q_OBJECT
16 public:
17     explicit nQtAudioStream(QIODevice * dev, QObject *parent = 0);
18     ~nQtAudioStream();
19
20 signals:
21
22 public slots:
23     virtual quint64 frames() { return _totalFrames; }
24     virtual int channels() { return _channels; }
25     virtual int frequency() { return _frequency; }
26
27     virtual nSoundFormat format() { return _format; }
28     virtual bool suggestStreaming() { return _totalFrames > 88200; }
29
30     virtual quint64 read(void* data, unsigned long frames);
31     virtual void rewind();
32
33
34 private:
35     QIODevice * _device;
36     QBuffer _deviceBuf;
37
38     QAudioDecoder * _decoder;
39     QAudioFormat _qtFormat;
40     QAudioBuffer _lastBuf;
41     int _lastBufConsumedFrames;
42
43
44
45     quint64 _totalFrames;
46     int _channels;
47     int _frequency;
48     nSoundFormat _format;
49 };
50
51 #endif // QTAUDIOSTREAM_H