camerabin: don't leak sink_caps if they would be any-caps

This commit is contained in:
Stefan Kost 2009-06-26 18:32:40 +03:00
parent a5e9a5eebc
commit c9208657b1

View file

@ -2210,30 +2210,32 @@ gst_camerabin_update_aspect_filter (GstCameraBin * camera, GstCaps * new_caps)
if (sink_pad) { if (sink_pad) {
sink_caps = gst_pad_get_caps (sink_pad); sink_caps = gst_pad_get_caps (sink_pad);
gst_object_unref (sink_pad); gst_object_unref (sink_pad);
if (sink_caps && !gst_caps_is_any (sink_caps)) { if (sink_caps) {
GST_DEBUG_OBJECT (camera, "sink element caps %" GST_PTR_FORMAT, if (!gst_caps_is_any (sink_caps)) {
sink_caps); GST_DEBUG_OBJECT (camera, "sink element caps %" GST_PTR_FORMAT,
/* Get maximum resolution that view finder sink accepts */ sink_caps);
st = gst_caps_get_structure (sink_caps, 0); /* Get maximum resolution that view finder sink accepts */
if (gst_structure_has_field_typed (st, "width", GST_TYPE_INT_RANGE)) { st = gst_caps_get_structure (sink_caps, 0);
range = gst_structure_get_value (st, "width"); if (gst_structure_has_field_typed (st, "width", GST_TYPE_INT_RANGE)) {
sink_w = gst_value_get_int_range_max (range); range = gst_structure_get_value (st, "width");
} sink_w = gst_value_get_int_range_max (range);
if (gst_structure_has_field_typed (st, "height", GST_TYPE_INT_RANGE)) { }
range = gst_structure_get_value (st, "height"); if (gst_structure_has_field_typed (st, "height", GST_TYPE_INT_RANGE)) {
sink_h = gst_value_get_int_range_max (range); range = gst_structure_get_value (st, "height");
sink_h = gst_value_get_int_range_max (range);
}
GST_DEBUG_OBJECT (camera, "sink element accepts max %dx%d", sink_w,
sink_h);
/* Get incoming frames' resolution */
if (sink_h && sink_w) {
st = gst_caps_get_structure (new_caps, 0);
gst_structure_get_int (st, "width", &in_w);
gst_structure_get_int (st, "height", &in_h);
GST_DEBUG_OBJECT (camera, "new caps with %dx%d", in_w, in_h);
}
} }
gst_caps_unref (sink_caps); gst_caps_unref (sink_caps);
GST_DEBUG_OBJECT (camera, "sink element accepts max %dx%d", sink_w,
sink_h);
/* Get incoming frames' resolution */
if (sink_h && sink_w) {
st = gst_caps_get_structure (new_caps, 0);
gst_structure_get_int (st, "width", &in_w);
gst_structure_get_int (st, "height", &in_h);
GST_DEBUG_OBJECT (camera, "new caps with %dx%d", in_w, in_h);
}
} }
} }