Le vendredi 08 janvier 2021 à 13:53 +0100, Philippe De Muyter a écrit : > Hello, > > I need to have the v4l2 buffers of my camera sensor timestamped with a > precise (1ms) UTC timestamp, in order to be able to match images from cameras > from several computers (that are of course synchronised with NTP, GPS or PTP). > > While I had that some years ago and still have in computers running > freescale's 4.1.15 port for imx6q, I have now discovered that 8 years ago > a decision has been taken by the v4l2 maintainers to switch the timestamp > of the v4l2 buffers to CLOCK_MONOTONIC, which is useless when one needs > to synchronise timestamps of images taken by cameras on different computers, > which of course were not booted at the same time. > > At that time a new flag "V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC" was introduced > to tell new users that the timestamp was no more the old and not standardized > behaviour for timestamp, but the new CLOCK_MONOTONIC-based timestamp, but > no other flag for UTC or way to choose which kind of timestamp one wants. > > Are there since then new standardized or work-in-progess flag to tell users > that the timestamp is UTC, and way to ask the camera-acquisistion driver to > give that UTC timestamp instead of the CLOCK_MONOTONIC one ? Considering the CLOCK_MONOTONIC and CLOCK_REALTIME have the same slope (respond to adjtime), you can probably just sample both clock in your application in order to maintain a delta between both clocks. The more often your sample it, the more precise you can derive. Don't forget to read REALTIME/MONOTONIC and MONOTONIC/REALTIME orders, so you can averate to the real value. (GStreamer needs to be improved in this regard). > > Best regards. > > Philippe >