Fixed a bug in interval printing. Added missing mmap functions. Added _try hw_params variant.

This commit is contained in:
Abramo Bagnara 2000-12-30 17:20:23 +00:00
parent 6171d0fc20
commit e618ef6f00
4 changed files with 94 additions and 12 deletions

View 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,

View 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 ? ')' : ']');
}
}

View file

@ -34,6 +34,16 @@
#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 &&

View 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,