mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-13 03:24:14 +00:00
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:
parent
da58834884
commit
57df188757
4 changed files with 42 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue