Messages
--------

Messages are refcounted lightweight objects to signal the application
of pipeline events. 

Messages are implemented as a subclass of GstMiniObject with a generic 
GstStructure as the content. This allows for writing custom messages without
requiring an API change while allowing a wide range of different types
of messages.

Messages are posted by objects in the pipeline and are passed to the 
application using the GstBus (See also part-gstbus.txt and part-gstpipeline.txt). 


Message types
~~~~~~~~~~~~~

GST_MESSAGE_EOS:

  Posted by sink elements. This message is posted to the application when
  all the sinks in a pipeline posted an EOS message. When performing a seek,
  the EOS state of the pipeline and sinks is undone.

GST_MESSAGE_ERROR:

  An element in the pipeline got into an error state. The message carries
  a GError and a debug string describing the error. This usually means that
  part of the pipeline is not streaming anymore.

GST_MESSAGE_WARNING:

  An element in the pipeline encountered a condition that made it produce a
  warning. This could be a recoverable decoding error or some other non fatal
  event. The pipeline continues streaming after a warning.

GST_MESSAGE_INFO:

  An element produced an informational message.

GST_MESSAGE_TAG:

  An element decoded metadata about the stream. The message carries a GstTagList
  with the tag information.

GST_MESSAGE_BUFFERING:

  An element is buffering data and that could potentially take some time. This
  message is typically emited by elements that perform some sort of network
  buffering. While the pipeline is buffering it should remain in the PAUSED
  state. When the buffering is finished, it can resume PLAYING.

GST_MESSAGE_STATE_CHANGED:

  An element changed state in the pipeline. The message carries the old, new
  and pending state of the element.

GST_MESSAGE_STATE_DIRTY:
  
  An internal message used to instruct a pipeline hierarchy that a state
  recalculation must be performed because of an ASYNC state change completed.
  This message is not used anymore.

GST_MESSAGE_STEP_DONE:

  An element stepping frames has finished. This is currently not used.

GST_MESSAGE_CLOCK_PROVIDE:

  An element notifies it capability of providing a clock for the pipeline.

GST_MESSAGE_CLOCK_LOST:

  The current clock as selected by the pipeline became unusable. The pipeline 
  will select a new clock on the next PLAYING state change.

GST_MESSAGE_NEW_CLOCK:

  A new clock was selected for the pipeline.

GST_MESSAGE_STRUCTURE_CHANGE:

  The pipeline changed of structure, This means elements were added or removed or
  pads were linked or unlinked. This messages is not yet used.

GST_MESSAGE_STREAM_STATUS:

  Posted by an element when it start/stop/pauses a streaming task. It
  contains information about the reason why the stream state changed along
  with the thread id. The application can use this information to detect
  failures in streaming threads. It can also be used to adjust streaming
  thread priorities by the application.
  
GST_MESSAGE_APPLICATION:

  The application posted a message. This message must be used when the
  application posts a message on the bus.

GST_MESSAGE_ELEMENT:

  Element-specific message, see the specific element's documentation

GST_MESSAGE_SEGMENT_START:

  An element started playback of a new segment. This message is not forwarded
  the application but is used internally to schedule SEGMENT_DONE messages.

GST_MESSAGE_SEGMENT_DONE:

  An element or bin completed playback of a segment. This message is only posted
  on the bus if a SEGMENT seek is performed on a pipeline.

GST_MESSAGE_DURATION_CHANGED:

  An element posts this message when it has detected or updated the stream duration.

GST_MESSAGE_ASYNC_START:

  Posted by sinks when they start an asynchronous state change.

GST_MESSAGE_ASYNC_DONE:

  Posted by sinks when they receive the first data buffer and complete the
  asynchronous state change.

GST_MESSAGE_LATENCY:

  Posted by elements when the latency in a pipeline changed and a new global
  latency should be calculated by the pipeline or application.

GST_MESSAGE_REQUEST_STATE:

  Posted by elements when they want to change the state of the pipeline they
  are in. A typical use case would be an audio sink that requests the pipeline
  to pause in order to play a higher priority stream.

GST_MESSAGE_STEP_START:

  A Stepping operation has started.

GST_MESSAGE_QOS:

  A buffer was dropped or an element changed its processing strategy for
  Quality of Service reasons.

GST_MESSAGE_PROGRESS:

  A progress message was posted. Progress messages inform the application about
  the state of asynchronous operations.
