diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c index 2892f7e113..2a4252418b 100644 --- a/gst/mpegtsdemux/mpegtsbase.c +++ b/gst/mpegtsdemux/mpegtsbase.c @@ -1348,7 +1348,7 @@ mpegts_base_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) base->packetizer->calculate_offset = TRUE; base->packetizer->calculate_skew = FALSE; } - gst_event_unref (event); + res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event); break; case GST_EVENT_STREAM_START: gst_event_unref (event); diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index 05bd83dfbd..50db5acdc4 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -580,6 +580,12 @@ push_event (MpegTSBase * base, GstEvent * event) GstTSDemux *demux = (GstTSDemux *) base; GList *tmp; + if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) { + GST_DEBUG_OBJECT (base, "Ignoring segment event (recreated later)"); + gst_event_unref (event); + return TRUE; + } + if (G_UNLIKELY (demux->program == NULL)) { gst_event_unref (event); return FALSE;