Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 07 Sep 2006 14:27:44 +0200
From:      Alexander Leidinger <Alexander@Leidinger.net>
To:        FreeBSD Hackers <freebsd-hackers@FreeBSD.org>, Ed Schouten <ed@fxq.nl>
Cc:        multimedia@FreeBSD.org
Subject:   Re: Oddity in snd_uaudio(4) driver?
Message-ID:  <20060907142744.aazrsemxkwcok40w@webmail.leidinger.net>
In-Reply-To: <20060907113820.GO22564@hoeg.nl>
References:  <20060907113820.GO22564@hoeg.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
Quoting Ed Schouten <ed@fxq.nl> (from Thu, 7 Sep 2006 13:38:20 +0200):

CCing multimedia@, where all "the cool sound guys hang out"...

> Hello,
>
> I was just looking through FreeBSD's snd_uaudio(4) driver, because I'm
> thinking of patching it to support Xbox 360 headsets as well. I was
> looking at the code to set the sample rate in
> /sys/dev/sound/usb/uaudio.c. In that file there is the following code
> near line 4100:
>
> | =09if (speed >=3D UA_SAMP_LO(asf1d) && speed <=3D UA_SAMP_HI(asf1d)) {
> | =09=09ch->sample_rate =3D speed;
> | =09=09return speed;
> | =09} else if (speed < UA_SAMP_LO(asf1d)) {
> | =09=09score =3D 0xfff * speed / UA_SAMP_LO(asf1d);
> | =09=09if (score > hiscore) {
> | =09=09=09bestspeed =3D UA_SAMP_LO(asf1d);
> | =09=09=09hiscore =3D score;
> | =09=09}
> | =09} else if (speed < UA_SAMP_HI(asf1d)) {
> | =09=09score =3D 0xfff * UA_SAMP_HI(asf1d) / speed;
> | =09=09if (score > hiscore) {
> | =09=09=09bestspeed =3D UA_SAMP_HI(asf1d);
> | =09=09=09hiscore =3D score;
> | =09=09}
> | =09}
>
> If we would rewrite this code to something more basic, let's say we
> rename 'speed' to 'x' and the UA_SAMP_ macros to some predefined
> variables:
>
> | =09if (x >=3D 10 && x <=3D 20) {
> | =09=09...
> | =09} else if (x < 10) {
> | =09=09...
> | =09} else if (x < 20) {
> | =09=09...
> | =09}
>
> Wouldn't that mean that the last portion of the code is never reached?
> Looking at the code, it looks like some range check, making sure the
> sample rate remains inside a certain range. Wouldn't it be enough to
> remove the entire third if-statement, using a normal '} else {'?

Just by looking at the code you pasted, I assume the last part is a =20
typo in the uaudio code and should be a '>' instead of a '<': "if it =20
is outside the range, use the end of the range as a good candidate."

Bye,
Alexander.

--=20
The most delightful day after the one on which you buy a cottage in
the country is the one on which you resell it.
=09=09-- J. Brecheux

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID =3D B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID =3D 72077137




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060907142744.aazrsemxkwcok40w>