mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 09:40: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
62e3c40d97
commit
1bd6e87cfc
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
|
static gboolean
|
||||||
gst_gl_mixer_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
|
gst_gl_mixer_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
|
||||||
GstQuery * query)
|
GstQuery * query)
|
||||||
|
@ -277,6 +297,16 @@ gst_gl_mixer_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
|
||||||
GST_TRACE ("QUERY %" GST_PTR_FORMAT, query);
|
GST_TRACE ("QUERY %" GST_PTR_FORMAT, query);
|
||||||
|
|
||||||
switch (GST_QUERY_TYPE (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:
|
case GST_QUERY_ALLOCATION:
|
||||||
{
|
{
|
||||||
GstQuery *decide_query = NULL;
|
GstQuery *decide_query = NULL;
|
||||||
|
|
Loading…
Reference in a new issue