diff options
author | Robin Gareus <robin@gareus.org> | 2014-06-03 21:08:45 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-06-04 02:19:46 +0200 |
commit | 06b4cf92dbf57bf4b5558f6c054e1ce2d3c8b89b (patch) | |
tree | 06403867730092d9e43fa439c25f90bd465df38d /libs/ardour/session.cc | |
parent | 03cb44f814774252082a277a05c8f336c43fe267 (diff) |
re-work bounce/freeze. Freezer stops at first active delivery.
amend to 8f52bf7d9f
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r-- | libs/ardour/session.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 0f0eb5b8f1..fbde7edf60 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -4124,7 +4124,7 @@ Session::write_one_track (AudioTrack& track, framepos_t start, framepos_t end, bool /*overwrite*/, vector<boost::shared_ptr<Source> >& srcs, InterThreadInfo& itt, boost::shared_ptr<Processor> endpoint, bool include_endpoint, - bool for_export) + bool for_export, bool for_freeze) { boost::shared_ptr<Region> result; boost::shared_ptr<Playlist> playlist; @@ -4150,7 +4150,8 @@ Session::write_one_track (AudioTrack& track, framepos_t start, framepos_t end, return result; } - diskstream_channels = track.bounce_get_output_streams (diskstream_channels, endpoint, include_endpoint, for_export); + diskstream_channels = track.bounce_get_output_streams (diskstream_channels, endpoint, + include_endpoint, for_export, for_freeze); if (diskstream_channels.n_audio() < 1) { error << _("Cannot write a range with no audio.") << endmsg; @@ -4217,7 +4218,7 @@ Session::write_one_track (AudioTrack& track, framepos_t start, framepos_t end, position = start; to_do = len; - latency_skip = track.bounce_get_latency (endpoint, include_endpoint, for_export); + latency_skip = track.bounce_get_latency (endpoint, include_endpoint, for_export, for_freeze); /* create a set of reasonably-sized buffers */ for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) { @@ -4235,7 +4236,7 @@ Session::write_one_track (AudioTrack& track, framepos_t start, framepos_t end, this_chunk = min (to_do, bounce_chunk_size); - if (track.export_stuff (buffers, start, this_chunk, endpoint, include_endpoint, for_export)) { + if (track.export_stuff (buffers, start, this_chunk, endpoint, include_endpoint, for_export, for_freeze)) { goto out; } @@ -4264,14 +4265,14 @@ Session::write_one_track (AudioTrack& track, framepos_t start, framepos_t end, } /* post-roll, pick up delayed processor output */ - latency_skip = track.bounce_get_latency (endpoint, include_endpoint, for_export); + latency_skip = track.bounce_get_latency (endpoint, include_endpoint, for_export, for_freeze); while (latency_skip && !itt.cancel) { this_chunk = min (latency_skip, bounce_chunk_size); latency_skip -= this_chunk; buffers.silence (this_chunk, 0); - track.bounce_process (buffers, start, this_chunk, endpoint, include_endpoint, for_export); + track.bounce_process (buffers, start, this_chunk, endpoint, include_endpoint, for_export, for_freeze); uint32_t n = 0; for (vector<boost::shared_ptr<Source> >::iterator src=srcs.begin(); src != srcs.end(); ++src, ++n) { |