summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Nazar <nazard@nazar.ca>2021-04-20 18:47:31 -0400
committerDoug Nazar <nazard@nazar.ca>2021-04-20 19:32:07 -0400
commit833280b0f9de86c30ce88c406ef0307892882e7f (patch)
treeec2d7cf7003ad42bd4150581e358883f799b3e56
parent3ff44eabc3589584ed73ba77ce34e62042d6e578 (diff)
asfdemux: Drop duplicate seek events.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/81>
-rw-r--r--gst/asfdemux/gstasfdemux.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c
index 8f68908c..2cf236c9 100644
--- a/gst/asfdemux/gstasfdemux.c
+++ b/gst/asfdemux/gstasfdemux.c
@@ -48,6 +48,9 @@
#include "asfheaders.h"
#include "asfpacket.h"
+GST_DEBUG_CATEGORY (asfdemux_dbg);
+#define GST_CAT_DEFAULT asfdemux_dbg
+
static GstStaticPadTemplate gst_asf_demux_sink_template =
GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
@@ -78,8 +81,6 @@ GST_STATIC_PAD_TEMPLATE ("video_%u",
(flow == ASF_FLOW_NEED_MORE_DATA) ? \
"need-more-data" : gst_flow_get_name (flow)
-GST_DEBUG_CATEGORY (asfdemux_dbg);
-
static void gst_asf_demux_finalize (GObject * object);
static GstStateChangeReturn gst_asf_demux_change_state (GstElement * element,
GstStateChange transition);
@@ -853,12 +854,21 @@ gst_asf_demux_handle_src_event (GstPad * pad, GstObject * parent,
{
GstASFDemux *demux;
gboolean ret;
+ guint32 seqnum;
demux = GST_ASF_DEMUX (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_SEEK:
GST_LOG_OBJECT (pad, "seek event");
+ seqnum = gst_event_get_seqnum (event);
+ if (demux->segment_seqnum == seqnum) {
+ GST_LOG_OBJECT (pad,
+ "Drop duplicated SEEK event seqnum %" G_GUINT32_FORMAT, seqnum);
+ gst_event_unref (event);
+ ret = TRUE;
+ break;
+ }
ret = gst_asf_demux_handle_seek_event (demux, event);
gst_event_unref (event);
break;
@@ -1788,7 +1798,6 @@ gst_asf_demux_push_complete_payloads (GstASFDemux * demux, gboolean force)
demux->taglist = NULL;
demux->need_newsegment = FALSE;
- demux->segment_seqnum = 0;
demux->segment_running = TRUE;
}