<?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_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_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_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_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>
