Commit graph

7871 commits

Author SHA1 Message Date
Nicolas Dufresne
79b935b304 plugin: Allow device nodes as dependency
This is useful for feature that are produced after probing a specific
node. You want to reload this plugin if the specific node(s) have been
removed, added, or reloaded.

https://bugzilla.gnome.org/show_bug.cgi?id=758080
2015-11-25 14:26:11 -05:00
Nicolas Dufresne
446b3e6ddc plugin: Don't do lossy shift on hash
In plugin is responsible for calculating a hash of the dependencies
in order to determine if the cache should be invalidated or not.
Currently, the hash combining method removes a bit of the original
have before combining with an addition. As we use 32bits for our hash
and shift 1 bit for each file and directory, that resulting hash only
account for the last 32 files. And is more affected by the last file.

Rotating technique (shifting, and adding back the ending bit), can be
use to make the addition non-commutative. In a way that different order
gives different hashes. In this case, I don't preserve this behaviour
because the order in which the files are provided by the OS is
irrelevant.

In most cases, the XOR operation is used to combine hashes. In this
code we use the addition. I decided to preserve the addition because
we make use of non-random hash ((guint) -1) in the algorithm for
matching files that are not really part of the hash (symlinks, special
files). Doing successive XOR on this value, will simply switch from
full ones, to full zero. The XOR used with whitelist has been preserved
as it's based on a fairly randomized hash (g_str_hash).

https://bugzilla.gnome.org/show_bug.cgi?id=758078
2015-11-25 14:26:11 -05:00
Lukasz Forynski
7e2aae7942 info: fix compiler warning with -Wpedantic and gcc 5
Gstreamer compiled with gcc 5.2 and -Wpedantic produces the
following warning:

'ISO C does not support '__FUNCTION__' predefined identifier [-Wpedantic]
  const char *s = __FUNCTION__;'

Since gcc 5 enables C99 by default, use __func__ if it's available
instead of the non-standard __FUNCTION__ (as suggested in [2]).

[1]: https://gcc.gnu.org/gcc-5/changes.html
[2]: https://gcc.gnu.org/gcc-5/porting_to.html

https://bugzilla.gnome.org/show_bug.cgi?id=758541
2015-11-24 09:34:59 +00:00
Ravi Kiran K N
9fbecd6b6d tags: add GST_TAG_PRIVATE_DATA
Can be used to represent private data that may be
contained in tags, such as ID3v2 PRIV frames.

https://bugzilla.gnome.org/show_bug.cgi?id=730926
2015-11-20 19:43:31 +00:00
Vineeth TM
61a8c946ac debugutils: Fix string memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=758207
2015-11-17 00:18:45 -03:00
Heinrich Fink
d59022f508 systemclock: Use mach_time on Apple platforms
On iOS/OSX g_get_current_time was used by default. However, mach_time is
the preferred high-resolution monotonic clock to be used on Apple
platforms.

https://bugzilla.gnome.org/show_bug.cgi?id=758012
2015-11-13 09:23:44 +01:00
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
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
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
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
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
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
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
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
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
Mathieu Duponchelle
0726c65da2 gstcontrolsource: Add missing (out) annotation 2015-10-22 10:06:17 +02: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
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
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
Thiago Santos
cecd8bdfdc memory: fix typo in documentation
It should be 1.2 unless this is a flag from the future
2015-10-15 20:15:48 -03:00
Florin Apostol
224da699a9 pad: fix memory leak when sending events to an EOS pad
https://bugzilla.gnome.org/show_bug.cgi?id=756208
2015-10-07 23:07:59 +01:00
Stefan Sauer
77ef6000c6 tracer: move prototype to the right header
Fixes the build when the tracing subsystem is disabled.
2015-10-06 18:52:38 +02:00
Stefan Sauer
ddc5654b60 tracer: mark GstTracerQuarkId as non GEnum
This reverts 72ca02b1de and marks the enum
accordingly.
2015-10-06 18:49:46 +02:00
Stefan Sauer
b971c0979e tracer: fix the build with debug (tracer) disabled
Sync the macro definitions. The dummy defines has argument mismatches.
2015-10-06 14:01:21 +02:00
Stefan Sauer
73e8508bd4 tracer: fix the build with debug (tracer) disabled
Remove commas at the end of the macros.
2015-10-06 11:39:33 +02:00
Thiago Santos
72ca02b1de gst: adding tracer quark id to gst init and deinit
Fixes issues at make check
2015-10-05 19:06:41 -03:00
Marcin Kolny
e8d0b019b3 tracer: add missing hooks
Add following hooks: element-new, element-add-pad, element-remove-pad,
bin-add-pre, bin-add-post, bin-remove-pre, bin-remove-post, pad-link-pre,
pad-link-post, pad-unlink-pre, pad-unlink-post.

https://bugzilla.gnome.org/show_bug.cgi?id=733187
2015-10-05 20:59:39 +02:00
Thiago Santos
567865c81c tracer: add pad query hooks 2015-10-05 20:59:39 +02:00
Mathieu Duponchelle
eb0c8facca tracer: strdup the passed parameters. 2015-10-05 20:59:39 +02:00
Stefan Sauer
660049bb38 tracing: rename the global api to gst_tracing
This makes it more obvious what is the api for tracer elements and what is api
for the global state.
2015-10-05 20:59:39 +02:00
Stefan Sauer
5e2770566f tracers: eliminate var_args
Register tracer hooks as GCallback. Use macros for hook dispatch and cast the
hook functions back to the appropriate type.
2015-10-05 20:59:39 +02:00
Stefan Sauer
4881d1c16c tracer: use GQuark or strings for the hook id
This way one can define new tracing probes without changing the core. We are
using our own quark table, as 1) we only want to initialize them if we're
tracing, 2) we want to share them with the tracers.
2015-10-05 20:59:39 +02:00