summaryrefslogtreecommitdiff
path: root/gst/deinterlace
diff options
context:
space:
mode:
authorJan Schmidt <thaytan@mad.scientist.com>2004-05-12 14:53:58 +0000
committerJan Schmidt <thaytan@mad.scientist.com>2004-05-12 14:53:58 +0000
commit3b47dd30d634d9797a170b372c765a22897aa3c3 (patch)
tree89ca148d3a0d4e29b94ca6f79a05f36ee5d84903 /gst/deinterlace
parentcbc28f86f9621ac9a902b0a98d6301b20e46d21d (diff)
ext/audiofile/gstafsrc.c: Remove old debug output
Original commit message from CVS: * ext/audiofile/gstafsrc.c: (gst_afsrc_get): Remove old debug output * ext/dv/gstdvdec.c: (gst_dvdec_quality_get_type), (gst_dvdec_class_init), (gst_dvdec_loop), (gst_dvdec_change_state), (gst_dvdec_set_property), (gst_dvdec_get_property): Change the quality setting to an enum, so it works from gst-launch Don't renegotiate a non-linked pad. Allows audio only decoding. * gst/deinterlace/gstdeinterlace.c: (gst_deinterlace_getcaps), (gst_deinterlace_link), (gst_deinterlace_init): * gst/videodrop/gstvideodrop.c: (gst_videodrop_getcaps), (gst_videodrop_link): Some caps negotiation fixes
Diffstat (limited to 'gst/deinterlace')
-rw-r--r--gst/deinterlace/gstdeinterlace.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/gst/deinterlace/gstdeinterlace.c b/gst/deinterlace/gstdeinterlace.c
index 93a2bdb2a..3c2941ba9 100644
--- a/gst/deinterlace/gstdeinterlace.c
+++ b/gst/deinterlace/gstdeinterlace.c
@@ -139,6 +139,18 @@ gst_deinterlace_class_init (GstDeInterlaceClass * klass)
gobject_class->set_property = gst_deinterlace_set_property;
gobject_class->get_property = gst_deinterlace_get_property;
}
+static GstCaps *
+gst_deinterlace_getcaps (GstPad * pad)
+{
+ GstDeInterlace *filter;
+ GstPad *otherpad;
+
+ filter = GST_DEINTERLACE (gst_pad_get_parent (pad));
+
+ otherpad = (pad == filter->srcpad) ? filter->sinkpad : filter->srcpad;
+
+ return gst_pad_get_allowed_caps (otherpad);
+}
static GstPadLinkReturn
gst_deinterlace_link (GstPad * pad, const GstCaps * caps)
@@ -146,10 +158,13 @@ gst_deinterlace_link (GstPad * pad, const GstCaps * caps)
GstDeInterlace *filter;
GstStructure *structure;
GstPadLinkReturn ret;
+ GstPad *otherpad;
filter = GST_DEINTERLACE (gst_pad_get_parent (pad));
- ret = gst_pad_try_set_caps (filter->srcpad, caps);
+ otherpad = (pad == filter->srcpad) ? filter->sinkpad : filter->srcpad;
+
+ ret = gst_pad_try_set_caps (otherpad, caps);
if (GST_PAD_LINK_FAILED (ret)) {
return ret;
}
@@ -176,12 +191,14 @@ gst_deinterlace_init (GstDeInterlace * filter)
(&deinterlace_sink_factory), "sink");
gst_pad_set_chain_function (filter->sinkpad, gst_deinterlace_chain);
gst_pad_set_link_function (filter->sinkpad, gst_deinterlace_link);
+ gst_pad_set_getcaps_function (filter->sinkpad, gst_deinterlace_getcaps);
gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
filter->srcpad =
gst_pad_new_from_template (gst_static_pad_template_get
(&deinterlace_src_factory), "src");
gst_pad_set_link_function (filter->srcpad, gst_deinterlace_link);
+ gst_pad_set_getcaps_function (filter->srcpad, gst_deinterlace_getcaps);
gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
filter->show_deinterlaced_area_only = FALSE;