2001-01-20 20:08:59 +00:00
|
|
|
GstElement
|
2010-11-01 13:32:43 +00:00
|
|
|
----------
|
2001-01-20 20:08:59 +00:00
|
|
|
|
2005-03-10 12:51:45 +00:00
|
|
|
The Element is the most important object in the entire GStreamer system, as it
|
|
|
|
defines the structure of the pipeline. Elements include sources, filters,
|
|
|
|
sinks, and containers (Bins). They may be an intrinsic part of the core
|
|
|
|
GStreamer library, or may be loaded from a plugin. In some cases they're even
|
|
|
|
fabricated from completely different systems (see the LADSPA plugin). They
|
|
|
|
are generally created from a GstElementFactory, which will be covered in
|
|
|
|
another chapter, but for the intrinsic types they can be created with specific
|
|
|
|
functions.
|
2001-01-20 20:08:59 +00:00
|
|
|
|
2005-03-10 12:51:45 +00:00
|
|
|
Elements contains GstPads (also covered in another chapter), which are
|
|
|
|
subsequently used to connect the Elements together to form a pipeline capable
|
|
|
|
of passing and processing data. They have a parent, which must be another
|
|
|
|
Element. This allows deeply nested pipelines, and the possibility of
|
|
|
|
"black-box" meta-elements.
|
2001-01-20 20:08:59 +00:00
|
|
|
|
|
|
|
Name
|
2010-11-01 13:32:43 +00:00
|
|
|
~~~~
|
2001-01-20 20:08:59 +00:00
|
|
|
|
2005-03-28 14:54:33 +00:00
|
|
|
All elements are named, and while they should ideally be unique in any given
|
|
|
|
pipeline, they do not have to be. The only guaranteed unique name for an
|
|
|
|
element is its complete path in the object hierarchy. In other words, an
|
|
|
|
element's name is unique inside its parent. (This follows from GstObject's
|
|
|
|
name explanation)
|
|
|
|
|
|
|
|
This uniqueness is guaranteed through all functions where either parentage
|
|
|
|
or name of an element is changed.
|
2001-01-20 20:08:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
Pads
|
2010-11-01 13:32:43 +00:00
|
|
|
~~~~
|
2001-01-20 20:08:59 +00:00
|
|
|
|
2007-09-24 11:22:26 +00:00
|
|
|
GstPads are the property of a given GstElement. They provide the connection
|
|
|
|
capability, with allowing arbitrary structure in the graph. For any Element
|
|
|
|
but a source or sink, there will be at least 2 Pads owned by the Element.
|
|
|
|
These pads are stored in a single GList within the Element. Several counters
|
|
|
|
are kept in order to allow quicker determination of the type and properties of
|
|
|
|
a given Element.
|
|
|
|
|
2011-06-06 14:11:31 +00:00
|
|
|
Pads may be added to an element with _add_pad. Retrieval is via _get_static_pad(),
|
2007-09-24 11:22:26 +00:00
|
|
|
which operates on the name of the Pad (the unique key). This means that all
|
|
|
|
Pads owned by a given Element must have unique names.
|
|
|
|
A pointer to the GList of pads may be obtained with _iterate_pads.
|
2001-01-20 20:08:59 +00:00
|
|
|
|
|
|
|
gst_element_add_pad(element,pads):
|
2007-09-24 11:22:26 +00:00
|
|
|
Sets the element as the parent of the pad, then adds the pad to the
|
|
|
|
element's list of pads, keeping the counts of total, src, and sink pads
|
|
|
|
up to date. Emits the "new_pad" signal with the pad as argument.
|
|
|
|
Fails if either the element or pad are either NULL or not what they
|
|
|
|
claim to be. Should fail if the pad already has a parent. Should fail
|
|
|
|
if the pad is already owned by the element. Should fail if there's
|
2011-09-07 11:14:38 +00:00
|
|
|
already a pad by that name in the list of pads.
|
2001-01-20 20:08:59 +00:00
|
|
|
|
|
|
|
pad = gst_element_get_pad(element,"padname"):
|
|
|
|
Searches through the list of pads
|
|
|
|
|
|
|
|
|
|
|
|
Ghost Pads
|
2010-11-01 13:32:43 +00:00
|
|
|
~~~~~~~~~~
|
2001-01-20 20:08:59 +00:00
|
|
|
|
2010-11-01 13:32:43 +00:00
|
|
|
More info in part-gstghostpad.txt.
|
2001-01-20 20:08:59 +00:00
|
|
|
|
|
|
|
State
|
2010-11-01 13:32:43 +00:00
|
|
|
~~~~~
|
2001-01-20 20:08:59 +00:00
|
|
|
|
2005-10-08 16:49:15 +00:00
|
|
|
An element has a state. More info in part-states.txt.
|
2010-11-01 13:32:43 +00:00
|
|
|
|