platform/upstream/gstreamer.git
8 years agodocs: cleanup -unused.txt report for libs
Stefan Sauer [Wed, 6 Jan 2016 17:14:06 +0000 (18:14 +0100)]
docs: cleanup -unused.txt report for libs

The IGNORE_H_FILES can only contain files or dirs.

8 years agodocs: add more core api to the right sections
Stefan Sauer [Wed, 6 Jan 2016 16:58:11 +0000 (17:58 +0100)]
docs: add more core api to the right sections

Add new and documented api reported in -unused.txt to -section.txt.

8 years agodocs: exclude more header from doc-scan
Stefan Sauer [Wed, 6 Jan 2016 16:54:44 +0000 (17:54 +0100)]
docs: exclude more header from doc-scan

Exclude gst/printf/*.h and a few generated .h files from the api-scan. This
makes -unused.txt report file from gtkdoc useful again.

8 years agoclock: adjust/unadjust_with_calibration() have a clock parameter but it's useless
Sebastian Dröge [Wed, 6 Jan 2016 14:21:40 +0000 (16:21 +0200)]
clock: adjust/unadjust_with_calibration() have a clock parameter but it's useless

Document this, for 2.0 we should just remove that parameter.

8 years agoclock: Add gst_clock_unadjust_with_calibration()
Sebastian Dröge [Wed, 6 Jan 2016 14:19:22 +0000 (16:19 +0200)]
clock: Add gst_clock_unadjust_with_calibration()

We already have gst_clock_adjust_with_calibration() and
gst_clock_unadjust_unlocked(), having the other variant is useful.

8 years agodocs: add new pad-event function to the docs
Stefan Sauer [Wed, 6 Jan 2016 12:33:39 +0000 (13:33 +0100)]
docs: add new pad-event function to the docs

8 years agodocs: hide internal tracer api from docs
Stefan Sauer [Wed, 6 Jan 2016 12:26:27 +0000 (13:26 +0100)]
docs: hide internal tracer api from docs

Also address warnigns regarding the unstable tracer api.

8 years agodocs: add the tracer to the docs
Stefan Sauer [Wed, 6 Jan 2016 11:47:26 +0000 (12:47 +0100)]
docs: add the tracer to the docs

Add GstTracer and GstTracerFactory to the core docs.

8 years agodocs: rename the tracer doc to part since it is now merged
Stefan Sauer [Wed, 6 Jan 2016 10:52:53 +0000 (11:52 +0100)]
docs: rename the tracer doc to part since it is now merged

8 years agotracerutils: move header to noinst section
Stefan Sauer [Wed, 6 Jan 2016 10:35:46 +0000 (11:35 +0100)]
tracerutils: move header to noinst section

This is internal code, that is only to be used in core.

8 years agoconfigure: add a new option to disable the tracer hooks
Stefan Sauer [Wed, 6 Jan 2016 10:31:16 +0000 (11:31 +0100)]
configure: add a new option to disable the tracer hooks

This was previously done via {enable,disable}-gst-debug. Since both subsystems
are independent having separate options is better.

8 years agoclock: Fix typo
Sebastian Dröge [Tue, 5 Jan 2016 14:44:53 +0000 (16:44 +0200)]
clock: Fix typo

clocked -> clock

8 years agonetclientclock: Disconnect the "synced" signal handler from the internal clock
Sebastian Dröge [Tue, 5 Jan 2016 12:59:34 +0000 (14:59 +0200)]
netclientclock: Disconnect the "synced" signal handler from the internal clock

Not from the external one.

8 years agocontroller: rename new cubic interpolation mode
Stefan Sauer [Tue, 5 Jan 2016 12:57:12 +0000 (13:57 +0100)]
controller: rename new cubic interpolation mode

Don't abbreviate to 'mono' and use 'monotonic' instead.

8 years agoclock: Don't allow setting an unsynced clock as master
Sebastian Dröge [Tue, 5 Jan 2016 12:23:26 +0000 (14:23 +0200)]
clock: Don't allow setting an unsynced clock as master

8 years agoclock: Don't try to slave unsynced clocks
Sebastian Dröge [Tue, 5 Jan 2016 12:21:58 +0000 (14:21 +0200)]
clock: Don't try to slave unsynced clocks

They will return useless values from get_time().

8 years agontp: The clock inherits from GstNetClientClock, not just GstSystemClock
Sebastian Dröge [Tue, 5 Jan 2016 11:41:08 +0000 (13:41 +0200)]
ntp: The clock inherits from GstNetClientClock, not just GstSystemClock

8 years agonetclientclock: Destroy a cached clock 60 seconds after its last use
Sebastian Dröge [Mon, 4 Jan 2016 15:18:07 +0000 (17:18 +0200)]
netclientclock: Destroy a cached clock 60 seconds after its last use

There's not much lost by having the clock idle around a bit longer but it will
potentially allow anybody wanting to use the same clock server again to sync
much faster.

8 years agonetclientclock: Only ever run one clock against a specific server
Sebastian Dröge [Mon, 4 Jan 2016 14:31:23 +0000 (16:31 +0200)]
netclientclock: Only ever run one clock against a specific server

If multiple net/NTP clocks are created for the same server, reuse the same
internal clock for all of them. This makes sure that we don't flood the server
with too many requests and also possibly allows faster synchronization if
there already was an earlier synchronized clock when creating a new one.

8 years agonettimeprovider: Use GInitable instead of having a new() function that can return...
Sebastian Dröge [Mon, 4 Jan 2016 08:39:27 +0000 (10:39 +0200)]
nettimeprovider: Use GInitable instead of having a new() function that can return NULL

Bindings don't like that much and as we're using GIO here anyway we can as
well use GInitable for possibly failing initialization.

8 years agonettimeprovider: Mark address, port and clock properties CONSTRUCT_ONLY
Sebastian Dröge [Sun, 3 Jan 2016 12:06:16 +0000 (14:06 +0200)]
nettimeprovider: Mark address, port and clock properties CONSTRUCT_ONLY

They can't sensibly be changed after construction.

8 years agoparse_launch: make nicer log messages
Stefan Sauer [Sun, 3 Jan 2016 21:55:48 +0000 (22:55 +0100)]
parse_launch: make nicer log messages

Add two macros to build nicer element/pad name strings. The macros avoid
printing "(NULL)" and print the element type in addition to the name.

8 years agoparse-launch: warn when still waiting to plug sub-pipelines after no-more-pads
Stefan Sauer [Sat, 2 Jan 2016 18:42:17 +0000 (19:42 +0100)]
parse-launch: warn when still waiting to plug sub-pipelines after no-more-pads

The parse-launch API automagically handles dynamic pads and performs delayed
linking as needed, without any feedback about whether the linking succeeded or
not however. If a delayed dynamic link can't be completed for whatever reason,
parse-launch will simply wait in case a suitable pad appears later. This may
never happen though, in which case the pipeline may just hang forever.

Try to improve this by connecting to the "no-more-pads" signal of any element
with dynamic pads and posting a warning message for the related outstanding
dynamic links when "no-more-pads" is emitted.

Fixes #760003

8 years agodocs: fix some warnings and add some since markers
Tim-Philipp Müller [Thu, 31 Dec 2015 19:27:12 +0000 (19:27 +0000)]
docs: fix some warnings and add some since markers

8 years agotracing: add some pointers about memory tracing
Stefan Sauer [Sun, 3 Jan 2016 10:39:24 +0000 (11:39 +0100)]
tracing: add some pointers about memory tracing

8 years agogrammar.y: remove trailing whitespace
Stefan Sauer [Sun, 3 Jan 2016 10:37:57 +0000 (11:37 +0100)]
grammar.y: remove trailing whitespace

8 years agotests: value: test buffer serialisation/deserialisation more thoroughly
Tim-Philipp Müller [Thu, 31 Dec 2015 00:04:09 +0000 (00:04 +0000)]
tests: value: test buffer serialisation/deserialisation more thoroughly

Tests data/strings as well, not just that we received
something non-NULL back.

8 years agogst: fix typo in comment
Tim-Philipp Müller [Thu, 31 Dec 2015 10:57:37 +0000 (10:57 +0000)]
gst: fix typo in comment

8 years agonetclientclock: Implement resolval of hostnames
Sebastian Dröge [Wed, 30 Dec 2015 14:57:29 +0000 (16:57 +0200)]
netclientclock: Implement resolval of hostnames

Just allowing IPs here is not ideal and implementing DNS resolval is easy.

8 years agoptpclock: Add read-only properties to get the master and grandmaster clock ids
Sebastian Dröge [Tue, 29 Dec 2015 14:28:02 +0000 (16:28 +0200)]
ptpclock: Add read-only properties to get the master and grandmaster clock ids

8 years agocaps: Add (transfer full) annotation to simplify() and subtract() return value
Sebastian Dröge [Tue, 29 Dec 2015 12:32:47 +0000 (14:32 +0200)]
caps: Add (transfer full) annotation to simplify() and subtract() return value

https://bugzilla.gnome.org/show_bug.cgi?id=759948

8 years agocaps: add 'transfer full' annotation to caps returned by interserction functions
Aurélien Zanelli [Tue, 29 Dec 2015 10:06:39 +0000 (11:06 +0100)]
caps: add 'transfer full' annotation to caps returned by interserction functions

To make clear caller is responsible to unref them.

https://bugzilla.gnome.org/show_bug.cgi?id=759948

8 years agonet: Add NTP and PTP clock types to the docs
Sebastian Dröge [Mon, 28 Dec 2015 17:41:38 +0000 (19:41 +0200)]
net: Add NTP and PTP clock types to the docs

This gives us the property documentation for example.

8 years agocheck: don't memcmp twice
Stefan Sauer [Sun, 27 Dec 2015 18:42:37 +0000 (19:42 +0100)]
check: don't memcmp twice

Simply call fail() in the condition after the first memcmp.

8 years agoBack to development
Sebastian Dröge [Thu, 24 Dec 2015 14:27:12 +0000 (15:27 +0100)]
Back to development

8 years agoRelease 1.7.1
Sebastian Dröge [Thu, 24 Dec 2015 12:58:52 +0000 (13:58 +0100)]
Release 1.7.1

8 years agoUpdate .po files
Sebastian Dröge [Thu, 24 Dec 2015 11:50:33 +0000 (12:50 +0100)]
Update .po files

8 years agopo: Update translations
Sebastian Dröge [Thu, 24 Dec 2015 11:21:21 +0000 (12:21 +0100)]
po: Update translations

8 years agoconfigure: Make -Bsymbolic check work with clang.
Koop Mast [Sun, 20 Dec 2015 23:43:49 +0000 (00:43 +0100)]
configure: Make -Bsymbolic check work with clang.

Update the -Bsymbolic check with the version glib has. This version
works with clang.

https://bugzilla.gnome.org/show_bug.cgi?id=759713

8 years agodocs: update to git
Sebastian Dröge [Wed, 16 Dec 2015 08:35:18 +0000 (09:35 +0100)]
docs: update to git

8 years agocore: Add g_autoptr() support to all types
Xavier Claessens [Tue, 10 Nov 2015 17:38:59 +0000 (12:38 -0500)]
core: Add g_autoptr() support to all types

https://bugzilla.gnome.org/show_bug.cgi?id=754464

8 years agotee: Check if parsing the name template with sscanf() was successful
Sebastian Dröge [Mon, 14 Dec 2015 12:06:57 +0000 (13:06 +0100)]
tee: Check if parsing the name template with sscanf() was successful

If not, go back to the automatic pad numbering.

CID 1195129

8 years agoqueue/multiqueue: Don't special-case CAPS events in the event handlers
Sebastian Dröge [Mon, 14 Dec 2015 10:20:43 +0000 (11:20 +0100)]
queue/multiqueue: Don't special-case CAPS events in the event handlers

For CAPS events we will never ever have a FALSE return value here, so just
remove the dead code instead of causing future confusion.

8 years agoRevert "queue: Illegal memory access of sink event"
Sebastian Dröge [Mon, 14 Dec 2015 10:16:50 +0000 (11:16 +0100)]
Revert "queue: Illegal memory access of sink event"

This reverts commit 78614c505a2a761cb4dcb7f4e5f3e9f97c9a8e88.

The code it was fixing does not have any effect anyway and will be removed in
the next commit.

8 years agoqueue: Illegal memory access of sink event
Vineeth TM [Mon, 14 Dec 2015 01:32:14 +0000 (10:32 +0900)]
queue: Illegal memory access of sink event

Once event is pushed to pad, then queue should not access the event.
This is leading to invalid read valgrind errors

https://bugzilla.gnome.org/show_bug.cgi?id=759430

8 years agoelement: Unref event if GstElement::send_event() is not implemented
Sebastian Dröge [Mon, 14 Dec 2015 09:10:04 +0000 (10:10 +0100)]
element: Unref event if GstElement::send_event() is not implemented

Otherwise we'll take ownership of the event only if it's implemented, and
leak the event in all other situations.

8 years agomanual: Fix dynamic pipeline example
Sebastian Dröge [Mon, 14 Dec 2015 09:04:19 +0000 (10:04 +0100)]
manual: Fix dynamic pipeline example

Use GST_PAD_PROBE_PASS to pass through all events other than EOS instead of
blocking on the first non-EOS event forever. Also fix a typo in a comment in
that function.

Thanks to David Jaggard for reporting this on the mailing list.

8 years agodocs: typo in the location of make_element tool
Luis de Bethencourt [Sun, 13 Dec 2015 00:37:39 +0000 (00:37 +0000)]
docs:  typo in the location of make_element tool

https://bugzilla.gnome.org/show_bug.cgi?id=759352

8 years agodownloadbuffer: drop unneeded macros for G_OS_WIN32
Reynaldo H. Verdejo Pinochet [Sat, 12 Dec 2015 09:13:59 +0000 (01:13 -0800)]
downloadbuffer: drop unneeded macros for G_OS_WIN32

8 years agofdsrc: drop unneeded macros for G_OS_WIN32
Reynaldo H. Verdejo Pinochet [Sat, 12 Dec 2015 09:09:20 +0000 (01:09 -0800)]
fdsrc: drop unneeded macros for G_OS_WIN32

8 years agofdsrc: enable large file support in Android
Reynaldo H. Verdejo Pinochet [Sat, 12 Dec 2015 09:06:43 +0000 (01:06 -0800)]
fdsrc: enable large file support in Android

https://bugzilla.gnome.org/show_bug.cgi?id=758980

8 years agofdsink: enable large file support in Android
Reynaldo H. Verdejo Pinochet [Sat, 12 Dec 2015 06:14:32 +0000 (22:14 -0800)]
fdsink: enable large file support in Android

https://bugzilla.gnome.org/show_bug.cgi?id=758980

8 years agoqueue2: fix some typos
Reynaldo H. Verdejo Pinochet [Sat, 12 Dec 2015 04:52:57 +0000 (20:52 -0800)]
queue2: fix some typos

8 years agoqueue2: enable large file support on Android
Reynaldo H. Verdejo Pinochet [Sat, 12 Dec 2015 04:42:05 +0000 (20:42 -0800)]
queue2: enable large file support on Android

https://bugzilla.gnome.org/show_bug.cgi?id=758980

8 years agodownloadbuffer: fix some typos
Reynaldo H. Verdejo Pinochet [Sat, 12 Dec 2015 03:11:01 +0000 (19:11 -0800)]
downloadbuffer: fix some typos

8 years agodownloadbuffer: enable large file support on Android
Reynaldo H. Verdejo Pinochet [Sat, 12 Dec 2015 02:59:32 +0000 (18:59 -0800)]
downloadbuffer: enable large file support on Android

https://bugzilla.gnome.org/show_bug.cgi?id=758980

8 years agosparsefile: drop bogus reference to file descriptor
Reynaldo H. Verdejo Pinochet [Fri, 11 Dec 2015 22:36:29 +0000 (14:36 -0800)]
sparsefile: drop bogus reference to file descriptor

+fix typo on return value comment

8 years agosparsefile: enable large file support on Android
Reynaldo H. Verdejo Pinochet [Fri, 11 Dec 2015 22:07:27 +0000 (14:07 -0800)]
sparsefile: enable large file support on Android

https://bugzilla.gnome.org/show_bug.cgi?id=758980

8 years agoelement: unref message in _post_message when there is no implementation
Aurélien Zanelli [Thu, 10 Dec 2015 13:32:27 +0000 (14:32 +0100)]
element: unref message in _post_message when there is no implementation

'gst_element_post_message' takes the ownership of the message, so it
shall unref it when there is no post_message implementation. Otherwise
message is leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=759300

8 years agoelement: Don't hold state lock all the time while sending an event
Sebastian Dröge [Thu, 10 Dec 2015 09:35:05 +0000 (11:35 +0200)]
element: Don't hold state lock all the time while sending an event

This lock seems to exist only to prevent elements from changing states while
events are being processed. However events are going to be processed
nonetheless in those elements if sent directly via pads, so protection must
already be implemented inside the elements for event handling if it is needed.

As such having the lock here is not very useful and is actually causing
various deadlocks in different situations as described in
https://bugzilla.gnome.org/show_bug.cgi?id=744040

8 years agofilesrc: enable large file support in Android
Reynaldo H. Verdejo Pinochet [Tue, 8 Dec 2015 04:27:45 +0000 (20:27 -0800)]
filesrc: enable large file support in Android

https://bugzilla.gnome.org/show_bug.cgi?id=758980

8 years agofilesink: enable large file support on Android
Reynaldo H. Verdejo Pinochet [Thu, 3 Dec 2015 23:04:32 +0000 (15:04 -0800)]
filesink: enable large file support on Android

https://bugzilla.gnome.org/show_bug.cgi?id=758980

8 years agofilesink: indentation fixes
Reynaldo H. Verdejo Pinochet [Thu, 3 Dec 2015 23:01:27 +0000 (15:01 -0800)]
filesink: indentation fixes

8 years agomultiqueue: Don't use random segment.position from upstream
Edward Hervey [Wed, 9 Dec 2015 16:40:02 +0000 (17:40 +0100)]
multiqueue: Don't use random segment.position from upstream

segment.position is meant for internal usage only, but the various
GST_EVENT_SEGMENT creationg/parsing functions won't clear that field.

Use the appropriate segment boundary as an initial value instead

8 years agobin: Post a LATENCY message with async-handling=TRUE if the PLAYING state is reached
Sebastian Dröge [Mon, 7 Dec 2015 15:25:02 +0000 (17:25 +0200)]
bin: Post a LATENCY message with async-handling=TRUE if the PLAYING state is reached

Otherwise each bin might have a different latency in the end, causing
synchronization problems.

The bin will still first handle latency internally as before, but gives the
overall pipeline the opportunity to update the latency of the whole pipeline
afterwards.

https://bugzilla.gnome.org/show_bug.cgi?id=759125

8 years agobaseparse: post tag list when avg bitrate changes at least 2%
Athanasios Oikonomou [Mon, 7 Dec 2015 16:20:35 +0000 (18:20 +0200)]
baseparse: post tag list when avg bitrate changes at least 2%

Watching videos with variant bitrate is common to have delta
more than 10 kbps, resulting in tag list spam.

Instead of relying on fixed 10 kpbs delta, it is better to
calculale the difference in percentage and update tag list
only when bitrate changes more than 2%.

https://bugzilla.gnome.org/show_bug.cgi?id=759055

8 years agoAutomatic update of common submodule
Nicolas Dufresne [Mon, 7 Dec 2015 14:08:01 +0000 (09:08 -0500)]
Automatic update of common submodule

From b319909 to 86e4663

8 years agoelement: Check for an activated pad before adding, not a non-flushing one
Sebastian Dröge [Mon, 7 Dec 2015 10:59:39 +0000 (12:59 +0200)]
element: Check for an activated pad before adding, not a non-flushing one

The pad could be activated but flushing because of a FLUSH_START event. That's
not what we're looking for here, we want to check for activated pads.

https://bugzilla.gnome.org/show_bug.cgi?id=758928

8 years agotests: funnel: remove state change from stress tests
Thiago Santos [Thu, 19 Nov 2015 18:33:06 +0000 (15:33 -0300)]
tests: funnel: remove state change from stress tests

Changing states up and down while buffers are being pushed is not
a valid use case. If a pad is deactivated and reactivated during
a buffer push it is racy with the check of pushed sticky events
and the actual chainfunction call. As it might call the chain
without noticing the peer pad lost its previous sticky events.

https://bugzilla.gnome.org/show_bug.cgi?id=758340

8 years agogst-launch: Fix process return value on error
Nicolas Dufresne [Fri, 4 Dec 2015 15:22:56 +0000 (10:22 -0500)]
gst-launch: Fix process return value on error

In case of a run-time error message, the process return value was left
unset. This would lead to error not being caught at shell level.

https://bugzilla.gnome.org/show_bug.cgi?id=759019

8 years agoRevert "tools: gst-launch: return non-0 exit code on async error"
Nicolas Dufresne [Fri, 4 Dec 2015 15:45:25 +0000 (10:45 -0500)]
Revert "tools: gst-launch: return non-0 exit code on async error"

This reverts commit 2ee4cba2485d7f1646d48e4559426aed4ba99c85.

8 years agotools: gst-launch: return non-0 exit code on async error
Tim-Philipp Müller [Fri, 4 Dec 2015 15:09:39 +0000 (15:09 +0000)]
tools: gst-launch: return non-0 exit code on async error

When an error happens in playing state, still return a
non-0 exit code.

https://bugzilla.gnome.org/show_bug.cgi?id=759019

8 years agohelpers: really fix install race
Ross Burton [Fri, 4 Dec 2015 14:39:29 +0000 (14:39 +0000)]
helpers: really fix install race

My previous fix for #758029 wasn't quite right and simply made the race rarer.
Some of the files are installed by install-exec and others by install-exec, so
the hooks need to be split too.

https://bugzilla.gnome.org/show_bug.cgi?id=758029

8 years agoquery: fix docs
Wim Taymans [Fri, 4 Dec 2015 10:56:45 +0000 (11:56 +0100)]
query: fix docs

The allocation query has parameters with the meta API, not flags.

8 years agoDrop usage of deprecated g-ir-scanner --strip-prefix flag
Reynaldo H. Verdejo Pinochet [Wed, 2 Dec 2015 23:02:25 +0000 (15:02 -0800)]
Drop usage of deprecated g-ir-scanner --strip-prefix flag

8 years agomultiqueue: Fix set/get property
Edward Hervey [Wed, 2 Dec 2015 15:28:23 +0000 (16:28 +0100)]
multiqueue: Fix set/get property

Blame it on the rebasing :)

8 years agopad: Implement GstPadEventFullFunction
Edward Hervey [Thu, 12 Nov 2015 16:15:37 +0000 (17:15 +0100)]
pad: Implement GstPadEventFullFunction

API: GstPadEventFullFunction

Returns a GstFlowReturn, allows asynchronous elements to properly
propagate flow returns

https://bugzilla.gnome.org/show_bug.cgi?id=757821

8 years agomultiqueue: Use signed clock values for running time calculation
Edward Hervey [Mon, 30 Nov 2015 16:09:43 +0000 (17:09 +0100)]
multiqueue: Use signed clock values for running time calculation

This improves the accuracy of queue levels and when to push buffers
for buffers falling outside of the segment

https://bugzilla.gnome.org/show_bug.cgi?id=757193

8 years agomultiqueue: Add an extra cache time for unlinked streams
Edward Hervey [Fri, 27 Nov 2015 08:45:29 +0000 (09:45 +0100)]
multiqueue: Add an extra cache time for unlinked streams

When synchronizing the output by time, there are some use-cases (like
allowing gapless playback downstream) where we want the unlinked streams
to stay slightly behind the linked streams.

The "unlinked-cache-time" property allows the user to specify by how
much time the unlinked streams should wait before pushing again.

8 years agomultiqueue: Optimize multiqueue sizes based on interleave
Edward Hervey [Mon, 26 Oct 2015 07:06:01 +0000 (08:06 +0100)]
multiqueue: Optimize multiqueue sizes based on interleave

Multiqueue should only be used to cope with:
* decoupling upstream and dowstream threading (i.e. having separate threads
  for elementary streams).
* Ensuring individual queues have enough space to cope with upstream interleave
  (distance in stream time between co-located samples). This is to guarantee
  that we have enough room in each individual queues to provide new data in
  each, without being blocked.
* Limit the queue sizes to that interleave distance (and an extra minimal
  buffering size). This is to ensure we don't consume too much memory.

Based on that, multiqueue now continuously calculates the input interleave
(per incoming streaming thread). Based on that, it calculates a target
interleave (currently 1.5 x real_interleave + 250ms padding).

If the target interleave is greater than the current max_size.time, it will
update it accordingly (to allow enough margin to not block).
If the target interleave goes down by more than 50%, we re-adjust it once
we know we have gone past a safe distance (2 x current max_size.time).

This mode can only be used for incoming streams that are guaranteed to be
properly timestamped.

Furthermore, we ignore sparse streams when calculating interleave and maximum
size of queues.

For the simplest of use-cases (single stream), multiqueue acts as a single
queue with a time limit of 250ms.
If there are multiple inputs, but each come from a different streaming thread,
the maximum time limit will also end up being 250ms.

On regular files (more than one input stream from the same upstream streaming
thread), it can reduce the total memory used as much as 10x, ending up with
max_size.time around 500ms.

Due to the adaptive nature, it can also cope with changing interleave (which
can happen commonly on some files at startup/pre-roll time)

8 years agomultiqueue: use new stream-start event sparse flag to avoid overreading subtitles
Vincent Penquerc'h [Tue, 8 Jan 2013 21:16:42 +0000 (21:16 +0000)]
multiqueue: use new stream-start event sparse flag to avoid overreading subtitles

This will mean a much lower delay before a subtitles track changes take
effect. Also avoids excessive memory usage in many cases.

This will also consider sparse streams as (individually) never full, so
as to avoid blocking all playback due to one sparse stream.

https://bugzilla.gnome.org/show_bug.cgi?id=600648

8 years agomultiqueue: Fix high_time computation
Edward Hervey [Fri, 30 Oct 2015 09:22:20 +0000 (10:22 +0100)]
multiqueue: Fix high_time computation

* Avoid the computation completely if we know we don't need it (not in
  sync time mode)
* Make sure we don't override highest time with GST_CLOCK_TIME_NONE on
  unlinked pads
* Ensure the high_time gets properly updated if all pads are not linked
* Fix the comparision in the loop whether the target high time is the same
  as the current time
* Split wake_up_next_non_linked method to avoid useless calculation

https://bugzilla.gnome.org/show_bug.cgi?id=757353

8 years agoqueue2: Don't report 0% unless empty
Jan Schmidt [Thu, 5 Nov 2015 16:02:42 +0000 (03:02 +1100)]
queue2: Don't report 0% unless empty

When preparing a buffering message, don't report 0% if there
is any bytes left in the queue at all. We still have something
to push, so don't tell the app to start buffering - maybe
we'll get more data before actually running dry.

8 years agogstclock: Fix GST_STIME_ARGS
Edward Hervey [Mon, 30 Nov 2015 16:11:33 +0000 (17:11 +0100)]
gstclock: Fix GST_STIME_ARGS

It wasn't properly handling GST_CLOCK_STIME_NONE and always use the
sign marker (+/-) to make it easier to identify signed values in
logs

https://bugzilla.gnome.org/show_bug.cgi?id=758870

8 years agocontrolsource: Annotate get_value[_array] as (method)
Thibault Saunier [Mon, 30 Nov 2015 22:08:50 +0000 (23:08 +0100)]
controlsource: Annotate get_value[_array] as (method)

As the names clash with gst_object_get_value[_array]

https://bugzilla.gnome.org/show_bug.cgi?id=756950

8 years agoplugin: Add prefix support to dependencies
Nicolas Dufresne [Fri, 13 Nov 2015 22:32:57 +0000 (17:32 -0500)]
plugin: Add prefix support to dependencies

This adds a new flags, GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_PREFIX,
which allow using the names as prefix for plugin depencies.

https://bugzilla.gnome.org/show_bug.cgi?id=758083

8 years agoplugin: Allow device nodes as dependency
Nicolas Dufresne [Fri, 13 Nov 2015 21:32:31 +0000 (16:32 -0500)]
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

8 years agoplugin: Don't do lossy shift on hash
Nicolas Dufresne [Fri, 13 Nov 2015 21:20:42 +0000 (16:20 -0500)]
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

8 years agoinfo: fix compiler warning with -Wpedantic and gcc 5
Lukasz Forynski [Mon, 23 Nov 2015 21:40:34 +0000 (21:40 +0000)]
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

8 years agocontroller: fix annotation to make g-ir-scanner happy
Tim-Philipp Müller [Fri, 20 Nov 2015 19:45:39 +0000 (19:45 +0000)]
controller: fix annotation to make g-ir-scanner happy

gstinterpolationcontrolsource.h:59: Warning: GstController: missing ":" at column 51:
 * @GST_INTERPOLATION_MODE_CUBIC_MONO: (Since 1.8) monotonic cubic interpolation, will not
gstinterpolationcontrolsource.h:59: Warning: GstController: unknown annotation: since

8 years agotags: add GST_TAG_PRIVATE_DATA
Ravi Kiran K N [Mon, 29 Sep 2014 08:33:13 +0000 (14:03 +0530)]
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

8 years agoRevert "baseparse: do not overwrite header buffer timestamps"
Thiago Santos [Thu, 19 Nov 2015 03:51:44 +0000 (00:51 -0300)]
Revert "baseparse: do not overwrite header buffer timestamps"

This reverts commit 2c475a035543efc0202ecdc52070295a421ed4b4.

This causes issues with h264parse. It breaks timestamps as
there are headers in the middle of the stream and this patch
makes the timestamps for those differ from the ones that
are adjusted, creating a discontinuity and leading to sync
issues.

8 years agoRevert "baseparse: simplify code a bit"
Thiago Santos [Tue, 17 Nov 2015 21:47:48 +0000 (18:47 -0300)]
Revert "baseparse: simplify code a bit"

This reverts commit 3984f7159a72c2eebe01905ee53716e3b2abcb30.

8 years agoqueue2: don't print criticals when receiving custom events in ring buffer mode
Tim-Philipp Müller [Wed, 18 Nov 2015 11:46:45 +0000 (11:46 +0000)]
queue2: don't print criticals when receiving custom events in ring buffer mode

Downgrade from g_warning to GST_WARNING log message.

https://bugzilla.gnome.org/show_bug.cgi?id=758276

8 years agoptp-helper: Disable multicast loopback
Sebastian Dröge [Wed, 18 Nov 2015 07:21:23 +0000 (09:21 +0200)]
ptp-helper: Disable multicast loopback

We're not really interested in our own packets and ignore them anyway.

8 years agodebugutils: Fix string memory leak
Vineeth TM [Tue, 17 Nov 2015 00:17:58 +0000 (09:17 +0900)]
debugutils: Fix string memory leak

https://bugzilla.gnome.org/show_bug.cgi?id=758207

8 years agobaseparse: simplify code a bit
Thiago Santos [Mon, 16 Nov 2015 11:22:14 +0000 (08:22 -0300)]
baseparse: simplify code a bit

Avoid repeated checks for testing if a buffer is a header

8 years agocollectpads: handle buffer with dts-only when mapping to running time
Thiago Santos [Fri, 13 Nov 2015 23:44:57 +0000 (20:44 -0300)]
collectpads: handle buffer with dts-only when mapping to running time

Otherwise the buffer was left with the original values and later would
be compared with other buffers that were converted to runninn time,
leading to bad interleaving of multiple streams.

https://bugzilla.gnome.org/show_bug.cgi?id=757961

8 years agobaseparse: do not overwrite header buffer timestamps
Thiago Santos [Fri, 13 Nov 2015 19:31:06 +0000 (16:31 -0300)]
baseparse: do not overwrite header buffer timestamps

baseparse tries to preserve timestamps from upstream if
it is running on a time segment and write that to
output buffers. It assumes the first DTS is going to be
segment.start and sets that to the first buffers. In case
the buffer is a header buffer, it had no timestamps and
will have only the DTS set due to this mechanism.

This patch prevents this by skipping this behavior for
header buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=757961

8 years agoidentity: add drop-buffer-flags property
Aleix Conchillo Flaqué [Thu, 18 Jun 2015 20:56:53 +0000 (13:56 -0700)]
identity: add drop-buffer-flags property

New property drop-buffer-flags that will discard buffers that have the
given flags set.

https://bugzilla.gnome.org/show_bug.cgi?id=751182