2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
3 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
4 <!ENTITY % version-entities SYSTEM "version.entities">
6 <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
8 <refentry id="ges-architecture" revision="25 mar 2009">
10 <refentrytitle>Overview and architecture</refentrytitle>
11 <manvolnum>1</manvolnum>
12 <refmiscinfo>GStreamer Editing Services</refmiscinfo>
16 <!-- <refname>Overview</refname> -->
18 <!-- Goals of the GStreamer Editing Services. -->
19 <!-- </refpurpose> -->
20 <!-- </refnamediv> -->
23 <title>Goals of GStreamer Editing Services</title>
26 The GStreamer multimedia framework and the accompanying GNonLin set
27 of plugins for non-linear editing offer all the building blocks for:
30 Decoding and encoding to a wide variety of formats, through
31 all the available GStreamer plugins.
34 Easily choosing segments of streams and arranging them through
35 time through the GNonLin set of plugins.
41 But all those building blocks only offer stream-level access,
42 which results in developers who want to write non-linear editors
43 to write a consequent amount of code to get to the level of
44 <emphasis>non-linear editing</emphasis> notions which are closer
45 and more meaningful for the end-user (and therefore the
50 The GStreamer Editing Services <remark>(hereafter GES)</remark>
51 aims to fill the gap between GStreamer/GNonLin and the
52 application developer by offering a series of classes to
53 simplify the creation of many kind of editing-related
60 <title>Architecture</title>
63 <title>Timeline and TimelinePipeline</title>
66 The most top-level object encapsulating every other object is
67 the <link linkend="GESTimeline">GESTimeline</link>. It is the
68 central object for any editing project.
72 The <classname>GESTimeline</classname> is
73 a <classname>GstElement</classname>. It can therefore be used in
74 any GStreamer pipeline like any other object.
78 The GESTimeline can contain two types of objects:
81 <emphasis>Layers</emphasis> - Corresponds to the user-visible
82 layout of non-overlapping objects. A minimalistic would
83 only have one layer. A more complex editing application
84 could use as many as needed.
87 <emphasis>Tracks</emphasis> - Corresponds to the output
88 stream formats. A typical GESTimeline would have a audio
89 track and a video track. A audio editor would only require
90 one single audio Track.
96 FIXME : INSERT DIAGRAM
100 In order to reduce even more the amount of GStreamer
101 interaction the application developer has to deal with , a
102 convenience GstPipeline has been made available specifically
104 : <link linkend="GESTimelinePipeline">GESTimelinePipeline</link>.
110 <title>Timeline layers</title>
113 The layers are the end-user visible part of GES.
118 <title>Timeline Tracks</title>
121 The tracks are the GStreamer-level components of a
122 Timeline. They are a 1-to-1 relationship to the output