The problem is that we can achieve 27 MB/s speed with Win Xp and only 9 MB/s on Win 7 with the same code running on the device and on the host. We want to send 768x576 images with pixel depth of 16 bits at 30 FPS which works great on Win Xp and the limit is at only 10 FPS with Win 7 which is very annoying.

The variable XferSize determines the size of buffer allocated on the host controller driver. By default it is set to 8*endpoint size. You might want to set it to 64k and see how the performance varies.

It doesn't change anything, the buffer already has been set to the size of a image.

After further analysis, the problem seems to be related to the USB bandwith management with windows Vista/7.

When we are using Win Vusta/7, the latency is higher than with Win XP during packet transfert and at some point, the transfert is not fast enough and we have a buffer overload on the FIFO side on the device which is already a Quad buffer. Any ideas why the bandwith seems to be reduced with Vista/7.

After another test, we have found that when the FIFO is set to Byte length without modifying anything else, we are able to go up to 45 FPS with win Vista/7 with now 768x576 image with pixel depth of 8 bits. Ideas ?

There is no general speed limit in Windows Vista or 7 with the FX2. We can read with up to 40.5 MByte/s under Windows 7 using slave fifo interface, 16 bit wide with 40 MHz external IFCLK. This is even a little faster then under XP with the same software. Furthermore the WinUSB driver is also a little faster then CyUSB driver. To reach such transfer rates you have to transfer large blocks for filling up the microframes and use BULK transfer with large hardware buffers.

Yes, the only thing that seems to have an effect on mean number of transfered bytes is the Packet. But even with a Endpoint with a size of 1024 Bytes and PacketSize of 1024 Bytes I can't get a stable video stream higher than 12 or 13 FPS after that, images that are requested can't seem to be transfered entirely.