Patch from colinf to fix crash on stem export of 4-channel tracks (#4750).
authorCarl Hetherington <carl@carlh.net>
Thu, 1 Mar 2012 15:42:23 +0000 (15:42 +0000)
committerCarl Hetherington <carl@carlh.net>
Thu, 1 Mar 2012 15:42:23 +0000 (15:42 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@11571 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/export_graph_builder.cc

index 9b35e16530dac5c784b152165db8a5f943af067c..8152ff0c20d1700e54cfe98d35a49372cca5c553 100644 (file)
@@ -293,9 +293,10 @@ ExportGraphBuilder::Normalizer::Normalizer (ExportGraphBuilder & parent, FileSpe
   : parent (parent)
 {
        config = new_config;
-       max_frames_out = 4086; // TODO good chunk size
-
-       buffer.reset (new AllocatingProcessContext<Sample> (max_frames_out, config.channel_config->get_n_chans()));
+       uint32_t const channels = config.channel_config->get_n_chans();
+       max_frames_out = 4086 - (4086 % channels); // TODO good chunk size
+       
+       buffer.reset (new AllocatingProcessContext<Sample> (max_frames_out, channels));
        peak_reader.reset (new PeakReader ());
        normalizer.reset (new AudioGrapher::Normalizer (config.format->normalize_target()));
        threader.reset (new Threader<Sample> (parent.thread_pool));
@@ -304,8 +305,7 @@ ExportGraphBuilder::Normalizer::Normalizer (ExportGraphBuilder & parent, FileSpe
        normalizer->add_output (threader);
 
        int format = ExportFormatBase::F_RAW | ExportFormatBase::SF_Float;
-       tmp_file.reset (new TmpFile<float> (format, config.channel_config->get_n_chans(),
-                                           config.format->sample_rate()));
+       tmp_file.reset (new TmpFile<float> (format, channels, config.format->sample_rate()));
        tmp_file->FileWritten.connect_same_thread (post_processing_connection,
                                                   boost::bind (&Normalizer::start_post_processing, this));