gstreamer.Context is a container object used to store contexts like a device context, a display server connection and similar concepts that should be shared between multiple elements.
Applications can set a context on a complete pipeline by using Element.setContext, which will then be propagated to all child elements. Elements can handle these in gstreamer.ElementClass.ElementClass.set_context|gstreamer.ElementClass.set_context and merge them with the context information they already have.
When an element needs a context it will do the following actions in this order until one step succeeds: 1. Check if the element already has a context 2. Query downstream with GST_QUERY_CONTEXT for the context 3. Query upstream with GST_QUERY_CONTEXT for the context 4. Post a GST_MESSAGE_NEED_CONTEXT message on the bus with the required context types and afterwards check if a usable context was set now 5. Create a context by itself and post a GST_MESSAGE_HAVE_CONTEXT message on the bus.
Bins will catch GST_MESSAGE_NEED_CONTEXT messages and will set any previously known context on the element that asks for it if possible. Otherwise the application should provide one if it can.
gstreamer.Context<!-- -->s can be persistent. A persistent gstreamer.Context is kept in elements when they reach GST_STATE_NULL, non-persistent ones will be removed. Also, a non-persistent context won't override a previous persistent context set to an element.
Sets our main struct and passes it to the parent class.
Create a new context.
Get the main Gtk struct
Get the type of context.
the main Gtk struct as a void*
Access the structure of the context.
Checks if context has context_type.
Check if context is persistent.
Get a writable version of the structure.
the main Gtk struct