mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
Added what I think should be the basic steps for writing a plugin.
Original commit message from CVS: Added what I think should be the basic steps for writing a plugin.
This commit is contained in:
parent
d1b4ff4eed
commit
cd11906922
1 changed files with 116 additions and 2 deletions
|
@ -46,7 +46,121 @@
|
|||
<application>GStreamer</application>. For a gentle introduction to
|
||||
GStreamer, you may wish to read the <emphasis>GStreamer Application
|
||||
Development Manual</emphasis>. Since <application>GStreamer</application>
|
||||
adheres to the GTK+ programming model, the reader is also assumed to
|
||||
understand the basics of GTK+.
|
||||
adheres to the GObject programming model, the reader is also assumed to
|
||||
understand the basics of GObject.
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
<chapter id="cha-structure">
|
||||
<title>Structure of this guide</title>
|
||||
<para>
|
||||
The <application>GStreamer</application> API for developing plugins is
|
||||
rather extensive and powerful. We will first try to get you up and running
|
||||
with a simple plugin as fast as possible. We will then gradually add more
|
||||
feature to our plugin. The basic topics will be:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Introduction to the basic structure of the plugin. We will cover all the
|
||||
different steps you have to perform in order to build a plugin. This will
|
||||
include a general overview of the structure of your source files.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Creating the plugin boilerplate. We will show you how to define and set up
|
||||
the different aspects for creating a plugin. This will cover extending the
|
||||
GstElement class and creating the elementfactory structures. This will include
|
||||
setting up the .h and .c files of your plugin.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Defining the entry point of the plugin and registering the elementfactory.
|
||||
After this step your plugin will become available for application programmers.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Setting up the basic components of the element like adding pads and setting
|
||||
up the scheduling entry points of your plugin.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Adding arguments and signals to the plugin. Users of your plugin will be
|
||||
able to listen for specific events your plugin generates as well as change and
|
||||
adjust the different properties of your plugin.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Compiling and testing the basic plugin.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
After this first section, you should be able to create a simple plugin. We will then
|
||||
introduce the more advanced concepts of plugins, including:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Adding padtemplates to the plugin. This will allow your plugin to become fully
|
||||
integrated in the GStreamer plugin registry and will allow users of your plugin
|
||||
to know what media types your plugin operates on.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Adding new mime-types to the registry along with typedetect functions. This will allow
|
||||
your plugin to operate on a completely new media type.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Adding caps to the plugins input pads. This will allow other plugins to know what
|
||||
media type your plugin is handling at runtime.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Choosing between a loop-based or a chain-based plugin. We will teach you how to
|
||||
create plugins with a more complicated input/output behaviour.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Adding request pads to the plugin. Request pads allow the application programmer
|
||||
to let your plugin dynamically create a pad based on a template.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Caps negotiation will show you how your plugin can addapt to the plugins it
|
||||
is connected to.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Creating compound and complex elements by extending from a GstBin. This will
|
||||
allow you to create plugins that have other plugins embedded in them.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Creating custom schedulers when the default schedulers are insufficient.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Creating custom autopluggers when the default ones are insufficient for your needs.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
As you can see, there a lot to learn, so let's get started...
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
|
Loading…
Reference in a new issue