GstElement
----------

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.

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.

Name
~~~~

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.


Pads
~~~~

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.

Pads may be added to an element with _add_pad.  Retrieval is via _get_static_pad(),
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. 

gst_element_add_pad(element,pads):
	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
	already a pad by that name in the list of pads.

pad = gst_element_get_pad(element,"padname"):
	Searches through the list of pads 


Ghost Pads
~~~~~~~~~~

More info in part-gstghostpad.txt.

State
~~~~~

An element has a state. More info in part-states.txt.

