From cca8e8aae773795cd2f4353d103744af53b51d2f Mon Sep 17 00:00:00 2001 From: Adam Miartus Date: Tue, 25 Jul 2023 14:26:47 +0200 Subject: [PATCH] alsa_driver: extract alsa_driver_check_fromat to a separate function --- linux/alsa/alsa_driver.c | 56 ++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/linux/alsa/alsa_driver.c b/linux/alsa/alsa_driver.c index dc74e718..8f43d7d6 100644 --- a/linux/alsa/alsa_driver.c +++ b/linux/alsa/alsa_driver.c @@ -688,6 +688,28 @@ alsa_driver_configure_stream (alsa_driver_t *driver, char *device_name, return 0; } +static int +alsa_driver_check_format (snd_pcm_format_t format) +{ + switch (format) { + case SND_PCM_FORMAT_FLOAT_LE: + case SND_PCM_FORMAT_S24_3LE: + case SND_PCM_FORMAT_S24_3BE: + case SND_PCM_FORMAT_S24_LE: + case SND_PCM_FORMAT_S24_BE: + case SND_PCM_FORMAT_S32_BE: + case SND_PCM_FORMAT_S16_BE: + case SND_PCM_FORMAT_S16_LE: + case SND_PCM_FORMAT_S32_LE: + break; + default: + jack_error ("format not supported %d", format); + return -1; + } + + return 0; +} + static void alsa_driver_set_sample_bytes (alsa_driver_t *driver) { @@ -849,42 +871,20 @@ alsa_driver_set_parameters (alsa_driver_t *driver, alsa_driver_set_sample_bytes(driver); if (driver->playback_handle) { - switch (driver->playback_sample_format) { - case SND_PCM_FORMAT_FLOAT_LE: - case SND_PCM_FORMAT_S32_LE: - case SND_PCM_FORMAT_S24_3LE: - case SND_PCM_FORMAT_S24_3BE: - case SND_PCM_FORMAT_S24_LE: - case SND_PCM_FORMAT_S24_BE: - case SND_PCM_FORMAT_S16_LE: - case SND_PCM_FORMAT_S32_BE: - case SND_PCM_FORMAT_S16_BE: - break; - - default: + err = alsa_driver_check_format(driver->playback_sample_format); + if(err < 0) { jack_error ("programming error: unhandled format " "type for playback"); - exit (1); + return -1; } } if (driver->capture_handle) { - switch (driver->capture_sample_format) { - case SND_PCM_FORMAT_FLOAT_LE: - case SND_PCM_FORMAT_S32_LE: - case SND_PCM_FORMAT_S24_3LE: - case SND_PCM_FORMAT_S24_3BE: - case SND_PCM_FORMAT_S24_LE: - case SND_PCM_FORMAT_S24_BE: - case SND_PCM_FORMAT_S16_LE: - case SND_PCM_FORMAT_S32_BE: - case SND_PCM_FORMAT_S16_BE: - break; - - default: + err = alsa_driver_check_format(driver->capture_sample_format); + if(err < 0) { jack_error ("programming error: unhandled format " "type for capture"); - exit (1); + return -1; } }