static void
gst_validate_pipeline_monitor_create_scenarios (GstValidateBinMonitor * monitor)
{
  /* scenarios currently only make sense for pipelines */
  const gchar *scenario_name;

  if ((scenario_name = g_getenv ("GST_VALIDATE_SCENARIO"))) {
    gchar **scenario_v = g_strsplit (scenario_name, "->", 2);

    if (scenario_v[1] && GST_VALIDATE_MONITOR_GET_OBJECT (monitor)) {
      if (!g_pattern_match_simple (scenario_v[1],
              GST_OBJECT_NAME (GST_VALIDATE_MONITOR_GET_OBJECT (monitor)))) {
        GST_INFO_OBJECT (monitor, "Not attaching to pipeline %" GST_PTR_FORMAT
            " as not matching pattern %s",
            GST_VALIDATE_MONITOR_GET_OBJECT (monitor), scenario_v[1]);

        g_strfreev (scenario_v);
        return;
      }
    }
    monitor->scenario =
        gst_validate_scenario_factory_create (GST_VALIDATE_MONITOR_GET_RUNNER
        (monitor),
        GST_ELEMENT_CAST (GST_VALIDATE_MONITOR_GET_OBJECT (monitor)),
        scenario_v[0]);
    g_strfreev (scenario_v);
  }
}
static void
gst_validate_bin_monitor_wrap_element (GstValidateBinMonitor * monitor,
    GstElement * element)
{
  GstValidateElementMonitor *element_monitor;
  GST_DEBUG_OBJECT (monitor, "Wrapping element %s", GST_ELEMENT_NAME (element));

  element_monitor =
      GST_VALIDATE_ELEMENT_MONITOR_CAST (gst_validate_monitor_factory_create
      (GST_OBJECT_CAST (element), GST_VALIDATE_MONITOR_GET_RUNNER (monitor),
          GST_VALIDATE_MONITOR_CAST (monitor)));
  g_return_if_fail (element_monitor != NULL);

  GST_VALIDATE_MONITOR_LOCK (monitor);
  monitor->element_monitors = g_list_prepend (monitor->element_monitors,
      element_monitor);
  GST_VALIDATE_MONITOR_UNLOCK (monitor);
}