Work on asynchronous USB calls has been started by a contributor, but is not completed yet. I don't know when I will be able to work on it. Any help would be appreciated.
As usual, if someone is willing to work on this part of aravis (USB3Vision related code), he should not use the AIA specification documents. They would be mostly useless anyway, as it is more a work on the way aravis is using libUSB than a work on the standard implementation.
Le lun. 26 févr. 2018 à 10:24, Arkadiusz Raj <arek.raj@xxxxxxxxx> a écrit :
I have struggling for some time using SBC and high resolution USB camera. I had big problems with reception of the images using Odroid XU4 or Rock64 SBCs.
In this case it was TIS DMK33UX178 camera that I had used.
I spent some time with TIS troubleshooters, and results of discussion is as follow:
> From specification, maximum is 3,072×2,048 (6.3 MP) Y800 @ 60 fps or 3,072×2,048 (6.3 MP) Y16 @30 fps
> How to achieve that?
Two things needed:
- Use a computer that can handle that amount of data, and at the same time keep servicing USB
- Use a driver that is optimized for exactly that
From what I see in the aravis source code, it uses synchronous bulk transfers. That means it will
not achieve as much USB bandwidth as it could using asynchronous I/O.
When trying the same camera as a UVC device using guvcview, I get complete images at 3072x2048
(8-bits) on the odroid XU4. Since what the camera does is very similar in UVC and U3V modes, UVC
working better suggests that the UVC driver avoids downtimes in USB utilization, which is what
async I/O would achieve.
(Using UVC mode, I found that incomplete image transfers start happening at around 32fps at full
resolution. For reference, I got 4 fps with aravis.)
I know that changing aravis to use async I/O is a non-trivial change, but I think it is required
for using low-end computers with fast cameras.
I would love to see your comments on that.