Bulk transfer issues with CyAPI in a QT application

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
dradomski
Level 1
Level 1
First question asked Welcome!

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 🙂

0 Likes
1 Reply
Biren_R
Moderator
Moderator
Moderator
First question asked First like given 250 sign-ins

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

0 Likes