Description
GstElement is the base class needed to construct an element that can be
used in a GST pipeline. As such, it is not a functional entity, and
cannot do anything when placed in a pipeline.
All GstElements have a list containing the GstPad structure for all their
inputs and outputs. These can be added with gst_element_add_pad() or
gst_element_add_ghost_pad(), and retrieved by name with
gst_element_get_pad(), or in a list form by gst_element_get_pad_list().
gst_element_connect() is a convenience function provided to make it
simpler to connect pads of two elements together.
Details
enum GstElementState
typedef enum {
GST_STATE_NONE_PENDING = -1,
GST_STATE_NULL = 0,
GST_STATE_READY = 1,
GST_STATE_PLAYING = 2,
GST_STATE_PAUSED = 3,
} GstElementState; |
This enum defines the standard states an element may be in. You will normally
use gst_element_set_state() to change the state of an element.
enum GstElementStateReturn
typedef enum {
GST_STATE_FAILURE = 0,
GST_STATE_SUCCESS = 1,
GST_STATE_ASYNC = 2,
} GstElementStateReturn; |
This enum defines the standard return values that an element
can return after a state change.
GST_STATE()
#define GST_STATE(obj) (GST_ELEMENT(obj)->current_state) |
This macro returns the current state of the element.
GST_STATE_PENDING()
#define GST_STATE_PENDING(obj) (GST_ELEMENT(obj)->pending_state) |
This macro returns the currently pending state of the element.
GST_STATE_TRANSITION()
#define GST_STATE_TRANSITION(obj) ((GST_STATE(obj)<<4) | GST_STATE_PENDING(obj)) |
Returns the state transition this object is going through.
GST_STATE_NULL_TO_READY
#define GST_STATE_NULL_TO_READY ((GST_STATE_NULL<<4) | GST_STATE_READY) |
The Element is going from the NULL state to the READY state.
GST_STATE_READY_TO_PLAYING
#define GST_STATE_READY_TO_PLAYING ((GST_STATE_READY<<4) | GST_STATE_PLAYING) |
The Element is going from the READY state to the PLAYING state.
GST_STATE_PLAYING_TO_PAUSED
#define GST_STATE_PLAYING_TO_PAUSED ((GST_STATE_PLAYING<<4) | GST_STATE_PAUSED) |
The Element is going from the PLAYING state to the PAUSED state.
GST_STATE_PAUSED_TO_PLAYING
#define GST_STATE_PAUSED_TO_PLAYING ((GST_STATE_PAUSED<<4) | GST_STATE_PLAYING) |
The Element is going from the PAUSED state to the PLAYING state.
GST_STATE_PLAYING_TO_READY
#define GST_STATE_PLAYING_TO_READY ((GST_STATE_PLAYING<<4) | GST_STATE_READY) |
The Element is going from the PLAYING state to the READY state.
GST_STATE_READY_TO_NULL
#define GST_STATE_READY_TO_NULL ((GST_STATE_READY<<4) | GST_STATE_NULL) |
The Element is going from the READY state to the NULL state.
enum GstElementFlags
typedef enum {
/* element is complex (for some def.) and generally require a cothread */
GST_ELEMENT_COMPLEX = GST_OBJECT_FLAG_LAST,
/* input and output pads aren't directly coupled to each other
examples: queues, multi-output async readers, etc. */
GST_ELEMENT_DECOUPLED,
/* this element should be placed in a thread if at all possible */
GST_ELEMENT_THREAD_SUGGESTED,
/* this element is incable of seeking (FIXME: does this apply to filters?) */
GST_ELEMENT_NO_SEEK,
/* there is a new loopfunction ready for placement */
GST_ELEMENT_NEW_LOOPFUNC,
/* the cothread holding this element needs to be stopped */
GST_ELEMENT_COTHREAD_STOPPING,
/* the element has to be scheduled as a cothread for any sanity */
GST_ELEMENT_USE_COTHREAD,
/* use some padding for future expansion */
GST_ELEMENT_FLAG_LAST = GST_OBJECT_FLAG_LAST + 8,
} GstElementFlags; |
This enum defines the standard flags that an element may have.
GST_ELEMENT_IS_THREAD_SUGGESTED()
#define GST_ELEMENT_IS_THREAD_SUGGESTED(obj) (GST_FLAG_IS_SET(obj,GST_ELEMENT_THREAD_SUGGESTED)) |
Queries whether the Element should be placed in a thread.
GST_ELEMENT_IS_COTHREAD_STOPPING()
#define GST_ELEMENT_IS_COTHREAD_STOPPING(obj) (GST_FLAG_IS_SET(obj,GST_ELEMENT_COTHREAD_STOPPING)) |
Queries whether the cothread holding this element needs to be stopped.
struct GstElementDetails
struct GstElementDetails {
gchar *longname; /* long, english name */
gchar *klass; /* type of element, as hierarchy */
gchar *description; /* insights of one form or another */
gchar *version; /* version of the element */
gchar *author; /* who wrote this thing? */
gchar *copyright; /* copyright details (year, etc.) */
}; |
This struct is used to define public information about the element. It
describes the element, mostly for the benefit of editors.
struct GstElementFactory
struct GstElementFactory {
gchar *name; /* name of element */
GtkType type; /* unique GtkType of element */
GstElementDetails *details; /* pointer to details struct */
GList *padtemplates;
guint16 numpadtemplates;
}; |
This factory is used when registering the element, and contains the name
of the element, the GtkType value for it, as well as a pointer to the
GstElementDetails struct for the element.
GstElementLoopFunction ()
void (*GstElementLoopFunction) (GstElement *element); |
This function type is used to specify a loop function for the element. It
is passed the element in question, and is expect to return only in error
circumstances.
gst_element_new ()
Create a new element. Should never be used, as it does no good.
gst_element_destroy()
#define gst_element_destroy(element) gst_object_destroy (GST_OBJECT (element)) |
gst_element_set_loop_function ()
This sets the loop function for the element. The function pointed to
can deviate from the GstElementLoopFunction definition in type of
pointer only.
NOTE: in order for this to take effect, the current loop function *must*
exit. Assuming the loop function itself is the only one who will cause
a new loopfunc to be assigned, this should be no problem.
gst_element_set_name ()
void gst_element_set_name (GstElement *element,
const gchar *name); |
Set the name of the element, getting rid of the old name if there was
one.
gst_element_get_name ()
const gchar* gst_element_get_name (GstElement *element); |
Get the name of the element.
gst_element_set_manager ()
Sets the manager of the element. For internal use only, unless you're
writing a new bin subclass.
gst_element_get_manager ()
Returns the manager of the element.
gst_element_add_pad ()
Add a pad (connection point) to the element, setting the parent of the
pad to the element (and thus adding a reference).
gst_element_get_pad ()
Retrieve a pad from the element by name.
gst_element_get_pad_list ()
GList* gst_element_get_pad_list (GstElement *element); |
Retrieve a list of the pads associated with the element.
gst_element_get_padtemplate_list ()
GList* gst_element_get_padtemplate_list
(GstElement *element); |
Retrieve a list of the padtemplates associated with the element.
gst_element_add_ghost_pad ()
Add a ghost pad to the element, setting the ghost parent of the pad to
the element (and thus adding a reference).
gst_element_remove_ghost_pad ()
removes a ghost pad from an element
gst_element_connect ()
void gst_element_connect (GstElement *src,
const gchar *srcpadname,
GstElement *dest,
const gchar *destpadname); |
Connect the two named pads of the source and destination elements.
Side effect is that if one of the pads has no parent, it becomes a
child of the parent of the other element. If they have different
parents, the connection fails.
gst_element_disconnect ()
void gst_element_disconnect (GstElement *src,
const gchar *srcpadname,
GstElement *dest,
const gchar *destpadname); |
Disconnect the two named pads of the source and destination elements.
gst_element_set_state ()
Sets the state of the element. This function will only set
the elements pending state.
gst_element_error ()
void gst_element_error (GstElement *element,
const gchar *error); |
This function is used internally by elements to signal an error
condition. It results in the "error" signal.
gst_element_get_factory ()
Retrieves the factory that was used to create this element
gst_element_signal_eos ()
void gst_element_signal_eos (GstElement *element); |
Throws the eos signal to indicate that the end of the stream is reached.
gst_element_save_thyself ()
xmlNodePtr gst_element_save_thyself (GstElement *element,
xmlNodePtr parent); |
Saves the element as part of the given XML structure
gst_element_load_thyself ()
GstElement* gst_element_load_thyself (xmlNodePtr parent,
GHashTable *elements); |
Load the element from the XML description
gst_elementfactory_new ()
Create a new elementfactory capable of insantiating objects of the
given type.
gst_elementfactory_destroy ()
Removes the elementfactory from the global list.
gst_elementfactory_add_padtemplate ()
Add the given padtemplate to this elementfactory.
gst_elementfactory_find ()
Search for an elementfactory of the given name.
gst_elementfactory_get_list ()
GList* gst_elementfactory_get_list (void); |
Get the global list of elementfactories.
gst_elementfactory_can_src_caps ()
Checks if the factory can src the given capability.
gst_elementfactory_can_sink_caps ()
Checks if the factory can sink the given capability.
gst_elementfactory_can_src_caps_list ()
gboolean gst_elementfactory_can_src_caps_list
(GstElementFactory *factory,
GList *caps); |
Checks if the factory can source the given capability list.
gst_elementfactory_can_sink_caps_list ()
gboolean gst_elementfactory_can_sink_caps_list
(GstElementFactory *factory,
GList *caps); |
Checks if the factory can sink the given capability list.
gst_elementfactory_create ()
Create a new element of the type defined by the given elementfactory.
It wll be given the name supplied, since all elements require a name as
their first argument.
gst_elementfactory_make ()
GstElement* gst_elementfactory_make (const gchar *factoryname,
const gchar *name); |
Create a new element of the type defined by the given elementfactory.
It wll be given the name supplied, since all elements require a name as
their first argument.
gst_elementfactory_save_thyself ()
xmlNodePtr gst_elementfactory_save_thyself (GstElementFactory *factory,
xmlNodePtr parent); |
Saves the factory into an XML tree.
gst_elementfactory_load_thyself ()
Creates a new factory from an xmlNodePtr.