Range check the jitter values to avoid bogus sample rate adjustments.
The expected deviation should not be more than 1Hz per second. The USB v2.0 specification also mandates this requirement. Refer to chapter 5.12.4.2 about feedback. PR: 208791 MFC after: 3 days
This commit is contained in:
parent
cbd6713146
commit
dd3dde9828
@ -2078,9 +2078,22 @@ uaudio_chan_play_sync_callback(struct usb_xfer *xfer, usb_error_t error)
|
||||
* Use feedback value as fallback when there is no
|
||||
* recording channel:
|
||||
*/
|
||||
if (ch->priv_sc->sc_rec_chan.num_alt == 0)
|
||||
ch->jitter_curr = temp - sample_rate;
|
||||
|
||||
if (ch->priv_sc->sc_rec_chan.num_alt == 0) {
|
||||
/*
|
||||
* Range check the jitter values to avoid
|
||||
* bogus sample rate adjustments. The expected
|
||||
* deviation should not be more than 1Hz per
|
||||
* second. The USB v2.0 specification also
|
||||
* 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->feedback_rate = temp;
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user