Re: [igt-dev] [PATCH i-g-t v7 3/8] lib/igt_{alsa, audio}: improve logging

Martin Peres
2019-04-25T09:53:44Z

On 23/04/2019 16:04, Simon Ser wrote:
> - 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 <simon.ser@intel.com>

Reviewed-by: Martin Peres <martin.peres@linux.intel.com>

> ---
> 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(&params);
>
> @@ -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
>