There was a race between urisourcebin src pad handlers.
One was starting the next item before the other was blocked.
See
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3297#note_2288799
for details.
Fix #3297
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6145>
}
PLAY_ITEMS_LOCK (handler->uridecodebin);
- if (play_item_is_eos (handler->uridecodebin->input_item)) {
+ if (srcpad->block_probe_id == 0) {
+ GST_DEBUG_OBJECT (pad, "pad has already been unblocked");
+ ret = GST_PAD_PROBE_REMOVE;
+ } else if (play_item_is_eos (handler->uridecodebin->input_item)) {
GST_DEBUG_OBJECT (handler->uridecodebin,
"We can switch over to the next input item");
switch_and_activate_input_locked (handler->uridecodebin,