mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 23:06:49 +00:00
doc: Build documentation with hotdoc
This commit is contained in:
parent
e570d1e080
commit
8857e004f7
5 changed files with 101 additions and 8 deletions
BIN
docs/hotdoc/images/layer_track_overview.png
Normal file
BIN
docs/hotdoc/images/layer_track_overview.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
64
docs/hotdoc/index.md
Normal file
64
docs/hotdoc/index.md
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
# GStreamer Editing Services
|
||||||
|
|
||||||
|
The "GStreamer Editing Services" is a library to simplify the creation
|
||||||
|
of multimedia editing applications. Based on the GStreamer multimedia framework
|
||||||
|
and the GNonLin set of plugins, its goals are to suit all types of editing-related
|
||||||
|
applications.
|
||||||
|
|
||||||
|
The GStreamer Editing Services are cross-platform and work on most UNIX-like
|
||||||
|
platform as well as Windows. It is released under the GNU Library General Public License
|
||||||
|
(GNU LGPL).
|
||||||
|
|
||||||
|
## Goals of GStreamer Editing Services
|
||||||
|
|
||||||
|
The GStreamer multimedia framework and the accompanying GNonLin set of
|
||||||
|
plugins for non-linear editing offer all the building blocks for:
|
||||||
|
|
||||||
|
- Decoding and encoding to a wide variety of formats, through all the
|
||||||
|
available GStreamer plugins.
|
||||||
|
|
||||||
|
- Easily choosing segments of streams and arranging them through time
|
||||||
|
through the GNonLin set of plugins.
|
||||||
|
|
||||||
|
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 *non-linear editing*
|
||||||
|
notions which are closer and more meaningful for the end-user (and
|
||||||
|
therefore the application).
|
||||||
|
|
||||||
|
The GStreamer Editing Services (hereafter GES) 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.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### Timeline and TimelinePipeline
|
||||||
|
|
||||||
|
The most top-level object encapsulating every other object is the
|
||||||
|
#GESTimeline. It is the central object for any editing project.
|
||||||
|
|
||||||
|
The `GESTimeline` is a `GstElement`. It can therefore be used in any
|
||||||
|
GStreamer pipeline like any other object.
|
||||||
|
|
||||||
|
### Tracks and Layers
|
||||||
|
|
||||||
|
The GESTimeline can contain two types of objects (seen in
|
||||||
|
"Layers and Tracks"):
|
||||||
|
|
||||||
|
- 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.
|
||||||
|
|
||||||
|
- 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.
|
||||||
|
|
||||||
|
![Layers and Tracks](images/layer_track_overview.png)
|
||||||
|
|
||||||
|
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 : #GESPipeline.
|
23
docs/hotdoc/meson.build
Normal file
23
docs/hotdoc/meson.build
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
ges_excludes = []
|
||||||
|
foreach f: ['gesmarshal.h', 'ges-internal.h', 'ges-auto-transition.[ch]',
|
||||||
|
'ges-structured-interface.[ch]', 'ges-structure-parser.[ch]',
|
||||||
|
'ges-smart-video-mixer.[ch]', 'gstframepositioner.[ch]',
|
||||||
|
'ges/lex.priv_ges_parse_yy.c']
|
||||||
|
ges_excludes += [join_paths(meson.current_source_dir(), '..', '..', 'ges', f)]
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
hotdoc = import('hotdoc')
|
||||||
|
gst_editin_services_doc = hotdoc.generate_doc('gst-editing-services',
|
||||||
|
project_version: apiversion,
|
||||||
|
extra_assets: [join_paths(meson.current_source_dir(), 'images')],
|
||||||
|
c_sources: ['../../ges/ges.h', '../../ges/*.[hc]'],
|
||||||
|
gi_sources: [ges_gir[0].full_path()],
|
||||||
|
c_source_filters: ges_excludes,
|
||||||
|
sitemap: 'sitemap.txt',
|
||||||
|
index: 'index.md',
|
||||||
|
gi_index: 'index.md',
|
||||||
|
gi_smart_index: true,
|
||||||
|
gi_order_generated_subpages: true,
|
||||||
|
dependencies: [ges_dep],
|
||||||
|
disable_incremental_build: true,
|
||||||
|
)
|
1
docs/hotdoc/sitemap.txt
Normal file
1
docs/hotdoc/sitemap.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
gi-index
|
|
@ -1,11 +1,16 @@
|
||||||
docconf = configuration_data()
|
if hotdoc_p.found() and build_gir
|
||||||
|
build_hotdoc = true
|
||||||
|
subdir('hotdoc')
|
||||||
|
else
|
||||||
|
docconf = configuration_data()
|
||||||
|
|
||||||
docconf.set('GST_API_VERSION', apiversion)
|
docconf.set('GST_API_VERSION', apiversion)
|
||||||
docconf.set('PACKAGE_VERSION', gst_version)
|
docconf.set('PACKAGE_VERSION', gst_version)
|
||||||
docconf.set('PLUGINDIR', '@0@/lib/gstreamer-1.0'.format(get_option('prefix')))
|
docconf.set('PLUGINDIR', '@0@/lib/gstreamer-1.0'.format(get_option('prefix')))
|
||||||
|
|
||||||
version_entities = configure_file(input : 'version.entities.in',
|
version_entities = configure_file(input : 'version.entities.in',
|
||||||
output : 'version.entities',
|
output : 'version.entities',
|
||||||
configuration : docconf)
|
configuration : docconf)
|
||||||
|
|
||||||
subdir('libs')
|
subdir('libs')
|
||||||
|
endif
|
||||||
|
|
Loading…
Reference in a new issue