Get very precise timestamp of camera frame time

We need to get the exact time stamp when the camera image was taken.

What we tried:

  • use gstreamer stream timestamp
  • map stream timestamp back to system time
  • verify delay using a clock in front of camera (monitor + showing current time)
  • the timestamp of gstreamer pipeline lags about 150 to 200ms behind real time.

What is the best way to get an exact frame time stamp?

  • is there a better way to get the timestamp?
  • is libargus timestamp better?
  • is there a hardware trigger signal, e.g. for camera modules like IMX185?
  • can a flash signal be used?

You may want to contact Leopard Imaging for their 6 camera TX1/TX2 carrier card (LI-TX1-CB-6CAM).
That card has an FPGA for time tagging.
IMX185 has Vsync which can be connected to FPGA for accurate timestamp.
Video For Linux (V4L) also has timestamp with less precision than FPGA. Unfortunately V4L timestamp is broken for L4T 28.1.

Thank you for the helpful reference to leopard!

Maybe a small follow up question: Could you explain what is broken in v4l and if libargus could solve this? E. G. Use Argus as an appsrc element for a gstreamer pipeline? What are your thoughts on this?

V4L timestamp for L4T28.1 was discussed here
https://devtalk.nvidia.com/default/topic/1020202/jetson-tx1/v4l2-time-stamp-does-not-work-for-l4t-28-1-jetpack-3-1-/
We are using FPGA for time tagging and have not pursued kernel time stamp issue.
We have not used libargus or gstreamer for video acquisition.