gst_mini_object_unref (GST_MINI_OBJECT (action));
}
-static const gchar *
-gst_validate_action_get_string (GstValidateAction * action,
- const gchar * fieldname)
-{
- GstValidateScenario *scenario = gst_validate_action_get_scenario (action);
- const gchar *res, *val;
-
- res = val = gst_structure_get_string (action->structure, fieldname);
- if (val && scenario) {
- val = gst_structure_get_string (scenario->priv->vars, val);
-
- if (val)
- res = val;
- }
- g_clear_object (&scenario);
-
- return res;
-}
-
static GstValidateAction *
gst_validate_action_new (GstValidateScenario * scenario,
GstValidateActionType * action_type)
}
static gboolean
+_structure_set_variables (GQuark field_id, GValue * value,
+ GstValidateAction * action)
+{
+ GstValidateScenario *scenario;
+ const gchar *var_value;
+
+ if (!G_VALUE_HOLDS_STRING (value))
+ return TRUE;
+
+ scenario = gst_validate_action_get_scenario (action);
+ if (!scenario)
+ return TRUE;
+
+ var_value =
+ gst_structure_get_string (scenario->priv->vars,
+ g_value_get_string (value));
+ if (var_value) {
+ GST_INFO_OBJECT (action, "Setting variable %s to %s",
+ g_value_get_string (value), var_value);
+ g_value_set_string (value, var_value);
+ }
+
+ g_clear_object (&scenario);
+
+ return TRUE;
+}
+
+static gboolean
gst_validate_action_default_prepare_func (GstValidateAction * action)
{
gulong i;
time, NULL);
}
gst_object_unref (scenario);
+ gst_structure_filter_and_map_in_place (action->structure,
+ (GstStructureFilterMapFunc) _structure_set_variables, action);
return TRUE;
}
const gchar *target_sum;
GstValidateExecuteActionReturn res = GST_VALIDATE_EXECUTE_ACTION_OK;
- target_sum = gst_validate_action_get_string (action, "checksum");
+ target_sum = gst_structure_get_string (action->structure, "checksum");
g_object_get (sink, "last-sample", &sample, NULL);
if (sample == NULL) {
GST_VALIDATE_REPORT (scenario, SCENARIO_ACTION_EXECUTION_ERROR,