caps: Add gst_caps_is_subset_structure()

API: gst_caps_is_subset_structure()

This allows to check if a structure is a subset of given
caps without allocating a new caps instance for it.
This commit is contained in:
Sebastian Dröge 2011-05-27 13:55:31 +02:00
parent da58834884
commit 57df188757
4 changed files with 42 additions and 0 deletions

View file

@ -323,6 +323,7 @@ gst_caps_is_equal
gst_caps_is_equal_fixed
gst_caps_is_always_compatible
gst_caps_is_subset
gst_caps_is_subset_structure
gst_caps_can_intersect
gst_caps_intersect
gst_caps_intersect_full

View file

@ -1106,6 +1106,44 @@ gst_caps_is_subset (const GstCaps * subset, const GstCaps * superset)
return ret;
}
/**
* gst_caps_is_subset_structure:
* @caps: a #GstCaps
* @structure: a potential #GstStructure subset of @caps
*
* Checks if @structure is a subset of @caps. See gst_caps_is_subset()
* for more information.
*
* Returns: %TRUE if @structure is a subset of @caps
*
* Since: 0.10.35
*/
gboolean
gst_caps_is_subset_structure (const GstCaps * caps,
const GstStructure * structure)
{
GstStructure *s;
gint i;
g_return_val_if_fail (caps != NULL, FALSE);
g_return_val_if_fail (structure != NULL, FALSE);
if (CAPS_IS_ANY (caps))
return TRUE;
if (CAPS_IS_EMPTY (caps))
return FALSE;
for (i = caps->structs->len - 1; i >= 0; i--) {
s = gst_caps_get_structure_unchecked (caps, i);
if (gst_structure_is_subset (structure, s)) {
/* If we found a superset return TRUE */
return TRUE;
}
}
return FALSE;
}
/**
* gst_caps_is_equal:
* @caps1: a #GstCaps

View file

@ -258,6 +258,8 @@ gboolean gst_caps_is_always_compatible (const GstCaps *caps1,
const GstCaps *caps2);
gboolean gst_caps_is_subset (const GstCaps *subset,
const GstCaps *superset);
gboolean gst_caps_is_subset_structure (const GstCaps *caps,
const GstStructure *structure);
gboolean gst_caps_is_equal (const GstCaps *caps1,
const GstCaps *caps2);
gboolean gst_caps_is_equal_fixed (const GstCaps *caps1,

View file

@ -172,6 +172,7 @@ EXPORTS
gst_caps_is_equal_fixed
gst_caps_is_fixed
gst_caps_is_subset
gst_caps_is_subset_structure
gst_caps_load_thyself
gst_caps_make_writable
gst_caps_merge