2000-08-16 21:38:57 +00:00
|
|
|
<chapter id="cha-connections">
|
|
|
|
<title>Connecting elements</title>
|
|
|
|
<para>
|
|
|
|
You can connect the different pads of elements together so that the elements
|
|
|
|
form a chain.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<figure float="1" id="sec-connection">
|
|
|
|
<title>Visualisation of three connected elements</title>
|
2001-12-13 15:24:00 +00:00
|
|
|
<mediaobject>
|
|
|
|
<imageobject>
|
2002-12-18 14:44:26 +00:00
|
|
|
<imagedata fileref="images/connected-elements.&magic;" format="&MAGIC;" />
|
2001-12-13 15:24:00 +00:00
|
|
|
</imageobject>
|
|
|
|
</mediaobject>
|
2000-08-16 21:38:57 +00:00
|
|
|
</figure>
|
|
|
|
<para>
|
2002-09-08 21:17:16 +00:00
|
|
|
By connecting these three elements, we have created a very simple
|
2002-09-14 14:13:34 +00:00
|
|
|
chain. The effect of this will be that the output of the source element
|
2002-09-08 21:17:16 +00:00
|
|
|
(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).
|
2000-08-16 21:38:57 +00:00
|
|
|
</para>
|
|
|
|
<para>
|
2002-09-14 14:13:34 +00:00
|
|
|
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
|
2002-09-08 21:17:16 +00:00
|
|
|
the sink element is your audiocard. We will use this simple graph to
|
2002-09-14 14:13:34 +00:00
|
|
|
construct an MPEG player later in this manual.
|
2000-08-16 21:38:57 +00:00
|
|
|
</para>
|
2002-03-31 15:28:51 +00:00
|
|
|
|
|
|
|
<sect1 id="sec-conn-basic">
|
|
|
|
<title>Making simple connections</title>
|
|
|
|
<para>
|
|
|
|
You can connect two pads with:
|
|
|
|
</para>
|
|
|
|
<programlisting>
|
2001-01-06 02:35:17 +00:00
|
|
|
GstPad *srcpad, *sinkpad;
|
|
|
|
|
|
|
|
srcpad = gst_element_get_pad (element1, "src");
|
|
|
|
sinpad = gst_element_get_pad (element2, "sink");
|
|
|
|
|
|
|
|
// connect them
|
|
|
|
gst_pad_connect (srcpad, sinkpad);
|
|
|
|
....
|
|
|
|
// and disconnect them
|
|
|
|
gst_pad_disconnect (srcpad, sinkpad);
|
|
|
|
|
2002-03-31 15:28:51 +00:00
|
|
|
</programlisting>
|
|
|
|
<para>
|
2002-04-07 23:32:16 +00:00
|
|
|
A convenient shortcut for the above code is done with the gst_element_connect_pads ()
|
2002-03-31 15:28:51 +00:00
|
|
|
function:
|
|
|
|
</para>
|
2001-01-06 02:35:17 +00:00
|
|
|
<programlisting>
|
|
|
|
|
|
|
|
// connect them
|
2002-04-07 23:32:16 +00:00
|
|
|
gst_element_connect_pads (element1, "src", element2, "sink");
|
2001-01-06 02:35:17 +00:00
|
|
|
....
|
|
|
|
// and disconnect them
|
2002-04-07 23:32:16 +00:00
|
|
|
gst_element_disconnect_pads (element1, "src", element2, "sink");
|
|
|
|
|
|
|
|
</programlisting>
|
|
|
|
<para>
|
|
|
|
An even more convenient shortcut for single-source, single-sink elements is the
|
|
|
|
gst_element_connect () function:
|
|
|
|
</para>
|
|
|
|
<programlisting>
|
|
|
|
|
|
|
|
// connect them
|
|
|
|
gst_element_connect (element1, element2);
|
|
|
|
....
|
|
|
|
// and disconnect them
|
|
|
|
gst_element_disconnect (element1, element2);
|
|
|
|
|
|
|
|
</programlisting>
|
|
|
|
<para>
|
|
|
|
If you have more than one element to connection, the gst_element_connect_many () function takes
|
|
|
|
a NULL-terminated list of elements:
|
|
|
|
</para>
|
|
|
|
<programlisting>
|
|
|
|
|
|
|
|
// connect them
|
|
|
|
gst_element_connect_many (element1, element2, element3, element4, NULL);
|
|
|
|
....
|
|
|
|
// and disconnect them
|
|
|
|
gst_element_disconnect_many (element1, element2, element3, element4, NULL);
|
2001-01-06 02:35:17 +00:00
|
|
|
|
2002-03-31 15:28:51 +00:00
|
|
|
</programlisting>
|
|
|
|
<para>
|
|
|
|
You can query if a pad is connected with GST_PAD_IS_CONNECTED (pad).
|
|
|
|
</para>
|
|
|
|
<para>
|
2002-09-14 14:13:34 +00:00
|
|
|
To query for the <classname>GstPad</classname> a pad is connected to, use
|
|
|
|
gst_pad_get_peer (pad).
|
2002-03-31 15:28:51 +00:00
|
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="sec-conn-filtered">
|
|
|
|
<title>Making filtered connections</title>
|
|
|
|
<para>
|
|
|
|
You can also force a specific media type on the connection by using gst_pad_connect_filtered ()
|
2002-04-07 23:32:16 +00:00
|
|
|
and gst_element_connect_filtered (). FIXME link to caps documentation.
|
2002-03-31 15:28:51 +00:00
|
|
|
</para>
|
|
|
|
</sect1>
|
2001-01-06 02:35:17 +00:00
|
|
|
|
2000-08-16 21:38:57 +00:00
|
|
|
</chapter>
|