diff options
author | Thibault Saunier <tsaunier@igalia.com> | 2020-07-24 11:38:28 -0400 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-07-28 07:18:24 +0000 |
commit | bc641acb9f127efd7b4bd7b6940104e6f48bde80 (patch) | |
tree | 0b8168948c092b3da046a9284afedb947aa52174 | |
parent | 58558bb90cc1c9e76ef18d934516686c82d411d5 (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.c | 8 |
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 %" |