At Sat, 19 Dec 2009 18:31:04 +0100, Krzysztof Helt wrote: > > From: Krzysztof Helt <krzysztof.h1@xxxxx> > > 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@xxxxx> 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@xxxxxxxxxxxxxxxx > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel