<answer>
<para>
You can test this by trying to play a sine tone. For this, you need to
-connect the sinesrc plug-in to an output plug-in that matches your hardware.
+link the sinesrc plug-in to an output plug-in that matches your hardware.
A (non-complete) list of output plug-ins for audio is
<itemizedlist>
<listitem><para>osssink for OSS output</para></listitem>
gst_scheduler_yield
gst_scheduler_interrupt
gst_scheduler_error
-gst_scheduler_pad_connect
-gst_scheduler_pad_disconnect
+gst_scheduler_pad_link
+gst_scheduler_pad_unlink
gst_scheduler_pad_select
gst_scheduler_add_scheduler
gst_scheduler_remove_scheduler
gst_element_get_pad_template_list
gst_element_class_add_pad_template
-gst_element_connect
-gst_element_connect_many
-gst_element_connect_filtered
-gst_element_connect_pads
-gst_element_connect_pads_filtered
-gst_element_disconnect
-gst_element_disconnect_many
-gst_element_disconnect_pads
+gst_element_link
+gst_element_link_many
+gst_element_link_filtered
+gst_element_link_pads
+gst_element_link_pads_filtered
+gst_element_unlink
+gst_element_unlink_many
+gst_element_unlink_pads
gst_element_get_compatible_pad
gst_element_get_compatible_pad_filtered
gst_element_get_compatible_pad_template
GST_PAD_CAN_PULL
GST_PAD_IS_SINK
GST_PAD_IS_SRC
-GST_PAD_IS_CONNECTED
+GST_PAD_IS_LINKED
GST_PAD_IS_ACTIVE
GST_PAD_IS_USABLE
GstPadGetCapsFunction
GstPadEventFunction
-GstPadConnectFunction
-GstPadConnectReturn
+GstPadLinkFunction
+GstPadLinkReturn
GstPadConvertFunction
GstPadDispatcherFunction
-GstPadIntConnFunction
+GstPadIntLinkFunction
GstPadQueryFunction
GstPadEventMaskFunction
gst_pad_set_chain_function
gst_pad_set_get_function
gst_pad_set_bufferpool_function
-gst_pad_set_connect_function
+gst_pad_set_link_function
gst_pad_set_getcaps_function
gst_pad_try_set_caps
gst_pad_get_caps
gst_pad_remove_ghost_pad
gst_pad_get_ghost_pad_list
gst_pad_get_peer
-gst_pad_connect
-gst_pad_connect_filtered
-gst_pad_reconnect_filtered
-gst_pad_try_reconnect_filtered
-gst_pad_disconnect
-gst_pad_can_connect
-gst_pad_can_connect_filtered
+gst_pad_link
+gst_pad_link_filtered
+gst_pad_relink_filtered
+gst_pad_try_relink_filtered
+gst_pad_unlink
+gst_pad_can_link
+gst_pad_can_link_filtered
gst_pad_push
gst_pad_pull
gst_pad_get_bufferpool
-gst_pad_load_and_connect
-gst_pad_proxy_connect
+gst_pad_load_and_link
+gst_pad_proxy_link
gst_pad_get_pad_template
gst_pad_get_pad_template_caps
gst_pad_get_allowed_caps
gst_pad_get_formats_default
gst_pad_set_formats_function
-gst_pad_get_internal_connections
-gst_pad_get_internal_connections_default
-gst_pad_set_internal_connection_function
+gst_pad_get_internal_links
+gst_pad_get_internal_links_default
+gst_pad_set_internal_link_function
gst_pad_set_query_function
gst_pad_query
GST_RPAD_EVENTFUNC
GST_RPAD_EVENTHANDLER
GST_RPAD_GETHANDLER
-GST_RPAD_CONNECTFUNC
+GST_RPAD_LINKFUNC
GST_RPAD_GETCAPSFUNC
GST_RPAD_CONVERTFUNC
-GST_RPAD_INTCONNFUNC
+GST_RPAD_INTLINKFUNC
GST_RPAD_QUERYFUNC
GST_RPAD_EVENTMASKFUNC
GST_RPAD_FORMATSFUNC
GST_IS_GHOST_PAD_CLASS
GST_IS_GHOST_PAD_FAST
gst_ghost_pad_get_type
-GST_TYPE_PAD_CONNECT_RETURN
-gst_pad_connect_return_get_type
+GST_TYPE_PAD_LINK_RETURN
+gst_pad_link_return_get_type
GST_TYPE_PAD_DIRECTION
gst_pad_direction_get_type
GST_TYPE_PAD_FLAGS
#GstScheduler
</para>
-<!-- ##### MACRO CURRENT_STACK_FRAME ##### -->
-<para>
-Get the current stack frame.
-</para>
-
-
-
<!-- ##### STRUCT cothread_state ##### -->
<para>
The cothread state structure
GstAutoplug
<!-- ##### SECTION Short_Description ##### -->
-Automatically create and connect elements
+Automatically create and link elements
<!-- ##### SECTION Long_Description ##### -->
<para>
GstAutoplug is an abstract class that is used for constructing and
-connecting elements. Two types of autopluggers exist: renderer ones and non
-renderer ones. the renderer autopluggers will not have any src pads while the
+linking elements. Two types of autopluggers exist: renderer ones and non
+renderer ones. The renderer autopluggers will not have any src pads while the
non renderer ones do.
</para>
(see #GstStaticAutoplug and #GstStaticAutoplugRender).
</para>
<para>
-If the autoplugger supports the RENDERER API, use gst_autoplug_to_renderers() call to
-create a bin that connectes the src caps to the specified rendrer elements. You can
+If the autoplugger supports the RENDERER API, use gst_autoplug_to_renderers() to
+create a bin that links the src caps to the specified renderer elements. You can
then add the bin to a pipeline and run it.
<programlisting>
sink,
NULL);
- /* add the element to a bin and connect the sink pad */
+ /* add the element to a bin and link the sink pad */
...
</programlisting>
</para>
<para>
-If the autoplugger supports the CAPS API, use gst_autoplug_to_caps() call to
-connect the src caps to the destination caps. The created bin will have src pads
+If the autoplugger supports the CAPS API, use gst_autoplug_to_caps() to
+link the src caps to the destination caps. The created bin will have src caps
compatible with the provided sink caps.
<programlisting>
),
NULL);
- /* add the element to a bin and connect the src/sink pads */
+ /* add the element to a bin and link the src/sink pads */
...
</programlisting>
</para>
</programlisting>
</para>
<para>
-If you want to check if a connection between source and destination caps
+If you want to check if a link between source and destination caps
is always possible, use gst_caps_is_always_compatible(), which returns
a boolean.
-If you want to check if a connection between source and destination caps
+If you want to check if a link between source and destination caps
might be possible, use gst_caps_intersect(), which returns an intersection
of the capabilities.
</para>
</para>
<para>
-All elements have pads (of the type #GstPad). These pads connect to pads on
-other elements. Buffers flow between these connected pads.
+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()
</para>
<para>
-Elements can be connected through their pads.
-If the connection is straightforward, use the gst_element_connect()
-convenience function to connect two elements, or gst_element_connect_many()
+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_connect_filtered() to connect two elements constrained by
+Use gst_element_link_filtered() to link two elements constrained by
a specified set of #GstCaps.
-For finer control, use gst_element_connect_pads() and
-gst_element_connect_pads_filtered() to specify the pads to connect on
+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>
@Returns: the name of the element.
-<!-- connection -->
+<!-- link -->
<!-- ##### MACRO gst_element_set_name ##### -->
@templ:
-<!-- ##### FUNCTION gst_element_connect ##### -->
+<!-- ##### FUNCTION gst_element_link ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_element_connect_many ##### -->
+<!-- ##### FUNCTION gst_element_link_many ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_element_connect_filtered ##### -->
+<!-- ##### FUNCTION gst_element_link_filtered ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_element_connect_pads ##### -->
+<!-- ##### FUNCTION gst_element_link_pads ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_element_connect_pads_filtered ##### -->
+<!-- ##### FUNCTION gst_element_link_pads_filtered ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_element_disconnect ##### -->
+<!-- ##### FUNCTION gst_element_unlink ##### -->
<para>
</para>
@dest:
-<!-- ##### FUNCTION gst_element_disconnect_many ##### -->
+<!-- ##### FUNCTION gst_element_unlink_many ##### -->
<para>
</para>
@Varargs:
-<!-- ##### FUNCTION gst_element_disconnect_pads ##### -->
+<!-- ##### FUNCTION gst_element_unlink_pads ##### -->
<para>
</para>
@GST_EVENT_RATE: adjust the output rate of an element
@GST_EVENT_FILLER: a dummy event that should be ignored by plugins
@GST_EVENT_TS_OFFSET: an event to set the time offset on buffers
+@GST_EVENT_INTERRUPT:
<!-- ##### MACRO GST_EVENT_TYPE ##### -->
<para>
@index: the index being queried.
@writer: The object that wants to write
-@writer_id: A pointer to the id that has to be assigned to this writer
@writer_string: A description of the writer.
@user_data: user_data as registered
@Returns: TRUE if an id could be assigned to the writer.
+<!-- # Unused Parameters # -->
+@writer_id: A pointer to the id that has to be assigned to this writer
<!-- ##### STRUCT GstIndex ##### -->
@gstindex: the object which received the signal.
@arg1: The entry added to the index.
+<!-- ##### ARG GstIndex:resolver ##### -->
+<para>
+
+</para>
+
GstPad
<!-- ##### SECTION Short_Description ##### -->
-The connection between Elements
+The link between Elements
<!-- ##### SECTION Long_Description ##### -->
<para>
-A #GstElement is connected to other elements via "pads", which are extremely
-light-weight generic connections points.
+A #GstElement is linked to other elements via "pads", which are extremely
+light-weight generic link points.
After two pads are retrieved from an element with gst_element_get_pad(),
-the pads can be connected with gst_pad_connect(). (For quick connections,
-you can also use gst_element_connect(), which will make the obvious
-connection for you if it's straightforward).
+the pads can be link with gst_pad_link(). (For quick links,
+you can also use gst_element_link(), which will make the obvious
+link for you if it's straightforward.)
</para>
<para>
Pads are typically created from a #GstPadTemplate with
<!-- ##### MACRO GST_PAD_PEER ##### -->
<para>
Gets the peer pad of this pad. The peer pad is the pad on to which the parent
-element is connected through this pad.
+element is linked through this pad.
</para>
@pad: a #GstPad to get the peer pad of.
@pad: a #GstPad to check.
-<!-- ##### MACRO GST_PAD_IS_CONNECTED ##### -->
+<!-- ##### MACRO GST_PAD_IS_LINKED ##### -->
<para>
-Checks if the pad is connected.
+Checks if the pad is linked.
</para>
@pad: a #GstPad to check.
<!-- ##### MACRO GST_PAD_IS_USABLE ##### -->
<para>
-Checks if a pad is usable. A usable pad both connected and active.
+Checks if a pad is usable. A usable pad is both linked and active.
</para>
@pad: a #GstPad to check
@Returns: TRUE if the pad could handle the event.
-<!-- ##### USER_FUNCTION GstPadConnectFunction ##### -->
+<!-- ##### USER_FUNCTION GstPadLinkFunction ##### -->
<para>
-Function signature to handle a new connection on the pad.
+Function signature to handle a new link on the pad.
</para>
-@pad: the #GstPad that is connected.
+@pad: the #GstPad that is linked.
@caps: the peer's #GstCaps.
-@Returns: the result of the connection with the specified caps.
+@Returns: the result of the link with the specified caps.
-<!-- ##### ENUM GstPadConnectReturn ##### -->
+<!-- ##### ENUM GstPadLinkReturn ##### -->
<para>
-The result of a pad connection.
+The result of a pad link.
</para>
-@GST_PAD_CONNECT_REFUSED: the connection was refused.
-@GST_PAD_CONNECT_DELAYED: the connection was delayed, probably because the
- element needs more specific pad capabilitiess.
-@GST_PAD_CONNECT_OK: the connection succeeded.
-@GST_PAD_CONNECT_DONE: the connection succeeded,
- any more attempts are not needed.
+@GST_PAD_LINK_REFUSED: the link was refused.
+@GST_PAD_LINK_DELAYED: the link was delayed, probably because the
+ element needs more specific pad capabilitiess.
+@GST_PAD_LINK_OK: the link succeeded.
+@GST_PAD_LINK_DONE: the link succeeded,
+ any more attempts are not needed.
<!-- ##### USER_FUNCTION GstPadConvertFunction ##### -->
<para>
<!-- ##### USER_FUNCTION GstPadDispatcherFunction ##### -->
<para>
-A dispatcher function is called for all internally connected pads, see
+A dispatcher function is called for all internally linked pads, see
gst_pad_dispatcher().
</para>
@Returns: TRUE if the dispatching procedure has to be stopped.
-<!-- ##### USER_FUNCTION GstPadIntConnFunction ##### -->
+<!-- ##### USER_FUNCTION GstPadIntLinkFunction ##### -->
<para>
-The signature of the internal pad connection function.
+The signature of the internal pad link function.
</para>
@pad: The #GstPad to query.
-@Returns: a newly allocated #GList of pads that are connected to
+@Returns: a newly allocated #GList of pads that are linked to
the given pad on the inside of the parent element.
The caller must call g_list_free() on it after use.
@bufpool:
-<!-- ##### FUNCTION gst_pad_set_connect_function ##### -->
+<!-- ##### FUNCTION gst_pad_set_link_function ##### -->
<para>
</para>
@pad:
-@connect:
+@link:
<!-- ##### FUNCTION gst_pad_set_getcaps_function ##### -->
@Returns:
-<!-- ##### FUNCTION gst_pad_connect ##### -->
+<!-- ##### FUNCTION gst_pad_link ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_pad_connect_filtered ##### -->
+<!-- ##### FUNCTION gst_pad_link_filtered ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_pad_reconnect_filtered ##### -->
+<!-- ##### FUNCTION gst_pad_relink_filtered ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_pad_try_reconnect_filtered ##### -->
+<!-- ##### FUNCTION gst_pad_try_relink_filtered ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_pad_disconnect ##### -->
+<!-- ##### FUNCTION gst_pad_unlink ##### -->
<para>
</para>
@sinkpad:
-<!-- ##### FUNCTION gst_pad_can_connect ##### -->
+<!-- ##### FUNCTION gst_pad_can_link ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_pad_can_connect_filtered ##### -->
+<!-- ##### FUNCTION gst_pad_can_link_filtered ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_pad_load_and_connect ##### -->
+<!-- ##### FUNCTION gst_pad_load_and_link ##### -->
<para>
</para>
@parent:
-<!-- ##### FUNCTION gst_pad_proxy_connect ##### -->
+<!-- ##### FUNCTION gst_pad_proxy_link ##### -->
<para>
</para>
@formats:
-<!-- ##### FUNCTION gst_pad_get_internal_connections ##### -->
+<!-- ##### FUNCTION gst_pad_get_internal_links ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_pad_get_internal_connections_default ##### -->
+<!-- ##### FUNCTION gst_pad_get_internal_links_default ##### -->
<para>
</para>
@Returns:
-<!-- ##### FUNCTION gst_pad_set_internal_connection_function ##### -->
+<!-- ##### FUNCTION gst_pad_set_internal_link_function ##### -->
<para>
</para>
@pad:
-@intconn:
+@intlink:
<!-- ##### FUNCTION gst_pad_set_query_function ##### -->
@appfilter:
@getcapsfunc:
@direction:
-@connectfunc:
+@linkfunc:
@peer:
@sched_private:
@chainfunc:
@queryfunc:
@formatsfunc:
@querytypefunc:
-@intconnfunc:
+@intlinkfunc:
@bufferpoolfunc:
@probedisp:
@pad: the real pad to query.
-<!-- ##### MACRO GST_RPAD_CONNECTFUNC ##### -->
+<!-- ##### MACRO GST_RPAD_LINKFUNC ##### -->
<para>
-Get the connect function of the pad
+Get the link function of the pad
</para>
@pad: the pad to query
@pad: the pad to query
-<!-- ##### MACRO GST_RPAD_INTCONNFUNC ##### -->
+<!-- ##### MACRO GST_RPAD_INTLINKFUNC ##### -->
<para>
-Get the internal connection function of this pad
+Get the internal link function of this pad
</para>
@pad: the pad to query
@GST_PARSE_ERROR_SYNTAX: A syntax error was detected
@GST_PARSE_ERROR_NO_SUCH_ELEMENT: The pipeline description contains a non existing element
@GST_PARSE_ERROR_NO_SUCH_PROPERTY: The pipeline description contains a non existing element property
-@GST_PARSE_ERROR_CONNECT: A pad connection could not be made
+@GST_PARSE_ERROR_LINK: A pad link could not be made
<!-- ##### MACRO GST_PARSE_ERROR ##### -->
<para>
gstconfig
-<!-- ##### SECTION ./tmpl/gstconnection.sgml:Long_Description ##### -->
-<para>
-A connection is a bas class for a generic connection between
-elements. A connection is typically a bas class for queues.
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gstconnection.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gstconnection.sgml:Short_Description ##### -->
-Generic connection between elements.
-
-
-<!-- ##### SECTION ./tmpl/gstconnection.sgml:Title ##### -->
-GstConnection
-
-
<!-- ##### SECTION ./tmpl/gstdata_private.sgml:Long_Description ##### -->
<para>
<!-- ##### SECTION ./tmpl/gstfilter.sgml:Long_Description ##### -->
<para>
Filters take data in and spit data out. They are the main Element in a filter graph.
-Filters have zero or more inputs and zero or more outputs. Filters are connected
+Filters have zero or more inputs and zero or more outputs. Filters are linked
together to form filter graphs. A GstFilter is the base class and is not very usefull
on its own.
</para>
GstIdentity
+<!-- ##### SECTION ./tmpl/gstlink.sgml:Long_Description ##### -->
+<para>
+A link is a base class for a generic link between
+elements. A link is typically a base class for queues.
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gstlink.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gstlink.sgml:Short_Description ##### -->
+Generic link between elements.
+
+
+<!-- ##### SECTION ./tmpl/gstlink.sgml:Title ##### -->
+GstLink
+
+
<!-- ##### SECTION ./tmpl/gstmacros.sgml:Long_Description ##### -->
<para>
<para>
The trick is dealing with these structs as they pass through a pipeline,
since they have potentially different mutability properties. For
-instance, if you've got a mp3 decoder connected to a tee, which sends the
+instance, if you've got a mp3 decoder linked to a tee, which sends the
buffers off to both the decoder and a spectrum analyzer (and then a
visualization element). The preferred setup would be where every time a
audio/raw metadata comes down the pipe (indicating a potential change in
videoraw
-<!-- ##### MACRO BCONNECTION ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO CONNECTION ##### -->
+<!-- ##### MACRO BLINK ##### -->
<para>
</para>
</para>
+<!-- ##### MACRO CURRENT_STACK_FRAME ##### -->
+<para>
+Get the current stack frame.
+</para>
+
+
<!-- ##### MACRO DEBUG ##### -->
<para>
Use this macro to show debugging info. This is only usefull when developing new
@format:
@args...:
-<!-- ##### MACRO FCONNECTION ##### -->
+<!-- ##### MACRO FLINK ##### -->
<para>
</para>
@caps: The caps structure to unlock
-<!-- ##### MACRO GST_CONNECTION ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### MACRO GST_CONNECTION_CLASS ##### -->
-<para>
-
-</para>
-
-@klass:
-
<!-- ##### MACRO GST_CPU_FLAG_MMX ##### -->
<para>
A flag indicating that MMX instructions are supported.
@obj:
-<!-- ##### MACRO GST_IS_CONNECTION ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### MACRO GST_IS_CONNECTION_CLASS ##### -->
-<para>
-
-</para>
-
-@obj:
-
<!-- ##### MACRO GST_IS_DISKSRC ##### -->
<para>
@obj:
+<!-- ##### MACRO GST_IS_LINK ##### -->
+<para>
+
+</para>
+
+@obj:
+
+<!-- ##### MACRO GST_IS_LINK_CLASS ##### -->
+<para>
+
+</para>
+
+@obj:
+
<!-- ##### MACRO GST_IS_OBJECT ##### -->
<para>
@obj:
+<!-- ##### MACRO GST_LINK ##### -->
+<para>
+
+</para>
+
+@obj:
+
+<!-- ##### MACRO GST_LINK_CLASS ##### -->
+<para>
+
+</para>
+
+@klass:
+
<!-- ##### MACRO GST_META ##### -->
<para>
@klass:
-<!-- ##### MACRO GST_PAD_CONNECTED ##### -->
-<para>
-Is this pad connected.
-</para>
-
-@pad: the pad to check
-
<!-- ##### MACRO GST_PAD_FACTORY_ALWAYS ##### -->
<para>
Indicate that this pad will always be available.
</para>
+<!-- ##### MACRO GST_PAD_LINKED ##### -->
+<para>
+Is this pad linked.
+</para>
+
+@pad: the pad to check
+
<!-- ##### MACRO GST_PAD_TEMPLATE ##### -->
<para>
@sched: The scheduler.
@element: The element to lock.
-<!-- ##### MACRO GST_SCHEDULE_PAD_CONNECT ##### -->
+<!-- ##### MACRO GST_SCHEDULE_PAD_LINK ##### -->
<para>
-Fast macro to connect two pads.
+Fast macro to link two pads.
</para>
@sched: The scheduler.
@srcpad: The source pad.
@sinkpad: The sink pad.
-<!-- ##### MACRO GST_SCHEDULE_PAD_DISCONNECT ##### -->
+<!-- ##### MACRO GST_SCHEDULE_PAD_UNLINK ##### -->
<para>
-Fast macro to disconnect two pads.
+Fast macro to unlink two pads.
</para>
@sched: The scheduler.
</para>
-<!-- ##### MACRO GST_TYPE_CONNECTION ##### -->
-<para>
-
-</para>
-
-
<!-- ##### MACRO GST_TYPE_CPU_FLAGS ##### -->
<para>
</para>
+<!-- ##### MACRO GST_TYPE_LINK ##### -->
+<para>
+
+</para>
+
+
<!-- ##### MACRO GST_TYPE_OBJECT ##### -->
<para>
</para>
-<!-- ##### MACRO GST_TYPE_PAD_CONNECT_RETURN ##### -->
+<!-- ##### MACRO GST_TYPE_PAD_DIRECTION ##### -->
<para>
</para>
-<!-- ##### MACRO GST_TYPE_PAD_DIRECTION ##### -->
+<!-- ##### MACRO GST_TYPE_PAD_FLAGS ##### -->
<para>
</para>
-<!-- ##### MACRO GST_TYPE_PAD_FLAGS ##### -->
+<!-- ##### MACRO GST_TYPE_PAD_LINK_RETURN ##### -->
<para>
</para>
</para>
-<!-- ##### STRUCT GstConnection ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT GstConnectionClass ##### -->
-<para>
-
-</para>
-
-
<!-- ##### SIGNAL GstDiskSink::handoff ##### -->
<para>
Is emited after the buffer has been written to the disk.
</para>
+<!-- ##### STRUCT GstLink ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT GstLinkClass ##### -->
+<para>
+
+</para>
+
+
<!-- ##### ARG GstMD5Sink:md5 ##### -->
<para>
@GST_PARSE_ERROR_CREATING_ELEMENT:
@GST_PARSE_ERROR_NOSUCH_ELEMENT:
@GST_PARSE_ERROR_INTERNAL:
-@GST_PARSE_ERROR_CONNECT:
+@GST_PARSE_ERROR_LINK:
<!-- ##### ENUM GstPipeFilterFlags ##### -->
<para>
</para>
-<!-- ##### TYPEDEF GstSpiderConnection ##### -->
+<!-- ##### TYPEDEF GstSpiderLink ##### -->
<para>
</para>
@format:
@args...:
+<!-- ##### MACRO LINK ##### -->
+<para>
+
+</para>
+
+
<!-- ##### MACRO LOCAL_REGISTRY_DIR ##### -->
<para>
@Domain:
@Directory:
-<!-- ##### TYPEDEF connection_t ##### -->
-<para>
-
-</para>
-
-
<!-- ##### TYPEDEF cothread ##### -->
<para>
@parent:
@current_bin_type:
@elements:
-@connections:
-@connections_pending:
+@links:
+@links_pending:
@bins:
@bin:
@src:
-<!-- ##### FUNCTION gst_autoplug_can_connect_sink ##### -->
+<!-- ##### FUNCTION gst_autoplug_can_link_sink ##### -->
<para>
</para>
@sink:
@Returns:
-<!-- ##### FUNCTION gst_autoplug_can_connect_src ##### -->
+<!-- ##### FUNCTION gst_autoplug_can_link_src ##### -->
<para>
</para>
@jitter:
@Returns:
-<!-- ##### FUNCTION gst_connection_get_type ##### -->
-=======
-
-
-<!-- ##### FUNCTION gst_connection_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION gst_connection_push ##### -->
-<para>
-
-</para>
-
-@connection:
-
<!-- ##### FUNCTION gst_cpu_flags_get_type ##### -->
<para>
@first_name:
@Varargs:
-<!-- ##### FUNCTION gst_element_connect_elements ##### -->
-<para>
-
-</para>
-
-@src:
-@dest:
-@Returns:
-
-<!-- ##### FUNCTION gst_element_connect_elements_filtered ##### -->
-<para>
-
-</para>
-
-@src:
-@dest:
-@filtercaps:
-@Returns:
-
-<!-- ##### FUNCTION gst_element_connect_elements_many ##### -->
-<para>
-
-</para>
-
-@element_1:
-@element_2:
-@Varargs:
-@Returns:
-
-<!-- ##### FUNCTION gst_element_disconnect_elements ##### -->
-<para>
-
-</para>
-
-@src:
-@dest:
-
<!-- ##### FUNCTION gst_element_factory_add_sink ##### -->
<para>
@element:
@Returns:
+<!-- ##### FUNCTION gst_element_link_elements ##### -->
+<para>
+
+</para>
+
+@src:
+@dest:
+@Returns:
+
+<!-- ##### FUNCTION gst_element_link_elements_filtered ##### -->
+<para>
+
+</para>
+
+@src:
+@dest:
+@filtercaps:
+@Returns:
+
+<!-- ##### FUNCTION gst_element_link_elements_many ##### -->
+<para>
+
+</para>
+
+@element_1:
+@element_2:
+@Varargs:
+@Returns:
+
<!-- ##### FUNCTION gst_element_load_thyself ##### -->
<para>
@Returns:
+<!-- ##### FUNCTION gst_element_unlink_elements ##### -->
+<para>
+
+</para>
+
+@src:
+@dest:
+
<!-- ##### FUNCTION gst_esdsink_chain ##### -->
<para>
@format:
@args...:
+<!-- ##### FUNCTION gst_link_get_type ##### -->
+=======
+
+
+<!-- ##### FUNCTION gst_link_new ##### -->
+<para>
+
+</para>
+
+@name:
+@Returns:
+
+<!-- ##### FUNCTION gst_link_push ##### -->
+<para>
+
+</para>
+
+@link:
+
<!-- ##### MACRO gst_marshal_VOID__BOOLEAN ##### -->
<para>
@pad:
@parent:
-<!-- ##### FUNCTION gst_pad_connect_return_get_type ##### -->
-<para>
-
-</para>
-
-@Returns:
-
<!-- ##### FUNCTION gst_pad_direction_get_type ##### -->
<para>
@format:
@Returns:
+<!-- ##### FUNCTION gst_pad_link_return_get_type ##### -->
+<para>
+
+</para>
+
+@Returns:
+
<!-- ##### FUNCTION gst_pad_negotiate_proxy ##### -->
<para>
@parent:
@Returns:
-<!-- ##### FUNCTION gst_pad_try_connect ##### -->
+<!-- ##### FUNCTION gst_pad_try_link ##### -->
<para>
</para>
</para>
-@connection:
+@link:
<!-- ##### FUNCTION gst_real_pad_get_type ##### -->
<para>
@parent:
@Returns:
-<!-- ##### FUNCTION gst_schedule_pad_connect ##### -->
+<!-- ##### FUNCTION gst_schedule_pad_link ##### -->
<para>
</para>
@srcpad:
@sinkpad:
-<!-- ##### FUNCTION gst_schedule_pad_disconnect ##### -->
+<!-- ##### FUNCTION gst_schedule_pad_select ##### -->
<para>
</para>
@sched:
-@srcpad:
-@sinkpad:
+@padlist:
+@Returns:
-<!-- ##### FUNCTION gst_schedule_pad_select ##### -->
+<!-- ##### FUNCTION gst_schedule_pad_unlink ##### -->
<para>
</para>
@sched:
-@padlist:
-@Returns:
+@srcpad:
+@sinkpad:
<!-- ##### FUNCTION gst_schedule_remove_element ##### -->
<para>
@location:
@Returns:
+<!-- ##### TYPEDEF link_t ##### -->
+<para>
+
+</para>
+
+
<!-- ##### FUNCTION plugin_initialize ##### -->
<para>
@sched:
@element:
+@Returns:
<!-- ##### FUNCTION gst_scheduler_interrupt ##### -->
@element:
-<!-- ##### FUNCTION gst_scheduler_pad_connect ##### -->
+<!-- ##### FUNCTION gst_scheduler_pad_link ##### -->
<para>
</para>
@sinkpad:
-<!-- ##### FUNCTION gst_scheduler_pad_disconnect ##### -->
+<!-- ##### FUNCTION gst_scheduler_pad_unlink ##### -->
<para>
</para>
gst_bin_add (GST_BIN (my_thread), GST_ELEMENT (funky_src));
gst_bin_add (GST_BIN (my_thread), GST_ELEMENT (cool_effect));
- /* connect the elements here... */
+ /* link the elements here... */
...
/* start playing */
<title>Constraints placed on the pipeline by the GstThread</title>
<para>
Within the pipeline, everything is the same as in any other bin. The
- difference lies at the thread boundary, at the connection between the
+ difference lies at the thread boundary, at the link between the
thread and the outside world (containing bin). Since GStreamer is
fundamentally buffer-oriented rather than byte-oriented, the natural
solution to this problem is an element that can "buffer" the buffers
/* add objects to the thread */
gst_bin_add_many (GST_BIN (thread), filesrc, decoder, audiosink, NULL);
- /* connect them in the logical order */
+ /* link them in the logical order */
gst_element_link_many (filesrc, decoder, audiosink, NULL);
/* start playing */
</para>
</sect3>
<sect3>
- <title>Connections</title>
+ <title>Links</title>
<screen>
... !sink ...
</screen>
<para>
An exclamation point, optionally having a qualified pad name (an the name of the pad,
- optionally preceded by the name of the element) on both sides, will connect two pads. If
+ optionally preceded by the name of the element) on both sides, will link two pads. If
the source pad is not specified, a source pad from the immediately preceding element
will be automatically chosen. If the sink pad is not specified, a sink pad from the next
element to be constructed will be chosen. An attempt will be made to find compatible
construct complex pipelines based on source and destination capabilities.
This feature is very useful if you want to convert type X to type Y but
don't care about the plugins needed to accomplish this task. The
- autoplugger will consult the plugin repository, select and connect the
+ autoplugger will consult the plugin repository, select and link the
elements needed for the conversion.
</para>
<para>
</para>
<para>
If the autoplugger supports the RENDERER API, use the
- gst_autoplug_to_renderers() function to create a bin that connects
+ gst_autoplug_to_renderers() function to create a bin that links
the source caps to the specified render elements. You can then add
the bin to a pipeline and run it.
sink,
NULL);
- /* add the element to a bin and connect the sink pad */
+ /* add the element to a bin and link the sink pad */
...
</programlisting>
</para>
<para>
If the autoplugger supports the CAPS API, use the gst_autoplug_to_caps()
- function to connect the source caps to the destination caps. The created
+ function to link the source caps to the destination caps. The created
bin will have source and sink pads compatible with the provided caps.
<programlisting>
),
NULL);
- /* add the element to a bin and connect the src/sink pads */
+ /* add the element to a bin and link the src/sink pads */
...
</programlisting>
</para>
<orderedlist>
<listitem>
<para>
- Add the autoplugcache element to a bin and connect the sink pad
+ Add the autoplugcache element to a bin and link the sink pad
to the source pad of an element with unknown caps.
</para>
</listitem>
<listitem>
<para>
- Connect the source pad of the autoplugcache to the sink pad of
+ Link the source pad of the autoplugcache to the sink pad of
the typefind element.
</para>
</listitem>
<listitem>
<para>
In the cache_empty signal callback function, remove the autoplugcache and
- reconnect the pads.
+ relink the pads.
</para>
</listitem>
</orderedlist>
<para>
Elements, from the perspective of GStreamer, are viewed as "black boxes"
with a number of different aspects. One of these aspects is the presence
- of "pads", or connection points. This terminology arises from soldering;
+ of "pads", or link points. This terminology arises from soldering;
pads are where wires can be attached.
</para>
splitter (demultiplexer). This element will parse the input data and
extract the audio and video data. Most of these filters dynamically
send out a signal when a new pad is created so that the application
- programmer can connect an arbitrary element to the newly created pad.
+ programmer can link an arbitrary element to the newly created pad.
</para>
</sect2>
<para>
Elements, from the perspective of GStreamer, are viewed as "black boxes"
with a number of different aspects. One of these aspects is the presence
- of "pads", or connection points. This terminology arises from soldering;
+ of "pads", or link points. This terminology arises from soldering;
pads are where wires can be attached.
</para>
splitter (demultiplexer). This element will parse the input data and
extract the audio and video data. Most of these filters dynamically
send out a signal when a new pad is created so that the application
- programmer can connect an arbitrary element to the newly created pad.
+ programmer can link an arbitrary element to the newly created pad.
</para>
</sect2>
</listitem>
<listitem>
<para>
- Extremely light-weight connections between plugins. Data can travel
+ Extremely light-weight links between plugins. Data can travel
the pipeline with minimal overhead. Data passing between plugins only involves
a pointer dereference in a typical pipeline.
</para>
<!ENTITY INIT SYSTEM "init.xml">
<!ENTITY ELEMENTS SYSTEM "elements.xml">
<!ENTITY PADS SYSTEM "pads.xml">
-<!ENTITY CONNECTIONS SYSTEM "connections.xml">
+<!ENTITY LINKS SYSTEM "links.xml">
<!ENTITY BINS SYSTEM "bins.xml">
<!ENTITY BUFFERS SYSTEM "buffers.xml">
<!ENTITY STATES SYSTEM "states.xml">
&PADS;
- &CONNECTIONS;
+ &LINKS;
&BINS;
<para>
The framework is based on plugins that will provide the various codec
- and other functionality. The plugins can be connected and arranged in
+ and other functionality. The plugins can be linked and arranged in
a pipeline. This pipeline defines the flow of the data. Pipelines can
also be edited with a GUI editor and saved as XML so that pipeline
libraries can be made with a minimum of effort.
<para>
The framework is based on plugins that will provide the various codec
- and other functionality. The plugins can be connected and arranged in
+ and other functionality. The plugins can be linked and arranged in
a pipeline. This pipeline defines the flow of the data. Pipelines can
also be edited with a GUI editor and saved as XML so that pipeline
libraries can be made with a minimum of effort.
--- /dev/null
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+2 2 0 1 0 6 50 0 20 0.000 0 0 -1 0 0 5
+ 3975 3600 4725 3600 4725 4125 3975 4125 3975 3600
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 2775 2775 4725 2775 4725 4425 2775 4425 2775 2775
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 5400 2775 7350 2775 7350 4425 5400 4425 5400 2775
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+ 8025 2775 9975 2775 9975 4425 8025 4425 8025 2775
+2 2 0 1 0 6 50 0 20 0.000 0 0 -1 0 0 5
+ 5400 3600 6150 3600 6150 4125 5400 4125 5400 3600
+2 2 0 1 0 6 50 0 20 0.000 0 0 -1 0 0 5
+ 8025 3600 8775 3600 8775 4125 8025 4125 8025 3600
+2 2 0 1 0 6 50 0 20 0.000 0 0 -1 0 0 5
+ 6600 3600 7350 3600 7350 4125 6600 4125 6600 3600
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 90.00 120.00
+ 4575 3750 5400 3750
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 90.00 120.00
+ 7200 3750 8025 3750
+4 0 0 50 0 16 12 0.0000 4 105 255 4200 3975 src\001
+4 0 0 50 0 16 12 0.0000 4 135 330 5550 3975 sink\001
+4 0 0 50 0 16 12 0.0000 4 135 330 8175 3975 sink\001
+4 0 0 50 0 16 12 0.0000 4 105 255 6825 3975 src\001
+4 0 0 50 0 16 12 0.0000 4 135 750 5625 3075 element2\001
+4 0 0 50 0 16 12 0.0000 4 135 750 8250 3075 element3\001
+4 0 0 50 0 16 12 0.0000 4 135 750 3000 3075 element1\001
--- /dev/null
+<chapter id="cha-links">
+ <title>Linking elements</title>
+ <para>
+ You can link the different pads of elements together so that the elements
+ form a chain.
+ </para>
+
+ <figure float="1" id="sec-link">
+ <title>Visualisation of three linked elements</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/linked-elements.&magic;" format="&MAGIC;" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ By linking these three elements, we have created a very simple
+ chain. The effect of this will be that the output of the source element
+ (element1) will be used as input for the filter element (element2). The
+ filter element will do something with the data and send the result to
+ the final sink element (element3).
+ </para>
+ <para>
+ Imagine the above graph as a simple MPEG audio decoder. The source
+ element is a disk source, the filter element is the MPEG decoder and
+ the sink element is your audiocard. We will use this simple graph to
+ construct an MPEG player later in this manual.
+ </para>
+
+ <sect1 id="sec-link-basic">
+ <title>Making simple links</title>
+ <para>
+ You can link two pads with:
+ </para>
+ <programlisting>
+ GstPad *srcpad, *sinkpad;
+
+ srcpad = gst_element_get_pad (element1, "src");
+ sinpad = gst_element_get_pad (element2, "sink");
+
+ // link them
+ gst_pad_link (srcpad, sinkpad);
+ ....
+ // and unlink them
+ gst_pad_unlink (srcpad, sinkpad);
+
+ </programlisting>
+ <para>
+ A convenient shortcut for the above code is done with the gst_element_link_pads ()
+ function:
+ </para>
+ <programlisting>
+
+ // link them
+ gst_element_link_pads (element1, "src", element2, "sink");
+ ....
+ // and unlink them
+ gst_element_unlink_pads (element1, "src", element2, "sink");
+
+ </programlisting>
+ <para>
+ An even more convenient shortcut for single-source, single-sink elements is the
+ gst_element_link () function:
+ </para>
+ <programlisting>
+
+ // link them
+ gst_element_link (element1, element2);
+ ....
+ // and unlink them
+ gst_element_unlink (element1, element2);
+
+ </programlisting>
+ <para>
+ If you have more than one element to link, the gst_element_link_many () function takes
+ a NULL-terminated list of elements:
+ </para>
+ <programlisting>
+
+ // link them
+ gst_element_link_many (element1, element2, element3, element4, NULL);
+ ....
+ // and unlink them
+ gst_element_unlink_many (element1, element2, element3, element4, NULL);
+
+ </programlisting>
+ <para>
+ You can query if a pad is linked with GST_PAD_IS_LINKED (pad).
+ </para>
+ <para>
+ To query for the <classname>GstPad</classname> a pad is linked to, use
+ gst_pad_get_peer (pad).
+ </para>
+ </sect1>
+
+ <sect1 id="sec-link-filtered">
+ <title>Making filtered links</title>
+ <para>
+ You can also force a specific media type on the link by using gst_pad_link_filtered ()
+ and gst_element_link_filtered (). FIXME link to caps documentation.
+ </para>
+ </sect1>
+
+</chapter>
(what is it)
(types) sink, src, filter
(have pads)
- connecting elements
+ linking elements
bin
(can contain elements)
pipeline (a complete graph)
</para>
</sect3>
<sect3>
- <title>Connections</title>
+ <title>Links</title>
<screen>
... !sink ...
</screen>
<para>
An exclamation point, optionally having a qualified pad name (an the name of the pad,
- optionally preceded by the name of the element) on both sides, will connect two pads. If
+ optionally preceded by the name of the element) on both sides, will link two pads. If
the source pad is not specified, a source pad from the immediately preceding element
will be automatically chosen. If the sink pad is not specified, a sink pad from the next
element to be constructed will be chosen. An attempt will be made to find compatible
<programlisting>
GstElement *bin;
- // create a bin, put elements in it and connect them
+ // create a bin, put elements in it and link them
...
gst_element_set_state (bin, GST_STATE_PLAYING);
...
gst_bin_add (GST_BIN (my_thread), GST_ELEMENT (funky_src));
gst_bin_add (GST_BIN (my_thread), GST_ELEMENT (cool_effect));
- /* connect the elements here... */
+ /* link the elements here... */
...
/* start playing */
<title>Constraints placed on the pipeline by the GstThread</title>
<para>
Within the pipeline, everything is the same as in any other bin. The
- difference lies at the thread boundary, at the connection between the
+ difference lies at the thread boundary, at the link between the
thread and the outside world (containing bin). Since GStreamer is
fundamentally buffer-oriented rather than byte-oriented, the natural
solution to this problem is an element that can "buffer" the buffers
/* add objects to the thread */
gst_bin_add_many (GST_BIN (thread), filesrc, decoder, audiosink, NULL);
- /* connect them in the logical order */
+ /* link them in the logical order */
gst_element_link_many (filesrc, decoder, audiosink, NULL);
/* start playing */
</programlisting>
<para>
We create a very simple pipeline with only a filesrc and the typefind
- element in it. The sinkpad of the typefind element has been connected
+ element in it. The sinkpad of the typefind element has been linked
to the source pad of the filesrc.
</para>
<para>
<para>
A more useful option would be to use the registry to look up an element
that can handle this particular caps structure, or we can also use the
- autoplugger to connect this caps structure to, for example, a videosink.
+ autoplugger to link this caps structure to, for example, a videosink.
</para>
</chapter>
</para>
<para>
Elements are at the core of &GStreamer;. Without elements, &GStreamer; is
- just a bunch of pipe fittings with nothing to connect. A large number of
+ just a bunch of pipe fittings with nothing to link. A large number of
elements (filters, sources, and sinks) ship with &GStreamer;, but extra
elements can also be written. The purpose of this guide is to help you
learn to create new elements.
<para>
A type system is used to ensure that the data passed between elements is in
a recognised format, and that the various parameters required to fully
- specify that format match up correctly. Each connection that is made between
+ specify that format match up correctly. Each link that is made between
elements has a specified type. This is related, but different, to the
metadata in buffers which describes the type of data in that particular
buffer. See the next chapter of this document for details of the available
</para>
</chapter>
-<chapter id="cha-testapp-connect">
- <title>Connecting the plugins</title>
+<chapter id="cha-testapp-link">
+ <title>Linking the plugins</title>
<para>
</para>
</chapter>
Elements are at the core of &GStreamer;. In the context of plugin
development, an <emphasis>element</emphasis> is an object derived from the
<classname>GstElement</classname> class. Elements provide some sort of
- functionality when connected with other elements: For example, a source
+ functionality when linked with other elements: For example, a source
element provides data to a stream, and a filter element acts on the data
in a stream. Without elements, &GStreamer; is just a bunch of conceptual
- pipe fittings with nothing to connect. A large number of elements ship
+ pipe fittings with nothing to link. A large number of elements ship
with &GStreamer;, but extra elements can also be written.
</para>
<para>
A <emphasis>filter</emphasis> is an important type of element that
processes a stream of data. Producers and consumers of data are called
<emphasis>source</emphasis> and <emphasis>sink</emphasis> elements,
- respectively. Elements that connect other elements together are called
+ respectively. Elements that link other elements together are called
<emphasis>autoplugger</emphasis> elements, and a <emphasis>bin</emphasis>
element contains other elements. Bins are often responsible for scheduling
the elements that they contain so that data flows smoothly.
<sect1 id="sect1-basics-pads" xreflabel="Pads">
<title>Pads</title>
<para>
- <emphasis>Pads</emphasis> are used to negotiate connections and data flow
+ <emphasis>Pads</emphasis> are used to negotiate links and data flow
between elements in &GStreamer;. A pad can be viewed as a
<quote>place</quote> or <quote>port</quote> on an element where
- connections may be made with other elements. Pads have specific data
+ links may be made with other elements. Pads have specific data
handling capabilities: A pad only knows how to give or receive certain
- types of data. Connections are only allowed when the capabilities of two
+ types of data. Links are only allowed when the capabilities of two
pads are compatible.
</para>
<para>
An analogy may be helpful here. A pad is similar to a plug or jack on a
physical device. Consider, for example, a home theater system consisting
- of an amplifier, a DVD player, and a (silent) video projector. Connecting
+ of an amplifier, a DVD player, and a (silent) video projector. Linking
the DVD player to the amplifier is allowed because both devices have audio
- jacks, and connecting the projector to the DVD player is allowed because
- both devices have compatible video jacks. Connections between the
+ jacks, and linking the projector to the DVD player is allowed because
+ both devices have compatible video jacks. Links between the
projector and the amplifier may not be made because the projector and
amplifier have different types of jacks. Pads in &GStreamer; serve the
same purpose as the jacks in the home theater system.
</para>
<para>
- For the moment, all data in &GStreamer; flows one way through a connection
+ For the moment, all data in &GStreamer; flows one way through a link
between elements. Data flows out of one element through one or more
<emphasis>source pads</emphasis>, and elements accept incoming data through
one or more <emphasis>sink pads</emphasis>. Source and sink elements have
passed from a source pad on one element to a sink pad on another element.
<emphasis>Buffers</emphasis> are structures used to hold these chunks of
data. Buffers can be of any size, theoretically, and they may contain any
- sort of data that the two connected pads know how to handle. Normally, a
+ sort of data that the two linked pads know how to handle. Normally, a
buffer contains a chunk of some sort of audio or video data that flows
from one element to another.
</para>
&GStreamer; uses a type system to ensure that the data passed between
elements is in a recognized format. The type system is also important for
ensuring that the parameters required to fully specify a format match up
- correctly when connecting pads between elements. Each connection that is
+ correctly when linking pads between elements. Each link that is
made between elements has a specified type.
</para>