GstElement* rygel_gst_utils_get_rtp_depayloader (GstCaps* caps) { #line 172 "rygel-gst-utils.c" GstElement* result = NULL; GstRegistry* registry; GList* features; #line 50 "rygel-gst-utils.vala" g_return_val_if_fail (caps != NULL, NULL); #line 51 "rygel-gst-utils.vala" if (!rygel_gst_utils_need_rtp_depayloader (caps)) { #line 180 "rygel-gst-utils.c" result = NULL; #line 52 "rygel-gst-utils.vala" return result; #line 184 "rygel-gst-utils.c" } #line 55 "rygel-gst-utils.vala" registry = gst_registry_get_default (); #line 56 "rygel-gst-utils.vala" features = gst_registry_feature_filter (registry, _rygel_gst_utils_rtp_depay_filter_gst_plugin_feature_filter, FALSE, NULL); #line 190 "rygel-gst-utils.c" result = rygel_gst_utils_get_best_depay (features, caps); __g_list_free_gst_object_unref0 (features); #line 58 "rygel-gst-utils.vala" return result; #line 195 "rygel-gst-utils.c" }
GstElement * rygel_gst_utils_get_rtp_depayloader (GstCaps *caps) { GList *features; GList *filtered; const gchar *feature_name; if (!rygel_gst_utils_need_rtp_depayloader (caps)) { return NULL; } features = gst_element_factory_list_get_elements ((GstElementFactoryListType) GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER, GST_RANK_NONE); filtered = gst_element_factory_list_filter (features, caps, GST_PAD_SINK, FALSE); gst_plugin_feature_list_free (features); feature_name = gst_plugin_feature_get_name (GST_PLUGIN_FEATURE (filtered->data)); /* If most "fitting" depayloader was rtpdepay skip it because it is * just some kind of proxy. */ if (g_strcmp0 (feature_name, "rtpdepay") == 0) { if (filtered->next) { GstElement* element = gst_element_factory_create (GST_ELEMENT_FACTORY (filtered->next->data), NULL); if (element) { gst_object_ref_sink (element); } gst_plugin_feature_list_free (filtered); return element; } return NULL; } else { GstElement* element = gst_element_factory_create (GST_ELEMENT_FACTORY (filtered->data), NULL); if (element) { gst_object_ref_sink (element); } gst_plugin_feature_list_free (filtered); return element; } }