Allow higher sample rates to have more jitter than lower ones.

PR:		208791
MFC after:	3 days
This commit is contained in:
Hans Petter Selasky 2016-11-09 07:09:27 +00:00
parent a28ed036b6
commit 82364f24b5
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=308461

View File

@ -2079,6 +2079,8 @@ uaudio_chan_play_sync_callback(struct usb_xfer *xfer, usb_error_t error)
* recording channel:
*/
if (ch->priv_sc->sc_rec_chan.num_alt == 0) {
int32_t jitter_max = howmany(sample_rate, 16000);
/*
* Range check the jitter values to avoid
* bogus sample rate adjustments. The expected
@ -2087,12 +2089,11 @@ uaudio_chan_play_sync_callback(struct usb_xfer *xfer, usb_error_t error)
* mandates this requirement. Refer to chapter
* 5.12.4.2 about feedback.
*/
if (temp > sample_rate)
ch->jitter_curr = 1;
else if (temp < sample_rate)
ch->jitter_curr = -1;
else
ch->jitter_curr = 0;
ch->jitter_curr = temp - sample_rate;
if (ch->jitter_curr > jitter_max)
ch->jitter_curr = jitter_max;
else if (ch->jitter_curr < -jitter_max)
ch->jitter_curr = -jitter_max;
}
ch->feedback_rate = temp;
break;