From 115c827b2478cbf9bca89e603f1552433bc9518d Mon Sep 17 00:00:00 2001 From: Abramo Bagnara Date: Sat, 25 Nov 2000 21:34:36 +0000 Subject: [PATCH] Added helper. Tiny cleanings --- include/pcm.h | 2 ++ src/pcm/pcm.c | 38 +++++++++++++++++++++++++++++++------- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/include/pcm.h b/include/pcm.h index b49bea5a..d8ddc37c 100644 --- a/include/pcm.h +++ b/include/pcm.h @@ -91,6 +91,7 @@ ssize_t snd_pcm_readn(snd_pcm_t *pcm, void **bufs, size_t size); int snd_pcm_dump_hw_setup(snd_pcm_t *pcm, FILE *fp); int snd_pcm_dump_sw_setup(snd_pcm_t *pcm, FILE *fp); int snd_pcm_dump_setup(snd_pcm_t *pcm, FILE *fp); +int snd_pcm_dump_hw_info(snd_pcm_hw_info_t *info, FILE *fp); int snd_pcm_dump_hw_params_fail(snd_pcm_hw_params_t *params, FILE *fp); int snd_pcm_dump_sw_params_fail(snd_pcm_sw_params_t *params, FILE *fp); int snd_pcm_dump(snd_pcm_t *pcm, FILE *fp); @@ -101,6 +102,7 @@ int snd_pcm_unlink(snd_pcm_t *pcm); int snd_pcm_wait(snd_pcm_t *pcm, int timeout); ssize_t snd_pcm_avail_update(snd_pcm_t *pcm); int snd_pcm_set_avail_min(snd_pcm_t *pcm, size_t size); +void snd_pcm_hw_info_all(snd_pcm_hw_info_t *info); int snd_pcm_hw_params_rules(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int count, int *rules); int snd_pcm_hw_params_rulesv(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, ...); diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index d3105c80..4861d08e 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -112,8 +112,27 @@ int snd_pcm_hw_info(snd_pcm_t *pcm, snd_pcm_hw_info_t *info) return err; } +void snd_pcm_hw_info_all(snd_pcm_hw_info_t *info) +{ + assert(info); + info->access_mask = ~0; + info->format_mask = ~0; + info->subformat_mask = ~0; + info->channels_min = 1; + info->channels_max = UINT_MAX; + info->rate_min = 1; + info->rate_max = UINT_MAX; + info->fragment_size_min = 1; + info->fragment_size_max = ULONG_MAX; + info->fragments_min = 1; + info->fragments_max = UINT_MAX; + info->buffer_size_min = 1; + info->buffer_size_max = ULONG_MAX; +} + void snd_pcm_hw_params_to_info(snd_pcm_hw_params_t *params, snd_pcm_hw_info_t *info) { + assert(info && params); info->access_mask = 1U << params->access; info->format_mask = 1U << params->format; info->subformat_mask = 1U << params->subformat; @@ -656,12 +675,13 @@ int snd_pcm_dump_setup(snd_pcm_t *pcm, FILE *fp) return 0; } -int snd_pcm_dump_hw_info(snd_pcm_hw_info_t *info, - FILE *fp) +int snd_pcm_dump_hw_info(snd_pcm_hw_info_t *info, FILE *fp) { unsigned int k; fputs("access:", fp); - if (info->access_mask) { + if (info->access_mask == ~0) + fputs(" ALL", fp); + else if (info->access_mask) { for (k = 0; k <= SND_PCM_ACCESS_LAST; ++k) if (info->access_mask & (1U << k)) { putc(' ', fp); @@ -672,7 +692,9 @@ int snd_pcm_dump_hw_info(snd_pcm_hw_info_t *info, putc('\n', fp); fputs("format:", fp); - if (info->format_mask) { + if (info->format_mask == ~0) + fputs(" ALL", fp); + else if (info->format_mask) { for (k = 0; k <= SND_PCM_FORMAT_LAST; ++k) if (info->format_mask & (1U << k)) { putc(' ', fp); @@ -683,7 +705,9 @@ int snd_pcm_dump_hw_info(snd_pcm_hw_info_t *info, putc('\n', fp); fputs("subformat:", fp); - if (info->subformat_mask) { + if (info->subformat_mask == ~0) + fputs(" ALL", fp); + else if (info->subformat_mask) { for (k = 0; k <= SND_PCM_SUBFORMAT_LAST; ++k) if (info->subformat_mask & (1U << k)) { putc(' ', fp); @@ -694,7 +718,7 @@ int snd_pcm_dump_hw_info(snd_pcm_hw_info_t *info, putc('\n', fp); fputs("channels: ", fp); - if (info->channels_min == 0 && info->channels_max == UINT_MAX) + if (info->channels_min <= 1 && info->channels_max == UINT_MAX) fputs("ALL", fp); else if (info->channels_min > info->channels_max) fputs("NONE", fp); @@ -706,7 +730,7 @@ int snd_pcm_dump_hw_info(snd_pcm_hw_info_t *info, putc('\n', fp); fputs("rate: ", fp); - if (info->rate_min == 0 && info->rate_max == UINT_MAX) + if (info->rate_min <= 1 && info->rate_max == UINT_MAX) fputs("ALL", fp); else if (info->rate_min > info->rate_max) fputs("NONE", fp); -- 2.47.1