Sebastian Dröge [Mon, 4 Jul 2016 08:00:38 +0000 (10:00 +0200)]
baseparse: Make sure to not create an invalid event order when generating the default CAPS event because of a GAP event
There must be a SEGMENT event before the GAP event, and SEGMENT events must
come after any CAPS event. We however did not produce any CAPS yet, so we need
to ensure to insert the CAPS event before the SEGMENT event into the pending
events list.
https://bugzilla.gnome.org/show_bug.cgi?id=766970
Jan Schmidt [Fri, 1 Jul 2016 12:34:59 +0000 (22:34 +1000)]
gstinfo: Avoid gcc 6 warning that breaks the tests build
gcc 6 has problems detecting and avoiding throwing
a warning for tautological compares in macros (they
should only trigger for compares outside macros).
Avoid them with a nasty cast of one parameter to void *
https://bugzilla.gnome.org/show_bug.cgi?id=764526
Edward Hervey [Fri, 1 Jul 2016 07:44:12 +0000 (09:44 +0200)]
multiqueue: Fix behaviour with not-linked and eos pads
This is an update on
c9b6848885f4675d447e823c8fb117e247658252
multiqueue: Fix not-linked pad handling at EOS
While that commit did fix the behaviour if upstream sent a GST_EVENT_EOS,
it would break the same issue when *downstream* returns GST_FLOW_EOS
(which can happen for example when downstream decoders receive data
from after the segment stop).
GST_PAD_IS_EOS() is only TRUE when a GST_EVENT_EOS has flown through it
and not when a GST_EVENT_EOS has gone through it.
In order to handle both cases, also take into account the last flow
return.
https://bugzilla.gnome.org/show_bug.cgi?id=763770
Tim-Philipp Müller [Thu, 30 Jun 2016 14:07:28 +0000 (15:07 +0100)]
streams: sprinkle some Since: markers for docs
Tim-Philipp Müller [Thu, 30 Jun 2016 13:37:17 +0000 (14:37 +0100)]
multiqueue: add gtk-doc blurb for new pad property
Edward Hervey [Wed, 10 Feb 2016 10:42:04 +0000 (11:42 +0100)]
multiqueue: Add a pad property to "group" streams
When syncing by running time, multiqueue will throttle unlinked streams
based on a global "high-time" and the pending "next_time" of a stream.
The idea is that we don't want unlinked streams to be "behind" the global
running time of linked streams, so that if/when they get linked (like when
switching tracks) decoding/playback can resume from the same position as
the other streams.
The problem is that it assumes elements downstream will have a more or less
equal buffering/latency ... which isn't the case for streams of different
type. Video decoders tend to have higher latency (and therefore consume more
from upstream to output a given decoded frame) compared to audio ones, resulting
in the computed "high_time" being at the position of the video stream,
much further than the audio streams.
This means the unlinked audio streams end up being quite a bit after the linked
audio streams, resulting in gaps when switching streams.
In order to mitigate this issue, this patch adds a new "group-id" pad property
which allows users to "group" streams together. Calculating the high-time will
now be done not only globally, but also per group. This ensures that within
a given group unlinked streams will be throttled by that group's high-time
instead.
This fixes gaps when switching downstream elements (like switching audio tracks).
Edward Hervey [Fri, 12 Jun 2015 08:53:23 +0000 (10:53 +0200)]
gst: New Stream listing/selection system
* GstStream
* GstStreamCollection
* GST_EVENT_SELECT_STREAMS
* GST_MESSAGE_STREAM_COLLECTION
Sebastian Dröge [Wed, 29 Jun 2016 21:24:02 +0000 (23:24 +0200)]
poll: #define EWOULDBLOCK to EAGAIN if it's not defined on Windows
Sebastian Dröge [Wed, 29 Jun 2016 12:05:18 +0000 (14:05 +0200)]
bufferpool: Fix handling of the GstPoll
Especially if multiple threads are waiting for buffers to be available again,
the current code was wrong. Fix this and document clearly how the GstPoll is
supposed to be used.
Also fix some potential races with reading from the GstPoll before writing
actually happened.
https://bugzilla.gnome.org/show_bug.cgi?id=767979
Sebastian Dröge [Wed, 29 Jun 2016 12:02:55 +0000 (14:02 +0200)]
bus: Make sure to always read the control after popping a message
It might happen that we popped the message before writing of the control
happened. In this case we just have to retry again a bit later, and failure to
do so will cause an additional byte in the control and the GSource /
gst_poll_wait() to always wake up again immediately.
https://bugzilla.gnome.org/show_bug.cgi?id=750397
Sebastian Dröge [Wed, 29 Jun 2016 11:37:28 +0000 (13:37 +0200)]
systemclock: Improve GstPoll handling and don't check for impossible errno values
Also just read/write control every time, GstPoll is optimized by itself
already to only do I/O if switching between empty and one byte.
https://bugzilla.gnome.org/show_bug.cgi?id=750397
Sebastian Dröge [Wed, 29 Jun 2016 11:35:35 +0000 (13:35 +0200)]
poll: Clarify when FALSE is returned from read/write_control()
And also mention what the expected values of errno are going to be.
write_control() will only ever return FALSE if there was a critical error. It
will never return because of EINTR, EAGAIN or EWOULDBLOCK.
read_control() will return FALSE if there was no byte to read, in which case
errno would be EWOULDBLOCK.
In all other cases there was a critical error.
https://bugzilla.gnome.org/show_bug.cgi?id=750397
Sebastian Dröge [Wed, 29 Jun 2016 11:26:57 +0000 (13:26 +0200)]
poll: set_controllable(), restart() and set_flushing() are only valid for non-timer GstPolls
On timer GstPolls it will cause the control socket state to become
inconsistent as now one less read_control() than write_control() be would
needed.
Similarly, read_control() and write_control() are only valid on timer
GstPolls.
https://bugzilla.gnome.org/show_bug.cgi?id=750397
Sebastian Dröge [Wed, 29 Jun 2016 11:11:01 +0000 (13:11 +0200)]
poll: Warn if the return value of gst_poll_read_control() is unused
This might fail even under correct usage, e.g. if read_control() is called
from another thread before write_control() finished in another. It has to be
retried then, or other measures have to be taken, depending on how it is used
by the surrounding code.
https://bugzilla.gnome.org/show_bug.cgi?id=750397
Matthew Gruenke [Wed, 29 Jun 2016 16:57:42 +0000 (18:57 +0200)]
poll: Fix various race conditions with read_control() and write_control()
This addresses slightly different race conditions on Linux and Windows, and
fixes gst_poll_read_control() when control_pending == 0.
On Linux, the socketpair() used for control should not be made O_NONBLOCK.
If there's any propagation delay between set->control_write_fd.fd and
set->control_read_fd.fd, even the mutex now held will not be sufficient to
prevent a race condition. There's no benefit to using O_NONBLOCK, here.
Only liabilities.
For Windows, it's necessary to fix the race condition between testing
set->control_pending and performing WAKE_EVENT()/RELEASE_EVENT(). This is
accomplished by acquiring and holding set->lock, for both of these operations.
We could optimize the Linux version by making this Windows-specific.
For consistency with the Linux implementation, Windows' RELEASE_EVENT()
has also been made to block, although it should never happen.
Also, changed release_wakeup() to return TRUE and decrement control_pending
only when > 0. Furthermore, RELEASE_EVENT() is called only when
control_pending == 1.
Finally, changed control_pending to use normal, non-atomic arithmetic
operations, since it's now protected by set->lock.
Note: even though the underlying signaling mechanisms are blocking,
release_wakeup() is effectively non-blocking, as it will only attempt to read
from control_read_fd.fd after a byte has been written to control_write_fd.fd
or WaitForSingleObject() after it's been signaled.
https://bugzilla.gnome.org/show_bug.cgi?id=750397
Guillaume Desmottes [Tue, 28 Jun 2016 13:01:17 +0000 (15:01 +0200)]
bus: chain up GObject::constructed() to the parent class' implementation
Needed so GstBus can be tracked by the leaks tracer.
https://bugzilla.gnome.org/show_bug.cgi?id=768141
Nirbheek Chauhan [Thu, 23 Jun 2016 23:56:09 +0000 (05:26 +0530)]
gstconfig.h: Don't use extern with dllexport
GCC emits an error for this with -Werror:
plugin.c:22:1: error: 'gst_plugin_desc' initialized and declared 'extern' [-Werror]
This matches how glib does symbol exporting.
https://bugzilla.gnome.org/show_bug.cgi?id=767463
Nirbheek Chauhan [Tue, 21 Jun 2016 14:19:15 +0000 (19:49 +0530)]
win32: Don't use dllexport/import when only building statically
If the prototypes in the public API have dllimport in them when building
statically on Windows, the compiler will look for symbols with symbol
mangling and indirection corresponding to a DLL. This will cause a build
failure when trying to link tests/examples/etc.
External users of GStreamer also need to define -DGST_STATIC_COMPILATION
if they want to link to static gstreamer libraries on Windows.
A similar version of this patch has been committed to all gstreamer
repositories.
https://bugzilla.gnome.org/show_bug.cgi?id=767463
Nicolas Dufresne [Tue, 21 Jun 2016 15:45:26 +0000 (11:45 -0400)]
Automatic update of common submodule
From ac2f647 to f363b32
Vincent Penquerc'h [Wed, 15 Jun 2016 15:24:27 +0000 (16:24 +0100)]
tests: add a test for small ring buffer sizes
https://bugzilla.gnome.org/show_bug.cgi?id=767688
Vincent Penquerc'h [Wed, 15 Jun 2016 12:43:59 +0000 (13:43 +0100)]
queue2: fix crash deleting current region for small ring buffers
Ensure we do not attempt to destroy the current range. Doing so
causes the current one to be left dangling, and it may be dereferenced
later, leading to a crash.
This can happen with a very small queue2 ring buffer (10000 bytes)
and 4 kB buffers.
repro case:
gst-launch-1.0 fakesrc sizetype=2 sizemax=4096 ! \
queue2 ring-buffer-max-size=1000 ! fakesink sync=true
https://bugzilla.gnome.org/show_bug.cgi?id=767688
Tim-Philipp Müller [Mon, 20 Jun 2016 10:34:49 +0000 (11:34 +0100)]
tests: gstobject: fix typo in test name
Reynaldo H. Verdejo Pinochet [Thu, 16 Jun 2016 21:08:01 +0000 (14:08 -0700)]
docs/design/part-tracing: fix reference to renamed func
Nicolas Dufresne [Wed, 8 Jun 2016 16:34:53 +0000 (12:34 -0400)]
tee: Properly handle return value when only 1 pad
This patch handle the case when you have 1 pad (so the fast path is
being used) but this pad is removed. If we are in allow-not-linked, we
should return GST_FLOW_OK, otherwise, we should return GST_FLOW_UNLINKED
and ignore the meaningless return value obtained from pushing.
https://bugzilla.gnome.org/show_bug.cgi?id=767413
Stefan Sauer [Thu, 16 Jun 2016 13:52:16 +0000 (15:52 +0200)]
gst-plot-traces.sh: add a script to plot gst-tracer graphs
The script extracts cpu-usage data from a tracelog and plots it via gnuplot.
Sebastian Dröge [Wed, 15 Jun 2016 14:12:23 +0000 (16:12 +0200)]
device: Fix typo
paramater -> parameter
Tim-Philipp Müller [Tue, 14 Jun 2016 18:16:33 +0000 (19:16 +0100)]
info: flesh out GST_PTR_FORMAT docs a bit
Sebastian Dröge [Mon, 13 Jun 2016 16:33:27 +0000 (18:33 +0200)]
basesink: Update start time when losing state only if we were in PLAYING
If we were in PAUSED, the current clock time and base time don't have much to
do with the running time anymore as the clock might have advanced while we
were PAUSED. The system clock does that for example, audio clocks often don't.
Updating the start time in PAUSED will cause a) the wrong position to be
reported, b) step events to step not just the requested amount but the amount
of time we spent in PAUSED. The start time should only ever be updated when
going from PLAYING to PAUSED to remember the current running time (to be able
to compensate later when going to PLAYING for the clock time advancing while
PAUSED), not when we are already in PAUSED.
Based on a patch by Kishore Arepalli <kishore.arepalli@gmail.com>
The updating of the start time when the state is lost was added in commit
ba943a82c0bbfd17c9ee9f5068d44c9d9274fd13 to fix the position reporting when
the state is lost. This still works correctly after this change.
https://bugzilla.gnome.org/show_bug.cgi?id=739289
Sebastian Dröge [Sat, 11 Jun 2016 19:18:06 +0000 (22:18 +0300)]
pad: Log pad offsets as signed times
Sebastian Dröge [Sat, 11 Jun 2016 18:56:19 +0000 (21:56 +0300)]
pad: Also check the number of segment events and if other serialized events and queries trigger segment updating too
https://bugzilla.gnome.org/show_bug.cgi?id=765049
Sebastian Dröge [Sat, 11 Jun 2016 18:37:47 +0000 (21:37 +0300)]
pad: Add unit test for pad offset handling on src pads
https://bugzilla.gnome.org/show_bug.cgi?id=765049
Sebastian Dröge [Tue, 7 Jun 2016 08:32:47 +0000 (11:32 +0300)]
adapter: Rename functions and implement new functions, update test
We don't do calculations with different units (buffer offsets and bytes)
anymore but have functions for:
1) getting the number of bytes since the last discont
2) getting the offset (and pts/dts) at the last discont
and the previously added function to get the last offset and its distance from
the current adapter position.
https://bugzilla.gnome.org/show_bug.cgi?id=766647
Edward Hervey [Thu, 19 May 2016 08:31:02 +0000 (10:31 +0200)]
adapter: Add methods to query current offset
API: gst_buffer_prev_offset
API: gst_buffer_get_offset_from_discont
The gst_buffer_get_offset_from_discont() method allows retrieving the current
offset based on the GST_BUFFER_OFFSET of the buffers that were pushed in.
The offset will be set initially by the GST_BUFFER_OFFSET of
DISCONT buffers, and then incremented by the sizes of the following
buffers.
The gst_buffer_prev_offset() method allows retrievent the previous
GST_BUFFER_OFFSET regardless of flags. It works in the same way as
the other gst_buffer_prev_*() methods.
https://bugzilla.gnome.org/show_bug.cgi?id=766647
Tim-Philipp Müller [Thu, 9 Jun 2016 16:42:13 +0000 (17:42 +0100)]
gstconfig.h.in: indent #if #else jungle for better readability
Sebastian Dröge [Wed, 8 Jun 2016 09:11:19 +0000 (12:11 +0300)]
utils: Add gst_pad_link_maybe_ghosting() for consistency
We already had a _full() version, but having that alone seems inconsistent.
Add a non-full version that mirrors the behaviour of gst_pad_link() vs
gst_pad_link_full().
Edward Hervey [Sun, 22 May 2016 11:10:06 +0000 (13:10 +0200)]
baseparse: Make sure DISCONT flags are properly propagated
If we drop a frame that contained a discontinuity, we must remember
that for the next frame that *will* be pushed downstream.
https://bugzilla.gnome.org/show_bug.cgi?id=766795
Tim-Philipp Müller [Sat, 4 Jun 2016 12:31:58 +0000 (13:31 +0100)]
deviceprovider: remove base_class_finalize function
It's not going to get called anyway.
https://bugzilla.gnome.org/show_bug.cgi?id=765540
Tim-Philipp Müller [Sat, 4 Jun 2016 12:11:55 +0000 (13:11 +0100)]
element: remove base_class_finalize_func which is never called
Won't be called for static types, so no point keeping it around.
https://bugzilla.gnome.org/show_bug.cgi?id=765540
Tim-Philipp Müller [Fri, 3 Jun 2016 12:55:44 +0000 (13:55 +0100)]
tracers: leaks: some micro-optimisations
- we know number of filter items is not going to change,
but compiler doesn't
- only do GST_IS_TRACER check for GObjects, not mini objects
- use non-type check cast macros in performance critical paths
Guillaume Desmottes [Tue, 10 May 2016 07:29:12 +0000 (09:29 +0200)]
tracers: add leaks tracer
https://bugzilla.gnome.org/show_bug.cgi?id=765052
Guillaume Desmottes [Mon, 30 May 2016 10:11:13 +0000 (12:11 +0200)]
Use MAY_BE_LEAKED_FLAG
This helps having "make check" passing with the leaks tracer enabled.
https://bugzilla.gnome.org/show_bug.cgi?id=766008
Guillaume Desmottes [Mon, 9 May 2016 14:31:36 +0000 (16:31 +0200)]
tracing: add hooks when objects or miniobjects are created and destroyed
https://bugzilla.gnome.org/show_bug.cgi?id=765052
Guillaume Desmottes [Mon, 9 May 2016 14:56:56 +0000 (16:56 +0200)]
gst_deinit: move down tracers cleaning
We want the tracer detecting leaks to be finalized as late as possible
to give the chance to other gst components to be properly cleaned first.
https://bugzilla.gnome.org/show_bug.cgi?id=765052
Guillaume Desmottes [Tue, 10 May 2016 09:06:42 +0000 (11:06 +0200)]
tests: plugin: remove feature refcount assert
This check fails if one, or more, tracers are loaded while running the
test. The new "leaks" tracer will be able to check for leaks anyway.
https://bugzilla.gnome.org/show_bug.cgi?id=765052
Guillaume Desmottes [Thu, 14 Apr 2016 09:25:43 +0000 (12:25 +0300)]
tracerrecord: allow G_TYPE_POINTER for field types
Tracers may want to display the address of an object.
https://bugzilla.gnome.org/show_bug.cgi?id=765052
Stefan Sauer [Mon, 30 May 2016 11:42:36 +0000 (13:42 +0200)]
gstobject: split up name tests
It is better to have separate tests:
1) the test name will tell what is broekn when the test fails
2) we still run the other tests when one assert fails
3) the tests are easier to understand
4) we don't rely on sie effect of previous actions
5) ...
Also ix the assertion message for the name checks (Gst -> fakeobject).
Stefan Sauer [Mon, 30 May 2016 09:06:01 +0000 (02:06 -0700)]
design: update design doc
Some of the api was renamed before the merge.
Stefan Sauer [Mon, 30 May 2016 09:04:18 +0000 (02:04 -0700)]
docs: xref the free function and expand allocation query docs
Add xrefs for how to parse pool details from an allocation query.
Nicolas Dufresne [Thu, 26 May 2016 18:43:10 +0000 (14:43 -0400)]
object: Add _set_name() test on parented object
This is not allowed, and set_name() should fail.
https://bugzilla.gnome.org/show_bug.cgi?id=766923
Nicolas Dufresne [Thu, 26 May 2016 18:41:38 +0000 (14:41 -0400)]
object: Check that name change are notified once
GObject allow calling g_object_notify() within set_property() and
won't notify it twice. As it was raised during review, add a unit test to
make sure.
https://bugzilla.gnome.org/show_bug.cgi?id=766923
Nicolas Dufresne [Thu, 26 May 2016 17:17:37 +0000 (13:17 -0400)]
object: Notify name change when using _set_name()
There was a 0.11 FIXME about notifying the name change or removing that
function. Clearly we can't remove this function, so let's notify it.
https://bugzilla.gnome.org/show_bug.cgi?id=766923
Edward Hervey [Wed, 25 May 2016 13:30:21 +0000 (15:30 +0200)]
gst_private: Fix gstconfig include
Since it's a generated header, we need to specify the gst subdir so
that it gets properly included in out-of-dir compilation
Tim-Philipp Müller [Wed, 25 May 2016 09:48:05 +0000 (10:48 +0100)]
gst: make sure to include gstconfig.h also in gst_private.h
For GST_EXPORT define and also things like GST_DISABLE_REGISTRY.
Hopefully fixes the following build failure on cerbero-cross-mingw32:
helpers/gst-plugin-scanner.c:50: undefined reference to `_imp___gst_disable_registry_cache'
Tim-Philipp Müller [Mon, 23 May 2016 23:40:27 +0000 (00:40 +0100)]
g-i: pass compiler env to g-ir-scanner
It's what introspection.mak does as well. Should
fix spurious build failures on gnome-continuous.
Tim-Philipp Müller [Mon, 23 May 2016 20:15:48 +0000 (21:15 +0100)]
gst: g-i: pass compiler with quotes
So CC="ccache gcc" works properly.
Ray Strode [Mon, 23 May 2016 20:06:53 +0000 (21:06 +0100)]
gst: attempt to fix/track-down mysterious gnome-continuous build failures
Tim-Philipp Müller [Mon, 23 May 2016 17:00:30 +0000 (18:00 +0100)]
iterator: only unset GValue if it was inited
And add some function guards. From GLib 2.48 on it is
allowed to pass an uninitialised GValue to g_value_unset().
https://bugzilla.gnome.org/show_bug.cgi?id=763762
Nirbheek Chauhan [Mon, 23 May 2016 13:14:01 +0000 (18:44 +0530)]
gst/parse: Also pass -DGST_EXPORTS here
This static library gets included directly into libgstreamer-1.0.so, so it needs
the same GST_EXPORTS definition as the rest of the code that's compiled into
that otherwise it will try to find the constants it uses from gstinfo via DLL
importing (__declspec(dllimport)).
Fixes https://ci.gstreamer.net/job/cerbero-cross-mingw32/4393/
Nirbheek Chauhan [Thu, 19 May 2016 18:54:54 +0000 (00:24 +0530)]
gstconfig.h: Always use dllexport/import on Windows
__declspec(dllexport/import) are supported by GCC and are needed for
properly generating code that fetches the values of constants from DLLs
built with __declspec(dllexport) which happens when anything using
GST_EXPORT is built with MSVC.
See: https://msdn.microsoft.com/en-us/library/619w14ds.aspx
Essentially, if you built gstreamer with MSVC and then tried to use
constants from it (such as GST_TYPE_CAPS) in a plugin, GCC would
retrieve the address of the value instead of the value itself.
Danilo Cesar Lemes de Paula [Thu, 19 May 2016 14:27:36 +0000 (11:27 -0300)]
scripts: make git-update.sh build with all cores available
The git-update.sh now builds with all cores available. In case of
failure it defaults to 1
The developer can still override this by setting -j to something else
in MAKEFLAGS, as stated by
299605dfe2f97fca330161ff01a392e1a85fe422.
https://bugzilla.gnome.org/show_bug.cgi?id=766666
Guillaume Desmottes [Wed, 4 May 2016 11:53:56 +0000 (13:53 +0200)]
(mini)object: add MAY_BE_LEAKED flag
https://bugzilla.gnome.org/show_bug.cgi?id=766008
Tim-Philipp Müller [Sun, 15 May 2016 13:15:51 +0000 (14:15 +0100)]
bin: emit deep-element-{added,removed} for children of newly-added/removed bin
https://bugzilla.gnome.org/show_bug.cgi?id=578933
Tim-Philipp Müller [Sat, 14 May 2016 09:55:53 +0000 (10:55 +0100)]
bin: add "deep-element-added" and "deep-element-removed" signals
This means applications and bin sub-classes can easily track when
a new child element is added to the pipeline sub-hierarchy or
removed.
Currently doesn't signal deep added/removed for elements inside
a bin if a bin is added/removed.
https://bugzilla.gnome.org/show_bug.cgi?id=578933
Sebastian Dröge [Sun, 15 May 2016 12:02:49 +0000 (15:02 +0300)]
pad: Improve IDLE probe docs
Make it explicit that the pad is only blocked while the callback is running,
and the pad will be unblocked again once the callback returned.
If BLOCK and IDLE behaviour is needed, both need to be used.
https://bugzilla.gnome.org/show_bug.cgi?id=766002
Sebastian Dröge [Sun, 15 May 2016 10:29:55 +0000 (13:29 +0300)]
docs: Update for git master
Sebastian Dröge [Fri, 11 Mar 2016 14:04:52 +0000 (16:04 +0200)]
queue: Only unblock upstream waiting for the query once downstream is finished
... when flushing and deactivating pads. Otherwise downstream might have a
query that was already unreffed by upstream, causing crashes or other
interesting effects.
https://bugzilla.gnome.org/show_bug.cgi?id=763496
Sebastian Dröge [Sat, 14 May 2016 14:31:51 +0000 (17:31 +0300)]
basesink/src: Post an error message if ::start() fails
The subclass should do that already, but just in case do it ourselves too as a
fallback. Without this, e.g. playbin will just wait forever if this fails
because it is triggered as part of an ASYNC state change.
Jan Schmidt [Sat, 14 May 2016 13:36:43 +0000 (23:36 +1000)]
bin: Fix EOS forwarding on PLAYING->PLAYING
When doing a transition from PLAYING to PLAYING, we will fail
to forward an EOS message on the bus, and noone else will ever
send it because there'll be no actual state changed message.
Allow EOS through directly in that case.
Edward Hervey [Fri, 13 May 2016 07:43:14 +0000 (09:43 +0200)]
pad: Don't drop LATENCY queries with default implementation
If there is only one pad in the internal pads, when folding for
LATENCY queries it will just drop the response if it's not live.
This is maybe not the proper fix, but it will just accept the first
peer responses, and if there are any other pads, it will only take
them into account if the response is live.
This *should* properly handle the aggregation/folding behaviour of
multiple live peer responses, while at the same time handling the
simple one-pad-only-and-forward use-case
https://bugzilla.gnome.org/show_bug.cgi?id=766360
Jan Schmidt [Wed, 6 Apr 2016 14:46:20 +0000 (00:46 +1000)]
Update the examples in the gst-launch-1.0 manpage
Replace elements that don't exist any more with ones
that do, and insert elements like mpegaudioparse where
they are needed.
https://bugzilla.gnome.org/show_bug.cgi?id=727105
Jan Schmidt [Fri, 1 Apr 2016 14:05:39 +0000 (01:05 +1100)]
debug: Instantiate GType when dumping debug categories.
A lot of debug categories are declared in element class_init
functions, which don't get run until the element is first created
(not just registered in the plugin load function). This means
that --gst-debug-help doesn't print out a lot of categories.
Creating an instance of each element from the element factory
makes them visible, at some extra cost - 2-3 times longer, which can
be a full second or two of extra waiting. Yikes!
https://bugzilla.gnome.org/show_bug.cgi?id=741001
Sebastian Dröge [Wed, 11 May 2016 12:06:39 +0000 (15:06 +0300)]
typefind: Only push a CAPS event downstream if the sinkpad is not in PULL mode
The other signal handlers of the type-found signal might have reactivated
typefind in PULL mode already, pushing a CAPS event at that point would cause
deadlocks and is in general unexpected by elements that are in PULL mode.
https://bugzilla.gnome.org/show_bug.cgi?id=765906
Wonchul Lee [Wed, 11 May 2016 03:16:09 +0000 (12:16 +0900)]
debugutils: fix warning on enum properties printing
https://bugzilla.gnome.org/show_bug.cgi?id=766251
Sebastian Dröge [Tue, 10 May 2016 12:01:42 +0000 (15:01 +0300)]
pad: Fix pad state when deactivating from one mode and then trying to activate another and failing
When activating a pad in PULL mode, it might already be in PUSH mode. We now
first try to deactivate it from PUSH mode and then try to activate it in PULL
mode. If the activation fails, we would set the pad to flushing and set it
back to its old mode. However the old mode is wrong, the pad is not in PUSH
mode anymore but in NONE mode.
This fixes e.g. typefind in decodebin reactivating PUSH/PULL mode if upstream
actually fails to go into PULL mode after first PUSHING data to typefind.
Anthony G. Basile [Sun, 13 Mar 2016 15:05:29 +0000 (11:05 -0400)]
libcompat.h: strsignal() should be not be decleared const
POSIX standards requires strsignal() to return a pointer to a char,
not a const pointer to a char. [1] On uClibc, and possibly other
libc's, that do not HAVE_DECL_STRSIGNAL, libcompat.h declares
const char *strsignal (int sig) which causes a type error.
[1] man 3 strsignal
https://bugzilla.gnome.org/show_bug.cgi?id=763567
Tim-Philipp Müller [Thu, 5 May 2016 17:50:05 +0000 (18:50 +0100)]
flowcombiner: add debug category
Not that it logs much.
Tim-Philipp Müller [Thu, 5 May 2016 17:02:21 +0000 (18:02 +0100)]
flowcombiner: fix docs for gst_flow_combiner_reset()
Guillaume Desmottes [Wed, 4 May 2016 08:04:30 +0000 (10:04 +0200)]
parse-launch: fix factory leak in test
We get 2 references one from gst_element_factory_find() and the other
from gst_plugin_feature_load().
https://bugzilla.gnome.org/show_bug.cgi?id=765976
Guillaume Desmottes [Wed, 4 May 2016 11:46:46 +0000 (13:46 +0200)]
miniobject: fix ref count leaks in tests
https://bugzilla.gnome.org/show_bug.cgi?id=765978
Guillaume Desmottes [Wed, 4 May 2016 07:53:32 +0000 (09:53 +0200)]
utils: fix element leak in find_common_root()
The root element was not unreffed when iterating over ancestors.
https://bugzilla.gnome.org/show_bug.cgi?id=765961
Guillaume Desmottes [Mon, 2 May 2016 15:35:29 +0000 (17:35 +0200)]
inspect: fix feature leak
https://bugzilla.gnome.org/show_bug.cgi?id=765957
Guillaume Desmottes [Tue, 3 May 2016 09:49:03 +0000 (11:49 +0200)]
uri: unref instead of using _gst_uri_free() directly
This confuses gst_tracing as we shortcut the mini object reference
system.
https://bugzilla.gnome.org/show_bug.cgi?id=765958
Guillaume Desmottes [Mon, 2 May 2016 07:32:47 +0000 (09:32 +0200)]
pipeline: fix bus leak in seek test
gst_bus_add_signal_watch_full() keeps a ref on the bus which should
be released using gst_bus_remove_signal_watch().
https://bugzilla.gnome.org/show_bug.cgi?id=765903
Guillaume Desmottes [Mon, 2 May 2016 07:29:31 +0000 (09:29 +0200)]
streamiddemux: fix list and event leaks in test
https://bugzilla.gnome.org/show_bug.cgi?id=765903
Guillaume Desmottes [Mon, 2 May 2016 06:43:04 +0000 (08:43 +0200)]
selector: fix pad leaks in tests
setup_input_pad() creates a new pad so we should unref it once we're
done.
https://bugzilla.gnome.org/show_bug.cgi?id=765903
Guillaume Desmottes [Mon, 2 May 2016 06:33:42 +0000 (08:33 +0200)]
filesrc: fix buffer leaks in tests
gst_check_setup_sink_pad() internally uses gst_check_chain_func() so we
should call gst_check_drop_buffers() when tearing down tests to free the
buffers which have been exchanged through the pipeline.
https://bugzilla.gnome.org/show_bug.cgi?id=765903
Guillaume Desmottes [Mon, 2 May 2016 06:29:00 +0000 (08:29 +0200)]
fakesink: fix pipeline leak in test
https://bugzilla.gnome.org/show_bug.cgi?id=765903
Guillaume Desmottes [Mon, 2 May 2016 05:35:45 +0000 (07:35 +0200)]
elementfactory: fix factory leak in test
https://bugzilla.gnome.org/show_bug.cgi?id=765903
Guillaume Desmottes [Mon, 2 May 2016 14:00:42 +0000 (16:00 +0200)]
deviceproviderfactory: fix factory leak
The code path when early returning was leaking the extra reference on
the factory.
https://bugzilla.gnome.org/show_bug.cgi?id=765904
Tim-Philipp Müller [Sun, 10 Apr 2016 10:42:18 +0000 (11:42 +0100)]
query: fix compiler warning
C4146: unary minus operator applied to unsigned type, result still unsigned
Guillaume Desmottes [Thu, 28 Apr 2016 11:59:51 +0000 (14:59 +0300)]
bin: fix leaks in unit tests
The test rely on bus being flushed when setting the bin to the NULL state which
is not the case. This apply only when setting the pipeline state to
NULL.
https://bugzilla.gnome.org/show_bug.cgi?id=765720
Guillaume Desmottes [Thu, 28 Apr 2016 11:56:18 +0000 (14:56 +0300)]
pad: fix buffer leaks in tests
The buffer received through the pad have to be unreffed using
gst_check_drop_buffers().
https://bugzilla.gnome.org/show_bug.cgi?id=765719
Tim-Philipp Müller [Sat, 30 Apr 2016 13:15:08 +0000 (14:15 +0100)]
Fix some nonsensical g-i annotations
Matej Knopp [Fri, 29 Apr 2016 12:55:02 +0000 (14:55 +0200)]
multiqueue: Ignore time when determining whether sparse stream limits have been reached
Basically, sq->max_size.visible is never increased for sparse streams in
overruncb when empty queue has been found;
If the queue is sparse it just skip the entire logic determining whether
max_size.visible should be increased, deadlocking the demuxer.
What should be done instead is that when determining if limits have been
reached, to ignore time for sparse streams, as the buffer may be far in the
future.
https://bugzilla.gnome.org/show_bug.cgi?id=765736
Sebastian Dröge [Sun, 28 Feb 2016 10:06:40 +0000 (12:06 +0200)]
element: Add gst_element_call_async()
This calls a function from another thread, asynchronously. This is to be
used for cases when a state change has to be performed from a streaming
thread, directly via gst_element_set_state() or indirectly e.g. via SEEK
events.
Calling those functions directly from the streaming thread will cause
deadlocks in many situations, as they might involve waiting for the
streaming thread to shut down from this very streaming thread.
This is mostly a convenience function around a GThreadPool and is for example
used by GstBin to continue asynchronous state changes.
https://bugzilla.gnome.org/show_bug.cgi?id=760532
Sebastian Dröge [Wed, 27 Apr 2016 06:21:31 +0000 (09:21 +0300)]
manual: Fix buffer memory leak in appsrc example
g_signal_emit_by_name() is not like gst_app_src_push_buffer() due to reference
counting limitations of signals, it does *not* take ownership of the buffer.
Guillaume Desmottes [Tue, 26 Apr 2016 13:02:14 +0000 (16:02 +0300)]
caps: add cleanup priv function
Those are allocated in _priv_gst_caps_initialize() so it makes
sense to have a symetric cleanup functions called by gst_deinit().
https://bugzilla.gnome.org/show_bug.cgi?id=765606
Guillaume Desmottes [Tue, 26 Apr 2016 13:02:14 +0000 (16:02 +0300)]
capsfeature: add cleanup priv function
Those are allocated in _priv_gst_caps_features_initialize() so it makes
sense to have a symetric cleanup functions called by gst_deinit().
https://bugzilla.gnome.org/show_bug.cgi?id=765606
Alex Ashley [Thu, 21 Apr 2016 13:45:39 +0000 (14:45 +0100)]
testclock: add clock-type property
To allow the GstTestClock to be used as a GstSystemClock, it is
useful to implement the clock-type property that GstSystemClock
provides. This allows GstTestClock to be used as the system clock
with code that expects a GstSystemClock.
https://bugzilla.gnome.org/show_bug.cgi?id=762147
Sebastian Dröge [Thu, 21 Apr 2016 10:49:32 +0000 (13:49 +0300)]
datetime: Sanity check year, month and day when parsing ISO-8601 strings
Passing years > 9999, months > 12 or days > 31 to gst_date_time_new() will
cause an assertion and generally does not make much sense. Instead consider it
as a parsing error like hours > 24 and return NULL.