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);
}
}
+std::string
+ExportProfileManager::get_sample_filename_for_format (ExportFilenamePtr filename, ExportFormatSpecPtr format)
+{
+ assert (format);
+
+ if (channel_configs.empty()) { return ""; }
+
+ std::list<string> filenames;
+ build_filenames (filenames, filename, timespans.front()->timespans,
+ channel_configs.front()->config, format);
+
+ if (filenames.empty()) { return ""; }
+ return filenames.front();
+}
+
bool
ExportProfileManager::init_filenames (XMLNodeList nodes)
{
// filename->include_timespan = (timespans->size() > 1); Disabled for now...
- for (std::list<ExportTimespanPtr>::iterator timespan_it = timespans->begin(); timespan_it != timespans->end(); ++timespan_it) {
- filename->set_timespan (*timespan_it);
+ std::list<string> paths;
+ build_filenames(paths, filename, timespans, channel_config, format);
- if (channel_config->get_split()) {
- filename->include_channel = true;
+ for (std::list<string>::const_iterator path_it = paths.begin(); path_it != paths.end(); ++path_it) {
- for (uint32_t chan = 1; chan <= channel_config->get_n_chans(); ++chan) {
- filename->set_channel (chan);
+ string path = *path_it;
- string path = filename->get_path (format);
+ if (sys::exists (sys::path (path))) {
+ warnings->conflicting_filenames.push_back (path);
+ }
- if (sys::exists (sys::path (path))) {
- warnings->conflicting_filenames.push_back (path);
- }
+ if (format->with_toc()) {
+ string marker_file = handler->get_cd_marker_filename(path, CDMarkerTOC);
+ if (sys::exists (sys::path (marker_file))) {
+ warnings->conflicting_filenames.push_back (marker_file);
}
+ }
- } else {
- string path = filename->get_path (format);
-
- if (sys::exists (sys::path (path))) {
- warnings->conflicting_filenames.push_back (path);
+ if (format->with_cue()) {
+ string marker_file = handler->get_cd_marker_filename(path, CDMarkerCUE);
+ if (sys::exists (sys::path (marker_file))) {
+ warnings->conflicting_filenames.push_back (marker_file);
}
}
}
return (sf_format_check (&sf_info) == SF_TRUE ? true : false);
}
+void
+ExportProfileManager::build_filenames(std::list<std::string> & result, ExportFilenamePtr filename,
+ TimespanListPtr timespans, ExportChannelConfigPtr channel_config,
+ ExportFormatSpecPtr format)
+{
+ for (std::list<ExportTimespanPtr>::iterator timespan_it = timespans->begin();
+ timespan_it != timespans->end(); ++timespan_it) {
+ filename->set_timespan (*timespan_it);
+
+ if (channel_config->get_split()) {
+ filename->include_channel = true;
+
+ for (uint32_t chan = 1; chan <= channel_config->get_n_chans(); ++chan) {
+ filename->set_channel (chan);
+ result.push_back(filename->get_path (format));
+ }
+
+ } else {
+ filename->include_channel = false;
+ result.push_back(filename->get_path (format));
+ }
+ }
+}
+
}; // namespace ARDOUR