Timing jitter using camera through libargus

I’m using the IMX477 to capture video at 30 Hz in a gstreamer pipeline with the nvarguscamerasrc plugin. The time stamps on the video frames show quite a lot of jitter - the average length is 33 ms as expected, but there’s a wide distribution - some timestamps are off by more than a half-frame:

001% 15.3 ms
010% 20.2 ms
050% 34.9 ms
090% 42.4 ms
099% 46.2 ms

I assume the camera is actually acquiring frames at a steady 33.3 ms/frame, and the jitter is in the time stamping. From the L4T sources, it looks like the gstreamer plugin uses libargus to generate the timestamps, and the libargus source seems to be closed so I can follow it no further.

Is this the expected behavior? Is there anything to be done to improve this lack of accuracy?

How do you check it.

Please see attached program.

jitter.c (1.1 KB)

Could you check with this command to check the fps.

gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM),width=4032,height=3040,framerate=(fraction)30/1, format=NV12' ! nvvidconv ! fpsdisplaysink video-sink=fakesink --verbose

The average framerate is 30 Hz, matching the data in the first post.

...
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay: text = rendered: 111, dropped: 0, current: 29.70, average: 30.30
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 111, dropped: 0, current: 29.70, average: 30.30

Hi Shane, were you able to use my program above to reproduce jitter in the timestamps?

Sorry, I didn’t try it.

Could you please run the code above to confirm or disconfirm that the timing jitter is a bug affecting all users? A half-frame of timing error is unfavorable for applications requiring synchronization of two video streams, it would be nice to get this bug fixed in a future release (if it is in fact a bug).

For the sync frame suggest get the timestamp from the MMAPI like below topic.