- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I am developing a Windows x64 application in QT (5.15) which streams video from a CX3-connected camera (OmniVision OCHSA10 and soon to be abandoned OV9724).
- I have a separate communication thread running with TimeCriticalPriority. For testing purposes I am even not using the data I'm getting from endpoint - I am just receiving it and releasing momentarily.
- BTW (not an issue for me) only asynchronous transfer (BeginDataXfer-FinishDataXfer) works for me at all for receiving larger bulk data, like RAW frames ~1.2MB. Synchronous transfer (XferData) works only for small data, like commands.
- For each RAW frame - packets size are 36816 and 2428 for the last packet. Whenever I don't get proper readLength from FinishDataXfer I know my packet is incomplete = corrupt.
- I am testing my application on very good desktop PCs with very good motherboards as well as Dell Precision laptops (so USB hosts should be as good as it gets...) with Windows 10 x64 Pro
Now, the problem is, when I run my application on a CPU slower than top-i7 or i9, I get many incomplete packets. Typically ~20% of my frames are corrupt, so ~1% of asynchronous transfers end up in receiving incomplete packets.
The most crazy part is (I noticed it by accident): whenever I have Visual Studio running in background only 1 in about 40.000 packets is incomplete. I can't make any sense out of it (VS debugger running???) but it is 100% reproducible and as soon as I close Visual Studio ~1% of transfers is incomplete again.
I tested this both with MSVC2019 (with supplied CyAPI) and with MinGW8.1 (with CyAPI I built myself from Cypress source code) with the same result.
Please assist 🙂
- Labels:
-
USB Superspeed Peripherals
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
1. Can we benchmark this with VLC or some other UVC application and your custom app send us results?
2. Can you send Wireshark a trace of this?
3. Why you are using CyAPI based application and not a normal UVC application.
Best Regards,
Biren