mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-18 05:16:05 +00:00
decodebin2: improve autoplugging
Use the pad caps when they are available to continue the autoplugging. If the pad caps are set, they are fixed and then we can directly continue autoplugging.
This commit is contained in:
parent
c2fc44d0ec
commit
6d2621d02c
1 changed files with 13 additions and 1 deletions
|
@ -1972,7 +1972,19 @@ pad_added_cb (GstElement * element, GstPad * pad, GstDecodeChain * chain)
|
|||
|
||||
GST_DEBUG_OBJECT (pad, "pad added, chain:%p", chain);
|
||||
|
||||
caps = gst_pad_get_caps_reffed (pad);
|
||||
/* first check the pad caps, if this is set, we are positively sure it is
|
||||
* fixed and exactly what the element will produce. */
|
||||
GST_OBJECT_LOCK (pad);
|
||||
if ((caps = GST_PAD_CAPS (pad)))
|
||||
gst_caps_ref (caps);
|
||||
GST_OBJECT_UNLOCK (pad);
|
||||
|
||||
/* then use the getcaps function if we don't have caps. These caps might not
|
||||
* be fixed in some cases, in which case analyze_new_pad will set up a
|
||||
* notify::caps signal to continue autoplugging. */
|
||||
if (caps == NULL)
|
||||
caps = gst_pad_get_caps_reffed (pad);
|
||||
|
||||
analyze_new_pad (dbin, element, pad, caps, chain);
|
||||
if (caps)
|
||||
gst_caps_unref (caps);
|
||||
|
|
Loading…
Reference in a new issue