X-Git-Url: http://git.tdb.fi/?p=libs%2Fal.git;a=blobdiff_plain;f=source%2Fwaveform.cpp;fp=source%2Fwaveform.cpp;h=36978c6fc65c816423d86305a8a5d1ee6bb6feed;hp=0000000000000000000000000000000000000000;hb=6cc0f1735a00e8f9eb80ff0c9468fb67205f6d20;hpb=17948408eafd48ea529acd0a70cc45fc5973cb10 diff --git a/source/waveform.cpp b/source/waveform.cpp new file mode 100644 index 0000000..36978c6 --- /dev/null +++ b/source/waveform.cpp @@ -0,0 +1,50 @@ +#include "sounddecoder.h" +#include "waveform.h" + +using namespace std; + +namespace Msp { +namespace AL { + +Waveform::Waveform(): + format(MONO8), + freq(0), + size(0), + data(0) +{ } + +Waveform::~Waveform() +{ + delete[] data; +} + +void Waveform::load_file(const string &fn) +{ + SoundDecoder decoder; + decoder.open_file(fn); + load(decoder); +} + +void Waveform::load_memory(const void *d, unsigned len) +{ + SoundDecoder decoder; + decoder.open_memory(d, len); + load(decoder); +} + +void Waveform::load(SoundDecoder &decoder) +{ + delete[] data; + + format = decoder.get_format(); + freq = decoder.get_frequency(); + size = decoder.get_size(); + data = new char[size]; + unsigned pos = 0; + while(unsigned len = decoder.read(data+pos, size-pos)) + pos += len; + size = pos; +} + +} // namespace AL +} // namespace Msp