aboutsummaryrefslogtreecommitdiff
path: root/gst/videomixer/videomixer2.c
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2012-09-25 00:17:08 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-09-25 00:17:08 +0200
commite8789381f41f0f3951e9631c8a44a21e582e0473 (patch)
treef2729cbc9a2243725dc82a64a62a724da83c5b2d /gst/videomixer/videomixer2.c
parent747315599d26c3d58d30805927934313d3ba0dc5 (diff)
Imported Upstream version 1.0.0
Diffstat (limited to 'gst/videomixer/videomixer2.c')
-rw-r--r--gst/videomixer/videomixer2.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/gst/videomixer/videomixer2.c b/gst/videomixer/videomixer2.c
index b99050db..98a3312d 100644
--- a/gst/videomixer/videomixer2.c
+++ b/gst/videomixer/videomixer2.c
@@ -228,6 +228,7 @@ gst_videomixer2_update_src_caps (GstVideoMixer2 * mix)
mix->nframes = 0;
}
}
+ gst_video_info_init (&info);
gst_video_info_set_format (&info, GST_VIDEO_INFO_FORMAT (&mix->info),
best_width, best_height);
info.fps_n = best_fps_n;
@@ -325,16 +326,13 @@ beach:
}
static GstCaps *
-gst_videomixer2_pad_sink_getcaps (GstPad * pad, GstObject * parent,
+gst_videomixer2_pad_sink_getcaps (GstPad * pad, GstVideoMixer2 * mix,
GstCaps * filter)
{
- GstVideoMixer2 *mix;
GstCaps *srccaps;
GstStructure *s;
gint i, n;
- mix = GST_VIDEO_MIXER2 (parent);
-
srccaps = gst_pad_get_current_caps (GST_PAD (mix->srcpad));
if (srccaps == NULL)
srccaps = gst_pad_get_pad_template_caps (GST_PAD (mix->srcpad));
@@ -358,16 +356,14 @@ gst_videomixer2_pad_sink_getcaps (GstPad * pad, GstObject * parent,
}
static gboolean
-gst_videomixer2_pad_sink_acceptcaps (GstPad * pad, GstObject * parent,
+gst_videomixer2_pad_sink_acceptcaps (GstPad * pad, GstVideoMixer2 * mix,
GstCaps * caps)
{
gboolean ret;
- GstVideoMixer2 *mix;
GstCaps *accepted_caps;
gint i, n;
GstStructure *s;
- mix = GST_VIDEO_MIXER2 (parent);
GST_DEBUG_OBJECT (pad, "%" GST_PTR_FORMAT, caps);
accepted_caps = gst_pad_get_current_caps (GST_PAD (mix->srcpad));
@@ -398,9 +394,10 @@ gst_videomixer2_pad_sink_acceptcaps (GstPad * pad, GstObject * parent,
}
static gboolean
-gst_videomixer2_pad_sink_query (GstPad * pad, GstObject * parent,
- GstQuery * query)
+gst_videomixer2_sink_query (GstCollectPads * pads, GstCollectData * cdata,
+ GstQuery * query, GstVideoMixer2 * mix)
{
+ GstVideoMixer2Pad *pad = GST_VIDEO_MIXER2_PAD (cdata->pad);
gboolean ret = FALSE;
switch (GST_QUERY_TYPE (query)) {
@@ -409,7 +406,7 @@ gst_videomixer2_pad_sink_query (GstPad * pad, GstObject * parent,
GstCaps *filter, *caps;
gst_query_parse_caps (query, &filter);
- caps = gst_videomixer2_pad_sink_getcaps (pad, parent, filter);
+ caps = gst_videomixer2_pad_sink_getcaps (GST_PAD (pad), mix, filter);
gst_query_set_caps_result (query, caps);
gst_caps_unref (caps);
ret = TRUE;
@@ -420,13 +417,13 @@ gst_videomixer2_pad_sink_query (GstPad * pad, GstObject * parent,
GstCaps *caps;
gst_query_parse_accept_caps (query, &caps);
- ret = gst_videomixer2_pad_sink_acceptcaps (pad, parent, caps);
+ ret = gst_videomixer2_pad_sink_acceptcaps (GST_PAD (pad), mix, caps);
gst_query_set_accept_caps_result (query, ret);
ret = TRUE;
break;
}
default:
- ret = gst_pad_query_default (pad, parent, query);
+ ret = gst_collect_pads_query_default (pads, cdata, query, FALSE);
break;
}
return ret;
@@ -526,10 +523,6 @@ gst_videomixer2_pad_class_init (GstVideoMixer2PadClass * klass)
static void
gst_videomixer2_pad_init (GstVideoMixer2Pad * mixerpad)
{
- /* setup some pad functions */
- gst_pad_set_query_function (GST_PAD (mixerpad),
- gst_videomixer2_pad_sink_query);
-
mixerpad->zorder = DEFAULT_PAD_ZORDER;
mixerpad->xpos = DEFAULT_PAD_XPOS;
mixerpad->ypos = DEFAULT_PAD_YPOS;
@@ -2004,6 +1997,8 @@ gst_videomixer2_init (GstVideoMixer2 * mix)
mix);
gst_collect_pads_set_event_function (mix->collect,
(GstCollectPadsEventFunction) gst_videomixer2_sink_event, mix);
+ gst_collect_pads_set_query_function (mix->collect,
+ (GstCollectPadsQueryFunction) gst_videomixer2_sink_query, mix);
gst_collect_pads_set_clip_function (mix->collect,
(GstCollectPadsClipFunction) gst_videomixer2_sink_clip, mix);