<chapter id="chapter-motivation">
  <title>Design principles</title>

<!--
  <para> 
    Linux has historically lagged behind other operating systems in the
    multimedia arena. Microsoft's <trademark>Windows</trademark> and
    Apple's <trademark>MacOS</trademark> both have strong support for
    multimedia devices, multimedia content creation, playback, and
    realtime processing. Linux, on the other hand, has a poorly integrated
    collection of multimedia utilities and applications available, which
    can hardly compete with the professional level of software available
    for MS Windows and MacOS.
  </para>
  <para> 
    GStreamer was designed to provide a solution to the current Linux media
    problems.
  </para>

  <sect1 id="section-motivation-problems">
    <title>Current problems</title>
    <para> 
      We describe the typical problems in today's media handling on Linux.
    </para>
    <sect2 id="section-motivation-duplicate">
      <title>Multitude of duplicate code</title>
      <para> 
        The Linux user who wishes to hear a sound file must hunt through
        their collection of sound file players in order to play the tens
        of sound file formats in wide use today. Most of these players
        basically reimplement the same code over and over again.
      </para>
      <para>
        The Linux developer who wishes to embed a video clip in their
        application must use crude hacks to run an external video player.
        There is no library available that a developer can use to create
        a custom media player.
      </para>
    </sect2>

    <sect2 id="section-motivation-goal">
      <title>'One goal' media players/libraries</title>
      <para>
        Your typical MPEG player was designed to play MPEG video and audio.
        Most of these players have implemented a complete infrastructure
        focused on achieving their only goal: playback. No provisions were
        made to add filters or special effects to the video or audio data.
      </para> 
      <para>
        If you want to convert an MPEG-2 video stream into an AVI file,
        your best option would be to take all of the MPEG-2 decoding
        algorithms out of the player and duplicate them into your own
        AVI encoder. These algorithms cannot easily be shared across
        applications.
      </para> 
      <para>
        Attempts have been made to create libraries for handling various
        media types. Because they focus on a very specific media type
        (avifile, libmpeg2, ...), significant work is needed to integrate
        them due to a lack of a common API. &GStreamer; allows you to
        wrap these libraries with a common API, which significantly
        simplifies integration and reuse.
      </para> 
    </sect2>
  
    <sect2 id="section-motivation-plugin">
      <title>Non unified plugin mechanisms</title>
      <para> 
        Your typical media player might have a plugin for different media
        types. Two media players will typically implement their own plugin
        mechanism so that the codecs cannot be easily exchanged. The plugin
        system of the typical media player is also very tailored to the
        specific needs of the application.
      </para> 
      <para> 
        The lack of a unified plugin mechanism also seriously hinders the 
	creation of binary only codecs. No company is willing to port their
	code to all the different plugin mechanisms.
      </para> 
      <para> 
        While &GStreamer; also uses it own plugin system it offers a very rich
	framework for the plugin developer and ensures the plugin can be used
	in a wide range of applications, transparently interacting with other
	plugins. The framework that &GStreamer; provides for the plugins is
	flexible enough to host even the most demanding plugins.
      </para> 
    </sect2>

    <sect2 id="section-motivation-experience">
      <title>Poor user experience</title>
      <para>
        Because of the problems mentioned above, application authors have
        so far often been urged to spend a considerable amount of time in
        writing their own backends, plugin mechanisms and so on. The result
        has often been, unfortunately, that both the backend as well as the
        user interface were only half-finished. Demotivated, the application
        authors would start rewriting the whole thing and complete the circle.
        This leads to a <emphasis>poor end user experience</emphasis>.
      </para>
    </sect2>

    <sect2 id="section-motivation-network">
      <title>Provision for network transparency</title>
      <para> 
        No infrastructure is present to allow network transparent media
        handling. A distributed MPEG encoder will typically duplicate the
        same encoder algorithms found in a non-distributed encoder.
      </para> 
      <para> 
        No provisions have been made for use by and use of technologies such 
	as the <ulink url="http://gnome.org/" type="http">GNOME</ulink>
	desktop platform. Because the wheel is re-invented all the time,
	it's hard to properly integrate multimedia into the bigger whole of
	user's environment.
      </para> 
      <para> 
        The &GStreamer; core does not use network transparent technologies
        at the lowest level as it only adds overhead for the local case. 
	That said, it shouldn't be hard to create a wrapper around the
	core components. There are tcp plugins now that implement a
        &GStreamer; Data Protocol that allows pipelines to be split over
        TCP. These are located in the gst-plugins module directory gst/tcp.
      </para> 
    </sect2>

    <sect2 id="section-motivation-catchup">
      <title>Catch up with the <trademark>Windows</trademark> world</title>
      <para> 
        We need solid media handling if we want to see Linux succeed on
	the desktop.
      </para> 
      <para> 
        We must clear the road for commercially backed codecs and multimedia 
	applications so that Linux can become an option for doing multimedia.
      </para> 
    </sect2>
  </sect1>

  <sect1 id="section-goals-design">
    <title>The design goals</title>
    <para> 
      We describe what we try to achieve with &GStreamer;.
    </para>
-->

    <section id="section-goals-clean">
      <title>Clean and powerful</title>
      <para>
        &GStreamer; provides a clean interface to:
      </para>
      <itemizedlist>
        <listitem>
	  <para>
	    The application programmer who wants to build a media pipeline. 
	    The programmer can use an extensive set of powerful tools to create
	    media pipelines without writing a single line of code. Performing 
	    complex media manipulations becomes very easy.
	  </para>
        </listitem>
        <listitem>
	  <para>
	    The plugin programmer. Plugin programmers are provided a clean and
	    simple API to create self-contained plugins. An extensive debugging
	    and tracing mechanism has been integrated. GStreamer also comes with
	    an extensive set of real-life plugins that serve as examples too.
	  </para>
        </listitem>
      </itemizedlist>

    </section>
    <section id="section-goals-object">
      <title>Object oriented</title>
      <para>
        &GStreamer; adheres to GObject, the GLib 2.0 object model. A programmer
        familiar with GLib 2.0 or GTK+ will be
        comfortable with &GStreamer;.
      </para>
      <para>
        &GStreamer; uses the mechanism of signals and object properties. 
      </para> 
      <para>
        All objects can be queried at runtime for their various properties and
	capabilities.
      </para> 
      <para>
        &GStreamer; intends to be similar in programming methodology to GTK+.
	This applies to the object model, ownership of objects, reference
        counting, etc.
      </para> 
    </section>
  
    <section id="section-goals-extensible">
      <title>Extensible</title>
      <para> 
	All &GStreamer; Objects can be extended using the GObject
        inheritance methods.
      </para> 
      <para> 
        All plugins are loaded dynamically and can be extended and upgraded
	independently.
      </para> 
    </section>

    <section id="section-goals-binary">
      <title>Allow binary-only plugins</title>
      <para>
        Plugins are shared libraries that are loaded at runtime. Since all
        the properties of the plugin can be set using the GObject properties,
        there is no need (and in fact no way) to have any header files
        installed for the plugins.
      </para>
      <para> 
        Special care has been taken to make plugins completely self-contained. 
        All relevant aspects of plugins can be queried at run-time.
      </para> 
    </section>

    <section id="section-goals-performance">
      <title>High performance</title>
      <para> 
        High performance is obtained by:
      </para> 
      <itemizedlist>
        <listitem>
	  <para>
	    using GLib's <classname>GSlice</classname> allocator
	  </para>
        </listitem>
        <listitem>
	  <para>
	    extremely light-weight links between plugins. Data can travel
	    the pipeline with minimal overhead. Data passing between
            plugins only involves a pointer dereference in a typical
            pipeline.
	  </para>
        </listitem>
        <listitem>
	  <para>
	    providing a mechanism to directly work on the target memory.
            A plugin can for example directly write to the X server's
            shared memory space. Buffers can also point to arbitrary
            memory, such as a sound card's internal hardware buffer.
	  </para>
        </listitem>
        <listitem>
	  <para>
	    refcounting and copy on write minimize usage of memcpy.
	    Sub-buffers efficiently split buffers into manageable pieces.
	  </para>
        </listitem>
        <listitem>
	  <para>
	    dedicated streaming threads, with scheduling handled by the kernel.
	  </para>
        </listitem>
        <listitem>
	  <para>
	    allowing hardware acceleration by using specialized plugins.
	  </para>
        </listitem>
        <listitem>
	  <para>
	    using a plugin registry with the specifications of the plugins so 
	    that the plugin loading can be delayed until the plugin is actually
	    used.
	  </para>
        </listitem>
      </itemizedlist>
    </section>

    <section id="section-goals-separation">
      <title>Clean core/plugins separation</title>
      <para>
        The core of &GStreamer; is essentially media-agnostic. It only knows
        about bytes and blocks, and only contains basic elements.
        The core of &GStreamer; is functional enough to even implement
        low-level system tools, like cp.
      </para>
      <para>
        All of the media handling functionality is provided by plugins
        external to the core. These tell the core how to handle specific
        types of media.
      </para>
    </section>

    <section id="section-goals-testbed">
      <title>Provide a framework for codec experimentation</title>
      <para>
	&GStreamer; also wants to be an easy framework where codec
	developers can experiment with different algorithms, speeding up the
	development of open and free multimedia codecs like those developed
	by the <ulink url="http://www.xiph.org" type="http">Xiph.Org
	Foundation</ulink> (such as Theora and	Vorbis).
      </para>
    </section>

<!--
  </sect1>
-->
</chapter>
