diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-05-12 14:15:07 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-06-29 14:18:12 -0400 |
commit | 4644e113a86974ba29c5979b7285260bd3afdfcb (patch) | |
tree | 688444caf4110e3d552c08aab7ad541359291835 /libs/ardour/butler.cc | |
parent | 9ef4888e9140aa479422a6c1ad377b4194e3e94c (diff) |
introduce the idea of buffering presets, along with 3 possible settings (plus custom).
Actual numbers for the parameters are still to be determined/verified, and probably subject to
some platform specificity
Diffstat (limited to 'libs/ardour/butler.cc')
-rw-r--r-- | libs/ardour/butler.cc | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/libs/ardour/butler.cc b/libs/ardour/butler.cc index 01c21b45d0..2485bc399f 100644 --- a/libs/ardour/butler.cc +++ b/libs/ardour/butler.cc @@ -54,7 +54,13 @@ Butler::Butler(Session& s) g_atomic_int_set(&should_do_transport_work, 0); SessionEvent::pool->set_trash (&pool_trash); - Config->ParameterChanged.connect_same_thread (*this, boost::bind (&Butler::config_changed, this, _1)); + /* catch future changes to parameters */ + Config->ParameterChanged.connect_same_thread (*this, boost::bind (&Butler::config_changed, this, _1)); + + /* use any current ones that we care about */ + boost::function<void (std::string)> ff (boost::bind (&Butler::config_changed, this, _1)); + Config->map_parameters (ff); + } Butler::~Butler() @@ -66,12 +72,27 @@ void Butler::config_changed (std::string p) { if (p == "playback-buffer-seconds") { - /* size is in Samples, not bytes */ - audio_dstream_playback_buffer_size = (uint32_t) floor (Config->get_audio_playback_buffer_seconds() * _session.frame_rate()); _session.adjust_playback_buffering (); + if (Config->get_buffering_preset() == Custom) { + /* size is in Samples, not bytes */ + audio_dstream_playback_buffer_size = (uint32_t) floor (Config->get_audio_playback_buffer_seconds() * _session.frame_rate()); + _session.adjust_playback_buffering (); + } else { + std::cerr << "Skip explicit buffer seconds, preset in use\n"; + } } else if (p == "capture-buffer-seconds") { + if (Config->get_buffering_preset() == Custom) { + audio_dstream_capture_buffer_size = (uint32_t) floor (Config->get_audio_capture_buffer_seconds() * _session.frame_rate()); + _session.adjust_capture_buffering (); + } else { + std::cerr << "Skip explicit buffer seconds, preset in use\n"; + } + } else if (p == "buffering-preset") { + Diskstream::set_buffering_parameters (Config->get_buffering_preset()); audio_dstream_capture_buffer_size = (uint32_t) floor (Config->get_audio_capture_buffer_seconds() * _session.frame_rate()); + audio_dstream_playback_buffer_size = (uint32_t) floor (Config->get_audio_playback_buffer_seconds() * _session.frame_rate()); _session.adjust_capture_buffering (); + _session.adjust_playback_buffering (); } else if (p == "midi-readahead") { MidiDiskstream::set_readahead_frames ((framecnt_t) (Config->get_midi_readahead() * _session.frame_rate())); } |