Initial commit
[camargo/neiasound.git] / src / stb_vorbis / nvorbisstream.h
1 #ifndef NVORBISSTREAM_H
2 #define NVORBISSTREAM_H
3
4 #include "../nSoundStream.h"
5
6 class QIODevice;
7 class stb_vorbis;
8
9 class nVorbisStream : public nSoundStream
10 {
11     Q_OBJECT    
12     Q_PROPERTY(bool error READ error CONSTANT)
13 public:
14     explicit nVorbisStream(QIODevice * device, QObject *parent = 0);
15     ~nVorbisStream();
16
17
18
19     bool error() const
20     {
21         return m_error;
22     }
23
24 signals:
25
26 public slots:
27     virtual quint64 frames() { return _totalFrames; }
28     virtual int channels() { return _channels; }
29     virtual int frequency() { return _frequency; }
30
31     virtual nSoundFormat format() { return _format; }
32     virtual bool suggestStreaming() { return _totalFrames > 88200; }
33
34     virtual quint64 read(void* data, unsigned long frames);
35     virtual void rewind();
36
37 private:
38     QIODevice * _device;
39     QByteArray _qtBuf;
40     char * _buf;
41     int _bufSize;
42
43     stb_vorbis * _vorbis;
44
45     quint64 _totalFrames;
46     int _channels;
47     int _frequency;
48     nSoundFormat _format;
49
50
51     bool m_error;
52 };
53
54 #endif // NVORBISSTREAM_H