summaryrefslogtreecommitdiff
path: root/src/lib/audio_buffers.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2017-02-26 01:40:30 +0000
committerCarl Hetherington <cth@carlh.net>2017-04-19 23:04:32 +0100
commit58dce923b9d438a27ce1cd7e3125370f74d46e3a (patch)
tree5a332a967aa3fb9bcb923f62b4832d8bb4d2bb17 /src/lib/audio_buffers.cc
parente7e06b4c9a6bf4459ff27a30cf347121c0e40e07 (diff)
Fix merging of audio in various circumstances.
Diffstat (limited to 'src/lib/audio_buffers.cc')
-rw-r--r--src/lib/audio_buffers.cc20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/lib/audio_buffers.cc b/src/lib/audio_buffers.cc
index 546abbb54..f01f8baaf 100644
--- a/src/lib/audio_buffers.cc
+++ b/src/lib/audio_buffers.cc
@@ -200,7 +200,7 @@ AudioBuffers::copy_from (AudioBuffers const * from, int32_t frames_to_copy, int3
*/
void
-AudioBuffers::move (int32_t from, int32_t to, int32_t frames)
+AudioBuffers::move (int32_t frames, int32_t from, int32_t to)
{
if (frames == 0) {
return;
@@ -273,7 +273,7 @@ AudioBuffers::ensure_size (int32_t frames)
}
void
-AudioBuffers::accumulate_frames (AudioBuffers const * from, int32_t read_offset, int32_t write_offset, int32_t frames)
+AudioBuffers::accumulate_frames (AudioBuffers const * from, int32_t frames, int32_t read_offset, int32_t write_offset)
{
DCPOMATIC_ASSERT (_channels == from->channels ());
DCPOMATIC_ASSERT (read_offset >= 0);
@@ -325,3 +325,19 @@ AudioBuffers::clone () const
b->copy_from (this, frames (), 0, 0);
return b;
}
+
+void
+AudioBuffers::append (shared_ptr<const AudioBuffers> other)
+{
+ ensure_size (_frames + other->frames());
+ copy_from (other.get(), other->frames(), 0, _frames);
+ _frames += other->frames();
+}
+
+void
+AudioBuffers::trim_start (int32_t frames)
+{
+ DCPOMATIC_ASSERT (frames <= _frames);
+ move (_frames - frames, frames, 0);
+ set_frames (_frames - frames);
+}