-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
- <!ENTITY % version-entities SYSTEM "version.entities">
- %version-entities;
- <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
- ]>
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
<refentry id="ges-architecture" revision="25 mar 2009">
<refmeta>
<refentrytitle>Overview and architecture</refentrytitle>
+
<manvolnum>1</manvolnum>
+
<refmiscinfo>GStreamer Editing Services</refmiscinfo>
</refmeta>
<!-- <refnamediv> -->
+
<!-- <refname>Overview</refname> -->
+
<!-- <refpurpose> -->
+
<!-- Goals of the GStreamer Editing Services. -->
+
<!-- </refpurpose> -->
+
<!-- </refnamediv> -->
<refsect1>
<title>Goals of GStreamer Editing Services</title>
-
- <para>
- The GStreamer multimedia framework and the accompanying GNonLin set
- of plugins for non-linear editing offer all the building blocks for:
- <itemizedlist>
- <listitem>
- Decoding and encoding to a wide variety of formats, through
- all the available GStreamer plugins.
- </listitem>
- <listitem>
- Easily choosing segments of streams and arranging them through
- time through the GNonLin set of plugins.
- </listitem>
- </itemizedlist>
- </para>
-
- <para>
- But all those building blocks only offer stream-level access,
- which results in developers who want to write non-linear editors
- to write a consequent amount of code to get to the level of
- <emphasis>non-linear editing</emphasis> notions which are closer
- and more meaningful for the end-user (and therefore the
- application).
- </para>
-
- <para>
- The GStreamer Editing Services <remark>(hereafter GES)</remark>
- aims to fill the gap between GStreamer/GNonLin and the
- application developer by offering a series of classes to
- simplify the creation of many kind of editing-related
- applications.
- </para>
+ <para>The GStreamer multimedia framework and the accompanying GNonLin set
+ of plugins for non-linear editing offer all the building blocks for:
+ <itemizedlist>
+ <listitem>
+ <para>Decoding and encoding to a wide variety of formats, through
+ all the available GStreamer plugins.</para>
+ </listitem>
+
+ <listitem>
+ <para>Easily choosing segments of streams and arranging them through
+ time through the GNonLin set of plugins.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>But all those building blocks only offer stream-level access, which
+ results in developers who want to write non-linear editors to write a
+ consequent amount of code to get to the level of <emphasis>non-linear
+ editing</emphasis> notions which are closer and more meaningful for the
+ end-user (and therefore the application).</para>
+
+ <para>The GStreamer Editing Services <remark>(hereafter GES)</remark> aims
+ to fill the gap between GStreamer/GNonLin and the application developer by
+ offering a series of classes to simplify the creation of many kind of
+ editing-related applications.</para>
</refsect1>
<refsect1>
<refsect2>
<title>Timeline and TimelinePipeline</title>
- <para>
- The most top-level object encapsulating every other object is
- the <link linkend="GESTimeline">GESTimeline</link>. It is the
- central object for any editing project.
- </para>
-
- <para>
- The <classname>GESTimeline</classname> is
- a <classname>GstElement</classname>. It can therefore be used in
- any GStreamer pipeline like any other object.
- </para>
-
- <para>
- The GESTimeline can contain two types of objects:
- <itemizedlist>
- <listitem>
- <emphasis>Layers</emphasis> - Corresponds to the user-visible
- layout of non-overlapping objects. A minimalistic would
- only have one layer. A more complex editing application
- could use as many as needed.
- </listitem>
- <listitem>
- <emphasis>Tracks</emphasis> - Corresponds to the output
- stream formats. A typical GESTimeline would have a audio
- track and a video track. A audio editor would only require
- one single audio Track.
- </listitem>
- </itemizedlist>
- </para>
-
- <para>
- FIXME : INSERT DIAGRAM
- </para>
-
- <para>
- In order to reduce even more the amount of GStreamer
- interaction the application developer has to deal with , a
- convenience GstPipeline has been made available specifically
- for Timelines
- : <link linkend="GESTimelinePipeline">GESTimelinePipeline</link>.
- </para>
+ <para>The most top-level object encapsulating every other object is the
+ <link linkend="GESTimeline">GESTimeline</link>. It is the central object
+ for any editing project.</para>
+
+ <para>The <classname>GESTimeline</classname> is a
+ <classname>GstElement</classname>. It can therefore be used in any
+ GStreamer pipeline like any other object.</para>
</refsect2>
<refsect2>
- <title>Timeline layers</title>
-
- <para>
- The layers are the end-user visible part of GES.
- </para>
+ <title>Tracks and Layers</title>
+
+ <para>The GESTimeline can contain two types of objects (seen in <xref
+ linkend="layer_tracks_diagram" />): <itemizedlist>
+ <listitem>
+ <para>Layers - Corresponds to the user-visible arrangement of clips,
+ and what you primarily interact with as an application developer.
+ A minimalistic timeline would only have one layer,
+ but a more complex editing application could use as many as needed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Tracks - Corresponds to the output streams in GStreamer.
+ A typical GESTimeline, aimed at a video editing application, would
+ have an audio track and a video track.
+ A GESTimeline for an audio editing application would only require
+ an audio track. Multiple layers can be related to each track.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <figure float="0" id="layer_tracks_diagram">
+ <title>Layers and Tracks</title>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="layer_track_overview.png" scale="75" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>In order to reduce even more the amount of GStreamer interaction
+ the application developer has to deal with, a convenience GstPipeline
+ has been made available specifically for Timelines : <link
+ linkend="GESPipeline">GESPipeline</link>.</para>
</refsect2>
- <refsect2>
- <title>Timeline Tracks</title>
-
- <para>
- The tracks are the GStreamer-level components of a
- Timeline. They are a 1-to-1 relationship to the output
- streams.
- </para>
- </refsect2>
</refsect1>
-
</refentry>