From 7112f1b874ff4fe4b8f9f782f30c2308de7f238d Mon Sep 17 00:00:00 2001 From: Zeno Endemann Date: Fri, 2 Aug 2019 18:17:20 +0200 Subject: [PATCH] docs: application-development: Clarify usage of static elements Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/-/issues/41 Part-of: --- .../appendix/compiling.md | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/subprojects/gst-docs/markdown/application-development/appendix/compiling.md b/subprojects/gst-docs/markdown/application-development/appendix/compiling.md index dcef4c0313..c077e8188d 100644 --- a/subprojects/gst-docs/markdown/application-development/appendix/compiling.md +++ b/subprojects/gst-docs/markdown/application-development/appendix/compiling.md @@ -15,19 +15,33 @@ framework. In this section, we will solely discuss how to embed such elements statically in your application. This can be useful for application-specific elements that have no use elsewhere in GStreamer. +Elements do not need to be registered to be used in GStreamer, so one +can simply instantiate the elements with `g_object_new ()` and use them +in pipelines like any other. + +If the statically linked elements should also be available through a +name for functions such as `gst_element_factory_make ()`, these elements +can be registered direclty without a plugin. For that you can use +`gst_element_register ()` with `NULL` as plugin parameter. + +While these two methods are usually sufficient, it is also possible +to register a static plugin. + +### Static plugins + Dynamically loaded plugins contain a structure that's defined using `GST_PLUGIN_DEFINE ()`. This structure is loaded when the plugin is loaded by the GStreamer core. The structure contains an initialization function (usually called `plugin_init`) that will be called right after that. It's purpose is to register the elements provided by the plugin -with the GStreamer framework. If you want to embed elements directly in -your application, the only thing you need to do is to replace -`GST_PLUGIN_DEFINE ()` with a call to `gst_plugin_register_static ()`. -As soon as you call `gst_plugin_register_static ()`, the elements will -from then on be available like any other element, without them having to -be dynamically loadable libraries. In the example below, you would be -able to call `gst_element_factory_make -("my-element-name", "some-name")` to create an instance of the element. +with the GStreamer framework. To register a static plugin, the only +thing you need to do is to replace `GST_PLUGIN_DEFINE ()` with a call +to `gst_plugin_register_static ()`. As soon as you call +`gst_plugin_register_static ()`, the elements will from then on be +available like any other element, without them having to be dynamically +loadable libraries. In the example below, you would be able to call +`gst_element_factory_make("my-element-name", "some-name")` to create +an instance of the element. ``` c