gstreamer/docs/gst/tmpl/gstelement.sgml
Thomas Vander Stichele 2f391173fc add note
Original commit message from CVS:
add note
2004-06-17 19:06:50 +00:00

1447 lines
20 KiB
Text

<!-- ##### SECTION Title ##### -->
GstElement
<!-- ##### SECTION Short_Description ##### -->
Abstract base class for all pipeline elements
<!-- ##### SECTION Long_Description ##### -->
<para>
GstElement is the base class needed to construct an element that can be
used in a GStreamer pipeline. As such, it is not a functional entity, and
cannot do anything when placed in a pipeline.
</para>
<para>
The name of a GstElement can be get with gst_element_get_name() and set with
gst_element_set_name(). For speed, GST_ELEMENT_NAME() can be used in the
core.
Do not use this in plug-ins or applications in order to retain ABI
compatibility.
</para>
<para>
All elements have pads (of the type #GstPad). These pads link to pads on
other elements. Buffers flow between these linked pads.
A GstElement has a GList of #GstPad structures for all their input (or sink)
and output (or source) pads.
Core and plug-in writers can add and remove pads with gst_element_add_pad()
and gst_element_remove_pad().
Application writers can manipulate ghost pads (copies of real pads inside a bin)
with gst_element_add_ghost_pad() and gst_element_remove_ghost_pad().
A pad of an element can be retrieved by name with gst_element_get_pad().
A GList of all pads can be retrieved with gst_element_get_pad_list().
</para>
<para>
Elements can be linked through their pads.
If the link is straightforward, use the gst_element_link()
convenience function to link two elements, or gst_element_link_many()
for more elements in a row.
Use gst_element_link_filtered() to link two elements constrained by
a specified set of #GstCaps.
For finer control, use gst_element_link_pads() and
gst_element_link_pads_filtered() to specify the pads to link on
each element by name.
</para>
<para>
Each element has a state (see #GstElementState). You can get and set the state
of an element with gst_element_get_state() and gst_element_set_state().
You can wait for an element to change it's state with gst_element_wait_state_change().
To get a string representation of a #GstElementState, use
gst_element_state_get_name().
</para>
<para>
You can get and set a #GstClock on an element using gst_element_get_clock()
and gst_element_set_clock(). You can wait for the clock to reach a given
#GstClockTime using gst_element_clock_wait().
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
#GstElementFactory, #GstPad
</para>
<!-- basic object functions -->
<!-- ##### STRUCT GstElement ##### -->
<para>
</para>
<!-- ##### SIGNAL GstElement::eos ##### -->
<para>
</para>
@gstelement: the object which received the signal.
<!-- ##### SIGNAL GstElement::error ##### -->
<para>
</para>
@gstelement: the object which received the signal.
@arg1:
@arg2:
@arg3:
<!-- ##### SIGNAL GstElement::found-tag ##### -->
<para>
</para>
@gstelement: the object which received the signal.
@arg1:
@arg2:
<!-- ##### SIGNAL GstElement::new-pad ##### -->
<para>
</para>
@gstelement: the object which received the signal.
@arg1:
<!-- ##### SIGNAL GstElement::no-more-pads ##### -->
<para>
</para>
@gstelement: the object which received the signal.
<!-- ##### SIGNAL GstElement::pad-removed ##### -->
<para>
</para>
@gstelement: the object which received the signal.
@arg1:
<!-- ##### SIGNAL GstElement::state-change ##### -->
<para>
</para>
@gstelement: the object which received the signal.
@arg1:
@arg2:
<!-- ##### STRUCT GstElementClass ##### -->
<para>
</para>
@parent_class:
@details:
@elementfactory:
@padtemplates:
@numpadtemplates:
@state_change:
@new_pad:
@pad_removed:
@error:
@eos:
@found_tag:
@set_property:
@get_property:
@release_locks:
@get_event_masks:
@send_event:
@get_formats:
@convert:
@get_query_types:
@query:
@change_state:
@request_new_pad:
@release_pad:
@get_clock:
@set_clock:
@get_index:
@set_index:
@set_state:
@no_more_pads:
@_gst_reserved:
<!-- ##### STRUCT GstElementDetails ##### -->
<para>
This struct is used to define public information about the element. It
describes the element, mostly for the benefit of editors.
</para>
@longname:
@klass:
@description:
@author:
@_gst_reserved:
<!-- ##### MACRO GST_ELEMENT_DETAILS ##### -->
<para>
</para>
@longname:
@klass:
@description:
@author:
<!-- ##### MACRO GST_IS_ELEMENT_DETAILS ##### -->
<para>
</para>
@details:
<!-- ##### MACRO GST_NUM_STATES ##### -->
<para>
The maximun number of states.
</para>
<!-- ##### MACRO GST_STATE ##### -->
<para>
This macro returns the current state of the element.
</para>
@obj: Element to return state for.
<!-- ##### MACRO GST_STATE_PENDING ##### -->
<para>
This macro returns the currently pending state of the element.
</para>
@obj: Element to return the pending state for.
<!-- ##### MACRO GST_STATE_TRANSITION ##### -->
<para>
Returns the state transition this object is going through.
</para>
@obj: the Element to return the state transition for
<!-- ##### MACRO GST_STATE_NULL_TO_READY ##### -->
<para>
The Element is going from the NULL state to the READY state.
</para>
<!-- ##### MACRO GST_STATE_READY_TO_PAUSED ##### -->
<para>
The Element is going from the READY state to the PAUSED state.
</para>
<!-- ##### MACRO GST_STATE_PAUSED_TO_PLAYING ##### -->
<para>
The Element is going from the PAUSED state to the PLAYING state.
</para>
<!-- ##### MACRO GST_STATE_PLAYING_TO_PAUSED ##### -->
<para>
The Element is going from the PLAYING state to the PAUSED state.
</para>
<!-- ##### MACRO GST_STATE_PAUSED_TO_READY ##### -->
<para>
The Element is going from the PAUSED state to the READY state.
</para>
<!-- ##### MACRO GST_STATE_READY_TO_NULL ##### -->
<para>
The Element is going from the READY state to the NULL state.
</para>
<!-- ##### MACRO GST_ELEMENT_CLASS ##### -->
<para>
</para>
@klass:
<!-- ##### MACRO GST_ELEMENT_QUERY_TYPE_FUNCTION ##### -->
<para>
Helper macro to create query type functions
</para>
@functionname: The function name
@...: list of query types.
<!-- ##### MACRO GST_ELEMENT_FORMATS_FUNCTION ##### -->
<para>
Halper macro to create element format functions
</para>
@functionname: The function name
@...: formats
<!-- ##### MACRO GST_ELEMENT_EVENT_MASK_FUNCTION ##### -->
<para>
A helper macro to create a mask function
</para>
@functionname: the name of the mask function
@...: Masks
<!-- ##### ENUM GstElementFlags ##### -->
<para>
This enum defines the standard flags that an element may have.
</para>
@GST_ELEMENT_COMPLEX:
@GST_ELEMENT_DECOUPLED:
@GST_ELEMENT_THREAD_SUGGESTED:
@GST_ELEMENT_INFINITE_LOOP:
@GST_ELEMENT_NEW_LOOPFUNC:
@GST_ELEMENT_EVENT_AWARE:
@GST_ELEMENT_USE_THREADSAFE_PROPERTIES:
@GST_ELEMENT_SCHEDULER_PRIVATE1:
@GST_ELEMENT_SCHEDULER_PRIVATE2:
@GST_ELEMENT_LOCKED_STATE:
@GST_ELEMENT_IN_ERROR:
@GST_ELEMENT_FLAG_LAST:
<!-- ##### MACRO GST_ELEMENT_IS_THREAD_SUGGESTED ##### -->
<para>
Queries whether the Element should be placed in a thread.
</para>
@obj: a #GstElement to query
<!-- ##### MACRO GST_ELEMENT_IS_EVENT_AWARE ##### -->
<para>
Query wether this element can handle events.
</para>
@obj: a #GstElement to query
<!-- ##### MACRO GST_ELEMENT_IS_DECOUPLED ##### -->
<para>
Queries if the Element is decoupled.
</para>
@obj: a #GstElement to query
<!-- ##### MACRO GST_ELEMENT_NAME ##### -->
<para>
Gets the name of this element. Used in the core. Not ABI-compatible.
</para>
@obj: A #GstElement to query
<!-- ##### MACRO GST_ELEMENT_PARENT ##### -->
<para>
Get the parent object of this element.
</para>
@obj: a #GstElement to query
<!-- ##### MACRO GST_ELEMENT_MANAGER ##### -->
<para>
Get the manager of this element.
</para>
@obj: a #GstElement to query
<!-- ##### MACRO GST_ELEMENT_SCHED ##### -->
<para>
Get the scheduler of this element.
</para>
@obj: a #GstElement to query
<!-- ##### MACRO GST_ELEMENT_CLOCK ##### -->
<para>
Get the clock of this element
</para>
@obj: a #GstElement to query
<!-- ##### MACRO GST_ELEMENT_PADS ##### -->
<para>
Get the pads of this elements.
</para>
@obj: a #GstElement to query
<!-- ##### MACRO GST_ELEMENT_ERROR ##### -->
<para>
</para>
@el:
@domain:
@code:
@message:
@debug:
<!-- ##### USER_FUNCTION GstElementLoopFunction ##### -->
<para>
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.
</para>
@element: The element in question.
<!-- ##### USER_FUNCTION GstElementPreRunFunction ##### -->
<para>
The signature of the function to execute after this element
is scheduled.
</para>
@element: The element
<!-- ##### USER_FUNCTION GstElementPostRunFunction ##### -->
<para>
The signature of the function to execute before this element
is scheduled.
</para>
@element: The element
<!-- ##### FUNCTION gst_element_class_add_pad_template ##### -->
<para>
</para>
@klass:
@templ:
<!-- ##### FUNCTION gst_element_class_install_std_props ##### -->
<para>
</para>
@klass:
@first_name:
@Varargs:
<!-- ##### FUNCTION gst_element_class_set_details ##### -->
<para>
</para>
@klass:
@details:
<!-- ##### MACRO gst_element_default_deep_notify ##### -->
<para>
The default deep notify handler that prints out the property change
notifications to stdout.
</para>
<!-- ##### FUNCTION gst_element_default_error ##### -->
<para>
</para>
@object:
@orig:
@error:
@debug:
<!-- ##### FUNCTION gst_element_set_loop_function ##### -->
<para>
</para>
@element:
@loop:
<!-- ##### MACRO gst_element_get_name ##### -->
<para>
Gets the name of the element.
</para>
@elem:
@Returns: the name of the element.
<!-- link -->
<!-- ##### MACRO gst_element_set_name ##### -->
<para>
Sets the name of the element, getting rid of the old name if there was one.
</para>
@elem: a #GstElement to set the name of.
@name: the new name of the element.
<!-- ##### MACRO gst_element_get_parent ##### -->
<para>
Gets the parent of an element.
</para>
@elem: a #GstElement to get the parent of.
@Returns: the #GstObject parent of the element.
<!-- ##### MACRO gst_element_set_parent ##### -->
<para>
Sets the parent of an element.
</para>
@elem: a #GstElement to set the parent of.
@parent: the new #GstObject parent of the object.
<!-- ##### FUNCTION gst_element_set ##### -->
<para>
</para>
@element:
@first_property_name:
@Varargs:
<!-- ##### FUNCTION gst_element_get ##### -->
<para>
</para>
@element:
@first_property_name:
@Varargs:
<!-- ##### FUNCTION gst_element_set_valist ##### -->
<para>
</para>
@element:
@first_property_name:
@var_args:
<!-- ##### FUNCTION gst_element_get_valist ##### -->
<para>
</para>
@element:
@first_property_name:
@var_args:
<!-- ##### FUNCTION gst_element_set_property ##### -->
<para>
</para>
@element:
@property_name:
@value:
<!-- ##### FUNCTION gst_element_get_property ##### -->
<para>
</para>
@element:
@property_name:
@value:
<!-- ##### FUNCTION gst_element_enable_threadsafe_properties ##### -->
<para>
</para>
@element:
<!-- ##### FUNCTION gst_element_disable_threadsafe_properties ##### -->
<para>
</para>
@element:
<!-- ##### FUNCTION gst_element_set_pending_properties ##### -->
<para>
</para>
@element:
<!-- ##### FUNCTION gst_element_requires_clock ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_provides_clock ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_get_clock ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_set_clock ##### -->
<para>
</para>
@element:
@clock:
<!-- ##### FUNCTION gst_element_clock_wait ##### -->
<para>
</para>
@element:
@id:
@jitter:
@Returns:
<!-- # Unused Parameters # -->
@clock:
@time:
<!-- ##### FUNCTION gst_element_get_time ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_wait ##### -->
<para>
</para>
@element:
@timestamp:
@Returns:
<!-- ##### FUNCTION gst_element_set_time ##### -->
<para>
</para>
@element:
@time:
<!-- ##### FUNCTION gst_element_set_time_delay ##### -->
<para>
</para>
@element:
@time:
@delay:
<!-- ##### FUNCTION gst_element_adjust_time ##### -->
<para>
</para>
@element:
@diff:
<!-- ##### FUNCTION gst_element_is_indexable ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_set_index ##### -->
<para>
</para>
@element:
@index:
<!-- ##### FUNCTION gst_element_get_index ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_release_locks ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_yield ##### -->
<para>
</para>
@element:
<!-- ##### FUNCTION gst_element_interrupt ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_set_scheduler ##### -->
<para>
</para>
@element:
@sched:
<!-- ##### FUNCTION gst_element_get_scheduler ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_add_pad ##### -->
<para>
</para>
@element:
@pad:
<!-- ##### FUNCTION gst_element_remove_pad ##### -->
<para>
</para>
@element:
@pad:
<!-- ##### FUNCTION gst_element_add_ghost_pad ##### -->
<para>
</para>
@element:
@pad:
@name:
@Returns:
<!-- ##### FUNCTION gst_element_remove_ghost_pad ##### -->
<para>
</para>
@element:
@pad:
<!-- pad template manipulation -->
<!-- ##### FUNCTION gst_element_get_pad ##### -->
<para>
</para>
@element:
@name:
@Returns: GList of #GstPads
<!-- ##### FUNCTION gst_element_get_static_pad ##### -->
<para>
</para>
@element:
@name:
@Returns:
<!-- ##### FUNCTION gst_element_get_request_pad ##### -->
<para>
</para>
@element:
@name:
@Returns:
<!-- ##### FUNCTION gst_element_release_request_pad ##### -->
<para>
</para>
@element:
@pad:
<!-- ##### FUNCTION gst_element_get_pad_list ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_get_compatible_pad ##### -->
<para>
</para>
@element:
@pad:
@Returns:
<!-- ##### FUNCTION gst_element_get_compatible_pad_filtered ##### -->
<para>
</para>
@element:
@pad:
@filtercaps:
@Returns:
<!-- ##### FUNCTION gst_element_class_get_pad_template ##### -->
<para>
</para>
@element_class:
@name:
@Returns:
<!-- ##### FUNCTION gst_element_class_get_pad_template_list ##### -->
<para>
</para>
@element_class:
@Returns:
<!-- ##### FUNCTION gst_element_get_pad_template ##### -->
<para>
</para>
@element:
@name:
@Returns:
<!-- ##### FUNCTION gst_element_get_pad_template_list ##### -->
<para>
</para>
@element:
@Returns:
<!-- scheduling -->
<!-- ##### FUNCTION gst_element_get_compatible_pad_template ##### -->
<para>
</para>
@element:
@compattempl:
@Returns:
<!-- ##### FUNCTION gst_element_link ##### -->
<para>
</para>
@src:
@dest:
@Returns:
<!-- ##### FUNCTION gst_element_link_many ##### -->
<para>
</para>
@element_1:
@element_2:
@Varargs:
@Returns:
<!-- ##### FUNCTION gst_element_link_filtered ##### -->
<para>
</para>
@src:
@dest:
@filtercaps:
@Returns:
<!-- ##### FUNCTION gst_element_unlink ##### -->
<para>
</para>
@src:
@dest:
<!-- ##### FUNCTION gst_element_unlink_many ##### -->
<para>
</para>
@element_1:
@element_2:
@Varargs:
<!-- ##### FUNCTION gst_element_link_pads ##### -->
<para>
</para>
@src:
@srcpadname:
@dest:
@destpadname:
@Returns:
<!-- ##### FUNCTION gst_element_link_pads_filtered ##### -->
<para>
</para>
@src:
@srcpadname:
@dest:
@destpadname:
@filtercaps:
@Returns:
<!-- ##### FUNCTION gst_element_unlink_pads ##### -->
<para>
</para>
@src:
@srcpadname:
@dest:
@destpadname:
<!-- pad manipulation -->
<!-- ##### FUNCTION gst_element_get_event_masks ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_send_event ##### -->
<para>
</para>
@element:
@event:
@Returns:
<!-- ##### FUNCTION gst_element_seek ##### -->
<para>
</para>
@element:
@seek_type:
@offset:
@Returns:
<!-- ##### FUNCTION gst_element_get_query_types ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_query ##### -->
<para>
</para>
@element:
@type:
@format:
@value:
@Returns:
<!-- ##### FUNCTION gst_element_get_formats ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_convert ##### -->
<para>
</para>
@element:
@src_format:
@src_value:
@dest_format:
@dest_value:
@Returns:
<!-- ##### FUNCTION gst_element_found_tags ##### -->
<para>
</para>
@element:
@tag_list:
<!-- ##### FUNCTION gst_element_found_tags_for_pad ##### -->
<para>
</para>
@element:
@pad:
@timestamp:
@list:
<!-- ##### FUNCTION gst_element_set_eos ##### -->
<para>
</para>
@element:
<!-- ##### FUNCTION gst_element_error_full ##### -->
<para>
</para>
@element:
@domain:
@code:
@message:
@debug:
@file:
@function:
@line:
<!-- ##### FUNCTION gst_element_is_locked_state ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_set_locked_state ##### -->
<para>
</para>
@element:
@locked_state:
<!-- ##### FUNCTION gst_element_sync_state_with_parent ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_get_state ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_set_state ##### -->
<para>
</para>
@element:
@state:
@Returns:
<!-- ##### FUNCTION gst_element_wait_state_change ##### -->
<para>
</para>
@element:
<!-- ##### FUNCTION gst_element_state_get_name ##### -->
<para>
</para>
@state:
@Returns:
<!-- ##### FUNCTION gst_element_get_factory ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_get_managing_bin ##### -->
<para>
</para>
@element:
@Returns:
<!-- clocking -->
<!-- ##### FUNCTION gst_element_no_more_pads ##### -->
<para>
</para>
@element:
<!-- ##### FUNCTION gst_element_factory_get_type ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION gst_element_register ##### -->
<para>
</para>
@plugin:
@name:
@rank:
@type:
@Returns:
<!-- # Unused Parameters # -->
@elementname:
<!-- ##### FUNCTION gst_element_factory_find ##### -->
<para>
</para>
@name:
@Returns:
<!-- ##### FUNCTION gst_element_factory_get_element_type ##### -->
<para>
</para>
@factory:
@Returns:
<!-- ##### FUNCTION gst_element_factory_get_longname ##### -->
<para>
</para>
@factory:
@Returns:
<!-- ##### FUNCTION gst_element_factory_get_klass ##### -->
<para>
</para>
@factory:
@Returns:
<!-- ##### FUNCTION gst_element_factory_get_description ##### -->
<para>
</para>
@factory:
@Returns:
<!-- ##### FUNCTION gst_element_factory_get_author ##### -->
<para>
</para>
@factory:
@Returns:
<!-- ##### FUNCTION gst_element_factory_get_num_pad_templates ##### -->
<para>
</para>
@factory:
@Returns:
<!-- ##### FUNCTION gst_element_factory_get_pad_templates ##### -->
<para>
</para>
@factory:
@Returns:
<!-- ##### FUNCTION gst_element_factory_get_uri_type ##### -->
<para>
</para>
@factory:
@Returns:
<!-- ##### FUNCTION gst_element_factory_get_uri_protocols ##### -->
<para>
</para>
@factory:
@Returns:
<!-- ##### FUNCTION gst_element_factory_create ##### -->
<para>
</para>
@factory:
@name:
@Returns:
<!-- ##### FUNCTION gst_element_factory_make ##### -->
<para>
</para>
@factoryname:
@name:
@Returns:
<!-- ##### FUNCTION gst_element_factory_can_src_caps ##### -->
<para>
</para>
@factory:
@caps:
@Returns:
<!-- ##### FUNCTION gst_element_factory_can_sink_caps ##### -->
<para>
</para>
@factory:
@caps:
@Returns:
<!-- ##### STRUCT GstElementFactory ##### -->
<para>
</para>
<!-- ##### STRUCT GstElementFactoryClass ##### -->
<para>
</para>
@parent_class:
@_gst_reserved:
<!-- ##### MACRO GST_TYPE_ELEMENT_FACTORY ##### -->
<para>
</para>
<!-- ##### MACRO GST_ELEMENT_FACTORY ##### -->
<para>
</para>
@obj:
<!-- ##### MACRO GST_ELEMENT_FACTORY_CLASS ##### -->
<para>
</para>
@klass:
<!-- ##### MACRO GST_IS_ELEMENT_FACTORY ##### -->
<para>
</para>
@obj:
<!-- ##### MACRO GST_IS_ELEMENT_FACTORY_CLASS ##### -->
<para>
</para>
@klass: