diff --git a/libs/ardour/disk_reader.cc b/libs/ardour/disk_reader.cc index 5210b13028..439b3c7232 100644 --- a/libs/ardour/disk_reader.cc +++ b/libs/ardour/disk_reader.cc @@ -113,8 +113,9 @@ DiskReader::ReaderChannelInfo::resize_preloop (samplecnt_t bufsize) int DiskReader::add_channel_to (std::shared_ptr c, uint32_t how_many) { + samplecnt_t bufsz = std::max (_chunk_samples * 2, _session.butler ()->audio_playback_buffer_size ()); while (how_many--) { - c->push_back (new ReaderChannelInfo (_session.butler ()->audio_playback_buffer_size (), loop_fade_length)); + c->push_back (new ReaderChannelInfo (bufsz, loop_fade_length)); DEBUG_TRACE (DEBUG::DiskIO, string_compose ("'%1': new reader channel, write space = %2 read = %3\n", name (), c->back ()->rbuf->write_space (), @@ -236,8 +237,10 @@ DiskReader::adjust_buffering () { std::shared_ptr c = channels.reader (); + samplecnt_t bufsz = std::max (_chunk_samples * 2, _session.butler ()->audio_playback_buffer_size ()); + for (auto const& chan : *c) { - chan->resize (_session.butler ()->audio_playback_buffer_size ()); + chan->resize (bufsz); } } diff --git a/libs/ardour/disk_writer.cc b/libs/ardour/disk_writer.cc index 9ee351e17f..6e5fb5616d 100644 --- a/libs/ardour/disk_writer.cc +++ b/libs/ardour/disk_writer.cc @@ -109,8 +109,9 @@ DiskWriter::WriterChannelInfo::resize (samplecnt_t bufsize) int DiskWriter::add_channel_to (std::shared_ptr c, uint32_t how_many) { + samplecnt_t bufsz = std::max (_chunk_samples * 2, _session.butler()->audio_capture_buffer_size()); while (how_many--) { - c->push_back (new WriterChannelInfo (_session.butler()->audio_capture_buffer_size())); + c->push_back (new WriterChannelInfo (bufsz)); DEBUG_TRACE (DEBUG::DiskIO, string_compose ("%1: new writer channel, write space = %2 read = %3\n", name(), c->back()->wbuf->write_space(), @@ -1386,8 +1387,9 @@ DiskWriter::adjust_buffering () { std::shared_ptr c = channels.reader(); + samplecnt_t bufsz = std::max (_chunk_samples * 2, _session.butler()->audio_capture_buffer_size()); for (auto const chan : *c) { - chan->resize (_session.butler()->audio_capture_buffer_size()); + chan->resize (bufsz); } }