identity: Don't refuse seeks unless single-segment=true

identity only needs to configure the internal seek segment if it's
aggregating upstream segments into 1. If it's not, don't break
other seek behaviour by refusing (for example) instant-rate change
seeks.

Fixes: #3363
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6307>
This commit is contained in:
Jan Schmidt 2024-03-08 17:05:34 +11:00 committed by Tim-Philipp Müller
parent 6f21f90747
commit dea8b1cb37

View file

@ -569,14 +569,16 @@ gst_identity_src_event (GstBaseTransform * trans, GstEvent * event)
&start, &stop_type, &stop); &start, &stop_type, &stop);
GST_OBJECT_LOCK (identity); GST_OBJECT_LOCK (identity);
gst_segment_init (&identity->seek_segment, fmt); if (identity->single_segment) {
if (!gst_segment_do_seek (&identity->seek_segment, rate, fmt, gst_segment_init (&identity->seek_segment, fmt);
flags, start_type, start, stop_type, stop, NULL)) { if (!gst_segment_do_seek (&identity->seek_segment, rate, fmt,
GST_WARNING_OBJECT (identity, "Could not run seek %" GST_PTR_FORMAT, flags, start_type, start, stop_type, stop, NULL)) {
event); GST_WARNING_OBJECT (identity, "Could not handle %" GST_PTR_FORMAT,
GST_OBJECT_UNLOCK (identity); event);
GST_OBJECT_UNLOCK (identity);
return FALSE; return FALSE;
}
} }
GST_OBJECT_UNLOCK (identity); GST_OBJECT_UNLOCK (identity);