* GST_MESSAGE_STREAMS_SELECTED to be completed. */
GstValidateAction *pending_switch_track;
+ GstStructure *constants;
+
GWeakRef ref_pipeline;
};
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->constants, val);
+
+ if (val)
+ res = val;
+ }
+ g_clear_object (&scenario);
+
+ return res;
+}
+
static GstValidateAction *
gst_validate_action_new (GstValidateScenario * scenario,
GstValidateActionType * action_type)
return FALSE;
}
+static gboolean
+_set_const_func (GQuark field_id, const GValue * value, GstStructure * consts)
+{
+ gst_structure_id_set_value (consts, field_id, value);
+
+ return TRUE;
+}
+
+static GstValidateExecuteActionReturn
+_execute_add_consts (GstValidateScenario * scenario, GstValidateAction * action)
+{
+ gst_structure_foreach (action->structure,
+ (GstStructureForeachFunc) _set_const_func, scenario->priv->constants);
+
+ return GST_VALIDATE_EXECUTE_ACTION_OK;
+}
+
static GstValidateExecuteActionReturn
_execute_set_state (GstValidateScenario * scenario, GstValidateAction * action)
{
priv->segment_start = 0;
priv->segment_stop = GST_CLOCK_TIME_NONE;
priv->action_execution_interval = 10;
+ priv->constants = gst_structure_new_empty ("constants");
g_weak_ref_init (&scenario->priv->ref_pipeline, NULL);
g_mutex_init (&priv->lock);
g_list_free_full (priv->needs_parsing,
(GDestroyNotify) gst_mini_object_unref);
g_free (priv->pipeline_name);
+ gst_structure_free (priv->constants);
g_mutex_clear (&priv->lock);
G_OBJECT_CLASS (gst_validate_scenario_parent_class)->finalize (object);
"Changes the state of the pipeline to any GstState",
GST_VALIDATE_ACTION_TYPE_ASYNC & GST_VALIDATE_ACTION_TYPE_NEEDS_CLOCK);
+ REGISTER_ACTION_TYPE ("define-consts", _execute_add_consts,
+ ((GstValidateActionParameter []) {
+ {NULL}
+ }),
+ "Define constants to be used in other actions.\n"
+ "For example you can define constants for buffer checksum"
+ " to be used in the \"check-last-sample\" action type as follow:\n\n"
+ "```\n"
+ " define-consts, frame1=SomeRandomHash1,frame2=Anotherhash...\n"
+ " check-last-sample, checksum=frame1\n"
+ "```\n",
+ GST_VALIDATE_ACTION_TYPE_NONE);
+
REGISTER_ACTION_TYPE ("set-property", _execute_set_property,
((GstValidateActionParameter []) {
{