From 235b0acd6352e9116c0765af76ebf7db58cb26b7 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Fri, 14 Mar 2025 09:37:16 +0100 Subject: [PATCH] decodebin3: Don't avoid `parsebin` even if we have a matching decoder This is too brittle, there is no guarantee that the input stream has been properly parsed. There is another check above (is_input_parsed) that will skip that if the content came from `urisourcebin` and had a parser applied Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4308 Part-of: --- .../gst-plugins-base/gst/playback/gstdecodebin3.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/subprojects/gst-plugins-base/gst/playback/gstdecodebin3.c b/subprojects/gst-plugins-base/gst/playback/gstdecodebin3.c index d71de41ec2..7fd0fdd895 100644 --- a/subprojects/gst-plugins-base/gst/playback/gstdecodebin3.c +++ b/subprojects/gst-plugins-base/gst/playback/gstdecodebin3.c @@ -1904,21 +1904,6 @@ gst_decodebin_input_requires_parsebin (DecodebinInput * input, } else if (input->input_is_parsed) { GST_DEBUG_OBJECT (sinkpad, "input is parsed, no parsebin needed"); parsebin_needed = FALSE; - } else { - GList *decoder_list; - /* If the incoming caps are compatible with a decoder, we don't need to - * process it before */ - g_mutex_lock (&dbin->factories_lock); - gst_decode_bin_update_factories_list (dbin); - decoder_list = - gst_element_factory_list_filter (dbin->decoder_factories, newcaps, - GST_PAD_SINK, TRUE); - g_mutex_unlock (&dbin->factories_lock); - if (decoder_list) { - GST_FIXME_OBJECT (sinkpad, "parsebin not needed (available decoders) !"); - gst_plugin_feature_list_free (decoder_list); - parsebin_needed = FALSE; - } } if (stream) gst_object_unref (stream);