decodebin3: Fix slot input linking when the associated stream has changed

Setting the input field on the empty slot prevents future linking of it and will
result in flow errors later on.

This was observed in WebKit's MediaStream source element, when it changes the
caps on one of its associated streams, from an encoded format to a raw video
format. The associated stream-id on the sticky stream-start event doesn´t
change, but the element creates a new GstStream with a different ID and sets it
on the stream-start event. Stream parsing is disabled in urisourcebin, so
decodebin3 handles the parsing. Without this patch we would end-up with unlinked
pads in decodebin3 after switching to the raw video format.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5048>
This commit is contained in:
Philippe Normand 2023-07-17 15:23:35 +01:00 committed by GStreamer Marge Bot
parent cec774b653
commit 4404e7203c

View file

@ -2768,7 +2768,6 @@ get_slot_for_input (GstDecodebin3 * dbin, DecodebinInputStream * input)
if (empty_slot) { if (empty_slot) {
GST_DEBUG_OBJECT (dbin, "Re-using existing unused slot %d", empty_slot->id); GST_DEBUG_OBJECT (dbin, "Re-using existing unused slot %d", empty_slot->id);
empty_slot->input = input;
return empty_slot; return empty_slot;
} }