[alsa-devel] [PATCH] fix incorrect rounding direction in snd_interval_ratnum()

Takashi Iwai tiwai at suse.de
Mon Dec 21 12:23:02 CET 2009


At Sat, 19 Dec 2009 18:31:04 +0100,
Krzysztof Helt wrote:
> 
> From: Krzysztof Helt <krzysztof.h1 at wp.pl>
> 
> The direction of rounding is incorrect in the snd_interval_ratnum()
> It was detected with following parameters (sb8 driver playing
> 8kHz stereo file):
>  - num is always 1000000
>  - requested frequency rate is from 7999 to 7999 (single frequency)
> 
> The first loop calculates div_down(num, freq->min) which is 125.
> Thus, a frequency range's minimum value is 1000000 / 125 = 8000 Hz.
> The second loop calculates div_up(num, freq->max) which is 126
> The frequency range's maximum value is 1000000 / 126 = 7936 Hz.
> The range maximum is lower than the range minimum so the function
> fails due to empty result range.
> 
> Signed-off-by: Krzysztof Helt <krzysztof.h1 at wp.pl>

Applied now.  Thanks.


Takashi

> ---
>  sound/core/pcm_lib.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
> index 30f4108..a27545b 100644
> --- a/sound/core/pcm_lib.c
> +++ b/sound/core/pcm_lib.c
> @@ -758,7 +758,7 @@ int snd_interval_ratnum(struct snd_interval *i,
>  		int diff;
>  		if (q == 0)
>  			q = 1;
> -		den = div_down(num, q);
> +		den = div_up(num, q);
>  		if (den < rats[k].den_min)
>  			continue;
>  		if (den > rats[k].den_max)
> @@ -794,7 +794,7 @@ int snd_interval_ratnum(struct snd_interval *i,
>  			i->empty = 1;
>  			return -EINVAL;
>  		}
> -		den = div_up(num, q);
> +		den = div_down(num, q);
>  		if (den > rats[k].den_max)
>  			continue;
>  		if (den < rats[k].den_min)
> -- 
> 1.6.4
> 
> 
> ----------------------------------------------------------------------
> Co Ci sie dzisiaj snilo? Czy wiesz, co oznacza Twoj sen?
> Sprawdz w senniku >> http://link.interia.pl/f2532
> 
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 


More information about the Alsa-devel mailing list