tests: mark elements_srtp.test_play test as flaky
[platform/upstream/gstreamer.git] / subprojects / gst-editing-services / docs / index.md
1 ---
2 short-description:  GStreamer Editing Services API reference.
3 ...
4
5 # GStreamer Editing Services
6
7 The "GStreamer Editing Services" is a library to simplify the creation
8 of multimedia editing applications. Based on the GStreamer multimedia framework
9 and the GNonLin set of plugins, its goals are to suit all types of editing-related
10 applications.
11
12 The GStreamer Editing Services are cross-platform and work on most UNIX-like
13 platform as well as Windows. It is released under the GNU Library General Public License
14 (GNU LGPL).
15
16 ## Goals of GStreamer Editing Services
17
18 The GStreamer multimedia framework and the accompanying GNonLin set of
19 plugins for non-linear editing offer all the building blocks for:
20
21 -   Decoding and encoding to a wide variety of formats, through all the
22     available GStreamer plugins.
23
24 -   Easily choosing segments of streams and arranging them through time
25     through the GNonLin set of plugins.
26
27 But all those building blocks only offer stream-level access, which
28 results in developers who want to write non-linear editors to write a
29 consequent amount of code to get to the level of *non-linear editing*
30 notions which are closer and more meaningful for the end-user (and
31 therefore the application).
32
33 The GStreamer Editing Services (hereafter GES) aims to fill the gap
34 between GStreamer/GNonLin and the application developer by offering a
35 series of classes to simplify the creation of many kind of
36 editing-related applications.
37
38 ## Architecture
39
40 ### Timeline and TimelinePipeline
41
42 The most top-level object encapsulating every other object is the
43 [GESTimeline](GESTimeline). It is the central object for any editing project.
44
45 The `GESTimeline` is a `GstElement`. It can therefore be used in any
46 GStreamer pipeline like any other object.
47
48 ### Tracks and Layers
49
50 The GESTimeline can contain two types of objects (seen in
51 "Layers and Tracks"):
52
53 -   Layers - Corresponds to the user-visible arrangement of clips, and
54     what you primarily interact with as an application developer. A
55     minimalistic timeline would only have one layer, but a more complex
56     editing application could use as many as needed.
57
58 -   Tracks - Corresponds to the output streams in GStreamer. A typical
59     GESTimeline, aimed at a video editing application, would have an
60     audio track and a video track. A GESTimeline for an audio editing
61     application would only require an audio track. Multiple layers can
62     be related to each track.
63
64 ![Layers and Tracks](images/layer_track_overview.png)
65
66 In order to reduce even more the amount of GStreamer interaction the
67 application developer has to deal with, a convenience GstPipeline has
68 been made available specifically for Timelines : [GESPipeline](GESPipeline).