summaryrefslogtreecommitdiff
path: root/libs/ardour/export_graph_builder.cc
diff options
context:
space:
mode:
authorSakari Bergen <sakari.bergen@beatwaves.net>2010-12-18 19:27:04 +0000
committerSakari Bergen <sakari.bergen@beatwaves.net>2010-12-18 19:27:04 +0000
commit94c69b3c915c3fa8f8029e514240bca5bdb90def (patch)
treedf8a37f0596992bc72219da5b53b2cb02f9f0eab /libs/ardour/export_graph_builder.cc
parentffadfff6506e507b09853e4c7e50bcedffa29cce (diff)
Finally implement position aware silence adding in export (i.e. bbt times are converted to frames correctly)
This will work when Session::convert_to_frames_at is fixed :) git-svn-id: svn://localhost/ardour2/branches/3.0@8295 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/export_graph_builder.cc')
-rw-r--r--libs/ardour/export_graph_builder.cc20
1 files changed, 16 insertions, 4 deletions
diff --git a/libs/ardour/export_graph_builder.cc b/libs/ardour/export_graph_builder.cc
index 885bc9786d..c7a1efebd1 100644
--- a/libs/ardour/export_graph_builder.cc
+++ b/libs/ardour/export_graph_builder.cc
@@ -15,6 +15,7 @@
#include "ardour/export_channel_configuration.h"
#include "ardour/export_filename.h"
#include "ardour/export_format_specification.h"
+#include "ardour/export_timespan.h"
#include "ardour/sndfile_helpers.h"
#include "pbd/filesystem.h"
@@ -69,12 +70,19 @@ ExportGraphBuilder::process_normalize ()
void
ExportGraphBuilder::reset ()
{
+ timespan.reset();
channel_configs.clear ();
channels.clear ();
normalizers.clear ();
}
void
+ExportGraphBuilder::set_current_timespan (boost::shared_ptr<ExportTimespan> span)
+{
+ timespan = span;
+}
+
+void
ExportGraphBuilder::add_config (FileSpec const & config)
{
// If the sample rate is "session rate", change it to the real value.
@@ -391,8 +399,12 @@ ExportGraphBuilder::SilenceHandler::SilenceHandler (ExportGraphBuilder & parent,
silence_trimmer.reset (new SilenceTrimmer<Sample>(max_frames_in));
silence_trimmer->set_trim_beginning (config.format->trim_beginning());
silence_trimmer->set_trim_end (config.format->trim_end());
- silence_trimmer->add_silence_to_beginning (config.format->silence_beginning(sample_rate));
- silence_trimmer->add_silence_to_end (config.format->silence_end(sample_rate));
+
+ framecnt_t sb = config.format->silence_beginning_at (parent.timespan->get_start(), sample_rate);
+ framecnt_t se = config.format->silence_end_at (parent.timespan->get_end(), sample_rate);
+
+ silence_trimmer->add_silence_to_beginning (sb);
+ silence_trimmer->add_silence_to_end (se);
add_child (new_config);
}
@@ -424,8 +436,8 @@ ExportGraphBuilder::SilenceHandler::operator== (FileSpec const & other_config) c
ExportFormatSpecification & other_format = *other_config.format;
return (format.trim_beginning() == other_format.trim_beginning()) &&
(format.trim_end() == other_format.trim_end()) &&
- (format.silence_beginning() == other_format.silence_beginning()) &&
- (format.silence_end() == other_format.silence_end());
+ (format.silence_beginning_time() == other_format.silence_beginning_time()) &&
+ (format.silence_end_time() == other_format.silence_end_time());
}
/* ChannelConfig */