mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 12:16:30 +01:00
Handle mutiple export files with the same extension but different format.
If multiple filenames have the same extension, append the format name to the filename. This still requires a bit of extra logic to be optimal, as the format name will now be added in some situations where it is not needed. However, this is better than producing a broken file...
This commit is contained in:
parent
2d081e43e1
commit
8cbb9727e9
7 changed files with 39 additions and 4 deletions
|
|
@ -171,6 +171,7 @@ ExportHandler::start_timespan ()
|
|||
timespan_bounds = config_map.equal_range (current_timespan);
|
||||
graph_builder->reset ();
|
||||
graph_builder->set_current_timespan (current_timespan);
|
||||
handle_duplicate_format_extensions();
|
||||
for (ConfigMap::iterator it = timespan_bounds.first; it != timespan_bounds.second; ++it) {
|
||||
// Filenames can be shared across timespans
|
||||
FileSpec & spec = it->second;
|
||||
|
|
@ -186,6 +187,27 @@ ExportHandler::start_timespan ()
|
|||
session.start_audio_export (process_position);
|
||||
}
|
||||
|
||||
void
|
||||
ExportHandler::handle_duplicate_format_extensions()
|
||||
{
|
||||
typedef std::map<std::string, int> ExtCountMap;
|
||||
|
||||
ExtCountMap counts;
|
||||
for (ConfigMap::iterator it = timespan_bounds.first; it != timespan_bounds.second; ++it) {
|
||||
counts[it->second.format->extension()]++;
|
||||
}
|
||||
|
||||
bool duplicates_found = false;
|
||||
for (ExtCountMap::iterator it = counts.begin(); it != counts.end(); ++it) {
|
||||
if (it->second > 1) { duplicates_found = true; }
|
||||
}
|
||||
|
||||
// Set this always, as the filenames are shared...
|
||||
for (ConfigMap::iterator it = timespan_bounds.first; it != timespan_bounds.second; ++it) {
|
||||
it->second.filename->include_format_name = duplicates_found;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
ExportHandler::process (framecnt_t frames)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue