# GstValidate action types
-
## meta
``` validate-scenario
meta,
+ [allow-errors=(boolean)],
[duration=(double, int)],
[handles-states=(boolean)],
[ignore-eos=(boolean)],
### Parameters
+* `allow-errors`:(optional): Ignore error messages and keep executing the
+scenario when it happens. By default a 'stop' action is generated on ERROR messages
+
+ Possible types: `boolean`
+
+ Default: false
+
* `duration`:(optional): Lets the user know the time the scenario needs to be fully executed
Possible types: `double, int`
``` validate-scenario
wait,
+ [check=(structure)],
[duration=(double or string (GstClockTime))],
+ [expected-values=(structure)],
[message-type=(string)],
+ [non-blocking=(string)],
+ [on-clock=(boolean)],
[signal-name=(string)],
+ [target-element-factory-name=(string)],
[target-element-name=(string)],
[playback-time=(double,string)];
```
### Parameters
+* `check`:(optional): The check action to execute when non blocking signal is received
+
+ Possible types: `structure`
+
+ Default: (null)
+
* `duration`:(optional): the duration while no other action will be executed
Possible types: `double or string (GstClockTime)`
Default: (null)
+* `expected-values`:(optional): Expected values in the message structure (valid only when `message-type`). Example: wait, on-client=true, message-type=buffering, expected-values=[values, buffer-percent=100]
+
+ Possible types: `structure`
+
+ Default: (null)
+
* `message-type`:(optional): The name of the message type to wait for (on @target-element-name if specified)
Possible types: `string`
Default: (null)
-* `signal-name`:(optional): The name of the signal to wait for on @target-element-name
+* `non-blocking`:(optional): **Only for signals**.Make the action non blocking meaning that next actions will be
+executed without waiting for the signal to be emitted.
+
+ Possible types: `string`
+
+ Default: (null)
+
+* `on-clock`:(optional): Wait until the test clock gets a new pending entry.
+See #gst_test_clock_wait_for_next_pending_id.
+
+ Possible types: `boolean`
+
+ Default: (null)
+
+* `signal-name`:(optional): The name of the signal to wait for on @target-element-name. To ensure that the signal is executed without blocking while waiting for it you can set the field 'non-blocking=true'.
+
+ Possible types: `string`
+
+ Default: (null)
+
+* `target-element-factory-name`:(optional): The name factory for which to wait @signal-name on
Possible types: `string`
Possible types: `string, int`
+## remove-feature
+
+
+``` validate-scenario
+remove-feature,
+ name=(string);
+```
+
+Remove a plugin feature(s) or a plugin from the registry
+ * Implementer namespace: core
+ * Is config action (meaning it will be executing right at the beginning of the execution of the pipeline)
+
+### Parameters
+
+* `name`:(mandatory): The name of a GstFeature or GstPlugin to remove
+
+ Possible types: `string`
+
## set-feature-rank
### Parameters
-* `state`:(mandatory): A GstState as a string, should be in:
+* `state`:(mandatory): A GstState as a string, should be in:
* ['null', 'ready', 'paused', 'playing']
Possible types: `string`
Default: (null)
+## set-timed-value-properties
+
+
+``` validate-scenario
+set-timed-value-properties,
+ timestamp=(string or float (GstClockTime)),
+ [binding-type=(string)],
+ [interpolation-mode=(string)],
+ [source-type=(string)],
+ [playback-time=(double,string)];
+```
+
+Sets GstTimedValue on pads on elements properties using GstControlBindings
+and GstControlSource as defined in the parameters.
+The properties values to set will be defined as:
+
+```
+element-name.padname::property-name=new-value
+```
+
+> NOTE: `.padname` is not needed if setting a property on an element
+
+This action also adds necessary control source/control bindings.
+
+ * Implementer namespace: core
+
+### Parameters
+
+* `timestamp`:(mandatory): The timestamp of the keyframe
+
+ Possible types: `string or float (GstClockTime)`
+
+* `binding-type`:(optional): The name of the type of binding to use
+
+ Possible types: `string`
+
+ Default: direct
+
+* `interpolation-mode`:(optional): The name of the GstInterpolationMode to set on the source
+
+ Possible types: `string`
+
+ Default: linear
+
+* `source-type`:(optional): The name of the type of ControlSource to use
+
+ Possible types: `string`
+
+ Default: GstInterpolationControlSource
+
+* `playback-time`:(optional): The playback time at which the action will be executed
+
+ Possible variables:
+
+ * `position`: The current position in the stream
+
+ * `duration`: The duration of the stream
+
+ Possible types: `double,string`
+
+ Default: 0.0
+
+* `on-message`:(optional): Specify on what message type the action will be executed.
+ If both 'playback-time' and 'on-message' is specified, the action will be executed
+ on whatever happens first.
+
+ Possible types: `string`
+
+ Default: (null)
+
+## check-properties
+
+
+``` validate-scenario
+check-properties,
+ [playback-time=(double,string)];
+```
+
+Check elements and pads properties values.
+The properties values to check will be defined as:
+
+```
+element-name.padname::property-name
+```
+
+> NOTE: `.padname` is not needed if checking an element property
+
+
+ * Implementer namespace: core
+
+### Parameters
+
+* `playback-time`:(optional): The playback time at which the action will be executed
+
+ Possible variables:
+
+ * `position`: The current position in the stream
+
+ * `duration`: The duration of the stream
+
+ Possible types: `double,string`
+
+ Default: 0.0
+
+* `on-message`:(optional): Specify on what message type the action will be executed.
+ If both 'playback-time' and 'on-message' is specified, the action will be executed
+ on whatever happens first.
+
+ Possible types: `string`
+
+ Default: (null)
+
+## set-properties
+
+
+``` validate-scenario
+set-properties,
+ [playback-time=(double,string)];
+```
+
+Set elements and pads properties values.
+The properties values to set will be defined as:
+
+```
+ element-name.padname::property-name
+```
+
+> NOTE: `.padname` is not needed if set an element property
+
+
+ * Implementer namespace: core
+
+### Parameters
+
+* `playback-time`:(optional): The playback time at which the action will be executed
+
+ Possible variables:
+
+ * `position`: The current position in the stream
+
+ * `duration`: The duration of the stream
+
+ Possible types: `double,string`
+
+ Default: 0.0
+
+* `on-message`:(optional): Specify on what message type the action will be executed.
+ If both 'playback-time' and 'on-message' is specified, the action will be executed
+ on whatever happens first.
+
+ Possible types: `string`
+
+ Default: (null)
+
## set-property
set-property,
property-name=(string),
property-value=(The same type of @property-name),
+ [on-all-instances=(boolean)],
[target-element-factory-name=(string)],
[target-element-klass=(string)],
[target-element-name=(string)],
Possible types: `The same type of @property-name`
+* `on-all-instances`:(optional): Whether to set property on all instances matching the requirements
+
+ Possible types: `boolean`
+
+ Default: (null)
+
* `target-element-factory-name`:(optional): The name factory for which to set a property on built elements
Possible types: `string`
emit-signal,
signal-name=(string),
target-element-name=(string),
+ [params=(ValueArray)],
[playback-time=(double,string)];
```
Possible types: `string`
+* `params`:(optional): The signal parameters
+
+ Possible types: `ValueArray`
+
+ Default: (null)
+
* `playback-time`:(optional): The playback time at which the action will be executed
Possible variables:
``` validate-scenario
crank-clock,
- [checksum=(string)],
[expected-elapsed-time=(GstClockTime)],
[expected-time=(GstClockTime)],
- [sinkpad-caps=(string)],
- [timecode-frame-number=(string)],
[playback-time=(double,string)];
```
### Parameters
-* `checksum`:(optional): The reference checksum of the buffer.
-
- Possible types: `string`
-
- Default: (null)
-
* `expected-elapsed-time`:(optional): Check time elapsed during the clock cranking
Possible types: `GstClockTime`
Default: (null)
-* `sinkpad-caps`:(optional): The caps (as string) of the sink to check.
-
- Possible types: `string`
-
- Default: (null)
-
-* `timecode-frame-number`:(optional): The frame number of the buffer as specified on its GstVideoTimeCodeMeta
-
- Possible types: `string`
-
- Default: (null)
-
* `playback-time`:(optional): The playback time at which the action will be executed
Possible variables:
``` validate-scenario
check-position,
expected-position=(GstClockTime),
- [all-headers=(boolean)],
- [count=(int)],
- [pad=(string)],
- [running-time=(double or string)],
- [srcpad=(string)],
- [target-element-factory-name=(string)],
- [target-element-klass=(string)],
- [target-element-name=(string)],
[playback-time=(double,string)];
```
Possible types: `GstClockTime`
-* `all-headers`:(optional): TRUE to produce headers when starting a new key unit
+* `playback-time`:(optional): The playback time at which the action will be executed
- Possible types: `boolean`
+ Possible variables:
- Default: FALSE
+ * `position`: The current position in the stream
-* `count`:(optional): integer that can be used to number key units
+ * `duration`: The duration of the stream
- Possible types: `int`
+ Possible types: `double,string`
- Default: 0
+ Default: 0.0
-* `pad`:(optional): The name of the GstPad to send a send force-key-unit to
+* `on-message`:(optional): Specify on what message type the action will be executed.
+ If both 'playback-time' and 'on-message' is specified, the action will be executed
+ on whatever happens first.
Possible types: `string`
- Default: sink
+ Default: (null)
-* `running-time`:(optional): The running_time can be set to request a new key unit at a specific running_time.
-If not set, GST_CLOCK_TIME_NONE will be used so upstream elements will produce a new key unit as soon as possible.
+## check-current-pad-caps
- Possible variables:
- * position: The current position in the stream
+``` validate-scenario
+check-current-pad-caps,
+ [comparison-type=(string in [intersect, equal])],
+ [expected-caps=(caps,structure)],
+ [pad=(string)],
+ [target-element-factory-name=(string)],
+ [target-element-klass=(string)],
+ [target-element-name=(string)],
+ [playback-time=(double,string)];
+```
- * duration: The duration of the stream
+Check currently set caps on a particular pad.
- Possible types: `double or string`
+ * Implementer namespace: core
+
+### Parameters
+
+* `comparison-type`:(optional): __No description__
+
+ Possible types: `string in [intersect, equal]`
Default: (null)
-* `srcpad`:(optional): The name of the GstPad to send a send force-key-unit to
+* `expected-caps`:(optional): The expected caps. If not present, expected no caps to be set
+
+ Possible types: `caps,structure`
+
+ Default: (null)
+
+* `pad`:(optional): The name of the GstPad to get pad from
Possible types: `string`
- Default: src
+ Default: (null)
-* `target-element-factory-name`:(optional): The factory name of the GstElements to send a send force-key-unit to
+* `target-element-factory-name`:(optional): The factory name of the GstElements to get pad from
Possible types: `string`
Default: (null)
-* `target-element-klass`:(optional): The klass of the GstElements to send a send force-key-unit to
+* `target-element-klass`:(optional): The klass of the GstElements to get pad from
Possible types: `string`
- Default: Video/Encoder
+ Default: (null)
* `target-element-name`:(optional): The name of the GstElement to send a send force-key-unit to
Default: (null)
+## run-command
+
+
+``` validate-scenario
+run-command,
+ argv=((string){array,}),
+ [env=(structure)],
+ [playback-time=(double,string)];
+```
+
+Run an external command.
+
+ * Implementer namespace: core
+
+### Parameters
+
+* `argv`:(mandatory): The subprocess arguments, include the program name itself
+
+ Possible types: `(string){array,}`
+
+* `env`:(optional): Extra environment variables to set
+
+ Possible types: `structure`
+
+ Default: (null)
+
+* `playback-time`:(optional): The playback time at which the action will be executed
+
+ Possible variables:
+
+ * `position`: The current position in the stream
+
+ * `duration`: The duration of the stream
+
+ Possible types: `double,string`
+
+ Default: 0.0
+
+* `on-message`:(optional): Specify on what message type the action will be executed.
+ If both 'playback-time' and 'on-message' is specified, the action will be executed
+ on whatever happens first.
+
+ Possible types: `string`
+
+ Default: (null)
+ optional : Don't raise an error if this action hasn't been executed or failed
+ ### Possible types:
+ boolean
+ Default: false
+
+## foreach
+
+
+``` validate-scenario
+foreach,
+ actions=({array of [structures]}),
+ [playback-time=(double,string)];
+```
+
+Run actions defined in the `actions` array the number of times specified
+with an iterator parameter passed in. The iterator can be
+a range like: `i=[start, end, step]` or array of values
+such as: `values=<value1, value2>`.
+One and only one iterator field is supported as parameter.
+ * Implementer namespace: core
+
+### Parameters
+
+* `actions`:(mandatory): The array of actions to repeat
+
+ Possible types: `{array of [structures]}`
+
+* `playback-time`:(optional): The playback time at which the action will be executed
+
+ Possible variables:
+
+ * `position`: The current position in the stream
+
+ * `duration`: The duration of the stream
+
+ Possible types: `double,string`
+
+ Default: 0.0
+
+* `on-message`:(optional): Specify on what message type the action will be executed.
+ If both 'playback-time' and 'on-message' is specified, the action will be executed
+ on whatever happens first.
+
+ Possible types: `string`
+
+ Default: (null)
+
## corrupt-socket-recv
},
{
.name = "allow-errors",
- .description = "Ignore error messages and keep executing the scenario when it happens.\n By default "
- "a 'stop' action is generated one ERROR messages",
+ .description = "Ignore error messages and keep executing the\n"
+ "scenario when it happens. By default a 'stop' action is generated on ERROR messages",
.mandatory = FALSE,
.types = "boolean",
.possible_variables = NULL,
{
.name = "non-blocking",
.description = "**Only for signals**."
- " Ensures that the signal is emitted without a blocking waiting.",
+ "Make the action non blocking meaning that next actions will be\n"
+ "executed without waiting for the signal to be emitted.",
.mandatory = FALSE,
.types = "string",
NULL
"`message-type`). Example: "
"wait, on-client=true, message-type=buffering, expected-values=[values, buffer-percent=100]",
.mandatory = FALSE,
- .types = "GstStructure",
+ .types = "structure",
NULL
},
{
.name = "on-clock",
- .description = "Wait until the test clock get a new pending entry"
- " see #gst_test_clock_wait_for_next_pending_id.",
+ .description = "Wait until the test clock gets a new pending entry.\n"
+ "See #gst_test_clock_wait_for_next_pending_id.",
.mandatory = FALSE,
.types = "boolean",
NULL
},
{
.name = "interpolation-mode",
- .description = "The name of the GstInterpolationMode to on the source",
+ .description = "The name of the GstInterpolationMode to set on the source",
.types = "string",
.mandatory = FALSE,
.def = "linear",
},
{NULL}
}),
- "Sets GstTimedValue on pads on elements properties using GstControlBindings \n"
+ "Sets GstTimedValue on pads on elements properties using GstControlBindings\n"
"and GstControlSource as defined in the parameters.\n"
"The properties values to set will be defined as:\n\n"
- " element-name.padname::property-name=new-value\n\n"
+ "```\n"
+ "element-name.padname::property-name=new-value\n"
+ "```\n\n"
"> NOTE: `.padname` is not needed if setting a property on an element\n\n"
"This action also adds necessary control source/control bindings.\n",
GST_VALIDATE_ACTION_TYPE_NONE);
}),
"Check elements and pads properties values.\n"
"The properties values to check will be defined as:\n\n"
- " element-name.padname::property-name\n\n"
+ "```\n"
+ "element-name.padname::property-name\n"
+ "```\n\n"
"> NOTE: `.padname` is not needed if checking an element property\n\n",
GST_VALIDATE_ACTION_TYPE_CHECK);
}),
"Set elements and pads properties values.\n"
"The properties values to set will be defined as:\n\n"
- " element-name.padname::property-name\n\n"
- "> NOTE: `.padname` is not needed if checking an element property\n\n",
+ "```\n"
+ " element-name.padname::property-name\n"
+ "```\n\n"
+ "> NOTE: `.padname` is not needed if set an element property\n\n",
GST_VALIDATE_ACTION_TYPE_NONE);
REGISTER_ACTION_TYPE ("set-property", _execute_set_or_check_property,
},
{
.name = "params",
- .description = "The signal parametters",
+ .description = "The signal parameters",
.mandatory = FALSE,
.types = "ValueArray",
NULL
.name = "expected-caps",
.description = "The expected caps. If not present, expected no caps to be set",
.mandatory = FALSE,
- .types = "GstCaps,GstStructure",
+ .types = "caps,structure",
NULL
},
{
},
{NULL}
}),
- "Check current pipeline position.\n",
+ "Check currently set caps on a particular pad.\n",
GST_VALIDATE_ACTION_TYPE_NONE | GST_VALIDATE_ACTION_TYPE_CHECK );
REGISTER_ACTION_TYPE("run-command", _run_command,
((GstValidateActionParameter[]) {
{
.name = "argv",
- .description = "The subprocess arguments",
+ .description = "The subprocess arguments, include the program name itself",
.mandatory = TRUE,
.types = "(string){array,}",
NULL
.name = "env",
.description = "Extra environment variables to set",
.mandatory = FALSE,
- .types = "GstStructure",
+ .types = "structure",
NULL
},
{NULL}
}),
- "Run external command.\n",
+ "Run an external command.\n",
GST_VALIDATE_ACTION_TYPE_CAN_BE_OPTIONAL);
REGISTER_ACTION_TYPE("foreach", NULL,
{ .name = "actions",
.description = "The array of actions to repeat",
.mandatory = TRUE,
- .types = "strv",
+ .types = "{array of [structures]}",
NULL },
{ NULL } }),
"Run actions defined in the `actions` array the number of times specified\n"
- " with an iterator parameter passed in. The iterator can be\n"
- " a range like :`i=[start, end, step]` or array of values\n"
- " such as: `values=<value1, value2>`.\n"
- "One and only iterator field is required as parameter.",
+ "with an iterator parameter passed in. The iterator can be\n"
+ "a range like: `i=[start, end, step]` or array of values\n"
+ "such as: `values=<value1, value2>`.\n"
+ "One and only one iterator field is supported as parameter.",
GST_VALIDATE_ACTION_TYPE_NONE);
type->prepare = gst_validate_foreach_prepare;