diff --git a/subprojects/gst-plugins-base/gst/subparse/gstsubparse.c b/subprojects/gst-plugins-base/gst/subparse/gstsubparse.c index 8ce616ddf0..7aa922cdd8 100644 --- a/subprojects/gst-plugins-base/gst/subparse/gstsubparse.c +++ b/subprojects/gst-plugins-base/gst/subparse/gstsubparse.c @@ -185,6 +185,7 @@ gst_sub_parse_init (GstSubParse * subparse) subparse->strip_pango_markup = FALSE; subparse->flushing = FALSE; gst_segment_init (&subparse->segment, GST_FORMAT_TIME); + subparse->segment_seqnum = gst_util_seqnum_next (); subparse->need_segment = TRUE; subparse->encoding = g_strdup (DEFAULT_ENCODING); subparse->detected_encoding = NULL; @@ -1625,10 +1626,12 @@ check_initial_events (GstSubParse * self) /* Push newsegment if needed */ if (self->need_segment) { + GstEvent *segment_event = gst_event_new_segment (&self->segment); GST_LOG_OBJECT (self, "pushing newsegment event with %" GST_SEGMENT_FORMAT, &self->segment); - gst_pad_push_event (self->srcpad, gst_event_new_segment (&self->segment)); + gst_event_set_seqnum (segment_event, self->segment_seqnum); + gst_pad_push_event (self->srcpad, segment_event); self->need_segment = FALSE; } @@ -1805,6 +1808,7 @@ gst_sub_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) gst_event_copy_segment (event, &self->segment); GST_DEBUG_OBJECT (self, "newsegment (%s)", gst_format_get_name (self->segment.format)); + self->segment_seqnum = gst_event_get_seqnum (event); /* if not time format, we'll either start with a 0 timestamp anyway or * it's following a seek in which case we'll have saved the requested diff --git a/subprojects/gst-plugins-base/gst/subparse/gstsubparse.h b/subprojects/gst-plugins-base/gst/subparse/gstsubparse.h index 7a1e9b0a28..8673466768 100644 --- a/subprojects/gst-plugins-base/gst/subparse/gstsubparse.h +++ b/subprojects/gst-plugins-base/gst/subparse/gstsubparse.h @@ -75,6 +75,7 @@ struct _GstSubParse { guint64 offset; /* Segment */ + guint32 segment_seqnum; GstSegment segment; gboolean need_segment;