I noticed that by default, the timestamp recorded under frame_meta.ntp_timestamp (from NvDsFrameMeta) is the time when the frame data is batched by nvstreammux.
In cases where we have many cameras and cannot handle the predictions in real-time, without setting drop-on-latency to true for rtspsrc, the timestamp of the frame data and the actual time that it reaches NVStreammux can deviate significantly, which affects data integrity.
However, if drop-on-latency is set to true, this results in artifacts in the video stream, which drastically impacts the inference pipelines predictive capabilities (for both PGIE and SGIE).
To handle this issue, I wanted to retrieve the timestamp attached to rtspsrc as described here. However, the documentation states that Gst pointer needs to be passed to the configure_source_for_ntp_sync() function, so I guess something like this: configure_source_for_ntp_sync(hash(gst_rtsp_src)).
My question is:
Are there any python bindings for configure_source_for_ntp_sync()?
I was wondering in case, the RTSP source is unable to send RTCP Sender Reports (I am guessing some cameras do not support it), is there a way to catch, read a signal that the sender report is not available?
I want to do something like the following:
rtsp_sender_report_available = True
for rtsp_src in rtsp_sources:
if rtsp_src does not support rtsp sender report:
rtsp_sender_report_available = False
break
if rtsp_sender_report_available:
attach_sys_ts = 0
else:
attach_sys_ts = 1
streammux.set_property('attach-sys-ts', attach_sys_ts)