summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2019-02-26 12:00:40 +0000
committerTim-Philipp Müller <tim@centricular.com>2019-02-26 19:44:21 +0000
commit3fface02753d67f648c88f7a645e9d71ecb6f4e1 (patch)
tree0b0b140117c00de64a66f5bc330543da60d1aac2
parent61f1289dcc91e108ec07de3db23a204cabbee8ba (diff)
Release 1.15.2gst-devtools-1.15.2
-rw-r--r--meson.build2
-rw-r--r--validate/ChangeLog499
-rw-r--r--validate/NEWS307
-rw-r--r--validate/RELEASE2
-rw-r--r--validate/configure.ac8
-rw-r--r--validate/gst-validate.doap10
-rw-r--r--validate/meson.build2
7 files changed, 727 insertions, 103 deletions
diff --git a/meson.build b/meson.build
index 20d616a844..8033913e09 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('gst-devtools', 'c',
- version : '1.15.1',
+ version : '1.15.2',
meson_version : '>= 0.47',
default_options : [ 'warning_level=1',
'c_std=gnu99',
diff --git a/validate/ChangeLog b/validate/ChangeLog
index 763e67aa09..854bc9f450 100644
--- a/validate/ChangeLog
+++ b/validate/ChangeLog
@@ -1,3 +1,502 @@
+=== release 1.15.2 ===
+
+2019-02-26 12:00:40 +0000 Tim-Philipp Müller <tim@centricular.com>
+
+ * meson.build:
+ * validate/ChangeLog:
+ * validate/NEWS:
+ * validate/RELEASE:
+ * validate/configure.ac:
+ * validate/gst-validate.doap:
+ * validate/meson.build:
+ Release 1.15.2
+
+2019-02-01 10:02:22 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-report.c:
+ validate: Notice that issue summaries should be 'stable'
+ As they are used in the testsuite to define known issues
+
+2019-02-17 15:38:53 +0100 Alicia Boya García <ntrrgc@gmail.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ * validate/gst/validate/gst-validate-scenario.h:
+ gst-validate-scenario: Make waits optional in appsrc-push
+ While in many cases it's desirable to wait for a buffer to be pushed
+ downstream when using appsrc-push, in some cases this is not possible as
+ such pushing action is dependent on following actions that would not be
+ executed if we wait.
+ An example for this is prerolling:
+ appsrc ! qtdemux ! video/x-h264 ! decodebin name=dec ! %(videosink)s
+ description, seek=false, handles-states=true
+ appsrc-push, target-element-name=appsrc0, file-name="raw_h264.0.mp4"
+ set-state, state=playing
+ appsrc-eos, target-element-name=appsrc0
+ In order for the preroll to occur, both the appsrc needs to push the
+ buffer and the state needs to reach PLAYING. But `set-state` cannot
+ finish if the buffer has not been pushed (the state transition does not
+ finish) and conversely pushing the buffer will not finish until the
+ state has reached.
+ Making appsrc-push not wait for the buffer solves this problem. This
+ patch makes appsrc-push aware of this issue by only waiting for the
+ buffer to be pushed if the pipeline is in a state that allows buffers to
+ flow.
+
+2019-02-21 22:01:24 +0100 Alicia Boya García <ntrrgc@gmail.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ gst-validate-scenario: Fix (another) race condition in EOS handling
+ Since gst_validate_action_set_done() is asynchronous, the bus EOS
+ handler may already be running before the action is actually finished.
+ This patch ensures that is not a problem.
+
+2019-02-19 17:36:23 +0000 Charlie Turner <cturner@igalia.com>
+
+ * validate/launcher/apps/gstvalidate.py:
+ validateflow: interpolate folder directories into pipeline descriptions.
+ Allow 'pipeline' fields in validateflow to be interpolated with
+ directory keys like $(medias)s.
+
+2019-02-07 15:36:41 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com>
+
+ * validate/docs/validate/envvariables.xml:
+ * validate/gst/validate/gst-validate-pad-monitor.c:
+ * validate/gst/validate/gst-validate-pad-monitor.h:
+ * validate/gst/validate/gst-validate-report.c:
+ * validate/gst/validate/gst-validate-report.h:
+ validate: allow config to check for minimum buffer frequency on pads
+ This change allow tests to check performance of elements by checking the
+ frequency at which buffers are pushed on src pads.
+ I re-used most of the logic from fpsdisplaysink to compute the
+ frequency.
+ We can now uses something like:
+ GST_VALIDATE_CONFIG='core,min-buffer-frequency=60,target-element-factory-name=v4l2src'
+ The 'buffer-frequency-start' optional field can be used to ignore the
+ frequency during the start of the pipeline. This is useful when testing live
+ pipelines where configuring and setting up elements can take some time slowing
+ down the first buffers.
+
+2019-02-11 16:07:28 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ * validate/gst/validate/gst-validate-utils.c:
+ * validate/gst/validate/gst-validate-utils.h:
+ validate: factor out gst_validate_element_matches_target()
+
+2019-02-18 11:05:26 +0000 Charlie Turner <cturner@igalia.com>
+
+ * validate/plugins/flow/gstvalidateflow.c:
+ validateflow: Fix double-free on stdout
+
+2019-02-04 13:19:26 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-report.c:
+ * validate/tests/check/validate/expression_parser.c:
+ validate: report: Fix the way we print 'repeat' values
+
+2019-02-04 13:18:04 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/validate.c:
+ * validate/tests/check/meson.build:
+ * validate/tests/check/validate/expression_parser.c:
+ validate: Force LC_NUMERIC to C as it is required by our expression parser
+ And... add some expression parser unit tests
+
+2019-02-03 20:05:36 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/data/scenarios/alternate_fast_backward_forward.scenario:
+ * validate/data/scenarios/fast_backward.scenario:
+ * validate/data/scenarios/fast_forward.scenario:
+ * validate/data/scenarios/includes/default-seek-flags.scenario:
+ * validate/data/scenarios/reverse_playback.scenario:
+ * validate/data/scenarios/rtsp_overrides/includes/default-seek-flags.scenario:
+ * validate/data/scenarios/scrub_backward_seeking.scenario:
+ * validate/data/scenarios/scrub_backward_seeking_full.scenario:
+ * validate/data/scenarios/scrub_forward_seeking.scenario:
+ * validate/data/scenarios/scrub_forward_seeking_full.scenario:
+ * validate/data/scenarios/seek_backward.scenario:
+ * validate/data/scenarios/seek_forward.scenario:
+ * validate/data/scenarios/seek_forward_backward.scenario:
+ * validate/data/scenarios/seek_with_stop.scenario:
+ * validate/data/scenarios/simple_seeks.scenario:
+ * validate/data/scenarios/update_start.scenario:
+ * validate/data/scenarios/update_stop.scenario:
+ * validate/gst/validate/gst-validate-scenario.c:
+ * validate/gst/validate/gst-validate-scenario.h:
+ * validate/tests/check/meson.build:
+ * validate/tests/check/validate/scenario.c:
+ validate:scenario: Enhance variable implementation
+ - Stop arbitrarily consider params as ClockTime based on their names
+ but add a convetion that the `.type` field of the ActionType should
+ end by `(GstClockTime)` when it is a clock time.
+
+2019-02-03 20:03:40 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ * validate/gst/validate/gst-validate-scenario.h:
+ validate:scenario: Make gst_validate_action_new public
+ Mainly so it can be used in unit tests.
+
+2019-02-02 13:43:35 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/data/scenarios/fast_forward.scenario:
+ * validate/data/scenarios/reverse_playback.scenario:
+ * validate/data/scenarios/scrub_backward_seeking.scenario:
+ * validate/data/scenarios/scrub_backward_seeking_full.scenario:
+ * validate/data/scenarios/scrub_forward_seeking.scenario:
+ * validate/data/scenarios/scrub_forward_seeking_full.scenario:
+ * validate/data/scenarios/seek_backward.scenario:
+ * validate/data/scenarios/seek_forward.scenario:
+ * validate/gst/validate/gst-validate-scenario.c:
+ * validate/gst/validate/gst-validate-utils.c:
+ validate:scenario: Allow using set-vars from numeric expressions
+ And require them to follow the `$varname` (can't be $(varname) as
+ parenthesis have another meaning in those expressions).
+ Still accept "duration" and "position" as varname for backward compat
+ but update our scenarios anyway.
+
+2019-02-02 13:32:50 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate: scenario: Parse playback times as we execute the scenario
+ This way we will be able to use 'set-vars' for it
+
+2019-02-01 22:54:13 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/data/scenarios/alternate_fast_backward_forward.scenario:
+ * validate/data/scenarios/fast_backward.scenario:
+ * validate/data/scenarios/fast_forward.scenario:
+ * validate/data/scenarios/includes/default-seek-flags.scenario:
+ * validate/data/scenarios/reverse_playback.scenario:
+ * validate/data/scenarios/rtsp_overrides/includes/default-seek-flags.scenario:
+ * validate/data/scenarios/scrub_backward_seeking.scenario:
+ * validate/data/scenarios/scrub_backward_seeking_full.scenario:
+ * validate/data/scenarios/scrub_forward_seeking.scenario:
+ * validate/data/scenarios/scrub_forward_seeking_full.scenario:
+ * validate/data/scenarios/seek_backward.scenario:
+ * validate/data/scenarios/seek_forward.scenario:
+ * validate/data/scenarios/seek_forward_backward.scenario:
+ * validate/data/scenarios/seek_with_stop.scenario:
+ * validate/data/scenarios/simple_seeks.scenario:
+ * validate/data/scenarios/update_start.scenario:
+ * validate/data/scenarios/update_stop.scenario:
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate:scenario: Enforce a synthax $(varname) to reference variables
+ This way it is clear that you are using a variable reading the scenario
+ and we can verify that what the scenario writer intents is to use an
+ already set variable.
+
+2019-02-07 17:34:56 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate: don't override max-latency if config contains multiple structs
+ gst_validate_utils_get_clocktime() is resetting the value if it's not
+ present in the struct so we were overriding it on the next iterations.
+
+2019-02-08 11:46:58 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com>
+
+ * validate/launcher/baseclasses.py:
+ validate: baseclasses: include env variable in logged command
+ We were missing the env variables in the command written to the log
+ file, making it impossible to re-run the test later from the logs.
+
+2019-02-09 01:16:31 +0100 Alicia Boya García <ntrrgc@gmail.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ * validate/gst/validate/gst-validate-scenario.h:
+ gst-validate-scenario: Add GST_VALIDATE_SCENARIO_EOS_HANDLING_LOCK
+ There was a race in appsrc-push when the pushed buffer caused an EOS.
+ The EOS event could be handled by the main thread, finishing the test
+ while the action, executing in the streaming thread, has not finished
+ yet.
+ A mutex is now introduced to add mutual exclusion for the two threads so
+ that an EOS does not cause the termination of the test while the action
+ is still going.
+
+2019-02-07 15:42:06 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/plugins/flow/gstvalidateflow.c:
+ validateflow: Print some indication that the flow checking is happening
+
+2019-02-11 11:09:21 +0100 Edward Hervey <edward@centricular.com>
+
+ * validate/configure.ac:
+ * validate/plugins/Makefile.am:
+ * validate/plugins/flow/Makefile.am:
+ validate: Add autotools support for flow plugin
+
+2019-02-10 01:23:50 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/apps/gstcheck.py:
+ Revert "validate:launcher: Cache the result of meson introspect"
+ This reverts commit 05ce6d3b92e88341bd9743b021b33ce606c5d1bc.
+ We can't do that as it breaks meson logic to set envvars
+
+2019-02-09 17:25:03 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/baseclasses.py:
+ validate:launcher: Do not sort tests all the time
+ Do it once only once it is fully populated
+
+2019-02-09 17:24:10 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/apps/gstcheck.py:
+ validate:launcher: Cache the result of meson introspect
+ Running it takes quite some time and we can easily cache it.
+
+2019-02-09 17:23:28 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/tools/gst-validate-launcher.in:
+ validate:launcher: Add a simple way to profile app
+
+2019-02-08 14:36:56 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate: scenario: not need to use an atomic to handle dropped count
+ It's all handled from the same thread.
+
+2019-02-08 14:23:15 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate: scenario: fix dropped checking when terminating scenario
+ We want to early return if either no max value has been set for the
+ scenario or if we didn't receive any QoS information.
+
+2019-02-08 13:32:12 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com>
+
+ * validate/gst/validate/gst-validate-report.c:
+ * validate/gst/validate/gst-validate-report.h:
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate: properly namespace config related checks
+
+2018-10-28 17:27:22 +0000 Alicia Boya García <ntrrgc@gmail.com>
+
+ * validate/gst/validate/gst-validate-override.h:
+ * validate/gst/validate/gst-validate-scenario.c:
+ * validate/launcher/apps/gstvalidate.py:
+ * validate/launcher/baseclasses.py:
+ * validate/plugins/flow/formatting.c:
+ * validate/plugins/flow/formatting.h:
+ * validate/plugins/flow/gstvalidateflow.c:
+ * validate/plugins/flow/meson.build:
+ * validate/plugins/meson.build:
+ New validate plugin: validateflow
+ validateflow can be used to check the buffers and events flowing through
+ a custom pipeline match an expectation file. This can be used to test
+ non-regular-playback use cases like demuxers handling adaptive streaming
+ fragment pushing.
+ This patch includes also new actions used for these cases:
+ `appsrc-push`, `appsrc-eos` and `flush` (plus `checkpoint`, which is
+ only available with validateflow).
+
+2019-02-07 17:04:52 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com>
+
+ * validate/launcher/baseclasses.py:
+ baseclass: add_validate_config: don't use self.proc_env
+ self.proc_env is created when starting the test but this API can be call
+ by generator when creating the test.
+
+2019-02-06 18:24:19 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com>
+
+ * validate/gst/validate/gst-validate-report.c:
+ * validate/gst/validate/gst-validate-report.h:
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate: allow scenarios to define a max nb of dropped buffers
+ The 'max-dropped' description field can now be used to specify the max
+ number of buffers than can be dropped by the QoS system.
+
+2019-02-05 23:46:40 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/apps/gstcheck.py:
+ validate:launcher: Error out in the check testsuite if rebuilding failed
+
+2019-02-04 17:03:01 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com>
+
+ * validate/gst/validate/gst-validate-report.c:
+ * validate/gst/validate/gst-validate-report.h:
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate: allow scenarios to define max pipeline latency
+ The 'max-latency' description field can now be used to specify the max
+ latency allowed for the running pipeline.
+
+2019-02-02 01:23:16 +0100 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * validate/data/scenarios/Makefile.am:
+ * validate/data/scenarios/alternate_fast_backward_forward.scenario:
+ * validate/data/scenarios/fast_backward.scenario:
+ * validate/data/scenarios/fast_forward.scenario:
+ * validate/data/scenarios/includes/default-seek-flags.scenario:
+ * validate/data/scenarios/meson.build:
+ * validate/data/scenarios/reverse_playback.scenario:
+ * validate/data/scenarios/rtsp_overrides/includes/default-seek-flags.scenario:
+ * validate/data/scenarios/scrub_backward_seeking.scenario:
+ * validate/data/scenarios/scrub_backward_seeking_full.scenario:
+ * validate/data/scenarios/scrub_forward_seeking.scenario:
+ * validate/data/scenarios/scrub_forward_seeking_full.scenario:
+ * validate/data/scenarios/seek_backward.scenario:
+ * validate/data/scenarios/seek_forward.scenario:
+ * validate/data/scenarios/seek_forward_backward.scenario:
+ * validate/data/scenarios/seek_with_stop.scenario:
+ * validate/data/scenarios/simple_seeks.scenario:
+ * validate/data/scenarios/update_start.scenario:
+ * validate/data/scenarios/update_stop.scenario:
+ * validate/launcher/apps/gstvalidate.py:
+ Scenarios: override seek flags for RTSP tests
+ Our RTSP server is not accurate, it makes no sense to perform
+ accuracy checks on the client-side segments.
+
+2019-02-01 20:01:40 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate:scenario: Set variables on all action fields
+
+2019-02-01 19:30:44 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-reporter.c:
+ validate: Handle G_LOG_ERROR in our glog handler
+
+2019-02-01 19:03:04 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate:scenario: Rename action 'define-consts' to 'set-vars'
+ Those are not consts are they can be modified at runtime
+
+2019-02-01 18:41:07 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ * validate/gst/validate/gst-validate-utils.c:
+ validate: Cleanup flags/enum_from_string
+
+2019-02-01 23:08:16 +0100 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ scenario: prioritize SCENARIOS_PATH when including
+
+2019-02-01 01:24:19 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/baseclasses.py:
+ validate: Let people know the testsuite starts running
+ Now that we do not print infos about successful tests when redirecting.
+
+2019-02-01 00:08:45 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-reporter.c:
+ validate: Keep trying to print stack traces when our log hanlder is removed
+ There are cases where a crash happens after the program ends
+
+2019-01-31 23:43:28 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate:scenario: Give pipeline position when failling on EOS
+
+2019-01-31 23:35:50 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/baseclasses.py:
+ validate:launcher: Do not print passing tests if not running in a tty
+
+2019-01-31 22:37:17 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ validate:scenario: Explicitely mark generated stop() action as such
+
+2019-01-30 15:57:13 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/apps/pyunittest.py:
+ validate:launcher:punittest: Raise an exception if a testsuite can't be loaded
+
+2015-11-25 16:10:50 +0100 Edward Hervey <edward@centricular.com>
+
+ * validate/gst/validate/gst-validate-pad-monitor.c:
+ * validate/gst/validate/gst-validate-pad-monitor.h:
+ pad-monitor: Remove unused pad getrange override
+
+2015-11-25 14:20:31 +0100 Edward Hervey <edward@centricular.com>
+
+ * validate/gst/validate/gst-validate-internal.h:
+ * validate/gst/validate/gst-validate-pad-monitor.c:
+ * validate/gst/validate/validate.c:
+ validate: Use g_object_{get|set}_qdata where applicable
+ This provides a substantial speedup compared to using strings
+
+2019-01-30 01:24:16 +0100 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * validate/launcher/baseclasses.py:
+ TestsManager: stop displaying blacklisted tests on stdout
+ It's basically spam, better suited to the debug logs
+
+2019-01-29 15:59:44 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/baseclasses.py:
+ validate:launcher: Never print lines larger than the terminal
+
+2019-01-29 12:54:01 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/gst/validate/gst-validate-scenario.c:
+ * validate/gst/validate/gst-validate-scenario.h:
+ validate: scenario: Mark action as being executed right before calling ->execute
+ And make sure that we do not try to execute the following action
+ In the case the action type leads to the GMainContext to be ieterated
+
+2018-12-11 11:42:25 +0200 Jordan Petridis <jpetridis@gnome.org>
+
+ * validate/launcher/reporters.py:
+ validate: Report the full test name in the xunit file
+ Looks like gitlab prefers this way of representing tests as it
+ displays only the name field in its junit reports.
+ Close #32
+
+2019-01-26 10:27:47 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/baseclasses.py:
+ validate:launcher: Make baseclasses.py pep8 compliant
+
+2019-01-25 22:27:07 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/apps/gstcheck.py:
+ * validate/launcher/baseclasses.py:
+ * validate/launcher/main.py:
+ validate:launcher: Handle launching launching a sub launcher
+ If you use validate-launcher in a meson testsuite, those test now
+ gets integrated as one unique testsuite (with a pretty long namespace).
+
+2019-01-25 22:13:28 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/baseclasses.py:
+ * validate/launcher/main.py:
+ validate:launcher: Refactor the "main" function
+ - Move the parser code into a `LauncherConfig.create_parser()` method
+ - Remove the need to pass libsdir to the _TestsLauncher object
+ - Extract out a `setup_launcher_from_args` function
+
+2019-01-25 22:09:30 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/baseclasses.py:
+ * validate/launcher/main.py:
+ launcher: Move http serveur and xvfb server to the main test runner object
+ No good reason for it to be in the main function
+
+2019-01-25 22:06:14 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/apps/pyunittest.py:
+ launcher: Cleanup the way we find python test command line
+ By setting it before the test base class adds the current testsuite name in the classname
+
+2019-01-25 22:03:57 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/apps/gstcheck.py:
+ launcher: Fix test listing in meson VS gstcheck tests
+ You might select tests that match Meson but not gstcheck in which
+ case the 'meson only' variant is exposed but those should never exist.
+
+2019-01-26 09:19:35 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * validate/launcher/apps/gstvalidate.py:
+ validate:launcher: Add `%(config_path)s` in the pipeline desc vars
+ When defining pipelines_descriptions to run test on in a `.json` file, you might
+ need to point to paths in the testsuite directory (for media files URIs
+ for example), you can now do
+ `"pipeline": "filesrc location="$(config_path)s/../medias/some/file.mkv...`
+
=== release 1.15.1 ===
2019-01-17 10:01:50 +0000 Tim-Philipp Müller <tim@centricular.com>
diff --git a/validate/NEWS b/validate/NEWS
index 1e860c47a6..6457a5d996 100644
--- a/validate/NEWS
+++ b/validate/NEWS
@@ -15,7 +15,7 @@ the git master branch and which will eventually result in 1.16.
See https://gstreamer.freedesktop.org/releases/1.16/ for the latest
version of this document.
-_Last updated: Monday 14 January 2019, 13:00 UTC (log)_
+_Last updated: Monday 25 January 2019, 15:00 UTC (log)_
Introduction
@@ -24,8 +24,8 @@ The GStreamer team is proud to announce a new major feature release in
the stable 1.x API series of your favourite cross-platform multimedia
framework!
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+As always, this release is again packed with many new features, bug
+fixes and other improvements.
Highlights
@@ -40,7 +40,7 @@ Highlights
- Support for Closed Captions and other Ancillary Data in video
-- Spport for planar (non-interleaved) raw audio
+- Support for planar (non-interleaved) raw audio
- GstVideoAggregator, compositor and OpenGL mixer elements are now in
-base
@@ -98,14 +98,17 @@ Noteworthy new API
to process the media in a live pipeline before it reaches the sink.
This is on top of the systemic latency that is normally reported by
the latency query. This defaults to 20ms and should make pipelines
- such as “v4lsrc ! xvimagesink” not claim that all frames are late in
- the QoS events. Ideally, this should replace max_lateness for most
- applications.
+ such as v4l2src ! xvimagesink not claim that all frames are late in
+ the QoS events. Ideally, this should replace the "max-lateness"
+ property for most applications.
- RTCP Extended Reports (XR) parsing according to RFC 3611:
Loss/Duplicate RLE, Packet Receipt Times, Receiver Reference Time,
Delay since the last Receiver (DLRR), Statistics Summary, and VoIP
- Metrics reports.
+ Metrics reports. This only provides the ability to parse such
+ packets, generation of XR packets is not supported yet and XR
+ packets are not automatically parsed by rtpbin / rtpsession but must
+ be actively handled by the application.
- a new mode for interlaced video was added where each buffer carries
a single field of interlaced video, with buffer flags indicating
@@ -146,9 +149,10 @@ or planar arrangement in memory would look like
|LEFT|LEFT|LEFT| and |RIGHT|RIGHT|RIGHT| residing in separate memory
chunks or separated by some padding.
-GStreamer has always had signalling for non-interleaved audio, but it
-was never actually properly implemented in any elements. audioconvert
-would advertise support for it, but wasn’t actually able to handle it.
+GStreamer has always had signalling for non-interleaved audio since
+version 1.0, but it was never actually properly implemented in any
+elements. audioconvert would advertise support for it, but wasn’t
+actually able to handle it correctly.
With this release we now have full support for non-interleaved audio as
well, which means more efficient integration with external APIs that
@@ -177,18 +181,18 @@ The video support library has gained support for detecting and
extracting Ancillary Data from videos as per the SMPTE S291M
specification, including:
-- a VBI (Video Blanking Interval) parser that can detect and extract
- Ancillary Data from Vertical Blanking Interval lines of component
- signals. This is currently supported for videos in v210 and UYVY
- format.
+- a VBI (Vertical Blanking Interval) parser that can detect and
+ extract Ancillary Data from Vertical Blanking Interval lines of
+ component signals. This is currently supported for videos in v210
+ and UYVY format.
- a new GstMeta for closed captions: GstVideoCaptionMeta. This
supports the two types of closed captions, CEA-608 and CEA-708,
along with the four different ways they can be transported (other
systems are a superset of those).
-- a VBI (Video Blanking Interval) encoder for writing ancillary data
- to the Vertical Blanking Interval lines of component signals.
+- a VBI (Vertical Blanking Interval) encoder for writing ancillary
+ data to the Vertical Blanking Interval lines of component signals.
The new closedcaption plugin in gst-plugins-bad then makes use of all
this new infrastructure and provides the following elements:
@@ -222,6 +226,9 @@ support:
- playbin and playbin3 learned how to autoplug CEA 608/708 CC overlay
elements
+- the externally maintained ajavideosrc element for AJA capture cards
+ has support for extracting closed captions
+
The rsclosedcaption plugin in the Rust plugins collection includes a
MacCaption (MCC) file parser and encoder.
@@ -239,7 +246,7 @@ New Elements
- gloverlaycompositor: New OpenGL-based compositor element that
flattens any overlays from GstVideoOverlayCompositionMetas into the
- video stream.
+ video stream. This element is also always part of glimagesink.
- glalpha: New element that adds an alpha channel to a video stream.
The values of the alpha channel can either be set to a constant or
@@ -248,7 +255,7 @@ New Elements
done in floating point so results may not be identical to the output
of the existing alpha element.
-- rtpfunnel funnels together rtp-streams into a single session. Use
+- rtpfunnel funnels together RTP streams into a single session. Use
cases include multiplexing and bundle. webrtcbin uses it to
implement BUNDLE support.
@@ -264,10 +271,12 @@ New Elements
WPE
- Two new OpenCV-based elements: cameracalibrate and cameraundistort
- who can communicate to figure out distortion correction parameters
+ that can communicate to figure out distortion correction parameters
for a camera and correct for the distortion.
-- new sctp plugin based on usrsctp with sctpenc and sctpdec elements
+- New sctp plugin based on usrsctp with sctpenc and sctpdec elements.
+ These elements are used inside webrtcbin for implementing data
+ channels.
New element features and additions
@@ -348,12 +357,12 @@ New element features and additions
- rtspsrc now allows applications to send RTSP SET_PARAMETER and
GET_PARAMETER requests using action signals.
-- rtspsrc also has a small (100ms) configurable teardown delay by
- default to try and make sure an RTSP TEARDOWN request gets sent out
- when the source element shuts down. This will block the downward
- PAUSED to READY state change for a short time, but can be unset
- where it’s a problem. Some servers only allow a limited number of
- concurren clients, so if no proper TEARDOWN is sent clients may have
+- rtspsrc has a small (100ms) configurable teardown delay by default
+ to try and make sure an RTSP TEARDOWN request gets sent out when the
+ source element shuts down. This will block the downward PAUSED to
+ READY state change for a short time, but can be disabled where it’s
+ a problem. Some servers only allow a limited number of concurrent
+ clients, so if no proper TEARDOWN is sent new clients may have
problems connecting to the server for a while.
- souphttpsrc behaves better with low bitrate streams now. Before it
@@ -364,6 +373,7 @@ New element features and additions
- filesink: do internal buffering to avoid performance regression with
small writes since we bypass libc buffering by using writev()
+ instead of fwrite()
- identity: add "eos-after" property and fix "error-after" property
when the element is reused
@@ -405,9 +415,9 @@ New element features and additions
relays (TURN servers).
- The removesilence element has received various new features and
- properties, such as a
- "threshold"1 property, detecting silence only after minimum silence time/buffers, a“silent”property to control bus message notifications as well as a“squash”`
- property.
+ properties, such as a "threshold" property, detecting silence only
+ after minimum silence time/buffers, a "silent" property to control
+ bus message notifications as well as a "squash" property.
- AOMedia AV1 decoder gained support for 10/12bit decoding whilst the
AV1 encoder supports more image formats and subsamplings now and
@@ -430,15 +440,15 @@ Plugin and library moves
- The stereo element was moved from -bad into the existing audiofx
plugin in -good. If you get duplicate type registration warnings
- when upgrading, check that you don’t have a stale gststereo plugin
- lying about somewhere.
+ when upgrading, check that you don’t have a stale stereoplugin lying
+ about somewhere.
GstVideoAggregator, compositor, and OpenGL mixer elements moved from -bad to -base
GstVideoAggregator is a new base class for raw video mixers and muxers
-and is based on [GstAggregator][aggregator]. It provides defined-latency
-mixing of raw video inputs and ensures that the pipeline won’t stall
-even if one of the input streams stops producing data.
+and is based on GstAggregator. It provides defined-latency mixing of raw
+video inputs and ensures that the pipeline won’t stall even if one of
+the input streams stops producing data.
As part of the move to stabilise the API there were some last-minute API
changes and clean-ups, but those should mostly affect internal elements.
@@ -456,14 +466,15 @@ would expected in most scenarios.
The compositor element has gained support for per-pad blending mode
operators (SOURCE, OVER, ADD) which determines what operator to use for
blending this pad over the previous ones. This can be used to implement
-crossfading.
+crossfading and the available operators can be extended in the future as
+needed.
A number of OpenGL-based video mixer elements (glvideomixer, glmixerbin,
glvideomixerelement, glstereomix, glmosaic) which are built on top of
GstVideoAggregator have also been moved from -bad to -base now. These
elements have been merged into the existing OpenGL plugin, so if you get
duplicate type registration warnings when upgrading, check that you
-don’t have a stale gstopenglmixers plugin lying about somewhere.
+don’t have a stale openglmixers plugin lying about somewhere.
Plugin removals
@@ -477,11 +488,11 @@ The following plugins have been removed from gst-plugins-bad:
plugin.
- The acmmp3dec and acmenc plugins for Windows have been removed. ACM
- is an ancient legacy API and there was no point in keeping them
- around for a licensed mp3 decoder now that mp3 patents have expired
- and we have a decoder in -good. We also didn’t ship these in our
- cerbero-built Windows packages, so it’s unlikely that they’ll be
- missed.
+ is an ancient legacy API and there was no point in keeping the
+ plugins around for a licensed MP3 decoder now that the MP3 patents
+ have expired and we have a decoder in -good. We also didn’t ship
+ these in our cerbero-built Windows packages, so it’s unlikely that
+ they’ll be missed.
Miscellaneous API additions
@@ -506,7 +517,8 @@ Miscellaneous API additions
one might need to put such elements into READY state to test if the
hardware is present in the system for example.
-- protection: Add a new definition for unspecified system protection
+- protection: Add a new definition for unspecified system protection,
+ GST_PROTECTION_UNSPECIFIED_SYSTEM_ID
- take functions for various mini objects that didn’t have them yet:
gst_query_take(), gst_message_take(), gst_tag_list_take(),
@@ -522,11 +534,18 @@ Miscellaneous API additions
gst_clear_mini_object(), gst_clear_object()
- miniobject: new API gst_mini_object_add_parent() and
- gst_mini_object_remove_parent()to set parent pointers on mini objects to ensure correct writability: Every container of miniobjects now needs to store itself as parent in the child object, and remove itself again later. A mini object is then only writable if there is at most one parent, that parent is writable itself, and the reference count of the mini object is 1.GstBuffer(for memories),GstBufferList(for buffers),GstSample(for caps, buffer, bufferlist), andGstVideoOverlayComposition`
- were updated accordingly. Without this it was possible to have
- e.g. a buffer list with a refcount of 2 used in two places at once
- that both modify the same buffer with refcount 1 at the same time
- wrongly thinking it is writable even though it’s really not.
+ gst_mini_object_remove_parent() to set parent pointers on mini
+ objects to ensure correct writability: Every container of
+ miniobjects now needs to store itself as parent in the child object,
+ and remove itself again later. A mini object is then only writable
+ if there is at most one parent, that parent is writable itself, and
+ the reference count of the mini object is 1. GstBuffer (for
+ memories), GstBufferList (for buffers), GstSample (for caps, buffer,
+ bufferlist), and GstVideoOverlayComposition were updated
+ accordingly. Without this it was possible to have e.g. a buffer list
+ with a refcount of 2 used in two places at once that both modify the
+ same buffer with refcount 1 at the same time wrongly thinking it is
+ writable even though it’s really not.
- poll: add API to watch for POLLPRI and stop treating POLLPRI as a
read. This is useful to wait for video4linux events which are
@@ -596,7 +615,7 @@ GstPlayer
Miscellaneous changes
-- As a result of moving to different FFmpeg APIs, encoder and decoder
+- As a result of moving to newer FFmpeg APIs, encoder and decoder
elements exposed by the GStreamer FFmpeg wrapper plugin (gst-libav)
may have seen possibly incompatible changes to property names and/or
types, and not all properties exposed might be functional. We are
@@ -649,48 +668,48 @@ Tracing framework and debugging improvements
object. This is currently limited to pads for GstElements and
events for the pads. The output may look like this:
- (gdb) gst-print pad.object.parent
- GstMatroskaDemux (matroskademux0) {
- SinkPad (sink, pull) {
- }
- SrcPad (video_0, push) {
- events:
- stream-start:
- stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/001:1274058367
- caps: video/x-theora
- width: 1920
- height: 800
- pixel-aspect-ratio: 1/1
- framerate: 24/1
- streamheader: < 0x5555557c7d30 [GstBuffer], 0x5555557c7e40 [GstBuffer], 0x7fffe00141d0 [GstBuffer] >
- segment: time
- rate: 1
- tag: global
- container-format: Matroska
- }
- SrcPad (audio_0, push) {
- events:
- stream-start:
- stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/002:1551204875
- caps: audio/mpeg
- mpegversion: 4
- framed: true
- stream-format: raw
- codec_data: 0x7fffe0014500 [GstBuffer]
- level: 2
- base-profile: lc
- profile: lc
- channels: 2
- rate: 44100
- segment: time
- rate: 1
- tag: global
- container-format: Matroska
- tag: stream
- audio-codec: MPEG-4 AAC audio
- language-code: en
+ (gdb) gst-print pad.object.parent
+ GstMatroskaDemux (matroskademux0) {
+ SinkPad (sink, pull) {
+ }
+ SrcPad (video_0, push) {
+ events:
+ stream-start:
+ stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/001:1274058367
+ caps: video/x-theora
+ width: 1920
+ height: 800
+ pixel-aspect-ratio: 1/1
+ framerate: 24/1
+ streamheader: < 0x5555557c7d30 [GstBuffer], 0x5555557c7e40 [GstBuffer], 0x7fffe00141d0 [GstBuffer] >
+ segment: time
+ rate: 1
+ tag: global
+ container-format: Matroska
+ }
+ SrcPad (audio_0, push) {
+ events:
+ stream-start:
+ stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/002:1551204875
+ caps: audio/mpeg
+ mpegversion: 4
+ framed: true
+ stream-format: raw
+ codec_data: 0x7fffe0014500 [GstBuffer]
+ level: 2
+ base-profile: lc
+ profile: lc
+ channels: 2
+ rate: 44100
+ segment: time
+ rate: 1
+ tag: global
+ container-format: Matroska
+ tag: stream
+ audio-codec: MPEG-4 AAC audio
+ language-code: en
+ }
}
- }
- gst_structure_to_string() now serialises the actual value of
pointers when serialising GstStructures instead of claiming they’re
@@ -704,10 +723,10 @@ Tools
- gst-inspect-1.0 has coloured output now and will automatically use a
pager if the output does not fit on a page. This only works in a
- unix environment and if the output is not piped. If you don’t like
- the colours you can disable them by setting the
- GST_INSPECT_NO_COLORS=1 environment variable or passing the
- --no-colors command line option.
+ UNIX environment and if the output is not piped, and on Windows 10
+ build 16257 or newer. If you don’t like the colours you can disable
+ them by setting the GST_INSPECT_NO_COLORS=1 environment variable or
+ passing the --no-color command line option.
GStreamer RTSP server
@@ -736,6 +755,29 @@ GStreamer VAAPI
- this section will be filled in in due course
+GStreamer OMX
+
+- Add support of NV16 format to video encoders input.
+
+- Video decoders now handle the ALLOCATION query to tell upstream
+ about the number of buffers they require. Video encoders will also
+ use this query to adjust their number of allocated buffers
+ preventing starvation when using dynamic buffer mode.
+
+- The OMX_PERFORMANCE debug category has been renamed to OMX_API_TRACE
+ and can now be used to track a widder variety of interactions
+ between OMX and GStreamer.
+
+- Video encoders will now detect frame rate only changes and will
+ inform OMX about it rather than doing a full format reset.
+
+- Various Zynq UltraScale+ specific improvements:
+ - Video encoders are now able to import dmabuf from upstream.
+ - Support for HEVC range extension profiles and more AVC profiles.
+ - We can now request video encoders to generate an IDR using the
+ force key unit event.
+
+
GStreamer Editing Services and NLE
- this section will be filled in in due course
@@ -858,7 +900,7 @@ Added
value per tag. The old ::iter_tag_list() function was renamed to
::iter_generic() and still provides access to each value for a tag
- Bus::iter() and Bus::iter_timed() iterators around the corresponding
- ::pop*() functions
+ ::pop\*() functions
- serde serialization of Value can also handle Buffer now
@@ -995,11 +1037,78 @@ Build and Dependencies
- New sctp plugin based on usrsctp (for WebRTC data channels)
+Cerbero
+
+Cerbero is a meta build system used to build GStreamer plus dependencies
+on platforms where dependencies are not readily available, such as
+Windows, Android, iOS and macOS.
+
+Cerbero has seen a number of improvements:
+
+- Cerbero has been ported to Python 3 and requires Python 3.5 or newer
+ now
+
+- Source tarballs are now protected by checksums in the recipes to
+ guard against download errors and malicious takeover of projects or
+ websites. In addition, downloads are only allowed via secure
+ transports now and plain HTTP, FTP and git:// transports are not
+ allowed anymore.
+
+- There is now a new fetch-bootstrap command which downloads sources
+ required for bootstrapping, with an optional --build-tools-only
+ argument to match the bootstrap --build-tools-only command.
+
+- The bootstrap, build, package and bundle-source commands gained a
+ new --offline switch that ensures that only sources from the cache
+ are used and never downloaded via the network. This is useful in
+ combination with the fetch and fetch-bootstrap commands that acquire
+ sources ahead of time before any build steps are executed. This
+ allows more control over the sources used and when sources are
+ updated, and is particularly useful for build environments that
+ don’t have network access.
+
+- bootstrap --assume-yes will automatically say ‘yes’ to any
+ interactive prompts during the bootstrap stage, such as those from
+ apt-get or yum.
+
+- bootstrap --system-only will only bootstrap the system without build
+ tools.
+
+- Manifest support: The build manifest can be used in continuous
+ integration (CI) systems to fixate the Git revision of certain
+ projects so that all builds of a pipeline are on the same reference.
+ This is used in GStreamer’s gitlab CI for example. It can also be
+ used in order to re-produce a specific build. To set a manifest, you
+ can set manifest = 'my_manifest.xml' in your configuration file, or
+ use the --manifest command line option. The command line option will
+ take precendence over anything specific in the configuration file.
+
+- The new build-deps command can be used to build only the
+ dependencies of a recipe, without the recipe itself.
+
+- new --list-variants command to list available variants
+
+- variants can now be set on the command line via the -v option as a
+ comma-separated list. This overrides any variants set in any
+ configuration files.
+
+- new qt5, intelmsdk and nvidia variants for enabling Qt5 and hardware
+ codec support. See the Enabling Optional Features with Variants
+ section in the Cerbero documentation for more details how to enable
+ and use these variants.
+
+- A new -t / --timestamp command line switch makes commands print
+ timestamps
+
Platform-specific changes and improvements
Android
+- toolchain: update compiler to clang and NDKr18. NDK r18 removed the
+ armv5 target and only has Android platforms that target at least
+ armv7 so the armv5 target is not useful anymore.
+
- The way that GIO modules are named has changed due to upstream GLib
natively adding support for loading static GIO modules. This means
that any GStreamer application using gnutls for SSL/TLS on the
@@ -1010,9 +1119,15 @@ Android
library. Look at this commit for the necessary change in the
examples.
+- various build issues on Android have been fixed.
+
macOS and iOS
-- macOS binaries should be fully relocatable now
+- various build issues on iOS have been fixed.
+
+- the minimum required iOS version is now 9.0. The difference in
+ adoption between 8.0 and 9.0 is 0.1% and the bump to 9.0 fixes some
+ build issues.
- The way that GIO modules are named has changed due to upstream GLib
natively adding support for loading static GIO modules. This means
diff --git a/validate/RELEASE b/validate/RELEASE
index 32d7a15f83..1f5bd5c3e6 100644
--- a/validate/RELEASE
+++ b/validate/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gst-validate 1.15.1.
+This is GStreamer gst-validate 1.15.2.
GStreamer 1.15 is the development branch leading up to the next major
stable version which will be 1.16.
diff --git a/validate/configure.ac b/validate/configure.ac
index b2e638a5fb..459b52f7f2 100644
--- a/validate/configure.ac
+++ b/validate/configure.ac
@@ -2,7 +2,7 @@ AC_PREREQ(2.62)
dnl initialize autoconf
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, cvs and prerelease does Werror too
-AC_INIT(Gst-Validate, 1.15.1,
+AC_INIT(Gst-Validate, 1.15.2,
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
gst-validate)
@@ -49,11 +49,11 @@ AC_SUBST(GST_API_VERSION)
AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION",
[GStreamer API Version])
-AS_LIBTOOL(GST, 1501, 0, 1501)
+AS_LIBTOOL(GST, 1502, 0, 1502)
dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.15.1
-GSTPB_REQ=1.15.1
+GST_REQ=1.15.2
+GSTPB_REQ=1.15.2
dnl *** autotools stuff ****
diff --git a/validate/gst-validate.doap b/validate/gst-validate.doap
index 9c91ce77c0..41bdb9d5b3 100644
--- a/validate/gst-validate.doap
+++ b/validate/gst-validate.doap
@@ -54,6 +54,16 @@
<release>
<Version>
+ <revision>1.15.2</revision>
+ <branch>master</branch>
+ <name></name>
+ <created>2019-02-26</created>
+ <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-validate/gst-validate-1.15.2.tar.xz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.15.1</revision>
<branch>master</branch>
<name></name>
diff --git a/validate/meson.build b/validate/meson.build
index a1aa62a3b8..708321609e 100644
--- a/validate/meson.build
+++ b/validate/meson.build
@@ -1,4 +1,4 @@
-# version: '1.15.1' - we're putting this in here to trick the dist-hook check
+# version: '1.15.2' - we're putting this in here to trick the dist-hook check
# in release.mak in the common submodule without having to update it
inc_dirs = include_directories('.')