Commit graph

16778 commits

Author SHA1 Message Date
Thiago Santos
82c1ec4931 tracer: add element-change-state-pre/post hook
Helps catching when a state change is starting and ending.

It is also possible to track the end of state changes by checking the
async-done or state-change messages.
This is particularly important for elements that do async state changes.
2015-11-12 15:39:26 -03:00
Miguel París Díaz
b09e9592ec pad: test for checking the order of the probe calls
https://bugzilla.gnome.org/show_bug.cgi?id=757197
2015-11-11 14:45:19 +01:00
Thiago Santos
d4cab73d09 context: fix some copy and paste leftover in docs 2015-11-10 17:37:22 -03:00
Thiago Santos
e22517567a context: add some more documentation
Add a short paragraph on what means for a context to be persistent
2015-11-10 17:37:22 -03:00
Tim-Philipp Müller
09293bb63f utils: use 'static inline' instead of 'inline static' for gtk-doc
gtk-doc doesn't seem to recognise the former variant.
2015-11-09 18:02:09 +00:00
Tim-Philipp Müller
220dbfc13c docs: remove dummy function declarations with G_INLINE_FUNCTION for gtk-doc
gtk-doc can handle static inline functions just fine these days,
there's no need for this stuff any more.
2015-11-09 17:59:16 +00:00
Duncan Palmer
45fa81e564 queue2: Add the avg-in-rate property.
https://bugzilla.gnome.org/show_bug.cgi?id=733959
2015-11-06 12:32:16 -03:00
Philippe Normand
8ae8b2723d queue2: add overrun signal
Notifies that the queue2 is full, same as queue does

https://bugzilla.gnome.org/show_bug.cgi?id=733959
2015-11-06 12:32:10 -03:00
Thiago Santos
533d0ac7f1 pad: tests for accept-caps handling with proxy pads
Adds 3 new tests for testing accept-caps behavior with
proxy-caps pads.

1) A scenario where there is no proxy. The caps should be compared to the
template caps of the pad

2) A scenario where there is a compatible pad. The caps should be compared
to the proxied pad caps (and also with the template)

3) A scenario where there is an incompatible proxy pad. No caps should be
possible at all.

https://bugzilla.gnome.org/show_bug.cgi?id=754112
2015-11-06 11:11:11 -03:00
Thiago Santos
02d88fc3f3 pad: check template caps for proxy pads in accept-caps
Validate that the proxy pad indeed accepts the caps by also
comparing with the pad template caps, otherwise when the pad
had no internally linked pads it would always return true.

https://bugzilla.gnome.org/show_bug.cgi?id=754112
2015-11-06 10:23:34 -03:00
Thibault Saunier
2c132becb4 Fix build with -Werror=maybe-uninitialized 2015-11-06 12:58:42 +01:00
Thibault Saunier
ca08af1f17 preset: Add a GST_PRESET_PATH env variable for presets to be usable uninstalled
And start setting the various uninstalled presets paths.
2015-11-06 12:26:35 +01:00
Anton Bondarenko
f468eb7db0 filesink: continue element cleanup even if fclose fails
Sometimes filesink cleanup during stop may fail due to fclose error.
In this case object left partial cleanup with no file opened
but still holding old file descriptor.

It's not possible to change location property in a such state,
so next start will cause old file overwrite if 'append' does not set.

According to man page and POSIX standard about fclose behavior(extract):
------------------------------------------------------------------------
The fclose() function shall cause the stream pointed to by stream
to be flushed and the associated file to be closed.
...
Whether or not the call succeeds, the stream shall be disassociated
from the file and any buffer set by the setbuf() or setvbuf()
function shall be disassociated from the stream.
...
The fclose() function shall perform the equivalent of a close()
on the file descriptor that is associated with the stream
pointed to by stream.

After the call to fclose(), any use of stream results
in undefined behavior.
------------------------------------------------------------------------

So file is in 'closed' state no matter if fclose succeed or not.
And cleanup could be continued.

https://bugzilla.gnome.org/show_bug.cgi?id=757596
2015-11-05 10:17:41 +01:00
Jan Schmidt
ca22e60b91 pad: Mark sticky events as sent on not-linked
Instead of re-sending sticky events over and over to a not-linked
pad, mark them as sent the first time. If the not-linked came from
downstream, it already received the events. If the pad is actually
not-linked, the sticky events will be rescheduled when the
pad is linked anyway.
2015-11-01 23:16:44 +11:00
Jan Schmidt
a5001312cd ghostpad: Allow deactivation with no peer.
Allow deactivation in pull-mode, since that implies we
had a peer, activated in pull mode, then the peer disa-peer-ed ;)
2015-10-30 23:25:57 +11:00
Thiago Santos
973cd86c99 element: emit tracer's element-new hook from 'constructed'
It allows to properly emitting it for all newly created elements

https://bugzilla.gnome.org/show_bug.cgi?id=757045
2015-10-29 07:27:35 -03:00
Thiago Santos
cf5e7c03c2 stats: log the element-new hook properly
To be able to get the time the elements were created instead of
just logging them without a time
2015-10-29 07:27:35 -03:00
Sebastian Dröge
c47e49e1e3 pad: Unblock blocking pad probes when receiving FLUSH_START in send_event() too
Without this, flushing might not unblock the streaming thread and cause deadlocks.

https://bugzilla.gnome.org/show_bug.cgi?id=757257
2015-10-29 11:08:26 +02:00
Sebastian Dröge
1493f4a334 pad: Document the order in which pad probes are called
https://bugzilla.gnome.org/show_bug.cgi?id=757197
2015-10-28 13:04:25 +02:00
Sebastian Dröge
2dfa548f36 pad: Append hooks instead of prepending to call them in the order they were added
https://bugzilla.gnome.org/show_bug.cgi?id=757197
2015-10-28 13:02:04 +02:00
Stian Selnes
85b93fa347 netaddressmeta: gst_buffer_get_net_address_meta() as function
Implement gst_buffer_get_net_address_meta() as a function instead
of a macro in order to get gobject-introspection to work.

https://bugzilla.gnome.org/show_bug.cgi?id=702921
2015-10-27 12:59:24 +00:00
Nirbheek Chauhan
5af73b30ed buffer: flesh out docs for gst_buffer_make_writable() a little
There is a similar explanation in gst_caps_make_writable, but the existing
documentation can be misleading since it does not define what 'is already
writable' means.

Also note when this function is meant to be used.
2015-10-27 11:23:25 +00:00
Nirbheek Chauhan
b76f046999 caps: clarify docs for a few functions that they don't update things in-place
It is not necessarily clear from the existing introspection tags and
documentation alone.
2015-10-27 11:23:25 +00:00
Edward Hervey
a9c923d585 queue/queue2: Use GST_BUFFER_DTS_OR_PTS
The input of queue/queue2 might have DTS set, in which cas we want
to take that into account (instead of the PTS) to calculate position
and queue levels.

https://bugzilla.gnome.org/show_bug.cgi?id=756507
2015-10-27 08:49:02 +01:00
Edward Hervey
692c0dc060 multiqueue: Use buffer DTS if present, else PTS
In order to accurately determine the amount (in time) of data
travelling in queues, we should use an increasing value.

If buffers are encoded and potentially reordered, we should be
using their DTS (increasing) and not PTS (reordered)

https://bugzilla.gnome.org/show_bug.cgi?id=756507
2015-10-27 08:38:42 +01:00
Edward Hervey
16458daddb collectpads: Use GST_BUFFER_DTS_OR_PTS
Simplifies code a bit
2015-10-27 08:33:41 +01:00
Edward Hervey
41e1bea7ef buffer: Add a GST_BUFFER_DTS_OR_PTS macro
API: GST_BUFFER_DTS_OR_PTS

Many scenarios/elements require dealing with streams of buffers that
might have DTS set (i.e. encoded data, potentially reordered)

To simplify getting the increasing "timestamp" of those buffers, create
a macro that will return the DTS if valid, and if not the PTS
2015-10-27 08:33:23 +01:00
Guillaume Desmottes
f0ee10d778 doc: add GST_{PTR,SEGMENT}_FORMAT
Very useful formats in debug output so best to have them in the
generated doc.

https://bugzilla.gnome.org/show_bug.cgi?id=756115
2015-10-26 09:19:13 +00:00
Sebastian Dröge
66c0879908 segment: Return -1 if gst_segment_to_stream_time_full() considers the position not inside the segment
Fixes GstPipeline unit test.

https://bugzilla.gnome.org/show_bug.cgi?id=756564
2015-10-26 10:53:35 +02:00
Florin Apostol
07902f6ab4 uri: fix behaviour for merging uris ending in .. without following /
https://bugzilla.gnome.org/show_bug.cgi?id=757065
2015-10-24 20:32:53 +03:00
Florin Apostol
63fa09fc4d uri: tests: added unit test for streams ending in .. without following /
https://bugzilla.gnome.org/show_bug.cgi?id=757065
2015-10-24 20:32:53 +03:00
Thibault Saunier
d593192a39 debug: Dump pad properties values
Currently we only show element properties values, we should also show
pad properties values

https://bugzilla.gnome.org/show_bug.cgi?id=754166
2015-10-24 07:23:05 +02:00
Sebastian Dröge
9402f9786d segment: Remove leftover debug g_print() 2015-10-23 20:04:42 +03:00
Vivia Nikolaidou
6ff8fdfc47 segment: Add _full variants of all stream/running_time from/to segment position functions
See formula clarifications in design docs for calculation details.

https://bugzilla.gnome.org/show_bug.cgi?id=756564
2015-10-23 15:50:38 +03:00
Vivia Nikolaidou
8fc4794bcc gst-uninstalled: Added env var for uninstalled PTP helper
https://bugzilla.gnome.org/show_bug.cgi?id=755651
2015-10-23 15:44:21 +03:00
Guillaume Desmottes
66b6d355e4 basesink: rename argument of PREROLL_{COND,LOCK} macros
They take a GstBaseSink instance as argument at not a GstPad. Rename the
argument to 'obj' which is not miss leading and in line with
GST_BASE_SINK_PAD(obj).

https://bugzilla.gnome.org/show_bug.cgi?id=756954
2015-10-22 13:49:06 +01:00
Mathieu Duponchelle
0726c65da2 gstcontrolsource: Add missing (out) annotation 2015-10-22 10:06:17 +02:00
Tim-Philipp Müller
a34b37290d Automatic update of common submodule
From b99800a to b319909
2015-10-21 14:34:47 +01:00
Sebastian Dröge
0f5be03d76 pad: Fix docs/annotation of gst_pad_probe_info_get_buffer_list()
It's not get_bufferlist(). Because of that it was ignored by the docs and
G-I, leading to crashes because of broken ownership transfer.

https://bugzilla.gnome.org/show_bug.cgi?id=756898
2015-10-21 14:49:49 +03:00
Sebastian Dröge
1efb451154 Use new GST_ENABLE_EXTRA_CHECKS #define
https://bugzilla.gnome.org/show_bug.cgi?id=756870
2015-10-21 14:31:56 +03:00
Sebastian Dröge
539265fcc5 Automatic update of common submodule
From 9aed1d7 to b99800a
2015-10-21 14:25:40 +03:00
Luis de Bethencourt
587b95a857 stats: always free log
We always want to free the open file log if fopen() succeeded. Independently
of if fgets() succeeds or fails.

CID 1326055

https://bugzilla.gnome.org/show_bug.cgi?id=756864
2015-10-21 11:19:14 +01:00
Vivia Nikolaidou
45f0f354ac segment: Correct stream_time calc for negative applied rate
Updated gst_segment_position_from_stream_time and gst_segment_to_stream_time to reflect correct calculations for the case when the applied rate is negative.

Pasting from design docs:

===============================
Stream time is calculated using the buffer times and the preceding SEGMENT
event as follows:

    stream_time = (B.timestamp - S.start) * ABS (S.applied_rate) + S.time

For negative rates, B.timestamp will go backwards from S.stop to S.start,
making the stream time go backwards.
===============================

Therefore, the calculation for applied_rate < 0 should be:

    stream_time = (S.stop - B.timestamp) * ABS (S.applied_rate) + S.time

and the reverse:

    B.timestamp = S.stop - (stream_time - S.time) / ABS (S.applied_rate)

https://bugzilla.gnome.org/show_bug.cgi?id=756810
2015-10-20 10:43:07 +03:00
Stefan Sauer
70d2a676af tracer: rename the envvar to GST_TRACER_PLUGINS
The subsystem reused the GST_TRACE var that is allready in use by the alloc tracer.
Fixes #756760
2015-10-19 21:41:13 +02:00
Edward Hervey
7c8f76a39f multiqueue: Improve incoming SEGMENT handling
Previously this code was just blindly setting the cached flow return
of downstream to GST_FLOW_OK when we get a SEGMENT.

The problem is that this can not be done blindly. If downstream was
not linked, the corresponding sinqlequeue source pad thread might be
waiting for the next ID to be woken up upon.

By blindly setting the cached return value to GST_FLOW_OK, and if that
stream was the only one that was NOT_LINKED, then the next time we
check (from any other thread) to see if we need to wake up a source pad
thread ... we won't even try, because none of the cached flow return
are equal to GST_FLOW_NOT_LINKED.

This would result in that thread never being woken up

https://bugzilla.gnome.org/show_bug.cgi?id=756645
2015-10-19 14:31:05 +02:00
Ting-Wei Lan
55fae236d0 gstutils: Fix build with clang -Werror=cast-align
https://bugzilla.gnome.org/show_bug.cgi?id=755657
2015-10-19 13:03:53 +01:00
Sebastian Dröge
2955eeb0ed bin: Make sure to free all cached messages when going to NULL
An ASYNC READY->PAUSED might have failed without the bin code noticing during
the state change, in which case we will never get PAUSED->READY and would leak
messages.

https://bugzilla.gnome.org/show_bug.cgi?id=756611
2015-10-19 11:06:54 +03:00
Tim-Philipp Müller
bc5c199bc5 docs: mention xdot utility to view .dot files directly 2015-10-16 15:59:49 +01:00
Tim-Philipp Müller
424477d00e alloctrace: show details of events and messages leaked
So it's clearer what leaked.
2015-10-16 12:00:50 +01:00
Tim-Philipp Müller
0a5fbd4d3b docs: manual: improve advanced metadata example a bit
Accept both filename and a URI as argument, and print
the error from the error message if there's an error.

https://bugzilla.gnome.org/show_bug.cgi?id=756630
2015-10-16 12:00:22 +01:00