static gboolean gst_frei0r_mixer_src_query (GstPad * pad, GstObject * object, GstQuery * query) { GstFrei0rMixer *self = GST_FREI0R_MIXER (object); gboolean ret = FALSE; switch (GST_QUERY_TYPE (query)) { case GST_QUERY_POSITION: ret = gst_pad_query (self->sink0, query); break; case GST_QUERY_DURATION: ret = gst_frei0r_mixer_src_query_duration (self, query); break; case GST_QUERY_LATENCY: ret = gst_frei0r_mixer_src_query_latency (self, query); break; case GST_QUERY_CAPS: { GstCaps *filter, *caps; gst_query_parse_caps (query, &filter); caps = gst_frei0r_mixer_get_caps (self, pad, filter); gst_query_set_caps_result (query, caps); gst_caps_unref (caps); break; } default: ret = gst_pad_query_default (pad, GST_OBJECT (self), query); break; } return ret; }
static gboolean gst_frei0r_mixer_src_query (GstPad * pad, GstQuery * query) { GstFrei0rMixer *self = GST_FREI0R_MIXER (gst_pad_get_parent (pad)); gboolean ret = FALSE; switch (GST_QUERY_TYPE (query)) { case GST_QUERY_POSITION: ret = gst_pad_query (self->sink0, query); break; case GST_QUERY_DURATION: ret = gst_frei0r_mixer_src_query_duration (self, query); break; case GST_QUERY_LATENCY: ret = gst_frei0r_mixer_src_query_latency (self, query); break; default: ret = gst_pad_query_default (pad, query); break; } gst_object_unref (self); return ret; }