diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-02-26 01:40:30 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-04-19 23:04:32 +0100 |
| commit | 58dce923b9d438a27ce1cd7e3125370f74d46e3a (patch) | |
| tree | 5a332a967aa3fb9bcb923f62b4832d8bb4d2bb17 /src/lib/audio_buffers.cc | |
| parent | e7e06b4c9a6bf4459ff27a30cf347121c0e40e07 (diff) | |
Fix merging of audio in various circumstances.
Diffstat (limited to 'src/lib/audio_buffers.cc')
| -rw-r--r-- | src/lib/audio_buffers.cc | 20 |
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); +} |
