summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/audiosource.h4
-rw-r--r--libs/ardour/ardour/crossfade.h2
-rw-r--r--libs/ardour/ardour/midi_region.h2
-rw-r--r--libs/ardour/ardour/midi_source.h14
-rw-r--r--libs/ardour/ardour/region.h4
-rw-r--r--libs/ardour/ardour/source.h12
6 files changed, 25 insertions, 13 deletions
diff --git a/libs/ardour/ardour/audiosource.h b/libs/ardour/ardour/audiosource.h
index 08435bf3b1..4f2ad0eee1 100644
--- a/libs/ardour/ardour/audiosource.h
+++ b/libs/ardour/ardour/audiosource.h
@@ -54,6 +54,9 @@ class AudioSource : virtual public Source,
nframes64_t readable_length() const { return _length; }
uint32_t n_channels() const { return 1; }
+
+ sframes_t length (sframes_t pos) const;
+ void update_length (sframes_t pos, sframes_t cnt);
virtual nframes_t available_peaks (double zoom) const;
@@ -108,6 +111,7 @@ class AudioSource : virtual public Source,
static bool _build_missing_peakfiles;
static bool _build_peakfiles;
+ sframes_t _length;
bool _peaks_built;
mutable Glib::Mutex _peaks_ready_lock;
Glib::ustring peakpath;
diff --git a/libs/ardour/ardour/crossfade.h b/libs/ardour/ardour/crossfade.h
index 2b893478d4..4ad2ab551d 100644
--- a/libs/ardour/ardour/crossfade.h
+++ b/libs/ardour/ardour/crossfade.h
@@ -129,7 +129,7 @@ class Crossfade : public ARDOUR::AudioRegion
AutomationList& fade_in() { return _fade_in; }
AutomationList& fade_out() { return _fade_out; }
- nframes_t set_length (nframes_t);
+ nframes_t set_xfade_length (nframes_t);
bool is_dependent() const { return true; }
bool depends_on (boost::shared_ptr<Region> other) const {
diff --git a/libs/ardour/ardour/midi_region.h b/libs/ardour/ardour/midi_region.h
index 0760fb7268..9f4041060e 100644
--- a/libs/ardour/ardour/midi_region.h
+++ b/libs/ardour/ardour/midi_region.h
@@ -115,6 +115,8 @@ class MidiRegion : public Region
void recompute_at_start ();
void recompute_at_end ();
+
+ void set_position_internal (nframes_t pos, bool allow_bbt_recompute);
void switch_source(boost::shared_ptr<Source> source);
diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h
index ec454803dc..0c18b096bd 100644
--- a/libs/ardour/ardour/midi_source.h
+++ b/libs/ardour/ardour/midi_source.h
@@ -69,6 +69,9 @@ class MidiSource : virtual public Source
virtual void append_event_unlocked_frames(const Evoral::Event<nframes_t>& ev,
sframes_t position) = 0;
+
+ virtual sframes_t length (sframes_t pos) const;
+ virtual void update_length (sframes_t pos, sframes_t cnt);
virtual void mark_streaming_midi_write_started (NoteMode mode, sframes_t start_time);
virtual void mark_streaming_write_started ();
@@ -118,15 +121,18 @@ class MidiSource : virtual public Source
sframes_t position,
nframes_t cnt) = 0;
- std::string _captured_for;
- mutable uint32_t _read_data_count; ///< modified in read()
- mutable uint32_t _write_data_count; ///< modified in write()
+ std::string _captured_for;
+ mutable uint32_t _read_data_count; ///< modified in read()
+ mutable uint32_t _write_data_count; ///< modified in write()
boost::shared_ptr<MidiModel> _model;
bool _writing;
mutable Evoral::Sequence<double>::const_iterator _model_iter;
- mutable sframes_t _last_read_end;
+
+ mutable double _length_beats;
+ mutable sframes_t _last_read_end;
+ sframes_t _last_write_end;
private:
bool file_changed (std::string path);
diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h
index a4ce35b61b..2696c7da91 100644
--- a/libs/ardour/ardour/region.h
+++ b/libs/ardour/ardour/region.h
@@ -120,6 +120,8 @@ class Region
nframes_t length() const { return _length; }
layer_t layer () const { return _layer; }
+ sframes_t source_length(uint32_t n) const;
+
/* these two are valid ONLY during a StateChanged signal handler */
nframes_t last_position() const { return _last_position; }
@@ -288,7 +290,7 @@ class Region
void send_change (Change);
void trim_to_internal (nframes_t position, nframes_t length, void *src);
- void set_position_internal (nframes_t pos, bool allow_bbt_recompute);
+ virtual void set_position_internal (nframes_t pos, bool allow_bbt_recompute);
bool copied() const { return _flags & Copied; }
void maybe_uncopy ();
diff --git a/libs/ardour/ardour/source.h b/libs/ardour/ardour/source.h
index 36d7e1fe96..7905debbcc 100644
--- a/libs/ardour/ardour/source.h
+++ b/libs/ardour/ardour/source.h
@@ -61,7 +61,8 @@ class Source : public SessionObject, public boost::noncopyable
time_t timestamp() const { return _timestamp; }
void stamp (time_t when) { _timestamp = when; }
- sframes_t length() const { return _length; }
+ virtual sframes_t length (sframes_t pos) const = 0;
+ virtual void update_length (sframes_t pos, sframes_t cnt) = 0;
virtual const Glib::ustring& path() const = 0;
@@ -104,10 +105,8 @@ class Source : public SessionObject, public boost::noncopyable
std::string get_transients_path() const;
int load_transients (const std::string&);
- void update_length (sframes_t pos, sframes_t cnt);
-
- int64_t timeline_position() const { return _timeline_position; }
- virtual void set_timeline_position (int64_t pos);
+ sframes_t timeline_position() const { return _timeline_position; }
+ virtual void set_timeline_position (sframes_t pos);
void set_allow_remove_if_empty (bool yn);
@@ -118,8 +117,7 @@ class Source : public SessionObject, public boost::noncopyable
DataType _type;
Flag _flags;
time_t _timestamp;
- sframes_t _length;
- int64_t _timeline_position;
+ sframes_t _timeline_position;
bool _analysed;
mutable Glib::Mutex _lock;
mutable Glib::Mutex _analysis_lock;