summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@igalia.com>2020-07-24 11:38:28 -0400
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>2020-07-28 07:18:24 +0000
commitbc641acb9f127efd7b4bd7b6940104e6f48bde80 (patch)
tree0b8168948c092b3da046a9284afedb947aa52174
parent58558bb90cc1c9e76ef18d934516686c82d411d5 (diff)
baseparse: Fix seqnum handling in pull mode
After a seek in pull mode, we should use the seek seqnum for all following operations, not some random seqnums Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/577>
-rw-r--r--libs/gst/base/gstbaseparse.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c
index 41638bf180..fc52eed7f1 100644
--- a/libs/gst/base/gstbaseparse.c
+++ b/libs/gst/base/gstbaseparse.c
@@ -3830,7 +3830,12 @@ gst_base_parse_sink_activate_mode (GstPad * pad, GstObject * parent,
case GST_PAD_MODE_PULL:
if (active) {
GstEvent *ev = gst_event_new_segment (&parse->segment);
- parse->priv->segment_seqnum = gst_event_get_seqnum (ev);
+
+ if (parse->priv->segment_seqnum != GST_SEQNUM_INVALID)
+ gst_event_set_seqnum (ev, parse->priv->segment_seqnum);
+ else
+ parse->priv->segment_seqnum = gst_event_get_seqnum (ev);
+
parse->priv->pending_events =
g_list_prepend (parse->priv->pending_events, ev);
result = TRUE;
@@ -4608,6 +4613,7 @@ gst_base_parse_handle_seek (GstBaseParse * parse, GstEvent * event)
gst_event_parse_seek (event, &rate, &format, &flags,
&start_type, &start, &stop_type, &stop);
seqnum = gst_event_get_seqnum (event);
+ parse->priv->segment_seqnum = seqnum;
GST_DEBUG_OBJECT (parse, "seek to format %s, rate %f, "
"start type %d at %" GST_TIME_FORMAT ", end type %d at %"