]> git.tdb.fi Git - libs/al.git/blob - source/waveform.cpp
Split Sound into SoundDecoder and Waveform parts
[libs/al.git] / source / waveform.cpp
1 #include "sounddecoder.h"
2 #include "waveform.h"
3
4 using namespace std;
5
6 namespace Msp {
7 namespace AL {
8
9 Waveform::Waveform():
10         format(MONO8),
11         freq(0),
12         size(0),
13         data(0)
14 { }
15
16 Waveform::~Waveform()
17 {
18         delete[] data;
19 }
20
21 void Waveform::load_file(const string &fn)
22 {
23         SoundDecoder decoder;
24         decoder.open_file(fn);
25         load(decoder);
26 }
27
28 void Waveform::load_memory(const void *d, unsigned len)
29 {
30         SoundDecoder decoder;
31         decoder.open_memory(d, len);
32         load(decoder);
33 }
34
35 void Waveform::load(SoundDecoder &decoder)
36 {
37         delete[] data;
38
39         format = decoder.get_format();
40         freq = decoder.get_frequency();
41         size = decoder.get_size();
42         data = new char[size];
43         unsigned pos = 0;
44         while(unsigned len = decoder.read(data+pos, size-pos))
45                 pos += len;
46         size = pos;
47 }
48
49 } // namespace AL
50 } // namespace Msp