diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/audio_port.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/base_audio_port.h | 10 | ||||
-rw-r--r-- | libs/ardour/ardour/base_midi_port.h | 10 | ||||
-rw-r--r-- | libs/ardour/ardour/io.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/jack_audio_port.h | 9 | ||||
-rw-r--r-- | libs/ardour/ardour/jack_midi_port.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_buffer.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_port.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/port.h | 3 |
9 files changed, 30 insertions, 18 deletions
diff --git a/libs/ardour/ardour/audio_port.h b/libs/ardour/ardour/audio_port.h index 874f842d83..fa416864e9 100644 --- a/libs/ardour/ardour/audio_port.h +++ b/libs/ardour/ardour/audio_port.h @@ -35,10 +35,14 @@ class AudioPort : public BaseAudioPort, public PortFacade { void cycle_start (nframes_t nframes, nframes_t offset); void cycle_end (nframes_t nframes, nframes_t offset); + AudioBuffer& get_audio_buffer( nframes_t nframes, nframes_t offset ); + protected: friend class AudioEngine; AudioPort (const std::string&, Flags, bool external, nframes_t); + private: + bool _has_been_mixed_down; }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/base_audio_port.h b/libs/ardour/ardour/base_audio_port.h index 791928fa03..5bad90150b 100644 --- a/libs/ardour/ardour/base_audio_port.h +++ b/libs/ardour/ardour/base_audio_port.h @@ -41,15 +41,11 @@ class BaseAudioPort : public virtual Port { DataType type() const { return DataType::AUDIO; } - virtual Buffer& get_buffer () { - assert (_buffer); - return *_buffer; + virtual Buffer& get_buffer ( nframes_t nframes, nframes_t offset ) { + return get_audio_buffer( nframes, offset); } - virtual AudioBuffer& get_audio_buffer() { - assert (_buffer); - return *_buffer; - } + virtual AudioBuffer& get_audio_buffer (nframes_t nframes, nframes_t offset) = 0; void reset (); diff --git a/libs/ardour/ardour/base_midi_port.h b/libs/ardour/ardour/base_midi_port.h index 1c9a69d48d..5ea18fce43 100644 --- a/libs/ardour/ardour/base_midi_port.h +++ b/libs/ardour/ardour/base_midi_port.h @@ -37,15 +37,11 @@ class BaseMidiPort : public virtual Port { DataType type() const { return DataType::MIDI; } - Buffer& get_buffer() { - assert (_buffer); - return *_buffer; + Buffer& get_buffer( nframes_t nframes, nframes_t offset ) { + return get_midi_buffer( nframes, offset ); } - MidiBuffer& get_midi_buffer() { - assert (_buffer); - return *_buffer; - } + virtual MidiBuffer& get_midi_buffer (nframes_t nframes, nframes_t offset ) = 0; size_t capacity() { return _buffer->capacity(); } size_t size() { return _buffer->size(); } diff --git a/libs/ardour/ardour/io.h b/libs/ardour/ardour/io.h index af26319e82..69473b5747 100644 --- a/libs/ardour/ardour/io.h +++ b/libs/ardour/ardour/io.h @@ -289,6 +289,7 @@ class IO : public SessionObject, public AutomatableControls, public Latent bool _public_ports; virtual void prepare_inputs (nframes_t nframes, nframes_t offset); + virtual void flush_outputs (nframes_t nframes, nframes_t offset); virtual void set_deferred_state() {} diff --git a/libs/ardour/ardour/jack_audio_port.h b/libs/ardour/ardour/jack_audio_port.h index 703fb81fa3..5ca27132e0 100644 --- a/libs/ardour/ardour/jack_audio_port.h +++ b/libs/ardour/ardour/jack_audio_port.h @@ -32,18 +32,21 @@ namespace ARDOUR { class AudioEngine; class JackAudioPort : public JackPort, public BaseAudioPort { public: - void cycle_start (nframes_t nframes, nframes_t offset) { - _buffer->set_data ((Sample*) jack_port_get_buffer (_port, nframes) + offset, nframes); - } + void cycle_end (nframes_t nframes, nframes_t offset); + void cycle_start (nframes_t nframes, nframes_t offset); int reestablish (); + AudioBuffer& get_audio_buffer( nframes_t nframes, nframes_t offset ); + protected: friend class AudioPort; JackAudioPort (const std::string& name, Flags flags, AudioBuffer* buf); AudioBuffer* _source_buffer; + private: + bool _has_been_mixed_down; }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/jack_midi_port.h b/libs/ardour/ardour/jack_midi_port.h index d1fb5cc4fb..91cbd400aa 100644 --- a/libs/ardour/ardour/jack_midi_port.h +++ b/libs/ardour/ardour/jack_midi_port.h @@ -39,12 +39,17 @@ class JackMidiPort : public JackPort, public BaseMidiPort { public: void cycle_start (nframes_t nframes, nframes_t offset); void cycle_end (nframes_t nframes, nframes_t offset); + void flush_buffers (nframes_t nframes, nframes_t offset); void set_buffer (MidiBuffer& buf); + MidiBuffer& get_midi_buffer( nframes_t nframes, nframes_t offset ); + protected: friend class MidiPort; JackMidiPort (const std::string&, Flags, MidiBuffer*); + private: + bool _has_been_mixed_down; }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/midi_buffer.h b/libs/ardour/ardour/midi_buffer.h index 606cbd0ec8..812f697aa3 100644 --- a/libs/ardour/ardour/midi_buffer.h +++ b/libs/ardour/ardour/midi_buffer.h @@ -46,6 +46,7 @@ public: void resize(size_t); bool merge(const MidiBuffer& a, const MidiBuffer& b); + bool merge_in_place( const MidiBuffer &other ); struct iterator { iterator(MidiBuffer& b, size_t i) : buffer(b), index(i) {} diff --git a/libs/ardour/ardour/midi_port.h b/libs/ardour/ardour/midi_port.h index 485834aaff..a5a269b1ef 100644 --- a/libs/ardour/ardour/midi_port.h +++ b/libs/ardour/ardour/midi_port.h @@ -35,11 +35,16 @@ class MidiPort : public BaseMidiPort, public PortFacade { void cycle_start (nframes_t nframes, nframes_t offset); void cycle_end (nframes_t nframes, nframes_t offset); + void flush_buffers (nframes_t nframes, nframes_t offset); + + MidiBuffer& get_midi_buffer( nframes_t nframes, nframes_t offset ); protected: friend class AudioEngine; MidiPort (const std::string& name, Flags, bool external, nframes_t bufsize); + private: + bool _has_been_mixed_down; }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/port.h b/libs/ardour/ardour/port.h index 084022541d..ad81d6763f 100644 --- a/libs/ardour/ardour/port.h +++ b/libs/ardour/ardour/port.h @@ -79,8 +79,9 @@ class Port : public virtual sigc::trackable { virtual void cycle_start (nframes_t nframes, nframes_t offset) {} virtual void cycle_end (nframes_t nframes, nframes_t offset) {} + virtual void flush_buffers (nframes_t nframes, nframes_t offset ) {} virtual DataType type() const = 0; - virtual Buffer& get_buffer() = 0; + virtual Buffer& get_buffer( nframes_t nframes, nframes_t offset ) = 0; virtual bool connected () const; virtual bool connected_to (const std::string& portname) const; |