Thibault Saunier
123ecb57c1
media-info: Do not use GST_PTR_FORMAT with g_print
...
Fix compilation
2013-10-14 11:20:03 -03:00
Thibault Saunier
3990d7716c
data: Avoid races in the scrub_forward seeking scenario
...
Make sure that it does not last too long if the file is long (scrubing
on 10 secs maximum), and make sure that we do not end up seeking after
the max duration
2013-10-14 11:07:03 -03:00
Thibault Saunier
182f4e9a41
report: Set refcount=1 when creating a report
...
As it should start with 1 reference, not 0
2013-10-14 11:05:58 -03:00
Thibault Saunier
f8b4235e33
scenario: Add an action that checks the "force-key-unit" event execution
2013-10-09 14:24:42 -03:00
Thibault Saunier
10d1c4560e
scenario: Make the get_clocktime helper a public method
...
So it can be reused outside of the core code
2013-10-09 09:33:06 -03:00
Thibault Saunier
4d59a2720e
pad-monitor: Do not try to compare 2 not fixed values
...
There is no reliable way of checking those values in the case they
are not fixed, let's just make sure we get fixed values before
executing the check
2013-10-07 19:47:15 -03:00
Thibault Saunier
c2b58f347e
data: Add an adaptive video framerate and size scenario
2013-10-07 17:40:54 -03:00
Thibault Saunier
464b008421
data: Add an adaptive video framerate scenario
2013-10-07 17:18:37 -03:00
Thibault Saunier
2580de34c5
data: Add a scenario where we change the video size on during playback
2013-10-07 15:57:30 -03:00
Thibault Saunier
10442def2f
transcoding: Add a new action to change restriction caps at runtime
2013-10-07 15:57:30 -03:00
Thibault Saunier
75d7450e19
transcoding: Fix the way we get pad caps
2013-10-07 15:57:29 -03:00
Thibault Saunier
2b58bff057
data: Set seeks to accurate+flush by default
2013-10-05 13:36:21 -03:00
Thibault Saunier
b20166ff23
scenario: Pass through gst-indent
2013-10-05 13:36:05 -03:00
Thibault Saunier
820ebe3b26
scenario: Use g_error instead of exit (0)
2013-10-05 13:36:05 -03:00
Thibault Saunier
045cc47dcc
scenario: Factor out function to get GstClockTime out of a structure
2013-10-05 13:36:04 -03:00
Thibault Saunier
4cea878563
scenario: Use a weak ref to the pipeline
...
We are listening to it, we should not be owning a ref to it.
2013-10-05 13:36:04 -03:00
Thibault Saunier
7e1249f089
runner: Use "18" as exit code in case of error
...
It is a random number, but it will in most cases give people a hint
that gst-validate reported a critical issue, and thus set the return
code, only by looking at it
Also make use of gst_validate_runner_print() in
gst-validate-transcoding.c as we were copy pasting that method there.
2013-10-05 13:36:04 -03:00
Thibault Saunier
ae641d0353
scenario: Handle formulas in playback_time
...
And port seek forward/backward scenarios to relative seeking
2013-10-05 13:36:04 -03:00
Thibault Saunier
e24645b133
scenario: Check that all action were properly executed
2013-10-05 13:36:04 -03:00
Thibault Saunier
c9ee576e8e
scenario: Add the notion of repeated actions
2013-10-05 13:36:03 -03:00
Thibault Saunier
a89f32725b
utils: Add util functions to parse simple mathematical expressions
...
And make use of it to set the start of a seek
2013-10-05 13:19:14 -03:00
Thibault Saunier
75356d4bbe
scenario: Error out and exit when we fail loading a scenario
2013-10-05 13:19:14 -03:00
Olivier Crête
75e1f5040a
gst-validate-scenario: Only typedef the struct once
...
Some gcc versions don't like the typedef being done twice
2013-10-03 18:14:29 -04:00
Vincent Penquerc'h
bb124f787d
scenario: do not set default seek flags
...
Seeks will be done with no particular flags, unless specified
in the scenario.
2013-10-03 05:32:54 -04:00
Olivier Crête
3a6f42bf67
gst-validate: Don't use the GOptionContext after freeing it
2013-09-30 09:52:07 -04:00
Thibault Saunier
c469f9b2a4
pad-monitor: Check if channel-mask is present only if channels > 2
...
As it is not a mandatory field otherwize
https://bugzilla.gnome.org/show_bug.cgi?id=708499
2013-09-21 00:34:05 +02:00
Thibault Saunier
42857faaae
scenario: Add GST_VALIDATE_SCENARIOS_PATH environment variable
...
So you can specify the PATHS where to look for scenario files
2013-09-21 00:32:52 +02:00
Thiago Santos
720010f073
scenarios: add 2 new scenarios for seeks with different seek types
...
They test seeks that only update the stop or the start position, some
demuxers seem not to handle the case where start type is set to None.
2013-09-20 15:18:35 -03:00
Thiago Santos
e3e463c0cc
validate-scenario: track position query results closer
...
Always keep probing the pipeline for the current position and compare
with the latest requested seek segment to detect if the seek boundaries
are being respected
2013-09-20 15:18:35 -03:00
Thibault Saunier
b4a711c568
scenario: Make it possible to define mandatory fields
...
And give a descrpition for actions
2013-09-17 18:38:31 -03:00
Vincent Penquerc'h
ccc3f8d696
scenario: add a track switch command, and an audio track switch test
...
The "switch-track" command can be used to switch tracks. The "type"
argument selects which track type to change (can be "audio", "video",
or "text"). The "index" argument selects which track of this type
to use: it can be either a number, which will be the Nth track of
the given type, or a number with a "+" or "-" prefix, which means
a relative change (eg, "+1" means "next track", "-1" means "previous
track").
Conflicts:
validate/gst/validate/gst-validate-scenario.c
2013-09-17 18:38:31 -03:00
Thibault Saunier
f0ef3803dd
scenario: Make it possible to register action parsing funcs before init
2013-09-16 18:49:31 -03:00
Thibault Saunier
f85983a043
validate: Add .pc files so applications can link against us
2013-09-16 18:49:31 -03:00
Thibault Saunier
8a9e9a7fd7
data: Port remaning scenario files to new format
...
And add support to user declared timestamps -1.0 as GST_CLOCK_TIME_NONE
2013-09-13 12:03:44 -03:00
Thibault Saunier
ea1f0a64f2
scenario: Rework scenarios to be: 1- Simpler to write them, 2- extendible
...
Make the scenario files a list of GstStructure-s as strings
2013-09-09 19:31:21 -03:00
Thibault Saunier
711946879e
bin-monitor: Add a way to specify pipelines on which to set scenarios
...
When used with LD_PRELOAD, the application might use various pipelines
for several different thing, we need to make it possible to spcify a
specific pipeline (or set of pipelines) on which to run the scenario.
The format is in the form of:
scenario_name:pipelinename_pattern*
2013-09-09 19:07:32 -03:00
Thibault Saunier
5cea134655
scenario: Try to run scenarios in development first
2013-09-09 19:01:44 -03:00
Edward Hervey
4dfecb6ee1
Adapt submodule usage for gst-devtools
2013-09-09 17:40:36 +02:00
Edward Hervey
746b6f41b2
tools: Update .gitignore for tools move
2013-09-09 15:36:15 +02:00
Thiago Santos
24b6284d17
pad-monitor: avoid false positives when a seek fails
...
Remove the expected seqnums for events when a seek fails, preventing
false positives at the final report
2013-09-05 16:15:40 -03:00
Vincent Penquerc'h
fefc5ffb41
monitor-preload: schedule a report printout at exit
...
Conflicts:
tools/gst-validate.c
2013-09-05 13:40:41 -03:00
Vincent Penquerc'h
7223b183f3
gst-validate: ensure the top level element is a pipeline
...
For instance, "fakesrc" will return a fakesrc, not a pipeline.
This is similar to what gst-launch does, and avoids calling
pipeline API on a non pipeline object (and thus asserting).
2013-09-05 13:40:39 -03:00
Vincent Penquerc'h
9cf4857776
gst-validate: do not try to use a pipeline which failed to create
...
Instead, error out properly with the actual error, if available.
2013-09-05 13:40:35 -03:00
Vincent Penquerc'h
3019586677
gst-validate: initialize gst/glib before use in scenario listing
...
Also ensure that if just -l is passed, we don't try creating a
non existent pipeline.
This makes gst-validate -l work properly again.
2013-09-05 13:37:39 -03:00
Thiago Santos
789ea6e9d5
pad-monitor: fix typo on macro usage
...
Pass the correct variable to macro
2013-09-05 11:47:21 -03:00
Thiago Santos
1860712098
pad-monitor: allow flushing flow returns when pad is flushing
...
It should always be acceptable to return GST_FLOW_FLUSHING when the
pad is flushing
2013-09-05 11:46:46 -03:00
Thiago Santos
a1775e75e5
pad-monitor: removing bad check
...
Elements are allowed to accumulate segments, they don't have to push
1:1 segments as they receive
2013-09-04 08:51:54 -03:00
Thiago Santos
25c55501a0
pad-monitor: buffer timestamp ranges check
...
Improve buffer timestamp range check:
* Only do it for encoders or decoders
* Audio has an acceptable tolerance of 100ms
To do this, keep track of the caps on the pad and store
if it is dealing with audio or video
2013-09-03 15:35:36 -03:00
Thiago Santos
26cff77b72
pad-monitor: move caps check to common event handling
...
Allows both src and sink pad to keep track of the current caps, but
the duplicated caps check is still only applied to sink pads as
src pads can push the same caps multiple times when it isn't linked
2013-09-03 15:17:05 -03:00
Thiago Santos
bd0f19c105
pad-monitor: fix reference handling for expired events list
2013-09-02 20:41:35 -03:00
Thiago Santos
7154f280b5
docs: update and improve
...
Thanks to Thibault Saunier for most of the explanatory texts
2013-09-02 16:09:07 -03:00
Thiago Santos
2e216818bd
Replacing mentions of qa with validate
2013-09-02 13:22:51 -03:00
Edward Hervey
cc65145eb1
pad-monitor: Check if iterator exists before trying to use it
2013-09-02 12:18:07 -03:00
Edward Hervey
788054bda7
pad-monitor: make debug log more readable
...
Use pad as the debug object to make logs more meaningful.
Also adds a FIXME note
2013-09-02 12:15:24 -03:00
Edward Hervey
fb58e16c5a
element-monitor: protect agains elements that have no klass
2013-09-02 12:11:25 -03:00
Thiago Santos
ea903da1c7
pad-monitor: use activate-mode function to detect when to clear pad data
...
Clear as much as a flush-stop when pad is deactivated
2013-09-02 12:05:46 -03:00
Edward Hervey
d2edb59a24
WIP: pad-monitor: Fix serialized event order check
2013-09-02 10:47:32 -03:00
Thiago Santos
fef4eba9a2
pad-monitor: also track eos event that should be emitted after a seek
...
When seeking out of the media file length, the element should push an
EOS with the same seqnum of the seek event
2013-09-02 10:46:55 -03:00
Thiago Santos
390b54f40d
scenario: add missing space
2013-09-02 10:46:42 -03:00
Edward Hervey
78e1cb82da
validate: prettify output of results
...
Makes the result a bit more readable than a compact multi-line list.
FIXME: Figure out how to print the description of the issues (which can
spawn multiple lines) in a nice way.
2013-09-02 10:03:07 -03:00
Thiago Santos
adca72b069
scenario: add missing line break after print
2013-08-29 14:27:34 -03:00
Thiago Santos
713da78201
pad-monitor: avoid tracking tag events
...
Tag events are hard to track and check if properly serialized because
they mutate too much inside elements. There is no reliable way currently
to match a tag event pushed into an element and another tag event
leaving the element (other than if the pointers are actually the same).
2013-08-29 14:26:05 -03:00
Thiago Santos
1c874d175e
pad-monitor: only do combined return checks for demuxers
...
Seems like the only place that gstreamer elements should really
care about it
2013-08-29 11:48:33 -03:00
Thiago Santos
a426198916
pad-monitor: add two useful macros for readability
...
Avoids using long macros and having to check for pad-monitor parent
existance
2013-08-29 11:47:58 -03:00
Vincent Penquerc'h
f5f4635d0e
media-info: add a track switching test
...
This test will find the first input selector with more than one
sink pad, and cycle through them till it gets back to the original
one. Five seconds between switches. The test checks that some data
was sent from the input selector when each of the sink pads was
selected.
2013-08-29 10:43:03 -03:00
Thibault Saunier
f893bb7534
scenario: Print on stdout when we seek
2013-08-28 19:14:31 -03:00
Thibault Saunier
1dcfaea37f
validate: Report an issue result of query state that position > duration
2013-08-28 19:00:58 -03:00
Thibault Saunier
78d2fde632
scenario: Execute action whenever we pass the expected position
...
We know are sequential so whenever the wanted position is passed we
should execute the action.
This avoid issue with the tolerance when we have high rate playback
2013-08-28 18:55:55 -03:00
Thibault Saunier
5953b71907
validate: Dump pipeline for each state change
...
Ala gst-launch
2013-08-28 18:54:18 -03:00
Thibault Saunier
beb537d10b
transcoding: Print duration regularly
2013-08-28 18:53:46 -03:00
Thibault Saunier
80702884f0
validate: Print state changes to help debugging
2013-08-28 18:51:53 -03:00
Thiago Santos
1dd93bea2a
licenses: improving licensing info on all files
2013-08-28 16:58:11 -03:00
Thiago Santos
5f261269f8
pad-monitor: fix typo when acessing parents data
2013-08-28 16:49:07 -03:00
Thiago Santos
103bf74768
pad-monitor: reset buffer timestamp data after a flush
...
As the pad/element also clears its internal state
2013-08-27 18:26:14 -03:00
Thiago Santos
49d39be022
pad-monitor: also track flush events on probes
2013-08-27 16:16:08 -03:00
Thiago Santos
41e0bf1e91
tools: moving applications from gst/validate to tools
...
Keeps the CLI applications separate from the libs files
2013-08-27 12:04:31 -03:00
Vincent Penquerc'h
aa814d0189
gst-validate-scenario: fix scenario listing missing installed ones
...
Only scenarii in the current directory or the user's home directory
were being listed.
2013-08-27 11:52:11 -03:00
Vincent Penquerc'h
69597d9f5e
gst-validate-transcoding: fix help text to refer to URIs as URIs
...
Referring to them as files is confusing, as you'll try to use files
and not URIs.
2013-08-27 11:52:10 -03:00
Vincent Penquerc'h
c79430a450
docs: minor spelling/grammar fixes
2013-08-27 11:52:09 -03:00
Thiago Santos
2ba098976a
pad-monitor: Move repeated caps to test only on sinkpads
...
Testing on source pads can lead to false positives when pads are
unlinked. The caps event is sticky and will be pushed again later
when another buffer/event is pushed, leading to an acceptable
situation to push the caps twice.
2013-08-27 11:48:00 -03:00
Thiago Santos
b591f11b15
pad-monitor: add another acceptable flow return combination scenarios
...
A demuxer knows when to return EOS after samples are over, so it is
ok for it to return even when all src pads returned OK
2013-08-26 20:33:23 -03:00
Thiago Santos
a06a9038a4
pad-monitor: improve serialized event checks
...
If the event was already found at the first position of the array, it
shouldn't be searched on the rest of it.
This removes lots of false positives.
2013-08-26 20:33:23 -03:00
Thiago Santos
1a54b40c78
pad-monitor: fix aggregate flow return check for error situations
...
Flow flushing must be returned upstream to indicate an error situation
downstream
2013-08-26 20:33:22 -03:00
Thiago Santos
185d10bf79
gst-validate: print error message when starting the pipeline fails
...
Instead of just exiting silently
2013-08-26 20:33:22 -03:00
Edward Hervey
e48eadad75
pad-monitor: New check for duplicate caps event
...
We shouldn't get/push twice caps that are identical
2013-08-26 17:09:04 -03:00
Thiago Santos
104cccdfc0
media-info: avoid glib assert
2013-08-23 17:26:51 -03:00
Edward Hervey
4f3e1de776
report: Avoid repeating long macros
...
Makes the code a bit more readable and compact
2013-08-23 11:38:15 +02:00
Edward Hervey
60a2dfaf72
validate-report: Fix critical flag handling
...
criticals are warnings/issues also
warnings are issues also
2013-08-23 11:10:57 +02:00
Thibault Saunier
65e478f471
data: Add a test that alternates (fast) backward and forward playback
2013-08-22 14:13:12 -03:00
Thibault Saunier
c5a70ba0c5
data: Add a seek_backward/forward scenarios
2013-08-22 14:13:11 -03:00
Thibault Saunier
0609de7156
scenario: Have GstClockTime as second (in double) inside scenario files
...
Making it easier to read
2013-08-22 14:13:07 -03:00
Thibault Saunier
9fd62ba798
data: Add fast_forward/backward and simple_backward scenarios
2013-08-22 13:55:36 -03:00
Thibault Saunier
ff3e435e94
data: Add a Backward and Forward seeking scenario
2013-08-22 13:55:08 -03:00
Thibault Saunier
0d819e51cf
data: Add a Pause/Resume scenario
2013-08-22 13:54:57 -03:00
Thibault Saunier
96ca875c56
validate: Set return value of apps to -1 only if a critical issues was reported
...
Conflicts:
gst/validate/gst-validate-transcoding.c
gst/validate/gst-validate.c
2013-08-22 13:54:39 -03:00
Thibault Saunier
375a47aa0d
transcoding: Make sure to initialize Gst before parsing options
...
Avoiding to break the help
2013-08-22 13:06:01 -03:00
Thibault Saunier
40e3b5881a
transcoding: Connect to the bus signals watch as the main watch might already be connected
2013-08-22 12:08:14 -03:00
Thibault Saunier
161e0cee12
scenario: Start monitoring the position only when the pipeline starts playing
...
Otherwize seeking with a playback_time=0 won't work properly
2013-08-22 12:06:29 -03:00
Thibault Saunier
f9ddb6f59e
scenario: Fix negative rate management
...
Properly parse the it has a gdouble and set the stop position of the seek as
seeked_position if the rate is negative
+ Add some debug
2013-08-22 12:05:18 -03:00
Thibault Saunier
ddd00741fd
scenario: Actions order in xml file is the order in which they must be executed
...
When seeking we might want to execute seeks at a playback time inferior than previous
seek, so we need to be able to define the order in which actions have to be
executed, the simplest way is to just concider that actions are always
order in the XML files.
+ Add some more debugs
Conflicts:
gst/validate/gst-validate-scenario.c
2013-08-22 12:04:08 -03:00
Thibault Saunier
15b3049764
scenario: Rename the seeks list to actions, and initialize action to 0 when allocating
2013-08-22 12:02:49 -03:00
Thibault Saunier
2102648c5c
scenario: Rename scenario xml files extension to .scenario
2013-08-22 12:02:02 -03:00
Thibault Saunier
fc61dcf1ed
validate: Connect to the bus signals watch as the main watch might already be connected
2013-08-22 12:01:44 -03:00
Thibault Saunier
de57b1455a
validate: Add a way to list avalaible scenarios
...
Conflicts:
gst/validate/gst-validate-transcoding.c
2013-08-22 12:00:04 -03:00
Thiago Santos
123bdea93a
gst-validate-transcoding: add signal handling and issues printing
...
Update to have the same features as gst-validate.
1) Handle interrupts properly, with the additional of having the
'eos-on-shutdown' argument that sends EOS to the pipeline. This is
very useful for transcoding processes to finish correctly.
2) Print issues on the end of application
2013-08-22 10:35:50 -03:00
Thiago Santos
db44d3aa27
gst-validate: add interrupt handler
...
Handle interrupt properly to still print issues when exiting
2013-08-22 10:35:34 -03:00
Edward Hervey
ec6abff9dd
pad-monitor: Fix source pad probe handling
...
type is a bitmask and not an enum
2013-08-21 13:26:27 -03:00
Thiago Santos
df228c5729
gst-validate: fix documentation after debug category changes
2013-08-21 13:10:42 -03:00
Edward Hervey
de930073fc
validate-reporter: More comprehensive debug message
...
Some issues don't have any arguments, so put the full details in.
2013-08-21 18:00:16 +02:00
Edward Hervey
529576e69b
validate: Only use one debugging category: validate
...
There's no point in having a different debug category per file, you
can filter it by source filename if you *really* want that.
2013-08-21 17:59:51 +02:00
Thiago Santos
7e5f458e63
gst-validate: print issues at the end
...
And improve documentation about usage
2013-08-21 12:14:22 -03:00
Thiago Santos
044b21521b
media-check: add results file comparison
...
Adds a new expected-results argument to receive a file that is used
as a base for comparison with the new results. In case differences are
found, the application will print those issues.
2013-08-21 11:03:19 -03:00
Thiago Santos
549bcc1fd5
reporter: do not print issues to stdout
2013-08-20 17:10:44 -03:00
Thiago Santos
36e5c626af
media-info: fix playback tests
...
They weren't waiting for the pipeline to properly change state
before sending seek events, that would cause some events to
return TRUE even if they were not handled
2013-08-20 15:44:10 -03:00
Thiago Santos
387f7c1b63
media-check: return nonzero if a test failed
2013-08-20 15:42:54 -03:00
Thiago Santos
1713442fd3
media-info: add playback and reverse-playback tests
...
The tests are very simple as they only write the first error they
found during playback. If no error is set, an empty string is
printed.
The playback pipeline isn't monitored with validate monitors for now
2013-08-20 13:24:31 -03:00
Thiago Santos
3f91779c32
rename: gst-validate-file-check -> gst-validate-media-check
...
It not only validates files, takes any URI
2013-08-20 11:43:06 -03:00
Thiago Santos
577ad5c127
media-info: add stream topology parsing
...
Currently it only saves/loads the main type, but all topology is
already being parsed for future use
2013-08-20 11:41:15 -03:00
Thiago Santos
3d93eb78f1
media-info: add duration and seekable entries
...
Add duration entry in ns and seekable as a boolean to a new group
'media-info'
2013-08-19 16:52:12 -03:00
Thiago Santos
1c32bbbac3
media-info: replacing file-checker with a simpler media-info struct
...
This struct stores information about a media and tests run on it. It
also has a few helper functions that allows storing the results to a
file and loading it back.
Instead of having the file-checker object that would compare the
extracted values from the file to expected results set to its properties,
the media-info will store the values and it will be possible to compare
old media-info with new media-info from the same file. This allows
tracking improvements and regressions on different gstreamer versions.
Right now, the media-info is very tiny and doesn't store much info, only
the uri and the file size in bytes, but it will receive more additions in
the upcoming commits for storing duration, media topology, seekability and
playback information.
2013-08-19 16:38:13 -03:00
Edward Hervey
6a3070a1e4
.gitignore: Update for 1.0 and cleanup
2013-08-16 15:15:51 +02:00
Edward Hervey
15ea3bd8aa
all: Enable more C warnings at build time
...
And fix the issues:
* Proper forward declaration
* static functions marked properly
* absolute includes
* declaration order
2013-08-16 15:13:54 +02:00
Edward Hervey
3e5c921217
reporter: Fix proper debug message output partially
...
In order for the special gstreamer print argument handler to be used
you can't use g_strdup_printf. You need to pass it the actual va_list.
2013-08-16 14:30:02 +02:00
Edward Hervey
501be30379
pad-monitor: Handle case where internal pad iterator is NULL
...
Can happen with inputselector
2013-08-16 14:30:02 +02:00
Edward Hervey
eca452978a
pad-monitor: Don't use signal that doesn't exist
...
Note that we should just ensure we always get the pads from the parent
2013-08-16 14:30:01 +02:00
Edward Hervey
511ab5e1d8
pad-monitor: Update raw audio caps checks
2013-08-16 14:30:01 +02:00
Edward Hervey
5a659f205d
pad-monitor: Fix locking issues
...
We were taking locks twice.
Also add debugging info when taking/releasing locks to help further similar issues
2013-08-16 14:30:01 +02:00
Edward Hervey
f3bd5ac0c0
file-checker: GstEncodingProfile is a GObject in 1.0
2013-08-16 14:30:01 +02:00
Thiago Santos
25688f4e50
gst-validate: port to 1.0
2013-08-15 01:46:27 -03:00
Thiago Santos
70cfe7a7b2
po: missing po rename
2013-08-15 01:44:59 -03:00
Thiago Santos
6df0b6c010
validade: add missing config.h includes
2013-08-14 20:03:43 -03:00
Thiago Santos
ee9f1ad9b2
validate: add init function
...
Adds an init() function that should be called before using the lib.
It takes care of calling all internal initializing functions in
gst-validete
2013-08-14 19:14:18 -03:00
Thiago Santos
3dea4388fd
tools: improve documentation
2013-08-14 18:04:23 -03:00
Thiago Santos
52002376ea
rename gst-qa -> gst-validate
2013-08-14 17:46:28 -03:00
Thiago Santos
ddc95f5b8c
pad-monitor: only do complete caps checks on setcaps
...
On get caps it is acceptable to have missing fields to simplify caps
negotiation
2013-08-14 16:00:50 -03:00
Thiago Santos
848c86712b
qa-preload: split to separate lib
...
It should only be used separately, otherwise it will wrap around any
pipeline from applications linking with gstqa
2013-08-13 13:40:48 -03:00
Thiago Santos
4f11a05baf
file-check: add reverse-playback test
...
Adds a test that checks if reverse playback works without errors
2013-08-13 13:28:40 -03:00
Edward Hervey
737a2664f2
qa-reporter: Make debug message a bit more readable
...
By surrounding it with double quotes
2013-08-13 09:33:26 -03:00
Edward Hervey
5fcbf1026d
pad-monitor: 0.10 uses "channel-positions" field in audio caps
...
And it's an array, not a string
2013-08-13 09:33:26 -03:00
Edward Hervey
c8e2e3aa67
Makefile: Clean up for make distcheck
...
Directories, headers, files weren't properly disted
Also clean up the various CFLAGS/HEADERS/SOURCES variables and remove
ones that aren't needed.
2013-08-13 09:33:25 -03:00
Edward Hervey
24d5e9e1ba
po: Add missing Makevars file
2013-08-13 09:33:23 -03:00
Thiago Santos
4af966f5ee
pad-monitor: use correct variable for segment comparisons
...
Use the expected versus the received instead of using the received
twice.
2013-08-09 12:37:49 -03:00
Thiago Santos
e679d8531e
reporter: fix printf format type
2013-08-09 12:33:27 -03:00
Thiago Santos
435626f0b7
docs: improve and update docs
2013-08-08 12:35:50 -03:00
Thiago Santos
6544d5f67e
qa-scenario: re add scenarios creation to bin-monitor
...
GstPipelines are monitored by bin monitors. Create scenarios if
requested from the bin monitors and store them there.
2013-08-07 17:31:17 -03:00
Thiago Santos
71fd0e57cd
qa-monitor: remove reference to the runner
...
qa-monitor implements qa-reporter, and we already have a runner stored
there.
2013-08-07 16:23:25 -03:00
Thiago Santos
6d4a8fd754
gitignore: ignore more binaries
2013-08-07 16:23:25 -03:00
Thiago Santos
a6b3816c35
qa-file-check: add new binary to run file checks easily
...
It creates a GstQaFileChecker and runs it on the passed URI with
the tests enabled as arguments
2013-08-07 16:23:25 -03:00
Thiago Santos
08aae8336b
qa-runner: simplify runner to not hold refs to monitor/pipeline
...
The GstQaRunner is now a simple aggregator of reports that it receives
from monitors and filechecker. This allows it to be used in both
scenarios without APIs that expect GstElement or Monitors, that are
only used on the pipeline monitoring QA tests.
2013-08-07 16:10:57 -03:00
Thiago Santos
61d39d6e74
file-checker: add file playback testing feature
...
Adds a property that triggers the file playback tests on
GstQaFileCheker. Also enable it in the gst-transcoding post file checks.
The implementation is simple, just create a playbin2 and use fakesinks
as sinks, set it to playing and wait for either EOS or ERROR messages.
2013-08-07 11:31:04 -03:00
Thiago Santos
b959a781a9
qa-reporter: fix typo
2013-08-06 19:42:21 -03:00
Thiago Santos
499f65a041
file-checker: include restriction caps tests when checking for profiles
...
Also move the caps check earlier on the path, to error out sooner and
avoid iterating the sub streams without needing
2013-08-06 19:42:09 -03:00
Thiago Santos
71351b3e33
file-checker: replace encoding profile comparison
...
Use our own custom comparison to allow to add more fine grained error
reporting. Also the encoding profile is_equal function is too strict as
it also compares profiles names, that doesn't matter to us.
This commit implementation is still initial and needs improvements as it
isn't using the restriction caps, which includes information that might not be
on the profile format caps.
2013-08-06 18:32:07 -03:00
Thiago Santos
e7853ec69f
qa-reporter: fix crash by avoiding unref an integer
2013-08-06 10:37:15 -03:00
Thiago Santos
c81e6198f9
makefile: fix build of gst-qa- tools
2013-08-06 10:36:47 -03:00
Thiago Santos
cde09a7e6c
file-checker: add error report and new report types
...
Add a list of new report types and use them in the file-checker.
The errors are mostly related to testing file attributes against
expected values
2013-08-06 10:36:02 -03:00
Thiago Santos
369e936b8f
qa-file-checker: add a file checker object/runner
...
It is an object that is capable to run a few file checks. The
implemented tests are: file size, duration, if the file is seekable and
comparing the file stream types with a encoding profile
2013-08-05 14:16:06 -03:00
Thiago Santos
e5cafa3375
qa-scenario: adding eos scenario action
...
Allows sending EOS to the pipeline
2013-08-01 18:08:44 -03:00
Thiago Santos
caba58c029
qa-scenario: add new scenario action - Pause
...
The pause action instructs the pipeline to go to paused state and then
return to playing. It has the argument 'duration', that indicates the
duration for which the pipeline will remain in paused
2013-08-01 09:35:59 -03:00
Thiago Santos
60b0c7383f
qa-scenario: refactor to accomodate more actions
...
Refactor to be able to reuse to add more actions to scenarios.
Planned are pauses and encoding changes
2013-08-01 01:27:20 -03:00
Thiago Santos
2901e35f5c
qa-scenario: avoid assertion on dispose
...
After an error, the pipeline might still be null, check before unreffing
2013-07-31 15:01:13 -03:00
Thiago Santos
f1368356bc
qa-scenario: fix typo on define variable
2013-07-31 15:00:56 -03:00
Thiago Santos
a395133aa2
qa-report: fix typo on assertion comparison
2013-07-31 15:00:33 -03:00
Vincent Penquerc'h
3a419c3fd8
gst-qa-element-monitor: do not bypass monitor factory
...
A pad monitor was created directly. Prefer going through the
factory.
2013-07-31 08:10:42 -03:00
Vincent Penquerc'h
5356f10644
gst-qa-reporter: fix use of uninitialized repeat field
2013-07-31 08:10:40 -03:00
Vincent Penquerc'h
711fa22a49
gst-qa-reporter: fix report leak when discarding repeated report
2013-07-31 08:10:37 -03:00
Vincent Penquerc'h
dbcbcfa868
gst-qa: fix build in po
...
Using a lot of grep and some cargo culting.
2013-07-31 08:10:28 -03:00
Vincent Penquerc'h
16bbbb5733
gst-qa: make tools depend on libraries
...
This fixes parallel build randomly breaking.
2013-07-31 08:10:27 -03:00
Thiago Santos
76679b1c7e
qa-report: expose API for adding custom issues
...
expose gst_qa_issue_register and gst_qa_issue_new to allow applications
to register their own custom issues.
Issues IDs should use Areas higher than GST_QA_AREA_OTHER for custom
areas. And to add more issues to existing areas, the IDs should be
higher than GST_QA_ISSUE_ID_CUSTOM_FIRST.
Custom issues registering should be done at startup and from the same
thread as there is no locking around the issues hashtable
2013-07-30 17:07:13 -03:00
Thiago Santos
2034fb11d9
Fix typos
2013-07-30 16:21:15 -03:00
Thiago Santos
4e9bedcde8
qa-runner: Remove printing API from qa-runner
...
Replace it with functions to list the reports
2013-07-30 16:20:49 -03:00
Vincent Penquerc'h
4456e24cdf
pad-monitor: fix NULL format string
...
An empty message should be an empty string.
2013-07-30 13:55:14 -03:00
Thiago Santos
2eba57d387
qa-runner: removing _setup call
...
Do setup on the _new function directly instead of having a separate
call for that
2013-07-30 10:21:32 -03:00
Thiago Santos
044084949a
qa-override: add more pad overrides for buffer probe and caps
...
Add override functions for custom checking of buffer probe and
getcaps/setcaps functions.
2013-07-30 09:57:20 -03:00
Thiago Santos
55109ae7f9
pad-monitor: call the event/query/buffer overrides
...
Use the new event/buffer/query overrides to allow custom checks
on those scenarios
2013-07-30 09:41:06 -03:00
Thiago Santos
8a66b3d4ed
qa-override: add callbacks for query/buffer/event functions
...
Add callbacks for pad event/buffer/query functions in case the
override wants to do additional checks
2013-07-30 09:41:05 -03:00
Vincent Penquerc'h
7fedf5a111
gst-qa-override-registry: load overrides dynamically
...
Shared objects listed in GST_QA_OVERRIDE are loaded on startup,
and the symbol gst_qa_create_overrides is run. It should create
any override needed. While it can do anything it wants, this
is discouraged.
GST_QA_OVERRIDE should be a comma separated list of shared objects,
any relative paths should be from the current working directory
at the time they are loaded (ie, if the process to be traced
changes cwd, use absolute paths).
No attempt whatsoever is made at not running what was not meant.
Includes a sample shared object for illustration purposes.
2013-07-30 09:41:00 -03:00
Thiago Santos
09fda8bbd2
qa-override-registry: register overrides by gtype and klass
...
Overrides can now be registerd by gtype, meaning that they will
be attached to monitors that the target is of the requested type.
Also by element klass, that will check that the element has the
selected class in its details
2013-07-29 13:17:50 -03:00
Thiago Santos
e0d041d67b
qa-monitor: implement intercept_report
...
It is used to iterate over overrides and modify the report level if
the overrides wants to do so.
Also adds a new mutex only for the overrides to avoid deadlocks when
reporting if we used the same lock for iterating the overrides
2013-07-29 12:01:02 -03:00
Thiago Santos
f7d7d093e3
qa-reporter: fix copy n paste left over
2013-07-29 11:35:20 -03:00
Thiago Santos
79e7392a9c
qa-reporter: add function for intercepting reports
...
after report creation, this function is called and implementers can
modify the report to their liking before it is posted to the runner
2013-07-29 11:34:42 -03:00
Vincent Penquerc'h
6e19324584
qa-monitor: chain gst_qa_monitor_finalize to parent's finalize
...
It was chaining to the parent's dispose.
2013-07-29 10:46:29 -03:00
Thiago Santos
3a13d59a1d
gst-qa-report: put the correct format to avoid compiler warnings
2013-07-29 10:06:48 -03:00
Vincent Penquerc'h
2bac08370c
i18n: copy necessary files in-tree
2013-07-29 09:57:25 -03:00
Vincent Penquerc'h
1c053ffda7
GstIssueId: make this uintptr_t
...
As it's used a a placeholder pointer for g_hash_table use,
it needs to be converted back and forth to a pointer.
2013-07-29 09:56:45 -03:00
Thiago Santos
dbc61a88b6
gst-qa-override-registry: adding the override-registry
...
This registry should contain the list of GstQaOverride to
be used on the pipelines being monitored
2013-07-29 09:53:54 -03:00
Thiago Santos
794ea2652d
qa-override: adds qa-override that can change the report level of issues
...
Useful for customizing the level of issues for particular elements/tests
when they are more relevant or have to be disabled
2013-07-26 12:16:29 -03:00
Thiago Santos
773d8adc5e
qa-report: splitting a GstQaReport into a GstQaIssue and GstQaReport
...
Reports now point to Issues, that are uniquely identified and have
translatable descriptions. This way we are going to be able to uniquely
identify the issues and applications can enable/disable checks for
specific elements.
2013-07-26 12:16:29 -03:00
Thibault Saunier
1e1e0b922e
qa: Make it possible to set a scenario from the command line in test apps
2013-07-25 16:58:15 -03:00
Thibault Saunier
382fcc9a01
qa: Properly set reporter's runner reference
...
That was never set, but it is needed for the reporter to properly add
reports to the runner.
We still keep a reference on the monitor to make things simpler
2013-07-25 16:58:14 -03:00
Thibault Saunier
d804ad475a
reporter: Use Gst debugging log in the _report method directly
...
Using __VALIST__ was not properly working
+ Add a gstqareporter debug category
2013-07-25 16:58:14 -03:00
Thibault Saunier
4fb8f47770
scenario: Implement the GstQaReporter interface and make use of it
...
This way we can report issues from a scenario
Also add a Seek aread to the known areas list
We now need to pass the runner to the scenario instead of the
pipeline as the GstQaReporter interface needs it.
2013-07-25 16:58:13 -03:00
Thibault Saunier
4992249848
qa: Add a GstQaReporter interface that objects needing reporting can implement
...
Various type of object should be able to do some reporting, so we have
to make sure all the code to do that is in one place. Creating an interface
makes it simple to share information and it avoid to have a baseclass for
something that is not actually important enough to create a baseclass.
Conflicts:
gst/qa/gst-qa-pad-monitor.c
2013-07-25 16:57:44 -03:00
Thibault Saunier
7508e35b7e
qa: Add a GstQaScenario class making it possible to execute scenarios
...
A scenario correspond to a suite of action to execute on a pipeline,
for the time being, we only support seeking the pipeline, but in the
future we can imagine doing some queries, setting pipeline state, etc...
The scenario can be loaded thanks to the GST_QA_SCENARIO environment
variable, making it usable with any existant application, in case, the
application can be used interactively, the user should either, not load
any scenario or let the application run without interacting with it.
2013-07-25 16:56:40 -03:00
Thiago Santos
4a3f06885a
pad-monitor: add lots of locking
...
When handling elements that spawn multiple threads (hardware
enc/decoders), the pad monitor has to protect its variables specially
because some checks involve iterating over internally linked pads to
add/get some data for comparison (expected events, timestamp ranges,
caps).
Aside from locking its own mutex, the pad monitor can also lock the
parent's mutex when it needs to use data from its internally linked
pads. The locking order should always be parent and then individual
pad-monitor mutexes. This should prevent deadlocks when multiple
pad-monitors from the same element start doing checks at the same time
from different threads.
2013-07-24 16:16:07 -03:00
Thiago Santos
48c49f5071
pad-monitor: remove already solved TODOs
2013-07-24 10:05:31 -03:00
Thiago Santos
887afecc22
pad-monitor: accept unexpected flow return if pad is eos
...
Track eos event and mark that pad as eos so that checking for the
flow return knows when 'unexpected' is acceptable
2013-07-24 10:05:23 -03:00
Thiago Santos
b5f31f0c8c
pad-monitor: improve caps proxying check on getcaps
...
Only check if fields are proxied for sink getcaps as it is when
downstream restrictions should be proxied. Also improve the
fields comparison to handle single value x multi value
(list/array/range) contain relations.
2013-07-23 15:18:51 -03:00
Thiago Santos
6ebded71e2
pad-monitor: improve type conformance checking for caps
...
Replace the macro with a more powerful variadic function that can
check for more acceptable types for the same caps.
This removes a few more false positives
2013-07-23 15:16:35 -03:00
Thiago Santos
c9955c14e4
pad-monitor: only expect a new segment if pad is running on push mode
...
For pull mode, it should just provide the buffers, regardless of getting
a new segment or not
2013-07-23 12:52:22 -03:00
Edward Hervey
d7b2977657
gst-qa: show help and exit when no arguments are provided
...
Instead of attempting to create empty pipelines and weird things
happening :)
2013-07-23 12:14:26 -03:00
Thiago Santos
04b3517e41
pad-monitor: fix flushes checking
...
flush events shouldn't fail, so we don't need to rollback when it
returns false from downstream (this is common when downstream is still
not-linked) and it would cause gst-qa to spit false positives.
Also refactor the common event handling for both sink and src event
functions into a common place. Currently we handle flushes the same
for both pad's directions
2013-07-23 12:11:08 -03:00
Thiago Santos
d8fa81eeff
pad-monitor: only merge caps if they exist
...
Downtream can not be linked, so we shouldn't try to merge
NULL caps
2013-07-23 11:51:07 -03:00
Thiago Santos
b58a7e533d
configure: add nano version to enable Werror
2013-07-22 20:50:02 -03:00
Thiago Santos
11cc2e6b3b
pad-monitor: fix expected setcaps fields comparison
...
Use the correct structure when getting the GValues and print different
messages for missing and different fields on the setcaps caps
2013-07-22 20:09:35 -03:00
Thiago Santos
363de0e555
pad-monitor: improve timestamp ranges comparison message a little
...
Show the buffer range that is being compared.
2013-07-22 20:09:07 -03:00
Thiago Santos
e94427e639
pad-monitor: add check for serialized events order
...
Store expected serialized events and their 'timestamps' to check if
they are pushed in the same order/time as they were received
2013-07-22 15:05:04 -03:00
Thiago Santos
c650034fb4
pad-monitor: add check for setcaps passing audio/video fields
...
Checks that the common audio/video fields are correctly passed
downstream after a setcaps
2013-07-22 09:50:23 -03:00
Thiago Santos
0aaf23cb0f
pad-monitor: add check for getcaps proxying audio/video fields
...
Checks that the common audio/video fields are correctly proxied by
the elements after a getcaps
2013-07-19 16:52:45 -03:00
Thiago Santos
694935fdea
element-monitor: add is_encoder flag
...
Easy access to knowing if the monitored element is an encoder
2013-07-19 16:52:11 -03:00
Thibault Saunier
ab98bd242e
qa-transcoding: Add a binary program to easily test transcoding
2013-07-19 11:16:47 -03:00
Thibault Saunier
799b7a8c3e
monitor(s): Avoid trying to disconnect handlers on instances that do not exist anymore
2013-07-19 11:15:54 -03:00
Thibault Saunier
0127706e09
qa-report: Avoid reporting tons of times the exact same issue to users
...
Some of the issue can be reported once and for all. We are here avoiding to flood the
user with the same information repeated infinitely.
2013-07-19 11:15:53 -03:00
Thibault Saunier
affddfe626
qa-pad-monitor: Do not use gst_private.h
2013-07-19 11:15:52 -03:00
Thiago Santos
3db8c081a9
docs: add design and usage docs
2013-07-19 11:14:39 -03:00
Thiago Santos
a7353e988b
pad-monitor: improve timestamp ranges check
...
Keep the full range stored by the element in the monitor and check
if outgoing timestamps are within that range. It is simple and
should generally work.
2013-07-19 09:57:07 -03:00
Thiago Santos
a11cc64f90
pad-monitor: fix combined flow checks
...
We can only check if we found a downstream monitor
2013-07-18 14:49:23 -03:00
Thiago Santos
16b1d750c8
pad-monitor: fix caps field type checks
...
The type is GstValueList and not GArray
2013-07-18 14:49:01 -03:00
Thiago Santos
9d7f9cfa54
pad-monitor: improve report messages with arguments
2013-07-18 14:48:46 -03:00
Thibault Saunier
eebb3522bf
qa-report: Pass the whole monitor when creating a report
...
So we have the proper source name already avalaible and in the future
we might need some more informations about the monitor itself.
2013-07-18 13:43:29 -03:00
Thibault Saunier
dd672acf8b
qa-pad-monitor: Properly set target_name with as much info as possible
2013-07-18 13:43:28 -03:00
Thibault Saunier
cb4792a8e5
qa-monitor: Add a target name field that can be used even when the target is freed
2013-07-18 13:43:25 -03:00
Thibault Saunier
d1508ce651
qa-monitor: Make the reference to the target a weak reference
2013-07-18 13:43:23 -03:00
Thiago Santos
d0272be23b
qa-report: add debug flags for criticals
...
Allows the user to enable program abort if a report
is created with a certain level.
Use:
GST_QA=fatal_criticals,fatal_warnings,fatal_issues
2013-07-18 12:22:43 -03:00
Thibault Saunier
4b808aeb81
qa-report: Do not keep a ref to the source but keep its name instead
...
We currently do not need to access the object source after its creation
but we need to be able to have a usefull for debugging name.
2013-07-18 12:15:24 -03:00
Thibault Saunier
7faac43afb
qa-runner: Add a 'report-added' signal
...
So it is possible to plug into the runner to get information about
what is going from outside of it.
2013-07-18 12:15:24 -03:00
Thibault Saunier
5f62fd2e2a
qa-report: Make it a boxed type
...
And make it refcounted, in 1.0 it should become a GstMiniObject, for
now, it is enough that way.
The goal is to be able to use it in signals
2013-07-18 12:15:24 -03:00
Thibault Saunier
440d20ed00
qa-monitor: Allow detaill message to be in printf format
...
So we can give proper informations about what is wrong to users
2013-07-18 12:15:24 -03:00
Thiago Santos
84b9b654e1
qa-monitor-preload: fix preload to work with pipeline creation
...
Wrap around the main gstreamer pipeline creation functions as wrapping
g_object_new requires rebuilding glib.
2013-07-17 21:46:37 -03:00
Thiago Santos
4db12b8a76
pad-monitor: fix copy n paste mistake
...
Do not use GstFlowReturn where a boolean is expected
2013-07-17 20:40:50 -03:00
Thiago Santos
f90e164038
pad-monitor: fix initialization of timestamp ranges
2013-07-17 20:40:38 -03:00
Thiago Santos
9c958417e2
pad-monitor: check that returns are combined properly
...
When getting a return from a sink pad, check that it combines properly
the current returns from downstream source pads
2013-07-17 17:57:39 -03:00
Thiago Santos
425e608456
pad-monitor: verify that pushed segment matches what was received
...
Check that src pads push segments that are compatible with what
was received on the sink pads
2013-07-17 14:36:44 -03:00
Thiago Santos
bd22bb8d1c
pad-monitor: output timestamps should be in range of received ones
...
Checks if the timestamps of pushed buffers are in the range of the
received buffer timestamps;
2013-07-17 11:49:39 -03:00
Thiago Santos
0b90e7bddd
pad-monitor: add check for out of segment buffers
2013-07-17 00:33:42 -03:00
Thiago Santos
c53b10e5c5
pad-monitor: track current buffer timestamp and duration
...
This can be used to make sure outgoing buffers match the input
timestamps
2013-07-17 00:30:21 -03:00
Thiago Santos
9a82afbc87
pad-monitor: check for when a flush start isn't expected
...
Complain when an unexpected flush-start is received
2013-07-17 00:29:38 -03:00
Thiago Santos
c942eabbfd
pad-monitor: add checks for raw caps completeness
...
Check audio and video raw caps returned from getcaps for expected
fields and types
2013-07-17 00:29:04 -03:00
Thiago Santos
fbd6aa1359
qa-monitor: Fix typo in printf format for report debug messages
...
Stringify the arguments correctly for printing
2013-07-17 00:25:11 -03:00
Thiago Santos
6677b5a574
pad-monitor: first buffer checks
...
Check that a newsegment is received before the first buffer and that
the first buffer running time is 0
2013-07-16 23:19:13 -03:00
Thiago Santos
4e84ad6513
qa-report: rework qa-report API
...
Remove error from GstQaErrorReport, making it only GstQaReport. Add
a level and use area and subarea code, with an extra string for message
adding details.
Provide macros on qa-monitor to make it easy to create reports.
2013-07-16 21:15:09 -03:00
Thiago Santos
d1fde6f4cf
pad-monitor: add stubs for getcaps/setcaps function wrapping
2013-07-16 09:17:44 -03:00
Thiago Santos
95f81d7240
pad-monitor: add check for out of segment buffer data
2013-07-16 08:06:27 -03:00
Thiago Santos
a60c2efe4a
qa-report: use gst_util_get_timestamp for report times
...
Makes it more aligned with GST_DEBUG output
2013-07-15 10:15:06 -03:00
Thiago Santos
e96db7dbfa
pad-monitor: split event checks for src and sink pads
...
Keeping those handlers separate should keep the code smaller and
easier to understand
2013-07-15 09:27:34 -03:00
Thiago Santos
cb6b45d375
qa-monitor: add parent relation for monitors
...
This is useful because Pad monitors will have to ask the
parent element monitors for some element details for
doing checks
2013-07-12 16:02:25 -03:00
Thiago Santos
d314df2040
qa-element-monitor: check if the element is a decoder
...
This can be used on checks for timestamps being inside segment
2013-07-12 15:47:16 -03:00
Thiago Santos
6f2dbf1486
pad-monitor: add probes for src pads
...
To be used for further monitoring events and buffers for
src pads
2013-07-12 14:47:29 -03:00
Thiago Santos
0bc7ae9aeb
qa-report: add a timestamp to error reports
2013-07-12 13:32:08 -03:00
Thiago Santos
3476fffd54
qa-report: adds qa-report for reporting errors to GstQaRunner
...
The errors are printed directly to stdout and are accumulated at
GstQaRunner for being printed at the end if requested
2013-07-12 12:43:07 -03:00