summaryrefslogtreecommitdiffstats
path: root/src/engine/AudioBuffer.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2010-01-04 20:59:01 +0000
committerDavid Robillard <d@drobilla.net>2010-01-04 20:59:01 +0000
commitbfca1f3a2739c1c0148b0641d3bdb8f4ea16b431 (patch)
tree39ca3cffc0e404fe33fac66663444d9e1a603b96 /src/engine/AudioBuffer.cpp
parent29b77e922d7fd883795b04eadd528eca21a37a2f (diff)
downloadingen-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.cpp14
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;
}