diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/export_handler.h | 23 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 2 | ||||
-rw-r--r-- | libs/ardour/export_handler.cc | 17 | ||||
-rw-r--r-- | libs/ardour/session_export.cc | 2 |
4 files changed, 20 insertions, 24 deletions
diff --git a/libs/ardour/ardour/export_handler.h b/libs/ardour/ardour/export_handler.h index eb8ffc2333..235219e2f5 100644 --- a/libs/ardour/ardour/export_handler.h +++ b/libs/ardour/ardour/export_handler.h @@ -81,23 +81,12 @@ class ExportHandler : public ExportElementFactory {} ExportChannelConfigPtr channel_config; - ExportFormatSpecPtr format; + ExportFormatSpecPtr format; ExportFilenamePtr filename; BroadcastInfoPtr broadcast_info; }; private: - - /* Stuff for export configs - * The multimap maps timespans to file specifications - */ - - typedef std::pair<ExportTimespanPtr, FileSpec> ConfigPair; - typedef std::multimap<ExportTimespanPtr, FileSpec> ConfigMap; - - typedef boost::shared_ptr<ExportGraphBuilder> GraphBuilderPtr; - - private: /* Session::get_export_handler() should be used to obtain an export handler * This ensures that it doesn't go out of scope before finalize_audio_export is called */ @@ -111,7 +100,7 @@ class ExportHandler : public ExportElementFactory bool add_export_config (ExportTimespanPtr timespan, ExportChannelConfigPtr channel_config, ExportFormatSpecPtr format, ExportFilenamePtr filename, BroadcastInfoPtr broadcast_info); - void do_export (bool rt = false); + void do_export (); std::string get_cd_marker_filename(std::string filename, CDMarkerFormat format); @@ -120,11 +109,15 @@ class ExportHandler : public ExportElementFactory int process (framecnt_t frames); Session & session; - GraphBuilderPtr graph_builder; + boost::shared_ptr<ExportGraphBuilder> graph_builder; ExportStatusPtr export_status; + + /* The timespan and corresponding file specifications that we are exporting; + there can be multiple FileSpecs for each ExportTimespan. + */ + typedef std::multimap<ExportTimespanPtr, FileSpec> ConfigMap; ConfigMap config_map; - bool realtime; bool normalizing; /* Timespan management */ diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index d31d1f9339..36a0733a3d 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -536,7 +536,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi boost::shared_ptr<ExportHandler> get_export_handler (); boost::shared_ptr<ExportStatus> get_export_status (); - int start_audio_export (framepos_t position, bool realtime); + int start_audio_export (framepos_t position); PBD::Signal1<int, framecnt_t> ProcessExport; static PBD::Signal2<void,std::string, std::string> Exported; diff --git a/libs/ardour/export_handler.cc b/libs/ardour/export_handler.cc index fb65cebff0..327b7d8812 100644 --- a/libs/ardour/export_handler.cc +++ b/libs/ardour/export_handler.cc @@ -103,7 +103,6 @@ ExportHandler::ExportHandler (Session & session) , session (session) , graph_builder (new ExportGraphBuilder (session)) , export_status (session.get_export_status ()) - , realtime (false) , normalizing (false) , cue_tracknum (0) , cue_indexnum (0) @@ -112,23 +111,23 @@ ExportHandler::ExportHandler (Session & session) ExportHandler::~ExportHandler () { - // TODO remove files that were written but not finsihed + // TODO remove files that were written but not finished } +/** Add an export to the `to-do' list */ bool ExportHandler::add_export_config (ExportTimespanPtr timespan, ExportChannelConfigPtr channel_config, ExportFormatSpecPtr format, ExportFilenamePtr filename, BroadcastInfoPtr broadcast_info) { FileSpec spec (channel_config, format, filename, broadcast_info); - ConfigPair pair (timespan, spec); - config_map.insert (pair); + config_map.insert (make_pair (timespan, spec)); return true; } void -ExportHandler::do_export (bool rt) +ExportHandler::do_export () { /* Count timespans */ @@ -144,7 +143,6 @@ ExportHandler::do_export (bool rt) /* Start export */ - realtime = rt; start_timespan (); } @@ -159,13 +157,18 @@ ExportHandler::start_timespan () return; } + /* finish_timespan pops the config_map entry that has been done, so + this is the timespan to do this time + */ current_timespan = config_map.begin()->first; + export_status->total_frames_current_timespan = current_timespan->get_length(); export_status->timespan_name = current_timespan->name(); export_status->processed_frames_current_timespan = 0; /* Register file configurations to graph builder */ + /* Here's the config_map entries that use this timespan */ timespan_bounds = config_map.equal_range (current_timespan); graph_builder->reset (); graph_builder->set_current_timespan (current_timespan); @@ -181,7 +184,7 @@ ExportHandler::start_timespan () normalizing = false; session.ProcessExport.connect_same_thread (process_connection, boost::bind (&ExportHandler::process, this, _1)); process_position = current_timespan->get_start(); - session.start_audio_export (process_position, realtime); + session.start_audio_export (process_position); } int diff --git a/libs/ardour/session_export.cc b/libs/ardour/session_export.cc index 1d11dccbd0..acb23aee8b 100644 --- a/libs/ardour/session_export.cc +++ b/libs/ardour/session_export.cc @@ -102,7 +102,7 @@ Session::pre_export () /** Called for each range that is being exported */ int -Session::start_audio_export (framepos_t position, bool /* realtime */) +Session::start_audio_export (framepos_t position) { if (!_exporting) { pre_export (); |