diff options
Diffstat (limited to 'os2eindopdracht/FilterWorker.cpp')
-rw-r--r-- | os2eindopdracht/FilterWorker.cpp | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/os2eindopdracht/FilterWorker.cpp b/os2eindopdracht/FilterWorker.cpp index 7d2f315..495d3d1 100644 --- a/os2eindopdracht/FilterWorker.cpp +++ b/os2eindopdracht/FilterWorker.cpp @@ -1,30 +1,35 @@ +#include "FilterWorker.h" +#include "SampleBlock.h" -/* - std::vector<int16_t> original; - original = std::vector<int16_t>(stream._stream); - for (unsigned long i = 0; i < original.size(); i++) { - double x_pp = i < 2 ? 0 : original[i-2]; - double x_p = i < 1 ? 0 : original[i-1]; - double x_ = i < 0 ? 0 : original[i-0]; - double y_pp = i < 2 ? 0 : stream._stream[i-2]; - double y_p = i < 1 ? 0 : stream._stream[i-1]; - stream._stream[i] = args.bass.b0 * x_ + - args.bass.b1 * x_p + - args.bass.b2 * x_pp + - args.bass.a1 * y_p + - args.bass.a2 * y_pp; +FilterWorker::FilterWorker(SampleBlock& input, SampleBlock& output) { + _input = &input; + _output = &output; +} + +void FilterWorker::filter(Coefficients bass, Coefficients treble) { + for (size_t i = 0; i < _output->size; i++) { + double x_pp = i < 2 ? 0 : *(_input->begin + i - 2); + double x_p = i < 1 ? 0 : *(_input->begin + i - 1); + double x_ = i < 0 ? 0 : *(_input->begin + i - 0); + double y_pp = i < 2 ? 0 : *(_output->begin + i - 2); + double y_p = i < 1 ? 0 : *(_output->begin + i - 1); + *(_output->begin + i) = bass.b0 * x_ + + bass.b1 * x_p + + bass.b2 * x_pp + + bass.a1 * y_p + + bass.a2 * y_pp; } - original = std::vector<int16_t>(stream._stream); - for (unsigned long i = 0; i < original.size(); i++) { - double x_pp = i < 2 ? 0 : original[i-2]; - double x_p = i < 1 ? 0 : original[i-1]; - double x_ = i < 0 ? 0 : original[i-0]; - double y_pp = i < 2 ? 0 : stream._stream[i-2]; - double y_p = i < 1 ? 0 : stream._stream[i-1]; - stream._stream[i] = args.treble.b0 * x_ + - args.treble.b1 * x_p + - args.treble.b2 * x_pp + - args.treble.a1 * y_p + - args.treble.a2 * y_pp; + for (size_t i = 0; i < _output->size; i++) { + double x_pp = i < 2 ? 0 : *(_input->begin + i - 2); + double x_p = i < 1 ? 0 : *(_input->begin + i - 1); + double x_ = i < 0 ? 0 : *(_input->begin + i - 0); + double y_pp = i < 2 ? 0 : *(_output->begin + i - 2); + double y_p = i < 1 ? 0 : *(_output->begin + i - 1); + *(_output->begin + i) = treble.b0 * x_ + + treble.b1 * x_p + + treble.b2 * x_pp + + treble.a1 * y_p + + treble.a2 * y_pp; } -*/ +} + |