Stefan Sauer
0a2ff1ecda
aggregator: fix type for latency property (int64 -> GStClockTime)
...
The value is used as GstClockTiem in the code. Adapt the hack^H^H^H^Hcode
in live-adder.
2017-10-23 11:41:17 +02:00
Olivier Crête
25ea37e7d9
aggregator: Don't take flush lock from output thread
...
Instead just take it in the chain function.
https://bugzilla.gnome.org/show_bug.cgi?id=784911
2017-10-21 12:06:08 +02:00
Olivier Crête
bb5a8ebec3
aggregator: Don't block if adding to the tail of the queue
...
If we're adding to the tail of the queue, it's because we're converting
a gap event, so don't block there it means we're calling from the output
thread.
https://bugzilla.gnome.org/show_bug.cgi?id=784911
2017-10-20 18:55:28 +02:00
Stefan Sauer
739d488cea
aggregator: review code related to time level
...
Add a comment for when the state matters. Use a local var for priv in
update_time_level() to improve readability. Move the our_latency local
var below the query results checks.
2017-10-17 20:43:59 +02:00
Stefan Sauer
3c5cf83232
aggregator: init latency values with 0 instead of FALSE
2017-10-17 20:43:59 +02:00
Stefan Sauer
87dcd2959d
aggregator: code cleanup for event and query func
...
Only look up klass for non serialized events/queries. For events remove
superfluous assignment for the return value in the flushing case.
2017-10-15 20:48:20 +02:00
Stefan Sauer
7562d759a5
aggregator: simplify pad_event_func for FLUSH_STOP events
...
We want to skip serialization for FLUSH_STOP events (apparently). We can
simplify the code to add it to the top-level conditions. There was nothing
done in the first code path if the event was FLUSH_STOP.
2017-10-15 17:49:54 +02:00
Stefan Sauer
a3190f1765
aggregator: drop special casing for eos
...
Just queue it like any other serialized event. This way we don't need to
check if there still are buffers in the queue.
Validated with the tests and gst-launch-1.0 pipelines.
2017-10-15 16:59:24 +02:00
Stefan Sauer
2723da01e3
aggregator: add a doc-blob for the event_func
2017-10-15 16:51:21 +02:00
Stefan Sauer
08a7da766d
aggregator: rename a local variable
...
The variable tracks wheter the queue is not empty, but num_buffers==0. That
means we have events or queries to process. Rename accordingly.
2017-10-15 16:48:21 +02:00
Stefan Sauer
73f64d6f13
aggregator: remove commented code
...
The SEGMENT_DONE event does not require any special treatment. This is
commented out in 6efc106a67
.
2017-10-15 12:17:42 +02:00
Stefan Sauer
638a4582c2
aggregator: move the comment for the locks to the lock macros
...
Looks like some code was inserted afterwards.
2017-10-15 12:14:28 +02:00
Stefan Sauer
6deaeec19f
aggregator: improve section docs
...
Mention how data ends up in the queues. Document the relation of the pad
functions and the class vmethods to get events and queries.
2017-10-15 10:51:24 +02:00
Havard Graff
22f0f11abf
meson: remove vs_module_defs
...
The GST_EXPORT should handle it.
2017-10-05 13:57:48 +01:00
Stefan Sauer
7d97004dd7
aggregator: cleanup event forwarding
...
Don't copy the whole event struct. Set the input params when we call the
forwarding helper. Initialize the internal fields and return values in the
helper.
2017-10-05 08:57:09 +02:00
Stefan Sauer
324977fd7c
aggregator: simplify src_event
...
Avoid extra ref/unref, we have a ref and do_seek unrefs. Just return the result
as we have. This lets us remove the local var plus the label.
2017-10-05 08:57:09 +02:00
Stefan Sauer
a2ce51984c
aggregator: register func for do_events_and_queries
...
This fixes logging the func ptr from _iterate_sinkpads().
2017-09-17 21:06:48 -07:00
Stefan Sauer
fcb074af6f
aggregator: only set clipped_buffer to NULL if needed
2017-09-17 12:31:38 -07:00
Stefan Sauer
864cfec839
aggregator: rename check_events
...
This function also handles queries. Update the code to loop until all events and
queuries are handled.
2017-09-17 12:31:38 -07:00
Stefan Sauer
f6176351a2
aggregator: add a few more comments to PadPrivate struct
2017-09-17 12:31:38 -07:00
Stefan Sauer
54d44f31e3
aggregator: rename buffers field to data
...
The queue stores buffers, events and queries.
2017-09-17 11:40:00 -07:00
Stefan Sauer
41a032470e
aggregator: documentaion fixes
...
Fix typos and remove params docs, where the param was moved.
2017-09-17 10:20:09 -07:00
Stefan Sauer
1db572bf4f
aggregator: log all events
...
We already log a few events explicitly, just log them all with more detail.
2017-07-30 12:19:35 +02:00
Tim-Philipp Müller
6ac76b3dd7
aggregator: fix header formatting
2017-07-29 16:54:38 +01:00
Sebastian Dröge
7c3bfbb512
aggregator: Remove the GAP event from the queue before queueing up the GAP buffer
...
Otherwise check_events() will not remove the GAP event (as the queue
tail is not the event anymore but the GAP buffer), then the GAP buffer
is handled, then the GAP event is handled again, ... forever.
2017-07-24 18:38:57 +03:00
Tim-Philipp Müller
670c7433a6
aggregator: mark symbols explicitly for export with GST_EXPORT
2017-07-18 12:46:57 +01:00
Stefan Sauer
b0e2b2b71b
aggregator: remove duplicated code fragment
...
This code already runs above when (event || query).
2017-07-13 22:02:17 +02:00
Stefan Sauer
893c11136b
aggregator: code cleanups
...
Fix comment typos, some copy'n'paste in logging. Add more doc comments.
2017-07-13 22:02:17 +02:00
Mathieu Duponchelle
3899b2f6e9
aggregator: Invalidate pad's tail position ...
...
when dequeuing a segment event.
https://bugzilla.gnome.org/show_bug.cgi?id=784593
2017-07-06 16:22:01 +02:00
Stefan Sauer
179b583693
aggregator: fix "'aggclass' may be used uninitialized in this function"
2017-07-01 20:23:25 +02:00
Olivier Crête
86a256aebc
aggregator: Process serialized queries through the queue
...
This ensures that they really get processed in order with
buffers. Just waiting for the queue to be empty is sometimes not
enough as the buffers are dropped from the pad before the result is
pushed to the next element, sometimes resulting in surprising
re-ordering.
2017-05-23 12:35:58 +02:00
Olivier Crête
9e2640ba95
aggregator: Set flow to FLUSHING on pad stop
...
Fixes a rare race where the pad is being stopped while doing a query.
2017-05-23 12:35:58 +02:00
Olivier Crête
fbfc427552
aggregator: Request pad templates which are not request pad
...
https://bugzilla.gnome.org/show_bug.cgi?id=782920
2017-05-21 18:39:49 +02:00
Olivier Crête
8f0fba54b5
aggregator: Don't restrict sink pad names
...
Sink pads could have other names than sink_%u
https://bugzilla.gnome.org/show_bug.cgi?id=782920
2017-05-21 18:39:09 +02:00
Olivier Crête
431dc9720a
aggregator: Implement propose allocation
...
https://bugzilla.gnome.org/show_bug.cgi?id=782918
2017-05-21 18:17:54 +02:00
Olivier Crête
20bf97f089
aggregator: Check for the result of caps events
...
https://bugzilla.gnome.org/show_bug.cgi?id=782918
2017-05-21 18:17:54 +02:00
Olivier Crête
a463859eba
aggregator: Caps event always goes to the aggregate thread
...
So no need to check it here.
https://bugzilla.gnome.org/show_bug.cgi?id=782918
2017-05-21 18:17:54 +02:00
Olivier Crête
12197e4bb5
aggregator: Add downstream allocation query
...
https://bugzilla.gnome.org/show_bug.cgi?id=746529
2017-05-21 13:24:26 +02:00
Olivier Crête
583e655234
aggregator: Remove unused GST_FLOW_NOT_HANDLED
2017-05-20 16:21:17 +02:00
Matthew Waters
7c53043386
aggregator: add simple support for caps handling
...
Modelled off the videoaggregator caps handling as that seems the most
mature aggregtor-using implementation that has caps handling there is.
https://bugzilla.gnome.org/show_bug.cgi?id=776931
2017-05-20 16:21:17 +02:00
Nicolas Dufresne
ed8512c53e
aggregator: Reset upstream latency on first buffer
...
In the case an aggregator is created and pads are requested but only
linked later, we end up never updating the upstream latency.
This was because latency queries on pads that are not linked succeed,
so we never did a new query once a live source has been linked, so the
thread was never started.
https://bugzilla.gnome.org/show_bug.cgi?id=757548
2017-05-20 16:21:17 +02:00
Olivier Crête
d2335bce9b
aggregator: Always handle sync'ed events on output thread
...
Having all synchronized events always be handled on the output
thread should make synchronization easier.
https://bugzilla.gnome.org/show_bug.cgi?id=781673
2017-05-20 16:21:16 +02:00
Olivier Crête
4cec1925e3
aggregator: Delay clipping to output thread
...
This is required because the synchronized events like caps or segments
may only be processed on the output thread.
https://bugzilla.gnome.org/show_bug.cgi?id=781673
2017-05-20 16:21:16 +02:00
Olivier Crête
a6710944e8
aggregator: Make pad eos as soon as all buffers are processed, dont way for events
...
https://bugzilla.gnome.org/show_bug.cgi?id=781673
2017-05-20 16:21:16 +02:00
Olivier Crête
6e96bebd5b
aggregator: Only count buffers when declaring queue full
...
https://bugzilla.gnome.org/show_bug.cgi?id=781673
2017-05-20 16:21:16 +02:00
Olivier Crête
4d408ea920
aggregator: Simplify clip function
...
The return value was ignored anyway
https://bugzilla.gnome.org/show_bug.cgi?id=781673
2017-05-20 16:21:16 +02:00
Olivier Crête
20aee5f575
aggregator: Only declare first buffer on actual buffer
...
The function needs to be unlocked if any data is received, but only
end the first buffer processing on an actual buffer, synchronized events
don't matter on the first buffer processing.
https://bugzilla.gnome.org/show_bug.cgi?id=781673
2017-05-20 16:21:16 +02:00
Olivier Crête
1ab33d78fe
aggregator: Set initial position on first buffer
...
Set the initial position on the first buffer, otherwise the queue
will grow without limits before the output thread is started.
https://bugzilla.gnome.org/show_bug.cgi?id=781673
2017-05-20 16:21:16 +02:00
Olivier Crête
82f7b00ea3
aggregator: Reset the pad's first buffer flag with the rest
...
There is not reason to have separate code to reset this one.
https://bugzilla.gnome.org/show_bug.cgi?id=781673
2017-05-20 16:21:16 +02:00
Olivier Crête
05374aa22c
aggregator: Reset pad on init
...
Factor out the pad reset code from the flushing and use it on init as well
https://bugzilla.gnome.org/show_bug.cgi?id=781673
2017-05-20 16:21:16 +02:00