subparse: Properly forward segment seqnum
authorEdward Hervey <edward@centricular.com>
Wed, 8 Feb 2023 11:00:54 +0000 (12:00 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 9 Feb 2023 00:13:40 +0000 (00:13 +0000)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3917>

subprojects/gst-plugins-base/gst/subparse/gstsubparse.c
subprojects/gst-plugins-base/gst/subparse/gstsubparse.h

index 8ce616d..7aa922c 100644 (file)
@@ -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
index 7a1e9b0..8673466 100644 (file)
@@ -75,6 +75,7 @@ struct _GstSubParse {
   guint64 offset;
   
   /* Segment */
+  guint32       segment_seqnum;
   GstSegment    segment;
   gboolean      need_segment;