diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2018-11-01 03:50:54 +0200 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2018-11-01 03:50:54 +0200 |
commit | 923e6f40a3b41b1af91940c6f738523320a1b0d2 (patch) | |
tree | 23e01cd3df6a9f5b4fdb8fc6211a8ed3018a2840 | |
parent | 78ba923fc1236a2653f906ad04aca7aba773a40d (diff) |
implement snd_pcm_format_value
-rw-r--r-- | src/pcm.c | 50 | ||||
-rw-r--r-- | src/stubs.h | 1 |
2 files changed, 31 insertions, 20 deletions
@@ -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; } |