gstreamer/docs/libs/architecture.xml
Lubosz Sarnecki 9f0b0c26e3 Rename GESTimelinePipeline to GESPipeline
rename ges_timeline_pipeline methods to ges_pipeline
2013-07-21 21:42:42 -04:00

111 lines
3.9 KiB
XML

<?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 % 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>
<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>
<title>Architecture</title>
<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>
</refsect2>
<refsect2>
<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>
</refsect1>
</refentry>