From e3556c66a79faa19348314c1b67a9d20529bfd87 Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Thu, 5 Sep 2024 14:28:51 +0200 Subject: [PATCH] aplay/alsa: warn if buffer is too short --- src/audio/playback/alsa.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/audio/playback/alsa.c b/src/audio/playback/alsa.c index 3c642c3da..bf34dc798 100644 --- a/src/audio/playback/alsa.c +++ b/src/audio/playback/alsa.c @@ -577,10 +577,21 @@ static bool audio_play_alsa_reconfigure(void *state, struct audio_desc desc) unsigned int buf_len; int buf_dir = -1; - if (get_commandline_param("low-latency-audio") && get_commandline_param("alsa-playback-buffer") == NULL) { - CHECK_OK(snd_pcm_hw_params_set_buffer_time_first(s->handle, params, - &buf_len, &buf_dir)); + if (get_commandline_param("low-latency-audio") != NULL && + get_commandline_param("alsa-playback-buffer") == NULL) { + // set minimal value from the configuration space + CHECK_OK(snd_pcm_hw_params_set_buffer_time_first(s->handle, params, &buf_len, &buf_dir)); log_msg(LOG_LEVEL_INFO, MOD_NAME "ALSA driver buffer len set to: %lf ms\n", buf_len / 1000.0); + enum { + REC_MIN_BUF = 5000, + }; + if (buf_len <= REC_MIN_BUF) { + MSG(WARNING, + "ALSA driver buffer len less than %d usec seem to " + "be too loow, consider using alsa-playback-buffer " + "instead of low-latency-audio.", + REC_MIN_BUF); + } } else { buf_len = (s->playback_mode == SYNC ? BUF_LEN_DEFAULT_SYNC : BUF_LEN_DEFAULT) * 1000;