*/
static gboolean
gst_pad_try_relink_filtered_func (GstRealPad *srcpad, GstRealPad *sinkpad,
- GstCaps *filtercaps, gboolean clear)
+ GstCaps *filtercaps, gboolean clear)
{
GstCaps *srccaps, *sinkcaps;
GstCaps *intersection = NULL;
"start relink filtered %s:%s and %s:%s, clearing caps",
GST_DEBUG_PAD_NAME (realsrc), GST_DEBUG_PAD_NAME (realsink));
+ /* FIXME does this leak? */
GST_PAD_CAPS (GST_PAD (realsrc)) = NULL;
GST_PAD_CAPS (GST_PAD (realsink)) = NULL;
+ GST_RPAD_FILTER (realsrc) = NULL;
+ GST_RPAD_FILTER (realsink) = NULL;
}
else {
GST_INFO (GST_CAT_PADS, "start relink filtered %s:%s and %s:%s",
/* then filter this against the app filter */
if (filtercaps) {
- GstCaps *filtered_intersection = gst_caps_intersect (intersection,
- filtercaps);
+ GstCaps *filtered_intersection;
+
+ filtered_intersection = gst_caps_intersect (intersection,
+ filtercaps);
/* get rid of the old intersection here */
gst_caps_unref (intersection);
g_return_val_if_fail (GST_RPAD_PEER (realsrc) != NULL, FALSE);
g_return_val_if_fail (GST_RPAD_PEER (realsink) == realsrc, FALSE);
+ GST_INFO (GST_CAT_PADS, "perform negotiate for link %s:%s-%s:%s",
+ GST_DEBUG_PAD_NAME (realsrc), GST_DEBUG_PAD_NAME (realsink));
+
filter = GST_RPAD_APPFILTER (realsrc);
if (filter) {
GST_INFO (GST_CAT_PADS, "dumping filter for link %s:%s-%s:%s",
GST_DEBUG (GST_CAT_PROPERTIES, "set allowed caps of %s:%s",
GST_DEBUG_PAD_NAME (pad));
+
peer = GST_RPAD_PEER (pad);
if (peer)
return gst_pad_try_relink_filtered (pad, GST_PAD (peer),