diff --git a/images/distribute.svg b/images/distribute.svg new file mode 100644 index 0000000000..adca56c446 --- /dev/null +++ b/images/distribute.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/markdown/api.md b/markdown/api.md new file mode 100644 index 0000000000..71c531a3b8 --- /dev/null +++ b/markdown/api.md @@ -0,0 +1 @@ +# API reference diff --git a/markdown/doc_index.md b/markdown/doc_index.md new file mode 100644 index 0000000000..fb183b5c77 --- /dev/null +++ b/markdown/doc_index.md @@ -0,0 +1,86 @@ +--- +short-description: Tutorials and Manuals +render-subpages: false +... + +# Documentation and Tutorials + +Feel free to jump straight to the download section, start practicing +with the tutorials, or read the F.A.Q. if you don’t know what this is +all about. + +## General + + * [Application Development Manual (Read this first)](application-development/index.md) + * [Frequently Asked Questions](frequently-asked-questions/index.md) + * [Plugin Writer's Guide](plugin-development/index.md) + * Core Reference + * Core Libraries Reference + * [Core Design Documentation](design/index.md) + * [GStreamer 0.10 to 1.0 porting guide](https://gitlab.freedesktop.org/gstreamer/gstreamer/raw/master/docs/random/porting-to-1.0.txt) + + + + +## GStreamer APIs References + +* [GStreamer Core library](gstreamer) +* [GStreamer Libraries Reference](libs.html) +* [GStreamer Plugins Reference](plugins_doc.html) + +> ![Warning](images/icons/emoticons/warning.svg) Only the API in libraries from +> GStreamer core and gst-plugins-base are guaranteed to be API and ABI stable + + +## Other modules + + * [GStreamer Editing Services Reference](gst-editing-services) + * [GStreamer RTSP Server Reference](gst-rtsp-server) + * [GStreamer VAAPI Reference](vaapi) + * [GStreamer Validate](gst-devtools) + * Orc - Optimized inner loop Runtime Compiler + +## GStreamer Conference Videos and Slides + +* [GStreamer Conference 2016: Videos and Slides] [(PDF slides)] +* [GStreamer Conference 2015: Videos and Slides] [(PDF slides)][1] +* [GStreamer Conference 2014: Videos and Slides] [(PDF slides)][2] +* [GStreamer Conference 2013: Videos and Slides] [(PDF slides)][3] +* [GStreamer Conference 2012: Videos and Slides] [(PDF slides)][4] +* [GStreamer Conference 2011: Videos and Slides] [(PDF slides)][5] +* [GStreamer Conference 2010: Videos and Slides] [(PDF slides)][6] + + [GStreamer Conference 2016: Videos and Slides]: http://gstconf.ubicast.tv/channels/#gstreamer-conference-2016 + [GStreamer Conference 2015: Videos and Slides]: http://gstconf.ubicast.tv/channels/#gstreamer-conference-2015 + [GStreamer Conference 2014: Videos and Slides]: http://gstconf.ubicast.tv/channels/#gstreamer-conference-2014 + [GStreamer Conference 2013: Videos and Slides]: http://gstconf.ubicast.tv/channels/#gstreamer-conference-2013 + [GStreamer Conference 2012: Videos and Slides]: http://gstconf.ubicast.tv/channels/#gstreamer-conference-2012 + [GStreamer Conference 2011: Videos and Slides]: http://gstconf.ubicast.tv/channels/#conferences-2011 + [GStreamer Conference 2010: Videos and Slides]: http://gstconf.ubicast.tv/channels/#conferences-2010 + [(PDF slides)]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2016/ + [1]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2015/ + [2]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2014/ + [3]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2013/ + [4]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2012/ + [5]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2011/ + [6]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2010/ + + +## GStreamer licensing advisory + +The GStreamer community provides the following licensing advisory for +developers planing on or already using GStreamer for their applications: + + * [GStreamer Licensing Advisory](licensing.md) + + +## GStreamer plugin module split-up + +[An explanation of the various plugin modules and how they were split up](splitup.md) + +## RTP and RTSP support in GStreamer + + * [RTSP and RTP component overview](rtp.md) diff --git a/markdown/gst_index.md b/markdown/gst_index.md new file mode 100644 index 0000000000..100b249243 --- /dev/null +++ b/markdown/gst_index.md @@ -0,0 +1,7 @@ +# GStreamer + +This is the main GStreamer documentation. It contains two sections +the first one contains manuals, tutorials and misc answers to +questions people have concerning how to use/get involved in +the GStreamer project. The second section is the GStreamer API +reference. diff --git a/markdown/index.md b/markdown/index.md index 35748de6fe..a1d7319354 100644 --- a/markdown/index.md +++ b/markdown/index.md @@ -1,85 +1,41 @@ -# GStreamer documentation - -Feel free to jump straight to the download section, start practicing -with the tutorials, or read the F.A.Q. if you don’t know what this is -all about. +--- +full-width: true +title: GStreamer +render-subpages: false +... +
+ +
-## General - - * [Application Development Manual (Read this first)](application-development/index.md) - * [Frequently Asked Questions](frequently-asked-questions/index.md) - * [Plugin Writer's Guide](plugin-development/index.md) - * Core Reference - * Core Libraries Reference - * [Core Design Documentation](design/index.md) - * [GStreamer 0.10 to 1.0 porting guide](https://gitlab.freedesktop.org/gstreamer/gstreamer/raw/master/docs/random/porting-to-1.0.txt) - - - - -## GStreamer Plugins-Base Module Libraries Reference - - * GStreamer Base Plugins Libraries Reference - -## GStreamer Plugins-Bad Module Libraries Reference - -Note: The API from these gst-plugins-bad libraries is unstable and can -change between releases. - -Only the API in libraries from GStreamer core and -gst-plugins-base are guaranteed to be API and ABI stable - - * GStreamer Bad Plugins Libraries Reference - -## Plugin Modules - - * Overview of all Plug-ins - * GStreamer Core Plugins Reference - * GStreamer Base Plugins Reference - * GStreamer Good Plugins Reference - * GStreamer Ugly Plugins Reference - * GStreamer Bad Plugins Reference - -## Other modules - - * GStreamer Editing Services Reference - * GStreamer RTSP Server Reference - * GStreamer VAAPI Reference - * QtGStreamer Reference - * GstValidate Reference - * Orc - Optimized inner loop Runtime Compiler - * GStreamer Non-Linear Multimedia Editing Plugins Reference (deprecated, use GStreamer Editing Services instead) - -## GStreamer Conference Videos and Slides - -* GStreamer Conference 2018: Videos and Slides (PDF slides) -* GStreamer Conference 2017: Videos and Slides (PDF slides) -* GStreamer Conference 2016: Videos and Slides (PDF slides) -* GStreamer Conference 2015: Videos and Slides (PDF slides) - * GStreamer Conference 2014: Videos and Slides (PDF slides) - * GStreamer Conference 2013: Videos and Slides (PDF slides) - * GStreamer Conference 2012: Videos and Slides (PDF slides) - * GStreamer Conference 2011: Videos and Slides (PDF slides) -* GStreamer Conference 2010: Videos and Slides (PDF slides) - - -## GStreamer licensing advisory - -The GStreamer community provides the following licensing advisory for -developers planing on or already using GStreamer for their applications: - - * GStreamer Licensing Advisory - - -## GStreamer plugin module split-up - -[An explanation of the various plugin modules and how they were split up](splitup.md) - -## RTP and RTSP support in GStreamer - - * [RTSP and RTP component overview](rtp.md) +
+
+ API Reference +
+
+ + Application developer manual + +
+
+ + Tutorials + +
+
+ + Deploying + +
+
diff --git a/markdown/libs.md b/markdown/libs.md new file mode 100644 index 0000000000..27ccc4a654 --- /dev/null +++ b/markdown/libs.md @@ -0,0 +1,5 @@ +--- +short-description: All the GStreamer libraries from the various components +... + +# GStreamer libraries diff --git a/markdown/plugins_doc.md b/markdown/plugins_doc.md new file mode 100644 index 0000000000..657c1204e2 --- /dev/null +++ b/markdown/plugins_doc.md @@ -0,0 +1,5 @@ +--- +short-description: All the GStreamer plugins from its various components +... + +# GStreamer plugins diff --git a/markdown/simple-index.md b/markdown/simple-index.md new file mode 100644 index 0000000000..b5a824579f --- /dev/null +++ b/markdown/simple-index.md @@ -0,0 +1,11 @@ +--- +title: GStreamer +... + +# GStreamer: a flexible, fast and multiplatform multimedia framework + +GStreamer is an extremely powerful and versatile framework for creating +streaming media applications. Many of the virtues of the GStreamer +framework come from its modularity: GStreamer can seamlessly incorporate +new plugin modules. But because modularity and power often come at a +cost of greater complexity, writing new applications is not always easy. \ No newline at end of file diff --git a/meson.build b/meson.build index ae90589167..ea6b34d841 100644 --- a/meson.build +++ b/meson.build @@ -3,24 +3,70 @@ project('GStreamer manuals and tutorials', 'c', meson_version: '>=0.48.0') hotdoc = import('hotdoc') +hotdoc_subprojects = [] apiversion = '1.0' +if host_machine.system() == 'windows' + pathsep = ';' +else + pathsep = ':' +endif + +libs = '' +plugins_doc = '' +deps = [] +plugins_sitemap = '' +if get_option('built_subprojects') != '' + foreach project_name: get_option('built_subprojects').split(',') + sub = subproject(project_name) + if sub.get_variable('build_hotdoc') + message('Building @0@ documentation'.format(project_name)) + + foreach lib: sub.get_variable('libs_doc') + hotdoc_subprojects += [lib] + libs += lib.full_path() + pathsep + deps += [lib] + endforeach + + foreach plugin_doc: sub.get_variable('plugins_doc') + plugins_doc += plugin_doc.full_path() + pathsep + hotdoc_subprojects += [plugin_doc] + deps += [plugin_doc] + endforeach + else + message('@0@ did not build hotdoc documentation, can\'t build API doc'.format(project_name)) + endif + endforeach +endif + +if get_option('use_portal_index') + index = 'markdown/index.md' +else + index = 'markdown/simple-index.md' +endif +sitemap_gen = find_program('scripts/generate_sitemap.py') +sitemap = configure_file(command: [sitemap_gen, '@INPUT@', '@OUTPUT@', + index.split('/')[1], libs, plugins_doc], + input: 'sitemap.txt', + output: 'sitemap.txt') html_theme = 'https://github.com/hotdoc/hotdoc_lumen_theme/releases/download/0.9/hotdoc_lumen_theme-0.9.tar.xz?sha256=ec3807f13eda2d4914fcf251b7e9607e90f33430725a2b1d433a90c9210a52fc' gstreamer_doc = hotdoc.generate_doc('GStreamer', project_version: apiversion, - sitemap: 'sitemap.txt', - index: 'markdown/index.md', - build_by_default: true, + sitemap: sitemap, + index: index, install: true, extra_assets: [join_paths(meson.current_source_dir(), 'images')], syntax_highlighting_activate: true, html_theme: html_theme, include_paths: join_paths(meson.current_source_dir(), 'examples'), html_extra_theme: join_paths(meson.current_source_dir(), 'theme/extra'), - edit_on_github_repository: 'https://gitlab.freedesktop.org/gstreamer/gst-docs/', - edit_on_github_branch: 'master', + dependencies: deps, + subprojects: hotdoc_subprojects, disable_incremental_build: true, + gst_list_plugins_page: 'plugins_doc.md', devhelp_activate: true, + build_always_stale: true, + edit_on_github_repository: 'https://gitlab.freedesktop.org/gstreamer/gst-docs/', ) diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000000..06f5ecf7ba --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,6 @@ +# Special option to tell `gst-docs` what subprojects with +# API documentation can be used. +option('built_subprojects', type : 'string', value : '') +# Special entry to make `gst-docs` usable as part of a bigger +# portal (gnome-portal for example). +option('use_portal_index', type : 'boolean', value : true) diff --git a/scripts/generate_sitemap.py b/scripts/generate_sitemap.py new file mode 100755 index 0000000000..ebb6b916c1 --- /dev/null +++ b/scripts/generate_sitemap.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +import os +import sys + + +if __name__ == "__main__": + in_, out, index_md = sys.argv[1], sys.argv[2], sys.argv[3] + with open(in_) as f: + index = f.read() + if sys.argv[4]: + index = '\n'.join('\t' + l for l in index.splitlines()) + libs, plugins = sys.argv[4].split(os.pathsep), sorted( + sys.argv[5].split(os.pathsep), key=lambda x: os.path.basename(x)) + index += '\n api.md\n libs.md' + for lib in libs: + if not lib: + continue + index += "\n " + lib + '.json' + index += '\n plugins_doc.md' + for plugin in plugins: + if not plugin: + continue + index += "\n " + plugin + '.json' + index = '%s\n%s' % (index_md, index) + with open(out, 'w') as fw: + fw.write(index) diff --git a/sitemap.txt b/sitemap.txt index 0d84078ebb..93a097850f 100644 --- a/sitemap.txt +++ b/sitemap.txt @@ -1,11 +1,11 @@ -index.md - installing/index.md - installing/for-android-development.md - installing/for-ios-development.md - installing/on-mac-osx.md - installing/on-windows.md +doc_index.md + installing/index.md + installing/for-android-development.md + installing/for-ios-development.md + installing/on-mac-osx.md + installing/on-windows.md installing/on-linux.md - installing/building-from-source-using-cerbero.md + installing/building-from-source-using-cerbero.md frequently-asked-questions/index.md frequently-asked-questions/general.md frequently-asked-questions/dependencies.md @@ -50,7 +50,7 @@ index.md application-development/appendix/integration.md application-development/appendix/licensing.md application-development/appendix/quotes.md - tutorials/index.md + tutorials/index.md tutorials/basic/index.md tutorials/basic/hello-world.md tutorials/basic/concepts.md @@ -206,4 +206,4 @@ index.md design/draft-tagreading.md design/toc.md design/tracing.md - design/trickmodes.md \ No newline at end of file + design/trickmodes.md diff --git a/theme/extra/images/api-reference.svg b/theme/extra/images/api-reference.svg new file mode 100644 index 0000000000..f25f43d8af --- /dev/null +++ b/theme/extra/images/api-reference.svg @@ -0,0 +1,35 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + diff --git a/theme/extra/images/deploy.png b/theme/extra/images/deploy.png new file mode 100644 index 0000000000..6f45592c7e Binary files /dev/null and b/theme/extra/images/deploy.png differ diff --git a/theme/extra/images/design-guidelines.svg b/theme/extra/images/design-guidelines.svg new file mode 100644 index 0000000000..00b3480fc9 --- /dev/null +++ b/theme/extra/images/design-guidelines.svg @@ -0,0 +1,32 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + diff --git a/theme/extra/images/tutorials.png b/theme/extra/images/tutorials.png new file mode 100644 index 0000000000..ae69a25dc9 Binary files /dev/null and b/theme/extra/images/tutorials.png differ diff --git a/theme/extra/templates/navbar_links.html b/theme/extra/templates/navbar_links.html new file mode 100644 index 0000000000..f510ef33fe --- /dev/null +++ b/theme/extra/templates/navbar_links.html @@ -0,0 +1,25 @@ +@require(page) + +