Commit graph

941 commits

Author SHA1 Message Date
Thibault Saunier
7898d5b347 validate: Add a way to check last frame number
This introduces a new 'timecode-frame-number' in the 'check-last-sample'
action type se we can verify the number of output frames.
2020-03-12 12:35:45 -03:00
Thibault Saunier
ee5e0b396e validate: Enhance debug message on invalid expression function call 2020-03-12 12:35:45 -03:00
Thibault Saunier
987d125c7e validate:utils: Allow plain string in gst_validate_utils_get_strv 2020-03-12 12:35:45 -03:00
Thibault Saunier
4ae29ab7ed validate:ssim: Enhance printing position
Adding a new `gst_validate_print_position` method which also
sends messages to the runner if required.
2020-03-12 12:35:45 -03:00
Thibault Saunier
d654a4049b validate:scenario:Handle GStreamer serialized timestamps 2020-03-11 16:35:23 -03:00
Thibault Saunier
080fdf8e2f validate:launcher: Add support for the imagesequence protocol 2020-03-06 16:05:38 -03:00
Thibault Saunier
bc622ec658 validate:launcher: Batch inspecting scenarios
Removing almost 1 second to start running tests with the default
testsuite
2020-03-06 15:36:10 -03:00
Thibault Saunier
77b6bf2050 meson: remove vs_module_defs
The GST_EXPORT should handle it.
2020-02-26 14:21:52 -03:00
Thibault Saunier
1ee84f7c10 validate: Fix leak parsing structure files 2020-02-26 10:52:12 -03:00
Thibault Saunier
d86fa2c44a validate: Enhance error reporting for errors in struct files
Get a sense of files and line numbers in the parsed GstStructure
and take that information when reporting GstValidateAction errors
by letting the user know where the action comes from in the messages.

And accept non-literal string in printing formats.
2020-02-25 16:22:10 -03:00
Thibault Saunier
cf6fb4a7f2 validate: Add a specific error type for check actions
And mark it as `NO_BACKTRACE | FULL_DETAILS`, same as for
other action failure types.
2020-02-25 11:28:35 -03:00
Thibault Saunier
2036d8292f validate: Enhance error reporting when scenario or configs are invalid 2020-02-25 11:28:35 -03:00
Thibault Saunier
1a6f404c5d validate: Add a flags to issues
Currently those allow registering issue that:
- Won't print backtrace as it is sometimes useless info
- Will repeat the details even in smart mode
2020-02-25 11:28:35 -03:00
Thibault Saunier
a12cb70422 validate: Consider ',' as continuing line marker in struct files
Since `,` is the separator between fields of GstStructure we can
safely consider that if a line ends with it, the following line
is the logical continuity of the serialized GstStructure.

This makes writing those files more convenient and reading them
more pleasant as we do not need to add extra `\` at end of lines
anymore
2020-02-19 22:20:25 -03:00
Thibault Saunier
27fc0d45a2 validate:scenario: Stop rounding up clocktime values
This doesn't make any sense in that context
2020-02-11 15:57:56 -03:00
Thibault Saunier
5b82274f17 validate:flow: Add a way to set the types of events to log/ignore
Added two properties to the plugin:
     * ignored-event-types: A list of event types to be ignored when logging events
     * logged-event-types: A list of event types to be logged when logging events

This commits also moves the "ignored-event-fields" property to using a proper
GstValueList for the list of event fields to be taken into account, instead
of the home grown separated by comas list of string, making the API more
uniform.

This also adds a simple helper method: `gst_validate_utils_get_strv`
2020-02-04 16:09:36 -03:00
Thibault Saunier
0b3ce37eea validate:scenario: fix some typos 2019-12-30 10:25:55 -03:00
Thibault Saunier
bba35fccf2 validate:scenario: Implement an action to check property value 2019-12-30 10:25:55 -03:00
Edward Hervey
43815541d8 validate-scenario: Initialize variable
We could end up using it uninitialized

CID: 1444920
2019-11-27 15:33:14 +01:00
Edward Hervey
4f0bfcc7bb validate: Fix memory leaks
Various structures were being leaked.
2019-11-20 10:19:00 +01:00
Alicia Boya García
56d82af7b1 gst-validate-bin-monitor: Remove unused field. 2019-11-02 17:07:02 +01:00
Tim-Philipp Müller
280321dee1 validate: remove autotools build 2019-10-15 00:24:00 +01:00
Thibault Saunier
1f68027942 validate: Check that pull_range is called from the streaming thread
`gst_pad_pull_range` should always be called from the streaming thread,
we now check that when pull_range is called, and if the sinkpad calling
the function has a GstTask with a running thread, the function is called
from that thread.
2019-10-02 19:22:31 +00:00
Nicolas Dufresne
50971aa2c6 validate-scanario: Fix crash when using installed validate
When installed, the lookup path will endup on the very last try, but the
scenario_file was left unset, which lead to a crash.
2019-09-27 16:52:51 -04:00
Matthew Waters
e3f4d51771 validate: fix build with newer gcc
In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:55,
                 from ../validate/gst/validate/gst-validate-scenario.c:45:
../validate/gst/validate/gst-validate-scenario.c: In function ‘gst_validate_scenario_load’:
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:645:5: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  645 |     gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__, \
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  646 |         (GObject *) (object), __VA_ARGS__);    \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:1067:26: note: in expansion of macro ‘GST_CAT_LEVEL_LOG’
 1067 | #define GST_ERROR(...)   GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_ERROR,   NULL, __VA_ARGS__)
      |                          ^~~~~~~~~~~~~~~~~
../validate/gst/validate/gst-validate-scenario.c:3615:5: note: in expansion of macro ‘GST_ERROR’
 3615 |     GST_ERROR ("Invalid name for scenario '%s'", scenario_name);
      |     ^~~~~~~~~
../validate/gst/validate/gst-validate-scenario.c:3615:44: note: format string is defined here
 3615 |     GST_ERROR ("Invalid name for scenario '%s'", scenario_name);
      |                                            ^~
2019-09-24 11:45:34 +10:00
Matthew Waters
cca6ae3fdb validate: fix -Werror=format-nonliteral build with clang
[3470/4053] Compiling C object 'subprojects/gst-devtools/validate/gst/validate/28db7b6@@gstvalidatetracer@sha/gst-validate-reporter.c.o'.
../subprojects/gst-devtools/validate/gst/validate/gst-validate-reporter.c:186:31: warning: format string is not a string literal [-Wformat-nonliteral]
  message = g_strdup_vprintf (format, vacopy);
                              ^~~~~~
[3487/4053] Compiling C object 'subprojects/gst-devtools/validate/gst/validate/28db7b6@@gstvalidatetracer@sha/gst-validate-report.c.o'.
../subprojects/gst-devtools/validate/gst/validate/gst-validate-report.c:1007:34: warning: format string is not a string literal [-Wformat-nonliteral]
  tmp = gst_info_strdup_vprintf (format, args);
                                 ^~~~~~
[76/151] Compiling C object 'subprojects/gst-devtools/validate/plugins/flow/697521d@@gstvalidateflow@sha/gstvalidateflow.c.o'.
../subprojects/gst-devtools/validate/plugins/flow/gstvalidateflow.c:125:65: warning: format string is not a string literal [-Wformat-nonliteral]
  if (!flow->error_writing_file && vfprintf (flow->output_file, format, ap) < 0) {
                                                                ^~~~~~
2019-08-26 12:14:47 +00:00
Aaron Boxer
e1129d2516 validate: add missing G_BEGIN/END_DECLS in validate.h 2019-08-03 20:09:32 -04:00
Tim-Philipp Müller
d8d35241fe validate: fix build with older GLib versions
g_enum_to_string() is only available in newer ones.

Add compatibility workaround for the time being to decouple
this from the decision whether to bump the GLib requirement
and what to bump it to.

https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/199

Fixes #45
2019-07-29 10:08:51 +01:00
Mathieu Duponchelle
7c255a9015 scenario: fix PAUSED position check
The way this was implemented was simply wrong, first of all checking
the position against the segment after a seek in PAUSED by a query
of the pipeline position is of limited interest, and can only work
in forward playback.

Furthermore the check was a huge blob of code that didn't even look
like it was pretending to do a good job at checking the position in
reverse playback.
2019-07-26 02:34:55 +02:00
Thibault Saunier
aea1082116 scenario: Do not dereference NULL pointer 2019-07-08 23:36:52 -04:00
Thibault Saunier
8498861a28 validate:pipeline-monitor: Connect deep properties notification only when required
This is quite expensive and can lead to an overwhelm mainloop.
2019-07-03 15:42:32 -04:00
Thibault Saunier
258453a169 validate:scenario: Keep a reference to 'description' structure
For it to be reusable outside the scenario
2019-06-28 17:34:23 -04:00
Thibault Saunier
91728c6170 scenario: Use internal sinks when a sink bin can be used to check last-sample 2019-06-26 12:09:03 -04:00
Thibault Saunier
1e1797ee3a validate: Also monitor ghost pads
Allowing overrides to work on ghost pads too
2019-06-26 12:09:03 -04:00
Thibault Saunier
ade8ba3fcb validate: Add SCENARIO_NAME and CONFIG_NAME vars in configs/scenarios 2019-06-26 12:09:03 -04:00
Thibault Saunier
7d471ee25e validate: Set 'LOGSDIR' variable in scenarios and config files
Implementing support for variables in config files.
2019-06-23 03:10:34 -04:00
Thibault Saunier
b11c5ba185 scenario: Set SCENARIO_PATH/DIR variables in scenarios
And add some documentation about it
2019-06-23 01:54:26 -04:00
Thibault Saunier
0e0928b0b7 scenario: Add a TMPDIR global variables in scenarios
This also adds the notion of global variables which will be useable
in config files too.

And add some documentation about default variables in scenarios
2019-06-23 01:34:41 -04:00
Thibault Saunier
db487b2732 docs: Update validate action types
Include minor fixes in the action types and markdown generator
2019-06-18 18:15:30 -04:00
Thibault Saunier
5b52c38b85 validate: Misc leaks plugging 2019-06-18 18:13:03 -04:00
Thibault Saunier
314fd2b6de validate:reporter: Show report by branches when doing smart reporting
Meaning that instead of getting 1 "Detected on" line per monitor,
there will be one per "branch" like:

    Detected on <audioconvert1:sink, audioconvert1:src, audioresample1:sink, audioresample1:src, smart-adder-adder:sink_0, smart-adder-adder:src, smart-adder-capsfilter:sink, smart-adder-capsfilter:src, capsfilter2:sink, capsfilter2:src, tee1:sink, tee1:src_0>

Making it simpler to read and a bit less verbose.
2019-06-11 22:35:15 +00:00
Thibault Saunier
0a6c7c64a9 validate:scenario: Move force-key-unit action from the transcoding tool
The action is generally useful but was implemented in a way that
was restricting its usage for no good reason. Refactor the
implementation adding more argument so it can be used in a wider
context, such as uvch264src.

Something like:

``` bash
echo "video-request-key-unit, direction=upstream, all-header=true, count=1, target-element-factory-name=h264parse, srcpad=src, playback-time=1.0" > tmp.scenario && \
echo "stop,playback-time=2.0" >> tmp.scenario && \
gst-validate-1.0 --set-scenario=tmp.scenario uvch264src \
       device=/dev/video0 name=src iframe-period=33 auto-start=true src.vfsrc ! queue ! fakesink \
       src.vidsrc ! queue ! video/x-h264,width=1280,height=720,framerate=30/1 ! h264parse ! fakesink
```

works now.
2019-06-11 21:03:56 +00:00
Thibault Saunier
05f1c6e1b1 validate:scenario: Minor documentation cleanup 2019-06-11 21:03:56 +00:00
Thibault Saunier
f27e98caee validate:pipeline-monitor: Avoid wrong position issue
If the reported position or duration is NONE, do not check its
validity
2019-06-11 21:03:56 +00:00
Thibault Saunier
3ca0b7123e validate: Implement seeking with DEFAULT format 2019-05-27 14:36:28 +00:00
Thibault Saunier
1e2bf1c841 ssim: Fix the way we handle when an override is attached 2019-05-23 11:35:28 -04:00
Thibault Saunier
85282e53ca docs: Fix docstrings 2019-05-13 17:00:00 -04:00
Thibault Saunier
67d4a39602 validate: inspect: Output valid markdown
So it can be used directly in the documentation Also add a special "all"
argument to `gst-validate-1.0 --inspect-action-type` so we can generate
the documentation for all action types easily.
2019-05-13 11:37:38 -04:00
Thibault Saunier
0a7b23f566 doc: Port to hotdoc
Ideally we want a GstValidate hotdoc plugin... not for now.
2019-05-13 11:37:38 -04:00
Thibault Saunier
040b71a3d9 doc: Minor fixes 2019-05-13 11:37:38 -04:00