The GstValidateAction defined to be executed as part of a scenario
Only access it from the default main context.
The type of the #GstValidateAction, which is the name of the
GstValidateActionType registered with
#gst_validate_register_action_type
The name of the action, set from the user in the scenario
the #GstStructure defining the action
A newly created #GstValidateAction
The scenario executing the action
The action type
The structure containing the action arguments
Weather the action should be added to the scenario action list
Retrieve the scenario from which @action is executed.
The scenario from which the action is being executed.
The action for which to retrieve the scenario
Get a time value for the @name parameter of an action. This
method should be called to retrieve and compute a timed value of a given
action. It will first try to retrieve the value as a double,
then get it as a string and execute any formula taking into account
the 'position' and 'duration' variables. And it will always convert that
value to a GstClockTime.
%TRUE if the time value could be retrieved/computed or %FALSE otherwise
The #GstValidateScenario from which to get a time
for a parameter of an action
The action from which to retrieve the time for @name
parameter.
The name of the parameter for which to retrieve a time
The return value for the wanted time
The name of the parameter
The description of the parameter
Whether the parameter is mandatory for
a specific action type
The types the parameter can take described as a
string. It can be precisely describing how the typing works
using '\n' between the various acceptable types.
NOTE: The types should end with `(GstClockTime)` if its final
type is a GstClockTime, this way it will be processed when preparing
the actions.
The name of the variables that can be
used to compute the value of the parameter.
For example for the start value of a seek
action, we will accept to take 'duration'
which will be replace by the total duration
of the stream on which the action is executed.
The default value of a parameter as a string, should be %NULL
for mandatory streams.
Function that frees the various members of the structure when done using
GST_VALIDATE_EXECUTE_ACTION_ERROR:
GST_VALIDATE_EXECUTE_ACTION_OK:
GST_VALIDATE_EXECUTE_ACTION_ASYNC:
GST_VALIDATE_EXECUTE_ACTION_ERROR_REPORTED:
GST_VALIDATE_EXECUTE_ACTION_IN_PROGRESS:
GST_VALIDATE_EXECUTE_ACTION_NONE:
GST_VALIDATE_EXECUTE_ACTION_DONE:
The action will be executed asynchronously without blocking further
actions to be executed
Use #GST_VALIDATE_EXECUTE_ACTION_NON_BLOCKING instead.
The name of the new action type to add
The namespace of the implementer of the action type
The function to be called to execute the action
The #GstValidateActionParameter usable as parameter of the type
A description of the new type
The flags of the action type
No special flag
The action is a config
The action can be executed ASYNC
The action can be executed asynchronously but without blocking further
actions execution.
Use #GST_VALIDATE_ACTION_TYPE_NON_BLOCKING instead.
The action will be executed on 'element-added'
for a particular element type if no playback-time
is specified
The pipeline will need to be synchronized with the clock
for that action type to be used.
Do not consider the non execution of the action
as a fatal error.
The action can use the 'optional' keyword. Such action
instances will have the #GST_VALIDATE_ACTION_TYPE_NO_EXECUTION_NOT_FATAL
flag set and won't be considered as fatal if they fail.
The action can be used in config files even if it is not strictly a config
action (ie. it needs a scenario to run).
The action is checking some state from objects in the pipeline. It means that it can
be used as 'check' in different action which have a `check` "sub action", such as the 'wait' action type.
This implies that the action can be executed from any thread and not only from the scenario thread as other
types.
GStreamer Validate BinMonitor class.
Class that wraps a #GstBin for Validate checks
A #GstValidateBinMonitor
a #GstBin to run Validate on
a #GstValidateRunner
The parent of the new monitor
The #GstValidateScenario being executed
under @monitor watch
A #GstValidateBinMonitor
GStreamer Validate BinMonitor object class.
parent
GST_VALIDATE_FATAL_DEFAULT:
GST_VALIDATE_FATAL_ISSUES:
GST_VALIDATE_FATAL_WARNINGS:
GST_VALIDATE_FATAL_CRITICALS:
GST_VALIDATE_PRINT_ISSUES:
GST_VALIDATE_PRINT_WARNINGS:
GST_VALIDATE_PRINT_CRITICALS:
GStreamer Validate ElementMonitor class.
Class that wraps a #GstElement for Validate checks
A #GstValidateElementMonitor
a #GstElement to run Validate on
a #GstValidateRunner
The parent of the new monitor
GStreamer Validate ElementMonitor object class.
parent
A function that executes a #GstValidateAction
a #GstValidateExecuteActionReturn
The #GstValidateScenario from which the @action is executed
The #GstValidateAction being executed
The report will be completely ignored.
The report will be kept by the reporter,
but not reported to the runner.
The report will be kept by the reporter
and reported to the runner.
The newly created #GstValidateIssue
The ID of the issue, should be a GQuark
A summary of the issue
A more complete description of the issue
The level at which the issue will be reported by default
The newly created #GstValidateIssue
The ID of the issue, should be a GQuark
A summary of the issue
A more complete description of the issue
The level at which the issue will be reported by default
The flags to determine behaviour of the issue
Registers @issue in the issue type system
The #GstValidateIssue to register
The issue if found or NULL otherwise
The issue id
GST_VALIDATE_ISSUE_FLAGS_NONE: No special flags for the issue type
GST_VALIDATE_ISSUE_FLAGS_FULL_DETAILS: Always show all occurrences of the issue in full details
GST_VALIDATE_ISSUE_FLAGS_NO_BACKTRACE: Do not generate backtrace for the issue type
Always generate backtrace, even if not a critical issue
GStreamer Validate MediaInfo struct.
Stores extracted information about a media
GStreamer Validate Monitor class.
Class that wraps a #GObject for Validate checks
Create a new monitor for @target and starts monitoring it.
The newly created #GstValidateMonitor
The #GstObject to create a #GstValidateMonitor for
The #GstValidateRunner to use for the new monitor
The parent of the new monitor
The GstElement associated with @monitor
The monitor
The GstElement associated with @monitor
The monitor
The name of the element associated with @monitor
The monitor
The pipeline in which @monitor
target is in.
The monitor to get the pipeline from
The target object
The monitor to get the target from
GStreamer Validate Monitor object class.
parent
The GstElement associated with @monitor
The monitor
The property is optional, if it
is not found on the object, nothing happens.
Do not check that after
setting the property, the value is the one we set.
a list of #GstValidateOverride
the override registry
GStreamer Validate PadMonitor class.
Class that wraps a #GstPad for Validate checks
A #GstValidatePadMonitor
a #GstPad to run Validate on
a #GstValidateRunner
The parent of the new monitor
GStreamer Validate PadMonitor object class.
parent
GStreamer Validate PipelineMonitor class.
Class that wraps a #GstPipeline for Validate checks
A #GstValidatePipelineMonitor
a #GstPipeline to run Validate on
a #GstValidateRunner
The parent of the new monitor
GStreamer Validate PipelineMonitor object class.
parent
A function that prepares @action so it can be executed right after.
Most of the time this function is used to parse and set fields with
equations in the action structure.
%TRUE if the action could be prepared and is ready to be run
, %FALSE otherwise
The #GstValidateAction to prepare before execution
Reports a new issue in the GstValidate reporting system with @m
as the source of that issue.
The #GstValidateReporter where the issue happened
The #GstValidateIssueId of the issue
The format of the message describing the issue in a printf
format, followed by the parameters.
report dot file name
report issue
report level
report message
report reporter
report issue
reporting level
report timestamp
report backtrace
Reports a new issue in the GstValidate reporting system specifying @action
as failling action .
You can also use #GST_VALIDATE_REPORT instead.
The source of the new report
The action reporting the issue
The #GstValidateIssueId of the issue
The format of the message describing the issue in a printf
format followed by the parameters.
Substitution arguments for @format
The #GstPipeline
The reporter to get the pipeline from
Gets @name of @reporter
The name of the reporter
The reporter to get the name from
The #GstPipeline
The reporter to get the pipeline from
The #GstValidateReport
The reporter to get the report from
The issue id to get the report from
Get the list of reports present in the reporter.
the list of
#GstValidateReport present in the reporter.
The caller should unref each report once it is done with them.
a #GstValidateReporter
Get the number of reports present in the reporter.
the number of reports currently present in @reporter.
a #GstValidateReporter
The runner
The reporter to get the runner from
Remove all the #GstValidateReport from @reporter. This should be called
before unreffing the reporter to break cyclic references.
a #GstValidateReporter
Set @reporter has the 'source' of any g_log happening during the
execution. Usually the monitor of the first #GstPipeline is used
to handle g_logs.
Basically this function is used in order to start tracking any
issue reported with g_log in the process into GstValidate report
in the GstValidate reporting system.
The #GstValidateReporter to set has the handler for g_log
Sets @name on @reporter
The reporter to set the name on
The name of the reporter
parent interface type.
The #GstPipeline
The reporter to get the pipeline from
Setting the reporting level allows to control the way issues are reported
when calling #gst_validate_runner_printf.
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. No object category / name sets the global level.
Examples: GST_VALIDATE_REPORTING_DETAILS=synthetic,h264parse:all
GST_VALIDATE_REPORTING_DETAILS=none,h264parse::sink_0:synthetic
No reporting level known,
reporting will default to the global reporting level.
No debugging level specified or desired. Used to deactivate
debugging output.
Summary of the issues found, with no
details.
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.
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 the issues will be reported, even those
that repeat themselves inside the same object. This can be *very* verbose if
set globally.
Sythetic for not fatal issues and detailed for
others
GStreamer Validate Runner class.
Class that manages a Validate test run for some pipeline
Create a new #GstValidateRunner
A newly created #GstValidateRunner
The list of reports
The #GstValidateRunner
Get the number of reports present in the runner:
The number of reports present in the runner.
The #GstValidateRunner to get the number of reports from
Prints all the reports on the terminal or on wherever is set
in the `GST_VALIDATE_FILE` env variable.
0 if no critical error has been found and 18 if a critical
error has been detected. That return value is usually to be used as
exit code of the application.
The #GstValidateRunner to print all the reports for
GStreamer Validate Runner object class.
parent
A #GstValidateScenario or NULL
The #GstValidateRunner to use to report issues
The pipeline to run the scenario on
The name (or path) of the scenario to run
Executes a seek event on the scenario's pipeline. You should always use
this method when you want to execute a seek inside a new action type
so that the scenario state is updated taking into account that seek.
For more information you should have a look at #gst_event_new_seek
%TRUE if the seek could be executed, %FALSE otherwise
The #GstValidateScenario for which to execute a seek action
The seek action to execute
The playback rate of the seek
The #GstFormat of the seek
The #GstSeekFlags of the seek
The #GstSeekType of the start value of the seek
The start time of the seek
The #GstSeekType of the stop value of the seek
The stop time of the seek
Get remaining actions from @scenario.
A list of #GstValidateAction.
The scenario to retrieve remaining actions for
The #GstPipeline the scenario is running
against
The scenario to retrieve a pipeline from
Get current target state from @scenario.
Current target state.
The scenario to retrieve the current target state for
Emitted when an action is done.
The #GstValidateAction that is done running
Emitted once all actions have been executed
Defines the level of verbosity of -validate (ie, printing on stdout).
Get a time value for the @name parameter of an action. This
method should be called to retrieve and compute a timed value of a given
action. It will first try to retrieve the value as a double,
then get it as a string and execute any formula taking into account
the 'position' and 'duration' variables. And it will always convert that
value to a GstClockTime.
%TRUE if the time value could be retrieved/computed or %FALSE otherwise
The #GstValidateScenario from which to get a time
for a parameter of an action
The action from which to retrieve the time for @name
parameter.
The name of the parameter for which to retrieve a time
The return value for the wanted time
Check if @element matches one of the 'target-element-name',
'target-element-klass' or 'target-element-factory-name' defined in @s.
%TRUE if it matches, %FALSE otherwise or if @s doesn't contain any
target-element field.
a #GstElement to check
a #GstStructure to use for matching
Executes @action
The #GstValidateActionType to execute
The #GstValidateAction to execute
TODO
TODO
TODO
To start monitoring and thus run GstValidate tests on a #GstPipeline, the only thing to
do is to instanciate a #GstValidateRunner and then attach a #GstValidateMonitor
to it with #gst_validate_monitor_factory_create
TODO
TODO
TODO
Allows you to test a pipeline within GstValidate. It is the object where
all issue reporting is done.
In the tools using GstValidate the only minimal code to be able to monitor
your pipelines is:
|[
GstPipeline *pipeline = gst_pipeline_new ("monitored-pipeline");
GstValidateRunner *runner = gst_validate_runner_new ();
GstValidateMonitor *monitor = gst_validate_monitor_factory_create (
GST_OBJECT (pipeline), runner, NULL);
// Run the pipeline and do whatever you want with it
// In that same order
gst_object_unref (pipeline);
gst_object_unref (runner);
gst_object_unref (monitor);
]|
A #GstValidateScenario represents the scenario that will be executed on a #GstPipeline.
It is basically an ordered list of #GstValidateAction that will be executed during the
execution of the pipeline.
Possible configurations (see [GST_VALIDATE_CONFIG](gst-validate-environment-variables.md)):
* scenario-action-execution-interval: Sets the interval in
milliseconds (1/1000ths of a second), between which actions
will be executed, setting it to 0 means "execute in idle".
The default value is 10ms.
Initializes GstValidate. Call this before any usage of GstValidate.
You should take care of initializing GStreamer before calling this
function.
The issue if found or NULL otherwise
The issue id
The #GstValidateReporter to use to report errors
The #GObject to set the property on
The name of the property to set
The value to set the property to
The #GstValidateObjectSetPropertyFlags to use
Return the configuration specific to @plugin, or the "core" one if @plugin
is #NULL
a list of #GstStructure
a #GstPlugin, or #NULL
Print @message to the GstValidate logging system
The source object to log
The message to print out in the GstValidate logging system
Prints the action types details wanted in @wanted_types
True if all types could be printed
(optional): List of types to be printed
Length of @wanted_types
Register a new action type to the action type system. If the action type already
exists, it will be overridden by the new definition
The newly created action type or the already registered action type
if it had a higher rank
The name of the new action type to add
The namespace of the implementer of the action type.
That should always be the name of the GstPlugin as
retrieved with #gst_plugin_get_name when the action type
is registered inside a plugin.
The function to be called to execute the action
The #GstValidateActionParameter usable as parameter of the type
A description of the new type
The #GstValidateActionTypeFlags to set on the new action type
The newly created action type or the already registered action type
if it had a higher rank
The #GstPlugin that register the action type,
or NULL for a static element.
The name of the new action type to add
The ranking of that implementation of the action type called
@type_name. If an action type has been registered with the same
name with a higher rank, the new implementation will not be used,
and the already registered action type is returned.
If the already registered implementation has a lower rank, the
new implementation will be used and returned.
The function to be called to execute the action
The #GstValidateActionParameter usable as parameter of the type
A description of the new type
The #GstValidateActionTypeFlags to be set on the new action type
Reports a new issue in the GstValidate reporting system.
You can also use #GST_VALIDATE_REPORT instead.
The source of the new report
The #GstValidateIssueId of the issue
The format of the message describing the issue in a printf
format followed by the parameters.
Substitution arguments for @format
%TRUE on success %FALSE otherwise
The #GType of the enum we are trying to retrieve the enum value from
The string representation of the value
The value of the enum
The flags set in @str_flags
The #GType of the flags we are trying to retrieve the flags from
The string representation of the value
Get @name from @structure as a #GstClockTime, it handles various types
for the value, if it is a double, it considers the value to be in second
it can be a gint, gint64 a guint, a gint64.
%TRUE in case of success, %FALSE otherwise.
A #GstStructure to retrieve @name as a GstClockTime.
The name of the field containing a #GstClockTime
The clocktime contained in @structure
An array of strings from the GstValueList defined in @fieldname
A GstStructure
A fieldname containing a GstValueList or is not defined