mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-06 14:32:31 +00:00
Revert "decodebin: fix the autoplugging of parser elements"
This reverts commit 2b0d392741
.
This breaks cases where an actual second parser is required after the parser,
e.g. to do timestamp corrections.
See https://bugzilla.gnome.org/show_bug.cgi?id=738416
This commit is contained in:
parent
2da56de19f
commit
8b8b8ae2e8
1 changed files with 0 additions and 25 deletions
|
@ -2036,7 +2036,6 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad,
|
||||||
|
|
||||||
/* take first factory */
|
/* take first factory */
|
||||||
factory = g_value_get_object (g_value_array_get_nth (factories, 0));
|
factory = g_value_get_object (g_value_array_get_nth (factories, 0));
|
||||||
|
|
||||||
/* Remove selected factory from the list. */
|
/* Remove selected factory from the list. */
|
||||||
g_value_array_remove (factories, 0);
|
g_value_array_remove (factories, 0);
|
||||||
|
|
||||||
|
@ -2093,9 +2092,6 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad,
|
||||||
* to have other element classes after each other because a
|
* to have other element classes after each other because a
|
||||||
* parser is the only one that does not change the data. A
|
* parser is the only one that does not change the data. A
|
||||||
* valid example for this would be multiple id3demux in a row.
|
* valid example for this would be multiple id3demux in a row.
|
||||||
* Also restrict the autoplugging of multiple parsers for same
|
|
||||||
* media format with in a chain if they are coming one after
|
|
||||||
* another in adjacent positions.
|
|
||||||
*/
|
*/
|
||||||
is_parser_converter = strstr (gst_element_factory_get_metadata (factory,
|
is_parser_converter = strstr (gst_element_factory_get_metadata (factory,
|
||||||
GST_ELEMENT_METADATA_KLASS), "Parser") != NULL;
|
GST_ELEMENT_METADATA_KLASS), "Parser") != NULL;
|
||||||
|
@ -2123,27 +2119,6 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad,
|
||||||
skip = TRUE;
|
skip = TRUE;
|
||||||
}
|
}
|
||||||
CHAIN_MUTEX_UNLOCK (chain);
|
CHAIN_MUTEX_UNLOCK (chain);
|
||||||
|
|
||||||
if (!skip && chain->elements) {
|
|
||||||
GstElementFactory *chainelemfact;
|
|
||||||
|
|
||||||
CHAIN_MUTEX_LOCK (chain);
|
|
||||||
delem = (GstDecodeElement *) chain->elements->data;
|
|
||||||
chainelemfact = gst_element_get_factory (delem->element);
|
|
||||||
|
|
||||||
if (strstr (gst_element_factory_get_metadata (chainelemfact,
|
|
||||||
GST_ELEMENT_METADATA_KLASS), "Parser")) {
|
|
||||||
GST_DEBUG_OBJECT (dbin,
|
|
||||||
"Skipping factory '%s' because the last connected element"
|
|
||||||
" '%s' in the chain is exactly similiar",
|
|
||||||
gst_plugin_feature_get_name (GST_PLUGIN_FEATURE_CAST (factory)),
|
|
||||||
gst_plugin_feature_get_name (GST_PLUGIN_FEATURE_CAST
|
|
||||||
(chainelemfact)));
|
|
||||||
CHAIN_MUTEX_UNLOCK (chain);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
CHAIN_MUTEX_UNLOCK (chain);
|
|
||||||
}
|
|
||||||
if (skip) {
|
if (skip) {
|
||||||
GST_DEBUG_OBJECT (dbin,
|
GST_DEBUG_OBJECT (dbin,
|
||||||
"Skipping factory '%s' because it was already used in this chain",
|
"Skipping factory '%s' because it was already used in this chain",
|
||||||
|
|
Loading…
Reference in a new issue