gstreamer/gst
Matthew Waters 6f9a63a10d gst/systemclock: wait on each entry individually
Problem:
multiple aggregator elements (audiomixer, compositor) in a live
pipeline use a lot of CPU waiting each other up.  This is because
of the previously unused clock entry unscheduling during regular
operation.

Clock entry unscheduling has the potential to wake up every clock entry
waiting using the system clock which may be a large number.

Solution:
Implement waiting per entry and only wakeup the unscheduled entry.

While this may be possible using GCond, theoretically GCond only gives
us microsecond accuracy and uses relative waits in a number of places.
We can unfortunately do better poking at the platform specifics
ourselves by using futexes on linux and pthread on other unix.  Windows
may have a possible implementation using Waitable timers but that is
not implemented here and instead falls back to the GCond implementation.
GCond waits on Windows is still as accurate as the previous GstPoll-based
implementation.
2020-04-16 01:26:59 +00:00
..
parse parse: add support for presets 2019-12-28 04:02:16 +00: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 pluginfeature: Allow updating initial rank of plugin feature 2019-12-26 19:49:00 +00:00
gst.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gst_private.h gst/systemclock: wait on each entry individually 2020-04-16 01:26:59 +00: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: Don't consider having a group-id or being STREAM_START if we have not a single STREAM_START message 2020-01-25 00:02:20 +02:00
gstbin.h bin: Add method to find elements by factory name 2019-12-20 14:29:19 +01:00
gstbuffer.c GstBuffer: size-related optimization 2019-11-27 14:25:19 +00:00
gstbuffer.h gstbuffer: update documentation 2019-11-18 00:15:31 +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 bufferpool: Fix the buffer size reset code 2019-07-01 16:49:04 -04:00
gstbufferpool.h gst: Fix various Since markers 2019-04-23 15:08:18 +03:00
gstbus.c bus: Make setting/replacing/clearing the sync handler thread-safe 2020-02-14 14:41:46 +00:00
gstbus.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstcaps.c caps: Don't assert in fixate() on EMPTY/ANY caps and document EMPTY/ANY behaviour on more functions 2020-03-09 10:10:09 +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 Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +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 gstdatetime: Add missing NULL check to gst_date_time_new_local_time 2020-03-22 14:00:41 +00:00
gstdatetime.h datetime: Add constructor for timestamps in microseconds 2019-11-25 13:31:11 +01:00
gstdebugutils.c debugutils: skip "parent" property for elements when dumping pipeline graph 2020-02-19 19:01:25 +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 documentation: fix a number of typos 2019-10-06 11:12:11 -04:00
gstdevicemonitor.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdeviceprovider.c documentation: fix a number of typos 2019-10-06 11:12:11 -04:00
gstdeviceprovider.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdeviceproviderfactory.c Don't use deprecated g_object_newv() 2017-04-08 09:49:59 +01:00
gstdeviceproviderfactory.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstdynamictypefactory.c doc: Fix and add some missing docstrings 2019-05-13 11:33:49 -04:00
gstdynamictypefactory.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstelement.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00: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 device, elementfactory: relax floating requirement 2019-12-10 13:31:50 +01: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/message: Don't allow setting invalid group ids 2020-01-24 17:53:30 +02:00
gstevent.h event: Fix gir warning 2019-11-12 15:19:28 +09: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 Update for g_type_class_add_private() deprecation in recent GLib 2018-06-24 12:49:14 +02:00
gstghostpad.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstinfo.c gstinfo: Add new API for getting debug log lines 2019-12-25 08:50:17 +05:30
gstinfo.h gstinfo: Check threshold for category from macro 2020-03-24 11:39:32 +00:00
gstiterator.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03: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 Fixing various typos 2019-06-20 15:20:27 +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 gstmeta: Optimize get_tags() by using private quark table 2019-06-17 09:50:32 +02:00
gstmeta.h buffer: store sequence number for metas 2019-02-12 17:53:08 +00:00
gstminiobject.c miniobject: free qdata array when the last qdata is removed 2019-09-04 16:31:53 +02:00
gstminiobject.h gst: Fix various Since markers 2019-04-23 15:08:18 +03:00
gstobject.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gstobject.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstpad.c pad: Add a guard against getrange functions not filling a caller-provided buffer 2020-04-02 13:47:37 +03:00
gstpad.h pad: Added gst_pad_get_single_internal_link 2019-09-05 11:49:18 +03:00
gstpadtemplate.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gstpadtemplate.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstparamspecs.c gst: Fix up a bunch of GIR annotations 2018-01-27 10:41:24 +00:00
gstparamspecs.h gst: Add a GParamSpecFlag to force gst-inspect to use pspec default value 2019-05-13 11:33:49 -04:00
gstparse.c docs: mention gst_parse_bin_from_description() in gst_parse_launch() docs 2019-11-27 09:41:36 +00: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 gstplugin: Don't stat plugins when building for UWP 2019-06-28 13:44:49 +05:30
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 Fix typos in comments and docs 2018-05-01 11:18:03 +01:00
gstpreset.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstpromise.c docstrings: port ulinks to markdown links 2019-08-23 18:17:41 +02: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/message: Add new instant-rate-sync-time event and instant-rate-request message 2019-11-03 19:47:40 +11:00
gstquark.h event/message: Add new instant-rate-sync-time event and instant-rate-request message 2019-11-03 19:47:40 +11:00
gstquery.c query: add a new bitrate query 2018-11-07 15:04:14 +00:00
gstquery.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstregistry.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gstregistry.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstregistrybinary.c registry: handle fsync interrupted by signal (EINTR) 2019-12-12 20:49:36 +01:00
gstregistrybinary.h tracer: initial prototype for the tracing subsystem 2015-10-05 20:59:39 +02:00
gstregistrychunks.c registrychunks: Use strnlen if available 2020-03-22 10:40:21 +00: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 event: Add new GST_EVENT_INSTANT_RATE_CHANGE and GST_SEEK_FLAGS_INSTANT_RATE_CHANGE 2019-11-03 19:47:40 +11:00
gststreamcollection.c Don't pass default GLib marshallers for signals 2019-09-09 12:16:24 +00:00
gststreamcollection.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gststreams.c Update for g_type_class_add_private() deprecation in recent GLib 2018-06-24 12:49:14 +02:00
gststreams.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gststructure.c gststructure: Fix gst_structure_take ownership handling 2020-03-23 16:48:47 +00:00
gststructure.h structure: add gst_structure_take 2019-11-14 10:08:38 +00:00
gstsystemclock.c gst/systemclock: wait on each entry individually 2020-04-16 01:26:59 +00:00
gstsystemclock.h GstSystemClock: Add GST_CLOCK_TYPE_TAI 2020-01-27 17:16:14 +00:00
gsttaglist.c taglist: Remove (scope call) annotation from gst_tag_register() 2019-01-24 07:52:34 +00:00
gsttaglist.h taglist: Fix broken empty set character in code 2019-11-03 19:06:58 +00: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 task: Introduce gst_task_resume() API 2020-04-01 15:13:59 +00:00
gsttask.h task: Introduce gst_task_resume() API 2020-04-01 15:13:59 +00:00
gsttaskpool.c gsttaskpool: Do not block tasks while cleaning up the taskpool 2019-03-08 17:27:30 +01:00
gsttaskpool.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02: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 Update for g_type_class_add_private() deprecation in recent GLib 2018-06-24 12:49:14 +02:00
gsttracer.h gsttracer: Add new API to fetch the list of active tracers 2019-07-02 15:13:26 +05:30
gsttracerfactory.c docs: include tracers in the documentation 2017-12-14 14:46:46 +11:00
gsttracerfactory.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsttracerrecord.c tracerrecord: Be stricter while parsing record templates 2019-07-01 13:33:13 +00:00
gsttracerrecord.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsttracerutils.c gsttracerutils: Fix build with disabled tracer hooks. 2019-07-07 20:42:56 +10:00
gsttracerutils.h gst: Documentation fixes 2018-04-02 12:42:30 +02:00
gsttypefind.c Don't use deprecated g_object_newv() 2017-04-08 09:49:59 +01:00
gsttypefind.h doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00
gsttypefindfactory.c Fix typos in comments and docs 2018-05-01 11:18:03 +01:00
gsttypefindfactory.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gsturi.c doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00
gsturi.h Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally 2019-06-04 08:50:59 +02:00
gstutils.c utils: Avoid memory merge in gst_util_dump_buffer() 2019-08-21 08:37:50 +02:00
gstutils.h gst: GST_EXPORT -> GST_API 2018-03-13 00:45:35 +00:00
gstvalue.c value: Fix segfault comparing empty GValueArrays 2020-04-12 20:33:43 -04:00
gstvalue.h gstvalue: Inline GstValueList/GstValueArray 2020-03-18 17:53:34 +01:00
gstversion.h.in gstversion: Add missing include in .in file. 2015-08-15 13:26:12 +02:00
math-compat.h Fix FSF address 2012-11-03 20:44:48 +00:00
meson.build doc: Fix hotdoc warnings 2019-05-13 16:34:09 -04:00