コード例 #1
0
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"
}
コード例 #2
0
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;
  }
}