mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
validate-runner / monitor: Let the user single out pads.
That's some pretty specific code but it should be helpful. The following syntax can be used : element-name::pad-name. + Free return of gst_object_get_name.
This commit is contained in:
parent
b21bb1ff34
commit
5cb60060dc
2 changed files with 47 additions and 3 deletions
|
@ -188,23 +188,48 @@ gst_validate_monitor_do_setup (GstValidateMonitor * monitor)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GstValidateReportingLevel
|
||||||
|
_get_report_level_for_pad (GstValidateRunner *runner, GstObject *pad)
|
||||||
|
{
|
||||||
|
GstObject *parent;
|
||||||
|
gchar *name;
|
||||||
|
GstValidateReportingLevel level = GST_VALIDATE_REPORTING_LEVEL_UNKNOWN;
|
||||||
|
|
||||||
|
parent = gst_object_get_parent (pad);
|
||||||
|
|
||||||
|
name = g_strdup_printf ("%s__%s", GST_DEBUG_PAD_NAME (pad));
|
||||||
|
level = gst_validate_runner_get_reporting_level_for_name (runner, name);
|
||||||
|
|
||||||
|
g_free (name);
|
||||||
|
gst_object_unref (parent);
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_determine_reporting_level (GstValidateMonitor *monitor)
|
_determine_reporting_level (GstValidateMonitor *monitor)
|
||||||
{
|
{
|
||||||
GstValidateRunner *runner;
|
GstValidateRunner *runner;
|
||||||
GstObject *object, *parent;
|
GstObject *object, *parent;
|
||||||
const gchar *object_name;
|
gchar *object_name;
|
||||||
GstValidateReportingLevel level = GST_VALIDATE_REPORTING_LEVEL_UNKNOWN;
|
GstValidateReportingLevel level = GST_VALIDATE_REPORTING_LEVEL_UNKNOWN;
|
||||||
|
|
||||||
object = gst_object_ref(monitor->target);
|
object = gst_object_ref(monitor->target);
|
||||||
runner = gst_validate_reporter_get_runner (GST_VALIDATE_REPORTER (monitor));
|
runner = gst_validate_reporter_get_runner (GST_VALIDATE_REPORTER (monitor));
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
/* Let's allow for singling out pads */
|
||||||
|
if (GST_IS_PAD (object)) {
|
||||||
|
level = _get_report_level_for_pad (runner, object);
|
||||||
|
if (level != GST_VALIDATE_REPORTING_LEVEL_UNKNOWN)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
object_name = gst_object_get_name (object);
|
object_name = gst_object_get_name (object);
|
||||||
level = gst_validate_runner_get_reporting_level_for_name (runner, object_name);
|
level = gst_validate_runner_get_reporting_level_for_name (runner, object_name);
|
||||||
parent = gst_object_get_parent (object);
|
parent = gst_object_get_parent (object);
|
||||||
gst_object_unref (object);
|
gst_object_unref (object);
|
||||||
object = parent;
|
object = parent;
|
||||||
|
g_free (object_name);
|
||||||
} while (object && level == GST_VALIDATE_REPORTING_LEVEL_UNKNOWN);
|
} while (object && level == GST_VALIDATE_REPORTING_LEVEL_UNKNOWN);
|
||||||
|
|
||||||
if (object)
|
if (object)
|
||||||
|
|
|
@ -154,8 +154,26 @@ _set_reporting_level_for_name (GstValidateRunner * runner,
|
||||||
pattern_level->pattern = pattern_spec;
|
pattern_level->pattern = pattern_spec;
|
||||||
pattern_level->level = level;
|
pattern_level->level = level;
|
||||||
|
|
||||||
runner->priv->report_pattern_levels =
|
/* Allow the user to single out a pad with the "element-name__pad-name" syntax
|
||||||
g_list_append (runner->priv->report_pattern_levels, pattern_level);
|
*/
|
||||||
|
if (g_strrstr (pattern, "__"))
|
||||||
|
runner->priv->report_pattern_levels =
|
||||||
|
g_list_prepend (runner->priv->report_pattern_levels, pattern_level);
|
||||||
|
else
|
||||||
|
runner->priv->report_pattern_levels =
|
||||||
|
g_list_append (runner->priv->report_pattern_levels, pattern_level);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_replace_double_colons (gchar *word)
|
||||||
|
{
|
||||||
|
while (word) {
|
||||||
|
word = strstr (word, "::");
|
||||||
|
if (word) {
|
||||||
|
word[0] = '_';
|
||||||
|
word[1] = '_';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -171,6 +189,7 @@ _set_report_levels_from_string (GstValidateRunner * self, const gchar * list)
|
||||||
split = g_strsplit (list, ",", 0);
|
split = g_strsplit (list, ",", 0);
|
||||||
|
|
||||||
for (walk = split; *walk; walk++) {
|
for (walk = split; *walk; walk++) {
|
||||||
|
_replace_double_colons (*walk);
|
||||||
if (strchr (*walk, ':')) {
|
if (strchr (*walk, ':')) {
|
||||||
gchar **values = g_strsplit (*walk, ":", 2);
|
gchar **values = g_strsplit (*walk, ":", 2);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue