diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/audiosource.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/crossfade.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_region.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_source.h | 14 | ||||
-rw-r--r-- | libs/ardour/ardour/region.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/source.h | 12 |
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; |