diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-07-10 23:39:02 -0600 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-09-17 17:14:39 -0600 |
commit | ea30642ae3eac3706dbef1f70f8d13e8ebfec51d (patch) | |
tree | 124af6d9ed74b77e29892412fbc9eaf4cf4dc8b2 /libs/ardour/audio_port.cc | |
parent | 455039255ba43f88a3e158b44c2c7f40605e6255 (diff) |
resize audio port _data buffer based on current buffer size
Diffstat (limited to 'libs/ardour/audio_port.cc')
-rw-r--r-- | libs/ardour/audio_port.cc | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/libs/ardour/audio_port.cc b/libs/ardour/audio_port.cc index 878f6c2625..6d0a90a187 100644 --- a/libs/ardour/audio_port.cc +++ b/libs/ardour/audio_port.cc @@ -29,6 +29,7 @@ #include "ardour/audio_port.h" #include "ardour/data_type.h" #include "ardour/port_engine.h" +#include "ardour/rc_configuration.h" using namespace ARDOUR; using namespace std; @@ -39,20 +40,27 @@ using namespace std; AudioPort::AudioPort (const std::string& name, PortFlags flags) : Port (name, DataType::AUDIO, flags) , _buffer (new AudioBuffer (0)) + , _data (0) { assert (name.find_first_of (':') == string::npos); - cache_aligned_malloc ((void**) &_data, sizeof (Sample) * 8192); _src.setup (_resampler_quality); _src.set_rrfilt (10); } AudioPort::~AudioPort () { - cache_aligned_free (_data); + if (_data) cache_aligned_free (_data); delete _buffer; } void +AudioPort::set_buffer_size (pframes_t nframes) +{ + if (_data) cache_aligned_free (_data); + cache_aligned_malloc ((void**) &_data, sizeof (Sample) * lrint (floor (nframes * Config->get_max_transport_speed()))); +} + +void AudioPort::cycle_start (pframes_t nframes) { /* caller must hold process lock */ |