Initial commit
[camargo/neiasound.git] / src / sndfile / nSndfileStream.h
1 #ifndef NSNDFILESTREAM_H
2 #define NSNDFILESTREAM_H
3
4 #include "../nSoundStream.h"
5 #include "../nSoundFormat.h"
6
7 class QIODevice;
8 class nSoundBag;
9
10 class nSndfileStream : public nSoundStream
11 {
12 public:
13     nSndfileStream(QString filename, QObject * parent = 0);
14     nSndfileStream(QIODevice * stream, QObject * parent = 0, bool ownsDevice = true);
15     virtual ~nSndfileStream();
16
17     quint64 frames(){return m_info_frames;}
18     int channels(){return m_info_channels;}
19     int frequency(){return m_info_samplerate;}
20
21     nSoundBag * createSoundBag(QObject * parent = 0);
22
23     nSoundFormat format();
24     bool suggestStreaming();
25
26     void rewind();
27     quint64 read(void* data, unsigned long frames);
28
29 private:
30     void fillInfo();
31
32     QIODevice * m_iodevice;
33     bool m_ownsDevice;
34     void * m_virtualio;
35
36     void * m_sndfile;
37     void * m_sndinfo;
38
39     int m_info_format;
40     quint64 m_info_frames;
41     int m_info_samplerate;
42     int m_info_channels;
43 };
44
45 #endif // NSNDFILESTREAM_H