From 9a0770f04f7e24fb9eb41308dd0435166d467323 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 23 Apr 2019 16:04:54 +0300 Subject: lib/igt_{alsa, audio}: improve logging - Print matched audio devices - Print min/max values when alsa_test_configuration fails - Print debug log line when skipping a frequency Signed-off-by: Simon Ser Reviewed-by: Martin Peres --- lib/igt_alsa.c | 21 +++++++++++++++++++-- lib/igt_audio.c | 5 ++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/igt_alsa.c b/lib/igt_alsa.c index fc6d336b..3b1a9e90 100644 --- a/lib/igt_alsa.c +++ b/lib/igt_alsa.c @@ -182,6 +182,8 @@ static char *alsa_resolve_indentifier(const char *device_name, int skip) continue; } + igt_debug("Matched device \"%s\"\n", pcm_name); + snprintf(name, sizeof(name), "hw:%d,%d", card, dev); @@ -329,6 +331,9 @@ static bool alsa_test_configuration(snd_pcm_t *handle, int channels, { snd_pcm_hw_params_t *params; int ret; + unsigned int min_channels, max_channels; + unsigned int min_rate, max_rate; + int min_rate_dir, max_rate_dir; snd_pcm_hw_params_alloca(¶ms); @@ -337,12 +342,24 @@ static bool alsa_test_configuration(snd_pcm_t *handle, int channels, return false; ret = snd_pcm_hw_params_test_rate(handle, params, sampling_rate, 0); - if (ret < 0) + if (ret < 0) { + snd_pcm_hw_params_get_rate_min(params, &min_rate, &min_rate_dir); + snd_pcm_hw_params_get_rate_max(params, &max_rate, &max_rate_dir); + igt_debug("Output device supports rates between %u and %u, " + "requested %d\n", + min_rate, max_rate, sampling_rate); return false; + } ret = snd_pcm_hw_params_test_channels(handle, params, channels); - if (ret < 0) + if (ret < 0) { + snd_pcm_hw_params_get_channels_min(params, &min_channels); + snd_pcm_hw_params_get_channels_max(params, &max_channels); + igt_debug("Output device supports between %u and " + "%u channels, requested %d\n", + min_channels, max_channels, channels); return false; + } return true; } diff --git a/lib/igt_audio.c b/lib/igt_audio.c index 7624f565..5822fed7 100644 --- a/lib/igt_audio.c +++ b/lib/igt_audio.c @@ -102,8 +102,11 @@ int audio_signal_add_frequency(struct audio_signal *signal, int frequency) return -1; /* Stay within the Nyquist–Shannon sampling theorem. */ - if (frequency > signal->sampling_rate / 2) + if (frequency > signal->sampling_rate / 2) { + igt_debug("Skipping frequency %d: too high for a %d Hz " + "sampling rate\n", frequency, signal->sampling_rate); return -1; + } /* Clip the frequency to an integer multiple of the sampling rate. * This to be able to store a full period of it and use that for -- cgit v1.2.3