Live sources
------------

A live source is a source that cannot be arbitrarily PAUSED without losing
data.

A live source such as an element capturing audio or video need to be handled
in a special way. It does not make sense to start the dataflow in the PAUSED
state for those devices as the user might wait a long time between going from
PAUSED to PLAYING, making the previously captured buffers irrelevant.

A live source therefore only produces buffers in the PLAYING state. This has
implications for sinks waiting for a buffer to complete the preroll state
since such a buffer might never arrive.

Live sources return NO_PREROLL when going to the PAUSED state to inform the
bin/pipeline that this element will not be able to produce data in the
PAUSED state. NO_PREROLL should be returned for both READY->PAUSED and
PLAYING->PAUSED.

When performing a get_state() on a bin with a non-zero timeout value, the
bin must be sure that there are no live sources in the pipeline because else
the get_state() function would block on the sinks.

A gstbin therefore always performs a zero timeout get_state() on its
elements to discover the NO_PREROLL (and ERROR) elements before performing
a blocking wait.


Scheduling
~~~~~~~~~~

Live sources will not produce data in the paused state. They block in the 
getrange function or in the loop function until they go to PLAYING.


Latency
~~~~~~~

The live source timestamps its data with the time of the clock at the
time the data was captured. Normally it will take some time to capture
the first sample of data and the last sample. This means that when the
buffer arrives at the sink, it will already be late and will be dropped.

The latency is the time it takes to construct one buffer of data. This latency
is exposed with a LATENCY query.

See part-latency.txt.


Timestamps
~~~~~~~~~~

Live sources always timestamp their buffers with the running_time of the
pipeline. This is needed to be able to match the timestamps of different live
sources in order to synchronize them.

This is in contrast to non-live sources, which timestamp their buffers starting
from running_time 0.

