* handle or produce at runtime.
*
* A #GstCaps can be constructed with the following code fragment:
- * |[
+ * |[<!-- language="C" -->
* GstCaps *caps = gst_caps_new_simple ("video/x-raw",
* "format", G_TYPE_STRING, "I420",
* "framerate", GST_TYPE_FRACTION, 25, 1,
G_TYPE_STRING, gst_caps_transform_to_string);
}
+void
+_priv_gst_caps_cleanup (void)
+{
+ gst_caps_unref (_gst_caps_any);
+ _gst_caps_any = NULL;
+ gst_caps_unref (_gst_caps_none);
+ _gst_caps_none = NULL;
+}
+
GstCapsFeatures *
__gst_caps_get_features_unchecked (const GstCaps * caps, guint idx)
{
*caps = gst_caps_from_string (string);
+ /* Caps generated from static caps are usually leaked */
+ GST_MINI_OBJECT_FLAG_SET (*caps, GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED);
+
/* convert to string */
if (G_UNLIKELY (*caps == NULL))
g_critical ("Could not convert static caps \"%s\"", string);
* Discard all but the first structure from @caps. Useful when
* fixating.
*
+ * This function takes ownership of @caps and will call gst_caps_make_writable()
+ * on it if necessary, so you must not use @caps afterwards unless you keep an
+ * additional reference to it with gst_caps_ref().
+ *
* Returns: (transfer full): truncated caps
*/
GstCaps *
len1 = GST_CAPS_LEN (caps1);
len2 = GST_CAPS_LEN (caps2);
for (i = 0; i < len1 + len2 - 1; i++) {
- /* superset index goes from 0 to sgst_caps_structure_intersectuperset->structs->len-1 */
+ /* superset index goes from 0 to superset->structs->len-1 */
j = MIN (i, len1 - 1);
/* subset index stays 0 until i reaches superset->structs->len, then it
* counts up from 1 to subset->structs->len - 1 */
* Unlike @gst_caps_intersect, the returned caps will be ordered in a similar
* fashion as @caps1.
*
- * Returns: the new #GstCaps
+ * Returns: (transfer full): the new #GstCaps
*/
static GstCaps *
gst_caps_intersect_first (GstCaps * caps1, GstCaps * caps2)
* to both @caps1 and @caps2, the order is defined by the #GstCapsIntersectMode
* used.
*
- * Returns: the new #GstCaps
+ * Returns: (transfer full): the new #GstCaps
*/
GstCaps *
gst_caps_intersect_full (GstCaps * caps1, GstCaps * caps2,
* Creates a new #GstCaps that contains all the formats that are common
* to both @caps1 and @caps2. Defaults to %GST_CAPS_INTERSECT_ZIG_ZAG mode.
*
- * Returns: the new #GstCaps
+ * Returns: (transfer full): the new #GstCaps
*/
GstCaps *
gst_caps_intersect (GstCaps * caps1, GstCaps * caps2)
* <note>This function does not work reliably if optional properties for caps
* are included on one caps and omitted on the other.</note>
*
- * Returns: the resulting caps
+ * Returns: (transfer full): the resulting caps
*/
GstCaps *
gst_caps_subtract (GstCaps * minuend, GstCaps * subtrahend)
* @caps, but contains no lists. Each list is expanded into separate
* @GstStructures.
*
- * This function takes ownership of @caps.
+ * This function takes ownership of @caps and will call gst_caps_make_writable()
+ * on it so you must not use @caps afterwards unless you keep an additional
+ * reference to it with gst_caps_ref().
*
* Returns: (transfer full): the normalized #GstCaps
*/
* identical are merged. Component structures that have values that can be
* merged are also merged.
*
+ * This function takes ownership of @caps and will call gst_caps_make_writable()
+ * on it if necessary, so you must not use @caps afterwards unless you keep an
+ * additional reference to it with gst_caps_ref().
+ *
* This method does not preserve the original order of @caps.
*
- * Returns: The simplified caps.
+ * Returns: (transfer full): The simplified caps.
*/
GstCaps *
gst_caps_simplify (GstCaps * caps)
* values. First the caps will be truncated and then the first structure will be
* fixated with gst_structure_fixate().
*
+ * This function takes ownership of @caps and will call gst_caps_make_writable()
+ * on it so you must not use @caps afterwards unless you keep an additional
+ * reference to it with gst_caps_ref().
+ *
* Returns: (transfer full): the fixated caps
*/
GstCaps *
* can be converted back to a #GstCaps by gst_caps_from_string().
*
* For debugging purposes its easier to do something like this:
- * |[
+ * |[<!-- language="C" -->
* GST_LOG ("caps are %" GST_PTR_FORMAT, caps);
* ]|
* This prints the caps in human readable form.