mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
glmixer: override the accept caps query in order to 'convert' capsfeatures
Otherwise, it is only possible for the sink pads and the src pads to have the exact same caps features. We can convert from any feature to another feature so support that.
This commit is contained in:
parent
e40d70c69a
commit
7d9044cf05
1 changed files with 30 additions and 0 deletions
|
@ -267,6 +267,26 @@ context_error:
|
|||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_gl_mixer_pad_sink_acceptcaps (GstPad * pad, GstGLMixer * mix,
|
||||
GstCaps * caps)
|
||||
{
|
||||
gboolean ret;
|
||||
GstCaps *template_caps;
|
||||
|
||||
GST_DEBUG_OBJECT (pad, "try accept caps of %" GST_PTR_FORMAT, caps);
|
||||
|
||||
template_caps = gst_pad_get_pad_template_caps (pad);
|
||||
template_caps = gst_caps_make_writable (template_caps);
|
||||
|
||||
ret = gst_caps_can_intersect (caps, template_caps);
|
||||
GST_DEBUG_OBJECT (pad, "%saccepted caps %" GST_PTR_FORMAT,
|
||||
(ret ? "" : "not "), caps);
|
||||
gst_caps_unref (template_caps);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_gl_mixer_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
|
||||
GstQuery * query)
|
||||
|
@ -277,6 +297,16 @@ gst_gl_mixer_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
|
|||
GST_TRACE ("QUERY %" GST_PTR_FORMAT, query);
|
||||
|
||||
switch (GST_QUERY_TYPE (query)) {
|
||||
case GST_QUERY_ACCEPT_CAPS:
|
||||
{
|
||||
GstCaps *caps;
|
||||
|
||||
gst_query_parse_accept_caps (query, &caps);
|
||||
ret = gst_gl_mixer_pad_sink_acceptcaps (GST_PAD (bpad), mix, caps);
|
||||
gst_query_set_accept_caps_result (query, ret);
|
||||
ret = TRUE;
|
||||
break;
|
||||
}
|
||||
case GST_QUERY_ALLOCATION:
|
||||
{
|
||||
GstQuery *decide_query = NULL;
|
||||
|
|
Loading…
Reference in a new issue