]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Added helper. Tiny cleanings
authorAbramo Bagnara <abramo@alsa-project.org>
Sat, 25 Nov 2000 21:34:36 +0000 (21:34 +0000)
committerAbramo Bagnara <abramo@alsa-project.org>
Sat, 25 Nov 2000 21:34:36 +0000 (21:34 +0000)
include/pcm.h
src/pcm/pcm.c

index b49bea5ad7fef7e8e342de3e83ab7c5de42f1499..d8ddc37ce6a807a0aa34781163cad86a18e8d0f5 100644 (file)
@@ -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, ...);
index d3105c803ca01f471e2a1ba9cfecc253f14f573a..4861d08e1ba19d2276ad419db55266a9f279bfb3 100644 (file)
@@ -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);