<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
          "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
<!ENTITY % image-entities SYSTEM "image.entities">
%image-entities;
<!ENTITY % version-entities SYSTEM "version.entities">
%version-entities;

<!ENTITY TITLEPAGE            SYSTEM "titlepage.xml">

<!-- Part 1: Introduction -->
<!ENTITY INTRO_PREFACE        SYSTEM "intro-preface.xml">
<!ENTITY INTRO_BASICS         SYSTEM "intro-basics.xml">

<!-- Part 2: Building a Plugin -->
<!ENTITY BUILDING_BOILER      SYSTEM "building-boiler.xml">
<!ENTITY BUILDING_DEBUG       SYSTEM "building-debug.xml">
<!ENTITY BUILDING_PADS        SYSTEM "building-pads.xml">
<!ENTITY BUILDING_CHAINFN     SYSTEM "building-chainfn.xml">
<!ENTITY BUILDING_EVENTFN     SYSTEM "building-eventfn.xml">
<!ENTITY BUILDING_STATE       SYSTEM "building-state.xml">
<!ENTITY BUILDING_PROPS       SYSTEM "building-props.xml">
<!ENTITY BUILDING_SIGNALS     SYSTEM "building-signals.xml">
<!ENTITY BUILDING_TESTAPP     SYSTEM "building-testapp.xml">

<!-- Part 3: Advanced Filter Concepts -->
<!ENTITY ADVANCED_NEGOTIATION SYSTEM "advanced-negotiation.xml">
<!ENTITY ADVANCED_ALLOCATION  SYSTEM "advanced-allocation.xml">
<!ENTITY ADVANCED_SCHEDULING  SYSTEM "advanced-scheduling.xml">
<!ENTITY ADVANCED_TYPES       SYSTEM "advanced-types.xml">
<!ENTITY ADVANCED_REQUEST     SYSTEM "advanced-request.xml">
<!ENTITY ADVANCED_CLOCK       SYSTEM "advanced-clock.xml">
<!ENTITY ADVANCED_DPARAMS     SYSTEM "advanced-dparams.xml">
<!ENTITY ADVANCED_INTERFACES  SYSTEM "advanced-interfaces.xml">
<!ENTITY ADVANCED_TAGGING     SYSTEM "advanced-tagging.xml">
<!ENTITY ADVANCED_EVENTS      SYSTEM "advanced-events.xml">

<!-- Part 4: Creating special element types -->
<!ENTITY OTHER_BASE           SYSTEM "other-base.xml">
<!ENTITY OTHER_ONETON         SYSTEM "other-oneton.xml">
<!ENTITY OTHER_NTOONE         SYSTEM "other-ntoone.xml">
<!ENTITY OTHER_MANAGER        SYSTEM "other-manager.xml">

<!-- Appendices -->
<!ENTITY APPENDIX_CHECKLIST   SYSTEM "appendix-checklist.xml">
<!ENTITY APPENDIX_PORTING     SYSTEM "appendix-porting.xml">
<!ENTITY APPENDIX_LICENSING   SYSTEM "appendix-licensing.xml">
<!ENTITY APPENDIX_PYTHON      SYSTEM "appendix-python.xml">

<!ENTITY GStreamer    "<application>GStreamer</application>">
<!ENTITY GstAppDevMan "<emphasis>GStreamer Application Development Manual</emphasis>">
<!ENTITY GstLibRef    "<emphasis>GStreamer Library Reference</emphasis>">
]>

<book id="index">
  &TITLEPAGE;

  <!-- ############# Introduction - part ############### -->

  <part id="part-introduction" xreflabel="Introduction">
    <title>Introduction</title>
    <partintro>
      <para><!-- synchronize with AppDevMan -->
        &GStreamer; is an extremely powerful and versatile framework for creating
        streaming media applications. Many of the virtues of the &GStreamer;
        framework come from its modularity: &GStreamer; can seamlessly
        incorporate new plugin modules. But because modularity and power often
        come at a cost of greater complexity (consider, for example, <ulink
        type="http" url="http://www.omg.org/">CORBA</ulink>), writing new
        plugins is not always easy.
      </para>
      <para>
        This guide is intended to help you understand the &GStreamer; framework
        (version &GST_VERSION;) so you can develop new plugins to extend the
        existing functionality. The guide addresses most issues by following the
        development of an example plugin - an audio filter plugin -
        written in C. However, the later parts of the guide also present some
        issues involved in writing other types of plugins, and the end of the
        guide describes some of the Python bindings for &GStreamer;.
      </para>
    </partintro>

    &INTRO_PREFACE;
    &INTRO_BASICS;
  </part>

  <!-- ############ Building a Plugin - part ############# -->

  <part id="part-building" xreflabel="Building a Plugin">
    <title>Building a Plugin</title>
    <partintro>
      <para>
        You are now ready to learn how to build a plugin. In this part of the
        guide, you will learn how to apply basic &GStreamer;
        programming concepts to write a simple plugin. The previous parts of the
        guide have contained no explicit example code, perhaps making things a
        bit abstract and difficult to understand. In contrast, this section will
        present both applications and code by following the development of an
        example audio filter plugin called <quote>MyFilter</quote>.
      </para>
      <para>
        The example filter element will begin with a single input pad and a 
        single
        output pad. The filter will, at first, simply pass media and event data
        from its sink pad to its source pad without modification. But by the end
        of this part of the guide, you will learn to add some more interesting
        functionality, including properties and signal handlers. And after
        reading the next part of the guide, <xref linkend="part-advanced"/>, you
        will be able to add even more functionality to your plugins.
      </para>
      <para>
        The example code used in this part of the guide can be found in
        <filename class="directory">examples/pwg/examplefilter/</filename> in
        your &GStreamer; directory.
      </para>
    </partintro>

    &BUILDING_BOILER;
    &BUILDING_PADS;
    &BUILDING_CHAINFN;
    &BUILDING_EVENTFN;
    &BUILDING_STATE;
    &BUILDING_PROPS;
    &BUILDING_SIGNALS;
    &BUILDING_TESTAPP;
  </part>

  <!-- ############ Advanced Filter Concepts - part ############# -->

  <part id="part-advanced" xreflabel="Advanced Filter Concepts">
    <title>Advanced Filter Concepts</title>
    <partintro>
      <para>
        By now, you should be able to create basic filter elements that can
        receive and send data. This is the simple model that &GStreamer; stands
        for. But &GStreamer; can do much more than only this! In this chapter,
        various advanced topics will be discussed, such as scheduling, special
        pad types, clocking, events, interfaces, tagging and more. These topics
        are the sugar that makes &GStreamer; so easy to use for applications.
      </para>
    </partintro>

    &ADVANCED_NEGOTIATION;
    &ADVANCED_ALLOCATION;
    &ADVANCED_SCHEDULING;
    &ADVANCED_TYPES;
    &ADVANCED_REQUEST;
    &ADVANCED_CLOCK;
    &ADVANCED_DPARAMS;
    &ADVANCED_INTERFACES;
    &ADVANCED_TAGGING;
    &ADVANCED_EVENTS;

    <!-- FIXME: add querying, event handling and conversion -->

  </part>

  <!-- ############ Creating special element types - part ############# -->

  <part id="part-other" xreflabel="Creating special element types">
    <title>Creating special element types</title>
    <partintro>
      <para>
        By now, we have looked at pretty much any feature that can be embedded
        into a &GStreamer; element. Most of this has been fairly low-level and
        given deep insights in how &GStreamer; works internally. Fortunately,
        &GStreamer; contains some easier-to-use interfaces to create such
        elements. In order to do that, we will look closer at the element
        types for which &GStreamer; provides base classes (sources, sinks and
        transformation elements). We will also look closer at some types of
        elements that require no specific coding such as scheduling-interaction
        or data passing, but rather require specific pipeline control (e.g.
        N-to-1 elements and managers).
      </para>
    </partintro>

    &OTHER_BASE;
    &OTHER_ONETON;
    &OTHER_NTOONE;
    &OTHER_MANAGER;
  </part>

  <!-- ############ Appendices - part ############# -->

  <part id="part-appendix" xreflabel="Appendices">
    <title>Appendices</title>
    <partintro>
      <para>
        This chapter contains things that don't belong anywhere else.
      </para>
    </partintro>

      &APPENDIX_CHECKLIST;
      &APPENDIX_PORTING;
      &APPENDIX_LICENSING;
      &APPENDIX_PYTHON;
  </part>

</book>
