doc: Build documentation with hotdoc
authorThibault Saunier <thibault.saunier@osg.samsung.com>
Wed, 8 Mar 2017 21:02:47 +0000 (18:02 -0300)
committerThibault Saunier <thibault.saunier@osg.samsung.com>
Wed, 8 Mar 2017 21:02:57 +0000 (18:02 -0300)
docs/hotdoc/images/layer_track_overview.png [new file with mode: 0644]
docs/hotdoc/index.md [new file with mode: 0644]
docs/hotdoc/meson.build [new file with mode: 0644]
docs/hotdoc/sitemap.txt [new file with mode: 0644]
docs/meson.build

diff --git a/docs/hotdoc/images/layer_track_overview.png b/docs/hotdoc/images/layer_track_overview.png
new file mode 100644 (file)
index 0000000..8e28517
Binary files /dev/null and b/docs/hotdoc/images/layer_track_overview.png differ
diff --git a/docs/hotdoc/index.md b/docs/hotdoc/index.md
new file mode 100644 (file)
index 0000000..cbfb174
--- /dev/null
@@ -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.
diff --git a/docs/hotdoc/meson.build b/docs/hotdoc/meson.build
new file mode 100644 (file)
index 0000000..2022769
--- /dev/null
@@ -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,
+)
diff --git a/docs/hotdoc/sitemap.txt b/docs/hotdoc/sitemap.txt
new file mode 100644 (file)
index 0000000..4f91fcd
--- /dev/null
@@ -0,0 +1 @@
+gi-index
index c89a68c..766ae5e 100644 (file)
@@ -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('PACKAGE_VERSION', gst_version)
-docconf.set('PLUGINDIR', '@0@/lib/gstreamer-1.0'.format(get_option('prefix')))
+  docconf.set('GST_API_VERSION', apiversion)
+  docconf.set('PACKAGE_VERSION', gst_version)
+  docconf.set('PLUGINDIR', '@0@/lib/gstreamer-1.0'.format(get_option('prefix')))
 
-version_entities = configure_file(input : 'version.entities.in',
-  output : 'version.entities',
-  configuration : docconf)
+  version_entities = configure_file(input : 'version.entities.in',
+    output : 'version.entities',
+    configuration : docconf)
 
-subdir('libs')
+  subdir('libs')
+endif