Sebastian Dröge
16de48ae03
gst: gst_element_remove_pad() is transfer none for the pad
...
While the refcount of the pad is decreased, it's the refcount that is
owned by the parent (i.e. the element) and not the one passed in by the
caller.
Fixes a memory leak in bindings.
2017-12-04 18:10:23 +02:00
Tim-Philipp Müller
76b54099bd
aggregator: add finish_buffer() vfunc
...
So subclasses can override the finish behaviour
and/or decorate or modify buffers before they
get pushed out.
https://bugzilla.gnome.org/show_bug.cgi?id=760981
2017-12-04 15:27:04 +00:00
Tim-Philipp Müller
e9483fbffb
aggregator: disable tag merging and forwarding for now
...
Subclasses should handle this for now.
2017-12-04 12:29:05 +00:00
Jan Alexander Steffens (heftig)
d9b20492f3
devicemonitor: Avoid maybe-uninitialized compiler warning
...
On Arch Linux x86_64, gcc 7.2.0-3, -Og -g3:
gstdevicemonitor.c: In function ‘bus_sync_message’:
gstdevicemonitor.c:276:8: error: ‘matches’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
This commit also simplifies the code a bit.
https://bugzilla.gnome.org/show_bug.cgi?id=789983
2017-12-04 10:56:44 +00:00
Sebastian Dröge
464f840a23
gst: Annotate various strings as type filename if they represent a path/filename
2017-12-03 14:48:54 +02:00
Tim-Philipp Müller
e6dbbb3854
aggregator: hook up to docs
2017-12-02 19:00:32 +00:00
Tim-Philipp Müller
cea9641fa9
aggregator: hook up to build system
...
https://bugzilla.gnome.org/show_bug.cgi?id=739010
2017-12-02 15:44:40 +00:00
Tim-Philipp Müller
39664da1f0
Move GstAggregator from -bad to core
...
Merge branch 'aggregator-move'
https://bugzilla.gnome.org/show_bug.cgi?id=739010
2017-12-02 15:27:22 +00:00
Mathieu Duponchelle
79d0239e2f
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-12-02 15:10:27 +00:00
Tim-Philipp Müller
4e4438de21
aggregator: add doc blurb for gst_aggregator_pad_is_eos()
2017-12-02 15:10:27 +00:00
Tim-Philipp Müller
41f7b04c81
aggregator: also remove now-unused PadForeachFunc declaration
...
https://bugzilla.gnome.org/show_bug.cgi?id=785679
2017-12-02 15:10:27 +00:00
Olivier Crête
e9fafb3e17
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-12-02 15:10:27 +00:00
Tim-Philipp Müller
2f3fbf24bc
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-12-02 15:10:27 +00:00
Stefan Sauer
f51557dbc5
aggregator: add more comments
2017-12-02 15:10:27 +00:00
Stefan Sauer
917214ed91
tests: comment and logging cleanups for audiomixer and aggregator
...
Remove some references to 'collectpads'. Logs pads through the object variants.
Add some more comments. Remove a left over comment.
2017-12-02 15:10:27 +00:00
Stefan Sauer
063787d770
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-12-02 15:10:27 +00:00
Olivier Crête
3d0dad59a0
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-12-02 15:10:27 +00:00
Olivier Crête
8b60b25917
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-12-02 15:10:27 +00:00
Stefan Sauer
a083391fb5
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-12-02 15:10:27 +00:00
Stefan Sauer
23692ee688
aggregator: init latency values with 0 instead of FALSE
2017-12-02 15:10:27 +00:00
Stefan Sauer
fb3c9f3808
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-12-02 15:10:27 +00:00
Stefan Sauer
8776900cf7
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-12-02 15:10:27 +00:00
Stefan Sauer
5509920c27
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-12-02 15:10:27 +00:00
Stefan Sauer
113a2c508b
aggregator: add a doc-blob for the event_func
2017-12-02 15:10:27 +00:00
Stefan Sauer
45cef5726f
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-12-02 15:10:27 +00:00
Stefan Sauer
498cdd8fac
aggregator: remove commented code
...
The SEGMENT_DONE event does not require any special treatment. This is
commented out in 6efc106a67
.
2017-12-02 15:10:27 +00:00
Stefan Sauer
656a2616f2
aggregator: move the comment for the locks to the lock macros
...
Looks like some code was inserted afterwards.
2017-12-02 15:10:27 +00:00
Stefan Sauer
5a06c3d12b
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-12-02 15:10:27 +00:00
Stefan Sauer
00d6f46ff8
aggregator: add two more tests for a sequence of data
...
This verifies that we handle events and queries at the head of the queue and
then buffers.
2017-12-02 15:10:27 +00:00
Stefan Sauer
fbe82b7fa1
aggregator: refactor the test helper
...
Make the test helpers use a queue. This lets us also test sequences of events,
queries and data.
2017-12-02 15:10:27 +00:00
Stefan Sauer
9efffd05e2
aggregator: test cleanup
...
Remove gst_init() from a few tests. Use _OBJECT variants in logging. Remove
arbitrary extra blank lines. Make push_event() more like push_buffer() - set
the event to NULL and add cleanup to _chain_data_clear().
2017-12-02 15:10:27 +00:00
Stefan Sauer
4808f4836c
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-12-02 15:10:27 +00:00
Stefan Sauer
a82e6bc650
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-12-02 15:10:27 +00:00
Stefan Sauer
70d0945b35
aggregator: register func for do_events_and_queries
...
This fixes logging the func ptr from _iterate_sinkpads().
2017-12-02 15:10:27 +00:00
Stefan Sauer
bedc9de46c
aggregator: only set clipped_buffer to NULL if needed
2017-12-02 15:10:27 +00:00
Stefan Sauer
06d62ccb94
aggregator: rename check_events
...
This function also handles queries. Update the code to loop until all events and
queuries are handled.
2017-12-02 15:10:27 +00:00
Stefan Sauer
1869886a96
aggregator: add a few more comments to PadPrivate struct
2017-12-02 15:10:27 +00:00
Stefan Sauer
82bde3446d
aggregator: rename buffers field to data
...
The queue stores buffers, events and queries.
2017-12-02 15:10:27 +00:00
Stefan Sauer
caafb59af5
aggregator: documentaion fixes
...
Fix typos and remove params docs, where the param was moved.
2017-12-02 15:10:27 +00:00
Edward Hervey
ab4dd3f577
check: Fix usage of dual probes
...
Using two (or more) probes on the same pad where one of the probe
returns HANDLED or DROP is tricky since the other probes might
not be called.
Instead use regular probes and a proper pad (the sinkpad already existed,
it only required to be activated and have a dummy chain function for
the events/buffers to be received/handled properly)
2017-12-02 15:10:27 +00:00
Stefan Sauer
2cd988e763
aggregator: log all events
...
We already log a few events explicitly, just log them all with more detail.
2017-12-02 15:10:27 +00:00
Tim-Philipp Müller
bb9f3d2be5
aggregator: fix header formatting
2017-12-02 15:10:27 +00:00
Sebastian Dröge
70b4395e95
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-12-02 15:10:27 +00:00
Tim-Philipp Müller
e018273183
aggregator: mark symbols explicitly for export with GST_EXPORT
2017-12-02 15:10:27 +00:00
Stefan Sauer
27708ff7c1
aggregator: remove duplicated code fragment
...
This code already runs above when (event || query).
2017-12-02 15:10:27 +00:00
Stefan Sauer
b609fd7138
aggregator: code cleanups
...
Fix comment typos, some copy'n'paste in logging. Add more doc comments.
2017-12-02 15:10:27 +00:00
Mathieu Duponchelle
4f81aa8742
aggregator: Invalidate pad's tail position ...
...
when dequeuing a segment event.
https://bugzilla.gnome.org/show_bug.cgi?id=784593
2017-12-02 15:10:27 +00:00
Stefan Sauer
7b82eb546f
aggregator: fix "'aggclass' may be used uninitialized in this function"
2017-12-02 15:10:27 +00:00
Olivier Crête
474acca0a8
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-12-02 15:10:27 +00:00
Olivier Crête
0500807b55
aggregator: Set flow to FLUSHING on pad stop
...
Fixes a rare race where the pad is being stopped while doing a query.
2017-12-02 15:10:27 +00:00