static gboolean gst_validate_runner_should_monitor (GstValidateRunner * self, GstElement * element) { gint i; GstValidateMonitor *monitor; if (!GST_IS_PIPELINE (element)) { return FALSE; } if (self->priv->user_created) return FALSE; if (!self->priv->pipeline_names_strv) return TRUE; monitor = gst_validate_get_monitor (G_OBJECT (element)); if (monitor) { GST_ERROR_OBJECT (self, "Pipeline %" GST_PTR_FORMAT " is already" " monitored by %" GST_PTR_FORMAT " using runner: %" GST_PTR_FORMAT " NOT monitoring again.", element, monitor, gst_validate_reporter_get_runner (GST_VALIDATE_REPORTER (monitor))); } for (i = 0; self->priv->pipeline_names_strv[i]; i++) { if (g_pattern_match_simple (self->priv->pipeline_names_strv[i], GST_OBJECT_NAME (element))) return TRUE; } return FALSE; }
static void _get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { switch (property_id) { case PROP_RUNNER: g_value_set_object (value, gst_validate_reporter_get_runner (GST_VALIDATE_REPORTER (object))); break; default: break; } }
static void gst_validate_ssim_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { switch (property_id) { case PROP_RUNNER: /* we assume the runner is valid as long as this scenario is, * no ref taken */ g_value_set_object (value, gst_validate_reporter_get_runner (GST_VALIDATE_REPORTER (object))); break; default: break; } }
static void gst_validate_element_monitor_wrap_pad (GstValidateElementMonitor * monitor, GstPad * pad) { GstValidatePadMonitor *pad_monitor; GstValidateRunner *runner = gst_validate_reporter_get_runner (GST_VALIDATE_REPORTER (monitor)); GST_DEBUG_OBJECT (monitor, "Wrapping pad %s:%s", GST_DEBUG_PAD_NAME (pad)); pad_monitor = GST_VALIDATE_PAD_MONITOR (gst_validate_monitor_factory_create (GST_OBJECT (pad), runner, GST_VALIDATE_MONITOR (monitor))); g_return_if_fail (pad_monitor != NULL); GST_VALIDATE_MONITOR_LOCK (monitor); monitor->pad_monitors = g_list_prepend (monitor->pad_monitors, pad_monitor); GST_VALIDATE_MONITOR_UNLOCK (monitor); gst_object_unref (runner); }
static void _determine_reporting_level (GstValidateMonitor * monitor) { GstValidateRunner *runner; GstObject *object, *parent; gchar *object_name; GstValidateReportingDetails level = GST_VALIDATE_SHOW_UNKNOWN; object = gst_validate_monitor_get_target (monitor); runner = gst_validate_reporter_get_runner (GST_VALIDATE_REPORTER (monitor)); do { if (!GST_IS_OBJECT (object)) break; /* Let's allow for singling out pads */ if (GST_IS_PAD (object)) { level = _get_report_level_for_pad (runner, object); if (level != GST_VALIDATE_SHOW_UNKNOWN) break; } object_name = gst_object_get_name (object); level = gst_validate_runner_get_reporting_level_for_name (runner, object_name); parent = gst_object_get_parent (object); gst_object_unref (object); object = parent; g_free (object_name); } while (object && level == GST_VALIDATE_SHOW_UNKNOWN); if (object) gst_object_unref (object); if (runner) gst_object_unref (runner); monitor->level = level; }