What is this USB frame counter and what would to enable its use, at least for playback where there is scope for lots of power optimizations.
USB timing is defined by frames, of which there are about 1000 per second. The audio driver schedules one packet to be sent/received for each frame. Multiple packets are grouped in a URB (USB request buffer); the controller raises an interrupt when the last packet of the URB has been completed.
By reading the current frame number, the driver could deduce how many packets (and therefore, how many samples) have been processed by the controller.
Thanks Clemens, this is valuable information. If this frame number was used to update the delay field with more accuracy, I'd be able to use a larger number of packets while allowing for precise a/v sync. Removing the memcpys, etc, are probably a second-degree optimization. I agree it'd make the code more complex. Any idea on how this frame number can be read, I can try to prototype this if this is supported by the USB core? -Pierre