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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8641>
This commit is contained in:
Edward Hervey 2025-03-14 09:37:16 +01:00
parent dd1fc2b793
commit 235b0acd63

View File

@ -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);