Lost frames with FLIR usb3.0 camera


The usb3.0 bandwidth is almost 350MB/s, but I use aravis to capture the usb stream, I found the max bandwidth is only almost 140MB/s, when the speed of real streamis more than 140MB/s, it lost the frames.

When I turn on the chunkdata and then capture the FLIR BFS usb3.0 camera stream.
For example, set the region pixel is 2448*2048, the format is bayer rggb, if fps is less than 30fps, it works well.
But if the fps is more than 35fps, such as 40fps, than I found the frames always lost by check the ChunkFrameID.

In the new-buffer callback method, I can check the newest ChunkFrameID and ChunkTimestamp, when the ChunkFrameID is not continuous, I can think the frame is lost. But at the sametime, I cannot got the control-lost signal and call the arv_stream_get_statistics(), both the n_failures and n_underruns are zero.

So it seems that when the frame lost , the aravis still think it works well.

Please help me to fix the issue, thks.

PS: I used arv_camera_set_chunks to turn on the chunkdata as below:
arv_camera_set_chunks (m_pArvImpl->m_Camera, “FrameID,Timestamp”, NULL);


Please open an issue on github.

USB3 performance is not optimal yet, there is an ongoing work to use libusb asynchronous API that is know to work way better at least on underpowered platform like Nvidia Jetson. I don’t have time to work on it myself, so any help is appreciated.

An alternative/complimentary approach would be to try to use the National Instruments kernel modules. Any help welcome here as well.

In your report, please give informations about the platform you are using.


1 Like