Commit graph

210 commits

Author SHA1 Message Date
Mathieu Duponchelle
56fc5bef18 aggregator: Remove klass->sinkpads_type
This posed problems for the python bindings (and possibly others).

Instead, subclasses now use add_pad_template_with_gtype.

https://bugzilla.gnome.org/show_bug.cgi?id=789986
2017-11-22 16:52:29 +01:00
Tim-Philipp Müller
c4d5181b09 aggregator: add doc blurb for gst_aggregator_pad_is_eos() 2017-11-02 18:33:10 +00:00
Tim-Philipp Müller
6f8961e1d0 aggregator: also remove now-unused PadForeachFunc declaration
https://bugzilla.gnome.org/show_bug.cgi?id=785679
2017-11-02 16:05:40 +00:00
Olivier Crête
98ac205a4d aggregator: Remove pad iterator function
Use new gst_element_foreach_sink_pad() from core instead.

https://bugzilla.gnome.org/show_bug.cgi?id=785679
2017-11-02 13:55:08 +00:00
Tim-Philipp Müller
1116bb00ca aggregator: use new gst_element_foreach_sink_pad()
Instead of gst_aggregator_iterate_sinkpads() which will
soon be removed.

https://bugzilla.gnome.org/show_bug.cgi?id=785679
2017-11-02 13:53:15 +00:00
Stefan Sauer
859cc0a662 aggregator: add more comments 2017-11-01 15:19:15 +01:00
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