From 923e6f40a3b41b1af91940c6f738523320a1b0d2 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Thu, 1 Nov 2018 03:50:54 +0200 Subject: implement snd_pcm_format_value --- src/pcm.c | 50 +++++++++++++++++++++++++++++++------------------- src/stubs.h | 1 - 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/src/pcm.c b/src/pcm.c index 0d06c67..1a4ee08 100644 --- a/src/pcm.c +++ b/src/pcm.c @@ -460,6 +460,25 @@ snd_pcm_hw_params_get_access(const snd_pcm_hw_params_t *params, snd_pcm_access_t return 0; } +static snd_pcm_format_t SUPPORTED_FORMATS[] = { + SND_PCM_FORMAT_U8, + SND_PCM_FORMAT_S8, + SND_PCM_FORMAT_S16_LE, + SND_PCM_FORMAT_S16_BE, + SND_PCM_FORMAT_U16_LE, + SND_PCM_FORMAT_U16_BE, + SND_PCM_FORMAT_S24_LE, + SND_PCM_FORMAT_S24_BE, + SND_PCM_FORMAT_U24_LE, + SND_PCM_FORMAT_U24_BE, + SND_PCM_FORMAT_S32_LE, + SND_PCM_FORMAT_S32_BE, + SND_PCM_FORMAT_U32_LE, + SND_PCM_FORMAT_U32_BE, + SND_PCM_FORMAT_FLOAT_LE, + SND_PCM_FORMAT_FLOAT_BE +}; + const char* snd_pcm_format_name(const snd_pcm_format_t format) { @@ -488,6 +507,17 @@ snd_pcm_format_name(const snd_pcm_format_t format) #undef NAME } +snd_pcm_format_t +snd_pcm_format_value(const char* name) +{ + for (uint8_t i = 0; i < ARRAY_SIZE(SUPPORTED_FORMATS); ++i) { + const char *needle = snd_pcm_format_name(SUPPORTED_FORMATS[i]); + if (name && !strcmp(needle, name)) + return SUPPORTED_FORMATS[i]; + } + return SND_PCM_FORMAT_UNKNOWN; +} + static bool pcm_format(const snd_pcm_format_t format, struct sio_par *par, bool *out_needs_conversion) { @@ -612,25 +642,7 @@ snd_pcm_hw_params_free(snd_pcm_hw_params_t *obj) void snd_pcm_hw_params_get_format_mask(snd_pcm_hw_params_t *params, snd_pcm_format_mask_t *mask) { - static snd_pcm_format_t def_fmts[] = { - SND_PCM_FORMAT_U8, - SND_PCM_FORMAT_S8, - SND_PCM_FORMAT_S16_LE, - SND_PCM_FORMAT_S16_BE, - SND_PCM_FORMAT_U16_LE, - SND_PCM_FORMAT_U16_BE, - SND_PCM_FORMAT_S24_LE, - SND_PCM_FORMAT_S24_BE, - SND_PCM_FORMAT_U24_LE, - SND_PCM_FORMAT_U24_BE, - SND_PCM_FORMAT_S32_LE, - SND_PCM_FORMAT_S32_BE, - SND_PCM_FORMAT_U32_LE, - SND_PCM_FORMAT_U32_BE, - SND_PCM_FORMAT_FLOAT_LE, - SND_PCM_FORMAT_FLOAT_BE - }; - static snd_pcm_format_mask_t def_mask = { .fmts = def_fmts, .nmemb = ARRAY_SIZE(def_fmts) }; + static snd_pcm_format_mask_t def_mask = { .fmts = SUPPORTED_FORMATS, .nmemb = ARRAY_SIZE(SUPPORTED_FORMATS) }; if (mask) *mask = def_mask; } diff --git a/src/stubs.h b/src/stubs.h index d92b041..c1a7ead 100644 --- a/src/stubs.h +++ b/src/stubs.h @@ -673,7 +673,6 @@ const char *snd_pcm_access_name(const snd_pcm_access_t _access) { WARNX1("stub") const char *snd_pcm_format_description(const snd_pcm_format_t format) { WARNX1("stub"); return NULL; } const char *snd_pcm_subformat_name(const snd_pcm_subformat_t subformat) { WARNX1("stub"); return NULL; } const char *snd_pcm_subformat_description(const snd_pcm_subformat_t subformat) { WARNX1("stub"); return NULL; } -snd_pcm_format_t snd_pcm_format_value(const char* name) { WARNX1("stub"); return 0; } const char *snd_pcm_tstamp_mode_name(const snd_pcm_tstamp_t mode) { WARNX1("stub"); return NULL; } const char *snd_pcm_state_name(const snd_pcm_state_t state) { WARNX1("stub"); return NULL; } int snd_pcm_dump(snd_pcm_t *pcm, snd_output_t *out) { WARNX1("stub"); return 0; } -- cgit v1.2.3