summaryrefslogtreecommitdiff
path: root/tools/element-templates
diff options
context:
space:
mode:
Diffstat (limited to 'tools/element-templates')
-rw-r--r--tools/element-templates/basetransform24
1 files changed, 23 insertions, 1 deletions
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 *