iVEX brand, which uses Indusvision module MB-H308.
I just print time in milliseconds (as in chronometer) on screen with my own Qt application, and take screenshot of screen where both chronometer and GSTreamer output of the camera is visible at the same time, and then calculate difference. You can use shell script or web app to launch chronometer with millisecond resolution.
Now about latency - it was strange issue with particular Indusvision module that produce “garbage” timing information.
Actually our parent company paid to Centricular (these are GStreamer Gods!) to fix two bugs - one with rtspsrc playback, and other with forwarding via rtsp-server.
You can see these fixes in latest 1.26 release:
https://gstreamer.freedesktop.org/releases/1.26/
rtpbin: Add new “never” and “ntp” RTCP sync modes
- Never is useful for some RTSP servers that report plain garbage both via RTCP SR and RTP-Info, for example.
And retimestamping feature for dealing with rtsp-server issue:
rtppassthroughpay gained the ability to regenerate RTP timestamps from buffer timestamps via the new
"retimestamp-mode"property. This is useful in a relay RTSP server if one wants to do full drift compensation and ensure that the stream coming out of gst-rtsp-server is not drifting compared to the pipeline clock and also not compared to the RTCP NTP times.
In rtspsrc we now use buffer-mode=slave manager::rtcp-sync=never tcp-timestamp=true
In rtsp-server, in addition to the rtcp-sync=never, we finish pipeline with retimestamping rtppassthroughpay retimestamp-mode=enabled name=pay0.
Big Thanks again to Centricular for fixes, and now I will be able to use official 1.26 release, not developer fork.