/* copies the given caps */ static GstCaps * gst_yuv_to_rgb_caps_remove_format_info (GstCaps * caps) { GstStructure *st; gint i, n; GstCaps *res; res = gst_caps_new_empty (); n = gst_caps_get_size (caps); for (i = 0; i < n; i++) { st = gst_caps_get_structure (caps, i); /* If this is already expressed by the existing caps * skip this structure */ if (i > 0 && gst_caps_is_subset_structure (res, st)) continue; st = gst_structure_copy (st); gst_structure_remove_fields (st, "format", "colorimetry", "chroma-site", NULL); gst_caps_append_structure (res, st); } return res; }
static GstCaps* gst_imx_blitter_video_transform_transform_caps(GstBaseTransform *transform, G_GNUC_UNUSED GstPadDirection direction, GstCaps *caps, GstCaps *filter) { GstCaps *tmpcaps1, *tmpcaps2, *result; GstStructure *structure; gint i, n; tmpcaps1 = gst_caps_new_empty(); n = gst_caps_get_size(caps); for (i = 0; i < n; i++) { structure = gst_caps_get_structure(caps, i); /* If this is already expressed by the existing caps * skip this structure */ if ((i > 0) && gst_caps_is_subset_structure(tmpcaps1, structure)) continue; /* make copy */ structure = gst_structure_copy(structure); gst_structure_set( structure, "width", GST_TYPE_INT_RANGE, 64, G_MAXINT, "height", GST_TYPE_INT_RANGE, 64, G_MAXINT, NULL ); /* colorimetry is not supported by the videotransform element */ gst_structure_remove_fields(structure, "format", "colorimetry", "chroma-site", NULL); /* if pixel aspect ratio, make a range of it */ if (gst_structure_has_field(structure, "pixel-aspect-ratio")) { gst_structure_set( structure, "pixel-aspect-ratio", GST_TYPE_FRACTION_RANGE, 1, G_MAXINT, G_MAXINT, 1, NULL ); } gst_caps_append_structure(tmpcaps1, structure); } /* filter the resulting caps if necessary */ if (filter != NULL) { tmpcaps2 = gst_caps_intersect_full(filter, tmpcaps1, GST_CAPS_INTERSECT_FIRST); gst_caps_unref(tmpcaps1); tmpcaps1 = tmpcaps2; } result = tmpcaps1; GST_DEBUG_OBJECT(transform, "transformed %" GST_PTR_FORMAT " into %" GST_PTR_FORMAT, (gpointer)caps, (gpointer)result); return result; }