diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-08-15 15:46:19 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-08-15 18:27:05 +0200 |
| commit | a7ed400c81c65a11623418d08cd5c953826754bd (patch) | |
| tree | a95e9a2f648e80ede281e33b8f5daf1856063593 /src/lib/audio_buffers.cc | |
| parent | 112911198b74cde35bcec6c1a1a571a84c950851 (diff) | |
Add Audiobuffers::set_channels().
Diffstat (limited to 'src/lib/audio_buffers.cc')
| -rw-r--r-- | src/lib/audio_buffers.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/lib/audio_buffers.cc b/src/lib/audio_buffers.cc index 119a499b4..4f01146f9 100644 --- a/src/lib/audio_buffers.cc +++ b/src/lib/audio_buffers.cc @@ -335,3 +335,22 @@ AudioBuffers::update_data_pointers () } } + +/** Set a new channel count, either discarding data (if new_channels is less than the current + * channels()), or filling with silence (if new_channels is more than the current channels() + */ +void +AudioBuffers::set_channels(int new_channels) +{ + DCPOMATIC_ASSERT(new_channels > 0); + + ScopeGuard sg = [this]() { update_data_pointers(); }; + + int const old_channels = channels(); + _data.resize(new_channels); + + for (int channel = old_channels; channel < new_channels; ++channel) { + _data[channel].resize(frames()); + } +} + |
