diff options
author | Thibault Saunier <tsaunier@igalia.com> | 2021-09-24 16:15:38 -0300 |
---|---|---|
committer | Thibault Saunier <tsaunier@igalia.com> | 2021-09-24 16:15:38 -0300 |
commit | 2701634c29156dea845ba62844713bfd5579bc17 (patch) | |
tree | 0e23c64e9dac6874cbd3315570a0aacd09081a3d /docs | |
parent | 86a93d746dfb37322cb5dfa517c2913edb9d54d6 (diff) | |
download | gstreamer-2701634c29156dea845ba62844713bfd5579bc17.tar.gz |
Move files from gst-devtools into the "subprojects/gst-devtools/" subdir
Diffstat (limited to 'docs')
-rw-r--r-- | docs/api.md | 6 | ||||
-rw-r--r-- | docs/fakesrc.simple.validatetest | 8 | ||||
l--------- | docs/fakesrc.simple.validatetest.ini | 1 | ||||
-rw-r--r-- | docs/fakesrc.simple/flow-expectations/log-sink-sink-expected | 4 | ||||
-rw-r--r-- | docs/ges-validate-action-types.md | 1040 | ||||
-rw-r--r-- | docs/gi-index.md | 1 | ||||
-rw-r--r-- | docs/gst-validate-action-types.md | 1531 | ||||
-rw-r--r-- | docs/gst-validate-config.md | 110 | ||||
-rw-r--r-- | docs/gst-validate-environment-variables.md | 153 | ||||
-rw-r--r-- | docs/gst-validate-flow.md | 196 | ||||
-rw-r--r-- | docs/gst-validate-launcher.md | 166 | ||||
-rw-r--r-- | docs/gst-validate-media-check.md | 32 | ||||
-rw-r--r-- | docs/gst-validate-scenarios.md | 110 | ||||
-rw-r--r-- | docs/gst-validate-test-file.md | 118 | ||||
-rw-r--r-- | docs/gst-validate-transcoding.md | 126 | ||||
-rw-r--r-- | docs/gst-validate.md | 58 | ||||
-rw-r--r-- | docs/index.md | 26 | ||||
-rw-r--r-- | docs/meson.build | 71 | ||||
-rw-r--r-- | docs/plugins/index.md | 3 | ||||
-rw-r--r-- | docs/plugins/ssim.md | 87 | ||||
-rw-r--r-- | docs/plugins/validateflow.md | 3 | ||||
-rw-r--r-- | docs/sitemap.txt | 16 |
22 files changed, 0 insertions, 3866 deletions
diff --git a/docs/api.md b/docs/api.md deleted file mode 100644 index c406aa9ae9..0000000000 --- a/docs/api.md +++ /dev/null @@ -1,6 +0,0 @@ -# GstValidate API reference - -This is GstValidate API reference but note that the GstValidate is not -totally stable and might very well change even between minor versions. - -The override API should be mostly stable still. diff --git a/docs/fakesrc.simple.validatetest b/docs/fakesrc.simple.validatetest deleted file mode 100644 index 8b9416c11c..0000000000 --- a/docs/fakesrc.simple.validatetest +++ /dev/null @@ -1,8 +0,0 @@ -meta, - args = { - "fakesrc num-buffers=1 ! fakesink name=sink", - }, - configs = { - "$(validateflow), pad=sink:sink, buffers-checksum=true", - } -# The validate tool will simply play the pipeline until EOS is reached.
\ No newline at end of file diff --git a/docs/fakesrc.simple.validatetest.ini b/docs/fakesrc.simple.validatetest.ini deleted file mode 120000 index 1b6fe82b5a..0000000000 --- a/docs/fakesrc.simple.validatetest.ini +++ /dev/null @@ -1 +0,0 @@ -fakesrc.simple.validatetest
\ No newline at end of file diff --git a/docs/fakesrc.simple/flow-expectations/log-sink-sink-expected b/docs/fakesrc.simple/flow-expectations/log-sink-sink-expected deleted file mode 100644 index 6792b8cdc6..0000000000 --- a/docs/fakesrc.simple/flow-expectations/log-sink-sink-expected +++ /dev/null @@ -1,4 +0,0 @@ -event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1; -event segment: format=BYTES, start=0, offset=0, stop=18446744073709551615, time=0, base=0, position=0 -buffer: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709, dts=0:00:00.000000000, flags=discont -event eos: (no structure) diff --git a/docs/ges-validate-action-types.md b/docs/ges-validate-action-types.md deleted file mode 100644 index 09973b7bbd..0000000000 --- a/docs/ges-validate-action-types.md +++ /dev/null @@ -1,1040 +0,0 @@ -# GES action types - -## edit-container - -``` validate-scenario -edit-container, - [playback-time=(double,string)], - container-name=(string), - position=(double or string), - [edit-mode=(string)], - [edge=(string)], - [new-layer-priority=(int)]; -``` - -Allows to edit a container (like a GESClip), for more details, have a look at: -ges_container_edit documentation, Note that the timeline will -be commited, and flushed so that the edition is taken into account - * Implementer namespace: ges - -### Parameters - - 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) - -* `container-name`:(mandatory): The name of the GESContainer to edit - - Possible types: `string` - -* `position`:(mandatory): The new position of the GESContainer - - Possible variables: - - * position: The current position in the stream - - * duration: The duration of the stream - - Possible types: `double or string` - -* `edit-mode`:(optional): The GESEditMode to use to edit @container-name - - Possible types: `string` - - Default: normal - -* `edge`:(optional): The GESEdge to use to edit @container-name -should be in [ edge_start, edge_end, edge_none ] - - Possible types: `string` - - Default: edge_none - -* `new-layer-priority`:(optional): The priority of the layer @container should land in. -If the layer you're trying to move the container to doesn't exist, it will -be created automatically. -1 means no move. - - Possible types: `int` - - Default: -1 - -## add-asset - - -``` validate-scenario -add-asset, - [playback-time=(double,string)], - id, - type; -``` - -Allows to add an asset to the current project - * Implementer namespace: ges - -### Parameters - - 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) - -* `id`:(mandatory): Adds an asset to a project. - -* `type`:(mandatory): The type of asset to add - -## remove-asset - - -``` validate-scenario -remove-asset, - [playback-time=(double,string)], - id, - type; -``` - -Allows to remove an asset from the current project - * Implementer namespace: ges - -### Parameters - - 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) - -* `id`:(mandatory): The ID of the clip to remove - -* `type`:(mandatory): The type of asset to remove - -## add-layer - - -``` validate-scenario -add-layer, - [playback-time=(double,string)], - [priority]; -``` - -Allows to add a layer to the current timeline - * Implementer namespace: ges - -### Parameters - - 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) - -* `priority`:(optional): The priority of the new layer to add,if not specified, the new layer will be appended to the timeline - - Default: (null) - -## remove-layer - - -``` validate-scenario -remove-layer, - [playback-time=(double,string)], - priority, - [auto-transition=(boolean)]; -``` - -Allows to remove a layer from the current timeline - * Implementer namespace: ges - -### Parameters - - 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) - -* `priority`:(mandatory): The priority of the layer to remove - -* `auto-transition`:(optional): Wheter auto-transition is activated on the new layer. - - Possible types: `boolean` - - Default: False - -## add-clip - - -``` validate-scenario -add-clip, - [playback-time=(double,string)], - name=(string), - layer-priority=(int), - asset-id=(string), - type=(string), - [start=(double or string)], - [inpoint=(double or string)], - [duration=(double or string)]; -``` - -Allows to add a clip to a given layer - * Implementer namespace: ges - -### Parameters - - 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) - -* `name`:(mandatory): The name of the clip to add - - Possible types: `string` - -* `layer-priority`:(mandatory): The priority of the clip to add - - Possible types: `int` - -* `asset-id`:(mandatory): The id of the asset from which to extract the clip - - Possible types: `string` - -* `type`:(mandatory): The type of the clip to create - - Possible types: `string` - -* `start`:(optional): The start value to set on the new GESClip. - - Possible types: `double or string` - - Default: (null) - -* `inpoint`:(optional): The inpoint value to set on the new GESClip - - Possible types: `double or string` - - Default: (null) - -* `duration`:(optional): The duration value to set on the new GESClip - - Possible types: `double or string` - - Default: (null) - -## remove-clip - - -``` validate-scenario -remove-clip, - [playback-time=(double,string)], - name=(string); -``` - -Allows to remove a clip from a given layer - * Implementer namespace: ges - -### Parameters - - 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) - -* `name`:(mandatory): The name of the clip to remove - - Possible types: `string` - -## serialize-project - - -``` validate-scenario -serialize-project, - [playback-time=(double,string)], - uri=(string); -``` - -serializes a project - * Implementer namespace: ges - -### Parameters - - 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) - -* `uri`:(mandatory): The uri where to store the serialized project - - Possible types: `string` - -## set-child-property - - -``` validate-scenario -set-child-property, - [playback-time=(double,string)], - element-name=(string), - property=(string), - value=(gvalue); -``` - -Allows to change child property of an object - * Implementer namespace: ges - -### Parameters - - 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) - -* `element-name`:(mandatory): The name of the element on which to modify the property - - Possible types: `string` - -* `property`:(mandatory): The name of the property to modify - - Possible types: `string` - -* `value`:(mandatory): The value of the property - - Possible types: `gvalue` - -## split-clip - - -``` validate-scenario -split-clip, - [playback-time=(double,string)], - clip-name=(string), - position=(double or string); -``` - -Split a clip at a specified position. - * Implementer namespace: ges - -### Parameters - - 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) - -* `clip-name`:(mandatory): The name of the clip to split - - Possible types: `string` - -* `position`:(mandatory): The position at which to split the clip - - Possible types: `double or string` - -## set-track-restriction-caps - - -``` validate-scenario -set-track-restriction-caps, - [playback-time=(double,string)], - track-type=(string), - caps=(string); -``` - -Sets restriction caps on tracks of a specific type. - * Implementer namespace: ges - -### Parameters - - 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) - -* `track-type`:(mandatory): The type of track to set restriction caps on - - Possible types: `string` - -* `caps`:(mandatory): The caps to set on the track - - Possible types: `string` - -## element-set-asset - - -``` validate-scenario -element-set-asset, - [playback-time=(double,string)], - element-name=(string), - asset-id=(string); -``` - -Sets restriction caps on tracks of a specific type. - * Implementer namespace: ges - -### Parameters - - 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) - -* `element-name`:(mandatory): The name of the TimelineElement to set an asset on - - Possible types: `string` - -* `asset-id`:(mandatory): The id of the asset from which to extract the clip - - Possible types: `string` - -## container-add-child - - -``` validate-scenario -container-add-child, - [playback-time=(double,string)], - container-name=(string), - [child-name=(string)], - asset-id=(string), - [child-type=(string)]; -``` - -Add a child to @container-name. If asset-id and child-type are specified, the child will be created and added. Otherwize @child-name has to be specified and will be added to the container. - * Implementer namespace: ges - -### Parameters - - 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) - -* `container-name`:(mandatory): The name of the GESContainer to add a child to - - Possible types: `string` - -* `child-name`:(optional): The name of the child to add to @container-name - - Possible types: `string` - - Default: NULL - -* `asset-id`:(mandatory): The id of the asset from which to extract the child - - Possible types: `string` - -* `child-type`:(optional): The type of the child to create - - Possible types: `string` - - Default: NULL - -## container-remove-child - - -``` validate-scenario -container-remove-child, - [playback-time=(double,string)], - container-name=(string), - child-name=(string); -``` - -Remove a child from @container-name. - * Implementer namespace: ges - -### Parameters - - 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) - -* `container-name`:(mandatory): The name of the GESContainer to remove a child from - - Possible types: `string` - -* `child-name`:(mandatory): The name of the child to reomve from @container-name - - Possible types: `string` - -## ungroup-container - - -``` validate-scenario -ungroup-container, - [playback-time=(double,string)], - container-name=(string), - [recursive=(boolean)]; -``` - -Ungroup children of @container-name. - * Implementer namespace: ges - -### Parameters - - 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) - -* `container-name`:(mandatory): The name of the GESContainer to ungroup children from - - Possible types: `string` - -* `recursive`:(optional): Wether to recurse ungrouping or not. - - Possible types: `boolean` - - Default: (null) - -## set-control-source - - -``` validate-scenario -set-control-source, - [playback-time=(double,string)], - element-name=(string), - property-name=(string), - [binding-type=(string)], - [source-type=(string)], - [interpolation-mode=(string)]; -``` - -Adds a GstControlSource on @element-name::@property-name allowing you to then add keyframes on that property. - * Implementer namespace: ges - -### Parameters - - 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) - -* `element-name`:(mandatory): The name of the GESTrackElement to set the control source on - - Possible types: `string` - -* `property-name`:(mandatory): The name of the property for which to set a control source - - Possible types: `string` - -* `binding-type`:(optional): The name of the type of binding to use - - Possible types: `string` - - Default: direct - -* `source-type`:(optional): The name of the type of ControlSource to use - - Possible types: `string` - - Default: interpolation - -* `interpolation-mode`:(optional): The name of the GstInterpolationMode to on the source - - Possible types: `string` - - Default: linear - -## add-keyframe - - -``` validate-scenario -add-keyframe, - [playback-time=(double,string)], - element-name=(string), - property-name=(string), - timestamp=(string or float), - value=(float); -``` - -Remove a child from @container-name. - * Implementer namespace: ges - -### Parameters - - 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) - -* `element-name`:(mandatory): The name of the GESTrackElement to add a keyframe on - - Possible types: `string` - -* `property-name`:(mandatory): The name of the property for which to add a keyframe on - - Possible types: `string` - -* `timestamp`:(mandatory): The timestamp of the keyframe - - Possible types: `string or float` - -* `value`:(mandatory): The value of the keyframe - - Possible types: `float` - -## copy-element - - -``` validate-scenario -copy-element, - [playback-time=(double,string)], - element-name=(string), - [recurse=(boolean)], - position=(string or float), - [paste-name=(string)]; -``` - -Remove a child from @container-name. - * Implementer namespace: ges - -### Parameters - - 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) - -* `element-name`:(mandatory): The name of the GESTtimelineElement to copy - - Possible types: `string` - -* `recurse`:(optional): Copy recursively or not - - Possible types: `boolean` - - Default: true - -* `position`:(mandatory): The time where to paste the element - - Possible types: `string or float` - -* `paste-name`:(optional): The name of the copied element - - Possible types: `string` - - Default: (null) - -## remove-keyframe - - -``` validate-scenario -remove-keyframe, - [playback-time=(double,string)], - element-name=(string), - property-name=(string), - timestamp=(string or float); -``` - -Remove a child from @container-name. - * Implementer namespace: ges - -### Parameters - - 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) - -* `element-name`:(mandatory): The name of the GESTrackElement to add a keyframe on - - Possible types: `string` - -* `property-name`:(mandatory): The name of the property for which to add a keyframe on - - Possible types: `string` - -* `timestamp`:(mandatory): The timestamp of the keyframe - - Possible types: `string or float` - -## load-project - - -``` validate-scenario -load-project, - [playback-time=(double,string)], - serialized-content; -``` - -Loads a project either from its content passed in the serialized-content field. -Note that it will completely clean the previous timeline - * Implementer namespace: ges - -### Parameters - - 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) - -* `serialized-content`:(mandatory): The full content of the XML describing project in XGES formet. - -## commit - - -``` validate-scenario -commit, - [playback-time=(double,string)]; -``` - -Commit the timeline. - * Implementer namespace: ges - -### Parameters - - 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) diff --git a/docs/gi-index.md b/docs/gi-index.md deleted file mode 100644 index dc270fbddc..0000000000 --- a/docs/gi-index.md +++ /dev/null @@ -1 +0,0 @@ -# GstValidate API reference diff --git a/docs/gst-validate-action-types.md b/docs/gst-validate-action-types.md deleted file mode 100644 index 65c3105f07..0000000000 --- a/docs/gst-validate-action-types.md +++ /dev/null @@ -1,1531 +0,0 @@ -# GstValidate action types - -## meta - - -``` validate-scenario -meta, - [duration=(double, int)], - [handles-states=(boolean)], - [ignore-eos=(boolean)], - [is-config=(boolean)], - [max-dropped=(int)], - [max-latency=(double, int)], - [min-audio-track=(int)], - [min-media-duration=(double)], - [min-video-track=(int)], - [need-clock-sync=(boolean)], - [pipeline-name=(string)], - [reverse-playback=(boolean)], - [seek=(boolean)], - [summary=(string)]; -``` - -Scenario metadata. -NOTE: it used to be called "description" - * Implementer namespace: core - * Is config action (meaning it will be executing right at the beginning of the execution of the pipeline) - -### Parameters - -* `duration`:(optional): Lets the user know the time the scenario needs to be fully executed - - Possible types: `double, int` - - Default: infinite (GST_CLOCK_TIME_NONE) - -* `handles-states`:(optional): Whether the scenario handles pipeline state changes from the beginning -in that case the application should not set the state of the pipeline to anything -and the scenario action will be executed from the beginning - - Possible types: `boolean` - - Default: false - -* `ignore-eos`:(optional): Ignore EOS and keep executing the scenario when it happens. - By default a 'stop' action is generated one EOS - - Possible types: `boolean` - - Default: false - -* `is-config`:(optional): Whether the scenario is a config only scenario - - Possible types: `boolean` - - Default: false - -* `max-dropped`:(optional): The maximum number of buffers which can be dropped by the QoS system allowed for this pipeline. -It can be overridden using core configuration, like for example by defining the env variable GST_VALIDATE_CONFIG=core,max-dropped=100 - - Possible types: `int` - - Default: infinite (-1) - -* `max-latency`:(optional): The maximum latency in nanoseconds allowed for this pipeline. -It can be overridden using core configuration, like for example by defining the env variable GST_VALIDATE_CONFIG=core,max-latency=33000000 - - Possible types: `double, int` - - Default: infinite (GST_CLOCK_TIME_NONE) - -* `min-audio-track`:(optional): Lets the user know the minimum number of audio tracks the stream needs to contain -for the scenario to be usable - - Possible types: `int` - - Default: 0 - -* `min-media-duration`:(optional): Lets the user know the minimum duration of the stream for the scenario -to be usable - - Possible types: `double` - - Default: 0.0 - -* `min-video-track`:(optional): Lets the user know the minimum number of video tracks the stream needs to contain -for the scenario to be usable - - Possible types: `int` - - Default: 0 - -* `need-clock-sync`:(optional): Whether the scenario needs the execution to be synchronized with the pipeline's -clock. Letting the user know if it can be used with a 'fakesink sync=false' sink - - Possible types: `boolean` - - Default: true if some action requires a playback-time false otherwise - -* `pipeline-name`:(optional): The name of the GstPipeline on which the scenario should be executed. -It has the same effect as setting the pipeline using pipeline_name->scenario_name. - - Possible types: `string` - - Default: NULL - -* `reverse-playback`:(optional): Whether the scenario plays the stream backward - - Possible types: `boolean` - - Default: false - -* `seek`:(optional): Whether the scenario executes seek actions or not - - Possible types: `boolean` - - Default: false - -* `summary`:(optional): Whether the scenario is a config only scenario (ie. explain what it does) - - Possible types: `string` - - Default: 'Nothing' - -## seek - - -``` validate-scenario -seek, - flags=(string describing the GstSeekFlags to set), - start=(double or string (GstClockTime)), - [rate=(double)], - [start_type=(string)], - [stop=(double or string (GstClockTime))], - [stop_type=(string)], - [playback-time=(double,string)]; -``` - -Seeks into the stream. This is an example of a seek happening when the stream reaches 5 seconds -or 1 eighth of its duration and seeks to 10s or 2 eighths of its duration: - seek, playback-time="min(5.0, (duration/8))", start="min(10, 2*(duration/8))", flags=accurate+flush - * Implementer namespace: core - -### Parameters - -* `flags`:(mandatory): The GstSeekFlags to use - - Possible types: `string describing the GstSeekFlags to set` - -* `start`:(mandatory): The starting value of the seek - - Possible variables: - - * `position`: The current position in the stream - - * `duration`: The duration of the stream - - Possible types: `double or string (GstClockTime)` - -* `rate`:(optional): The rate value of the seek - - Possible types: `double` - - Default: 1.0 - -* `start_type`:(optional): The GstSeekType to use for the start of the seek, in: - [none, set, end] - - Possible types: `string` - - Default: set - -* `stop`:(optional): The stop value of the seek - - Possible variables: - - * `position`: The current position in the stream - - * `duration`: The duration of the stream - - Possible types: `double or string (GstClockTime)` - - Default: GST_CLOCK_TIME_NONE - -* `stop_type`:(optional): The GstSeekType to use for the stop of the seek, in: - [none, set, end] - - Possible types: `string` - - Default: set - -* `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) - -## pause - - -``` validate-scenario -pause, - [duration=(double or string (GstClockTime))], - [playback-time=(double,string)]; -``` - -Sets pipeline to PAUSED. You can add a 'duration' -parameter so the pipeline goes back to playing after that duration -(in second) - * Implementer namespace: core - -### Parameters - -* `duration`:(optional): The duration during which the stream will be paused - - Possible types: `double or string (GstClockTime)` - - Default: 0.0 - -* `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) - -## play - - -``` validate-scenario -play, - [playback-time=(double,string)]; -``` - -Sets the pipeline state to PLAYING - * 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) - -## stop - - -``` validate-scenario -stop, - [playback-time=(double,string)]; -``` - -Stops the execution of the scenario. It will post a 'request-state' message on the bus with NULL as a requested state and the application is responsible for stopping itself. If you override that action type, make sure to link up. - * 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) - -## eos - - -``` validate-scenario -eos, - [playback-time=(double,string)]; -``` - -Sends an EOS event to the pipeline - * 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) - -## switch-track - - -``` validate-scenario -switch-track, - [index=(string: to switch track relatively -int: To use the actual index to use)], - [type=(string)], - [playback-time=(double,string)]; -``` - -The 'switch-track' command can be used to switch tracks. - * Implementer namespace: core - -### Parameters - -* `index`:(optional): Selects which track of this type to use: it can be either a number, -which will be the Nth track of the given type, or a number with a '+' or -'-' prefix, which means a relative change (eg, '+1' means 'next track', -'-1' means 'previous track') - - Possible types: `string: to switch track relatively -int: To use the actual index to use` - - Default: +1 - -* `type`:(optional): Selects which track type to change (can be 'audio', 'video', or 'text'). - - Possible types: `string` - - Default: audio - -* `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) - -## wait - - -``` validate-scenario -wait, - [duration=(double or string (GstClockTime))], - [message-type=(string)], - [signal-name=(string)], - [target-element-name=(string)], - [playback-time=(double,string)]; -``` - -Waits for signal 'signal-name', message 'message-type', or during 'duration' seconds - * Implementer namespace: core - -### Parameters - -* `duration`:(optional): the duration while no other action will be executed - - Possible types: `double or string (GstClockTime)` - - 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 - - Possible types: `string` - - Default: (null) - -* `target-element-name`:(optional): The name of the GstElement to wait @signal-name on. - - Possible types: `string` - - 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) - -## dot-pipeline - - -``` validate-scenario -dot-pipeline, - [playback-time=(double,string)]; -``` - -Dots the pipeline (the 'name' property will be used in the dot filename). -For more information have a look at the GST_DEBUG_BIN_TO_DOT_FILE documentation. -Note that the GST_DEBUG_DUMP_DOT_DIR env variable needs to be set - * 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-rank - - -``` validate-scenario -set-rank, - name=(string), - rank=(string, int); -``` - -Changes the ranking of a particular plugin feature(s) - * 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 - - Possible types: `string` - -* `rank`:(mandatory): The GstRank to set on @name - - Possible types: `string, int` - -## set-feature-rank - - -``` validate-scenario -set-feature-rank, - feature-name=(string), - rank=(string, int); -``` - -Changes the ranking of a particular plugin feature - * Implementer namespace: core - * Is config action (meaning it will be executing right at the beginning of the execution of the pipeline) - -### Parameters - -* `feature-name`:(mandatory): The name of a GstFeature - - Possible types: `string` - -* `rank`:(mandatory): The GstRank to set on @feature-name - - Possible types: `string, int` - -## set-state - - -``` validate-scenario -set-state, - state=(string), - [playback-time=(double,string)]; -``` - -Changes the state of the pipeline to any GstState - * Implementer namespace: core - -### Parameters - -* `state`:(mandatory): A GstState as a string, should be in: - * ['null', 'ready', 'paused', 'playing'] - - Possible types: `string` - -* `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-vars - - -``` validate-scenario -set-vars, - [playback-time=(double,string)]; -``` - -Define vars to be used in other actions. -For example you can define vars for buffer checksum to be used in the "check-last-sample" action type as follow: - -``` - set-vars, frame1=SomeRandomHash1,frame2=Anotherhash... - check-last-sample, checksum=frame1 -``` - - * 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 - - -``` validate-scenario -set-property, - property-name=(string), - property-value=(The same type of @property-name), - [target-element-factory-name=(string)], - [target-element-klass=(string)], - [target-element-name=(string)], - [playback-time=(double,string)]; -``` - -Sets a property of an element or klass of elements in the pipeline. -Besides property-name and value, either 'target-element-name' or -'target-element-klass' needs to be defined - * Implementer namespace: core - -### Parameters - -* `property-name`:(mandatory): The name of the property to set on @target-element-name - - Possible types: `string` - -* `property-value`:(mandatory): The value of @property-name to be set on the element - - Possible types: `The same type of @property-name` - -* `target-element-factory-name`:(optional): The name factory for which to set a property on built elements - - Possible types: `string` - - Default: (null) - -* `target-element-klass`:(optional): The klass of the GstElements to set a property on - - Possible types: `string` - - Default: (null) - -* `target-element-name`:(optional): The name of the GstElement to set a property on - - Possible types: `string` - - 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 - -## check-property - - -``` validate-scenario -check-property, - property-name=(string), - property-value=(The same type of @property-name), - [target-element-factory-name=(string)], - [target-element-klass=(string)], - [target-element-name=(string)], - [playback-time=(double,string)]; -``` - -Check the value of property of an element or klass of elements in the pipeline. -Besides property-name and value, either 'target-element-name' or -'target-element-klass' needs to be defined - * Implementer namespace: core - -### Parameters - -* `property-name`:(mandatory): The name of the property to set on @target-element-name - - Possible types: `string` - -* `property-value`:(mandatory): The expected value of @property-name - - Possible types: `The same type of @property-name` - -* `target-element-factory-name`:(optional): The name factory for which to check a property value on built elements - - Possible types: `string` - - Default: (null) - -* `target-element-klass`:(optional): The klass of the GstElements to check a property on - - Possible types: `string` - - Default: (null) - -* `target-element-name`:(optional): The name of the GstElement to check a property value - - Possible types: `string` - - 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) - -## set-debug-threshold - - -``` validate-scenario -set-debug-threshold, - debug-threshold=(string), - [playback-time=(double,string)]; -``` - -Sets the debug level to be used, same format as -setting the GST_DEBUG env variable - * Implementer namespace: core - -### Parameters - -* `debug-threshold`:(mandatory): String defining debug threshold -See gst_debug_set_threshold_from_string - - Possible types: `string` - -* `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) - -## emit-signal - - -``` validate-scenario -emit-signal, - signal-name=(string), - target-element-name=(string), - [playback-time=(double,string)]; -``` - -Emits a signal to an element in the pipeline - * Implementer namespace: core - -### Parameters - -* `signal-name`:(mandatory): The name of the signal to emit on @target-element-name - - Possible types: `string` - -* `target-element-name`:(mandatory): The name of the GstElement to emit a signal on - - Possible types: `string` - -* `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) - -## appsrc-push - - -``` validate-scenario -appsrc-push, - file-name=(string), - target-element-name=(string), - [caps=(caps)], - [offset=(uint64)], - [size=(uint64)], - [playback-time=(double,string)]; -``` - -Queues a buffer in an appsrc. If the pipeline state allows flow of buffers, the next action is not run until the buffer has been pushed. - * Implementer namespace: core - -### Parameters - -* `file-name`:(mandatory): Relative path to a file whose contents will be pushed as a buffer - - Possible types: `string` - -* `target-element-name`:(mandatory): The name of the appsrc to push data on - - Possible types: `string` - -* `caps`:(optional): Caps for the buffer to be pushed - - Possible types: `caps` - - Default: (null) - -* `offset`:(optional): Offset within the file where the buffer will start - - Possible types: `uint64` - - Default: (null) - -* `size`:(optional): Number of bytes from the file that will be pushed as a buffer - - Possible types: `uint64` - - 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) - -## appsrc-eos - - -``` validate-scenario -appsrc-eos, - target-element-name=(string), - [playback-time=(double,string)]; -``` - -Queues a EOS event in an appsrc. - * Implementer namespace: core - -### Parameters - -* `target-element-name`:(mandatory): The name of the appsrc to emit EOS on - - Possible types: `string` - -* `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) - -## flush - - -``` validate-scenario -flush, - target-element-name=(string), - [reset-time=(boolean)], - [playback-time=(double,string)]; -``` - -Sends FLUSH_START and FLUSH_STOP events. - * Implementer namespace: core - -### Parameters - -* `target-element-name`:(mandatory): The name of the appsrc to flush on - - Possible types: `string` - -* `reset-time`:(optional): Whether the flush should reset running time - - Possible types: `boolean` - - Default: TRUE - -* `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) - -## disable-plugin - - -``` validate-scenario -disable-plugin, - plugin-name=(string), - [as-config=(boolean)], - [playback-time=(double,string)]; -``` - -Disables a GstPlugin - * Implementer namespace: core - -### Parameters - -* `plugin-name`:(mandatory): The name of the GstPlugin to disable - - Possible types: `string` - -* `as-config`:(optional): Execute action as a config action (meaning when loading the scenario) - - Possible types: `boolean` - - Default: false - -* `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-last-sample - - -``` validate-scenario -check-last-sample, - [checksum=(string)], - [sink-factory-name=(string)], - [sink-name=(string)], - [sinkpad-caps=(string)], - [timecode-frame-number=(string)], - [playback-time=(double,string)]; -``` - -Checks the last-sample checksum or frame number (set on its GstVideoTimeCodeMeta) on declared Sink element. This allows checking the checksum of a buffer after a 'seek' or after a GESTimeline 'commit' for example - * Implementer namespace: core - -### Parameters - -* `checksum`:(optional): The reference checksum of the buffer. - - Possible types: `string` - - Default: (null) - -* `sink-factory-name`:(optional): The name of the factory of the sink element to check sample on. - - Possible types: `string` - - Default: (null) - -* `sink-name`:(optional): The name of the sink element to check sample on. - - Possible types: `string` - - 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: - - * `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) - -## crank-clock - - -``` validate-scenario -crank-clock, - [checksum=(string)], - [expected-elapsed-time=(GstClockTime)], - [expected-time=(GstClockTime)], - [sinkpad-caps=(string)], - [timecode-frame-number=(string)], - [playback-time=(double,string)]; -``` - -Crank the clock, possibly checking how much time was supposed to be waited on the clock and/or the clock running time after the crank. Using one `crank-clock` action in a scenario implies that the scenario is driving the clock and a #GstTestClock will be used. The user will need to crank it the number of time required (using the `repeat` parameter comes handy here). - * Implementer namespace: core - -### 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) - -* `expected-time`:(optional): Expected clock time after 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: - - * `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) - -## video-request-key-unit - - -``` validate-scenario -video-request-key-unit, - direction=(string), - [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)]; -``` - -Request a video key unit - * Implementer namespace: core - -### Parameters - -* `direction`:(mandatory): The direction for the event to travel, should be in - * [upstream, downstream] - - Possible types: `string` - -* `all-headers`:(optional): TRUE to produce headers when starting a new key unit - - Possible types: `boolean` - - Default: FALSE - -* `count`:(optional): integer that can be used to number key units - - Possible types: `int` - - Default: 0 - -* `pad`:(optional): The name of the GstPad to send a send force-key-unit to - - Possible types: `string` - - Default: sink - -* `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. - - Possible variables: - - * position: The current position in the stream - - * duration: The duration of the stream - - Possible types: `double or string` - - Default: (null) - -* `srcpad`:(optional): The name of the GstPad to send a send force-key-unit to - - Possible types: `string` - - Default: src - -* `target-element-factory-name`:(optional): The factory name of the GstElements to send a send force-key-unit to - - Possible types: `string` - - Default: (null) - -* `target-element-klass`:(optional): The klass of the GstElements to send a send force-key-unit to - - Possible types: `string` - - Default: Video/Encoder - -* `target-element-name`:(optional): The name of the GstElement to send a send force-key-unit to - - Possible types: `string` - - 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) - -## check-position - - -``` 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)]; -``` - -Check current pipeline position. - - * Implementer namespace: core - -### Parameters - -* `expected-position`:(mandatory): The expected pipeline position - - Possible types: `GstClockTime` - -* `all-headers`:(optional): TRUE to produce headers when starting a new key unit - - Possible types: `boolean` - - Default: FALSE - -* `count`:(optional): integer that can be used to number key units - - Possible types: `int` - - Default: 0 - -* `pad`:(optional): The name of the GstPad to send a send force-key-unit to - - Possible types: `string` - - Default: sink - -* `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. - - Possible variables: - - * position: The current position in the stream - - * duration: The duration of the stream - - Possible types: `double or string` - - Default: (null) - -* `srcpad`:(optional): The name of the GstPad to send a send force-key-unit to - - Possible types: `string` - - Default: src - -* `target-element-factory-name`:(optional): The factory name of the GstElements to send a send force-key-unit to - - Possible types: `string` - - Default: (null) - -* `target-element-klass`:(optional): The klass of the GstElements to send a send force-key-unit to - - Possible types: `string` - - Default: Video/Encoder - -* `target-element-name`:(optional): The name of the GstElement to send a send force-key-unit to - - Possible types: `string` - - 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) - -## corrupt-socket-recv - - -``` validate-scenario -corrupt-socket-recv, - errno=(string), - port=(int), - [times=(int)], - [playback-time=(double,string)]; -``` - -corrupt the next socket receive - * Implementer namespace: validatefaultinjection - -### Parameters - -* `errno`:(mandatory): errno to set when failing - - Possible types: `string` - -* `port`:(mandatory): The port the socket to be corrupted listens on - - Possible types: `int` - -* `times`:(optional): Number of times to corrupt recv, default is one - - Possible types: `int` - - Default: 1 - -* `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) - -## gtk-put-event - - -``` validate-scenario -gtk-put-event, - [keys=(string)], - [string=(string)], - [type=(string)], - [widget-name=(string)], - [playback-time=(double,string)]; -``` - -Put a GdkEvent on the event list using gdk_put_event - * Implementer namespace: validategtk - -### Parameters - -* `keys`:(optional): The keyboard keys to be used for the event, parsed with gtk_accelerator_parse_with_keycode, so refer to its documentation for more information - - Possible types: `string` - - Default: (null) - -* `string`:(optional): The string to be 'written' by the keyboard sending KEY_PRESS GdkEvents - - Possible types: `string` - - Default: (null) - -* `type`:(optional): The event type to get executed. the string should look like the ones in GdkEventType but without the leading 'GDK_'. It is not mandatory as it can be computed from other present fields (e.g, an action with 'keys' will consider the type as 'key_pressed' by default). - - Possible types: `string` - - Default: (null) - -* `widget-name`:(optional): The name of the target GdkWidget of the GdkEvent. That widget has to contain a GdkWindow. If not specified, the event will be sent to the first toplevel window - - Possible types: `string` - - 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) - -## set-subtitle - - -``` validate-scenario -set-subtitle, - subtitle-file=(string (A URI)), - [playback-time=(double,string)]; -``` - -Action to set a subtitle file to use on a playbin pipeline. -The subtitles file that will be used should be specified -relative to the playbin URI in use thanks to the subtitle-file -action property. You can also specify a folder with subtitle-dir -For example if playbin.uri='file://some/uri.mov' -and action looks like 'set-subtitle, subtitle-file=en.srt' -the subtitle URI will be set to 'file:///some/uri.mov.en.srt' - - * Implementer namespace: validate-launcher - -### Parameters - -* `subtitle-file`:(mandatory): Sets a subtitles file on a playbin pipeline - - Possible types: `string (A URI)` - -* `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) diff --git a/docs/gst-validate-config.md b/docs/gst-validate-config.md deleted file mode 100644 index 90911d309a..0000000000 --- a/docs/gst-validate-config.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Configuration -short-description: GstValidate configuration -... - -# GstValidate Configuration - -GstValidate comes with some possible configuration files -to setup its plugins and core behaviour. The config format is very similar -to the [scenario](gst-validate-scenarios.md) file format. - -You can check the [ssim plugin](plugins/ssim.md) -and the [validate flow plugin](gst-validate-flow.md) -for examples. - -## Core settings parameters - -Config name should be `core`. - -### `verbosity` - -Default: `position` - -See [GstValidateVerbosityFlags](GstValidateVerbosityFlags) for possible values. - -### `action` - -The [action type](gst-validate-action-types.md) to execute, the action type -must be a CONFIG action or the action type must have a `as-config` argument. When the `action` -is specified in a parameter, a validate action is executed using the other parameters of the -config as configuration for the validate scenario action. - -#### Example: - -``` -GST_VALIDATE_CONFIG="core, action=set-property, target-element-name="videotestsrc0", property-name=pattern, property-value=blue" gst-validate-1.0 videotestsrc ! autovideosink -``` - -This will execute the `set-property, target-element-name="videotestsrc0", -property-name=pattern, property-value=blue` validate action directly from the -config file - -### `scenario-action-execution-interval` - -Default: `0` meaning that action are executed in `idle` callbacks. - -Set the interval between [GstValidateScenario](gst-validate-scenarios.md) actions execution. - -### `max-latency` - -Default: `GST_CLOCK_TIME_NONE` - disabled - -Set the maximum latency reported by the pipeline, over that defined latency the scenario will report -an `config::latency-too-high` issue. - -### `max-dropped` - -Default: `GST_CLOCK_TIME_NONE` - disabled - -The maximum number of dropped buffers, a `config::too-many-buffers-dropped` issue will be reported -if that limit is reached. - -### `fail-on-missing-plugin` - -Default: `false` meaning that tests are marked as skipped when a GStreamer plugin is missing. - -## Variables - -You can use variables in the configs the same way you can set them in -[gst-validate-scenarios](gst-validate-scenarios.md). - -Defaults variables are: - -- `$(TMPDIR)`: The default temporary directory as returned by `g_get_tmp_dir`. -- `$(CONFIG_PATH)`: The path of the running scenario. -- `$(CONFIG_DIR)`: The directory the running scenario is in. -- `$(CONFIG_NAME)`: The name of the config file -- `$(LOGSDIR)`: The directory where to place log files. This uses the - `GST_VALIDATE_LOGSDIR` environment variable if available or `$(TMPDIR)` if - the variables hasn't been set. (Note that the - [gst-validate-launcher](gst-validate-launcher.md) set the environment - variables). - -You can also set you own variables by using the `set-vars=true` argument: - -``` yaml -core, set-vars=true, log-path=$(CONFIG_DIR/../log) -``` - -It is also possible to set global variables (also usable from -[scenarios](gst-validate-scenarios.md)) with: - -``` yaml -set-globals, TESTSUITE_ROOT_DIR=$(CONFIG_DIR) -``` - -## `change-issue-severity` settings parameters - -You can change issues severity with the `change-issue-severity` configuration -with the following parameters: - -* `issue-id`: The GQuark name of the issue, for example: `event::segment-has-wrong-start`, - You can use `gst-validate-1.0 --print-issue-types` to list all issue types. -* `new-severity`: The new [`severity`](GstValidateReportLevel) of the issue -* `element-name` (*optional*): The name of the element the severity - change applies to -* `element-factory-name` (*optional*): The element factory name of the elements the - severity change applies to -* `element-classification` (*optional*): The classification of the elements the - severity change applies to diff --git a/docs/gst-validate-environment-variables.md b/docs/gst-validate-environment-variables.md deleted file mode 100644 index 6cf48f9c3c..0000000000 --- a/docs/gst-validate-environment-variables.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Environment variables -short-description: Environment variables influencing runtime behaviour -... - -# GstValidate Environment Variables - -The runtime behaviour of GstValidate applications can be influenced by a -number of environment variables. - -**GST_VALIDATE.** - -This environment variable can be set to a list of debug options, which -cause GstValidate to print out different types of test result -information and consider differently the level of the reported issues. - -* `fatal-criticals`: Causes GstValidate to consider only critical issues as import enough - to consider the test failed (default behaviour) -* `fatal-warnings`: Causes GstValidate to consider warning, and critical issues as - import enough to consider the test failed -* `fatal-issues`: Causes GstValidate to consider issue, warning, and critical issues - as import enough to consider the test failed -* `print-issues`: Causes GstValidate to print issue, warning and critical issues in - the final reports (default behaviour) -* `print-warnings`: Causes GstValidate to only print warning and critical issues in the - final reports -* `print-criticals`: Causes GstValidate to only print critical issues in the final - reports - -**GST_VALIDATE_FILE.** - -Set this variable to a colon-separated list of paths to redirect all -GstValidate messages to this file. If left unset, debug messages will be -outputed into the standard error. - -You can use the special names `stdout` and `stderr` to use those output. - -**GST_VALIDATE_SCENARIOS_PATH.** - -Set this variable to a colon-separated list of paths. GstValidate will -scan these paths for GstValidate scenario files. By default GstValidate -will look for scenarios in the user data directory as specified in the -[XDG standard]: -`.local/share/gstreamer-GST_API_VERSION/validate/scenarios` and the -system wide user data directory: -`/usr/lib/gstreamer-GST_API_VERSION/validate/scenarios` - -**GST_VALIDATE_CONFIG.** - -Set this variable to a colon-separated list of paths to GstValidate -config files or directly as a string in the GstCaps serialization -format. The config file has a format similar to the scenario file. The -name of the configuration corresponds to the name of the plugin the -configuration applies to. - -The special name "core" is used to configure GstValidate core -functionalities (monitors, scenarios, etc...). - -If you want to make sure to set a property on a element of a type (for -example to disable QoS on all sinks) you can do: - -``` -core, action=set-property, target-element-klass=Sink -``` - -If you want the GstPipeline to get dumped when an issue of a certain -level (and higher) happens, you can do: - -``` -core, action=dot-pipeline, report-level=issue -``` - -Note that you will still need to set GST_DEBUG_DUMP_DOT_DIR. - -For more examples you can look at the ssim GstValidate plugin -documentation to see how to configure that plugin. - -You can also check that a src pad is pushing buffers at a minimum -frequency. For example to check if v4l2src is producing at least 60 frames -per second you can do: - -``` yaml - core,min-buffer-frequency=60,target-element-factory-name=v4l2src -``` - -This config accepts the following fields: -- `min-buffer-frequency`: the expected minimum rate, in buffers per - second, at which buffers are pushed on the pad - -- `target-element-{factory-name,name,klass}`: the factory-name, object - name or class of the element to check - -- `name`: (optional) only check the frequency if the src pad has this - name - -- `buffer-frequency-start`: (optional) if defined, validate will - ignore the frequency of the pad during the time specified in this - field, in ns. This can be useful when testing live pipelines where - configuring and setting up elements can take some time slowing down - the first buffers until the pipeline reaches its cruising speed. -**GST_VALIDATE_OVERRIDE.** - -Set this variable to a colon-separated list of dynamically linkable -files that GstValidate will scan looking for overrides. By default -GstValidate will look for scenarios in the user data directory as -specified in the [XDG standard]: -`.local/share/gstreamer-GST_API_VERSION/validate/scenarios` and the -system wide user data directory: -`/usr/lib/gstreamer-GST_API_VERSION/validate/scenarios` - -**GST_VALIDATE_SCENARIO_WAIT_MULITPLIER.** - -A decimal number to set as a multiplier for the wait actions. For -example if you set `GST_VALIDATE_SCENARIO_WAIT_MULITPLIER=0.5`, for a -wait action that has a duration of 2.0 the waiting time will only be of -1.0 second. If set to 0, wait action will be ignored. - -**GST_VALIDATE_REPORTING_DETAILS.** - -The reporting level can be set through the -GST_VALIDATE_REPORTING_DETAILS environment variable, as a -comma-separated list of (optional) object categories / names and levels. -Omit the object category / name to set the global level. - -Examples: - -``` -GST_VALIDATE_REPORTING_DETAILS=synthetic,h264parse:all -GST_VALIDATE_REPORTING_DETAILS=none,h264parse::sink_0:synthetic -``` - -Levels being: - -* `none`: No debugging level specified or desired. Used to deactivate - debugging output. -* `synthetic`: Summary of the issues found, with no details. -* `subchain`: If set as the default level, similar issues can be reported multiple - times for different subchains. If set as the level for a particular - object (`my_object:subchain`), validate will report the issues where - the object is the first to report an issue for a subchain. -* `monitor`: If set as the default level, all the distinct issues for all the - monitors will be reported. If set as the level for a particular - object, all the distinct issues for this object will be reported. - Note that if the same issue happens twice on the same object, up - until this level that issue is only reported once. -* `all`: All the issues will be reported, even those that repeat themselves - inside the same object. This can be **very** verbose if set - globally. - -Setting the reporting level allows to control the way issues are -reported when calling [gst_validate_runner_printf()](gst_validate_runner_printf). - - [XDG standard]: http://www.freedesktop.org/wiki/Software/xdg-user-dirs/ diff --git a/docs/gst-validate-flow.md b/docs/gst-validate-flow.md deleted file mode 100644 index 6e67f0ecc7..0000000000 --- a/docs/gst-validate-flow.md +++ /dev/null @@ -1,196 +0,0 @@ ---- -title: Validate Flow -short-description: Validate a pad data flow -... - -# Validate Flow - -Validate Flow — GStreamer validate component to record a log of buffers and -events flowing in a specified pad and compare it with an expectation file. - -## Description - -This component exists for the purpose of testing non-regular-playback use cases -where the test author specifies the full pipeline, a series of actions and needs -to check whether the generated buffers and events make sense. - -The testing procedure goes like this: - -1. The test author writes a [.validatetest](gst-validate-test-file.md) test - where validateflow is used. A pad where monitoring will occur is specified - and possibly a list of [actions](gst-validate-action-types.md) to run can - also be specified. - -2. The test author runs the test with the desired pipeline, the configuration - and the actions. Since an expectation file does not exist at - this point, validateflow will create one. The author should check its - contents for any missing or unwanted events. No actual checking is done by - validateflow in this step, since there is nothing to compare to yet. - -3. Further executions of the test will also record the produced buffers and - events, but now they will be compared to the previous log (expectation file). - Any difference will be reported as a test failure. The original expectation - file is never modified by validateflow. Any desired changes can be made by - editing the file manually or deleting it and running the test again. - -## Example - -### Simplest example - -The following is an example of a `fakesrc.simple.validatetest` file using -validateflow. - -{{ fakesrc.simple.validatetest.ini }} - -Then generate the expectation file with: - -``` bash -gst-validate-1.0 --set-test-file /path/to/fakesrc.simple.validatetest -``` - -This will generate the -`/path/to/fakesrc.simple/flow-expectations/log-sink-sink-expected` file -containing: - -{{ plugins/fakesrc.simple/flow-expectations/log-sink-sink-expected.log }} - -Note that the test will be marked as "SKIPPED" when we generate expectation -files. - -The test can now be run with: - -``` -gst-validate-1.0 --set-test-file /path/to/fakesrc.simple.validatetest -``` - -### Example controlling the source - -The following is an example of the `qtdemux_change_edit_list.validatetest` file using validateflow. - -``` ini -set-globals, media_dir="$(test_dir)/../../../medias/" -meta, - seek=false, - handles-states=false, - args = { - "appsrc ! qtdemux ! fakesink async=false", - }, - configs = { - "$(validateflow), pad=fakesink0:sink, record-buffers=false", - } - -# Scenario action types -appsrc-push, target-element-name=appsrc0, file-name="$(media_dir)/fragments/car-20120827-85.mp4/init.mp4" -appsrc-push, target-element-name=appsrc0, file-name="$(media_dir)/fragments/car-20120827-85.mp4/media1.mp4" -checkpoint, text="A moov with a different edit list is now pushed" -appsrc-push, target-element-name=appsrc0, file-name="$(media_dir)/fragments/car-20120827-86.mp4/init.mp4" -appsrc-push, target-element-name=appsrc0, file-name="$(media_dir)/fragments/car-20120827-86.mp4/media2.mp4" -stop -``` - -This example shows the elements of a typical validate flow test (a pipeline, a -config and a scenario). Some actions typically used together with validateflow -can also be seen. Notice variable interpolation is used to fill absolute paths -for media files in the scenario (`$(test_dir)`). In the configuration, -`$(validateflow)` is expanded to something like this, containing proper paths -for expectations and actual results (these values are interpolated from the -`.validatetest` file location): - -``` ini -validateflow, expectations-dir="/validate/test/file/path/validateqtdemux_change_edit_list/flow-expectations/", actual-results-dir="$(GST_VALIDATE_LOGSDIR)/logs/validate/launch_pipeline/qtdemux_change_edit_list" -``` - -The resulting log looks like this: - -``` ini -event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1; -event caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)2.1, profile=(string)main, codec_data=(buffer)014d4015ffe10016674d4015d901b1fe4e1000003e90000bb800f162e48001000468eb8f20, width=(int)426, height=(int)240, pixel-aspect-ratio=(fraction)1/1; -event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=0:00:00.000000000 -event tag: GstTagList-stream, taglist=(taglist)"taglist\,\ video-codec\=\(string\)\"H.264\\\ /\\\ AVC\"\;"; -event tag: GstTagList-global, taglist=(taglist)"taglist\,\ datetime\=\(datetime\)2012-08-27T01:00:50Z\,\ container-format\=\(string\)\"ISO\\\ fMP4\"\;"; -event tag: GstTagList-stream, taglist=(taglist)"taglist\,\ video-codec\=\(string\)\"H.264\\\ /\\\ AVC\"\;"; -event caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)2.1, profile=(string)main, codec_data=(buffer)014d4015ffe10016674d4015d901b1fe4e1000003e90000bb800f162e48001000468eb8f20, width=(int)426, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)24000/1001; - -CHECKPOINT: A moov with a different edit list is now pushed - -event caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)main, codec_data=(buffer)014d401effe10016674d401ee8805017fcb0800001f480005dc0078b168901000468ebaf20, width=(int)640, height=(int)360, pixel-aspect-ratio=(fraction)1/1; -event segment: format=TIME, start=0:00:00.041711111, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=0:00:00.041711111 -event tag: GstTagList-stream, taglist=(taglist)"taglist\,\ video-codec\=\(string\)\"H.264\\\ /\\\ AVC\"\;"; -event tag: GstTagList-stream, taglist=(taglist)"taglist\,\ video-codec\=\(string\)\"H.264\\\ /\\\ AVC\"\;"; -event caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)main, codec_data=(buffer)014d401effe10016674d401ee8805017fcb0800001f480005dc0078b168901000468ebaf20, width=(int)640, height=(int)360, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)24000/1001; -``` - -## Configuration - -In order to use the plugin a validate configuration must be provided, -containing a line starting by `validateflow` followed by a number of settings. -Every `validateflow` line creates a `ValidateFlowOverride`, which listens to a -given pad. A test may have several `validateflow` lines, therefore having -several overrides and listening to different pads with different settings. - -* `pad`: Required. Name of the pad that will be monitored. -* `record-buffers`: Default: false. Whether buffers will be logged. By default - only events are logged. -* `buffers-checksum`: Default: 'none'. Define the type of checksums to be used - valid values are: - * `none`: No checksum recorded - * `as-id`: Record checksum as 'ids' where the IDs are incremented on each new - checksum passed in - * `md5`: md5 checksum - * `sha1`: sha1 checksum - * `sha256`: sha256 checksum - * `sha512`: sha512 checksum - * *Note*: for backward compatibility reasons, this can be passed as a - boolean and it will default to 'sha1' if true, 'none' if false. -* `ignored-fields`: Default: `"stream-start={ stream-id }"` (as they are often - non reproducible). Key with a serialized GstValueList(str) of fields to not - record. -* `logged-fields`: Default: `NULL` Key with a serialized GstValueList(str) of - fields to record, eg. `logged-event-fields="stream-start={flags}, - caps={width, height, framerate}, buffer={pts}"`. Overrides - `ignored-event-fields` for specified event types. -* `ignored-event-types`: Default: `{ }`. List of event type names to not record -* `logged-event-types`: Default: `NULL`. List of event type names to not record, - if noone provided, all events are logged, except the ones defined in the - `ignored-event-types`. -* `expectations-dir`: Path to the directory where the expectations will be - written if they don't exist, relative to the current working directory. By - default the current working directory is used, but this setting is usually - set automatically as part of the `%(validateflow)s` expansion to a correct - path like `~/gst-validate/gst-integration-testsuites/flow-expectations/<test - name>`. -* `actual-results-dir`: Path to the directory where the events will be recorded. - The expectation file will be compared to this. By default the current working - directory is used, but this setting is usually set automatically as part of - the `%(validateflow)s` expansion to the test log directory, i.e. - `~/gst-validate/logs/validate/launch_pipeline/<test name>`. -* `generate-expectations`: Default: unset. When set to `true` the expectation - file will be written and no testing will be done and if set to `false`, the - expectation file will be required. If a validateflow config is used without - specifying any other parametters, the validateflow plugin will consider that - all validateflow overrides will use that value. - - -## Scenario actions - -Scenarios with validateflow work in the same way as other tests. Often -validatetests will use appsrc in order to control the flow of data precisely, -possibly interleaving events in between. The following is a list of useful -actions. - - * `appsrc-push`: Pushes a buffer from an appsrc element and waits for the chain - operation to finish. A path to a file is provided, optionally with an offset - and/or size. - * `appsrc-eos`: Queues an EOS event from the appsrc. The action finishes - immediately at this point. - * `stop`: Tears down the pipeline and stops the test. - * `checkpoint`: Records a "checkpoint" message in all validateflow overrides, - with an optional explanation message. This is useful to check certain events - or buffers are sent at a specific moment in the scenario, and can also help - to the comprehension of the scenario. - -More details on these actions can be queried from the command line, like this: - -``` bash -gst-validate-1.0 --inspect-action-type appsrc-push -``` diff --git a/docs/gst-validate-launcher.md b/docs/gst-validate-launcher.md deleted file mode 100644 index b30db1558c..0000000000 --- a/docs/gst-validate-launcher.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -short-description: Integration testsuite builder and launcher -... - -# gst-validate-launcher - -`gst-validate-launcher` is an application to run unit or integration testsuites -providing a set of options and features to help debugging them. - -## Run the GStreamer unit tests - -Running GStreamer unit tests inside `gst-build` is as simple as doing: - -``` -gst-validate-launcher check.gst* -``` - -If you only want to run GStreamer core tests: - -``` -gst-validate-launcher check.gstreamer* -``` - -Or to run unit tests from gst-plugins-base - -``` -gst-validate-launcher check.gst-plugins-base -``` - -You can also run them inside valgrind with the `-vg` option or inside gdb with -`--gdb` for example. - -## Run the GstValidate default testsuite - -GstValidate comes with a default testsuite to be executed on a default -set of media samples. Those media samples are stored with `git-lfs` so -you will need it to be able to launch the default testsuite. - -We recommend using `gst-build` to setup everything needed to run the testsuite -and you can simply do: - - gst-validate-launcher validate - -This will only launch the GstValidate tests and not other applications -that might be supported (currently `ges-launch` is also supported and -has its own default testsuite). - -## Example of a testsuite implementation - -To implement a testsuite, you will have to write some simple python code -that defines the tests to be launched by `gst-validate-launcher`. - -In this example, we will assume that you want to write a whole new -testsuite based on your own media samples and [scenarios](GstValidateScenario). The -set of media files and the testsuite implementation file will be -structured as follow: - - testsuite_folder/ - |-> testsuite.py - |-> sample_files/ - |-> file.mp4 - |-> file1.mkv - |-> file2.ogv - |-> scenarios - |-> scenario.scenario - |-> scenario1.scenario - -You should generate the `.media_info` files. To generate them for local -files, you can use: - - gst-validate-launcher --medias-paths /path/to/sample_files/ --generate-media-info - -For remote streams, you should use -`gst-validate-media-check-1.0`. For an http stream you can -for example do: - - gst-validate-media-check-GST_API_VERSION http://someonlinestream.com/thestream \ - --output-file /path/to/testsuite_folder/sample_files/thestream.stream_info - - -The `gst-validate-launcher` will use the generated `.media_info` and -`.stream_info` files to validate the tests as those contain the -necessary information. - -Then you will need to write the `testsuite.py` file. You can for example -implement the following testsuite: - -``` python -""" -The GstValidate custom testsuite -""" - -import os -from launcher.baseclasses import MediaFormatCombination -from launcher.apps.gstvalidate import * -TEST_MANAGER = "validate" - -KNOWN_ISSUES = {} - -def setup_tests(test_manager, options): - print("Setting up the custom testsuite") - assets_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".", "samples_files")) - options.add_paths(assets_dir) - - # This step will register default data for the test manager: - # - scenarios such as `play_15s`, `reverse_playback` etc. - # - encoding formats such as "mp4,h264,mp3" etc. - # - blacklist such as dash.media_check.* - # - test generators: - # - GstValidatePlaybinTestsGenerator - # - GstValidateMediaCheckTestsGenerator - # - GstValidateTranscodingTestsGenerator - # This 'defaults' can be found in 'gst-devtools/validate/launcher/apps/gstvalidate.py#register_defaults' - # test_manager.register_defaults() - - # Add scenarios - scenarios = [] - scenarios.append("play_5s") - scenarios.append("seek_backward") - test_manager.set_scenarios(scenarios) - - # Add encoding formats used by the transcoding generator - test_manager.add_encoding_formats([ - MediaFormatCombination("mp4", "mp3", "h264"),]) - - # Add generators - # GstValidatePlaybinTestsGenerator needs at least one media file - test_manager.add_generators([GstValidateMediaCheckTestsGenerator(test_manager)]) - # GstValidatePlaybinTestsGenerator needs at least one scenario - test_manager.add_generators([GstValidatePlaybinTestsGenerator(test_manager)]) - # GstValidateTranscodingTestsGenerator needs at least one MediaFormatCombination - test_manager.add_generators([GstValidateTranscodingTestsGenerator(test_manager)]) - - # list of combo to blacklist tests. Here it blacklists all tests with playback.seek_backward - test_manager.set_default_blacklist([ - ("custom_testsuite.file.playback.seek_backward.*", - "Not supported by this testsuite."),]) - - # you can even pass known issues to bypass an existing error in your custom testsuite - test_manager.add_expected_issues(KNOWN_ISSUES) - return True -``` - -Once this is done, you've got a testsuite that will: - -- Run playbin pipelines on `file.mp4`, `file1.mkv` and `file2.ogv`> - executing `play_5s` and `seek_backward` scenarios - -- Transcode `file.mp4,` `file1.mkv` and `file2.ogv` to h264 and - mp3 in a MP4 container - -The only thing to do to run the testsuite is: - - - gst-validate-launcher --testsuites-dir=/path/to/testsuite_folder/ testsuite - - -# Invocation - -You can find detailed information about the launcher by launching it: - - gst-validate-launcher --help - -You can list all the tests with: - - gst-validate-launcher --testsuites-dir=/path/to/testsuite_folder/ testsuite -L diff --git a/docs/gst-validate-media-check.md b/docs/gst-validate-media-check.md deleted file mode 100644 index d99c88779e..0000000000 --- a/docs/gst-validate-media-check.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -short-description: Tool to test GStreamer media types discovery -... - -# gst-validate-media-check - -`gst-validate-media-check` is command line tool checking that media -files discovering works properly with `gst-discoverer` over multiple -runs. It needs a reference text file containing valid information about -a media file (which can be generated with the same tool) and then it -will be able to check that the reference matches what will be reported -by `gst-discoverer` in the following runs. - -For example, given that we have a valid `reference.media_info` file, we -can run: - - gst-validate-media-check-GST_API_VERSION file:///./file.ogv --expected-results reference.media_info - -It will then output any error encountered and return an exit code -different from 0 if any error is found. - -# Invocation - -`gst-validate-media-check` takes an URI to analyze and some extra -options to control the output. - -## Options - -* `-o`, `--output-file`: The output file to store the results. -* `-f`, `--full`: Fully analize the file frame by frame. -* `-e`, `--expected-results`: Path to file containing the expected results (or the last results - found) for comparison with new results. diff --git a/docs/gst-validate-scenarios.md b/docs/gst-validate-scenarios.md deleted file mode 100644 index af25217692..0000000000 --- a/docs/gst-validate-scenarios.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Scenarios -short-description: The GstValidate Scenario format -... - -# GstValidate Scenario File Format - -To be able to define a list of actions to execute on a [`GstPipeline`], -a dedicated file format is used. The name of the scenario is the name of -the file without its `.scenario` extension. The scenario file format is -based on the [`GstStructure`] serialized format which is a basic, type -aware, key value format. It takes the type of the action in the first -comma separated field, and then some key value pairs in the form -`parameter=value` separated by commas. The values type will be guessed -if not casted as in `parameter=(string)value`. You can force the type -guessing system to actually know what type you want by giving it the -right hints. For example to make sure the value is a double, you should -add a decimal (ie. `1` will be considered as a `int`, but `1.0` will be -considered as a `double` and `"1.0"` will be considered as a `string`). - -For example to represent a seek action, you should add the following -line in the `.scenario` file. - - seek, playback-time=10.0, start=0.0, flags=accurate+flush - -The files to be used as scenario should have a `.scenario` extension and -should be placed either in -`$USER_DATA_DIR/gstreamer-1.0/validate/scenarios` , -`$GST_DATADIR/gstreamer-1.0/validate/scenarios` or in a path defined in -the \$GST\_VALIDATE\_SCENARIOS\_PATH environment variable. - -Each line in the `.scenario` file represent an action (you can also use -`\ ` at the end of a line write a single action on multiple lines). -Usually you should start you scenario with a `meta` structure -in order for the user to have more information about the -scenario. It can contain a `summary` field which is a string explaining -what the scenario does and then several info fields about the scenario. -You can find more info about it running: - - gst-validate-1.0 --inspect-action-type action_type_name - -So a basic scenario file that will seek three times and stop would look -like: - -``` -meta, summary="Seeks at 1.0 to 2.0 then at \ -3.0 to 0.0 and then seeks at \ -1.0 to 2.0 for 1.0 second (between 2.0 and 3.0).", \ -seek=true, duration=5.0, min-media-duration=4.0 -seek, playback-time=1.0, rate=1.0, start=2.0, flags=accurate+flush -seek, playback-time=3.0, rate=1.0, start=0.0, flags=accurate+flush -seek, playback-time=1.0, rate=1.0, start=2.0, stop=3.0, flags=accurate+flush -``` - -Many action types have been implemented to help users define their own -scenarios. For example there are: - -- `seek`: Seeks into the stream. -- `play`: Set the pipeline state to `GST_STATE_PLAYING`. -- `pause`: Set the pipeline state to `GST_STATE_PAUSED`. -- `stop`: Stop the execution of the pipeline. - -> **NOTE**: This action actually posts a [`GST_MESSAGE_REQUEST_STATE`] -> message requesting [`GST_STATE_NULL`] on the bus and the application -> should quit. - -To get all the details about the registered action types, you can list -them all with: - -``` -gst-validate-1.0 --inspect-action-type -``` - -and to include transcoding specific action types: - -``` -gst-validate-transcoding-1.0 --inspect-action-type -``` - -Many scenarios are distributed with `gst-validate`, you can list them -all using: - -``` -gst-validate-1.0 --list-scenarios -``` - -You can find more information about the scenario implementation and -action types in the [`GstValidateScenario` section]. - - [`GstPipeline`]: GstPipeline - [`GstStructure`]: GstStructure - [`GST_MESSAGE_REQUEST_STATE`]: GST_MESSAGE_REQUEST_STATE - [`GST_STATE_NULL`]: GST_STATE_NULL - [`GstValidateScenario` section]: GstValidateScenario - -## Default variables - -Any action can use the default variables: - -- `$(position)`: The current position in the pipeline as reported by - [gst_element_query_position()](gst_element_query_position) -- `$(duration)`: The current duration of the pipeline as reported by - [gst_element_query_duration()](gst_element_query_duration) -- `$(TMPDIR)`: The default temporary directory as returned by `g_get_tmp_dir`. -- `$(SCENARIO_PATH)`: The path of the running scenario. -- `$(SCENARIO_DIR)`: The directory the running scenario is in. -- `$(SCENARIO_NAME)`: The name the running scenario - - -It is also possible to set variables in scenario with the `set-vars` action.
\ No newline at end of file diff --git a/docs/gst-validate-test-file.md b/docs/gst-validate-test-file.md deleted file mode 100644 index c743618583..0000000000 --- a/docs/gst-validate-test-file.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Test file -short-description: GstValidate test file -... - -# GstValidate Test file - -A `.validatetest` file describes a fully contained validate test case. It -includes the arguments of the tool supposed to be used to run the test as well -as possibly a [configuration](gst-validate-config.md) and a set of action to -describe the validate [scenario](gst-validate-scenarios.md). - -# The file format - -A validate test file requires a `meta` structure which contains the same -information as the [scenario](gst-validate-scenarios.md) `meta` with some -additional fields described below. The `meta` structure should be either the -first or the one following the `set-globals` structure. The `set-globals` -structures allows you to set global variables for the rest of the -`.validatetest` file and is a free form variables setter. For example you can -do: - -``` yaml -set-globals, media_dir=$(test_dir)/../../media -``` - -## Tool arguments - -In the case of [`gst-validate`](gst-validate.md) it **has to** contain an -`args` field with `gst-validate` argv arguments like: - -``` yaml -# This is the default tool so it is not mandatory for the `gst-validate` tool -tool = "gst-validate-$(gst_api_version)", -args = { - # pipeline description - videotestrc num-buffers=2 ! $(videosink), - # Random extra argument - --set-media-info $(test-dir)/some.media_info -} -``` - -## configs - -The `configs` field is an array of structures containing the same content as -usual [configs](gst-validate-config.md) files. - -For example: - -``` yaml -configs = { - # Set videotestsrc0 pattern value to `blue` - "core, action=set-property, target-element-name=videotestsrc0, property-name=pattern, property-value=blue", - "$(validateflow), pad=sink1:sink, caps-properties={ width, height };", -} -``` - -Note: Since this is GstStructure synthax, we need to have the structures in the -array as strings/within quotes. - -## expected-issues - -The `expected-issues` field is an array of `expected-issue` structures containing -information about issues to expect (which can be known bugs or not). - -Use `gst-validate-1.0 --print-issue-types` to print information about all issue types. - -For example: - -``` yaml -expected-issues = { - "expected-issue, issue-id=scenario::not-ended", -} -``` - -Note: Since this is GstStructure synthax, we need to have the structures in the -array as strings/within quotes. - -### Fields: - -* `issue-id`: (string): Issue ID - Mandatory if `summary` is not provided. -* `summary`: (string): Summary - Mandatory if `issue-id` is not provided. -* `details`: Regex string to match the issue details `detected-on`: (string): - The name of the element the issue happened on `level`: (string): - Issue level -* `sometimes`: (boolean): Default: `false` - Wheteher the issue happens only - sometimes if `false` and the issue doesn't happen, an error will - be issued. -* `issue-url`: (string): The url of the issue in the bug tracker if the issue is - a bug. - -### Variables - -The same way - -Validate testfile will define some variables to make those files relocable: - -* `$(test_dir)`: The directory where the `.validatetest` file is in. - -* `$(test_name)`: The name of the test file (without extension). - -* `$(test_name_dir)`: The name of the test directory (test_name with folder - separator instead of `.`). - -* `$(validateflow)`: The validateflow structure name with the default/right - values for the `expectations-dir` and `actual-results-dir` - fields. See [validateflow](gst-validate-flow.md) for more - information. - -* `$(videosink)`: The GStreamer videosink to use if the test can work with - different sinks for the video. It allows the tool to use - fakesinks when the user doesn't want to have visual feedback - for example. - -* `$(audiosink)`: The GStreamer audiosink to use if the test can work with - different sinks for the audio. It allows the tool to use - fakesinks when the user doesn't want to have audio feedback - for example. diff --git a/docs/gst-validate-transcoding.md b/docs/gst-validate-transcoding.md deleted file mode 100644 index 419dca1878..0000000000 --- a/docs/gst-validate-transcoding.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -short-description: Tool to test GStreamer components -... - -# gst-validate-transcoding - -`gst-validate-transcoding` is tool to create media files transcoding -pipelines running inside the GstValidate monitoring infrastructure. - -You can for example transcode any media file to Vorbis audio + VP8 video -in a WebM container by doing: - - gst-validate-transcoding-GST_API_VERSION file:///./file.ogg file:///.../transcoded.webm -o 'video/webm:video/x-vp8:audio/x-vorbis' - -`gst-validate-transcoding` will list every issue encountered during the -execution of the transcoding operation in a human readable report like -the one below: - - issue : buffer is out of the segment range Detected on theoradec0.srcpad - at 0:00:00.096556426 Details : buffer is out of segment and shouldn't be - pushed. Timestamp: 0:00:25.000 - duration: 0:00:00.040 Range: - 0:00:00.000 - 0:00:04.520 Description : buffer being pushed is out of - the current segment's start-stop range. Meaning it is going to be - discarded downstream without any use - -The return code of the process will be 18 in case a `CRITICAL` issue has -been found. - -## The encoding profile serialization format - -This is the serialization format of a [GstEncodingProfile](GstEncodingProfile). - -Internally the transcoding application uses [GstEncodeBin](encodebin). -`gst-validate-transcoding-GST_API_VERSION` uses its own serialization -format to describe the [`GstEncodeBin.profile`](encodebin:profile) property of the -encodebin. - -The simplest serialized profile looks like: - - muxer_source_caps:videoencoder_source_caps:audioencoder_source_caps - -For example to encode a stream into a WebM container, with an OGG audio -stream and a VP8 video stream, the serialized [GstEncodingProfile](GstEncodingProfile) -will look like: - - video/webm:video/x-vp8:audio/x-vorbis - -You can also set the preset name of the encoding profile using the -caps+preset\_name syntax as in: - - video/webm:video/x-vp8+youtube-preset:audio/x-vorbis - -Moreover, you can set the [presence](gst_encoding_profile_set_presence) property -of an encoding profile using the `|presence` syntax as in: - - video/webm:video/x-vp8|1:audio/x-vorbis - -This field allows you to specify how many times maximum a -[GstEncodingProfile](GstEncodingProfile) can be used inside an encodebin. - -You can also use the `restriction_caps->encoded_format_caps` syntax to -specify the [restriction caps](GstEncodingProfile:restriction-caps) -to be set on a [GstEncodingProfile](GstEncodingProfile). It -corresponds to the restriction [GstCaps](GstCaps) to apply before the encoder -that will be used in the profile. The fields present in restriction caps -are properties of the raw stream (that is, before encoding), such as -height and width for video and depth and sampling rate for audio. This -property does not make sense for muxers. - -To force a video stream to be encoded with a Full HD resolution (using -WebM as the container format, VP8 as the video codec and Vorbis as the -audio codec), you should use: - - video/webm:video/x-raw,width=1920,height=1080->video/x-vp8:audio/x-vorbis - -### Some serialized encoding formats examples: - -MP3 audio and H264 in MP4: - -<div class="informalexample"> - - video/quicktime,variant=iso:video/x-h264:audio/mpeg,mpegversion=1,layer=3 - -</div> - -Vorbis and theora in OGG: - -<div class="informalexample"> - - application/ogg:video/x-theora:audio/x-vorbis - -</div> - -AC3 and H264 in MPEG-TS: - -<div class="informalexample"> - - video/mpegts:video/x-h264:audio/x-ac3 - -</div> - -# Invocation - -`gst-validate-transcoding` takes and input URI and an output URI, plus a -few options to control how transcoding should be tested. - -## Options - -* `--set-scenario`: Let you set a scenario, it can be a full path to a scenario file or - the name of the scenario (name of the file without the `.scenario` - extension). -* `-l`, `--list-scenarios`: List the avalaible scenarios that can be run. -* `--scenarios-defs-output-file`: The output file to store scenarios details. Implies - `--list-scenario`. -* `-t`, `--inspect-action-type`: Inspect the avalaible action types with which to write scenarios if - no parameter passed, it will list all avalaible action types - otherwize will print the full description of the wanted types. -* `--set-configs`: Let you set a config scenario. The scenario needs to be set as - `config`. You can specify a list of scenarios separated by `:`. It - will override the GST\_VALIDATE\_SCENARIO environment variable. -* `-e`, `--eos-on-shutdown`: If an EOS event should be sent to the pipeline if an interrupt is - received, instead of forcing the pipeline to stop. Sending an EOS - will allow the transcoding to finish the files properly before - exiting. -* `-r`, `--force-reencoding`: Whether to try to force reencoding, meaning trying to only remux if - possible, defaults to `TRUE`. diff --git a/docs/gst-validate.md b/docs/gst-validate.md deleted file mode 100644 index 665fba67e2..0000000000 --- a/docs/gst-validate.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -short-description: Tool to test GStreamer components -... - -# gst-validate - -`gst-validate` is the simplest `gst-launch`-like pipeline launcher -running inside GstValidate monitoring infrastructure. Monitors are added -to it to identify issues in the used elements. At the end it will print -a report with some information about all the issues encountered during -its run. To view issues as they are detected, set the environment -variable `GST_DEBUG=validate:2`{.shell} and they will get printed in the -GStreamer debug log. You can basically run any [GstPipeline](GstPipeline) pipeline -using this tool. If you are not familiar with `gst-launch` syntax, -please refer to `gst-launch`'s documentation. - -Simple playback pipeline: - - gst-validate-1.0 playbin uri=file:///path/to/some/media/file - -Transcoding pipeline: - - gst-validate-1.0 filesrc location=/media/file/location ! qtdemux name=d ! queue \ - ! x264enc ! h264parse ! mpegtsmux name=m ! progressreport \ - ! filesink location=/root/test.ts d. ! queue ! faac ! m. - -It will list each issue that has been encountered during the execution -of the specified pipeline in a human readable report like: - - issue : buffer is out of the segment range Detected on theoradec0.srcpad at 0:00:00.096556426 - - Details : buffer is out of segment and shouldn't be pushed. Timestamp: 0:00:25.000 - duration: 0:00:00.040 Range: 0:00:00.000 - 0:00:04.520 - Description : buffer being pushed is out of the current segment's start-stop range. Meaning it is going to be discarded downstream without any use - -The return code of the process will be 18 in case a `CRITICAL` issue has -been found. - -# Invocation - -`gst-validate` takes a mandatory description of the pipeline to launch, -similar to `gst-launch`, and some extra options. - -## Options - -* `--set-scenario`: Let you set a scenario, it can be a full path to a scenario file or - the name of the scenario (name of the file without the `.scenario` - extension). -* `-l`, `--list-scenarios`: List the avalaible scenarios that can be run. -* `--scenarios-defs-output-file`: The output file to store scenarios details. Implies - `--list-scenario`. -* `-t`, `--inspect-action-type`: Inspect the avalaible action types with which to write scenarios if - no parameter passed, it will list all avalaible action types - otherwize will print the full description of the wanted types. -* `--set-media-info`: Set a media\_info XML file descriptor to share information about the - media file that will be reproduced. -* `--set-configs`: Let you set a config scenario. The scenario needs to be set as - `config`. You can specify a list of scenarios separated by "`:`". It - will override the GST\_VALIDATE\_SCENARIO environment variable. diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index f9cfa7ce62..0000000000 --- a/docs/index.md +++ /dev/null @@ -1,26 +0,0 @@ -# GStreamer Validate - -GstValidate is a tool that allows GStreamer developers to check that the -GstElements they write behave the way they are supposed to. It was first -started to provide plug-ins developers with a tool to check that they -use the framework the proper way. - -GstValidate implements a monitoring logic that allows the system to -check that the elements of a GstPipeline respect some rules GStreamer -components have to follow to make them properly interact together. For -example, a GstValidatePadMonitor will make sure that if we receive a -GstSegment from upstream, an equivalent segment is sent downstream -before any buffer gets out. - -Then GstValidate implements a reporting system that allows users to get -detailed informations about what was not properly handled by the -elements. The generated reports are ordered by level of importance from -"issue" to "critical". - -Some tools have been implemented to help developers validate and test -their GstElement, see [gst-validate](gst-validate.md) for example. - -On top of that, the notion of a [validation scenario](gst-validate-scenarios.md) -has been implemented so that developers can easily execute a set of actions on -pipelines to test real world interactive cases and reproduce existing -issues in a convenient way. diff --git a/docs/meson.build b/docs/meson.build deleted file mode 100644 index 75d60297c9..0000000000 --- a/docs/meson.build +++ /dev/null @@ -1,71 +0,0 @@ -build_hotdoc = false - -if meson.is_cross_build() - if get_option('doc').enabled() - error('Documentation enabled but building the doc while cross building is not supported yet.') - endif - - message('Documentation not built as building it while cross building is not supported yet.') - subdir_done() -endif - -hotdoc_p = find_program('hotdoc', required: get_option('doc')) -if not hotdoc_p.found() - message('Hotdoc not found, not building the documentation') - subdir_done() -endif - -required_hotdoc_extensions = ['gi-extension'] -if not build_gir - if get_option('doc').enabled() - error('Documentation enabled but introspection not built.') - endif - - message('Introspection not built, can\'t build the documentation') - subdir_done() -endif - -hotdoc = import('hotdoc') -foreach extension: required_hotdoc_extensions - if not hotdoc.has_extensions(extension) - if get_option('doc').enabled() - error('Documentation enabled but @0@ missing'.format(extension)) - endif - - message('@0@ extension not found, not building documentation'.format(extension)) - subdir_done() - endif -endforeach - -excludes = ['gettext.h', - 'gst-validate-internal.h', - 'gst-validate-i18n-lib.c' -] - -build_hotdoc = true -validate_excludes = [] -foreach f: excludes - validate_excludes += [join_paths(meson.current_source_dir(), '..', - 'validate', 'gst', 'validate', f)] -endforeach - -validate_sources = [] -foreach f: gstvalidate_headers + gstvalidate_sources - validate_sources += [join_paths(meson.current_source_dir(), '..', - 'validate', 'gst', 'validate', f)] -endforeach - -hotdoc = import('hotdoc') -plugins_doc = [] -libs_doc = [hotdoc.generate_doc('gst-devtools', - project_version: apiversion, - sitemap: 'sitemap.txt', - index: 'index.md', - gi_c_sources: validate_sources, - gi_c_source_filters: validate_excludes, - gi_index: 'gi-index.md', - gi_smart_index: true, - gi_sources: [validate_gir[0].full_path()], - disable_incremental_build: true, - dependencies : [validate_dep], -)] diff --git a/docs/plugins/index.md b/docs/plugins/index.md deleted file mode 100644 index 1768f822b7..0000000000 --- a/docs/plugins/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# GstValidate plugins - -GstValidate offers a plugin system to extend the checks and add new functionnality
\ No newline at end of file diff --git a/docs/plugins/ssim.md b/docs/plugins/ssim.md deleted file mode 100644 index afac334dcb..0000000000 --- a/docs/plugins/ssim.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: SSIM plugin -short_description: GstValidate plugin to detect frame corruptions -... - -# SSIM plugin - -GstValidate plugin to run the ssim algorithm on the buffers flowing in the -pipeline to find regressions and detect frame corruptions. -It allows you to generate image files from the buffers flowing in the pipeline -(either as raw in the many formats supported by GStreamer or as png) and then -check them against pre generated, reference images. - -The ssim algorithm will set a value of 1.0 when images are perfectly identical, -and -1.0 if they have nothing in common. By default we consider images as similar -if they have at least a ssim value of 0.95 but you can override it defining the value -under which the test will be considered as failed. - -Errors are reported on the GstValidate reporting system. You can also ask -the plugin to generate grey scale output images. Those will be named in a way -that should lets you precisely see where and how the test failed. - -# Configuration - -The configuration of the plugin is done through a validate configuration file, -specified with the %GST_VALIDATE_CONFIG environment variable. Each line starting -with 'ssim,' will configure the ssim plugin. In practice each configuration statement -will lead to the creation of a #GstValidateOverride object which will then dump -image files and if wanted compare those with a set of reference images. - -The following parameters can be passed in the configuration file: - - element-classification: The target element classification as define in - gst_element_class_set_metadata - - output-dir: The directory in which the image files will be saved - - min-avg-priority: (default 0.95): The minimum average similarity - under which we consider the test as failing - - min-lowest-priority: (default 1): The minimum 'lowest' similarity - under which we consider the test as failing - - reference-images-dir: Define the directory in which the files to be - compared can be found - - result-output-dir: The folder in which to store resulting grey scale - images when the test failed. In that folder you will find images - with the structural difference between the expected result and the actual - result. - - output-video-format: The format in which you want the images to be saved - - reference-video-format: The format in which the reference images are stored - - check-recurrence: The recurrence in seconds (as float) the frames should - be dumped and checked.By default it is GST_CLOCK_TIME_NONE, meaning each - and every frame is checked. Not that in any case, after a discontinuity - in the stream (after a seek or a change in the video format for example) - a check is done. And if recurrence == 0, images will be checked only after - such discontinuity - - is-config: Property letting the plugin know that the config line is exclusively - used to configure the following configuration expressions. In practice this - means that it will change the default values for the other configuration - expressions. - - framerate: (GstFraction): The framerate to use to compute frame number from - timestamp, allowing to compare frames by 'frame number' instead of trying to - match timestamp between reference images and output images. - -# Example # - -Let's take a special configuration where we want to compare frames that are -outputted by a video decoder with the ones after a agingtv element we would -call my_agingtv. We force to check one frame every 5.0 seconds only (with -check-recurrence=5.0) so the test is fast. - -The configuration file: - -``` shell - core, action=set-property, target-element-klass=Sink, property-name=sync, property-value=false - - validatessim, is-config=true, output-video-format="I420", reference-video-format="I420" - validatessim, element-classification="Video/Decoder", output-dir=/tmp/test/before-agingtv/ - validatessim, element-name=my_agingtv, output-dir=/tmp/test/after-agingtv/, \ - reference-images-dir=/tmp/test/before-agingtv/, \ - result-output-dir=/tmp/test/failures, check-recurrence=5.0 -``` - -Save that content in a file called check_agingtv_ssim.config - - -## Launch the pipeline - -``` shell - GST_VALIDATE_CONFIG=check_agingtv_ssim.config gst-validate-1.0-debug uridecodebin uri=file://a/file ! videoconvert ! agingtv name=my_agingtv ! videoconvert ! autovideosink -``` diff --git a/docs/plugins/validateflow.md b/docs/plugins/validateflow.md deleted file mode 100644 index 4112028cbe..0000000000 --- a/docs/plugins/validateflow.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -redirect: gst-validate-flow.md -... diff --git a/docs/sitemap.txt b/docs/sitemap.txt deleted file mode 100644 index 091f2ae40c..0000000000 --- a/docs/sitemap.txt +++ /dev/null @@ -1,16 +0,0 @@ -index.md - gst-validate.md - gst-validate-transcoding.md - gst-validate-media-check.md - gst-validate-launcher.md - gst-validate-scenarios.md - gst-validate-test-file.md - gst-validate-config.md - gst-validate-environment-variables.md - gst-validate-action-types.md - ges-validate-action-types.md - gst-validate-flow.md - gi-index - plugins/index.md - plugins/ssim.md - plugins/validateflow.md |