summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Thibault Saunier [Mon, 22 Jul 2013 23:17:53 +0000 (19:17 -0400)]
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
Thibault Saunier [Sat, 20 Jul 2013 04:18:13 +0000 (00:18 -0400)]
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.
Thiago Santos [Wed, 24 Jul 2013 19:04:03 +0000 (16:04 -0300)]
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.
Thiago Santos [Wed, 24 Jul 2013 13:05:31 +0000 (10:05 -0300)]
pad-monitor: remove already solved TODOs
Thiago Santos [Wed, 24 Jul 2013 12:51:05 +0000 (09:51 -0300)]
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
Thiago Santos [Tue, 23 Jul 2013 18:18:51 +0000 (15:18 -0300)]
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.
Thiago Santos [Tue, 23 Jul 2013 18:10:33 +0000 (15:10 -0300)]
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
Thiago Santos [Tue, 23 Jul 2013 15:52:22 +0000 (12:52 -0300)]
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
Edward Hervey [Tue, 23 Jul 2013 15:14:26 +0000 (12:14 -0300)]
gst-qa: show help and exit when no arguments are provided
Instead of attempting to create empty pipelines and weird things
happening :)
Thiago Santos [Tue, 23 Jul 2013 15:11:08 +0000 (12:11 -0300)]
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
Thiago Santos [Tue, 23 Jul 2013 14:51:07 +0000 (11:51 -0300)]
pad-monitor: only merge caps if they exist
Downtream can not be linked, so we shouldn't try to merge
NULL caps
Thiago Santos [Mon, 22 Jul 2013 23:50:02 +0000 (20:50 -0300)]
configure: add nano version to enable Werror
Thiago Santos [Mon, 22 Jul 2013 23:09:35 +0000 (20:09 -0300)]
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
Thiago Santos [Mon, 22 Jul 2013 23:09:07 +0000 (20:09 -0300)]
pad-monitor: improve timestamp ranges comparison message a little
Show the buffer range that is being compared.
Thiago Santos [Mon, 22 Jul 2013 18:05:04 +0000 (15:05 -0300)]
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
Thiago Santos [Mon, 22 Jul 2013 12:50:23 +0000 (09:50 -0300)]
pad-monitor: add check for setcaps passing audio/video fields
Checks that the common audio/video fields are correctly passed
downstream after a setcaps
Thiago Santos [Fri, 19 Jul 2013 19:52:45 +0000 (16:52 -0300)]
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
Thiago Santos [Fri, 19 Jul 2013 19:52:11 +0000 (16:52 -0300)]
element-monitor: add is_encoder flag
Easy access to knowing if the monitored element is an encoder
Thibault Saunier [Thu, 18 Jul 2013 20:53:46 +0000 (16:53 -0400)]
qa-transcoding: Add a binary program to easily test transcoding
Thibault Saunier [Thu, 18 Jul 2013 22:20:09 +0000 (18:20 -0400)]
monitor(s): Avoid trying to disconnect handlers on instances that do not exist anymore
Thibault Saunier [Thu, 18 Jul 2013 21:49:44 +0000 (17:49 -0400)]
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.
Thibault Saunier [Thu, 18 Jul 2013 17:59:11 +0000 (13:59 -0400)]
qa-pad-monitor: Do not use gst_private.h
Thiago Santos [Fri, 19 Jul 2013 14:14:39 +0000 (11:14 -0300)]
docs: add design and usage docs
Thiago Santos [Fri, 19 Jul 2013 12:57:07 +0000 (09:57 -0300)]
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.
Thiago Santos [Thu, 18 Jul 2013 17:49:23 +0000 (14:49 -0300)]
pad-monitor: fix combined flow checks
We can only check if we found a downstream monitor
Thiago Santos [Thu, 18 Jul 2013 17:49:01 +0000 (14:49 -0300)]
pad-monitor: fix caps field type checks
The type is GstValueList and not GArray
Thiago Santos [Thu, 18 Jul 2013 17:48:46 +0000 (14:48 -0300)]
pad-monitor: improve report messages with arguments
Thibault Saunier [Thu, 18 Jul 2013 16:11:00 +0000 (12:11 -0400)]
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.
Thibault Saunier [Thu, 18 Jul 2013 16:00:29 +0000 (12:00 -0400)]
qa-pad-monitor: Properly set target_name with as much info as possible
Thibault Saunier [Thu, 18 Jul 2013 15:49:54 +0000 (11:49 -0400)]
qa-monitor: Add a target name field that can be used even when the target is freed
Thibault Saunier [Thu, 18 Jul 2013 15:49:25 +0000 (11:49 -0400)]
qa-monitor: Make the reference to the target a weak reference
Thiago Santos [Thu, 18 Jul 2013 15:09:13 +0000 (12:09 -0300)]
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
Thibault Saunier [Thu, 18 Jul 2013 14:59:11 +0000 (10:59 -0400)]
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.
Thibault Saunier [Thu, 18 Jul 2013 00:21:53 +0000 (20:21 -0400)]
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.
Thibault Saunier [Wed, 17 Jul 2013 23:56:52 +0000 (19:56 -0400)]
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
Thibault Saunier [Wed, 17 Jul 2013 23:18:49 +0000 (19:18 -0400)]
qa-monitor: Allow detaill message to be in printf format
So we can give proper informations about what is wrong to users
Thiago Santos [Thu, 18 Jul 2013 00:46:37 +0000 (21:46 -0300)]
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.
Thiago Santos [Wed, 17 Jul 2013 23:40:50 +0000 (20:40 -0300)]
pad-monitor: fix copy n paste mistake
Do not use GstFlowReturn where a boolean is expected
Thiago Santos [Wed, 17 Jul 2013 23:40:38 +0000 (20:40 -0300)]
pad-monitor: fix initialization of timestamp ranges
Thiago Santos [Wed, 17 Jul 2013 20:57:39 +0000 (17:57 -0300)]
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
Thiago Santos [Wed, 17 Jul 2013 17:36:44 +0000 (14:36 -0300)]
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
Thiago Santos [Wed, 17 Jul 2013 14:31:38 +0000 (11:31 -0300)]
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;
Thiago Santos [Wed, 17 Jul 2013 03:33:42 +0000 (00:33 -0300)]
pad-monitor: add check for out of segment buffers
Thiago Santos [Wed, 17 Jul 2013 03:30:21 +0000 (00:30 -0300)]
pad-monitor: track current buffer timestamp and duration
This can be used to make sure outgoing buffers match the input
timestamps
Thiago Santos [Wed, 17 Jul 2013 03:29:38 +0000 (00:29 -0300)]
pad-monitor: check for when a flush start isn't expected
Complain when an unexpected flush-start is received
Thiago Santos [Wed, 17 Jul 2013 03:29:04 +0000 (00:29 -0300)]
pad-monitor: add checks for raw caps completeness
Check audio and video raw caps returned from getcaps for expected
fields and types
Thiago Santos [Wed, 17 Jul 2013 03:25:11 +0000 (00:25 -0300)]
qa-monitor: Fix typo in printf format for report debug messages
Stringify the arguments correctly for printing
Thiago Santos [Wed, 17 Jul 2013 02:19:13 +0000 (23:19 -0300)]
pad-monitor: first buffer checks
Check that a newsegment is received before the first buffer and that
the first buffer running time is 0
Thiago Santos [Wed, 17 Jul 2013 00:15:09 +0000 (21:15 -0300)]
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.
Thiago Santos [Tue, 16 Jul 2013 12:17:44 +0000 (09:17 -0300)]
pad-monitor: add stubs for getcaps/setcaps function wrapping
Thiago Santos [Tue, 16 Jul 2013 11:06:27 +0000 (08:06 -0300)]
pad-monitor: add check for out of segment buffer data
Thiago Santos [Mon, 15 Jul 2013 13:15:06 +0000 (10:15 -0300)]
qa-report: use gst_util_get_timestamp for report times
Makes it more aligned with GST_DEBUG output
Thiago Santos [Mon, 15 Jul 2013 12:27:34 +0000 (09:27 -0300)]
pad-monitor: split event checks for src and sink pads
Keeping those handlers separate should keep the code smaller and
easier to understand
Thiago Santos [Fri, 12 Jul 2013 19:02:25 +0000 (16:02 -0300)]
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
Thiago Santos [Fri, 12 Jul 2013 18:42:56 +0000 (15:42 -0300)]
qa-element-monitor: check if the element is a decoder
This can be used on checks for timestamps being inside segment
Thiago Santos [Fri, 12 Jul 2013 17:18:22 +0000 (14:18 -0300)]
pad-monitor: add probes for src pads
To be used for further monitoring events and buffers for
src pads
Thiago Santos [Fri, 12 Jul 2013 16:32:08 +0000 (13:32 -0300)]
qa-report: add a timestamp to error reports
Thiago Santos [Fri, 12 Jul 2013 05:10:06 +0000 (02:10 -0300)]
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
Thiago Santos [Fri, 12 Jul 2013 04:23:48 +0000 (01:23 -0300)]
qa-monitor-preload: add functions to allow ld-preload to wrap pipelines
The preload functions wrap functions that can create pipelines and
attaches a runner to them for monitoring
Thiago Santos [Fri, 12 Jul 2013 03:41:43 +0000 (00:41 -0300)]
qa-monitor: add runner property
runner stores the GstQaRunner that will receive the error reports
from the monitors
Thiago Santos [Thu, 11 Jul 2013 16:43:52 +0000 (13:43 -0300)]
pad-monitor: make it able to initialize a segment
Do not take the initial format set to TIME too seriously when we
haven't got any newsegment event yet. If it is the first segment
received, switch our internal segment tracker to the event format
Thiago Santos [Thu, 11 Jul 2013 16:41:25 +0000 (13:41 -0300)]
gst-qa: add seek-tests option
The seek-tests does a simple seeking after the pipeline has started
so that seeking checks can be performed by the monitors
Thiago Santos [Thu, 11 Jul 2013 05:07:41 +0000 (02:07 -0300)]
pad-monitor: track some events
Segments, upstream seeks and flushes. Adding the following checks:
* A flush stop is expected after a flush start
* After a seek, the flushes/segment seqnum should be the same as the seek
Thiago Santos [Thu, 11 Jul 2013 03:05:17 +0000 (00:05 -0300)]
pad-monitor: only set pad functions if they exist on the pad
Some functions should only be set on pads if they were originally
set, like the GetRange, Chain and BufferAlloc
Thiago Santos [Thu, 11 Jul 2013 03:04:41 +0000 (00:04 -0300)]
qa-bin-monitor/element-monitor: implement pad/element wrapping
Add code that creates new monitors when elements/pads are found
in bin and element monitors
Thiago Santos [Thu, 11 Jul 2013 03:03:54 +0000 (00:03 -0300)]
qa-monitor: fix various start up issues
Fix reference count for monitored object, passing of constructor
parameter and base monitor property flag
Thiago Santos [Wed, 10 Jul 2013 21:38:09 +0000 (18:38 -0300)]
pad-monitor: instrument to monitor buffer/event/query/alloc flows
Replace pad functions with monitor functions that can do pre/post
checks and call the original functions
Thiago Santos [Wed, 10 Jul 2013 17:03:49 +0000 (14:03 -0300)]
qa-monitor: add base class for monitors
The base class adds a 'object' property to hold the monitored object,
it can only be set on construction. Also the constructor now
automatically calls the element set up
Thiago Santos [Tue, 9 Jul 2013 22:20:55 +0000 (19:20 -0300)]
qa-bin-monitor: adds a bin monitor
Extends element-monitor to also wrap child elements
Thiago Santos [Tue, 9 Jul 2013 20:38:47 +0000 (17:38 -0300)]
qa: renaming Wrapper -> Monitor
Thiago Santos [Tue, 9 Jul 2013 19:52:02 +0000 (16:52 -0300)]
qa-pad-wrapper: adds stub class for pad QA wrapper
Also fixes _new functions to ref the elements intead of
ownership transfers
Thiago Santos [Tue, 9 Jul 2013 19:39:38 +0000 (16:39 -0300)]
qa-element-wrapper: add code for iterating and monitoring pads creation
This will be used to create the wrappers for pads
Thiago Santos [Tue, 9 Jul 2013 19:13:00 +0000 (16:13 -0300)]
gitignore: ignore gst-qa binary
Thiago Santos [Tue, 9 Jul 2013 19:08:30 +0000 (16:08 -0300)]
qa: adds gst-qa binary and basic classes to run the QA tests
The classes are mostly a stub for now, but the gst-qa already
has a minimum to start them;
Thiago Santos [Tue, 9 Jul 2013 19:07:58 +0000 (16:07 -0300)]
qa: add common submodule
Thiago Santos [Tue, 9 Jul 2013 19:06:36 +0000 (16:06 -0300)]
qa: initial empty repository