Commit graph

2824 commits

Author SHA1 Message Date
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
Sebastian Dröge
fe3249b0e1 clock: Add GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC and related API
gst_clock_wait_for_sync(), gst_clock_is_synced() and gst_clock_set_synced()
plus a signal to asynchronously wait for the clock to be synced.

This can be used by clocks to signal that they need initial synchronization
before they can report any time, and that this synchronization can also get
completely lost at some point. Network clocks, like the GStreamer
netclientclock, NTP or PTP clocks are examples for clocks where this is useful
to have as they can't report any time at all before they're synced.

https://bugzilla.gnome.org/show_bug.cgi?id=749391
2015-06-03 13:53:27 +02:00
Luis de Bethencourt
94df7f329b docs: fix typo in draft-klass.txt 2015-05-26 14:46:16 +01:00
Luis de Bethencourt
8115dd07ae code-reviews: remove obsolete code reviews
This obsolete folder hasn't been touched since 2001 and has no purpose. It
confuses new developers.
2015-05-26 14:03:28 +01:00
Jan Schmidt
f9e5178dd1 gstvalue: Add GstFlagSet type
GstFlagSet is a new type designed for negotiating sets
of boolean capabilities flags, consisting of a 32-bit
flags bitfield and 32-bit mask field. The mask field
indicates which of the flags bits an element needs to have
as specific values, and which it doesn't care about.

This allows efficient negotiation of arrays of boolean
capabilities.

The standard serialisation format is FLAGS:MASK, with
flags and mask fields expressed in hexadecimal, however
GstFlagSet has a gst_register_flagset() function, which
associates a new GstFlagSet derived type with an existing
GFlags gtype. When serializing a GstFlagSet with an
associated set of GFlags, it also serializes a human-readable
form of the flags for easier debugging.

It is possible to parse a GFlags style serialisation of a
flagset, without the hex portion on the front. ie,
+flag1/flag2/flag3+flag4, to indicate that
flag1 & flag4 must be set, and flag2/flag3 must be unset,
and any other flags are don't-care.

https://bugzilla.gnome.org/show_bug.cgi?id=746373
2015-05-25 16:23:33 +10:00
Reynaldo H. Verdejo Pinochet
5d14d5bb7c docs/design/part-negotiation.txt: minor corrections 2015-05-16 14:14:30 -03:00
Stefan Sauer
b8c6ebd0f2 gstobject: add gst_object_has_as_ancestor and deprecate previous function
The old gst_object_has_ancestor will call the new code. This establishes the
symetry with the new gst_object_has_as_parent.

API: gst_object_has_as_ancestor()
2015-05-15 13:55:19 +02:00
Stefan Sauer
3492105a06 gstobject: rename gst_object_has_parent to gst_object_has_as_parent
This avoid confusion with a potential punction that check if a gstobject has-a
parent.

API: gst_object_has_as_parent()
2015-05-15 13:45:18 +02:00
Reynaldo H. Verdejo Pinochet
e7e36d36fd docs/design/part-conventions.txt: minor corrections 2015-05-09 22:10:30 -03:00
Reynaldo H. Verdejo Pinochet
c4b558e0e3 docs/design/part-context.txt: minor corrections 2015-05-09 22:04:52 -03:00
Reynaldo H. Verdejo Pinochet
25257ccf58 docs/design/part-clocks.txt: minor corrections 2015-05-09 22:01:04 -03:00
Tim-Philipp Müller
a70055b585 docs: update porting guides to mention new device probing API 2015-05-02 17:16:38 +01:00
Reynaldo H. Verdejo Pinochet
e394e62578 docs/design/part-states.txt: minor corrections 2015-05-01 20:39:26 -03:00
Alex Ashley
abdafb0d64 protection: add GstProtectionMeta to support protected content
In order to support some types of protected streams (such as those
protected using DASH Common Encryption) some per-buffer information
needs to be passed between elements.

This commit adds a GstMeta type called GstProtectionMeta that allows
protection specific information to be added to a GstBuffer. An example
of its usage is qtdemux providing information to each output sample
that enables a downstream element to decrypt it.

This commit adds a utility function to select a supported protection
system from the installed Decryption elements found in the registry.
The gst_protection_select_system function that takes an array of
identifiers and searches the registry for a element of klass Decryptor that
supports one or more of the supplied identifiers. If multiple elements
are found, the one with the highest rank is selected.

This commit adds a unit test for the gst_protection_select_system
function that adds a fake Decryptor element to the registry and then
checks that it can correctly be selected by the utility function.

This commit adds a unit test for GstProtectionMeta that creates
GstProtectionMeta and adds & removes it from a buffer and performs some
simple reference count checks.

API: gst_buffer_add_protection_meta()
API: gst_buffer_get_protection_meta()
API: gst_protection_select_system()
API: gst_protection_meta_api_get_type()
API: gst_protection_meta_get_info()

https://bugzilla.gnome.org/show_bug.cgi?id=705991
2015-04-18 12:24:06 +01:00
Tim-Philipp Müller
199c8ba561 docs: design: fix some 0.10-isms in GstSegment docs
1) segment.accum -> segment.base

2) Refer to GstSegment members as S.foo instead of
NS.foo, the event is now called a segment event
rather than newsegment event.

3) There's no more abs_rate field in GstSegment,
and there never was an abs_applied_rate field.

https://bugzilla.gnome.org/show_bug.cgi?id=690564
2015-04-04 19:31:42 +01:00
Nicolas Dufresne
e684e9ea68 doc: Add gst_segment_to_running_time_full 2015-04-03 16:32:16 -04:00
Vincent Penquerc'h
d6ae9c0feb segment: add gst_segment_is_equal
It beats memcmp due to the 'reserved' fields.

API: gst_segment_is_equal()

Found via, but probably not directly linked to,
https://bugzilla.gnome.org/show_bug.cgi?id=738216
2015-04-03 12:10:33 +01:00
Olivier Crête
59d9992ed0 pipeline: Add binding friendly gst_pipeline_get_pipeline_clock()
Also skip gst_pipeline_get_clock() and gst_pipeline_set_clock() from the
bindings as they are confused with gst_element_*_clock().

API: gst_pipeline_get_pipeline_clock()

https://bugzilla.gnome.org/show_bug.cgi?id=744442
2015-04-02 17:33:22 -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
Tim-Philipp Müller
5bed94924a docs: pwg: fix missing comma and 0.10-ism in code sample
https://bugzilla.gnome.org/show_bug.cgi?id=747267
https://bugzilla.gnome.org/show_bug.cgi?id=747266
2015-04-02 21:18:39 +01:00
Michael Catanzaro
5b6ab53e7f docs: Fix typos
https://bugzilla.gnome.org/show_bug.cgi?id=746585
2015-03-25 23:36:59 +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
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
Vivia Nikolaidou
6ec3c4bc66 utils: Add gst_bin_sync_children_states()
gst_bin_sync_children_states() will iterate over all the elements of a bin and
sync their states with the state of the bin. This is useful when adding many
elements to a bin and would otherwise have to call
gst_element_sync_state_with_parent() on each and every one of them.

https://bugzilla.gnome.org/show_bug.cgi?id=745042
2015-03-13 12:50:48 +00:00
Vincent Penquerc'h
7b48b7a5bc docs: clarify min-latency wording in part-latency.txt
https://bugzilla.gnome.org/show_bug.cgi?id=744338
2015-03-04 11:02:41 +00:00
Luis de Bethencourt
f54ef68958 docs: remove dead link
Remove dead link to wiki page for SubmittingPatches

https://bugzilla.gnome.org/show_bug.cgi?id=730311
2015-02-24 18:14:47 +00:00
Sebastian Dröge
fd3a064c97 design/part-latency: Minor logic fix
The maximum latency will be the element's minimum latency or bigger,
not bigger than the element's minimum latency or bigger.
2015-02-12 11:26:26 +02:00
Sebastian Dröge
ee8d67ef2c design/part-latency: Add more details about min/max latency handling
These docs missed many details that were not obvious and because of that
handled in a few different, incompatible ways in different elements and base
classes.

https://bugzilla.gnome.org/show_bug.cgi?id=744106
2015-02-11 17:53:04 +02:00
Stefan Sauer
0461c9f21d docs: ignore libcheck headers that use doxygen comments 2014-12-29 12:05:27 +01:00
Sebastian Rasmussen
13f9fda2c3 docs: Add missing interfaces to documentation
https://bugzilla.gnome.org/show_bug.cgi?id=742057
2014-12-28 12:22:59 +00:00
Sebastian Dröge
1f6d5d3ff5 structure/caps: Add gst_{structure,caps}_filter_and_map_in_place()
https://bugzilla.gnome.org/show_bug.cgi?id=739765
2014-12-16 18:22:46 +01:00
Sebastian Dröge
bc11a1b79d caps: Add gst_caps_foreach() and gst_caps_map_in_place()
https://bugzilla.gnome.org/show_bug.cgi?id=739765
2014-12-16 18:22:46 +01:00
Stefan Sauer
8102b66c41 docs: add new preset api 2014-12-12 21:54:51 +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
Tim-Philipp Müller
a44ae03be1 docs: add GST_GL_* environment variables to 'Running GStreamer' section 2014-11-25 09:39:40 +00:00
Jan Alexander Steffens (heftig)
5a930aa642 gstobject: Add gst_object_has_parent()
Adds gst_object_has_parent, which works like gst_object_has_ancestor
but does not ascend further.

API: gst_object_has_parent()
2014-11-10 10:03:57 +01:00
Felix Schwarz
24428e9326 docs: pwd: fix typos
https://bugzilla.gnome.org/show_bug.cgi?id=738612
2014-10-16 12:53:55 +01:00
Guillaume Desmottes
cea054c84a docs: pwg: fix two typos
https://bugzilla.gnome.org/show_bug.cgi?id=738153
2014-10-10 10:32:12 +01:00
Guillaume Desmottes
2cc55af046 docs: pwg: fix typo in 'Dynamic negotiation' section
The point of this example is to show how to set caps
on the source pad once it has been set on the sink pad.
So, in passthrough mode, the caps is just copied to the
source pad.

https://bugzilla.gnome.org/show_bug.cgi?id=738153
2014-10-10 10:31:49 +01:00
David Waring
54c5f1855c GstUri: Add GstUri miniobject to handle URIs in an RFC 3986 compliant fashion
https://bugzilla.gnome.org/show_bug.cgi?id=725221
2014-09-29 12:19:05 +03: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
Tim-Philipp Müller
eefe8be9fe docs: pwg: fix some links to the API docs
https://bugzilla.gnome.org/show_bug.cgi?id=736762
2014-09-19 00:33:58 +01:00
Wim Taymans
a7d7d9305f docs: fix typo 2014-09-16 16:08:08 +02: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
Guillaume Desmottes
692606bdd2 manual: fix typo in advanced-dataaccess.xml
https://bugzilla.gnome.org/show_bug.cgi?id=735609
2014-08-29 11:35: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
Sebastian Dröge
9861003939 concat: Add documentation and integrate into documentation build 2014-08-12 15:39:09 +03:00
Sebastian Rasmussen
4cf6a6e086 tests: Add missing unrefs of objects after use
Unreffing the objects returned by gst_bin_get_by_name() and
gst_pipeline_get_use() were missing in several tests, so add these.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734345
2014-08-06 13:47:11 +02:00
Sebastian Dröge
98a5de66b9 Release 1.4.0 2014-07-19 16:46:41 +02:00
Sebastian Dröge
ed39f8b5b7 Release 1.3.91 2014-07-11 10:46:01 +02:00