From c020add91e5489098a97f85eea7d12fa299cb730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 16 May 2011 10:56:11 +0200 Subject: [PATCH] audioconvert: Update for negotiation related API changes --- gst/audioconvert/gstaudioconvert.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gst/audioconvert/gstaudioconvert.c b/gst/audioconvert/gstaudioconvert.c index 90bcc4342e..1fb0cb8a2f 100644 --- a/gst/audioconvert/gstaudioconvert.c +++ b/gst/audioconvert/gstaudioconvert.c @@ -78,7 +78,7 @@ static void gst_audio_convert_dispose (GObject * obj); static gboolean gst_audio_convert_get_unit_size (GstBaseTransform * base, GstCaps * caps, gsize * size); static GstCaps *gst_audio_convert_transform_caps (GstBaseTransform * base, - GstPadDirection direction, GstCaps * caps); + GstPadDirection direction, GstCaps * caps, GstCaps * filter); static void gst_audio_convert_fixate_caps (GstBaseTransform * base, GstPadDirection direction, GstCaps * caps, GstCaps * othercaps); static gboolean gst_audio_convert_set_caps (GstBaseTransform * base, @@ -557,7 +557,7 @@ structure_has_fixed_channel_positions (GstStructure * s, */ static GstCaps * gst_audio_convert_transform_caps (GstBaseTransform * base, - GstPadDirection direction, GstCaps * caps) + GstPadDirection direction, GstCaps * caps, GstCaps * filter) { GstCaps *ret; GstStructure *s, *structure; @@ -698,6 +698,17 @@ gst_audio_convert_transform_caps (GstBaseTransform * base, GST_DEBUG_OBJECT (base, "Caps transformed to %" GST_PTR_FORMAT, ret); + if (filter) { + GstCaps *intersection; + + GST_DEBUG_OBJECT (base, "Using filter caps %" GST_PTR_FORMAT, filter); + intersection = + gst_caps_intersect_full (filter, ret, GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (ret); + ret = intersection; + GST_DEBUG_OBJECT (base, "Intersection %" GST_PTR_FORMAT, ret); + } + return ret; }