summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-10-08 20:14:22 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-10-08 20:14:22 +0000
commit89e4d352445e9394073804f78fbd6845e6820f20 (patch)
tree14cf1f812444a3fa5271cc7c324e1d9a67c744e9 /libs/ardour/ardour
parent1d210a54f9b1c0da7a196413bd760ff53f198270 (diff)
torben's port buffer reworking; torben's panner automation loading patch (allows loading of 2.X sessions)
git-svn-id: svn://localhost/ardour2/branches/3.0@3890 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/audio_port.h4
-rw-r--r--libs/ardour/ardour/base_audio_port.h10
-rw-r--r--libs/ardour/ardour/base_midi_port.h10
-rw-r--r--libs/ardour/ardour/io.h1
-rw-r--r--libs/ardour/ardour/jack_audio_port.h9
-rw-r--r--libs/ardour/ardour/jack_midi_port.h5
-rw-r--r--libs/ardour/ardour/midi_buffer.h1
-rw-r--r--libs/ardour/ardour/midi_port.h5
-rw-r--r--libs/ardour/ardour/port.h3
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;