audioresample: Update for negotiation related API changes
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 16 May 2011 09:37:25 +0000 (11:37 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 16 May 2011 13:35:40 +0000 (15:35 +0200)
gst/audioresample/gstaudioresample.c

index 5fecc14..07078ee 100644 (file)
@@ -128,7 +128,7 @@ static void gst_audio_resample_get_property (GObject * object,
 static gboolean gst_audio_resample_get_unit_size (GstBaseTransform * base,
     GstCaps * caps, gsize * size);
 static GstCaps *gst_audio_resample_transform_caps (GstBaseTransform * base,
-    GstPadDirection direction, GstCaps * caps);
+    GstPadDirection direction, GstCaps * caps, GstCaps * filter);
 static void gst_audio_resample_fixate_caps (GstBaseTransform * base,
     GstPadDirection direction, GstCaps * caps, GstCaps * othercaps);
 static gboolean gst_audio_resample_transform_size (GstBaseTransform * trans,
@@ -283,7 +283,7 @@ gst_audio_resample_get_unit_size (GstBaseTransform * base, GstCaps * caps,
 
 static GstCaps *
 gst_audio_resample_transform_caps (GstBaseTransform * base,
-    GstPadDirection direction, GstCaps * caps)
+    GstPadDirection direction, GstCaps * caps, GstCaps * filter)
 {
   const GValue *val;
   GstStructure *s;
@@ -314,6 +314,15 @@ gst_audio_resample_transform_caps (GstBaseTransform * base,
     gst_caps_append_structure (res, s);
   }
 
+  if (filter) {
+    GstCaps *intersection;
+
+    intersection =
+        gst_caps_intersect_full (filter, res, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (res);
+    res = intersection;
+  }
+
   return res;
 }