Commit graph

3124 commits

Author SHA1 Message Date
Sebastian Dröge
b9a4a2a952 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
ba943a82c0 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
2016-06-13 20:20:44 +02:00
Sebastian Dröge
8c7da1d426 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
2016-06-10 09:49:33 +03:00
Edward Hervey
67ae0ad225 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
2016-06-10 09:49:33 +03:00
Edward Hervey
ea395c2498 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
2016-06-07 09:42:39 +02:00
Guillaume Desmottes
4a41468ce7 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
2016-06-02 23:14:15 +01:00
Tim-Philipp Müller
0274650e42 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.
2016-05-24 00:40:27 +01:00
Sebastian Dröge
d184e7a9a0 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.
2016-05-15 11:04:25 +03:00
Anthony G. Basile
c9da8b0e7f 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
2016-05-07 11:54:54 +01:00
Tim-Philipp Müller
246b285783 flowcombiner: add debug category
Not that it logs much.
2016-05-05 18:50:05 +01:00
Tim-Philipp Müller
5ebfe26a51 flowcombiner: fix docs for gst_flow_combiner_reset() 2016-05-05 18:02:21 +01:00
Tim-Philipp Müller
12a1418f7f Fix some nonsensical g-i annotations 2016-04-30 14:15:08 +01:00
Alex Ashley
57a9919eb1 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
2016-04-21 15:21:53 -03:00
Sebastian Dröge
5294065985 baseparse: Remember if we interpolated DTS from PTS and refresh it whenever we update the PTS
Otherwise PTS and DTS will come out of sync if upstream continues to provide
PTS and not DTS, and we have to skip some data from the stream or PTS are not
exactly increasing with the duration of each packet.

https://bugzilla.gnome.org/show_bug.cgi?id=765260
2016-04-20 11:49:24 +03:00
Sebastian Dröge
c434b6486d typefindhelper: Fix gobject-introspection warning about invalid transfer annotation
gsttypefindhelper.c:485: Warning: GstBase: invalid "transfer" annotation for gsize: only valid for array, struct, union, boxed, object and interface types
2016-04-20 11:45:28 +03:00
Sebastian Dröge
895332e056 baseparse: When initializing DTS from PTS, remember that we did so
If we don't store the value in prev_dts, we would over and over again
initialize the DTS from the last known upstream PTS. If upstream only provides
PTS every now and then, then this causes DTS to be rather static.

For example in adaptive streaming scenarios this means that all buffers in a
fragment will have exactly the same DTS while the PTS is properly updated. As
our queues are now preferring to do buffer fill level calculations on DTS,
this is causing huge problems there.

See https://bugzilla.gnome.org/show_bug.cgi?id=691481#c27 where this part of
the code was introduced.

https://bugzilla.gnome.org/show_bug.cgi?id=765096
2016-04-15 16:02:29 +03:00
Sebastian Dröge
00e4499b15 Revert "basesink: Take PREROLL_LOCK in wait_event()"
This reverts commit 828a4627db.

The lock was already taken elsewhere, in gst_base_sink_event().
2016-04-12 15:17:36 +03:00
Sebastian Dröge
828a4627db basesink: Take PREROLL_LOCK in wait_event()
It is calling do_sync(), which requires the STREAM_LOCK and PREROLL_LOCK to be
taken. The STREAM_LOCK is already taken in all callers, the PREROLL_LOCK not.

https://bugzilla.gnome.org/show_bug.cgi?id=764939
2016-04-12 15:11:30 +03:00
Arun Raghavan
a3ae9213e5 netclientclock: Always dump clock observations in logs
This makes it possible to examine what values we get in logs, and
potentially tune our filtering/extrapolation in various scenarios.
2016-03-25 12:58:53 +05:30
Vineeth TM
8cc3e908c3 gstreamer: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763020
2016-03-24 14:43:41 +02:00
Nicolas Dufresne
9b0d42ceec collectpads: Assume PTS is equal DTS if PTS is missing
This is the best guess we can make if such a buffer reached the collect
pad. This is uncommon, we do expect parsers to have tried and fixed that
if possible (or needed).

https://bugzilla.gnome.org/show_bug.cgi?id=762207
2016-03-24 14:29:47 +02:00
Anthony G. Basile
d6e25ddedd 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
2016-03-23 14:48:16 +02:00
Sebastian Dröge
87c0513569 baseparse: Recheck after pre_push_frame() if there are tags pending
Many parsers are storing tags only in pre_push_frame(), if we wouldn't check
afterwards we would push buffers before those tags and a lot of code assumes that
tags are available before preroll.

https://bugzilla.gnome.org/show_bug.cgi?id=763553
2016-03-14 12:23:29 +02:00
Sebastian Dröge
b2a111c19d netclientclock: Remove some obsolete code that can cause warnings 2016-03-09 16:07:27 +02:00
Sebastian Dröge
7124e56bb5 netclientclock: Don't reset calibration of internal clock whenever a new netclient clock is created
https://bugzilla.gnome.org/show_bug.cgi?id=763325
2016-03-09 15:38:53 +02:00
Edward Hervey
1f7fba19f7 gstcheck: Check return value of gst_buffer_map
We can't check contents if we don't have access to it

https://bugzilla.gnome.org/show_bug.cgi?id=728326
2016-02-23 17:30:48 +01:00
Nirbheek Chauhan
806dbeeef3 Whenever we include windows.h, also define WIN32_LEAN_AND_MEAN
This reduces the number of symbols and code pulled in drastically
2016-02-20 10:07:42 +00:00
Nirbheek Chauhan
fd823ed129 ptpclock: Only include unistd.h if found
unistd.h is not provided by the  Microsoft Visual C++ compiler. It instead
provides the necessary defines through io.h
2016-02-20 10:07:31 +00:00
Evan Nemerson
d11e657412 docs: annotate C examples as such
https://bugzilla.gnome.org/show_bug.cgi?id=731292
2016-02-15 17:45:15 +00:00
Thiago Santos
5b64123c54 protection/harness/systemclock: move declaration out of for loop initialization
C90 compilers complain about it
error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode

Also run gst-indent on systemclock tests.
2016-02-15 12:33:46 -03:00
Havard Graff
69f5d28718 harness: always set our test-clock on the harnessed element
The integration is already so tight, there is no reason to
not further formalize it!

https://bugzilla.gnome.org/show_bug.cgi?id=761914
2016-02-15 10:09:42 +00:00
Tim-Philipp Müller
aafa79e281 harness: fix compilation
Was supposed to be squashed with 336c7bb6

https://bugzilla.gnome.org/show_bug.cgi?id=761910
2016-02-13 16:11:07 +00:00
Tim-Philipp Müller
39d3c06b18 harness: fix indentation 2016-02-13 16:10:11 +00:00
Stian Selnes
336c7bb69c harness: Fix MT issues when forwarding event/query to sink harness
https://bugzilla.gnome.org/show_bug.cgi?id=761910
2016-02-13 15:36:03 +00:00
Martin Kelly
86a46ee43b pushsrc: fix minor typos in header
https://bugzilla.gnome.org/show_bug.cgi?id=761970
2016-02-12 20:50:57 +00:00
Stian Selnes
778160be08 harness: Add event stress test functions with callback
Similar to the stress test functions for buffers that has a callback to
create the buffer to be pushed, it's useful to have functions that use a
callback to create the event to be pushed.

API: gst_harness_stress_push_event_with_cb_start()
API: gst_harness_stress_push_event_with_cb_start_full()
API: gst_harness_stress_send_upstream_event_with_cb_start()
API: gst_harness_stress_push_upstream_event_with_cb_start_full()

https://bugzilla.gnome.org/show_bug.cgi?id=761932
2016-02-12 19:32:29 +00:00
Havard Graff
668b3215b8 testclock: add crank method
And use it inside GstHarness

API: gst_test_clock_crank()

https://bugzilla.gnome.org/show_bug.cgi?id=761906
2016-02-12 17:08:32 +00:00
Havard Graff
cc4e4ae029 harness: enable empty harness creation and refactor around this
Also make the testclock a member of the harness, allowing some
more interactions with the clock prior to adding elements.

https://bugzilla.gnome.org/show_bug.cgi?id=761905
2016-02-12 16:42:43 +00:00
Stian Selnes
9d56c0e397 check: fix unused parameter compiler warning
https://bugzilla.gnome.org/show_bug.cgi?id=761919
2016-02-12 16:38:43 +00:00
Mikhail Fludkov
06ae41e0b2 harness: fix the race in blocking push mode
Depending on when gst_harness_pull was called - before the buffer reached
gst_harness_chain or after we can get different behaviors of the test
with enabled blocking push mode. The fix makes the behavior always the
same. In pull function we get the buffer first, thus making sure
gst_harness_chain waits for the signal, and emitting the signal after.

https://bugzilla.gnome.org/show_bug.cgi?id=761931
2016-02-12 12:32:22 +00:00
Stian Selnes
2450af1034 check: Add tcase_skip_broken_loop_test
https://bugzilla.gnome.org/show_bug.cgi?id=761917
2016-02-12 11:14:33 +00:00
Stian Selnes
ff7e6a14b0 harness: Fix docs for stress test functions
notify is not called per buffer, but when the thread is freed.

Comment about serialized events and OOB does not make sense for upstream
events.

https://bugzilla.gnome.org/show_bug.cgi?id=761909
2016-02-12 10:22:45 +00:00
Stian Selnes
dc4a3b71f0 harness: Unset sink_forward_pad before tearing down sink_harness
Set the sink_forward_pad to NULL before tearing down sink_harness to
avoid that the harness tries to forward events/queries to it while it's
tearing down.

https://bugzilla.gnome.org/show_bug.cgi?id=761904
2016-02-12 10:17:31 +00:00
Havard Graff
ed583832a1 harness: fix up docs to reference functions properly
https://bugzilla.gnome.org/show_bug.cgi?id=761901
2016-02-12 10:14:29 +00:00
Tim-Philipp Müller
78a832ebd5 baseparse: fix stray discont flag set on outgoing buffers in push mode
We have no guarantees about what flags are set on buffers we take
out of the GstAdapter. If we push out multiple buffers from the
first input buffer (which will have discont set), only the first
buffer we push out should be flagged as discont, not all of the
buffers produced from that first initial input buffer.

Fixes issue where the first few mp3 frames/seconds of data in push
mode were skipped or garbled in some cases, and the discont flags
would also trip up decoders which were getting drained/flushed for
every buffer. This was a regression introduced in 1.6 apparently.
2016-02-04 19:04:41 +00:00
Thibault Saunier
438a83df58 controller: Do not unset uninitiallized GValue
In case the property was not interpollable we might never initialize
the GValue, we should thus never unset it.
2016-02-02 19:51:56 +01:00
HoonHee Lee
f90fd86d5f baseparse: Try to generate caps on the srcpad before forwarding GAP event
To configure downstream elements and complete initial pre-rolling,
ensure we have default output caps before forwarding GAP event.

https://bugzilla.gnome.org/show_bug.cgi?id=753899
2016-01-29 10:49:24 +01:00
Sebastian Dröge
7b49459f1a netclientclock: Check return value of g_socket_close()
CID 1348452
2016-01-15 09:48:32 +01:00
Sebastian Dröge
3315f483bc netclientclock: Free data after removing it from the list
Does not matter here but makes Coverity more happy. It can't
know that g_list_remove() only looks at the pointer value but
does not dereference it.

CID 1348454
2016-01-15 09:02:42 +01:00
Florin Apostol
f875bec51e netclientclock: Fix GError memory leak in handling NTP response
Error was not released if gst_ntp_packet_receive failed.

https://bugzilla.gnome.org/show_bug.cgi?id=760598
2016-01-13 23:01:18 +01:00
Carlos Rafael Giani
91496281eb basesrc: Only set duration/position query values in case of query success
Currently, the query values are being set even if the query itself was
determined to have failed. Fix this to ensure the values are only set in
case of a query success.

https://bugzilla.gnome.org/show_bug.cgi?id=760479
2016-01-11 21:42:10 +01:00
Stefan Sauer
2159aa56bc docs: remove parent docs for GstPtpClock
Instance docs don't need to docuemnt the parent (first member).
2016-01-06 18:17:27 +01:00
Sebastian Dröge
01ba6d40a8 clock: Fix typo
clocked -> clock
2016-01-05 16:44:53 +02:00
Sebastian Dröge
1c010fd230 netclientclock: Disconnect the "synced" signal handler from the internal clock
Not from the external one.
2016-01-05 15:00:14 +02:00
Stefan Sauer
ab17881cf0 controller: rename new cubic interpolation mode
Don't abbreviate to 'mono' and use 'monotonic' instead.
2016-01-05 13:57:12 +01:00
Sebastian Dröge
58b4e075a6 ntp: The clock inherits from GstNetClientClock, not just GstSystemClock 2016-01-05 13:41:08 +02:00
Sebastian Dröge
29136a0186 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.
2016-01-04 17:18:07 +02:00
Sebastian Dröge
33dcec7b74 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.
2016-01-04 16:31:23 +02:00
Sebastian Dröge
23abc425d4 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.
2016-01-04 10:40:35 +02:00
Sebastian Dröge
5dc8cea6f4 nettimeprovider: Mark address, port and clock properties CONSTRUCT_ONLY
They can't sensibly be changed after construction.
2016-01-04 10:40:35 +02:00
Sebastian Dröge
9f36b4383b netclientclock: Implement resolval of hostnames
Just allowing IPs here is not ideal and implementing DNS resolval is easy.
2015-12-30 16:59:24 +02:00
Sebastian Dröge
2bfa204c30 ptpclock: Add read-only properties to get the master and grandmaster clock ids 2015-12-29 16:29:13 +02:00
Stefan Sauer
a6e72aa28f check: don't memcmp twice
Simply call fail() in the condition after the first memcmp.
2015-12-27 19:42:37 +01:00
Xavier Claessens
46f83f5fcd core: Add g_autoptr() support to all types
https://bugzilla.gnome.org/show_bug.cgi?id=754464
2015-12-14 12:06:55 -05:00
Athanasios Oikonomou
d10c488d63 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
2015-12-08 11:34:13 +02:00
Ross Burton
865473bd2b 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
2015-12-04 16:44:39 +02:00
Reynaldo H. Verdejo Pinochet
63a9130f56 Drop usage of deprecated g-ir-scanner --strip-prefix flag 2015-12-02 15:02:25 -08:00
Tim-Philipp Müller
8249c6db0e 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
2015-11-20 19:45:39 +00:00
Thiago Santos
b93369c78a Revert "baseparse: do not overwrite header buffer timestamps"
This reverts commit 2c475a0355.

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.
2015-11-19 00:57:17 -03:00
Thiago Santos
5feba38a4e Revert "baseparse: simplify code a bit"
This reverts commit 3984f7159a.
2015-11-19 00:57:08 -03:00
Sebastian Dröge
533d1c8eb7 ptp-helper: Disable multicast loopback
We're not really interested in our own packets and ignore them anyway.
2015-11-18 09:21:23 +02:00
Thiago Santos
3984f7159a baseparse: simplify code a bit
Avoid repeated checks for testing if a buffer is a header
2015-11-16 08:22:14 -03:00
Thiago Santos
42d45a0f40 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
2015-11-14 10:50:35 -03:00
Thiago Santos
971ac61c36 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
2015-11-14 10:50:35 -03:00
Ross Burton
09aa20746a helpers: fix install race
The install hook needs to be a install-data-hook not an install-exec-hook as the
helpers are installed into helperdir which is considered data (only path
variables with "exec" in are considered executables).

The explicit dependency on install-helpersPROGRAMS was an attempt at solving
this, but this causes occasional races where install-helpersPROGRAMS can run
twice in parallel (once via install-all, once via the hook's dependency).

https://bugzilla.gnome.org/show_bug.cgi?id=758029
2015-11-13 09:40:44 +01: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
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
Edward Hervey
16458daddb collectpads: Use GST_BUFFER_DTS_OR_PTS
Simplifies code a bit
2015-10-27 08:33:41 +01: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
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
Edward Hervey
55f6582159 baseparse: Update internal position even if not linked
Our current position has nothing to do with being linked or not.

Avoids having stray segment updates fired every 2s
2015-10-12 17:30:38 +02:00
Sebastian Dröge
29d11c4566 gst-ptp-helper: #include <sys/socket.h> to fix net/if.h include on OSX 10.6
In file included from gst-ptp-helper.c:40:0:
   /usr/include/net/if.h:265:19: error: field 'ifru_addr' has incomplete type
      struct sockaddr ifru_addr;

https://bugzilla.gnome.org/show_bug.cgi?id=756136
2015-10-07 11:30:14 +01:00
Vineeth TM
215cfcf993 gstreamer: Fix memory leaks when context parse fails
When g_option_context_parse fails, context and error variables are not getting free'd
which results in memory leaks. Free'ing the same.

And replacing g_error_free with g_clear_error, which checks if the error being passed
is not NULL and sets the variable to NULL on free'ing.

https://bugzilla.gnome.org/show_bug.cgi?id=753851
2015-10-02 17:31:11 +03:00
Jan Alexander Steffens (heftig)
d3e9f55302 timedvaluecontrolsource: Use g_sequence_lookup where possible
When looking for exact matches in the sequence, this results
in much simpler code than when using g_sequence_search.

https://bugzilla.gnome.org/show_bug.cgi?id=755498
2015-10-02 17:30:38 +03:00
Stefan Sauer
9a30399e4f interpolationcontrolsource: fix write over the array size
The '++' got incidentially added during the refactoring in
2fe3939ce7.
2015-10-01 22:12:50 +02:00
Stefan Sauer
8487133114 controlpoint: change the padding to be of arch-independent size
The default padding I introduced in d4f81fb4e6 is
actually only 4 pointers and on 32bit platforms already smaller than the union.
Replace it with a fixed 64byte padding. Don't add the normal padding for now.

Fixes #755822
2015-09-30 17:31:58 +02:00
Tim-Philipp Müller
5d3c58902f check: fix 'format string is not a string literal' warning with clang
Broke this when I removed the G_GNUC_PRINTF in a previous
commit to fix indentation, since it was not really needed.
Turns out unlike gcc clang warns though if a non-literal
format string is passed then. Fix indentation differently.

http://clang.llvm.org/docs/AttributeReference.html#format-gnu-format
2015-09-28 20:10:31 +01:00
Stefan Sauer
653f9148bd directcontrolbinding: fix formatting 2015-09-28 16:23:41 +02:00
Stefan Sauer
05dbad27c5 index: mark two structs that don't have abi padding 2015-09-28 16:23:41 +02:00
Stefan Sauer
d4f81fb4e6 controller: add the missing abi padding
While this technically is an abi break, we decided to do this:
1) the struct is documented to be internal
2) the struct is alloced and freed inside the library
3) there are no public methods that receive or return instances
4) the only code known to use this struct are classes containd here
2015-09-28 16:23:41 +02:00
Stefan Sauer
56f12705ca interpolationcontrolsource: add cubic_mono interpolation
This new mode won't overshoot the min/max y values set by the control-points.
Fixes #754678
API: GST_INTERPOLATION_MODE_CUBIC_MONO
2015-09-27 12:46:01 +02:00
Stefan Sauer
2fe3939ce7 interpolationcontrolsource: refactor code
Extract common code that looks up the control-points around the timestamp. Add
some comments for future investigation.
2015-09-27 11:45:29 +02:00
Tim-Philipp Müller
cc217289a7 harness: minor doc fixes 2015-09-26 11:03:24 +01:00
Vivia Nikolaidou
44ba1565d9 segment: Replaced gst_segment_to_position with gst_segment_position_from_running_time
gst_segment_to_position might cause confusion, especially with the addition of
gst_segment_position_from_stream_time . Deprecated gst_segment_to_position
now, and replaced it with gst_segment_position_from_running_time.

Also added unit tests.
2015-09-26 00:00:08 +02:00
Vineeth TM
dc0ae9203a ptpclock: Fix error leak during failures
https://bugzilla.gnome.org/show_bug.cgi?id=755607
2015-09-25 10:14:45 +02:00
Havard Graff
64a152439c harness: don't crash when adding a sink-harness without h->sinkpad
https://bugzilla.gnome.org/show_bug.cgi?id=755511
2015-09-24 11:07:24 +01:00
Sebastian Dröge
73263271bb basetransform: Print buffer PTS when submitting an input buffer 2015-09-23 20:31:48 +02:00
Vineeth TM
fcdfcbd618 downloadbuffer, benchmarks: fix error leaks in failure code paths
https://bugzilla.gnome.org/show_bug.cgi?id=755019
2015-09-15 18:21:58 +01:00
Vineeth TM
f409dd48e0 check: Fix indentation
https://bugzilla.gnome.org/show_bug.cgi?id=755019
2015-09-15 18:21:27 +01:00
Stian Selnes
ff9a78196c harness: Fix race for gst_harness_element_ref
In order for gst_harness_new_full to be MT-safe the increase and
decrease of HARNESS_REF must be MT-safe. This allows for creating
multiple harnesses from different threads wrapping the same element.

https://bugzilla.gnome.org/show_bug.cgi?id=754661
2015-09-07 11:31:33 +01:00
Stian Selnes
615e5b01c6 harness: Allow-none for custom stress init func
It should be allowed to not have a function to initialize the user data
since it's often not necessary; it may already be initialized.

https://bugzilla.gnome.org/show_bug.cgi?id=754661
2015-09-07 11:30:37 +01:00
Havard Graff
b2ce23074e harness: misc bugfixes
1. Get a list of pad templates from the element class, not the
factory. This allows us to interact with test-elements that does
not have a factory.

2. Use the pad_template_caps in caps-queries when caps is not set
explicitly on the pad. Not doing so is simply wrong, and prohibits
interactions with special templates used for testing.

https://bugzilla.gnome.org/show_bug.cgi?id=754193
2015-08-31 12:03:09 +01:00
Nicolas Dufresne
2534e39e55 basetransform: Reconfigure before propose_allocation
There exist cases where a reconfigure event was propagated from
downstream, but caps didn't change. In this case, we would
reconfigure only when the next buffer arrives. The problem is that
due to the allocation query being cached, the return query parameters
endup outdated.

In this patch we refactor the reconfigurating code into a function, and
along with reconfiguring when a new buffer comes in, we also reconfigure
when a query allocation arrives.

https://bugzilla.gnome.org/show_bug.cgi?id=753850
2015-08-21 15:14:34 -07:00
Tim-Philipp Müller
a887d81bfa baseparse: avoid tag list spam if upstream provides bitrate tags already
Explicitly keep track again whether upstream tags or parser tags
already contain bitrate information, and only force a tag update
for a bitrate if we are actually going to add the bitrate to the
taglist later. This fixes constant re-sending of the same taglist,
because upstream provided a bitrate already and we didn't add it,
so we didn't save the 'posted' bitrate, which would then in turn
again trigger the 'bitrate has changed too much, update tags'
code path. Fixes tag spam with m4a files for example.

https://bugzilla.gnome.org/show_bug.cgi?id=679768
2015-08-18 15:51:53 +01:00
Tim-Philipp Müller
4ec358773a baseparse: fix tag handling
In 0.10 there were no sticky events, and all tag events
sent would just be merged with the previously-received
tags. In 1.x we have sticky events, and the tags in the
tag event(s) should at all times carry the complete tags,
so we can't just push some tags and then just push tags
with just bitrates to update the bitrates, etc.

Instead we need to keep track of the upstream stream tags
received, of the tags set by the video decoder subclass,
and send an updated tag event with the combined tags
including our own bitrate tags (if applicable) whenever
the upstream tags, the subclass tags or any of our bitrates
change.

https://bugzilla.gnome.org/show_bug.cgi?id=679768
2015-08-16 14:32:24 +01:00
Tim-Philipp Müller
41b85d91eb baseparse: add API for subclass to set tags
This is needed so that we can do proper tag handling
all around, and combine the upstream tags with the
tags set by the subclass and any extra tags the
base class may want to add.

API: gst_base_parse_merge_tags()

https://bugzilla.gnome.org/show_bug.cgi?id=679768
2015-08-16 14:32:23 +01:00
Tim-Philipp Müller
d60c249f51 baseparse: save upstream stream tags
We'll need those later.

https://bugzilla.gnome.org/show_bug.cgi?id=679768
2015-08-16 12:29:10 +01:00
Tim-Philipp Müller
bc1fb2d8b0 baseparse: minor code simplification
Use gst_pad_peer_query_duration() and remove a few
unnecessary levels of indentation. Rest of code might
looks a bit questionable, but leave it as is for now.
2015-08-15 18:41:31 +01:00
Thiago Santos
e0cc0e0888 basetransform: rework accept-caps
According to the design docs:
The ACCEPT_CAPS query is not required to work recursively, it can simply
return TRUE if a subsequent CAPS event with those caps would return
success.

So make it a shallow check instead of recursivelly check downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=748635
2015-08-13 14:07:35 -03:00
Thiago Santos
42acf05b22 basetransform: remove some dead code
Doesn't seem like it is going to get back to life anytime soon

Also removes a {} block that was likely used to keep the dead
code around.
2015-08-13 12:45:35 -03:00
Thiago Santos
7ec54c2217 basetransform: respect accept-caps intersect flag
GstPad has a flag for suggesting if the accept-caps
query should use intersect instead of the default
subset caps operation to verify if the caps would be
acceptable.

basetransform currently always uses the subset check and
this patch makes it honor the flag for using intersect
if it is set.

https://bugzilla.gnome.org/show_bug.cgi?id=748635
2015-08-13 06:01:36 -03:00
Vineeth TM
039ac81ee3 basetransform: remove unreachable return statement
https://bugzilla.gnome.org/show_bug.cgi?id=753538
2015-08-12 10:34:59 +01:00
Havard Graff
28100e0b6a harness: add _set_forwarding function
To be able to disable the slightly "magic" forwarding of the
necessary events between the harnesses.

Also introduce a new test-suite for GstHarness, that documents the
feature, and should hopefully expand into documenting most of the
features the harness possesses.

https://bugzilla.gnome.org/show_bug.cgi?id=752746
2015-08-09 16:02:37 +01:00
Nicolas Dufresne
e24e902d2f basesink: Only drop buffer if their PTS is out of segment
As of now, even for stream completly inside segment, there is no
guarantied that the DTS will be inside the segment. Specifically
for H.264 with B-Frames, the first few frames often have DTS that
are before the segment.

Instead of using the sync timestamp to clip out of segment buffer,
take the duration from the start/stop provided by the sub-class, and
check if the pts and pts_end is out of segment.

https://bugzilla.gnome.org/show_bug.cgi?id=752791
2015-08-05 15:51:27 -04:00
Luis de Bethencourt
60de1f26c7 harness: don't run code inside g_assert
Even though asserts can't be disabled in GstHarness, Coverity still
complains about running code inside them. Moving the code to outside the
g_asserts().

CID #1311326, #1311327, #1311328
2015-08-05 14:05:27 +01:00
Nicolas Dufresne
d47b567f2f doc/gsthardness: Fix typo in GstAllocationParams
It's not GstAllocatorParams but GstAllocationParams.
2015-07-28 15:50:40 -04:00
Nicolas Dufresne
67e53e4adc doc/gstharness: Remove unknown parameter
sink_elenment_name is not a parameter of gst_harness_add_sink_harness()
function, but still it show up in documentation.
2015-07-28 15:46:09 -04:00
Olivier Crête
5e5a14028a basetransform: Return FLOW_FLUSHING if negotiation fails during shutdown
https://bugzilla.gnome.org/show_bug.cgi?id=752800
2015-07-27 13:53:26 -04:00
Olivier Crête
815b5f69e8 harness: Fix indendation 2015-07-22 18:55:29 -04:00
Nicolas Dufresne
f9aa306747 basetransform: Avoid increasing query reference
gst_query_find_allocation_meta() requires the query to be
writable to work. This patch ensure avoids taking a reference
on the query, so we can now check if a certain allocation meta
is present.

https://bugzilla.gnome.org/show_bug.cgi?id=752661
2015-07-22 13:29:35 -04:00
Havard Graff
c97f82e32b harness: add functions for adding sub-harnesses directly
By introducing gst_harness_add_src_harness and gst_harness_add_sink_harness
we collect all sub-harness setup in one function, making the previous
sub-harness creation functions now calls these directly, and making it
much easier (and less error-prone) to add your own src or sink-harness
using the more generic harness-creation functions.
2015-07-20 15:30:11 +01:00
Nicolas Dufresne
5b5cebf540 baseparse: Don't override gst_segment_do_seek()
This line has no purpose, clearly gst_segment_do_seek() is doing
the right job, also, having the start time (a timestamp) be that
same as time (the stream time) is quite odd.

https://bugzilla.gnome.org/show_bug.cgi?id=750783
2015-07-17 17:44:52 -04:00
Nicolas Dufresne
8b6e8701d5 baseparse: Fix extrapolation of seeksegment.stop
The stop shall be relative to start if extrapolated from the
duration.

https://bugzilla.gnome.org/show_bug.cgi?id=750783
2015-07-17 17:44:44 -04:00
Tim-Philipp Müller
997115e462 harness: fix indentation 2015-07-16 17:50:49 +01:00
Tim-Philipp Müller
36267ca0e2 harness: fix pad template leak 2015-07-16 17:50:06 +01:00
Havard Graff
0841b2a97e harness: don't re-establish the harness sink and src pads
Given that the element has the possibility to have one, they should
already be there.

https://bugzilla.gnome.org/show_bug.cgi?id=752498
2015-07-16 17:09:27 +01:00
Stian Selnes
8597284d0b harness: Improve detection of element type
The element flag does not indicate wether a bin should be tested as a
source or as a sink, eg. a bin with the sink flag may still have a
source pad and a bin with the source flag may have a sink pad. In this
case it is better to determine the element type by looking at the
available pads and pad templates.

Also rename srcpad and sinkpad where it actually represents
element_srcpad_name and element_sinkpad_name.

https://bugzilla.gnome.org/show_bug.cgi?id=752493
2015-07-16 16:23:20 +01:00
Stian Selnes
fe6f694dbb harness: Forward sticky events to sink harness
Fixes issue where if a sink harness was added late the sticky events
would not be forwared.

https://bugzilla.gnome.org/show_bug.cgi?id=752494
2015-07-16 16:18:08 +01:00
Tim-Philipp Müller
e066058fac harness: make header nicer to read 2015-07-16 12:41:51 +01:00
Vineeth TM
6d78d32d51 baseparse: estimate duration on EOS
For files which are smaller than 1.5 seconds, the duration
estimation does not happen. So the duration will always be
displayed as 0. Updating the duration on EOS when the estimation
has not happened already

https://bugzilla.gnome.org/show_bug.cgi?id=750131
2015-07-10 15:23:43 -04:00
Hyunjun Ko
427400be1d adapter: change log message properly
https://bugzilla.gnome.org/show_bug.cgi?id=752116
2015-07-10 10:46:38 +03:00
Hyunjun Ko
af62e2874f adapter: fix to get valid (buffer_)list
get_list/get_buffer_list should be done with buffers in adapter remaining
while take_list/take_buffer_list flushes each buffer one by one.

https://bugzilla.gnome.org/show_bug.cgi?id=752116
2015-07-08 18:59:31 +03:00
Arnaud Vrac
ea8cabe084 baseparse: put buffer in a correct state after gst_adapter_get_buffer call
We must make the buffer writable to write its PTS and DTS, and also
reset its duration.

The behaviour is now the same as before commit c3bcbadd, except metas
might still be attached to the buffer extracted from the adapter.

https://bugzilla.gnome.org/show_bug.cgi?id=752092
2015-07-08 13:33:37 +03:00
Tim-Philipp Müller
0728b219b9 harness: fix indentation and replace stress test function macros
These screw with indentation and seem a bit trivial. Just copy'n'paste.
2015-07-07 15:02:45 +01:00
Hyunjun Ko
eaf4153668 meta: transform_func: return FALSE if not supported or failed
https://bugzilla.gnome.org/show_bug.cgi?id=751778
2015-07-07 13:40:17 +03:00
Tim-Philipp Müller
b5cc88594e harness: make sure g_assert() statements are always active
We have code with side effects inside g_assert()s, so make
sure those are always enabled here (they might otherwise
get disabled for release builds).
2015-07-07 08:38:31 +01:00
Tim-Philipp Müller
ac79c7f05a harness: rename GstHarnessPrepareBuffer -> GstHarnessPrepareBufferFunc
https://bugzilla.gnome.org/show_bug.cgi?id=751916
2015-07-07 00:58:15 +01:00
Tim-Philipp Müller
49c896db3a docs: add GstHarness to documentation
https://bugzilla.gnome.org/show_bug.cgi?id=751916
2015-07-07 00:53:48 +01:00
Havard Graff
66e25da313 check: Add GstHarness convenience API for unit tests
http://gstconf.ubicast.tv/videos/gstharness-again-a-follow-up/

https://bugzilla.gnome.org/show_bug.cgi?id=751916
2015-07-06 23:36:37 +01:00
Vineeth TM
274f4b784a baseparse: reverse playback in pull mode
right now reverse playback is disabled in pull mode.
enabling the code for the same and changing a bit of logic
to make reverse playback work.

https://bugzilla.gnome.org/show_bug.cgi?id=750783
2015-07-06 09:56:27 -04:00
Song Bing
8e2c72f125 basesink: Shouldn't drop buffer when sync=false
Shouldn't drop buffer when sync=false

https://bugzilla.gnome.org/show_bug.cgi?id=751819
2015-07-06 11:38:48 +03:00
Tim-Philipp Müller
d0f85838ab queuearray: allow storing of structs in addition to pointers
This way we don't have to allocate/free temporary structs
for storing things in the queue array.

API: gst_queue_array_new_for_struct()
API: gst_queue_array_push_tail_struct()
API: gst_queue_array_peek_head_struct()
API: gst_queue_array_pop_head_struct()
API: gst_queue_array_drop_struct()

https://bugzilla.gnome.org/show_bug.cgi?id=750149
2015-07-04 11:03:51 +01:00
Sebastian Dröge
231e77338c transform: Also copy POOL metas and make sure to copy over metas when creating subbuffers
POOL meta just means that this specific instance of the meta is related to a
pool, a copy should be made when reasonable and the flag should just not be
set in the copy.
2015-07-01 10:50:19 +02:00
Sebastian Dröge
fefd4622a3 adapter: Also copy POOL metas and make sure to copy over metas when creating subbuffers
POOL meta just means that this specific instance of the meta is related to a
pool, a copy should be made when reasonable and the flag should just not be
set in the copy.
2015-07-01 10:45:01 +02:00
Sebastian Dröge
c3bcbadd54 baseparse: Use new gst_adapter_get_buffer() API instead of gst_adapter_map()
This preserves GstMeta properly unless the subclass does special things. It's
enough to make h264parse's stream-format/alignment conversion pass through
metas as needed.

https://bugzilla.gnome.org/show_bug.cgi?id=742385
2015-06-30 18:40:28 +02:00
Sebastian Dröge
866f9ace5c adapter: Add get variants of the buffer based take functions
Main difference to gst_adapter_map() for all practical purposes is that
GstMeta of the buffers will be preserved.

https://bugzilla.gnome.org/show_bug.cgi?id=742385
2015-06-30 18:40:28 +02:00
Sebastian Dröge
e6757269db adapter: Copy over GstMeta from the input buffers to the output
All functions that return a GstBuffer or a list of them will now copy
all GstMeta from the input buffers except for meta with GST_META_FLAG_POOLED
flag or "memory" tag.

This is similar to the existing behaviour that the caller can't assume
anything about the buffer flags, timestamps or other metadata. And it's
also the same that gst_adapter_take_buffer_fast() did before, and what
gst_adapter_take_buffer() did if part of the first buffer or the complete
first buffer was requested.

https://bugzilla.gnome.org/show_bug.cgi?id=742385
2015-06-30 18:40:28 +02:00
Olivier Crête
3ed95158cc ptp: Init function can take a NULL interfaces array 2015-06-29 20:27:19 -04:00
Sebastian Dröge
c659446371 basetransform: Fix up documentation of transform_meta vfunc
By default we copy all metas that have no tags.
2015-06-29 13:58:04 +02:00
Tim-Philipp Müller
86abdbfb55 directcontrolbinding: fix ABI break
Structure size was increased without adjustment of the padding.

https://bugzilla.gnome.org/show_bug.cgi?id=751622
https://bugzilla.gnome.org/show_bug.cgi?id=740502
2015-06-29 10:41:27 +01:00
Hyunjun Ko
85aad81647 basesink: need to deep-copy last buffer list in drain
https://bugzilla.gnome.org/show_bug.cgi?id=751420
2015-06-24 10:52:56 +02:00
Jonas Holmberg
fabe966b0a gstcheck: Print newline in message handler
The message handler is supposed to print a newline after the message
just like the default message handler.
2015-06-23 16:17:56 +01:00
Sebastian Dröge
37a6e8d6df basesink: Unset the last buffer list if we only got a buffer
Also remember any preroll buffer list.
2015-06-22 14:04:45 +02:00
Hyunjun
7c34b4ed0f basesink: enable to get last sample including buffer list if needed
In case of a buffer list rendering, last-sample is not updated.
It needs to be updated and enable to get buffer list from last-sample.

https://bugzilla.gnome.org/show_bug.cgi?id=751026
2015-06-22 13:28:54 +02:00
Nicolas Dufresne
ddedc412f5 doc: Unify Since mark for attribute and enum
As this show up as prose in the doc, simply make it consistent
and "arguable" nicer to read.
2015-06-18 11:51:48 -04:00
Nicolas Dufresne
632431aecb gi: Use INTROSPECTION_INIT for --add-init-section
This new define was added to common. The new init section fixed
compilation warning found in the init line that was spread across
all files.
2015-06-16 18:08:24 -04:00
Nicolas Dufresne
d0321cd054 doc: Fix reference to unknown type GstNetAddress 2015-06-14 11:22:54 -04:00
Nicolas Dufresne
80279df2a1 doc: Include and fix GstControlPoint 2015-06-14 11:22:36 -04:00
Nicolas Dufresne
66574a6238 doc: Document GstPushSrcClass 2015-06-14 10:59:51 -04:00
Nicolas Dufresne
e6ec142084 doc: Better document new GstCollectData.ABI.abi.dts
The doc generator get confused with the inline structure. So
workaround by wrapping the inner of the structure with
public/private mark, and document that GST_COLLECT_PADS_DTS macro
shall be used to access this.
2015-06-14 10:58:18 -04:00
Nicolas Dufresne
0e0a0c1b11 doc: Various doc fixes for libgstreamer-base
* Fix function name in sections.txt
* Add few missing or fix miss-named
* Workaround gtk-doc being confused with non typedef
  types (loose track of public/private
2015-06-14 10:56:28 -04:00
Nicolas Dufresne
bd9ea8d18f doc: Fix Since: marks
There was few Since: mark missing their column. Also unify the way
we set the Since mark on enum value and structure members. These
sadly don't show up in the index.
2015-06-13 20:19:59 -04:00
Nicolas Dufresne
41dab4e204 gi: Skip gst_consitency_checker_new
This non boxed type cannot be allocated safely.
2015-06-13 19:47:45 -04:00
Nicolas Dufresne
a26e3c1088 doc: Make ..._source_find_control_point_iter transfer none 2015-06-13 15:10:53 -04:00
Nicolas Dufresne
ed5ac1c101 doc: Silence warning about unused gstntppacket section
This API is internal.
2015-06-13 14:40:43 -04:00
Nicolas Dufresne
d7b22481ae Revert "doc: Add GstNtpPacket to the doc"
This reverts commit c4eb876961.

Oops, this is not a public API
2015-06-13 14:37:48 -04:00
Nicolas Dufresne
c4eb876961 doc: Add GstNtpPacket to the doc 2015-06-13 14:21:41 -04:00
Nicolas Dufresne
4320337af6 doc: Remove gstindex from doc comment
Moving that to normal comment to silence the generator. GstIndex
is not in GStreamer library at the moment (removed from 0.10).
2015-06-13 13:55:27 -04:00
Nicolas Dufresne
32900408c1 gi: Set collectpads function param scope 2015-06-13 13:48:03 -04:00
Nicolas Dufresne
2f1c87094e gi: Skip allocator of non-boxed structure
These are not usable as they are, and can easily lead to crash
or leaks. This also silence warning from the scanner. If we manage to
make this usable, we can then remove that mark, it will require
to make this type boxed.
2015-06-13 13:42:58 -04:00
Tim-Philipp Müller
1164f91f1f libs: more doc scanner fixes
gstbasetransform.h:196: Warning: GstBase: "@submit_input_buffer" parameter unexpected at this location:
 * @submit_input_buffer: Function which accepts a new input buffer and pre-processes it.

gstnetcontrolmessagemeta.c:103: Warning: GstNet: gst_buffer_add_net_control_message_meta: unknown parameter 'message' in documentation comment, should be 'addr'
2015-06-13 15:06:11 +01:00
Nicolas Dufresne
51549bf6ba collectpads: Don't initially send an invalid DTS
Sending a possibly invalid DTS may confuse the muxers, which will
then think the DTS is going backward.

https://bugzilla.gnome.org/show_bug.cgi?id=740575
2015-06-12 17:20:16 -04:00
Nicolas Dufresne
b5e4f7bd9d collectpads: Add negative DTS support
Make gst_collect_pads_clip_running_time() function also store the
signed DTS in the CollectData. This signed DTS value can be used by
muxers to properly handle streams where DTS can be negative initially.

https://bugzilla.gnome.org/show_bug.cgi?id=740575
2015-06-12 17:20:16 -04:00
Lazar Claudiu
cb2c141eac controller: Added absolute direct control binding, example and test
Fixes: 740502
API: gst_direct_control_binding_new_absolute
2015-06-12 10:07:24 +02:00
Sebastian Dröge
1ae38f7ba7 ptp: Check for the actual API we use instead of just looking for __APPLE__
Should fix the build on FreeBSD, DragonFly and other BSDs.

https://bugzilla.gnome.org/show_bug.cgi?id=750530
2015-06-09 11:01:29 +02:00
Sebastian Dröge
59d916a071 netclientclock: Use the new GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC flag
https://bugzilla.gnome.org/show_bug.cgi?id=750574
2015-06-09 10:03:49 +02:00
Sebastian Dröge
558c0b97fc netclientclock: Make the clock a wrapper clock around an internal clock
The internal clock is only used for slaving against the remote clock, while
the user-facing GstClock can be additionally slaved to another clock if
desired. By default, if no master clock is set, this has exactly the same
behaviour as before. If a master clock is set (which was not allowed before),
the user-facing clock is reporting the remote clock as internal time and
slaves this to the master clock.

This also removes the weirdness that the internal time of the netclientclock
was always the system clock time, and not the remote clock time.

https://bugzilla.gnome.org/show_bug.cgi?id=750574
2015-06-09 10:03:49 +02:00
Sebastian Dröge
5ba9e9d9a8 ptp: Make sure to always initialize the variables we put into the statistics structure later
CID 1304676, 1304677, 1304678, 1304679.
2015-06-08 12:22:56 +02:00
Sebastian Dröge
c8d777feaa ptp: Ensure that not too much is read from or written to struct ifreq.ifr_name 2015-06-08 12:03:30 +02:00
Jan Schmidt
0d96487879 basetransform: Add Since markers for new vfuncs
Add Since: 1.6 markers for the new submit_input_buffer() and
generate_output() vfuncs
2015-06-08 19:33:23 +10:00
Jan Schmidt
a198803bd6 basetransform: Split input buffer processing from output generation
Allow for sub-classes which want to collate incoming buffers or
split them into multiple output buffers by separating the input
buffer submission from output buffer generation and allowing
for looping of one of the phases depending on pull or push mode
operation.

https://bugzilla.gnome.org/show_bug.cgi?id=750033
2015-06-08 19:17:57 +10:00
Руслан Ижбулатов
499b8d841e ptp: Fix build on Windows, and in general the GI build when PTP support was not available
It's not going to work on Windows still, the helper process needs to be
ported.
2015-06-08 10:46:24 +02:00
Sebastian Dröge
41f8e03b85 netclientclock: The NTP poll interval is a signed int8, not unsigned 2015-06-07 10:52:33 +02:00
Sebastian Dröge
39a3d0d87d netclientclock: Add Since marker to the docs for gst_ntp_clock_new() 2015-06-07 09:32:39 +02:00
Sebastian Dröge
64773fee9c ptpclock: Use the current path delay for calculation the local/remote clock times
The mean might currently be changing, and the current path delay is the
closest we can get to the actual delay around the current SYNC message.
2015-06-07 08:59:23 +02:00
Sebastian Dröge
9e0f051990 netclientclock: Add some copyright stuff 2015-06-06 23:05:32 +02:00
Sebastian Dröge
202f463170 netclientclock: Add NTPv4 support
This uses all of the netclientclock code, except for the generation and
parsing of packets. Unfortunately some code duplication was necessary
because GstNetTimePacket is public API and couldn't be extended easily
to support NTPv4 packets without breaking API/ABI.
2015-06-06 23:00:44 +02:00
Sebastian Dröge
cc15f68b6a netclientclock: Preparation for NTPv4 support
We extend our calculations to work with local send time, remote receive time,
remote send time and local receive time. For the netclientclock protocol,
remote receive and send time are assumed to be the same value.

For the results, this modified calculation makes absolutely no difference
unless the two remote times are different.
2015-06-06 20:39:47 +02:00
Sebastian Dröge
8d6837edf5 netclientclock. Fix last commit
Apparently I failed at git add -i.
2015-06-06 19:01:06 +02:00
Sebastian Dröge
4c62d791aa netclientclock: Make gst_net_client_clock_new() a thing wrapper around g_object_new()
Bindings will like this, and also it fixes a FIXME comment.
2015-06-06 18:42:18 +02:00
Sebastian Dröge
179eebdf44 ptpclock: Use #define everywhere instead of G_N_ELEMENTS() 2015-06-06 14:34:39 +02:00
Sebastian Dröge
f7a7a569cd netclientclock: Filter RTTs based on the median of the last RTTs before considering them at all
This improves accuracy on wifi or similar networks, where the RTT can go very
high up for a single observation every now and then. Without filtering them
away completely, they would still still modify the average RTT, and thus all
clock estimations.
2015-06-06 14:31:16 +02:00
Sebastian Dröge
42b16c9e3c ptpclock: Use a system clock for the time observations instead of gst_util_get_timestamp()
They don't necessarily use the same underlying clocks (e.g. on Windows), or
might be configured to a different clock type (monotonic vs. real time clock).

We need the values a clean system clock returns, as those are the values used
by the internal clocks.
2015-06-06 14:19:21 +02:00
Sebastian Dröge
bf62a96549 ptpclock: Fix documentation a bit 2015-06-06 12:36:34 +02:00
Sebastian Dröge
f02de0e9a1 ptp-helper: Make sure to use g_poll() for the main context
The modified main context from https://bugzilla.gnome.org/show_bug.cgi?id=741054
somehow calls setugid(), which abort()s setuid root applications on OSX.
2015-06-04 19:05:44 +02:00
Sebastian Dröge
c7c1dcd346 ptp-helper: Make sure that we are running setuid root if configured that way 2015-06-04 18:32:14 +02:00
Sebastian Dröge
d33784ccd0 ptp-helper: Fix interface listing and MAC retrieval on OSX 2015-06-04 18:00:50 +02:00
Luis de Bethencourt
c508ee27a1 gitignore: add libs/gst/helpers/gst-ptp-helper 2015-06-03 16:42:57 +01:00
Luis de Bethencourt
b76a7b4d5c ptp: ignore permission errors in Makefile
To satisfy the buildslaves ignore permission errors in chown, chmod and setcap
2015-06-03 16:34:58 +01:00
Sebastian Dröge
3af74817c1 ptp: Don't use SIOCGIFHWADDR on Apple
Just #ifdef the code for now, this should be implemented around
IOKit later instead of using ioctls.
2015-06-03 17:08:40 +02:00
Philippe Normand
55f79dd195 build: make install-exec-hooks depend on install-helpersPROGRAMS
To avoid race conditions where make would try to change ownership and
permissions of the not-yet-installed ptp helper.
2015-06-03 15:35:11 +01:00
Sebastian Dröge
d2da80e4e7 ptp: Fix debug output to print the difference instead of absolute values 2015-06-03 16:09:17 +02:00
Wim Taymans
e11568c5b8 ptpclock: fix compilation
Don't put code between declarations.
Fix use of uninitialized variables
2015-06-03 15:22:31 +02:00
Sebastian Dröge
ac2eb6e23e ptp: Add median based pre-filtering of delays
If the delay measurement is too far away from the median of the window of last
delay measurements, we discard it. This increases accuracy on wifi a lot.

https://bugzilla.gnome.org/show_bug.cgi?id=749391
2015-06-03 13:55:39 +02:00
Sebastian Dröge
02ba5b20c7 ptp: Add #define to only use SYNC messages for which we can send DELAY_REQ
https://bugzilla.gnome.org/show_bug.cgi?id=749391
2015-06-03 13:55:36 +02:00
Sebastian Dröge
5e1974fc08 ptp: Add #defines to enable/disable improvements for unreliable networks
We should do some more measurements with all these and check how much sense
they make for PTP. Also enabling them means not following IEEE1588-2008 by the
letter anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=749391
2015-06-03 13:55:32 +02:00
Sebastian Dröge
8d77759834 ptp: Initial implementation of a PTP clock
GstPtpClock implements a PTP (IEEE1588:2008) ordinary clock in
slave-only mode, that allows a GStreamer pipeline to synchronize
to a PTP network clock in some specific domain.

The PTP subsystem can be initialized with gst_ptp_init(), which then
starts a helper process to do the actual communication via the PTP
ports. This is required as PTP listens on ports < 1024 and thus
requires special privileges. Once this helper process is started, the
main process will synchronize to all PTP domains that are detected on
the selected interfaces.

gst_ptp_clock_new() then allows to create a GstClock that provides the
PTP time from a master clock inside a specific PTP domain. This clock
will only return valid timestamps once the timestamps in the PTP domain
are known. To check this, the GstPtpClock::internal-clock property and
the related notify::clock signal can be used. Once the internal clock
is not NULL, the PTP domain's time is known. Alternatively you can wait
for this with gst_ptp_clock_wait_ready().

To gather statistics about the PTP clock synchronization,
gst_ptp_statistics_callback_add() can be used. This gives the
application the possibility to collect all kinds of statistics
from the clock synchronization.

https://bugzilla.gnome.org/show_bug.cgi?id=749391
2015-06-03 13:55:28 +02:00
Tim-Philipp Müller
828ceacc68 queuearray: remove duplicate assignment
We've already done this earlier in the function,
and nothing has changed since we first read it.
2015-05-30 12:40:44 +01:00
Matthew Waters
8bc0a6c562 basesink: use the slightly more correct take_sample for last-sample
gst_value_take_buffer() and gst_value_take_sample() both resolve to
g_value_take_boxed().  Use the method with the correct name if we
ever change that.
2015-05-25 21:05:56 +10:00
Tim-Philipp Müller
d71f5c7d73 net: keep GCancellable fd around instead of re-creating it constantly
Just create the cancellable fd once and keep it around instead
of creating/closing it for every single packet. Since we spend
most time waiting for packets, an fd is alloced and in use pretty
much all the time anyway.
2015-05-19 14:34:04 +01:00
Thibault Saunier
33924a7f04 timedvaluecontrolsource: Check that the only iter is the end iter in the GSequence
Previous patch was assuming that if the returned iter was the last iter
the GSequence was empty, which is obviously wrong.
2015-05-16 13:08:06 +02:00
Thibault Saunier
78bbaeb6e7 timedvaluecontrolsource: Fix removing all keyframes, and adding one back
We were segfaulting because g_sequence_search was returning the iter_end,
and that iterator does not contain anything and thus should not be used
directly
2015-05-16 11:20:26 +02:00
Jian
4f79c5e8da basesink: Fix QoS/lateness checking if subclass implements prepare/prepare_list vfuncs
In basesink functions gst_base_sink_chain_unlocked(), below code is used to
checking if buffer is late before doing prepare call to save some effort:
    if (syncable && do_sync)
      late =
          gst_base_sink_is_too_late (basesink, obj, rstart, rstop,
          GST_CLOCK_EARLY, 0, FALSE);

    if (G_UNLIKELY (late))
      goto dropped;

But this code has problem, it should calculate jitter based on current media
clock, rather than just passing 0. I found it will drop all the frames when
rewind in slow speed, such as -2X.

https://bugzilla.gnome.org/show_bug.cgi?id=749258
2015-05-14 11:18:12 +03:00
Ilya Konstantinov
b58245ac0a baseparse: fix GST_BASE_PARSE_FLAG_LOST_SYNC
Since frame->priv->discont was cleared earlier,
GST_BASE_PARSE_FLAG_LOST_SYNC was never being set.

Take the chance to refactor the frame creation a bit to
organize the flags setting and reset.

https://bugzilla.gnome.org/show_bug.cgi?id=738237
2015-04-28 12:57:35 -03:00
Thiago Santos
8641997630 baseparse: respect DISCONT flag on buffers
Drain the parser when a DISCONT buffer is received and then mark
the next buffer to be pushed as a DISCONT one

https://bugzilla.gnome.org/show_bug.cgi?id=745927
2015-04-28 12:54:08 -03:00
Tim-Philipp Müller
8e6561be91 Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 17:49:44 +01:00
Tim-Philipp Müller
ac8d5cac4e check: optionally check env var for us to make sure test env is set up
If GST_CHECK_TEST_ENVIRONMENT_BEACON is defined, check if the
environment variable it is defined to is set up at the start
of each test.

https://bugzilla.gnome.org//show_bug.cgi?id=747624
2015-04-23 15:54:08 +01:00
Changbok Chea
60706692b3 basesrc: Remove unused assignment in perform_seek()
https://bugzilla.gnome.org/show_bug.cgi?id=748345
2015-04-23 14:03:23 +01:00
Mathieu Duponchelle
41946aa3f6 helpers: on OSX, MKDIR_P is install-sh -c -d
So we need to call it before cding to the bin directory.
2015-04-17 15:19:07 +02:00
Mathieu Duponchelle
6ce8398bc6 helpers: install -D isn't portable, use $(MKDIR_P) instead. 2015-04-17 13:02:51 +02:00
Mathieu Duponchelle
5dea4b82dc helpers: use $(INSTALL) to ... install the helper.
As it will create the folders and set permissions appropriately,
better than doing it manually.
2015-04-15 14:45:21 +02:00
Mathieu Duponchelle
d4dcce78b0 helpers: Fix Makefile.am to install the completion-helper correctly.
+ The program is installed at install-exec time, we thus need
  to move it in install-exec-hook, not install-data-hook.
2015-04-15 13:05:46 +02:00
Vincent Penquerc'h
6240b03085 Revert "basesrc: fix pool leak on allocation query error path"
This reverts commit 84fdf50b2f.

It seems the bug was fixed independently, and the merge was
automagic, yielding two extra free calls.
2015-04-15 11:40:51 +01:00
Sebastian Dröge
7d3d4503a1 basesrc: Only set DTS to segment.start on the first buffer if subclass did not provide PTS
Otherwise we're going to set a rather arbitrary DTS of segment.start (usually
0) for live sources, which confuses synchronization if the source started
capturing at a later time. And it's especially wrong for raw media, for which
we should not set any DTS at all.

https://bugzilla.gnome.org/show_bug.cgi?id=747731
2015-04-13 09:23:02 +02:00
Vincent Penquerc'h
84fdf50b2f basesrc: fix pool leak on allocation query error path
It could be triggered by:

gst-launch-1.0 videotestsrc num-buffers=20 ! videcrop bottom=214748364 ! videoconvert ! autovideosink

Spotted while testing:

https://bugzilla.gnome.org/show_bug.cgi?id=743910
2015-04-07 11:41:40 +01:00
Sebastian Dröge
370076edd5 baseparse: Forward SEGMENT_DONE events immediately
There might be no more data coming afterwards, and we just drained everything
that was left to be pushed anyway.
2015-04-06 18:46:06 -07:00
Ilya Konstantinov
f35ec14d33 basesrc: do not leak buffer pool in error case
https://bugzilla.gnome.org/show_bug.cgi?id=747321
2015-04-04 11:14:12 +01:00
Sebastian Dröge
7742f0a0d3 basesrc: Fix documentation, buffer pools are unreffed and not freed 2015-04-03 13:19:33 -07:00
Nicolas Dufresne
43f2f925a9 basetransform: Add Since mark for new method
https://bugzilla.gnome.org/show_bug.cgi?id=734424
2015-04-02 17:32:42 -04:00
Thibault Saunier
506afa54df basetransform: Add a method to let subclasses cleanly update srcpad caps
API:
    gst_base_transform_update_src

https://bugzilla.gnome.org/show_bug.cgi?id=734424
2015-04-02 17:16:23 -04:00
Edward Hervey
e4d07e161d introspection: Don't use g-ir-scanner cache at compile time
It pollutes user directories and we don't need to cache it

https://bugzilla.gnome.org/show_bug.cgi?id=747095
2015-03-31 11:16:09 +02:00
Nicolas Dufresne
208696a774 basesrc: Flush-stop starts live task in paused
The flush-stop event should not restart the task for live sources unless
the element is playing. This was breaking seeks in pause with the rtpsrc.

https://bugzilla.gnome.org/show_bug.cgi?id=635701
2015-03-27 19:03:30 -04:00
Thiago Santos
a041d8862d baseparse: only post 'no valid frames' error if buffers were received
Otherwise baseparse will consider empty streams to be an error while
an empty stream is a valid scenario. With this patch, errors would
only be emitted if the parser received data but wasn't able to
produce any output from it.

This change is only for push-mode operation as in pull mode an
empty file can be considered an error for the one driving the
pipeline

Includes a unit test for it

https://bugzilla.gnome.org/show_bug.cgi?id=733171
2015-03-26 12:25:57 -03:00
Mathieu Duponchelle
87130f3287 helpers: remove completion-helper on uninstall
+ And add it to CLEANFILES
2015-03-24 19:34:44 +01:00
Mathieu Duponchelle
c6e3c859a4 completions: remove last unnamespaced symbols.
https://bugzilla.gnome.org/show_bug.cgi?id=744877
2015-03-24 19:11:31 +01:00
Sebastian Dröge
805684585e check: Fix uninitialized variable compiler warning with gcc
check_run.c: In function 'sig_handler':
check_run.c:127:13: warning: 'child_sig' may be used uninitialized in this function [-Wmaybe-uninitialized]
             killpg(group_pid, child_sig);
             ^
check_run.c:130:31: warning: 'idx' may be used uninitialized in this function [-Wmaybe-uninitialized]
             sigaction(sig_nr, &old_action[idx], NULL);
                               ^
2015-03-21 19:37:30 +01:00
Sebastian Dröge
7646cef644 check: Catch SIGTERM and SIGINT in the test runner and kill all currently running tests
Otherwise e.g. ctrl+c in the test runner exits the test runner, while the test
itself is still running in the background, uses CPU and memory and potentially
never exits (e.g. if the test ran into a deadlock or infinite loop).

The reason why we have to manually kill the actual tests is that after
forking they will be moved to their own process group, and as such are
not receiving any signals sent to the test runner anymore. This is supposed
to be done to make it easier to kill a test, which it only really does if
the test itself is forking off new processes.

This fix is not complete though. SIGKILL can't be caught at all, and error
signals like SIGSEGV, SIGFPE are currently not caught. The latter will only
happen if there is a bug in the test runner itself, and as such seem less
important.
2015-03-21 15:19:43 +01:00
Olivier Crête
187570aded baseparse: remove duplicate code
These are already freed by gst_base_parse_clear_queues()

https://bugzilla.gnome.org/show_bug.cgi?id=679768
2015-03-17 19:35:08 +00:00
Vincent Penquerc'h
780f71c4d5 baseparse: reset skip on segments and discontinuities
Large scale skip is an optimization, and thus it is safer to
stop skipping than to continue. Clear skip on segments and
discontinuities, as these are points where it is possible that
the original idea of "bytes to skip" changes.
2015-03-16 12:53:50 +00:00
Tim-Philipp Müller
01e44969df basesink: handle empty buffer list more gracefully
Don't abort, just ignore it. It's like a buffer
without memories.
2015-03-14 21:09:50 +00:00
Tim-Philipp Müller
2b4d066355 adapter: minor optimisation for gst_adapter_take_buffer_list()
Try to allocate buffer list with a suitable size from the
beginning to avoid having to re-alloc the buffer list array.
2015-03-14 21:09:45 +00:00
Tim-Philipp Müller
e6a0f52e3c adapter: add gst_adapter_take_buffer_list()
API: gst_adapter_take_buffer_list()
2015-03-14 17:22:22 +00:00
Tim-Philipp Müller
68012b4d23 collectpads: avoid multiple calls to gst_buffer_get_size() in macro 2015-03-14 16:02:03 +00:00
Tim-Philipp Müller
4a1cee3c44 adapter: avoid multiple calls to gst_buffer_get_size() in macro 2015-03-14 16:02:03 +00:00
William Manley
fc765592a1 meta: Add GstNetControlMessageMeta
GstNetAddress can be used to store ancillary data which was received with
or is to be sent alongside the buffer data.  When used with socket sinks
and sources which understand this meta it allows sending and receiving
ancillary data such as unix credentials (See `GUnixCredentialsMessage`)
and Unix file descriptions (See `GUnixFDMessage`).

This will be useful for implementing protocols which use file-descriptor
passing in payloaders/depayloaders without having to re-implement all the
socket handling code already present in elements such as multisocketsink,
etc.  This, in turn, will be useful for implementing zero-copy video IPC.

This meta uses the platform independent `GSocketControlMessage` API
provided by GLib as a part of GIO.  As a result this new meta does not
require any new dependencies or any conditional compliation for
portablility, although it is unlikely to do anything useful on non-UNIX
platforms.
2015-03-14 13:54:51 +01:00
Thiago Santos
5e15d4aa60 basesink: drain on allocation query
Allows buffers to be reclaimed when caps is to be renegotiated so
that bufferpools can be stopped. As the allocation query is
serialized all buffers have been already drained from the pipeline,
except this last_sample one.

https://bugzilla.gnome.org/show_bug.cgi?id=682770
2015-03-13 19:03:01 +00:00
Thiago Santos
901fea5985 basesink: when draining, deep copy the last buffer to unref old memory
Use gst_buffer_copy_deep() to force the copy of the underlying
memory instead of possibly doing a shallow copy of the buffer
and just referencing the memory

https://bugzilla.gnome.org/show_bug.cgi?id=745287
2015-03-13 18:37:04 +00:00
Michał Dębski
a7797d30a8 check: Use mkstemp instead of tempnam if possible
Using tempnam() is deprecated, this gives warning and fails the build
with -Werror.

https://bugzilla.gnome.org/show_bug.cgi?id=745858
2015-03-11 16:14:24 +00:00
Wim Taymans
4b174b14f5 basesink: clean up the need_preroll variable
Based on patch from Song Bing <b06498@freescale.com>

Don't just set the need_preroll flag to TRUE in all cases. When we
are already prerolled it needs to be set to FALSE and when we go to
READY we should not touch it. We should only set it to TRUE in other
cases, like what the code above does.

See https://bugzilla.gnome.org/show_bug.cgi?id=736655
2015-03-11 16:40:17 +01:00
Luis de Bethencourt
58f9c1dd71 check: duplicate code branches
CID #1226446
2015-03-10 16:42:48 +00:00
Mark Nauwelaerts
b9411dab75 flowcombiner: add a gst_flow_combiner_update_pad_flow() method
https://bugzilla.gnome.org/show_bug.cgi?id=744572

API: gst_flow_combiner_update_pad_flow()
2015-03-07 20:18:43 +01:00
Mark Nauwelaerts
8ec7272d99 flowcombiner: add a gst_flow_combiner_reset() method
https://bugzilla.gnome.org/show_bug.cgi?id=744572

API: gst_flow_combiner_reset()
2015-03-07 20:18:43 +01:00
Sebastian Dröge
bfaa7d1b9f basesrc: Fix typo in debug message 2015-03-06 11:00:20 +01:00
Edward Hervey
c1d2254b23 baseparse: Don't emit errors on EOS if we saw GAP events
If we saw GAP events (meaning the streams is advancing) before we get
EOS, we should not post an ERROR, since it is not fatal.

https://bugzilla.gnome.org/show_bug.cgi?id=745143
2015-02-26 07:52:05 +01:00
Mathieu Duponchelle
dc10b11391 helpers: Fix install of completion-helper.
By applying the supplied transformation to the program name,
for example --program-prefix.
2015-02-24 14:11:45 +01:00
Nicolas Dufresne
8786655b5e completion-helper: Add missing DESTDIR
Otherwise doing "make install DESTDIR" will try to write to
/usr/share/...
2015-02-23 16:50:34 -05:00
Mathieu Duponchelle
c2d483941d completion-helper: Add filtering by klass and sink caps. 2015-02-23 21:17:54 +01:00
Mark Nauwelaerts
70603c1d27 flowcombiner: fix documentation comment typo 2015-02-23 20:08:20 +01:00
Mark Nauwelaerts
aca7faf520 baseparse: drain segment upon SEGMENT_DONE to ensure proper event order 2015-02-23 20:08:20 +01:00
Mark Nauwelaerts
84f0410186 baseparse: clean up some bogus commented code 2015-02-23 20:08:20 +01:00
Mathieu Duponchelle
f3c9647518 completion-helper: Append $(EXEEXT) to the name of the moved file.
Fixes the build on Windows
(https://ci.gstreamer.net/job/cerbero-cross-mingw32/1742/console)
2015-02-23 19:11:32 +01:00
Mathieu Duponchelle
46e7baff74 bash-completion: Implement in a different way.
+ Gets installed
+ Uses a helper tool, gst-completion-helper, installed in
  bash-completions/helpers.
+ Adds a common script that other tools can source.

https://bugzilla.gnome.org/show_bug.cgi?id=744877
2015-02-23 17:57:57 +01:00
Mathieu Duponchelle
0ee2183aa5 check: cast element in ASSERT_SET_STATE.
https://bugzilla.gnome.org/show_bug.cgi?id=744777
2015-02-19 12:18:50 +01:00
Thibault Saunier
025c8343f2 timedvaluecontrolsource: Do not wrongly send value-removed
And avoid freeing something we do not own
2015-02-13 19:59:57 +01:00
Thiago Santos
d718a2befd basesrc: fix documentation and debug message after latency updates
Changes docs and message according to latency handling fix
2015-02-12 14:12:08 -03:00
Sebastian Dröge
4a5ce862a2 Improve and fix LATENCY query handling
This now follows the design docs everywhere.

https://bugzilla.gnome.org/show_bug.cgi?id=744106
2015-02-11 17:53:04 +02:00
Jan Schmidt
f0e3b7f904 netclock: Don't update the clock when it desynch
Add a hold off when the clock calibration suddenly loses synch,
as it may be a glitch, but also make sure we update if it stays
desynched for more than a few seconds
2015-02-07 04:41:52 +11:00
Jan Schmidt
824b821caa netclock: Make the RTT average ignore large values more forcefully.
Smooth larger RTTs a little harder, so excessively large values
perturb the average a bit less, and therefore get filtered out
more strongly
2015-02-07 04:38:42 +11:00
Stefan Sauer
8695a202c8 check: fix another typo in the docs 2015-01-23 08:59:57 +01:00
Heinrich Fink
1b472377c8 check: Fix doc of GST_CHECKS and GST_CHECKS_IGNORE
https://bugzilla.gnome.org/show_bug.cgi?id=743335
2015-01-22 21:38:51 +11:00
Sebastian Dröge
ee3db74ec4 check: Add _fail_unless() compatibility function around _ck_assert_failed()
We exported this in < 1.5 and it was automatically used by many macros
from the header. Keep it exported for now.
2015-01-21 18:09:38 +01:00
Jan Schmidt
aeca7eb480 netclock: Fix docs typo. Clock bus messages are GST_MESSAGE_ELEMENT 2015-01-21 22:44:59 +11:00
Jan Schmidt
27997cb8a3 netclock: Implement rate limits for polling and fix up skew limits
Add the minimum-update-interval property to the clock, with a default
of 50ms and don't send polling requests faster than that. That helps to
ensure we spread the initial observations out a little - startup takes
a little longer, but tracking is more stable.

Move the discont skew limiting code inside an if statement, so that
it's only done when the linear regression succeeds and the clock
parameters might actually change.
2015-01-21 22:27:18 +11:00
Jan Schmidt
1c9c9847fd netclock: Implement sending statistic bus messages and discont limits
Allow setting a GstBus on the network clock client
via a new 'bus' object property. If a bus is set, the
clock will output an element message containing statistics
about new clock observations and the clock correlation.

When the local clock is synchronised with the remote, limit the
maximum jump in the clock at any point to be one average RTT to
the server. Also, publish in the bus message whether we are
synched with the remote or not.
2015-01-21 22:27:18 +11:00
Sebastian Dröge
f4bd5f119a basetransform: Short-circuit CAPS query handling if transform_caps returns EMPTY caps
Both for the peer filter caps and the converted caps based on the peer caps.

If the peer filter caps are EMPTY, the peer caps query will also return
EMPTY. There's no ned to both downstream/upstream with this query.
2014-12-22 13:08:37 +01:00
Thiago Santos
896b3bfeed gstcheck: fix GI annotation
Add missing : to annotation
2014-12-18 12:04:22 -03:00
Vincent Penquerc'h
dd40d99710 baseparse: jump over large skips in pull mode
This bypasses the dumping of buffers we still have to do in push mode.

https://bugzilla.gnome.org/show_bug.cgi?id=730053
2014-12-18 13:11:46 +00:00
Sebastian Rasmussen
0b09573bbe check: Have autotools generate internal-check.h
Previously GStreamer got access to the libcheck interface by including
libs/gst/check/check.h which in turn included internal-check.h in the
same directory. internal-check.h was generated by copying
libs/gst/check/libcheck/check.h which in turn was generated from
check.h.in in the same directory. In this case generating
libs/gst/check/libcheck/check.h is unnecessary, in addition this file
was accidentally distributed in generated project tarballs.

Now libs/gst/check/internal-check.h is generated directly from
libs/gst/check/libcheck/check.h.in by configure. This means that the
libcheck source must include internal-check.h instead of the previously
generated libs/gst/check/libcheck/check.h. However the unnecessary
intermediate step is now skipped.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=741359
2014-12-16 16:32:39 +01:00
Sebastian Rasmussen
1cf733f282 check: Avoid requring (u)intmax_t in macros
Previously embedded libcheck versions did not depend on (u)intmax_t and
doing so would require projects using GStreamer's check framework to add
AX_CREATE_STDINT_H to their configure.ac. A workaround is to fallback to
glib types. This patch assumes that glib.h is always included before
internal-check.h which is ok since everything Gstreamer would include
gst/gstcheck.h instead of directly including internal-check.h.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727826
2014-12-07 17:32:30 +01:00
Sebastian Rasmussen
fb6ea425b0 check: Fix compilation error for iOS
libcheck includes CoreServices for its compat for clock_gettime(),
even though it never uses anything it declares. Let's remove it.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727826
2014-12-06 19:46:29 +01:00
Sebastian Rasmussen
85c8b5d2c4 check: Apply GStreamer-specific patches
Reintroduced patches:

 * Make sure that fail_if(1) actually fails
   from commit 9f99d056a2

New patches due to updated libcheck (based on 0.9.14):

 * Checks in m4/check-checks.m4 to cater for new dependencies
 * Conditional compile-time compat POSIX fallbacks for libcheck
 * Avoid relative paths for libcheck header files
 * Make timer_create() usage depend on posix timers, not librt
 * Rely on default AX_PTHREAD behavior to allow HAVE_PTHREAD to be used
   when checking for types and functions (like clock_gettime())
 * Avoid double declaration of clock_gettime() when availabe outside of
   librt by making compat clock_gettime() declaration conditional
 * check 0.9.9 renamed _fail_unless() and 0.9.12 later renamed it again
   to _ck_assert_failed(), so ASSERT_{CRITICAL,WARNING}() now calls this
   function
 * Remove libcheck fallback infrastructure for malloc(), realloc(),
   gettimeofday() and snprintf() since either they appear to be
   available or they introduce even more dependencies.

The result is an embedded check in gstreamer that has been tested by
running check tests in core, -base, -good, -bad, -ugly and rtsp-server
on Linux, OSX and Windows.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727826
2014-12-06 17:48:25 +01:00
Sebastian Rasmussen
f1df7aba8f check: Import version 0.9.14
This lifts the files almost verbatim (the changes being running though
gst-indent and fixing the FSF address) from the upstream respository.
Therefore this commit reverts some GStreamer-specific patches to check
that will be reintroduced next.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727826
2014-12-06 17:48:16 +01:00
Edward Hervey
05092eda8e basesink: clamp reported position based on direction
When using a negative rate (rate being segment.rate * segment.applied_rate),
we will end up reporting decreasing positions, therefore adjust the clamping
against last reported value accordingly.

Fixes positions getting properly reported with applied_rate < 0.0

https://bugzilla.gnome.org/show_bug.cgi?id=738092
2014-12-01 10:46:42 +01:00
Sebastian Dröge
154eefecc9 Don't compare booleans for equality to TRUE and FALSE
TRUE is 1, but every other non-zero value is also considered true. Comparing
for equality with TRUE would only consider 1 but not the others.

Also normalize booleans in a few places.
2014-12-01 09:51:37 +01:00
Thiago Santos
8f4ef80fc4 baseparse: update the duration variable before emitting the bus
Otherwise the application might still get the old value if it asks
between the message and the real update.
2014-11-28 17:00:17 -03:00
Sebastian Dröge
21321ce674 basetransform: Compare correct caps variable against NULL before comparing caps 2014-11-27 18:00:57 +01:00
Sebastian Dröge
92b69256e2 triggercontrolsource: Fix short description for the docs 2014-11-25 17:46:12 +01:00
Sebastian Dröge
a7f3571d02 basetransform: Fix caps equality check
Instead of checking if our outcaps are equivalent to the previous incaps, and
if that is the case not setting any caps on the pad... compare against our
previous outcaps because that's what we care about.

Fixes some cases where the outcaps became equivalent to the previous incaps,
but the previous outcaps were different and we were then sending buffers
downstream that were corresponding to the caps we forgot to set on the pad.
Resulting in crashes or image corruption.
2014-11-20 21:37:24 +01:00
Vincent Penquerc'h
7c4fbc9fb1 baseparse: allow skipping more data than we currently have
This can be useful for skipping large unwanted data, such as
large album art, when we know the size of it from a metadata
header.
2014-11-12 13:43:33 +00:00
Sebastian Dröge
a52184ed55 basetransform: Don't bother the subclass with setting the same caps multiple times 2014-11-09 10:42:55 +01:00
Sebastian Dröge
acc295c93b basesink: Don't bother the subclass with setting the same caps multiple times 2014-11-09 10:42:55 +01:00
Sebastian Dröge
674b555bec basesrc: Don't bother the subclass with setting the same caps multiple times 2014-11-09 10:42:54 +01:00
Jan Schmidt
f470d57edd dataqueue: Fix gst_data_queue_new() description.
Reword the function docs, which haven't made any sense since
gst_data_queue_new_full() was removed a few years ago.
2014-11-06 21:09:09 +11:00
Thibault Saunier
56606c5264 basesink: Answer the query position when receiving it from upstream
Currently we are just returning FALSE, but we do have the information
we should just answer the query the same way as when answering through
the GstElement.query vmethod default implementation.

https://bugzilla.gnome.org/show_bug.cgi?id=739580
2014-11-04 11:53:23 +01:00
Luis de Bethencourt
c42b525848 doc: Do not use deprecated gtk-doc 'Rename to' tag
GObject introspection GTK-Doc tag "Rename to" has been deprecated, changing to
rename-to annotation.

https://bugzilla.gnome.org/show_bug.cgi?id=739514
2014-11-02 15:17:57 +00:00
Tim-Philipp Müller
989e97d1dd basesink: don't unlock mutex that is not locked
Fixes 'Attempt to unlock mutex that was not locked'
warning with newer GLibs when sink is shut down in
certain situations. Triggered by the decodebin
test_reuse_without_decoders unit test in -base
sometimes, esp. on slower machines.
2014-10-24 12:51:07 +01:00
Thibault Saunier
1a02a59e42 timedvaluecontrolsource: Add some signals about values changes
In order for user to be able to track changes in the value set in
GstTimedValueControlSource the following signals have been added:
 * value-added
 * value-removed
 * value-changed

To be able to use a GstControlPoint to be marshalled into the signals,
the GstControlPoint structure is now registerd as a GBoxed type.

New API:
~~~~~~~
  * GstTimedValueControlSource::value-added
  * GstTimedValueControlSource::value-removed
  * GstTimedValueControlSource::value-added

https://bugzilla.gnome.org/show_bug.cgi?id=737616
2014-10-22 18:08:30 +02:00
Jan Schmidt
33e65d9358 collectpads: Use GST_PTR_FORMAT in debug to output buffer details
Use %GST_PTR_FORMAT instead of %p in debug output so all the buffer
details are output
2014-10-08 01:33:51 +11:00
Matej Knopp
d8aac32c78 baseparse: don't leak caps in gst_base_parse_process_streamheader
https://bugzilla.gnome.org/show_bug.cgi?id=737762
2014-10-03 12:36:27 +01:00
Tim-Philipp Müller
c78a1b111c Revert "baseparse: don't leak caps in gst_base_parse_process_streamheader"
This reverts commit 5e8b4bf085.

This causes refcounting criticals in the baseparse unit test.
2014-10-03 09:01:39 +01:00
Matej Knopp
5e8b4bf085 baseparse: don't leak caps in gst_base_parse_process_streamheader
https://bugzilla.gnome.org/show_bug.cgi?id=737762
2014-10-02 10:39:54 +03:00
Stefan Sauer
d5518edf12 fixme: bump leftover 0.11 fixme comments 2014-09-25 21:27:03 +02:00
Stefan Sauer
e8c5627802 basesrc: move the quick return up
Don't assign local vars if we skip anyway. Add logging for failure conditio
2014-09-25 20:33:17 +02:00
Jonas Holmberg
4a304a7774 flowcombiner: add a gst_flow_combiner_clear() method
https://bugzilla.gnome.org/show_bug.cgi?id=737359

API: gst_flow_combiner_clear()
2014-09-25 15:40:42 +01:00
Stefan Sauer
feeb2902da docs: fix a small contradition in the docs
The vmethod get_size() shall return the size in 'format' as configured by
_set_format().
2014-09-23 12:53:18 +02:00
Aurélien Zanelli
fefd6d06a1 basesrc: handle reference in set_allocation rather than in prepare_allocation
Otherwise we can forget to unref objects in error cases.

https://bugzilla.gnome.org/show_bug.cgi?id=736680
2014-09-16 10:17:28 +03:00
Sebastian Dröge
84c6e885f1 check: Use the name parameter of gst_check_setup_src_pad_by_name() and the sink variant
This was hardcoded to "sink" / "src" by accident in previous refactoring.
2014-09-15 13:08:09 +03:00
Thibault Saunier
87a79673b0 check: Add a function to check destruction of objects
Add a method letting people to ensure that unreffing one object
leads to its destruction, and possibly the destruction of more object
(think destruction of a GstBin etc...).

https://bugzilla.gnome.org/show_bug.cgi?id=736477
2014-09-12 17:18:21 +02:00
Tiago
076b83208a check: Adding documentation to the gst_check_setup_sink_pad_by_name function
https://bugzilla.gnome.org/show_bug.cgi?id=734190
2014-09-12 14:14:05 +03:00
Tim-Philipp Müller
d4a4a96f82 baseparse: minor docs fix 2014-09-09 20:43:02 +01:00
Thiago Santos
59c34a8ff7 baseparse: handle streamheaders by prepending them to the stream
Add a first_buffer boolean state flag to have baseparse do actions
before pushing data. This is used to check the caps for streamheader
buffers that are prepended to the stream, but only if the first buffer
isn't already marked with the _HEADER flag. In this case, it is assumed
that the _HEADER marked buffer is the same as the streamheader.

https://bugzilla.gnome.org/show_bug.cgi?id=735070
2014-08-27 10:30:09 -03:00
Tim-Philipp Müller
86d7a597f0 bytereader: add gst_byte_reader_peek_sub_reader() and _get_sub_reader()
Adds API to get or peek a sub-reader of a certain size from
a given byte reader. This is useful when parsing nested chunks,
one can easily get a byte reader for a sub-chunk and make
sure one never reads beyond the sub-chunk boundary.

API: gst_byte_reader_peek_sub_reader()
API: gst_byte_reader_get_sub_reader()
2014-08-15 10:03:26 +01:00
Aurélien Zanelli
b9fa37f074 docs: make explicit that the caps passed to gst_base_src_set_caps() are 'tranfer none'
https://bugzilla.gnome.org/show_bug.cgi?id=733741
2014-08-15 09:53:09 +01:00
Tim-Philipp Müller
f88a981997 base: and fix build with new g-i again 2014-08-14 14:38:57 +01:00
Tim-Philipp Müller
55498523e4 base: remove g-i annotation that makes older g-ir-scanner crash
Just remove one skip annotation that causes this:

  ** (g-ir-compiler:12458): ERROR **: Caught NULL node, parent=empty

with older g-i versions such as 1.32.1.
2014-08-14 14:27:13 +01:00
Tim-Philipp Müller
d9516d3c58 bytereader: use unchecked inline variant for get_remaining in more places
We've already done the g_return_*_if_fail (reader != NULL)
dance in those places, so no need to do it again.
2014-08-06 14:23:47 +01:00
Tiago Cesar Katcipis
91045ccd83 gstcheck: add docs for gst_check_setup_src_pad_by_name()
https://bugzilla.gnome.org/show_bug.cgi?id=734142
2014-08-03 00:27:14 +01:00
Thiago Santos
f8323b17fb bytereader: add gst_byte_reader_masked_scan_uint32_peek
Adds gst_byte_reader_masked_scan_uint32_peek just like
GstAdapter has a _peek and non _peek version

Upgraded tests to check that the returned value is correct in the
_peek version

API: gst_byte_reader_masked_scan_uint32_peek

https://bugzilla.gnome.org/show_bug.cgi?id=728356
2014-07-24 17:00:09 -03:00
Thibault Saunier
4c38895f4b baseparse: Return FLOW_FLUSHING when pushing a frame on a pad that has been flushed
When going to READY, it is possible that we are still pusing a frame but that
our srcpad has already been set to flushing. In that case we should not
post any error on the bus but instead cleanly return FLOW_FLUSHING.

https://bugzilla.gnome.org/show_bug.cgi?id=733320
2014-07-17 17:46:16 +02:00
Sebastian Rasmussen
863ba1a598 docs: Fix documentation typos and inconsistencies
* GstGlobalDeviceMonitor was renamed to GstDeviceMonitor
 * Expand GST_MESSAGE_DEVICE to the full enum value names
 * Correct the incorrect references to the GstDeviceProvider interfaces
 * Describe caps arguments for gstcheck interface
 * Add missing docs for GstNetAddressMeta and its add function
 * Add docs for toc helper macros
 * Avoid refering to GstValueList type as done elsewhere

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732786
2014-07-09 09:22:11 +02:00
Tim-Philipp Müller
ba31faf261 libs: gstcheck: check that mutex is locked before g_cond_wait*() is called
Sanity check to catch problems in unit test.
2014-07-06 12:13:04 +01:00
Tim-Philipp Müller
b2bbd1edfa libs: gstcheck: init and clear global mutex and cond variables 2014-07-06 12:12:20 +01:00
Vincent Penquerc'h
2dc8839234 basesink: reset QoS on segment event
This avoids spurious warnings about slow machine when upstream
sends new segments without flushing.
2014-07-01 16:30:23 +01:00
Evan Nemerson
5abc82e9f3 introspection: Assorted minor introspection and documentation fixes
https://bugzilla.gnome.org/show_bug.cgi?id=732534
2014-07-01 09:03:41 +02:00
Sebastian Dröge
4720e6d0e0 dataqueue: Hide from bindings
Other languages have their own data structures that are more convenient to
use.

https://bugzilla.gnome.org/show_bug.cgi?id=731303
2014-06-26 19:32:28 +02:00
Sebastian Dröge
0d5177b5fe queuearray: Hide from bindings
Other languages have their own data structures that are more convenient to use.

https://bugzilla.gnome.org/show_bug.cgi?id=731350
2014-06-26 19:32:18 +02:00
Evan Nemerson
eebff7b048 base: assorted introspection fixes and additions
https://bugzilla.gnome.org/show_bug.cgi?id=731542
2014-06-26 18:55:26 +02:00
Evan Nemerson
c38f3254f8 base: add (nullable) annotations to return values
https://bugzilla.gnome.org/show_bug.cgi?id=731542
2014-06-26 18:55:25 +02:00
Thiago Santos
b7516dbf7c baseparse: avoid returning _OK for _NOT_LINKED
When the parser receives non-aligned packets it can push a buffer
and get a not-linked return while still leaving some data still to
be parsed. This remaining data will not form a complete frame and
the subclass likely returns _OK and baseparse would take that
as the return, while it the element is actually not-linked.

This patch fixes this by storing the last flow-return from a push
and using that if a parsing operation doesn't result in data being
flushed or skipped.

https://bugzilla.gnome.org/show_bug.cgi?id=731474
2014-06-25 12:13:07 -03:00
Tim-Philipp Müller
f6e2dee6f9 flowcombiner: fix g-i transfer annotations 2014-06-16 09:18:45 +01:00
Edward Hervey
ecd8fd3511 flowcombiner: Fixed GBoxedCopyFunc
I'll just quote the most interesting man in the world:

"I don't usually push commits, but when I do I don't compile it
first"
2014-06-16 08:43:57 +02:00
Tim-Philipp Müller
b05eeb9df4 flowcombiner: keep a ref to the pads we're using
Needed for use via the boxed type.

https://bugzilla.gnome.org/show_bug.cgi?id=731355
2014-06-14 11:32:42 +01:00
Tim-Philipp Müller
49fedb521f flowcombiner: add boxed type for bindings
https://bugzilla.gnome.org/show_bug.cgi?id=731355
2014-06-14 10:54:41 +01:00
Nicolas Dufresne
d99e621533 bytereader: Use concistant derefence method
This is minor style fix to not mix *var and var[N].
2014-06-10 10:23:13 -04:00
Sungho Bae
d3b2f6e4b8 bytereader: Use pointer instead of index access
Currently the scan uses Boyer-moore method and its performance is good.
but, it can be optimized from an implementation of view.

The original scan code is implemented by byte array and index-based access.
In _scan_for_start_code(), the index is increasing from start to end and the
base address of the byte array is referred to as return value.

In the case, index-based access can be replaced by pointer access, which
improve the performance by removing index-related operations.

Its performace is enhanced by approximately 8% on arm-based embedded devices.
Although it seems trivial, it can affect the overall performance because the
_scan_for_start_code() function is very often called when H.264/H.265 video is
played.

In addition, the technique can apply for all architectures and it is good in
view of readability and maintainability.

https://bugzilla.gnome.org/show_bug.cgi?id=731442
2014-06-10 09:35:38 -04:00
Evan Nemerson
1cd4bd64b0 queuearray: fix expanding size of queue from 1
Without we would not actually expand and access
memory beyond the allocated region for the array.

https://bugzilla.gnome.org/show_bug.cgi?id=731349
2014-06-07 09:45:39 +01:00
Evan Nemerson
75e0a3c676 dataqueue: clear up documentation of gst_data_queue_new
The gpointer argument is passed to all three callbacks, not just one.

https://bugzilla.gnome.org/show_bug.cgi?id=731302
2014-06-07 09:30:14 +01:00
Evan Nemerson
1fe6d3ad08 introspection: fix some minor annotation bugs
https://bugzilla.gnome.org/show_bug.cgi?id=730982
2014-06-06 15:15:12 -04:00
Evan Nemerson
25af4ad652 base: use correct syntax in documentation more consistently
Previously, many constants were prefixed with # or unprefixed,
some functions and macros were prefixed with # instead of suffixed
with (), etc.

https://bugzilla.gnome.org/show_bug.cgi?id=731293
2014-06-06 15:09:21 -04:00
zhouming
2793f808ee baseparse: Pass rate of input segment to output segment
https://bugzilla.gnome.org/show_bug.cgi?id=729701
2014-06-06 13:53:35 +03:00
Tim-Philipp Müller
2f265b7571 flowcombiner: beautify headers a little 2014-05-27 10:09:02 +01:00
Tim-Philipp Müller
a6d9c1a3c3 docs: add GstFlowCombiner 2014-05-27 10:05:51 +01:00
Tim-Philipp Müller
0b194cf664 base: include flowcombiner header from base.h 2014-05-27 09:55:27 +01:00
Thiago Santos
9e8bd15c12 flowcombiner: add GstFlowCombiner
Adds a utility struct that is capable of storing and aggregating flow returns
associated with pads.

This way all demuxers will have a standard function to use and have the
same expected results.

Includes tests.

https://bugzilla.gnome.org/show_bug.cgi?id=709224
2014-05-26 15:29:53 -03:00
Sebastian Dröge
70b38dd937 basetransform: Passthrough ALLOCATION queries in passthrough mode even if we had no caps yet
Or if the element does not care about caps at all.

Also remove an assigned but unused local variable.

https://bugzilla.gnome.org/show_bug.cgi?id=710268
2014-05-26 14:24:15 +02:00
Tim-Philipp Müller
fa94322349 sparsefile: keep it private as helper API for downloadbuffer
There's no expectation that any other element or applications
might want to use this helper API any time soon, so keep it
private for the time being. There were open questions regarding
portability and binding-friendliness too.

This also removes the gio dependency of -base again.

https://bugzilla.gnome.org/show_bug.cgi?id=729951
https://bugzilla.gnome.org/show_bug.cgi?id=729949
2014-05-13 20:05:55 +01:00
Nicolas Dufresne
e73907200c basetransform: Correctly reset configuration
When pool can't we use, and we fall back to default pool, we need to
correctly reset that pool configuration.
2014-05-09 14:30:03 -04:00
Edward Hervey
bf9018b77c nettimeprovider: Use non-freed variable
address is only used temporarily. Use the proper variable instead.

CID #1212189
2014-05-09 14:46:59 +02:00
Nicolas Dufresne
157befa04c pool-nego: Correctly reset the configuration
When pool cannot be used, correctly reset the configuration before
configuration a default pool.
2014-05-08 14:12:16 -04:00
Nicolas Dufresne
23e69d98d8 pool-nego: Retry setting configuration with modified config
Buffer pool set_config() may return FALSE if requested configuration needed
small changes. Reget the config and try setting it again (validating the
changes first). This ensure we have a configured pool if possible.

https://bugzilla.gnome.org/show_bug.cgi?id=727916
2014-05-08 13:11:14 -04:00
Tim-Philipp Müller
250f89a7e9 sparsefile: add some Since markers to docs 2014-05-08 16:30:55 +01:00
Tim-Philipp Müller
4a6ab37591 sparsefile: sprinkle G_BEGIN_DECLS / G_END_DECLS
for c++, and remove outdated comment, and add
new unit test to .gitignore.
2014-05-08 16:27:21 +01:00
Wim Taymans
45855e2795 Add new downloadbuffer element
See https://bugzilla.gnome.org/show_bug.cgi?id=680183
2014-05-08 15:53:45 +02:00
Tim-Philipp Müller
a10ca2ee13 check: use _exit() instead of exit() in fail_unless() so we exit immediately
exit() will call atexit handlers, which may try to
clean up things or wait for things to get cleaned up,
which we don't want or need. We just want to stop
and let the parent know about the failure as quickly
as possible in case fork() is used.

Fixes timeouts on assert failures in checks where
an exit handler waits for things to stop, but they
don't stop because they haven't been shut down,
and they haven't been shut down because there's no
simple way to do so on failures.

http://sourceforge.net/p/check/patches/50/
2014-05-07 10:44:34 +01:00
Nicolas Dufresne
3895e431bd basesink: Always render prepared buffer
Currently, if prepare() takes too much time, we skip the call to render().
The side effect of this, is that we endup starving the render(). The solution
in this patch is to always render frames that are on time before prepare() is
executed. This will maximize the number of frames we display and smoothly
degrade the rendering performance.

https://bugzilla.gnome.org/show_bug.cgi?id=729335
2014-05-02 18:52:44 -04:00
Tim-Philipp Müller
6eb6d9ec38 docs: remove outdated and pointless 'Last reviewed' lines from docs
They are very confusing for people, and more often than not
also just not very accurate. Seeing 'last reviewed: 2005' in
your docs is not very confidence-inspiring. Let's just remove
those comments.
2014-04-26 21:21:51 +01:00
Sebastian Dröge
63c1728040 basesrc: Make sure to always hold the LIVE_LOCK when going to the flushing label
https://bugzilla.gnome.org/show_bug.cgi?id=728596
2014-04-20 12:01:01 +02:00
Antoine Jacoutot
3e24bbefba libs: g-ir-scanner: do not hardcode libtool path
https://bugzilla.gnome.org/show_bug.cgi?id=726571
2014-04-17 09:26:20 +01:00
Edward Hervey
145517aa64 check: Fix exported symbol name
it's _template and not _templ
2014-04-16 07:59:27 +02:00
Sebastian Dröge
917a033d04 check: Add new API to set up pads from non-static pad templates 2014-04-15 12:58:59 +02:00
Tim-Philipp Müller
ed9d0381b2 testclock: replace newly-added GstTestClockIDList structure with a simple GList
Keep it simple. Likely also makes things easier for bindings,
and efficiency clearly has not been a consideration given how
the existing code handled these lists.
2014-04-12 15:33:50 +01:00
Tim-Philipp Müller
2e4900ba94 docs: testclock: fix up Since markers 2014-04-12 15:33:46 +01:00
Tim-Philipp Müller
8d4f245942 testclock: add back gst_test_clock_wait_for_pending_id_count()
.. but deprecate it. ABI stability and all that.
It's a dangerous and racy function to use.
2014-04-12 15:33:43 +01:00
Tim-Philipp Müller
f30ab21ba7 testclock: remove unused variable
Fixes compiler warning.
2014-04-12 15:33:36 +01:00
Havard Graff
3892cc4c2d testclock: add support for waiting and releasing multiple GstClockIDs
In order to be deterministic, multiple waiting GstClockIDs needs to be
released at the same time, or else one can get into the situation that
the one being released first can add itself back again before the next
one waiting is released.

Test added for new API and old tests rewritten to comply.
2014-04-12 15:33:31 +01:00
Jose Antonio Santos Cadenas
f880742638 baseparse: Fix memory leak
Queued frames were not released after being pushed, this
caused a leak of the GstBaseParseFrame structure.

https://bugzilla.gnome.org/show_bug.cgi?id=727883
2014-04-09 10:47:39 +02:00
Tim-Philipp Müller
8924782dd4 Revert "check: only call setpgid on valid child PIDs"
This reverts commit b9313afc75.

This should be fixed in upstream libcheck instead. We want
to keep diff of our local copy to upstream libcheck
to a minimum.
2014-04-07 17:47:30 +01:00
Vincent Penquerc'h
b9313afc75 check: only call setpgid on valid child PIDs
Coverity 206186
2014-04-07 15:40:45 +01:00
Edward Hervey
6c2c49a590 baseparse: Remove always-true-checks
a gsize is guaranteed to be positive on all systems since it's an
unsigned value.

CID #1037147
2014-04-05 11:52:03 +02:00
Edward Hervey
456f28cc61 adapter: Remove always-true-checks
a gsize is guaranteed to be positive on all systems since it's an
unsigned value.

CID #1037145
CID #1037146
2014-04-05 11:44:01 +02:00
Sebastian Dröge
37670af79c baseparse: Make sure to set the DISCONT flag on the first buffer of each GOP in reverse playback mode 2014-04-03 20:32:02 +02:00
Thiago Santos
03a2388b60 basesrc: removing duplicated inner if
The inner if replicates the same code of the outer and is useless
as flag_segment will always be true.

Found by coverity.
2014-04-03 13:54:19 -03:00
Sebastian Dröge
a76db74496 baseparse: Fix splitting and reversing of GOPs in reverse playback mode
We iterate the current discont group backwards and push each GOP forwards,
starting from the last one. However if the first buffer in the current
discont group is a keyframe, we will keep it around until next time,
which is far from ideal. Just push it.
2014-03-29 10:32:25 +01:00
Wim Taymans
093574053f basesink: copy last_sample on DRAIN
Make sure we don't hold a ref to a buffer from before the DRAIN query by
making a copy of the last_buffer.
2014-03-24 16:34:27 +01:00
Sebastian Dröge
ba943a82c0 basesink: Update start time when we lose our state
Otherwise we report not the correct position while the state is lost.
2014-03-18 18:11:15 +01:00
Sebastian Dröge
f7b71d3007 basesink: Don't clip the reported position in PAUSED to after the last buffer end timestamp
Otherwise we jump forward when pausing, and go backwards a bit again
when resuming playback.
2014-03-18 16:48:52 +01:00
Mathieu Duponchelle
d784d59262 collectpads: When seek flushed, immediately set eospads to 0
This prevents situations where a first branch would get seeked and
receive a buffer before all branches got seeked, and thus collected
would get called based on EOS from the previous segment.

As a consequence, during the process of seeking, don't decrease
the eospads number when a FLUSH_STOP is received.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=724571
2014-03-16 18:15:17 +01:00
Sebastian Dröge
595481c759 collectpads: Unref peer pad 2014-03-16 17:47:38 +01:00
Mathieu Duponchelle
c86e53ab77 collectpads: Forward seek events to the peer directly
Taken from the adder seek handling code.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726461
2014-03-16 17:47:38 +01:00
Sebastian Rasmussen
3de939cb5b adapter: Adapt gst_adapter_copy() for bindings
This is done by introducing a new gst_adapter_copy_bytes() call that
returns a GBytes structure.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725476
2014-03-15 13:16:16 +01:00
Sebastian Rasmussen
034a3ab86f docs: Fix typos and remove unknown annotations
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725517
2014-03-02 21:47:52 +01:00
Thiago Santos
2c2e55789d basesrc: Do not send eos when seeking after last buffer
If pushing the last buffer triggers a seek from downstream, do not
go into EOS if a new segment was requested.

Contains unit test

https://bugzilla.gnome.org/show_bug.cgi?id=724757
2014-02-24 10:37:57 -03:00
Stefan Sauer
6fc23cd016 check: also use the glob on GST_CHECKS when forcing to run broken tests
GST_CHECKS can be simply "test*" to run run all tests (including those that are
marked broken). Update the sparse comments a bit to tell how this works.
2014-02-19 11:04:17 +01:00
Wim Taymans
04a6c661c8 basesrc: in automatic_eos mode, don't modify the size
Don't set the size to -1 in automatic_eos mode (which also updates the
duration to -1). We only want automatic_eos mode influence the maxsize
calculations without any side effects.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=724564
2014-02-18 11:57:49 +01:00
Sebastian Dröge
f47c704b99 basesrc: Add gst_base_src_set_automatic_eos() API
This defaults to TRUE and if it is set to FALSE it is the subclasses
responsibility to return GST_FLOW_EOS from the create() vmethod once
the stream is done.
2014-02-13 12:09:06 +01:00
Tim-Philipp Müller
5e7a7aeaf1 check: add support for blacklisting checks via GST_CHECKS_IGNORE 2014-02-09 16:39:53 +00:00
Brendan Long
f85c1c4648 gst: clear floating references for GstTask, GstTaskPool and GstCollectPads
https://bugzilla.gnome.org/show_bug.cgi?id=710342
2014-02-06 22:50:53 +01:00
Stefan Sauer
f6d638153c docs: fix more gtk-doc warnings 2014-02-01 16:18:13 +01:00
Thiago Santos
78d13b6642 basesrc: do not forget to clear the forced_eos flag
otherwise it will always use the seqnum of the event
sent by the application
2014-01-24 13:36:33 -03:00
Thiago Santos
fdfc6dc983 basesrc: preserve seqnum of eos events sent by the user
Store the eos event seqnum and use it when creating the
new eos event to be pushed downstream. To know if the eos
was caused by the eos events received on send_event, a
'forced_eos' flag is used to use the correct seqnum on
the event pushed downstream.

Useful if the application wants to check if the EOS message
was generated from its own pushed EOS or from another source
(stream really finished).

Also adds a test for this

https://bugzilla.gnome.org/show_bug.cgi?id=722791
2014-01-24 09:31:44 -03:00
Thiago Santos
a3ff2976cc baseparse: do not accumulate buffers on passthrough mode
If on passthrough during reverse playback, do not accumulate buffers as
baseparse will never check for DISCONT flag to push those buffers.
So just push buffers downstream as if it was forward playback.

https://bugzilla.gnome.org/show_bug.cgi?id=721941
2014-01-13 08:43:28 -03:00
Stefan Sauer
6a05291ca2 basesrc: don't confuse GST_PAD_MODE_NONE and PULL
Use a switch-case to explicitly handle all pad-modes. This way we don't log an error when the pad is not yet activated.
2014-01-09 08:49:40 +01:00
Thiago Santos
51fa54a281 baseparse: do not ignore TIME segments
TIME segments are being ignored and a standard initialized
segment is used instead. This causes issues as not properly detecting
reverse playback or not cliping output based on the segment.

This seems to be a regression from one of the GstSegment/GstEvent
redesigns on the 0.10 -> 1.0 transition
2014-01-08 16:40:23 -03:00
Wim Taymans
888ab23968 collectpads: take offset into account for expected segment position
The firt valid segment position is start + offset.
Also add some more debug and a FIXME
2014-01-08 15:04:00 +01:00
Stefan Sauer
74adc33982 basesrc: demote error to warning
This is not an error. A subclass returning FALSE for is_seekable() is one way of
saying that we can't operate in pull mode.
2014-01-06 21:10:33 +01:00
Thiago Santos
e02c00a58a baseparse: remove pending_segment as it was being misused
It wasn't required, instead baseparse was using it to check the media
caps to identify if it was handling audio or video.

The pending_segment was removed and a checked_media boolean
replaced it for a more accurate naming.

https://bugzilla.gnome.org/show_bug.cgi?id=721350
2014-01-02 16:48:23 -03:00
Thiago Santos
accaadf52a baseparse: push pending events before GAP event
A GAP event is handled as an empty buffer by sinks and they expect
to receive start up events before GAP events (like a segment).

This is important specially if there is a GAP at the beginning of
a stream (before any buffers) so that the segment event can be
pushed downstream before the GAP

https://bugzilla.gnome.org/show_bug.cgi?id=721350
2014-01-02 16:38:40 -03:00
Thiago Santos
d917eb7160 baseparse: refactor pending events pushing
Refactor code repeated 3 times to a common function

https://bugzilla.gnome.org/show_bug.cgi?id=721350
2014-01-02 16:38:40 -03:00
Tim-Philipp Müller
2ddbe8df49 nettimeprovider: remove unnecessary NULL check
Error is never NULL when we break out of the loop.

COVERITY CID 1037151
2013-12-30 16:10:08 +00:00
Tim-Philipp Müller
0735c052e1 Revert "nettimeprovider: Remove dead code"
This reverts commit 9649cd4ca1.

This is not right, and it's also not what coverity
is complaining about.
2013-12-30 16:07:08 +00:00
Edward Hervey
9649cd4ca1 nettimeprovider: Remove dead code
err is always NULL by the point we reach this line

COVERITY CID 1037151
2013-12-30 16:51:01 +01:00
David Svensson Fors
892d36211f basesrc: use segment start if DTS for first buffer is unset
https://bugzilla.gnome.org/show_bug.cgi?id=720199
2013-12-17 10:47:55 +01:00
Tim-Philipp Müller
fcfe7085b9 bytereader: add inline variant of gst_byte_reader_init() 2013-12-14 18:38:41 +00:00
Tim-Philipp Müller
a6010a9155 docs: fix docs for gst_queue_array_peek_head() 2013-12-14 18:31:38 +00:00
Edward Hervey
b363ab17e7 controller: Fix out-of-bounds detection
We want to abort if we higher than the maximum *OR* lower than the minimum
accepted value.

Detected by Coverity.
2013-12-10 17:09:07 -05:00
Sebastian Rasmussen
53ae1b2c9c docs: Fix typos in function/object descriptions
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720029
2013-12-07 17:11:12 +00:00
Sebastian Rasmussen
e8ecf3c407 Fix some typos in code comments and debug messages
https://bugzilla.gnome.org/show_bug.cgi?id=720029
2013-12-07 17:09:39 +00:00
Olivier Crête
68697682ce basesrc: Set format to TIME if do-timestamp is TRUE
https://bugzilla.gnome.org/show_bug.cgi?id=702842
2013-12-05 13:29:05 -05:00
Sebastian Rasmussen
b40fa2b8c3 docs: cosmetic changes in references/decriptions
* fix typo GstBufferFlag -> GstBufferFlags
 * fix typo GstFeatures -> GstCapsFeatures
 * fix typo GstAllocatorParams -> GstAllocationParams
 * fix typo GstContrlSources -> GstControlSource
 * do not refer to gstcheck as an object
 * make references gtk_init() and tcase_set_timeout() not be references
 * gst_element_get_pad() renamed gst_element_get_static_pad()
 * gst_clock_id_wait_async_full() renamed gst_clock_id_wait_async()
 * _drop_element() is really gst_queue_array_drop_element()
 * gst_pad_accept_caps() was removed, do not refer to it
 * separate GST_META_TAG_MEMORY_STR declaration from description
 * do not describe removed gst_collect_pads_collect()
 * correctly link to GstElementClass' virtual set_context()

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719614
2013-12-02 21:01:08 +00:00
Jan Schmidt
73a58cb0a2 netclock: Fix docstring for round-trip-limit and uninit access warning.
Fix a typo in a doc string - the property is round-trip-limit, not
roundtrip-limit.

Remove a bogus GST_WARNING that can print an uninitialised variable
and is redundant anyway.
2013-11-27 18:32:22 +11:00
Carlos Rafael Giani
1ce704d45d netclock: Add round-trip-limit parameter
Sometimes, packets might take a very long time to return. Such packets
usually are way too late and destabilize the regression with their
obsolete data. On Wi-Fi, round-trips of over 7 seconds have been observed.

If the limit is set to a nonzero value, packets with a round-trip period
larger than the limit are ignored.

Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>

https://bugzilla.gnome.org/show_bug.cgi?id=712385
2013-11-27 18:15:20 +11:00
Jan Schmidt
75aa78ca70 netclock: Fix C99 comment 2013-11-26 02:43:54 +11:00
Jan Schmidt
5b2df52c6a netclock: Implement rolling-average filter on observations.
Keep a rolling average of the round trip time for network clock
observations, favouring shorter round trips as being more accurate.

Don't pass any clock observation to the clock slaving if it has a
round-trip time greater than 2 times the average.

Actual shifts in the network topology will be noticed after some
time, as the rolling average incorporates the new round trip times.
2013-11-26 02:20:14 +11:00
Jan Schmidt
5db5fc4227 basesink: Add debug into gst_base_sink_default_query() for accept_caps 2013-11-26 02:20:14 +11:00
Tim-Philipp Müller
9f669e5ea5 docs: cosmetic since marker fixes 2013-11-16 16:09:40 +00:00
Mark Nauwelaerts
e24722c52c baseparse: ensure to preserve upstream timestamps
... rather than have subclass coming up with an internally parsed one.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707230
2013-11-16 15:17:57 +01:00
Sebastian Dröge
959e87cf2a collectpads: Always send SEEK events to all pads, even if one fails 2013-11-11 16:50:42 +01:00
Sebastian Dröge
911af13b5c collectpads: Update documentation for flushing seek handling 2013-11-11 16:50:42 +01:00
Sebastian Dröge
6250120d76 collectpads: Don't leak seek events 2013-11-11 16:50:42 +01:00
Alessandro Decina
7aec5739eb collectpads: implement flushing seek support
Implement common flushing seek logic in GstCollectPads. Add new
API so that elements can opt-in to using the new logic
(gst_collect_pads_src_event_default) and can extend it
(gst_collect_pads_set_flush_function) to flush any internal
state.

See https://bugzilla.gnome.org/show_bug.cgi?id=706779 and
https://bugzilla.gnome.org/show_bug.cgi?id=706441 for the
background discussion.

API: gst_collect_pads_set_flush_function()
API: gst_collect_pads_src_event_default()

https://bugzilla.gnome.org/show_bug.cgi?id=708416
2013-11-11 16:50:42 +01:00
Mark Nauwelaerts
e10af7c409 basesrc: mind boggling wrap when comparing offsets 2013-11-02 16:13:27 +01:00
Mark Nauwelaerts
8da78d1595 baseparse: try first frame pts and dts for a valid start timestamp 2013-11-02 16:13:27 +01:00
Mark Nauwelaerts
3aaa3fcf92 baseparse: print proper variable in debug statement 2013-11-02 16:13:27 +01:00
Philip Withnall
3c8424d9ae net: Constify a parameter to gst_net_client_clock_new()
Even though this parameter is not used, it should be const to fit in with the
coding standards for other similar parameters. Client code already passes in
const strings under the expectation that they won’t be modified.

https://bugzilla.gnome.org/show_bug.cgi?id=710442
2013-10-18 09:59:25 +01:00
Thibault Saunier
0564c1c2b8 collectpads: Call the collected function while it returns FLOW_OK
This allows us to make sure the elements is EOS and does not have
remaining buffers to be drained.

https://bugzilla.gnome.org/show_bug.cgi?id=709637
2013-10-09 20:29:02 -03:00
Brendan Long
a89d53dd32 docs: fix spelling of "generic" in GstBaseSrc's documentation.
https://bugzilla.gnome.org/show_bug.cgi?id=708870
2013-09-26 21:15:27 +01:00
Sebastian Dröge
20f1c96c89 collectpads: Make sure that the object lock is always taken when accessing the private pad list
https://bugzilla.gnome.org/show_bug.cgi?id=708636
2013-09-24 10:44:34 +02:00
Mathieu Duponchelle
c79e5bbcad collectpads: Use private pad list in set_flushing_unlocked
pads->data is the public list. It is dynamically rebuilt at each call to
check_collected, in check_pads to be specific. When you add a pad and
collectpads have been started, it is not added to the public list.

Thus there exists a possible race where :

1) You would add a pad to collectpads while running.
2) You set collectpads to flushing before check_collected has been called again
-> the pad is not set to flushing
3) the pad starts pushing data as downstream might not be prepared, in the case
of adder it then returns FLOW_FLUSHING.
4) elements like demuxers, when they get a FLOW_FLUSHING, stop their tasks,
never to be seen again.

https://bugzilla.gnome.org/show_bug.cgi?id=708636
2013-09-24 10:44:34 +02:00
Wim Taymans
cba26c9ed9 tests: handle unscheduled entries correctly
Make the testclock return GST_CLOCK_UNSCHEDULED when an unscheduled entry is
used for gst_clock_wait() or gst_clock_wait_async().

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=708605
2013-09-23 11:47:14 +02:00
Tim-Philipp Müller
0e66790134 check: testclock: fix function guards
Should be g_return_*() not g_assert(), even if it's for tests only.
2013-09-19 17:12:14 +01:00
Tim-Philipp Müller
cc4ba028ff check: testclock: don't put code with side-effects in g_assert()
Fixes unit test failures when -DG_DISABLE_ASSERT is used.

https://bugzilla.gnome.org/show_bug.cgi?id=706551
2013-09-19 16:43:18 +01:00
Rico Tzschichholz
f1971fe1e9 controlbindings: fix pspec relaxation for control source properties
The change should have been from PARAM_CONSTRUCT_ONLY to
PARAM_CONSTRUCT, otherwise bindings are affected, since
they look for the CONSTRUCT flag.

See ec55363d
2013-09-10 16:41:30 +01:00
Mathieu Duponchelle
8d24c4e451 basetransform: implement a default transform_meta.
If a metadata has no dependency as shown by the tags, copy it.
2013-09-09 15:32:18 +02:00
Thiago Santos
3dc8ee97e5 basesrc: preserve seqnum on segments after seeks
The seqnum of the segment after a seek should be the same of
the seek event. Downstream elements might rely on seqnums to
identify events related to a seek.

This is particularly important when a demuxer maps a TIME seek
into a BYTES seek for upstream and it needs to identify the
corresponding segment event and map it back into TIME to push
downstream, possibly using the values from the original seek
event.

https://bugzilla.gnome.org/show_bug.cgi?id=707530
2013-09-05 15:40:04 -03:00
Zaheer Abbas Merali
d1d99af229 collectpads: Don't unref NULL GstCollectData
If a pad is removed while a collectpads element (say adder) is in a chain
function waiting to be collected, there is a possibility that an unref happens
on a NULL pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=707536
2013-09-05 14:15:30 +02:00
Tim-Philipp Müller
3057001622 basesink: demote log message, don't spam INFO level when handling buffer lists 2013-08-29 11:07:38 +01:00
Edward Hervey
307d67f8c0 basetransform: Don't push out identical caps
This avoids triggering plenty of extra code/methods/overhead downstream when
we can just quickly check whenever we want to set caps whether they are
identical or not

https://bugzilla.gnome.org/show_bug.cgi?id=706600
2013-08-22 19:06:47 +02:00
Jonas Holmberg
3c4873458e check: Call gst_deinit() at exit of all processes 2013-08-16 10:21:19 +01:00
Wim Taymans
44811ab650 basesrc: improve flush-start handling
Use custom code to implement flush-stop, we can't reuse the set_flushing code
because we can't touch the live_playing flag and we need to signal the
streaming thread.
2013-08-14 17:44:48 +02:00
Wim Taymans
9006f203d0 basesrc: stop flushing in flush-stop 2013-08-14 17:14:15 +02:00
Wim Taymans
d95c227641 basesrc: handle flush better
Unlock the streaming thread when flushing so that we can
insert the flush-stop correctly.
2013-08-14 16:58:41 +02:00
Edward Hervey
0bfc375a54 check: Don't use nodist headers on gir scanner
Just creates noise and bogus symbols
2013-08-14 07:21:06 +02:00
Edward Hervey
3c49b5d23b baseparse: Add a property to disable passthrough
In some specific cases (like transmuxing) we want to force the element
to actually parse all incoming data even if the element deems it is not
necessary.

This property simply ignores requests from the element to enable passthrough
mode which results in processing always being enabled.

https://bugzilla.gnome.org/show_bug.cgi?id=705621
2013-08-13 17:11:35 +02:00
Thiago Santos
581c4297d0 dataqueue: add gst_data_queue_push_force
Adds a variant of the _push function that doesn't check the queue limits
before adding the new item. It is useful when pushing an element to the
queue shouldn't lock the thread.

One particular scenario is when the queue is used to serialize buffers
and events that are going to be pushed from another thread. The
dataqueue should have a limit on the amount of buffers to be stored to
avoid large memory consumption, but events can be considered to have
negligible impact on memory compared to buffers. So it is useful to be
used to push items into the queue that contain events, even though the
queue is already full, it shouldn't matter inserting an item that has
no significative size.

This scenario happens on adaptive elements (dashdemux / mssdemux) as
there is a single download thread fetching buffers and putting into the
dataqueues for the streams. This same download thread can als generate
events in some situations as caps changes, eos or a internal control
events. There can be a deadlock at preroll if the first buffer fetched
is large enough to fill the dataqueue and the download thread and the
next iteration of the download thread decides to push an event to this
same dataqueue before fetching buffers to other streams, if this push
locks, the pipeline will be stuck in preroll as no more buffers will be
downloaded.
There is a somewhat common practice in dash streams to have a single
very large buffer for audio and one for video, so this will always
happen as the download thread will have to push an EOS right after
fetching the first buffer for any stream.

API: gst_data_queue_push_force

https://bugzilla.gnome.org/show_bug.cgi?id=705694
2013-08-13 12:00:48 -03:00
Nicolas Dufresne
de75bca9b3 bytereader: Accelerate MPEG/H264 start code scanning
Accelerate MPEG/H264 start code scanning using Boyer-Moor bad character
heuristic.

https://bugzilla.gnome.org/show_bug.cgi?id=702357
2013-08-10 18:54:34 -04:00
Adrian Pardini
d4f6c8e0e6 controller: fixes int overflow with properties that span +-INT_MAX
When the range for a property is defined as -INT_MAX-1 .. INT_MAX, like
the xpos in a videomixer the following expression in the macro
definitions of convert_g_value_to_##type (and the equivalent in
convert_value_to_##type)

v = pspec->minimum + (g##type) ROUNDING_OP ((pspec->maximum - pspec->minimum) * s);

are converted to:

v = -2147483648 + (g##type) ROUNDING_OP ((2147483647 - -2147483648) * s);

(2147483647 - -2147483648) overflows to -1 and the net result is:

v = -2147483648 + (g##type) ROUNDING_OP (-1 * s);

so v only takes the values -2147483648 for s == 0 and 2147483647
for s == 1.

Rewriting the expression as minimum*(1-s) + maximum*s gives the correct
result in this case.

https://bugzilla.gnome.org//show_bug.cgi?id=705630
2013-08-08 12:31:49 +02:00
Kjartan Maraas
280f557380 docs: some small gtk-doc markup fixes
https://bugzilla.gnome.org/show_bug.cgi?id=705156
2013-07-30 23:33:28 +01:00
Edward Hervey
991d6462a8 typefindhelper: Avoid using buffer_get_size in tight loops
Calling gst_buffer_get_size represented 2/3 of the cost of helper_find_peek
which was called whenever a typefindfunction wanted to peek at data.

We already know the size (from the GstMapInfo), so just use that.
2013-07-30 06:59:44 +02:00
Sebastian Dröge
ef8455d395 base: Fix handling of SEGMENT query
The values should be in stream-time, and start/stop should not
be swapped for negative rates.
2013-07-29 12:10:45 +02:00
Sebastian Dröge
eb67ca7625 baseparse: Implement SEGMENT query 2013-07-29 10:49:18 +02:00
Thiago Santos
aa5ea6d80e baseparse: fix seqnum handling for seeks
Use the same seqnum as the seek for flushes/segments that are
caused by the seek. Also do the same for segment events

Fixes #676242
2013-07-25 15:19:35 -03:00