diff options
author | David Robillard <d@drobilla.net> | 2010-01-04 20:59:01 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2010-01-04 20:59:01 +0000 |
commit | bfca1f3a2739c1c0148b0641d3bdb8f4ea16b431 (patch) | |
tree | 39ca3cffc0e404fe33fac66663444d9e1a603b96 /src/engine/AudioBuffer.cpp | |
parent | 29b77e922d7fd883795b04eadd528eca21a37a2f (diff) | |
download | ingen-bfca1f3a2739c1c0148b0641d3bdb8f4ea16b431.tar.gz ingen-bfca1f3a2739c1c0148b0641d3bdb8f4ea16b431.tar.bz2 ingen-bfca1f3a2739c1c0148b0641d3bdb8f4ea16b431.zip |
Remove redundant LV2EventBuffer class and merge with EventBuffer.
Refactor mixing from an in-place Buffer method (which doesn't work with EventBuffer) to a single function that takes an out of place destination and an array of sources.
Fix audio buffer mixing for control<->audio.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2333 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/AudioBuffer.cpp')
-rw-r--r-- | src/engine/AudioBuffer.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/engine/AudioBuffer.cpp b/src/engine/AudioBuffer.cpp index 633a004b..b564a3ba 100644 --- a/src/engine/AudioBuffer.cpp +++ b/src/engine/AudioBuffer.cpp @@ -185,16 +185,12 @@ AudioBuffer::copy(Context& context, const Buffer* src) * This function only adds the same range in one buffer to another. */ void -AudioBuffer::mix(Context& context, const Buffer* const src) +AudioBuffer::accumulate(Context& context, const AudioBuffer* const src) { - const AudioBuffer* src_abuf = dynamic_cast<const AudioBuffer*>(src); - if (!src_abuf) - return; - Sample* const buf = data(); - const Sample* const src_buf = src_abuf->data(); + const Sample* const src_buf = src->data(); - const size_t frames = std::min(nframes(), src_abuf->nframes()); + const size_t frames = std::min(nframes(), src->nframes()); assert(frames != 0); // Mix initial portions @@ -204,8 +200,8 @@ AudioBuffer::mix(Context& context, const Buffer* const src) // Extend/Mix the final sample of src if it is shorter const Sample last = src_buf[i - 1]; - while (i < frames) - buf[i++] = last; + while (i < nframes()) + buf[i++] += last; } |