# Linking elements

## Making simple links

You can link two pads with:

     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);

A convenient shortcut for the above code is done with the gst_element_link_pads () function:

     // link them
     gst_element_link_pads (element1, "src", element2, "sink");
       ....
     // and unlink them
     gst_element_unlink_pads (element1, "src", element2, "sink");

An even more convenient shortcut for single-source, single-sink elements is the gst_element_link () function:

     // link them
     gst_element_link (element1, element2);
       ....
     // and unlink them
     gst_element_unlink (element1, element2);

If you have more than one element to link, the gst_element_link_many () function takes a NULL-terminated list of elements:

     // link them
     gst_element_link_many (element1, element2, element3, element4, NULL);
       ....
     // and unlink them
     gst_element_unlink_many (element1, element2, element3, element4, NULL);

You can query if a pad is linked with GST_PAD_IS_LINKED (pad).

To query for the `GstPad` a pad is linked to, use gst_pad_get_peer (pad).

## Making filtered links

You can also force a specific media type on the link by using gst_pad_link_filtered () and gst_element_link_filtered () with capabilities. See for an explanation of capabilities.