diff options
Diffstat (limited to 'os2eindopdracht/SampleStream.cpp')
-rw-r--r-- | os2eindopdracht/SampleStream.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/os2eindopdracht/SampleStream.cpp b/os2eindopdracht/SampleStream.cpp index e69de29..b9fd542 100644 --- a/os2eindopdracht/SampleStream.cpp +++ b/os2eindopdracht/SampleStream.cpp @@ -0,0 +1,28 @@ +#include <algorithm> + +#include "SampleStream.h" + +using std::string; + +SampleStream::SampleStream(string input_stream) { + load(input_stream); + + // test direct sample editing: + // std::transform(_stream.begin(), _stream.end(), _stream.begin(), [](int16_t s) { return s/2; }); +} + +void SampleStream::load(string input) { + _stream.clear(); + for (unsigned long i = 0; i < input.size(); i += 2) + _stream.push_back(((input[i] & 0xff) << 0) | ((input[i+1] & 0xff) << 8)); +} + +string SampleStream::save() { + string out; + for (int16_t sample : _stream) { + out.push_back((sample >> 0) & 0xff); + out.push_back((sample >> 8) & 0xff); + } + return out; +} + |