From c247ad4c07186309069e572e73bae74421f5c253 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Thu, 8 Jan 2004 12:42:40 +0000 Subject: [PATCH] gst/median/gstmedian.c: Fix capsnego. Original commit message from CVS: 2004-01-08 Ronald Bultje * gst/median/gstmedian.c: (gst_median_link), (gst_median_init): Fix capsnego. --- ChangeLog | 5 +++++ gst/median/gstmedian.c | 29 ++++++++++++++++++----------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7a13ccb541..c8645bc324 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-01-08 Ronald Bultje + + * gst/median/gstmedian.c: (gst_median_link), (gst_median_init): + Fix capsnego. + 2004-01-08 Julien MOUTTE * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_create): Using XOverlay diff --git a/gst/median/gstmedian.c b/gst/median/gstmedian.c index 719ed8d83e..62e4c06918 100644 --- a/gst/median/gstmedian.c +++ b/gst/median/gstmedian.c @@ -137,32 +137,39 @@ gst_median_class_init (GstMedianClass *klass) } static gboolean -gst_median_sinkconnect (GstPad *pad, const GstCaps *caps) +gst_median_link (GstPad *pad, const GstCaps *caps) { - GstMedian *filter; - GstStructure *structure; + GstMedian *filter = GST_MEDIAN (gst_pad_get_parent (pad)); + GstPad *otherpad = (pad == filter->srcpad) ? filter->sinkpad : filter->srcpad; + GstStructure *structure = gst_caps_get_structure (caps, 0); + gint w, h; + GstPadLinkReturn ret; - filter = GST_MEDIAN (gst_pad_get_parent (pad)); + gst_structure_get_int (structure, "width", &w); + gst_structure_get_int (structure, "height", &h); - structure = gst_caps_get_structure (caps, 0); + ret = gst_pad_try_set_caps (otherpad, caps); + if (GST_PAD_LINK_SUCCESSFUL (ret)) { + filter->width = w; + filter->height = h; + } - gst_structure_get_int (structure, "width", &filter->width); - gst_structure_get_int (structure, "height", &filter->height); - - /* forward to the next plugin */ - return gst_pad_try_set_caps(filter->srcpad, caps); + return ret; } void gst_median_init (GstMedian *median) { median->sinkpad = gst_pad_new_from_template ( gst_static_pad_template_get (&median_sink_factory), "sink"); - gst_pad_set_link_function (median->sinkpad, gst_median_sinkconnect); + gst_pad_set_getcaps_function (median->sinkpad, gst_pad_proxy_getcaps); + gst_pad_set_link_function (median->sinkpad, gst_median_link); gst_pad_set_chain_function (median->sinkpad, gst_median_chain); gst_element_add_pad (GST_ELEMENT (median), median->sinkpad); median->srcpad = gst_pad_new_from_template ( gst_static_pad_template_get (&median_src_factory), "src"); + gst_pad_set_getcaps_function (median->srcpad, gst_pad_proxy_getcaps); + gst_pad_set_link_function (median->sinkpad, gst_median_link); gst_element_add_pad (GST_ELEMENT (median), median->srcpad); median->filtersize = 5;