X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fbuffer_set.h;h=5b0234de46724865ea25e624557e101101c34c67;hb=cd2047cbffc5e0270acab555364bb9d958fe7927;hp=c3358f44368cefa69c544a711e328b3b8577ac22;hpb=73192bc1a7ea55fa1864dc3826845b15c00dd2ec;p=ardour.git diff --git a/libs/ardour/ardour/buffer_set.h b/libs/ardour/ardour/buffer_set.h index c3358f4436..5b0234de46 100644 --- a/libs/ardour/ardour/buffer_set.h +++ b/libs/ardour/ardour/buffer_set.h @@ -29,11 +29,11 @@ #include "ardour/data_type.h" #include "ardour/types.h" -#ifdef VST_SUPPORT +#if defined VST_SUPPORT || defined LXVST_SUPPORT #include "evoral/MIDIEvent.hpp" struct VstEvents; struct VstMidiEvent; -#endif +#endif namespace ARDOUR { @@ -41,7 +41,7 @@ class Buffer; class AudioBuffer; class MidiBuffer; class PortSet; -#ifdef HAVE_SLV2 +#ifdef LV2_SUPPORT class LV2EventBuffer; #endif @@ -66,7 +66,8 @@ public: void clear(); - void attach_buffers(PortSet& ports, framecnt_t nframes, framecnt_t offset = 0); + void attach_buffers (PortSet& ports); + void get_jack_port_addresses (PortSet &, framecnt_t); /* the capacity here is a size_t and has a different interpretation depending on the DataType of the buffers. for audio, its a frame count. for MIDI @@ -96,12 +97,18 @@ public: AudioBuffer& get_audio(size_t i) { return (AudioBuffer&)get(DataType::AUDIO, i); } + const AudioBuffer& get_audio(size_t i) const { + return (const AudioBuffer&)get(DataType::AUDIO, i); + } MidiBuffer& get_midi(size_t i) { return (MidiBuffer&)get(DataType::MIDI, i); } + const MidiBuffer& get_midi(size_t i) const { + return (const MidiBuffer&)get(DataType::MIDI, i); + } -#ifdef HAVE_SLV2 +#ifdef LV2_SUPPORT /** Get a MIDI buffer translated into an LV2 MIDI buffer for use with plugins. * The index here corresponds directly to MIDI buffer numbers (i.e. the index * passed to get_midi), translation back and forth will happen as needed */ @@ -111,11 +118,12 @@ public: void flush_lv2_midi(bool input, size_t i); #endif -#ifdef VST_SUPPORT +#if defined VST_SUPPORT || defined LXVST_SUPPORT VstEvents* get_vst_midi (size_t); -#endif +#endif void read_from(const BufferSet& in, framecnt_t nframes); + void read_from(const BufferSet& in, framecnt_t nframes, DataType); void merge_from(const BufferSet& in, framecnt_t nframes); template @@ -163,13 +171,13 @@ private: /// Vector of vectors, indexed by DataType std::vector _buffers; -#ifdef HAVE_SLV2 +#ifdef LV2_SUPPORT /// LV2 MIDI buffers (for conversion to/from MIDI buffers) typedef std::vector< std::pair > LV2Buffers; LV2Buffers _lv2_buffers; #endif -#ifdef VST_SUPPORT +#if defined VST_SUPPORT || defined LXVST_SUPPORT class VSTBuffer { public: VSTBuffer (size_t); @@ -184,15 +192,15 @@ private: private: /* prevent copy construction */ VSTBuffer (VSTBuffer const &); - + VstEvents* _events; /// the parent VSTEvents struct VstMidiEvent* _midi_events; ///< storage area for VSTMidiEvents size_t _capacity; }; - + typedef std::vector VSTBuffers; VSTBuffers _vst_buffers; -#endif +#endif /// Use counts (there may be more actual buffers than this) ChanCount _count;