Clocks
------

The GstClock returns a monotonically increasing time with the method 
_get_time(). Its accuracy and base time depends on the specific clock 
implementation but time is always expressed in nanoseconds. Since the
baseline of the clock is undefined, the clock time returned is not
meaningful in itself, what matters are the deltas between two clock
times.
The time reported by the clock is called the absolute_time.


Clock Selection
~~~~~~~~~~~~~~~

To synchronize the different elements, the GstPipeline is responsible for
selecting and distributing a global GstClock for all the elements in it.

This selection happens whenever the pipeline goes to PLAYING. Whenever an
element is added/removed from the pipeline, this selection will be redone in the
next state change to PLAYING. Adding an element that can provide a clock will
post a GST_MESSAGE_CLOCK_PROVIDE message on the bus to inform parent bins of the
fact that a clock recalculation is needed. 

When a clock is selected, a NEW_CLOCK message is posted on the bus signaling the
clock to the application.

When the element that provided the clock is removed from the pipeline, a
CLOCK_LOST message is posted. The application must then set the pipeline to
PAUSED and PLAYING again in order to let the pipeline select a new clock
and distribute a new base time.

The clock selection is performed as part of the state change from PAUSED to
PLAYING and is described in part-states.txt.


Clock features
~~~~~~~~~~~~~~

The clock supports periodic and single shot clock notifications both
synchronous and asynchronous.

One first needs to create a GstClockID for the periodic or single shot
notification using _clock_new_single_shot_id() or _clock_new_periodic_id().

To perform a blocking wait for the specific time of the GstClockID use the
gst_clock_id_wait(). To receive a callback when the specific time is reached
in the clock use gst_clock_id_wait_async(). Both these calls can be interrupted
with the gst_clock_id_unschedule() call. If the blocking wait is unscheduled
a value of GST_CLOCK_UNSCHEDULED is returned.

The async callbacks can happen from any thread, either provided by the
core or from a streaming thread. The application should be prepared for this.

A GstClockID that has been unscheduled cannot be used again for any wait
operation. 

It is possible to perform a blocking wait on the same ID from multiple 
threads. However, registering the same ID for multiple async notifications is 
not possible, the callback will only be called once.

None of the wait operations unref the GstClockID, the owner is 
responsible for unreffing the ids itself. This holds true for both periodic and
single shot notifications. The reason being that the owner of the ClockID
has to keep a handle to the ID to unblock the wait on FLUSHING events
or state changes and if we unref it automatically, the handle might be
invalid.

These clock operations do not operate on the stream time, so the callbacks
will also occur when not in PLAYING state as if the clock just keeps on 
running. Some clocks however do not progress when the element that provided
the clock is not PLAYING.


Clock implementations
~~~~~~~~~~~~~~~~~~~~~

The GStreamer core provides a GstSystemClock based on the system time. 
Asynchronous callbacks are scheduled from an internal thread.

Clock implementers are encouraged to subclass this systemclock as it
implements the async notification.

Subclasses can however override all of the important methods for sync and
async notifications to implement their own callback methods or blocking
wait operations.


