Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 07 Sep 2006 15:34:08 +0200
From:      Gary Jennejohn <garyj@jennejohn.org>
To:        FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Re: Oddity in snd_uaudio(4) driver? 
Message-ID:  <200609071334.k87DY8x2004383@peedub.jennejohn.org>
In-Reply-To: Message from Ed Schouten <ed@fxq.nl>  of "Thu, 07 Sep 2006 13:38:20 %2B0200." <20060907113820.GO22564@hoeg.nl> 

next in thread | previous in thread | raw e-mail | index | archive | help

Ed Schouten writes:
> 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:
> 
> | 	if (speed >= UA_SAMP_LO(asf1d) && speed <= UA_SAMP_HI(asf1d)) {
> | 		ch->sample_rate = speed;
> | 		return speed;
> | 	} else if (speed < UA_SAMP_LO(asf1d)) {
> | 		score = 0xfff * speed / UA_SAMP_LO(asf1d);
> | 		if (score > hiscore) {
> | 			bestspeed = UA_SAMP_LO(asf1d);
> | 			hiscore = score;
> | 		}
> | 	} else if (speed < UA_SAMP_HI(asf1d)) {
> | 		score = 0xfff * UA_SAMP_HI(asf1d) / speed;
> | 		if (score > hiscore) {
> | 			bestspeed = UA_SAMP_HI(asf1d);
> | 			hiscore = score;
> | 		}
> | 	}
> 
> 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:
> 
> | 	if (x >= 10 && x <= 20) {
> | 		...
> | 	} else if (x < 10) {
> | 		...
> | 	} else if (x < 20) {
> | 		...
> | 	}
> 
> 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 {'?
> 

Yeah, it seems like the last if clause should read
	} else if (speed > UA_SAMP_HI(asf1d)) {

---
Gary Jennejohn / garyjATjennejohnDOTorg gjATfreebsdDOTorg garyjATdenxDOTde




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