summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@gnome.org>2015-08-27 12:43:28 +0200
committerThibault Saunier <tsaunier@gnome.org>2015-10-24 07:23:05 +0200
commitd593192a397b020aa2aa133839f90d11fd6f470b (patch)
tree0596adf49af68b5847d4f1b38b6046682a8d532d
parent9402f9786dfba240bb584f481c980509b5dca568 (diff)
debug: Dump pad properties values
Currently we only show element properties values, we should also show pad properties values https://bugzilla.gnome.org/show_bug.cgi?id=754166
-rw-r--r--gst/gstdebugutils.c42
1 files changed, 30 insertions, 12 deletions
diff --git a/gst/gstdebugutils.c b/gst/gstdebugutils.c
index 2e3469ebc..b55d3aa6c 100644
--- a/gst/gstdebugutils.c
+++ b/gst/gstdebugutils.c
@@ -95,8 +95,8 @@ debug_dump_get_element_state (GstElement * element)
}
static gchar *
-debug_dump_get_element_params (GstElement * element,
- GstDebugGraphDetails details)
+debug_dump_get_object_params (GObject * object,
+ GstDebugGraphDetails details, const char *const *ignored_propnames)
{
gchar *param_name = NULL;
GParamSpec **properties, *property;
@@ -107,10 +107,12 @@ debug_dump_get_element_params (GstElement * element,
/* get paramspecs and show non-default properties */
properties =
- g_object_class_list_properties (G_OBJECT_CLASS (GST_ELEMENT_GET_CLASS
- (element)), &number_of_properties);
+ g_object_class_list_properties (G_OBJECT_GET_CLASS (object),
+ &number_of_properties);
if (properties) {
for (i = 0; i < number_of_properties; i++) {
+ gint j;
+ gboolean ignore = FALSE;
property = properties[i];
/* skip some properties */
@@ -119,8 +121,16 @@ debug_dump_get_element_params (GstElement * element,
if (!strcmp (property->name, "name"))
continue;
+ if (ignored_propnames)
+ for (j = 0; ignored_propnames[j]; j++)
+ if (!g_strcmp0 (ignored_propnames[j], property->name))
+ ignore = TRUE;
+
+ if (ignore)
+ continue;
+
g_value_init (&value, property->value_type);
- g_object_get_property (G_OBJECT (element), property->name, &value);
+ g_object_get_property (G_OBJECT (object), property->name, &value);
if (!(g_param_value_defaults (property, &value))) {
tmp = g_strdup_value_contents (&value);
value_str = g_strescape (tmp, NULL);
@@ -166,8 +176,12 @@ debug_dump_pad (GstPad * pad, const gchar * color_name,
{
GstPadTemplate *pad_templ;
GstPadPresence presence;
- gchar *pad_name;
+ gchar *pad_name, *param_name = NULL;
const gchar *style_name;
+ static const char *const ignore_propnames[] =
+ { "parent", "direction", "template",
+ "caps", NULL
+ };
const gchar *spc = MAKE_INDENT (indent);
pad_name = debug_dump_make_object_name (GST_OBJECT (pad));
@@ -183,6 +197,9 @@ debug_dump_pad (GstPad * pad, const gchar * color_name,
style_name = "filled,dashed";
}
}
+
+ param_name =
+ debug_dump_get_object_params (G_OBJECT (pad), details, ignore_propnames);
if (details & GST_DEBUG_GRAPH_SHOW_STATES) {
gchar pad_flags[4];
const gchar *activation_mode = "-><";
@@ -216,14 +233,15 @@ debug_dump_pad (GstPad * pad, const gchar * color_name,
pad_flags[3] = '\0';
g_string_append_printf (str,
- "%s %s_%s [color=black, fillcolor=\"%s\", label=\"%s\\n[%c][%s]%s\", height=\"0.2\", style=\"%s\"];\n",
+ "%s %s_%s [color=black, fillcolor=\"%s\", label=\"%s%s\\n[%c][%s]%s\", height=\"0.2\", style=\"%s\"];\n",
spc, element_name, pad_name, color_name, GST_OBJECT_NAME (pad),
+ (param_name ? param_name : ""),
activation_mode[pad->mode], pad_flags, task_mode, style_name);
} else {
g_string_append_printf (str,
- "%s %s_%s [color=black, fillcolor=\"%s\", label=\"%s\", height=\"0.2\", style=\"%s\"];\n",
+ "%s %s_%s [color=black, fillcolor=\"%s\", label=\"%s%s\", height=\"0.2\", style=\"%s\"];\n",
spc, element_name, pad_name, color_name, GST_OBJECT_NAME (pad),
- style_name);
+ (param_name ? param_name : ""), style_name);
}
g_free (pad_name);
@@ -555,8 +573,8 @@ debug_dump_element (GstBin * bin, GstDebugGraphDetails details,
state_name = debug_dump_get_element_state (GST_ELEMENT (element));
}
if (details & GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS) {
- param_name = debug_dump_get_element_params (GST_ELEMENT (element),
- details);
+ param_name = debug_dump_get_object_params (G_OBJECT (element),
+ details, NULL);
}
/* elements */
g_string_append_printf (str, "%ssubgraph cluster_%s {\n", spc,
@@ -682,7 +700,7 @@ debug_dump_header (GstBin * bin, GstDebugGraphDetails details, GString * str)
state_name = debug_dump_get_element_state (GST_ELEMENT (bin));
}
if (details & GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS) {
- param_name = debug_dump_get_element_params (GST_ELEMENT (bin), details);
+ param_name = debug_dump_get_object_params (G_OBJECT (bin), details, NULL);
}
/* write header */