Media element objects, which are communicated among Producer, Consumer, StreamExporter, Stream, and
the various networking objects, normally belong to the Chunk class. Chunk objects consist of
a byte array buffer, which stores the media data, as well as offset and length
member variables, which indicate the position and length of the header area and the payload data area
of the buffer. In addition, a Chunk carries a timestamp field, which denotes the instant of
the creation of the Chunk. The structure of a Chunk's buffer is shown in Figure .
Figure: The structure of the byte array buffer contained in
a chunk object.
For the purpose of intra- and inter-stream synchronisation, TimedObjects are communicated by
Stream objects to Consumer objects. TimedObjects carry a reference to a payload object of any
type, for example a Chunk object or any other representation of a media element, but
additionally offer a sync()
method. This method blocks its caller (normally a Consumer
presenting the media element) until a certain ``wakeup'' point of time is reached. The wakeup
instant must be previously stored in the TimedObject and is computed by mapping the
timestamp of the corresponding Chunk to a local playout time.