]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Fixed a bug in interval printing. Added missing mmap functions. Added _try hw_params...
authorAbramo Bagnara <abramo@alsa-project.org>
Sat, 30 Dec 2000 17:20:23 +0000 (17:20 +0000)
committerAbramo Bagnara <abramo@alsa-project.org>
Sat, 30 Dec 2000 17:20:23 +0000 (17:20 +0000)
include/pcm.h
src/pcm/interval.c
src/pcm/pcm_mmap.c
src/pcm/pcm_params.c

index 42ace3a890dce3f0444f1dd6b5b41755b0fe365e..9e38827baa1ebc3fc2dc8022c775be97fd9ce94d 100644 (file)
@@ -105,6 +105,10 @@ int mask_single(const mask_t *mask);
 int snd_pcm_hw_params_any(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
 int snd_pcm_hw_param_any(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
                         unsigned int var);
+int snd_pcm_hw_param_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                           unsigned int par);
+int snd_pcm_hw_param_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                          unsigned int par);
 int snd_pcm_hw_param_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
                           unsigned int var, unsigned int val);
 int snd_pcm_hw_param_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
@@ -113,24 +117,30 @@ int snd_pcm_hw_param_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
                          unsigned int var, unsigned int val);
 int snd_pcm_hw_param_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
                             unsigned int var, unsigned int min, unsigned int max);
-int snd_pcm_hw_param_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
-                           unsigned int par);
-int snd_pcm_hw_param_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
-                          unsigned int par);
 int snd_pcm_hw_param_set(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
                          unsigned int var, unsigned int val);
 int snd_pcm_hw_param_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
                           unsigned int var, const mask_t *mask);
+int snd_pcm_hw_param_min_try(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                            unsigned int var, unsigned int val);
+int snd_pcm_hw_param_max_try(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                            unsigned int var, unsigned int val);
+int snd_pcm_hw_param_minmax_try(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                               unsigned int var, unsigned int min, unsigned int max);
+int snd_pcm_hw_param_set_try(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                            unsigned int var, unsigned int val);
+int snd_pcm_hw_param_mask_try(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                             unsigned int var, const mask_t *mask);
 int snd_pcm_hw_param_value(const snd_pcm_hw_params_t *params,
-                           unsigned int var);
+                          unsigned int var);
 const mask_t *snd_pcm_hw_param_value_mask(const snd_pcm_hw_params_t *params,
-                                          unsigned int var);
+                                         unsigned int var);
 const interval_t *snd_pcm_hw_param_value_interval(const snd_pcm_hw_params_t *params,
-                                                  unsigned int var);
+                                                 unsigned int var);
 unsigned int snd_pcm_hw_param_value_min(const snd_pcm_hw_params_t *params,
-                                        unsigned int var);
+                                       unsigned int var);
 unsigned int snd_pcm_hw_param_value_max(const snd_pcm_hw_params_t *params,
-                                        unsigned int var);
+                                       unsigned int var);
 int snd_pcm_hw_params_try_explain_failure(snd_pcm_t *pcm,
                                          snd_pcm_hw_params_t *fail,
                                          snd_pcm_hw_params_t *success,
index 081702ef62575d87b679db9fc619d3790f26e48c..2a5283d9dc1ebeca8bdcb253ec237722bfd56905 100644 (file)
@@ -308,12 +308,13 @@ int interval_mulkdiv(interval_t *a, unsigned int k,
 
 void interval_print(const interval_t *i, FILE *fp)
 {
-       if (interval_single(i)) {
+       if (interval_empty(i))
+               fprintf(fp, "NONE");
+       else if (interval_single(i))
                fprintf(fp, "%u", interval_value(i));
-       } else {
+       else
                fprintf(fp, "%c%u %u%c",
                        i->openmin ? '(' : '[',
                        i->min, i->max,
                        i->openmax ? ')' : ']');
-       }
 }
index 5c11ce4b9a8a207c68f688df797d7f3e6b52c442..0ade84abcea5cee2d9867c0896a92b49fe2ceb22 100644 (file)
 #endif
 
 
+const snd_pcm_channel_area_t *snd_pcm_mmap_running_areas(snd_pcm_t *pcm)
+{
+       return pcm->running_areas;
+}
+
+const snd_pcm_channel_area_t *snd_pcm_mmap_stopped_areas(snd_pcm_t *pcm)
+{
+       return pcm->stopped_areas;
+}
+
 const snd_pcm_channel_area_t *snd_pcm_mmap_areas(snd_pcm_t *pcm)
 {
        if (pcm->stopped_areas &&
index 879a4968480eb1c7398b01b8b45b2673aecf3539..ba58a67797459e6bd5a529d914760ba110bd5704 100644 (file)
@@ -308,6 +308,18 @@ int snd_pcm_hw_param_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
        return snd_pcm_hw_param_value_min(params, var);
 }
 
+int snd_pcm_hw_param_min_try(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                            unsigned int var, unsigned int val)
+{
+       snd_pcm_hw_params_t save;
+       int err;
+       save = *params;
+       err = snd_pcm_hw_param_min(pcm, params, var, val);
+       if (err < 0)
+               *params = save;
+       return err;
+}
+
 int _snd_pcm_hw_param_max(snd_pcm_hw_params_t *params, int hw,
                           unsigned int var, unsigned int val)
 {
@@ -347,6 +359,18 @@ int snd_pcm_hw_param_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
        return snd_pcm_hw_param_value_max(params, var);
 }
 
+int snd_pcm_hw_param_max_try(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                            unsigned int var, unsigned int val)
+{
+       snd_pcm_hw_params_t save;
+       int err;
+       save = *params;
+       err = snd_pcm_hw_param_max(pcm, params, var, val);
+       if (err < 0)
+               *params = save;
+       return err;
+}
+
 int _snd_pcm_hw_param_minmax(snd_pcm_hw_params_t *params, int hw,
                              unsigned int var,
                              unsigned int min, unsigned int max)
@@ -409,6 +433,19 @@ int snd_pcm_hw_param_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
        return 0;
 }
 
+int snd_pcm_hw_param_minmax_try(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                               unsigned int var,
+                               unsigned int min, unsigned int max)
+{
+       snd_pcm_hw_params_t save;
+       int err;
+       save = *params;
+       err = snd_pcm_hw_param_minmax(pcm, params, var, min, max);
+       if (err < 0)
+               *params = save;
+       return err;
+}
+
 int _snd_pcm_hw_param_set(snd_pcm_hw_params_t *params, int hw,
                           unsigned int var, unsigned int val)
 {
@@ -448,6 +485,18 @@ int snd_pcm_hw_param_set(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
        return snd_pcm_hw_param_value(params, var);
 }
 
+int snd_pcm_hw_param_set_try(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                            unsigned int var, unsigned int val)
+{
+       snd_pcm_hw_params_t save;
+       int err;
+       save = *params;
+       err = snd_pcm_hw_param_set(pcm, params, var, val);
+       if (err < 0)
+               *params = save;
+       return err;
+}
+
 int _snd_pcm_hw_param_mask(snd_pcm_hw_params_t *params, int hw,
                            unsigned int var, const mask_t *val)
 {
@@ -484,6 +533,18 @@ int snd_pcm_hw_param_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
        return 0;
 }
 
+int snd_pcm_hw_param_mask_try(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
+                             unsigned int var, const mask_t *val)
+{
+       snd_pcm_hw_params_t save;
+       int err;
+       save = *params;
+       err = snd_pcm_hw_param_mask(pcm, params, var, val);
+       if (err < 0)
+               *params = save;
+       return err;
+}
+
 /* Inside configuration space defined by PARAMS set PAR to the available value
    nearest to VAL. Reduce configuration space accordingly.
    This function cannot be called for SND_PCM_HW_PARAM_ACCESS,