support for playback sync endpoints
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?