Chris E
2017-06-19 09:16:16 UTC
Hi everyone.
I have an application where I need to sample multiple isochronous endpoints
at the same time.
However, I'm running into a problem. On slow machines (mainly Android
phones), it takes more than 1ms to submit all of the transfers.
This leads to a situation where the different endpoints are out of sync.
This means that, for example, while the application may be reading frames
100-200 on Endpoint 0, I'll be reading frames 101-201 on endpoint 6! This
obviously causes errors with the packet ordering that leads to all kinds of
chaos further up the chain.
On Windows (using LibusbK), this is simple to work around since you can
submit delayed transfers and are provided with frame numbers when the
transfer completes.
However, I could not see a simple way to synchronise my endpoints with
plain ol' Libusb-1.0.
Does anyone have any ideas?
I have an application where I need to sample multiple isochronous endpoints
at the same time.
However, I'm running into a problem. On slow machines (mainly Android
phones), it takes more than 1ms to submit all of the transfers.
This leads to a situation where the different endpoints are out of sync.
This means that, for example, while the application may be reading frames
100-200 on Endpoint 0, I'll be reading frames 101-201 on endpoint 6! This
obviously causes errors with the packet ordering that leads to all kinds of
chaos further up the chain.
On Windows (using LibusbK), this is simple to work around since you can
submit delayed transfers and are provided with frame numbers when the
transfer completes.
However, I could not see a simple way to synchronise my endpoints with
plain ol' Libusb-1.0.
Does anyone have any ideas?