Hi,
I am currently working with two ZED X One cameras configured in a calibrated stereo rig on an NVIDIA Jetson AGX Orin, using SDK version 5.0.0 (early access). The image streams are handled using ZED_Media_Server
, with the resolution set to 1920 x 1200 at 15 Hz.
However, after examining the recorded timestamps, I noticed that the actual streaming frequency is not constant and it fluctuates significantly. To investigate further, I wrote a minimal test to monitor the frequency without performing any time-consuming operations, as shown below:
std::vector<long long> timestamps;
while (true) {
if (zed.grab(runtime_parameters) == sl::ERROR_CODE::SUCCESS) {
auto timestamp = zed.getTimestamp(sl::TIME_REFERENCE::IMAGE).getNanoseconds();
timestamps.push_back(timestamp);
}
}
This code simply collects the image timestamps in a loop. The analysis of the time intervals between frames produced the following results:
FrameIndex,TimeDifference(ns),Instantaneous Frequency(Hz)
0,199988000,5.0003
1,133348000,7.49918
2,133341000,7.49957
3,66668000,14.9997
4,133372000,7.49783
5,133318000,7.50086
6,133366000,7.49816
7,66680000,14.997
8,133300000,7.50188
9,133354000,7.49884
10,133376000,7.4976
11,66667000,14.9999
12,133380000,7.49738
13,199991000,5.00023
14,133362000,7.49839
15,66676000,14.9979
As you can see, the instantaneous frequency alternates between approximately 5 Hz, 7.5 Hz, and 15 Hz, rather than remaining steady at the expected 15 Hz.
Could you please help me understand why this fluctuation occurs? Is this behavior expected due to buffering, synchronization mechanisms, or other factors within the ZED_Media_Server
or hardware pipeline?