decodebin3: Fix slot input linking when the associated stream has changed
authorPhilippe Normand <philn@igalia.com>
Mon, 17 Jul 2023 14:23:35 +0000 (15:23 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 19 Jul 2023 08:12:53 +0000 (09:12 +0100)
commiteea9f74f955e99515332bafd2cfbfbfc5a75b526
treec3a63224b1c93dfcdbba99560d75efd0a4821b91
parentf9360d47c1caa2fc7acac7c52cfc9013cb14938c
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/5067>
subprojects/gst-plugins-base/gst/playback/gstdecodebin3.c