I am using a image-collecting system based on the Cypress 68013. But I am not the hardware person, this is my partner's work. I just need to do the PC application.
Now when I only receive data and not do other things in my app, I can receive stable data rates up to 22Mbytes/s.
However if I do some data processing in another thread, the data rates will be not stable that in fact the data sometimes can't be received completely(the waitForDataXfer is timeout). I use your "streamer" application as an example to design my app. My experimental desk computer is not a new one with winxp system and old i3 cpu. In other hand, my app can work stably on my PC with i5 cpu and win8.1 system.
The last, I want to say the imaging-collecting system I used doesn't have a ram buffer to store one frame from the cmos imaging sensor. It will transmit a frame to the PC if it gets PC's request code for a simple agreement. That is to say sometimes I can't receive a frame in time and completely with the asynchronous method （BeginDataXfer/WaitForXfer/FinishDataXfer）that Cypress offered. My image frame is 1280 * 720.
Thank you for help.
The C++ Streamer has a feature of displaying the data while simultaneously grabbing the data. You can refer how this feature is implemented in the Streamer and may adopt the same in your application. (i.e doing some other task while transferring data)