Dynamic buffer sizes for isochronous transfers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Is there a function in the Linux USB API that converts a given number of 
milliseconds into a given number of isochronous frames?

I see many Linux drivers, like the USB video class one, that could need to 
dynamically adjust the number of buffered isochronous frames depending on the 
device speed and endpoint descriptor. For example:

FULL speed USB uses 1000 FPS

SUPER + HIGH speed USB uses 1000 - 8000 FPS, in power of 2 steps typically.

uvcvideo.h

...

#define UVC_URBS               5
#define UVC_MAX_PACKETS                32

The problem is that all Linux USB drivers using isochronous transfers use a 
fixed amount of buffering which gives a variable amount of buffering time, 
because the frames per second is a variable.

For the uvc driver my point is that at HIGH speed the buffering is 5 * 4ms. At 
FULL speed it is 5 * 32ms. At HIGH speed I would like to increase the 
buffering a little bit to avoid high IRQ rates and at FULL speed I would like 
to reduce the buffering a bit.

--HPS
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux