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 have posted an EOS message. When performing a
  flushing seek, the EOS state of the pipeline and sinks is reset.

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 emitted 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 its 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 its structure, This means elements were added or removed or
  pads were linked or unlinked. This message is not yet used.

GST_MESSAGE_STREAM_STATUS:

  Posted by an element when it starts/stops/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 and/or to adjust streaming thread priorities.
  
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
  to applications 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.
