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>