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 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