]> git.tdb.fi Git - libs/al.git/blob - source/buffer.cpp
Make sound format support optional
[libs/al.git] / source / buffer.cpp
1 #include <msp/io/memory.h>
2 #include "buffer.h"
3 #include "waveform.h"
4
5 using namespace std;
6
7 namespace Msp {
8 namespace AL {
9
10 Buffer::Buffer()
11 {
12         alGenBuffers(1, &id);
13 }
14
15 Buffer::~Buffer()
16 {
17         alDeleteBuffers(1, &id);
18 }
19
20 void Buffer::data(Format fmt, const void *dt, sizei size, sizei freq)
21 {
22         alBufferData(id, fmt, dt, size, freq);
23 }
24
25 void Buffer::data(const Waveform &wave)
26 {
27         data(wave.get_format(), wave.get_data(), wave.get_size(), wave.get_frequency());
28 }
29
30 void Buffer::load_data(const string &fn)
31 {
32         Waveform wave;
33         wave.load_file(fn);
34
35         data(wave);
36 }
37
38
39 Buffer::Loader::Loader(Buffer &b):
40         buf(b)
41 {
42         add("sound_data", &Loader::sound_data);
43 }
44
45 void Buffer::Loader::sound_data(const string &data)
46 {
47         Waveform wave;
48         IO::Memory mem(data.data(), data.size());
49         wave.load_io(mem);
50
51         buf.data(wave);
52 }
53
54 } // namespace AL
55 } // namespace Msp