gstreamer/gst
Edward Hervey 17feeb1bd6 systemclock: Use clock_nanosleep for higher accuracy
The various wait implementation have a latency ranging from 50 to 500+
microseconds. While this is not a major issue when dealing with a low number of
waits per second (for ex: video), it does introduce a non-negligeable jitter for
synchronization of higher packet rate systems.

The `clock_nanosleep` syscall does offer a lower-latency waiting system but is
unfortunately blocking, so we don't want to use it in all scenarios nor for too
long.

This patch makes GstSystemClock use clock_nanosleep (if available) as such:
* Any wait below 500us uses it
* Any wait below 2ms will first use the regular waiting system and then
  clock_nanosleep

  #	modified:   gst/gstsystemclock.c

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/688>
2020-11-06 11:22:14 +01:00
..
parse gstvalue: expose gst_value_deserialize_with_pspec() 2020-10-03 01:02:55 +02:00
printf Remove autotools build system 2019-10-13 16:10:42 +01:00
gettext.h Fix FSF address 2012-11-03 20:44:48 +00:00
glib-compat-private.h Fix FSF address 2012-11-03 20:44:48 +00:00
glib-compat.c Whenever we include windows.h, also define WIN32_LEAN_AND_MEAN 2016-02-20 10:07:42 +00:00
glib-compat.h Headers: add missing includes. 2015-08-15 13:17:07 +02:00
gst-i18n-app.h Fix FSF address 2012-11-03 20:44:48 +00:00
gst-i18n-lib.h Fix FSF address 2012-11-03 20:44:48 +00:00
gst.c gst_init: Call gst_init_static_plugins() when available 2020-10-05 16:09:10 -04:00
gst.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gst_private.h gst_private.h: increse padding in struct _GstClockEntryImpl 2020-11-03 23:03:54 -08:00
gstallocator.c Update for g_type_class_add_private() deprecation in recent GLib 2018-06-24 12:49:14 +02:00
gstallocator.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstatomicqueue.c introspection: add missing (nullable) annotations to return values 2014-06-26 18:56:38 +02:00
gstatomicqueue.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstbin.c bin: When removing a sink, check if the EOS status changed. 2020-10-30 03:56:02 +11:00
gstbin.h gstbin: Fix docs typo 2020-07-01 02:22:43 +10:00
gstbuffer.c meta: expose API to register and create custom meta 2020-09-27 11:08:03 +00:00
gstbuffer.h meta: expose API to register and create custom meta 2020-09-27 11:08:03 +00:00
gstbufferlist.c bufferlist: foreach: always remove as parent if buffer is changed 2020-03-18 14:43:08 +01:00
gstbufferlist.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstbufferpool.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gstbufferpool.h gst: Fix various Since markers 2019-04-23 15:08:18 +03:00
gstbus.c bus: clear bus->priv->signal_watch immediately when the source is removed 2020-06-24 15:08:59 +02:00
gstbus.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstcaps.c fix clang 10 warnings 2020-08-04 10:44:16 +00:00
gstcaps.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstcapsfeatures.c doc: Add some missing docstrings 2019-05-13 11:33:49 -04:00
gstcapsfeatures.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstchildproxy.c Use gst_object_unref() / gst_object_clear() instead of the GObject ones 2020-04-20 16:28:52 +00:00
gstchildproxy.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstclock.c gst/systemclock: wait on each entry individually 2020-04-16 01:26:59 +00:00
gstclock.h clock: remove documentation link on GTimeVal 2020-03-12 05:02:33 +00:00
gstcompat.h Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gstconfig.h.in gstconfig.h.in: Windows ARM64 does not allow unaligned access 2019-06-28 13:01:14 +05:30
gstcontext.c gst: Add poisoning to more types 2018-08-03 14:31:34 +03:00
gstcontext.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstcontrolbinding.c documentation: fix a number of typos 2019-10-06 11:12:11 -04:00
gstcontrolbinding.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstcontrolsource.c gst: Don't ref_sink() GstObject subclasses in instance_init/constructor 2017-05-17 10:40:37 +03:00
gstcontrolsource.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdatetime.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gstdatetime.h datetime: Add constructor for timestamps in microseconds 2019-11-25 13:31:11 +01:00
gstdebugutils.c debugutils: Skip multiqueue stats in dot dump 2020-04-21 19:53:33 +00:00
gstdebugutils.h debugutils: Make sure that GST_DEBUG_GRAPH_SHOW_VERBOSE gets the correct value in introspection 2018-11-10 19:08:52 +00:00
gstdevice.c device, elementfactory: relax floating requirement 2019-12-10 13:31:50 +01:00
gstdevice.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdevicemonitor.c devicemonitor: Stop only the already started providers 2020-10-22 11:48:05 +00:00
gstdevicemonitor.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdeviceprovider.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gstdeviceprovider.h devicemonitor: Stop only the already started providers 2020-10-22 11:48:05 +00:00
gstdeviceproviderfactory.c fix clang 10 warnings 2020-08-04 10:44:16 +00:00
gstdeviceproviderfactory.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdynamictypefactory.c Fix up and add various "Since" markers and other related docs fixes 2020-06-19 13:10:53 +01:00
gstdynamictypefactory.h Fix up and add various "Since" markers and other related docs fixes 2020-06-19 13:10:53 +01:00
gstelement.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gstelement.h element: Added gst_element_get_current_clock_time and gst_element_get_current_running_time 2019-08-12 12:59:27 +03:00
gstelementfactory.c fix clang 10 warnings 2020-08-04 10:44:16 +00:00
gstelementfactory.h elementfactory: add GST_ELEMENT_FACTORY_TYPE_HARDWARE 2019-11-02 15:11:12 +01:00
gstelementmetadata.h Headers: add missing includes. 2015-08-15 13:17:07 +02:00
gsterror.c doc: remove xml from comments 2019-05-29 21:33:42 +02:00
gsterror.h doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00
gstevent.c event: Add optional flags to the GAP event 2020-09-10 16:01:19 +00:00
gstevent.h event: Add optional flags to the GAP event 2020-09-10 16:01:19 +00:00
gstformat.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gstformat.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstghostpad.c ghostpad: Deprecate gst_ghost_pad_construct() 2020-06-22 12:30:48 +03:00
gstghostpad.h ghostpad: Deprecate gst_ghost_pad_construct() 2020-06-22 12:30:48 +03:00
gstinfo.c gstinfo: colorize PIDs in log messages 2020-10-31 15:10:23 -04:00
gstinfo.h Revert "gstinfo: Check threshold for category from macro" 2020-07-13 08:02:26 +02:00
gstiterator.c meson: update glib minimum version to 2.56 2020-10-15 18:12:32 +02:00
gstiterator.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstmacros.h gstmacros.h: Fix restrict definition on MSVC 2019-02-20 17:51:40 +05:30
gstmemory.c Fixing various typos 2019-06-20 15:20:27 +00:00
gstmemory.h memory: fix documentation to display in html 2020-09-28 11:43:19 +00:00
gstmessage.c event/message: Don't allow setting invalid group ids 2020-01-24 17:53:30 +02:00
gstmessage.h docs: Document the new 'redirect-location' error message detail field 2020-01-06 17:47:40 -03:00
gstmeta.c meta: expose API to register and create custom meta 2020-09-27 11:08:03 +00:00
gstmeta.h meta: expose API to register and create custom meta 2020-09-27 11:08:03 +00:00
gstminiobject.c fix clang 10 warnings 2020-08-04 10:44:16 +00:00
gstminiobject.h gst: Fix various Since markers 2019-04-23 15:08:18 +03:00
gstobject.c fix clang 10 warnings 2020-08-04 10:44:16 +00:00
gstobject.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstpad.c gstpad: Simplify task name creation 2020-05-04 12:26:10 +00:00
gstpad.h pad: More explicitly explain how to post errors on GST_FLOW_ERROR 2020-07-16 16:34:05 -04:00
gstpadtemplate.c padtemplate: mark documentation caps as may be leaked 2020-09-30 11:59:04 +10:00
gstpadtemplate.h padtemplate: expose getters and setters "documentation caps" 2020-06-06 00:38:29 +02:00
gstparamspecs.c gst: Fix up a bunch of GIR annotations 2018-01-27 10:41:24 +00:00
gstparamspecs.h Fix up and add various "Since" markers and other related docs fixes 2020-06-19 13:10:53 +01:00
gstparse.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gstparse.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstpipeline.c pipeline: fix base_time selection when flush seeking live 2020-04-09 15:41:36 +00:00
gstpipeline.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstplugin.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gstplugin.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstpluginfeature.c pluginfeature: Allow updating initial rank of plugin feature 2019-12-26 19:49:00 +00:00
gstpluginfeature.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstpluginloader.c pluginloader: handle fsync interrupted by signal (EINTR) 2019-12-12 20:49:36 +01:00
gstpluginloader.h Headers: add missing includes. 2015-08-15 13:17:07 +02:00
gstpoll.c Port to hotdoc 2019-05-13 16:34:09 -04:00
gstpoll.h poll: add API to watch for POLLPRI 2018-06-08 11:53:55 -04:00
gstpreset.c Use gst_object_unref() / gst_object_clear() instead of the GObject ones 2020-04-20 16:28:52 +00:00
gstpreset.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstpromise.c promise: update documentation and annotations for NULL replies 2020-05-28 10:23:51 +00:00
gstpromise.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstprotection.c protection: Release decryptors list, even if it's empty 2018-06-25 16:38:13 +01:00
gstprotection.h doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00
gstquark.c event: Add optional flags to the GAP event 2020-09-10 16:01:19 +00:00
gstquark.h event: Add optional flags to the GAP event 2020-09-10 16:01:19 +00:00
gstquery.c query: add a new bitrate query 2018-11-07 15:04:14 +00:00
gstquery.h event, query: fix g-ir-scanner warnings 2020-07-26 15:34:54 +01:00
gstregistry.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gstregistry.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstregistrybinary.c registrybinary: Also call fclose() if fflush()/fsync() failed 2020-05-06 07:33:42 +00:00
gstregistrybinary.h tracer: initial prototype for the tracing subsystem 2015-10-05 20:59:39 +02:00
gstregistrychunks.c registry: Print the pointer when printing features 2020-06-23 12:16:49 +01:00
gstregistrychunks.h dynamic types: Implement dynamic types in the registry 2016-11-02 11:21:37 +11:00
gstsample.c gst: Add poisoning to more types 2018-08-03 14:31:34 +03:00
gstsample.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstsegment.c gstsegment: Refuse instant-rate seeks in gst_segment_do_seek() 2020-03-26 13:51:41 +00:00
gstsegment.h segment: Enhance the GstSegment structure documentation 2020-05-05 20:52:11 +00:00
gststreamcollection.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gststreamcollection.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gststreams.c stream: Don't use GST_FIXME_OBJECT() when generating a random stream id if the caller didn't provide one 2020-07-01 19:50:20 +00:00
gststreams.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gststructure.c gstvalue: expose gst_value_deserialize_with_pspec() 2020-10-03 01:02:55 +02:00
gststructure.h structure: add gst_structure_take 2019-11-14 10:08:38 +00:00
gstsystemclock.c systemclock: Use clock_nanosleep for higher accuracy 2020-11-06 11:22:14 +01:00
gstsystemclock.h Add missing colons to Since markers in the docs 2020-05-01 10:07:09 +03:00
gsttaglist.c taglist: Stop inlining gst_tag_list_copy 2020-07-09 07:57:01 -04:00
gsttaglist.h taglist: Stop inlining gst_tag_list_copy 2020-07-09 07:57:01 -04:00
gsttagsetter.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gsttagsetter.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gsttask.c gst: Delay creation of threadpools 2020-06-16 08:23:21 +02:00
gsttask.h task: Introduce gst_task_resume() API 2020-04-01 15:13:59 +00:00
gsttaskpool.c taskpool: expose new "shared" task pool implementation 2020-11-05 18:18:28 +00:00
gsttaskpool.h taskpool: expose new "shared" task pool implementation 2020-11-05 18:18:28 +00:00
gsttoc.c gst: Add poisoning to more types 2018-08-03 14:31:34 +03:00
gsttoc.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsttocsetter.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gsttocsetter.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gsttracer.c tracer: declare GstTracer API stable 2020-07-24 13:33:50 +01:00
gsttracer.h tracer: declare GstTracer API stable 2020-07-24 13:33:50 +01:00
gsttracerfactory.c Fix up and add various "Since" markers and other related docs fixes 2020-06-19 13:10:53 +01:00
gsttracerfactory.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsttracerrecord.c tracer: declare GstTracer API stable 2020-07-24 13:33:50 +01:00
gsttracerrecord.h tracer: declare GstTracer API stable 2020-07-24 13:33:50 +01:00
gsttracerutils.c tracer: declare GstTracer API stable 2020-07-24 13:33:50 +01:00
gsttracerutils.h gst: Documentation fixes 2018-04-02 12:42:30 +02:00
gsttypefind.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gsttypefind.h doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00
gsttypefindfactory.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gsttypefindfactory.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsturi.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gsturi.h gsturi: Add new API for storing unmodified userinfo / fragment 2020-08-03 16:07:45 +00:00
gstutils.c Add some missing nullable annotations 2020-11-05 14:22:24 +02:00
gstutils.h utils: silence g-ir-scanner warnings about float conversion macros 2020-07-26 15:34:54 +01:00
gstvalue.c gstvalue: don't write to const char * 2020-10-13 01:19:47 +02:00
gstvalue.h gstvalue: expose gst_value_deserialize_with_pspec() 2020-10-03 01:02:55 +02:00
gstversion.h.in gstversion: Add missing include in .in file. 2015-08-15 13:26:12 +02:00
math-compat.h math-compat.h: silence g-ir-scanner warnings 2020-07-26 15:34:54 +01:00
meson.build Meson: Use pkg-config generator 2020-10-12 13:39:17 +00:00