static gboolean gst_aspect_ratio_crop_set_caps (GstAspectRatioCrop * aspect_ratio_crop, GstCaps * caps) { GstPad *peer_pad; GstStructure *structure; gboolean ret; g_mutex_lock (&aspect_ratio_crop->crop_lock); structure = gst_caps_get_structure (caps, 0); gst_aspect_ratio_transform_structure (aspect_ratio_crop, structure, NULL, TRUE); peer_pad = gst_element_get_static_pad (GST_ELEMENT (aspect_ratio_crop->videocrop), "sink"); ret = gst_pad_set_caps (peer_pad, caps); gst_object_unref (peer_pad); g_mutex_unlock (&aspect_ratio_crop->crop_lock); return ret; }
static GstCaps * gst_aspect_ratio_crop_transform_caps (GstAspectRatioCrop * aspect_ratio_crop, GstCaps * caps) { GstCaps *transform; gint size, i; transform = gst_caps_new_empty (); size = gst_caps_get_size (caps); for (i = 0; i < size; i++) { GstStructure *s; GstStructure *trans_s; s = gst_caps_get_structure (caps, i); gst_aspect_ratio_transform_structure (aspect_ratio_crop, s, &trans_s, FALSE); gst_caps_append_structure (transform, trans_s); } return transform; }