}
static gboolean
-print_factory_details_meta_data (GQuark field_id, const GValue * value,
+print_factory_details_metadata (GQuark field_id, const GValue * value,
gpointer user_data)
{
gchar *val = g_strdup_value_contents (value);
char s[20];
n_print ("Factory Details:\n");
- n_print (" Long name:\t%s\n", factory->details.longname);
- n_print (" Class:\t%s\n", factory->details.klass);
- n_print (" Description:\t%s\n", factory->details.description);
- n_print (" Author(s):\t%s\n", factory->details.author);
n_print (" Rank:\t\t%s (%d)\n",
get_rank_name (s, GST_PLUGIN_FEATURE (factory)->rank),
GST_PLUGIN_FEATURE (factory)->rank);
- if (factory->meta_data != NULL) {
- gst_structure_foreach ((GstStructure *) factory->meta_data,
- print_factory_details_meta_data, NULL);
- }
+ gst_structure_foreach ((GstStructure *) factory->metadata,
+ print_factory_details_metadata, NULL);
n_print ("\n");
}
--i;
if (vals[i].value != 0 && (flags_left & vals[i].value) == vals[i].value) {
if (s->len > 0)
- g_string_append (s, " | ");
+ g_string_append_c (s, '+');
g_string_append (s, vals[i].value_nick);
flags_left -= vals[i].value;
if (flags_left == 0)
gst_value_get_fraction_numerator (&value),
gst_value_get_fraction_denominator (&value));
- } else if (GST_IS_PARAM_SPEC_MINI_OBJECT (param)) {
- n_print ("%-23.23s MiniObject of type \"%s\"", "",
- g_type_name (param->value_type));
} else {
n_print ("%-23.23s Unknown type %ld \"%s\"", "", param->value_type,
g_type_name (param->value_type));
static void
print_implementation_info (GstElement * element)
{
- GstObjectClass *gstobject_class;
GstElementClass *gstelement_class;
- gstobject_class = GST_OBJECT_CLASS (G_OBJECT_GET_CLASS (element));
gstelement_class = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS (element));
n_print ("\n");
pads = element->pads;
while (pads) {
gchar *name;
+ GstCaps *caps;
pad = GST_PAD (pads->data);
pads = g_list_next (pads);
n_print (" Has custom iterintlinkfunc(): %s\n",
GST_DEBUG_FUNCPTR_NAME (pad->iterintlinkfunc));
- if (pad->bufferallocfunc)
- n_print (" Has bufferallocfunc(): %s\n",
- GST_DEBUG_FUNCPTR_NAME (pad->bufferallocfunc));
-
if (pad->getcapsfunc)
n_print (" Has getcapsfunc(): %s\n",
GST_DEBUG_FUNCPTR_NAME (pad->getcapsfunc));
- if (pad->setcapsfunc)
- n_print (" Has setcapsfunc(): %s\n",
- GST_DEBUG_FUNCPTR_NAME (pad->setcapsfunc));
/* gst_pad_acceptcaps_default is static :/ */
if (pad->acceptcapsfunc)
n_print (" Has acceptcapsfunc(): %s\n",
if (pad->padtemplate)
n_print (" Pad Template: '%s'\n", pad->padtemplate->name_template);
- if (pad->caps) {
+ caps = gst_pad_get_current_caps (pad);
+ if (caps) {
n_print (" Capabilities:\n");
- print_caps (pad->caps, " ");
+ print_caps (caps, " ");
+ gst_caps_unref (caps);
}
}
}
-#if 0
-static gint
-compare_signal_names (GSignalQuery * a, GSignalQuery * b)
+static gboolean
+has_sometimes_template (GstElement * element)
{
- return strcmp (a->signal_name, b->signal_name);
+ GstElementClass *klass = GST_ELEMENT_GET_CLASS (element);
+ GList *l;
+
+ for (l = klass->padtemplates; l != NULL; l = l->next) {
+ if (GST_PAD_TEMPLATE (l->data)->presence == GST_PAD_SOMETIMES)
+ return TRUE;
+ }
+
+ return FALSE;
}
-#endif
static void
print_signal_info (GstElement * element)
for (k = 0; k < 2; k++) {
found_signals = NULL;
+
+ /* For elements that have sometimes pads, also list a few useful GstElement
+ * signals. Put these first, so element-specific ones come later. */
+ if (k == 0 && has_sometimes_template (element)) {
+ query = g_new0 (GSignalQuery, 1);
+ g_signal_query (g_signal_lookup ("pad-added", GST_TYPE_ELEMENT), query);
+ found_signals = g_slist_append (found_signals, query);
+ query = g_new0 (GSignalQuery, 1);
+ g_signal_query (g_signal_lookup ("pad-removed", GST_TYPE_ELEMENT), query);
+ found_signals = g_slist_append (found_signals, query);
+ query = g_new0 (GSignalQuery, 1);
+ g_signal_query (g_signal_lookup ("no-more-pads", GST_TYPE_ELEMENT),
+ query);
+ found_signals = g_slist_append (found_signals, query);
+ }
+
for (type = G_OBJECT_TYPE (element); type; type = g_type_parent (type)) {
if (type == GST_TYPE_ELEMENT || type == GST_TYPE_OBJECT)
break;
print_element_info (factory, TRUE);
else
g_print ("%s: %s: %s\n", plugin->desc.name,
- GST_PLUGIN_FEATURE_NAME (factory),
+ GST_OBJECT_NAME (factory),
gst_element_factory_get_longname (factory));
} else if (GST_IS_INDEX_FACTORY (feature)) {
GstIndexFactory *factory;
factory = GST_INDEX_FACTORY (feature);
if (!print_all)
g_print ("%s: %s: %s\n", plugin->desc.name,
- GST_PLUGIN_FEATURE_NAME (factory), factory->longdesc);
+ GST_OBJECT_NAME (factory), factory->longdesc);
} else if (GST_IS_TYPE_FIND_FACTORY (feature)) {
GstTypeFindFactory *factory;
} else {
if (!print_all)
n_print ("%s: %s (%s)\n", plugin->desc.name,
- GST_PLUGIN_FEATURE_NAME (feature),
- g_type_name (G_OBJECT_TYPE (feature)));
+ GST_OBJECT_NAME (feature), g_type_name (G_OBJECT_TYPE (feature)));
}
next:
static void
print_plugin_features (GstPlugin * plugin)
{
- GList *features;
+ GList *features, *origlist;
gint num_features = 0;
gint num_elements = 0;
gint num_typefinders = 0;
gint num_indexes = 0;
gint num_other = 0;
- features =
+ origlist = features =
gst_registry_get_feature_list_by_plugin (gst_registry_get_default (),
plugin->desc.name);
GstElementFactory *factory;
factory = GST_ELEMENT_FACTORY (feature);
- n_print (" %s: %s\n", GST_PLUGIN_FEATURE_NAME (factory),
+ n_print (" %s: %s\n", GST_OBJECT_NAME (factory),
gst_element_factory_get_longname (factory));
num_elements++;
} else if (GST_IS_INDEX_FACTORY (feature)) {
num_features++;
features = g_list_next (features);
}
+
+ gst_plugin_feature_list_free (origlist);
+
n_print ("\n");
n_print (" %d features:\n", num_features);
if (num_elements > 0)
}
if (print_names)
- _name = g_strdup_printf ("%s: ", GST_PLUGIN_FEATURE (factory)->name);
+ _name = g_strdup_printf ("%s: ", GST_OBJECT_NAME (factory));
else
_name = NULL;
if (caps == NULL) {
g_printerr ("Couldn't find static pad template for %s '%s'\n",
- type_name, GST_PLUGIN_FEATURE_NAME (factory));
+ type_name, GST_OBJECT_NAME (factory));
return;
}