Astra Pro: FPS is lower than 30 when using MultiFrameListener with multiple Streams


I have created a C++ application using the Astra SDK that reads in color, depth and body frames. I am using an Astra Pro camera, and reading in 640480 depth frames and 1280720 color frames, both streams configured to 30 fps. I am working on Ubuntu 16.04 and have tried plugging in the camera in a USB 2.0 and 3.0 port.

However, I am only able to capture on average ~29 fps, i.e. some frames are lost (seen by gaps in the returned frame indices, from the frame_index() function). I am using a MultiFrameListener, as implemented in the SimpleStreamViewer-SFML sample. These missing frames occur even when I am not doing any computation on the received frames in the on_frame_ready(…) function (i.e. the function returns straight away). It seems that the listener is not being called for some frames. This problem disappears when I only link a ColorStream to the StreamReader, but when I then add a DepthStream to the StreamReader, this problem appears.

Is this a limitation of the camera, and the rate at which frames are transferred, or is this something that I can solve on my side?