From 12a4ff1100db8e8e27a7890b0791e930c05684bb Mon Sep 17 00:00:00 2001 From: David Schleef Date: Fri, 12 Apr 2013 14:07:31 -0700 Subject: element-templates: Add helper code to transform_caps --- tools/element-templates/basetransform | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'tools/element-templates') diff --git a/tools/element-templates/basetransform b/tools/element-templates/basetransform index 24217964d..0be449ca2 100644 --- a/tools/element-templates/basetransform +++ b/tools/element-templates/basetransform @@ -79,10 +79,32 @@ gst_replace_transform_caps (GstBaseTransform * trans, GstPadDirection direction, GstCaps * caps, GstCaps * filter) { GstReplace *replace = GST_REPLACE (trans); + GstCaps *othercaps; GST_DEBUG_OBJECT (replace, "transform_caps"); - return NULL; + othercaps = gst_caps_copy (caps); + + /* Copy other caps and modify as appropriate */ + /* This works for the simplest cases, where the transform modifies one + * or more fields in the caps structure. It does not work correctly + * if passthrough caps are preferred. */ + if (direction == GST_PAD_SRC) { + /* transform caps going upstream */ + } else { + /* transform caps going downstream */ + } + + if (filter) { + GstCaps *intersect; + + intersect = gst_caps_intersect (othercaps, filter); + gst_caps_unref (othercaps); + + return intersect; + } else { + return othercaps; + } } static GstCaps * -- cgit v1.2.1