diff options
author | Mathieu Duponchelle <mathieu.duponchelle@opencreed.com> | 2016-06-04 08:55:52 +0200 |
---|---|---|
committer | Mathieu Duponchelle <mathieu.duponchelle@opencreed.com> | 2016-06-04 16:13:35 +0200 |
commit | f0206f71a9150cf2ff6cc6b5cf53b6119db6cbb9 (patch) | |
tree | 445691de3161971e5dfc399dd0a684132063823c /manual-compiling.md | |
parent | 70b736f436b30bb38c4e8c84b38f4de6ba8713d5 (diff) |
Application development manual
Diffstat (limited to 'manual-compiling.md')
-rw-r--r-- | manual-compiling.md | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/manual-compiling.md b/manual-compiling.md new file mode 100644 index 0000000..1cb0da7 --- /dev/null +++ b/manual-compiling.md @@ -0,0 +1,70 @@ +--- +title: Compiling +... + +# Compiling + +This section talks about the different things you can do when building +and shipping your applications and plugins. + +# Embedding static elements in your application + +The [Plugin Writer's +Guide](http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html) +describes in great detail how to write elements for the GStreamer +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. + +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. + +``` + +/* + * Here, you would write the actual plugin code. + */ + +[..] + +static gboolean +register_elements (GstPlugin *plugin) +{ + return gst_element_register (plugin, "my-element-name", + GST_RANK_NONE, MY_PLUGIN_TYPE); +} + +static +my_code_init (void) +{ + ... + + gst_plugin_register_static ( + GST_VERSION_MAJOR, + GST_VERSION_MINOR, + "my-private-plugins", + "Private elements of my application", + register_elements, + VERSION, + "LGPL", + "my-application-source", + "my-application", + "http://www.my-application.net/") + + ... +} + + +``` + |