diff options
author | Sakari Bergen <sakari.bergen@beatwaves.net> | 2012-01-28 15:05:53 +0000 |
---|---|---|
committer | Sakari Bergen <sakari.bergen@beatwaves.net> | 2012-01-28 15:05:53 +0000 |
commit | ab8cea1d7c19fddc6b81a6ba4a303a00e4fdd93c (patch) | |
tree | ae02bf18efc30dcd7af7782ec434ac73b0641ddf /libs | |
parent | aaf418bd6fe178eea0c67e65693536b07fcf5932 (diff) |
Store Region export state in instant.xml (fixes #3935)
git-svn-id: svn://localhost/ardour2/branches/3.0@11376 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/export_channel.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/export_channel_configuration.h | 4 | ||||
-rw-r--r-- | libs/ardour/enums.cc | 8 | ||||
-rw-r--r-- | libs/ardour/export_channel_configuration.cc | 22 | ||||
-rw-r--r-- | libs/ardour/export_profile_manager.cc | 2 |
5 files changed, 32 insertions, 5 deletions
diff --git a/libs/ardour/ardour/export_channel.h b/libs/ardour/ardour/export_channel.h index a10bdfc290..6f9682018c 100644 --- a/libs/ardour/ardour/export_channel.h +++ b/libs/ardour/ardour/export_channel.h @@ -93,6 +93,7 @@ class RegionExportChannelFactory { public: enum Type { + None, Raw, Fades, Processed diff --git a/libs/ardour/ardour/export_channel_configuration.h b/libs/ardour/ardour/export_channel_configuration.h index d84638ca85..a950cecc65 100644 --- a/libs/ardour/ardour/export_channel_configuration.h +++ b/libs/ardour/ardour/export_channel_configuration.h @@ -68,6 +68,9 @@ class ExportChannelConfiguration : public boost::enable_shared_from_this<ExportC void set_name (std::string name) { _name = name; } void set_split (bool value) { split = value; } + RegionExportChannelFactory::Type region_processing_type() const { return region_type; } + void set_region_processing_type(RegionExportChannelFactory::Type type) { region_type = type; } + bool get_split () const { return split; } uint32_t get_n_chans () const { return channels.size(); } @@ -88,6 +91,7 @@ class ExportChannelConfiguration : public boost::enable_shared_from_this<ExportC ChannelList channels; bool split; // Split to mono files std::string _name; + RegionExportChannelFactory::Type region_type; }; } // namespace ARDOUR diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc index fcf3b031ad..d1eca7401c 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -27,6 +27,7 @@ #include "ardour/export_filename.h" #include "ardour/export_format_base.h" #include "ardour/export_profile_manager.h" +#include "ardour/export_channel_configuration.h" #include "ardour/io.h" #include "ardour/location.h" #include "ardour/midi_model.h" @@ -112,6 +113,7 @@ setup_enum_writer () ExportFormatBase::SampleRate _ExportFormatBase_SampleRate; ExportFormatBase::SRCQuality _ExportFormatBase_SRCQuality; ExportProfileManager::TimeFormat _ExportProfileManager_TimeFormat; + RegionExportChannelFactory::Type _RegionExportChannelFactory_Type; Delivery::Role _Delivery_Role; IO::Direction _IO_Direction; MuteMaster::MutePoint _MuteMaster_MutePoint; @@ -529,6 +531,12 @@ setup_enum_writer () REGISTER_CLASS_ENUM (ExportProfileManager, Frames); REGISTER (_ExportProfileManager_TimeFormat); + REGISTER_CLASS_ENUM (RegionExportChannelFactory, None); + REGISTER_CLASS_ENUM (RegionExportChannelFactory, Raw); + REGISTER_CLASS_ENUM (RegionExportChannelFactory, Fades); + REGISTER_CLASS_ENUM (RegionExportChannelFactory, Processed); + REGISTER (_RegionExportChannelFactory_Type); + REGISTER_CLASS_ENUM (Delivery, Insert); REGISTER_CLASS_ENUM (Delivery, Send); REGISTER_CLASS_ENUM (Delivery, Listen); diff --git a/libs/ardour/export_channel_configuration.cc b/libs/ardour/export_channel_configuration.cc index 31729e171b..9487d021b4 100644 --- a/libs/ardour/export_channel_configuration.cc +++ b/libs/ardour/export_channel_configuration.cc @@ -31,6 +31,7 @@ #include "ardour/audioengine.h" #include "pbd/convert.h" +#include "pbd/enumwriter.h" #include "pbd/pthread_utils.h" using namespace PBD; @@ -40,9 +41,10 @@ namespace ARDOUR /* ExportChannelConfiguration */ -ExportChannelConfiguration::ExportChannelConfiguration (Session & session) : - session (session), - split (false) +ExportChannelConfiguration::ExportChannelConfiguration (Session & session) + : session (session) + , split (false) + , region_type (RegionExportChannelFactory::None) { } @@ -56,6 +58,15 @@ ExportChannelConfiguration::get_state () root->add_property ("split", get_split() ? "true" : "false"); root->add_property ("channels", to_string (get_n_chans(), std::dec)); + switch (region_type) { + case RegionExportChannelFactory::None: + // Do nothing + break; + default: + root->add_property ("region-processing", enum_2_string (region_type)); + break; + } + uint32_t i = 1; for (ExportChannelConfiguration::ChannelList::const_iterator c_it = channels.begin(); c_it != channels.end(); ++c_it) { channel = root->add_child ("Channel"); @@ -79,6 +90,11 @@ ExportChannelConfiguration::set_state (const XMLNode & root) set_split (!prop->value().compare ("true")); } + if ((prop = root.property ("region-processing"))) { + set_region_processing_type ((RegionExportChannelFactory::Type) + string_2_enum (prop->value(), RegionExportChannelFactory::Type)); + } + XMLNodeList channels = root.children ("Channel"); for (XMLNodeList::iterator it = channels.begin(); it != channels.end(); ++it) { ExportChannelPtr channel (new PortExportChannel ()); diff --git a/libs/ardour/export_profile_manager.cc b/libs/ardour/export_profile_manager.cc index 459f878596..6ff73261de 100644 --- a/libs/ardour/export_profile_manager.cc +++ b/libs/ardour/export_profile_manager.cc @@ -90,8 +90,6 @@ ExportProfileManager::ExportProfileManager (Session & s, std::string xml_node_na ExportProfileManager::~ExportProfileManager () { - if (single_range_mode) { return; } - XMLNode * instant_xml (new XMLNode (xml_node_name)); serialize_profile (*instant_xml); session.add_instant_xml (*instant_xml, false); |