basetransform: If the filtered peer caps are already empty error out early

This commit is contained in:
Sebastian Dröge 2011-12-19 14:27:47 +01:00
parent 4d24d4fe2b
commit 2f93cee988

View file

@ -1006,29 +1006,35 @@ gst_base_transform_find_transform (GstBaseTransform * trans, GstPad * pad,
peercaps = gst_pad_query_caps (otherpeer, othercaps); peercaps = gst_pad_query_caps (otherpeer, othercaps);
GST_DEBUG_OBJECT (trans, "Resulted in %" GST_PTR_FORMAT, peercaps); GST_DEBUG_OBJECT (trans, "Resulted in %" GST_PTR_FORMAT, peercaps);
if (!gst_caps_is_empty (peercaps)) {
templ_caps = gst_pad_get_pad_template_caps (otherpad);
templ_caps = gst_pad_get_pad_template_caps (otherpad); GST_DEBUG_OBJECT (trans,
"Intersecting with template caps %" GST_PTR_FORMAT, templ_caps);
GST_DEBUG_OBJECT (trans, intersection =
"Intersecting with template caps %" GST_PTR_FORMAT, templ_caps); gst_caps_intersect_full (peercaps, templ_caps,
GST_CAPS_INTERSECT_FIRST);
GST_DEBUG_OBJECT (trans, "Intersection: %" GST_PTR_FORMAT,
intersection);
gst_caps_unref (peercaps);
gst_caps_unref (templ_caps);
peercaps = intersection;
intersection = GST_DEBUG_OBJECT (trans,
gst_caps_intersect_full (peercaps, templ_caps, "Intersecting with transformed caps %" GST_PTR_FORMAT, othercaps);
GST_CAPS_INTERSECT_FIRST); intersection =
GST_DEBUG_OBJECT (trans, "Intersection: %" GST_PTR_FORMAT, intersection); gst_caps_intersect_full (peercaps, othercaps,
gst_caps_unref (peercaps); GST_CAPS_INTERSECT_FIRST);
gst_caps_unref (templ_caps); GST_DEBUG_OBJECT (trans, "Intersection: %" GST_PTR_FORMAT,
peercaps = intersection; intersection);
gst_caps_unref (peercaps);
gst_caps_unref (othercaps);
othercaps = intersection;
} else {
othercaps = peercaps;
}
GST_DEBUG_OBJECT (trans,
"Intersecting with transformed caps %" GST_PTR_FORMAT, othercaps);
intersection =
gst_caps_intersect_full (peercaps, othercaps,
GST_CAPS_INTERSECT_FIRST);
GST_DEBUG_OBJECT (trans, "Intersection: %" GST_PTR_FORMAT, intersection);
gst_caps_unref (peercaps);
gst_caps_unref (othercaps);
othercaps = intersection;
is_fixed = gst_caps_is_fixed (othercaps); is_fixed = gst_caps_is_fixed (othercaps);
} else { } else {
GST_DEBUG_OBJECT (trans, "no peer, doing passthrough"); GST_DEBUG_OBJECT (trans, "no peer, doing passthrough");