summaryrefslogtreecommitdiff
path: root/gst/playback/gstdecodebin3.c
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2020-12-24 11:44:27 +0200
committerSebastian Dröge <sebastian@centricular.com>2020-12-24 11:44:27 +0200
commit15fb391401f300b6a63e117aaaa24a308148b754 (patch)
tree44413fa96b3d4e6c3595bbdfa6587f7539d8d43c /gst/playback/gstdecodebin3.c
parent932dfd4031bff98df65a045230b03b40c00a5271 (diff)
downloadgstreamer-plugins-base-15fb391401f300b6a63e117aaaa24a308148b754.tar.gz
decodebin3: When reconfiguring a slot make sure that the ghostpad is unlinked
This was only taken care of previously if there was a decoder before. However if previously a decoder was not needed then the ghostpad would've been linked directly to the slot's srcpad. Reconfiguring the slot requires this to be undone so that linking can happen normally. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/985>
Diffstat (limited to 'gst/playback/gstdecodebin3.c')
-rw-r--r--gst/playback/gstdecodebin3.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gst/playback/gstdecodebin3.c b/gst/playback/gstdecodebin3.c
index b93290357..dc7e217f2 100644
--- a/gst/playback/gstdecodebin3.c
+++ b/gst/playback/gstdecodebin3.c
@@ -2284,6 +2284,15 @@ reconfigure_output_stream (DecodebinOutputStream * output,
gst_bin_remove ((GstBin *) dbin, output->decoder);
output->decoder = NULL;
output->decoder_latency = GST_CLOCK_TIME_NONE;
+ } else if (output->linked) {
+ /* Otherwise if we have no decoder yet but the output is linked make
+ * sure that the ghost pad is really unlinked in case no decoder was
+ * needed previously */
+ if (!gst_ghost_pad_set_target ((GstGhostPad *) output->src_pad, NULL)) {
+ GST_ERROR_OBJECT (dbin, "Could not release ghost pad");
+ gst_caps_unref (new_caps);
+ goto cleanup;
+ }
}
gst_caps_unref (new_caps);