From 15d560c5e466d283fb10be10f63e390b9ab0854d Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 16 Oct 2023 17:22:53 +0200 Subject: [PATCH] Consolidate common bounce code of Audio and MIDI Track --- libs/ardour/ardour/audio_track.h | 5 +---- libs/ardour/ardour/midi_track.h | 9 +-------- libs/ardour/ardour/track.h | 4 ++-- libs/ardour/audio_track.cc | 18 ------------------ libs/ardour/midi_track.cc | 24 +++++++++--------------- libs/ardour/track.cc | 18 ++++++++++++++++++ 6 files changed, 31 insertions(+), 47 deletions(-) diff --git a/libs/ardour/ardour/audio_track.h b/libs/ardour/ardour/audio_track.h index 97fac5697f..a367a34af6 100644 --- a/libs/ardour/ardour/audio_track.h +++ b/libs/ardour/ardour/audio_track.h @@ -44,10 +44,7 @@ class LIBARDOUR_API AudioTrack : public Track void unfreeze (); bool bounceable (std::shared_ptr, bool include_endpoint) const; - std::shared_ptr bounce (InterThreadInfo&, std::string const& name); - std::shared_ptr bounce_range (samplepos_t start, samplepos_t end, InterThreadInfo&, - std::shared_ptr endpoint, bool include_endpoint, - std::string const& name); + int export_stuff (BufferSet& bufs, samplepos_t start_sample, samplecnt_t nframes, std::shared_ptr endpoint, bool include_endpoint, bool for_export, bool for_freeze, MidiNoteTracker&); diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 62343dce3c..5aca52aff5 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -53,14 +53,7 @@ public: void freeze_me (InterThreadInfo&); void unfreeze (); - bool bounceable (std::shared_ptr, bool) const { return false; } - std::shared_ptr bounce (InterThreadInfo&, std::string const&); - std::shared_ptr bounce_range (samplepos_t start, - samplepos_t end, - InterThreadInfo& iti, - std::shared_ptr endpoint, - bool include_endpoint, - std::string const& name); + bool bounceable (std::shared_ptr, bool include_endpoint) const; int export_stuff (BufferSet& bufs, samplepos_t start_sample, diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index 316f6fbb6a..d6bf2118b5 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -98,7 +98,7 @@ public: * @param itt asynchronous progress report and cancel * @return a new audio region (or nil in case of error) */ - virtual std::shared_ptr bounce (InterThreadInfo& itt, std::string const& name) = 0; + virtual std::shared_ptr bounce (InterThreadInfo& itt, std::string const& name); /** Bounce the given range to a new audio region. * @param start start time (in samples) @@ -110,7 +110,7 @@ public: */ virtual std::shared_ptr bounce_range (samplepos_t start, samplepos_t end, InterThreadInfo& itt, std::shared_ptr endpoint, bool include_endpoint, - std::string const& name) = 0; + std::string const& name); virtual int export_stuff (BufferSet& bufs, samplepos_t start_sample, samplecnt_t nframes, std::shared_ptr endpoint, bool include_endpoint, bool for_export, bool for_freeze, diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc index 3c71f2fe0b..6fb2036522 100644 --- a/libs/ardour/audio_track.cc +++ b/libs/ardour/audio_track.cc @@ -306,24 +306,6 @@ AudioTrack::bounceable (std::shared_ptr endpoint, bool include_endpoi return true; } -std::shared_ptr -AudioTrack::bounce (InterThreadInfo& itt, std::string const& name) -{ - return bounce_range (_session.current_start_sample(), _session.current_end_sample(), itt, main_outs(), false, name); -} - -std::shared_ptr -AudioTrack::bounce_range (samplepos_t start, - samplepos_t end, - InterThreadInfo& itt, - std::shared_ptr endpoint, - bool include_endpoint, - std::string const& name) -{ - vector > srcs; - return _session.write_one_track (*this, start, end, false, srcs, itt, endpoint, include_endpoint, false, false, name); -} - void AudioTrack::freeze_me (InterThreadInfo& itt) { diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index e56f0bfa60..6aa5be70e1 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -604,22 +604,16 @@ MidiTrack::export_stuff (BufferSet& buffers, return 0; } -std::shared_ptr -MidiTrack::bounce (InterThreadInfo& itt, std::string const& name) +bool +MidiTrack::bounceable (std::shared_ptr endpoint, bool include_endpoint) const { - return bounce_range (_session.current_start_sample(), _session.current_end_sample(), itt, main_outs(), false, name); -} - -std::shared_ptr -MidiTrack::bounce_range (samplepos_t start, - samplepos_t end, - InterThreadInfo& itt, - std::shared_ptr endpoint, - bool include_endpoint, - std::string const& name) -{ - vector > srcs; - return _session.write_one_track (*this, start, end, false, srcs, itt, endpoint, include_endpoint, false, false, name); + if (!endpoint && !include_endpoint) { + /* no processing - just read from the playlist and create new + * files: always possible. + */ + return true; + } + return false; // a lie, Session::write_one_track can handle this. } void diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 4e67027295..e4ef013a19 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -931,6 +931,24 @@ Track::set_processor_state (XMLNode const& node, int version, XMLProperty const* return false; } +std::shared_ptr +Track::bounce (InterThreadInfo& itt, std::string const& name) +{ + return bounce_range (_session.current_start_sample(), _session.current_end_sample(), itt, main_outs(), false, name); +} + +std::shared_ptr +Track::bounce_range (samplepos_t start, + samplepos_t end, + InterThreadInfo& itt, + std::shared_ptr endpoint, + bool include_endpoint, + std::string const& name) +{ + vector > srcs; + return _session.write_one_track (*this, start, end, false, srcs, itt, endpoint, include_endpoint, false, false, name); +} + void Track::use_captured_sources (SourceList& srcs, CaptureInfos const & capture_info) {