Y
Y
Yaroslav Korchevsky2020-12-20 13:32:29
USB
Yaroslav Korchevsky, 2020-12-20 13:32:29

How to increase USB video bandwidth?

I am programming a device - a custom USB 2.0 video camera.
Stream - uncompressed
resolution 1280*480
color space YUYV (16 bits per pixel)
Wrote a test that works with the maximum frequency
responding to each isochronous marker

. The maximum frame rate is 6.5 frames per
second
. bandwidth 8 megabytes per second (64 megabits).
At the same time, the USB HS bandwidth is 480 megabits per second.
There is stock.

The video is transmitted using an isochronous protocol.
Clocking one packet every 125 microseconds
results in 8,000 kilobyte packets per second, which is consistent with measurements

However. I found in the documentation that there is a field in the descriptor
that tells the host to send additional isochronous tokens.

wMaxPacketSize bits 11..12

That is, up to 3 isochronous packets can be transferred in one frame of the USB protocol
The flag is set.
lsusb -v shows a frame size of 3x 1024

And actually the baud rate hasn't changed.
Who has experienced this effect?
Maybe there are some other bits that I do not take into account?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
O
Oleg, 2020-12-20
@402d

https://github.com/libusb/libusb/search?q=Isochronous
see what the computer expects to receive from your device
https://github.com/libusb/libusb/blob/9d23ed25b44a...
here is the reading
as I understand you just need to do the same three times - send the packet

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question