bring back changes in uaudio.c r1.83, this time remembering to commit
authorjakemsr <jakemsr@openbsd.org>
Fri, 23 Jul 2010 19:59:09 +0000 (19:59 +0000)
committerjakemsr <jakemsr@openbsd.org>
Fri, 23 Jul 2010 19:59:09 +0000 (19:59 +0000)
commit36597e6b70037004bf5be77358b928fb5bae69bf
treeaa3d6a1e0062c2f0737386787806f7e4d273706f
parentb5fcabd99ebd97dd01d476c8b0c413fc89e787cd
bring back changes in uaudio.c r1.83, this time remembering to commit
uaudioreg.h.  sorry about that.

sync endpoints allow for the sample clock on USB audio devices to not
be synchronized to the USB clock.  the sync endpoint gives information
on how much data to send to the data endpoint.  although devices that
require sync endpoints will "work" when the sync endpoint inormation
is ignored, there is a possibility of static, echoing, or any other
type of clock desync error.

requires some small changes to existing code:
* tighten up checks for whether a setting needs/supplies a sync
endpoint.  ignore settings that need a sync endpoint but don't
supply one.  previously all settings that require a sync endpoint
were ignored.
* if a sync endpoint is being used, use the same denominator for
fractional samples as the sync endpoint uses (2**16).

this only implements playback sync endpoints.  recording sync
endpoints are an odd concept: the driver would control the clock
rate of the device.  there may be such devices, but I can't even
imagine how that could be reliably implemented.  I guess you would
sync to the USB clock or the system clock ... but then, what's the
point?
sys/dev/usb/uaudio.c
sys/dev/usb/uaudioreg.h