From 590fbb4ddddf543ff12cc75ae7201a6485a9899e Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Sat, 10 Apr 2021 03:09:44 +0530 Subject: [PATCH] rtspsrc: De-dup seek event seqnums to avoid multiple seeks Seek events are sent upstream on each sink, so if we receive multiple seeks with the same seqnum, we must only perform one seek, not N seeks where N = the number of sinks in the pipeline connected to rtspsrc. This is the same thing done by demuxers like qtdemux or matrsokademux. Part-of: --- gst/rtsp/gstrtspsrc.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index e59e05e40a..51a70b73b8 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -2978,7 +2978,15 @@ gst_rtspsrc_handle_src_event (GstPad * pad, GstObject * parent, switch (GST_EVENT_TYPE (event)) { case GST_EVENT_SEEK: - res = gst_rtspsrc_perform_seek (src, event); + { + guint32 seqnum = gst_event_get_seqnum (event); + if (seqnum == src->seek_seqnum) { + GST_LOG_OBJECT (pad, "Drop duplicated SEEK event seqnum %" + G_GUINT32_FORMAT, seqnum); + } else { + res = gst_rtspsrc_perform_seek (src, event); + } + } forward = FALSE; break; case GST_EVENT_QOS: