aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2011-05-25 14:29:29 +0200
committerTakashi Iwai <tiwai@suse.de>2011-05-25 14:48:55 +0200
commit5a7f98ecb3374f6335566d17a4798f7afb91172c (patch)
treef397ba833257d7a594de439c0dba8902d97d8104
parentb6a76269e72eb41eaae09e931b33bdd4c958d305 (diff)
downloadsalsa-lib-5a7f98ecb3374f6335566d17a4798f7afb91172c.tar.gz
Minor clean up in pcm_params.c
-rw-r--r--src/asound.h4
-rw-r--r--src/pcm_macros.h2
-rw-r--r--src/pcm_params.c74
3 files changed, 38 insertions, 42 deletions
diff --git a/src/asound.h b/src/asound.h
index 7c19844..8a1bc6f 100644
--- a/src/asound.h
+++ b/src/asound.h
@@ -296,10 +296,10 @@ typedef struct snd_interval {
empty:1;
} snd_interval_t;
-#define SNDRV_MASK_MAX 256
+#define SND_MASK_MAX 256
typedef struct snd_mask {
- u_int32_t bits[(SNDRV_MASK_MAX+31)/32];
+ u_int32_t bits[SND_MASK_MAX / 32];
} snd_mask_t;
typedef struct snd_pcm_hw_params {
diff --git a/src/pcm_macros.h b/src/pcm_macros.h
index cef010c..91daab6 100644
--- a/src/pcm_macros.h
+++ b/src/pcm_macros.h
@@ -555,8 +555,6 @@ int _snd_mask_test(const snd_mask_t *mask, unsigned int val)
return mask->bits[MASK_OFS(val)] & MASK_BIT(val);
}
-#define SND_MASK_MAX SNDRV_MASK_MAX
-
__SALSA_EXPORT_FUNC
int _snd_mask_empty(const snd_mask_t *mask)
{
diff --git a/src/pcm_params.c b/src/pcm_params.c
index 8d43886..8d2dd96 100644
--- a/src/pcm_params.c
+++ b/src/pcm_params.c
@@ -70,7 +70,7 @@ static void snd_mask_reset_range(snd_mask_t *mask, unsigned int from,
mask->bits[MASK_OFS(i)] &= ~MASK_BIT(i);
}
-static inline unsigned int ld2(u_int32_t v)
+static unsigned int ld2(u_int32_t v)
{
unsigned r = 0;
@@ -137,7 +137,7 @@ static inline int snd_mask_refine(snd_mask_t *mask, const snd_mask_t *v)
mask->bits[i] &= v->bits[i];
if (_snd_mask_empty(mask))
return -EINVAL;
- return !! memcmp(mask, &old, MASK_SIZE * 4);
+ return !! memcmp(mask, &old, sizeof(old));
}
static inline int snd_mask_refine_first(snd_mask_t *mask)
@@ -1071,6 +1071,37 @@ int snd_pcm_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t *params)
* DUMP HW PARAMS
*/
+static void snd_mask_print(const snd_mask_t *mask, int var, snd_output_t *out)
+{
+ unsigned int i;
+ if (_snd_mask_empty(mask)) {
+ snd_output_puts(out, " NONE");
+ return;
+ } else if (snd_mask_full(mask)) {
+ snd_output_puts(out, " ALL");
+ return;
+ }
+ for (i = 0; i < SND_MASK_MAX; i++) {
+ const char *s;
+ if (!_snd_mask_test(mask, i))
+ continue;
+ switch (var) {
+ case SNDRV_PCM_HW_PARAM_ACCESS:
+ s = snd_pcm_access_name(i);
+ break;
+ case SNDRV_PCM_HW_PARAM_FORMAT:
+ s = snd_pcm_format_name(i);
+ break;
+ case SNDRV_PCM_HW_PARAM_SUBFORMAT:
+ s = snd_pcm_subformat_name(i);
+ break;
+ default:
+ continue;
+ }
+ snd_output_printf(out, " %s", s);
+ }
+}
+
static void snd_interval_print(const snd_interval_t *i, snd_output_t *out)
{
if (snd_interval_empty(i))
@@ -1090,43 +1121,10 @@ static void snd_interval_print(const snd_interval_t *i, snd_output_t *out)
void snd_pcm_hw_param_dump(const snd_pcm_hw_params_t *params,
int var, snd_output_t *out)
{
- if (hw_is_mask(var)) {
- const snd_mask_t *mask = hw_param_mask_c(params, var);
- if (_snd_mask_empty(mask))
- snd_output_puts(out, " NONE");
- else if (snd_mask_full(mask))
- snd_output_puts(out, " ALL");
- else {
- unsigned int k;
- for (k = 0; k <= SND_MASK_MAX; ++k) {
- if (_snd_mask_test(mask, k)) {
- const char *s;
- switch (var) {
- case SNDRV_PCM_HW_PARAM_ACCESS:
- s = snd_pcm_access_name(k);
- break;
- case SNDRV_PCM_HW_PARAM_FORMAT:
- s = snd_pcm_format_name(k);
- break;
- case SNDRV_PCM_HW_PARAM_SUBFORMAT:
- s = snd_pcm_subformat_name(k);
- break;
- default:
- s = NULL;
- }
- if (s) {
- snd_output_putc(out, ' ');
- snd_output_puts(out, s);
- }
- }
- }
- }
- return;
- }
- if (hw_is_interval(var)) {
+ if (hw_is_mask(var))
+ snd_mask_print(hw_param_mask_c(params, var), var, out);
+ else if (hw_is_interval(var))
snd_interval_print(hw_param_interval_c(params, var), out);
- return;
- }
}
#define HW_PARAM(v) [SNDRV_PCM_HW_PARAM_##v] = #v