gstreamer/subprojects/gst-docs
Thibault Saunier 2c9a642b66 meson: Give the same name for api_version in all modules
There were 2 version of it, apiversion and api_version, I chose the one
with most occurencies: `api_version`

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>
2024-12-20 20:19:28 +00:00
..
examples examples: iOS: Remove frei0r plugin as we do not ship its plugins 2024-12-04 11:00:48 +00:00
images docs: Add back SVG sources for the pipeline diagrams 2024-07-10 13:53:19 +03:00
markdown docs: update fields about gst video aligment 2024-11-19 15:27:38 +00:00
scripts gst-omx: Retire the whole package 2023-07-16 19:10:03 +00:00
symbols vtenc: Fix class hierarchy in an attempt to fix property docs 2024-12-16 18:52:21 +00:00
theme/extra gst-docs: add higher-resolution favicons 2023-08-01 02:23:17 +00:00
.gitignore Move files from gst-docs into the "subprojects/gst-docs/" subdir 2021-09-24 16:15:51 -03:00
.gitmodules Move files from gst-docs into the "subprojects/gst-docs/" subdir 2021-09-24 16:15:51 -03:00
LICENSE.BSD Move files from gst-docs into the "subprojects/gst-docs/" subdir 2021-09-24 16:15:51 -03:00
LICENSE.CC-BY-SA-4.0 Move files from gst-docs into the "subprojects/gst-docs/" subdir 2021-09-24 16:15:51 -03:00
LICENSE.LGPL-2.1 Move files from gst-docs into the "subprojects/gst-docs/" subdir 2021-09-24 16:15:51 -03:00
LICENSE.MIT Move files from gst-docs into the "subprojects/gst-docs/" subdir 2021-09-24 16:15:51 -03:00
LICENSE.OPL Move files from gst-docs into the "subprojects/gst-docs/" subdir 2021-09-24 16:15:51 -03:00
meson.build meson: Give the same name for api_version in all modules 2024-12-20 20:19:28 +00:00
meson_options.txt doc: Add an option to enable fatal warnings 2022-09-15 20:11:46 +00:00
README.md Remove glib and gobject dependencies everywhere 2022-04-01 16:32:17 +00:00
sitemap.txt gst-docs: include dmabuf and gapless playback design docs 2023-01-18 13:48:14 +00:00
TODO.md Move files from gst-docs into the "subprojects/gst-docs/" subdir 2021-09-24 16:15:51 -03:00

Introduction

This is a collection of design documents, formerly maintained in various different locations and formats, now grouped together and converted to commonmark.

Contributing

Style

We will follow the commonmark specification.

We should try to follow this style guide, but are still evaluating solutions for stable automatic formatting.

80 columns line width is thus not yet enforced, but strongly suggested.

Build the documentation

Install dependencies

  • Follow hotdoc's installation guide, preferably in a virtualenv.

  • We experimentally use the hotdoc C extension to include functions by name, follow the steps outlined here

Build the portal without the API documentation

meson build
ninja -C build/ GStreamer-doc

And browse it:

gio open build/GStreamer-doc/html/index.html

API documentation

Building the API documentation in the portal implies using the full multi-repo gstreamer build which allows us to aggregate the documentation from all GStreamer modules using the hotdoc subproject feature.

From gstreamer:

meson build/
./gst-env ninja -C build subprojects/gst-docs/GStreamer-doc

And browse the doc:

gio open build/subprojects/gst-docs/GStreamer-doc/html/index.html

You can also generate a release tarball of the portal with:

ninja -C build gst-docs@@release

Adding a newly written plugin to the documentation

To add a plugin to the documentation you need to add the given meson target to the plugins list present in each GStreamer module for example:

gst_elements = library('gstcoreelements',
  gst_elements_sources,
  c_args : gst_c_args,
  include_directories : [configinc],
  dependencies : [gst_dep, gst_base_dep],
  install : true,
  install_dir : plugins_install_dir,
)
plugins += [gst_elements]

Then you need to regenerate the gst_plugins_cache.json file by running the target manually, if building from the module itself:

ninja -C <build-dir> docs/gst_plugins_cache.json

if you use the mono repo build there's also a target that will rebuild all the cache files in the various GStreamer subprojects:

ninja -C <build-dir> plugins_doc_caches`

NOTE: the newly generated cache should be commited to the git repos.

The plugins documentation is generated based on that file to avoid needing to have built all plugins to get the documentation generated.

NOTE: When moving plugins from one module to another, the gst_plugins_cache.json from the module where the plugin has been removed should be manually edited to reflect the removal.

Licensing

The content of this module comes from a number of different sources and is licensed in different ways:

Tutorial source code

All tutorial code is licensed under any of the following licenses (your choice):

  • 2-clause BSD license ("simplified BSD license") (LICENSE.BSD)
  • MIT license (LICENSE.MIT)
  • LGPL v2.1 (LICENSE.LGPL-2.1), or (at your option) any later version

This means developers have maximum flexibility and can pick the right license for any derivative work.

Application Developer Manual and Plugin Writer's Guide

These are licensed under the Open Publication License v1.0 (LICENSE.OPL), for historical reasons.

Documentation

Tutorials

The tutorials are licensed under the Creative Commons CC-BY-SA-4.0 license (LICENSE.CC-BY-SA-4.0).

API Reference and Design Documentation

The remaining documentation, including the API reference and Design Documentation, is licensed under the LGPL v2.1 (LICENSE.LGPL-2.1), or (at your option) any later version.