X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Faudio_port.cc;h=240224ea5e5b33112ae3e72f5e6c21ca5851eac8;hb=07112b55e0bb7ceb9e5c05ab4df167ecaf7edd9b;hp=9deda7a861d0dc329156cdd2e73054f211f17449;hpb=f07ea817511902d6ef52d3aa07dc3539fcc4d11c;p=ardour.git diff --git a/libs/ardour/audio_port.cc b/libs/ardour/audio_port.cc index 9deda7a861..240224ea5e 100644 --- a/libs/ardour/audio_port.cc +++ b/libs/ardour/audio_port.cc @@ -20,10 +20,9 @@ #include "pbd/stacktrace.h" +#include "ardour/audio_buffer.h" #include "ardour/audio_port.h" -#include "ardour/audioengine.h" #include "ardour/data_type.h" -#include "ardour/audio_buffer.h" using namespace ARDOUR; using namespace std; @@ -45,19 +44,23 @@ AudioPort::cycle_start (pframes_t nframes) { /* caller must hold process lock */ + Port::cycle_start (nframes); + if (sends_output()) { _buffer->prepare (); } } void -AudioPort::cycle_end (pframes_t nframes) +AudioPort::cycle_end (pframes_t) { if (sends_output() && !_buffer->written()) { - /* we can't use nframes here because the current buffer capacity may + /* we can't use nframes here because the current buffer capacity may be shorter than the full buffer size if we split the cycle. */ - _buffer->silence (_buffer->capacity()); + if (_buffer->capacity () > 0) { + _buffer->silence (_buffer->capacity()); + } } } @@ -67,16 +70,21 @@ AudioPort::cycle_split () } AudioBuffer& -AudioPort::get_audio_buffer (framecnt_t nframes) +AudioPort::get_audio_buffer (pframes_t nframes) { /* caller must hold process lock */ - _buffer->set_data ((Sample *) jack_port_get_buffer (_jack_port, nframes) + _port_offset, nframes); + _buffer->set_data ((Sample *) jack_port_get_buffer (_jack_port, _cycle_nframes) + + _global_port_buffer_offset + _port_buffer_offset, nframes); return *_buffer; } -size_t -AudioPort::raw_buffer_size (pframes_t nframes) const +Sample* +AudioPort::engine_get_whole_audio_buffer () { - return nframes * sizeof (Sample); + /* caller must hold process lock */ + return (Sample *) jack_port_get_buffer (_jack_port, _cycle_nframes); } + + +