From: Abramo Bagnara Date: Fri, 19 Jan 2001 09:48:33 +0000 (+0000) Subject: pcm_rate fix X-Git-Tag: v1.0.3~1016 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=87f9071c08df067cfcee70094ad08870ec3af0a9;p=alsa-lib.git pcm_rate fix --- diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h index 3a5dfe40..36badaa5 100644 --- a/src/pcm/pcm_local.h +++ b/src/pcm/pcm_local.h @@ -342,6 +342,10 @@ int _snd_pcm_hw_param_min(snd_pcm_hw_params_t *params, unsigned int var, unsigned int val, int dir); int _snd_pcm_hw_param_max(snd_pcm_hw_params_t *params, unsigned int var, unsigned int val, int dir); +int _snd_pcm_hw_param_minmax(snd_pcm_hw_params_t *params, + snd_pcm_hw_param_t var, + unsigned int min, int mindir, + unsigned int max, int maxdir); int _snd_pcm_hw_param_refine(snd_pcm_hw_params_t *params, snd_pcm_hw_param_t var, const snd_pcm_hw_params_t *src); diff --git a/src/pcm/pcm_plug.c b/src/pcm/pcm_plug.c index 6ee96445..acd1f76e 100644 --- a/src/pcm/pcm_plug.c +++ b/src/pcm/pcm_plug.c @@ -430,9 +430,6 @@ static int snd_pcm_plug_hw_refine_schange(snd_pcm_t *pcm, snd_pcm_hw_params_t *p interval_t t; const interval_t *buffer_size; const interval_t *srate, *crate; - err = _snd_pcm_hw_params_refine(sparams, links, params); - if (err < 0) - return err; snd_pcm_hw_param_refine_near(slave, sparams, SND_PCM_HW_PARAM_RATE, params); snd_pcm_hw_param_refine_near(slave, sparams, SND_PCM_HW_PARAM_CHANNELS, @@ -475,6 +472,9 @@ static int snd_pcm_plug_hw_refine_schange(snd_pcm_t *pcm, snd_pcm_hw_params_t *p interval_muldiv(buffer_size, srate, crate, &t); interval_round(&t); err = _snd_pcm_hw_param_refine_interval(sparams, SND_PCM_HW_PARAM_BUFFER_SIZE, &t); + if (err < 0) + return err; + err = _snd_pcm_hw_params_refine(sparams, links, params); if (err < 0) return err; return 0; diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c index d793be91..780f2b4b 100644 --- a/src/pcm/pcm_rate.c +++ b/src/pcm/pcm_rate.c @@ -279,8 +279,8 @@ static int snd_pcm_rate_hw_refine_sprepare(snd_pcm_t *pcm, snd_pcm_hw_params_t * _snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_SUBFORMAT, SND_PCM_SUBFORMAT_STD, 0); } - _snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_RATE, - rate->srate, 0); + _snd_pcm_hw_param_minmax(sparams, SND_PCM_HW_PARAM_RATE, + rate->srate, 0, rate->srate + 1, -1); return 0; }