1 <?xml version="1.0" encoding="UTF-8"?>
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 % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
6 <refentry id="ges-architecture" revision="25 mar 2009">
8 <refentrytitle>Overview and architecture</refentrytitle>
10 <manvolnum>1</manvolnum>
12 <refmiscinfo>GStreamer Editing Services</refmiscinfo>
17 <!-- <refname>Overview</refname> -->
21 <!-- Goals of the GStreamer Editing Services. -->
23 <!-- </refpurpose> -->
25 <!-- </refnamediv> -->
28 <title>Goals of GStreamer Editing Services</title>
30 <para>The GStreamer multimedia framework and the accompanying GNonLin set
31 of plugins for non-linear editing offer all the building blocks for:
34 <para>Decoding and encoding to a wide variety of formats, through
35 all the available GStreamer plugins.</para>
39 <para>Easily choosing segments of streams and arranging them through
40 time through the GNonLin set of plugins.</para>
42 </itemizedlist></para>
44 <para>But all those building blocks only offer stream-level access, which
45 results in developers who want to write non-linear editors to write a
46 consequent amount of code to get to the level of <emphasis>non-linear
47 editing</emphasis> notions which are closer and more meaningful for the
48 end-user (and therefore the application).</para>
50 <para>The GStreamer Editing Services <remark>(hereafter GES)</remark> aims
51 to fill the gap between GStreamer/GNonLin and the application developer by
52 offering a series of classes to simplify the creation of many kind of
53 editing-related applications.</para>
57 <title>Architecture</title>
60 <title>Timeline and TimelinePipeline</title>
62 <para>The most top-level object encapsulating every other object is the
63 <link linkend="GESTimeline">GESTimeline</link>. It is the central object
64 for any editing project.</para>
66 <para>The <classname>GESTimeline</classname> is a
67 <classname>GstElement</classname>. It can therefore be used in any
68 GStreamer pipeline like any other object.</para>
73 <title>Tracks and Layers</title>
75 <para>The GESTimeline can contain two types of objects (seen in <xref
76 linkend="layer_tracks_diagram" />): <itemizedlist>
78 <para>Layers - Corresponds to the user-visible arrangement of clips,
79 and what you primarily interact with as an application developer.
80 A minimalistic timeline would only have one layer,
81 but a more complex editing application could use as many as needed.
86 <para>Tracks - Corresponds to the output streams in GStreamer.
87 A typical GESTimeline, aimed at a video editing application, would
88 have an audio track and a video track.
89 A GESTimeline for an audio editing application would only require
90 an audio track. Multiple layers can be related to each track.</para>
92 </itemizedlist></para>
94 <figure float="0" id="layer_tracks_diagram">
95 <title>Layers and Tracks</title>
99 <imagedata fileref="layer_track_overview.png" scale="75" />
104 <para>In order to reduce even more the amount of GStreamer interaction
105 the application developer has to deal with, a convenience GstPipeline
106 has been made available specifically for Timelines : <link
107 linkend="GESPipeline">GESPipeline</link>.</para>