tagdemux: Properly propagate sequence numbers
authorEdward Hervey <edward@centricular.com>
Wed, 17 Nov 2021 14:30:38 +0000 (15:30 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 9 Mar 2022 23:58:07 +0000 (23:58 +0000)
If we received a time segment from upstream, we need to make sure we propagate
it downstream with the same sequence number.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1903>

subprojects/gst-plugins-base/gst-libs/gst/tag/gsttagdemux.c

index 9f6096e..5702f7c 100644 (file)
@@ -102,6 +102,7 @@ struct _GstTagDemuxPrivate
 
   GstSegment segment;
   gboolean need_newseg;
+  guint32 segment_seqnum;
 
   guint64 offset;
 
@@ -265,6 +266,7 @@ gst_tag_demux_reset (GstTagDemux * tagdemux)
 
   gst_segment_init (&tagdemux->priv->segment, GST_FORMAT_UNDEFINED);
   tagdemux->priv->need_newseg = TRUE;
+  tagdemux->priv->segment_seqnum = gst_util_seqnum_next ();
 
   g_list_foreach (tagdemux->priv->pending_events,
       (GFunc) gst_mini_object_unref, NULL);
@@ -769,6 +771,7 @@ gst_tag_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
     case GST_EVENT_SEGMENT:
     {
       gst_event_copy_segment (event, &demux->priv->segment);
+      demux->priv->segment_seqnum = gst_event_get_seqnum (event);
 
       demux->priv->need_newseg = TRUE;
       gst_event_unref (event);
@@ -1854,6 +1857,7 @@ gst_tag_demux_send_new_segment (GstTagDemux * tagdemux)
   /* Can't adjust segments in non-BYTES formats */
   if (tagdemux->priv->segment.format != GST_FORMAT_BYTES) {
     event = gst_event_new_segment (seg);
+    gst_event_set_seqnum (event, tagdemux->priv->segment_seqnum);
     return gst_pad_push_event (tagdemux->priv->srcpad, event);
   }
 
@@ -1910,6 +1914,7 @@ gst_tag_demux_send_new_segment (GstTagDemux * tagdemux)
   newseg.stop = stop;
   newseg.time = time;
   event = gst_event_new_segment (&newseg);
+  gst_event_set_seqnum (event, tagdemux->priv->segment_seqnum);
 
   return gst_pad_push_event (tagdemux->priv->srcpad, event);
 }