summaryrefslogtreecommitdiff
path: root/libs/ardour/audio_port.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-07-10 23:39:02 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2019-09-17 17:14:39 -0600
commitea30642ae3eac3706dbef1f70f8d13e8ebfec51d (patch)
tree124af6d9ed74b77e29892412fbc9eaf4cf4dc8b2 /libs/ardour/audio_port.cc
parent455039255ba43f88a3e158b44c2c7f40605e6255 (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.cc12
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 */