GstContext is a container object, containing a type string and a generic
GstStructure. It is used to store and propagate context information in a
pipeline, like device handles, display server connections and other
information that should be shared between multiple elements in a
For sharing context objects and distributing them between application and elements in a pipeline, there are downstream queries, upstream queries, messages and functions to set a context on a complete pipeline.
Context type names should be unique and be put in appropriate namespaces, to prevent name conflicts, e.g. "gst.egl.EGLDisplay". Only one specific type is allowed per context type name.
Elements that need a specific context for their operation would do the following steps until one succeeds:
Check if the element already has a context of the specific type, i.e. it was previously set via
Query downstream with
GST_QUERY_CONTEXTfor the context and check if downstream already has a context of the specific type
Query upstream with
GST_QUERY_CONTEXTfor the context and check if upstream already has a context of the specific type
GST_MESSAGE_NEED_CONTEXTmessage on the bus with the required context types and afterwards check if a usable context was set now as in 1). The message could be handled by the parent bins of the element and the application.
Create a context by itself and post a
GST_MESSAGE_HAVE_CONTEXTmessage on the bus.
Bins will propagate any context that is set on them to their child
gst_element_set_context(). Even to elements added after
a given context has been set.
Bins can handle the
GST_MESSAGE_NEED_CONTEXT message, can filter both
messages and can also set different contexts for different pipeline
Applications can set a specific context on a pipeline or elements inside
a pipeline with
If an element inside the pipeline needs a specific context, it will post
GST_MESSAGE_NEED_CONTEXT message on the bus. The application can
now create a context of the requested type or pass an already existing
context to the element (or to the complete pipeline).
Whenever an element creates a context internally it will post a
GST_MESSAGE_HAVE_CONTEXT message on the bus. Bins will cache these
contexts and pass them to any future element that requests them.
The results of the search are