From 8426bb3aaf4ebbe17483a159edbc3c7dcf13e781 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 22 Jan 2021 16:06:18 +0100 Subject: [PATCH] ALSA: explicitly list millisecond buffer-sizes --- libs/backends/alsa/alsa_audiobackend.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libs/backends/alsa/alsa_audiobackend.cc b/libs/backends/alsa/alsa_audiobackend.cc index e0b25e114d..adb2990e46 100644 --- a/libs/backends/alsa/alsa_audiobackend.cc +++ b/libs/backends/alsa/alsa_audiobackend.cc @@ -236,6 +236,21 @@ AlsaAudioBackend::available_buffer_sizes (const std::string& device) const bs.push_back (avail_sizes[i]); } } + + if (!nfo) { + return bs; + } + + static const unsigned long try_msec [] = { 2, 4, 5, 6, 8, 10, 15, 20, 25, 40}; + + for (size_t i = 0 ; i < sizeof(try_msec) / sizeof(unsigned long); ++i) { + unsigned int msbs = _samplerate * try_msec[i] / 1000; + if (msbs >= nfo->min_size && msbs <= nfo->max_size) { + bs.push_back (msbs); + } + } + + std::sort (bs.begin (), bs.end ()); return bs; }