mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 23:06:49 +00:00
playbin: Ignore caps from audio/video sink factories if there are fixed sinks already
This commit is contained in:
parent
5d499f1e14
commit
7f78f7f9e3
1 changed files with 14 additions and 1 deletions
|
@ -3649,6 +3649,7 @@ autoplug_query_cb (GstElement * uridecodebin, GstPad * pad, GstQuery * query,
|
|||
GstPad *sinkpad = NULL;
|
||||
GValueArray *factories;
|
||||
gint i, n;
|
||||
gboolean have_audio_sink = FALSE, have_video_sink = FALSE;
|
||||
|
||||
if (GST_QUERY_TYPE (query) != GST_QUERY_CAPS)
|
||||
return FALSE;
|
||||
|
@ -3714,6 +3715,7 @@ autoplug_query_cb (GstElement * uridecodebin, GstPad * pad, GstQuery * query,
|
|||
}
|
||||
gst_object_unref (sinkpad);
|
||||
}
|
||||
have_audio_sink = TRUE;
|
||||
}
|
||||
|
||||
if ((sink = group->video_sink)) {
|
||||
|
@ -3738,6 +3740,7 @@ autoplug_query_cb (GstElement * uridecodebin, GstPad * pad, GstQuery * query,
|
|||
}
|
||||
gst_object_unref (sinkpad);
|
||||
}
|
||||
have_video_sink = TRUE;
|
||||
}
|
||||
|
||||
factories = autoplug_factories_cb (uridecodebin, pad, NULL, group);
|
||||
|
@ -3749,10 +3752,20 @@ autoplug_query_cb (GstElement * uridecodebin, GstPad * pad, GstQuery * query,
|
|||
const GList *l;
|
||||
GstCaps *templ_caps;
|
||||
|
||||
if (!gst_element_factory_list_is_type (GST_ELEMENT_FACTORY_CAST (factory),
|
||||
if (!gst_element_factory_list_is_type (factory,
|
||||
GST_ELEMENT_FACTORY_TYPE_SINK))
|
||||
continue;
|
||||
|
||||
if (have_audio_sink
|
||||
&& gst_element_factory_list_is_type (factory,
|
||||
GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO))
|
||||
continue;
|
||||
if (have_video_sink
|
||||
&& gst_element_factory_list_is_type (factory,
|
||||
GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO |
|
||||
GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE))
|
||||
continue;
|
||||
|
||||
templates = gst_element_factory_get_static_pad_templates (factory);
|
||||
|
||||
for (l = templates; l; l = l->next) {
|
||||
|
|
Loading…
Reference in a new issue