diff --git a/gstlal-ugly/gst/lal/gstlal_interpolator.c b/gstlal-ugly/gst/lal/gstlal_interpolator.c index 826f90fd832b128054dc533fe6bb65b7810160f6..1a4c01f958cc7bc3192e7c7c2cd0a97db0f7a937 100644 --- a/gstlal-ugly/gst/lal/gstlal_interpolator.c +++ b/gstlal-ugly/gst/lal/gstlal_interpolator.c @@ -517,6 +517,7 @@ static GstCaps* transform_caps (GstBaseTransform *trans, GstPadDirection directi gint channels; GstAudioInfo info; + GstCaps *res; char capsstr[256] = {0}; if (direction == GST_PAD_SINK && gst_caps_is_fixed(caps)) { @@ -527,7 +528,16 @@ static GstCaps* transform_caps (GstBaseTransform *trans, GstPadDirection directi return gst_caps_from_string(capsstr); } - return gst_caps_from_string("audio/x-raw, format= (string) {" GST_AUDIO_NE(F32) ", " GST_AUDIO_NE(F64) "}, rate = (int) {4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768}, channels = (int) [1, MAX]"); + res = gst_caps_from_string("audio/x-raw, format= (string) {" GST_AUDIO_NE(F32) ", " GST_AUDIO_NE(F64) "}, rate = (int) {4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768}, channels = (int) [1, MAX]"); + + if (filter) { + GstCaps *intersection; + intersection = gst_caps_intersect_full(filter, res, GST_CAPS_INTERSECT_FIRST); + gst_caps_unref(res); + res = intersection; + } + + return res; }