
<!-- ############ chapter ############# -->

<chapter id="cha-basics-elements">
  <title>Elements, Plugins, and Filters</title>
  <para>
    In the &GStreamer; framework, a <emphasis>plugin</emphasis> is a specific
    sort of code module that gets loaded when a program requests the
    functionality that the plugin provides. A plugin is essentially a shared
    code library.
<emphasis>Filters</emphasis> are an
    important subset of plugins that process data, as opposed to producing or
    consuming data. (Producers and consumers of data are called
    <emphasis>source</emphasis> and <emphasis>sink</emphasis> plugins,
    respectively.)
  </para>
  <para>
    Elements are at the core of &GStreamer;. Without elements, &GStreamer; is
    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>
  <para>
    An element may be constructed in several different ways, but all must
    conform to the same basic rules. This guide presents one basic way to build
    a filter elementA simple filter may be built with the
    FilterFactory, where the only code that need be written is the actual filter
    code. A more complex filter, or a source or sink, will need to be written
    out fully for complete access to the features and performance possible with
    &GStreamer;.
  </para>
  <para>
    The implementation of a new element will be contained in a plugin: a single
    plugin may contain the implementation of several elements, or just a single
    one.
  </para>
</chapter>

