From: Tim R. <ti...@pr...> - 2016-02-12 18:46:00
|
Matthew Giassa wrote: > The reason I ask is because I am working with a set of four high-end > USB3 cameras, each of which puts out a 20 megapixel image at 24bits per > pixel (ie: 60MB per image, and each camera has to queue up at least 10 > buffers in the driver to ensure constant performance). No, it doesn't. 600MB is 2 full seconds worth of traffic. That's just silly. Microsoft's usbvideo.sys, for example, circulates exactly 2 requests. If you can't get one request turned around and resubmitted by the time the second completes, then it really doesn't matter how many you have. Sooner or later you'll run dry. > Interestingly enough, even when I set the USBFS_MEMORY_MB parameter to > 2000, I can only use two of these cameras at once before getting a > LIBUSB_ERROR_IO error when I try to start queuing up buffers with the > third camera. Are you spreading these over several host controllers? Are you using an isochronous pipe? Remember that you can only reserve 90% of the bandwidth for isochronous and interrupt endpoints. That means you can only fit one maximum-bandwidth isochronous device (384MB/s) on a single host controller. -- Tim Roberts, ti...@pr... Providenza & Boekelheide, Inc. |