summaryrefslogtreecommitdiff
path: root/libs/ardour/track.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-09-30 18:53:02 +0200
committerRobin Gareus <robin@gareus.org>2017-09-30 18:53:02 +0200
commitdec10f2f3c6fffe27e72243d9bf36713d8f084f9 (patch)
treedc7929061e69643c6f6505296a4244be5d26afc6 /libs/ardour/track.cc
parent0fc3bbddb280f237d6c9066caee8712ad8888aa4 (diff)
First part of consolidating ::roll(), ::no_roll()
This moves common code (get and fill buffers) into ::passthru() and renames ::passthru() to ::run_route(). passthru_silence() is no longer used (it was only needed A5 style Track::no_roll_unlocked for no-roll + disk-monitoring)
Diffstat (limited to 'libs/ardour/track.cc')
-rw-r--r--libs/ardour/track.cc124
1 files changed, 0 insertions, 124 deletions
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index 1e53daff3c..45e4bce9b0 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -429,130 +429,6 @@ Track::set_name (const string& str)
return ret;
}
-int
-Track::no_roll_unlocked (pframes_t nframes, samplepos_t start_sample, samplepos_t end_sample, bool session_state_changing)
-{
- /* no outputs? nothing to do ... what happens if we have sends etc. ? */
-
- if (n_outputs().n_total() == 0 && !ARDOUR::Profile->get_mixbus()) {
- //Note: Mixbus has its own output mechanism, so we should operate even if no explicit outputs are assigned
- return 0;
- }
-
- /* not active ... do the minimum possible by just outputting silence */
-
- if (!_active) {
- silence (nframes);
- if (_meter_point == MeterInput && ((_monitoring_control->monitoring_choice() & MonitorInput) || _disk_writer->record_enabled())) {
- _meter->reset();
- }
- return 0;
- }
-
- if (session_state_changing) {
- if (_session.transport_speed() != 0.0f) {
- /* we're rolling but some state is changing (e.g. our
- disk reader contents) so we cannot use them. Be
- silent till this is over. Don't declick.
-
- XXX note the absurdity of ::no_roll() being called when we ARE rolling!
- */
- passthru_silence (start_sample, end_sample, nframes, 0);
- return 0;
- }
- /* we're really not rolling, so we're either delivery silence or actually
- monitoring, both of which are safe to do while session_state_changing is true.
- */
- }
-
- // XXX this needs to go away.. disk-reader or Route::process_output_buffers needs to handle this XXX //
-
- bool be_silent;
- MonitorState const s = monitoring_state ();
- /* we are not rolling, so be silent even if we are monitoring disk, as there
- will be no disk data coming in.
- */
- switch (s) {
- case MonitoringSilence:
- be_silent = true;
- break;
- case MonitoringDisk:
- be_silent = true;
- break;
- case MonitoringInput:
- be_silent = false;
- break;
- default:
- be_silent = false;
- break;
- }
-
- //if we have an internal generator, let it play regardless of monitoring state
- if (_have_internal_generator) {
- be_silent = false;
- }
-
- /* if have_internal_generator, or .. */
-
- if (be_silent) {
-
-#if 0
- // XXX this is also the only user of IO::process_input ()
-
- if (_meter_point == MeterInput) {
- /* still need input monitoring and metering */
-
- bool const track_rec = _disk_writer->record_enabled ();
- bool const auto_input = _session.config.get_auto_input ();
- bool const software_monitor = Config->get_monitoring_model() == SoftwareMonitoring;
- bool const tape_machine_mode = Config->get_tape_machine_mode ();
- bool no_meter = false;
-
- /* this needs a proper K-map
- * and should be separated into a function similar to monitoring_state()
- * that also handles roll() states in audio_track.cc, midi_track.cc and route.cc
- *
- * see http://www.oofus.co.uk/ardour/Ardour3MonitorModesV3.pdf
- */
- if (!auto_input && !track_rec) {
- no_meter=true;
- }
- else if (tape_machine_mode && !track_rec && auto_input) {
- no_meter=true;
- }
- else if (!software_monitor && tape_machine_mode && !track_rec) {
- no_meter=true;
- }
- else if (!software_monitor && !tape_machine_mode && !track_rec && !auto_input) {
- no_meter=true;
- }
-
- if (no_meter) {
- BufferSet& bufs (_session.get_silent_buffers (n_process_buffers()));
- _meter->run (bufs, start_sample, end_sample, 1.0, nframes, true);
- _input->process_input (boost::shared_ptr<Processor>(), start_sample, end_sample, _session.transport_speed(), nframes);
- } else {
- _input->process_input (_meter, start_sample, end_sample, _session.transport_speed(), nframes);
- }
- }
-#endif
-
- passthru_silence (start_sample, end_sample, nframes, 0);
-
- } else {
-
- BufferSet& bufs = _session.get_route_buffers (n_process_buffers());
-
- fill_buffers_with_input (bufs, _input, nframes);
-
- passthru (bufs, start_sample, end_sample, nframes, false, true, false);
- }
-
- flush_processor_buffers_locked (nframes);
-
- return 0;
-}
-
boost::shared_ptr<Playlist>
Track::playlist ()
{