diff options
author | Ederson de Souza <ederson.desouza@intel.com> | 2020-04-03 10:41:31 -0700 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-05-02 17:42:15 +0000 |
commit | 32281ddd3317ae3197633ee9f54720968f2afba7 (patch) | |
tree | aac030a8aae0fe78ede870cb12e31a4734695eca /ext/avtp/gstavtpsink.c | |
parent | 7edaeb3fae66450759c293e411b630c6fbdfd0ba (diff) | |
download | gstreamer-plugins-bad-32281ddd3317ae3197633ee9f54720968f2afba7.tar.gz |
avtpsink: Accept buffers that fall out of segment
Proper calculate running time for buffers that are out of current
segment and try to honor them.
A typical case is for AVTP packets coming from avtpcvfpay element, as
those may have DTS that falls out of segment (which is about PTS).
By using gst_segment_to_running_time_full(), avtpsink can properly
calculate when to transmit those buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1004>
Diffstat (limited to 'ext/avtp/gstavtpsink.c')
-rw-r--r-- | ext/avtp/gstavtpsink.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ext/avtp/gstavtpsink.c b/ext/avtp/gstavtpsink.c index 5f469dd65..a825049d8 100644 --- a/ext/avtp/gstavtpsink.c +++ b/ext/avtp/gstavtpsink.c @@ -374,12 +374,17 @@ gst_avtp_sink_render (GstBaseSink * basesink, GstBuffer * buffer) if (G_LIKELY (basesink->sync)) { GstClockTime base_time, running_time; struct cmsghdr *cmsg = CMSG_FIRSTHDR (avtpsink->msg); + gint ret; g_assert (GST_BUFFER_DTS_OR_PTS (buffer) != GST_CLOCK_TIME_NONE); + ret = gst_segment_to_running_time_full (&basesink->segment, + basesink->segment.format, GST_BUFFER_DTS_OR_PTS (buffer), + &running_time); + if (ret == -1) + running_time = -running_time; + base_time = gst_element_get_base_time (GST_ELEMENT (avtpsink)); - running_time = gst_segment_to_running_time (&basesink->segment, - basesink->segment.format, GST_BUFFER_DTS_OR_PTS (buffer)); running_time = gst_avtp_sink_adjust_time (basesink, running_time); *(__u64 *) CMSG_DATA (cmsg) = UTC_TO_TAI (base_time + running_time); } |