Documentation updates

Original commit message from CVS:
Documentation updates
This commit is contained in:
Wim Taymans 2002-07-24 19:46:42 +00:00
parent 74eba3a615
commit 4afbf577a2
8 changed files with 201 additions and 23 deletions

View file

@ -142,13 +142,86 @@
element = gst_element_factory_make ("mad", "decoder");
</programlisting>
<para>
An element can be destroyed with: FIXME talk about refcounting
When you don't need the element anymore, you need to unref it, as shown in the following
example.
</para>
<programlisting>
GstElement *element;
...
gst_element_destroy (element);
gst_element_unref (element);
</programlisting>
</sect1>
<sect1 id="sec-elements-properties">
<title>GstElement properties</title>
<para>
A GstElement can have several properties which are implemented using standard
GObject properties. The usual GObject methods to query, set and get property values
and GParamSpecs are therefore supported.
</para>
<para>
Every GstElement inherits at least one property of its parent GstObject, the "name"
property. This is the name you provide to gst_element_factory_make() or
gst_element_factory_create(). You can get and set this property using the
gst_object_set_name() and gst_object_get_name() or use the GObject property
mechanism as shown below.
</para>
<programlisting>
GstElement *element;
GValue value = { 0, }; /* initialize the GValue for g_object_get() */
element = gst_element_factory_make ("mad", "decoder");
g_object_set (G_OBJECT (element), "name", "mydecoder", NULL);
...
g_value_init (&amp;value, G_TYPE_STRING);
g_object_get_property (G_OBJECT (element), "name", &amp;value);
...
</programlisting>
<para>
Most plugins provide additional properties to provide more information
about their configuration or to configure the element.
<command>gst-inspect</command> is a useful tool to query the properties
of a perticular element, it will also use property introspection to give
a short explanation about the function of the property and about the
parameter types and ranges it supports.
</para>
<para>
For more information about GObject properties we recommend to read the GObject
manual.
</para>
</sect1>
<sect1 id="sec-elements-signals">
<title>GstElement signals</title>
<para>
A GstElement also provides various GObject signals that can be used as a flexible
callback mechanism.
</para>
</sect1>
<sect1 id="sec-elements-factories">
<title>More about GstElementFactory</title>
<para>
We talk some more about the GstElementFactory object.
</para>
<sect2 id="sec-elements-factories-details">
<title>Getting information about an element using the factory details</title>
<para>
</para>
</sect2>
<sect2 id="sec-elements-factories-padtemplates">
<title>Finding out what pads an element can contain</title>
<para>
</para>
</sect2>
<sect2 id="sec-elements-factories-query">
<title>Different ways of querying the factories</title>
<para>
</para>
</sect2>
</sect1>
</chapter>

View file

@ -142,13 +142,86 @@
element = gst_element_factory_make ("mad", "decoder");
</programlisting>
<para>
An element can be destroyed with: FIXME talk about refcounting
When you don't need the element anymore, you need to unref it, as shown in the following
example.
</para>
<programlisting>
GstElement *element;
...
gst_element_destroy (element);
gst_element_unref (element);
</programlisting>
</sect1>
<sect1 id="sec-elements-properties">
<title>GstElement properties</title>
<para>
A GstElement can have several properties which are implemented using standard
GObject properties. The usual GObject methods to query, set and get property values
and GParamSpecs are therefore supported.
</para>
<para>
Every GstElement inherits at least one property of its parent GstObject, the "name"
property. This is the name you provide to gst_element_factory_make() or
gst_element_factory_create(). You can get and set this property using the
gst_object_set_name() and gst_object_get_name() or use the GObject property
mechanism as shown below.
</para>
<programlisting>
GstElement *element;
GValue value = { 0, }; /* initialize the GValue for g_object_get() */
element = gst_element_factory_make ("mad", "decoder");
g_object_set (G_OBJECT (element), "name", "mydecoder", NULL);
...
g_value_init (&amp;value, G_TYPE_STRING);
g_object_get_property (G_OBJECT (element), "name", &amp;value);
...
</programlisting>
<para>
Most plugins provide additional properties to provide more information
about their configuration or to configure the element.
<command>gst-inspect</command> is a useful tool to query the properties
of a perticular element, it will also use property introspection to give
a short explanation about the function of the property and about the
parameter types and ranges it supports.
</para>
<para>
For more information about GObject properties we recommend to read the GObject
manual.
</para>
</sect1>
<sect1 id="sec-elements-signals">
<title>GstElement signals</title>
<para>
A GstElement also provides various GObject signals that can be used as a flexible
callback mechanism.
</para>
</sect1>
<sect1 id="sec-elements-factories">
<title>More about GstElementFactory</title>
<para>
We talk some more about the GstElementFactory object.
</para>
<sect2 id="sec-elements-factories-details">
<title>Getting information about an element using the factory details</title>
<para>
</para>
</sect2>
<sect2 id="sec-elements-factories-padtemplates">
<title>Finding out what pads an element can contain</title>
<para>
</para>
</sect2>
<sect2 id="sec-elements-factories-query">
<title>Different ways of querying the factories</title>
<para>
</para>
</sect2>
</sect1>
</chapter>

View file

@ -82,14 +82,15 @@
<itemizedlist>
<listitem>
<para>
Using GLib g_mem_chunk where possible to minimize dynamic memory
allocation.
Using GLib g_mem_chunk and fast non-blocking allocation algorithms
where possible to minimize dynamic memory allocation.
</para>
</listitem>
<listitem>
<para>
Extremely light-weight connections between plugins. Data can travel
the pipeline with minimal overhead.
the pipeline with minimal overhead. Data passing between plugins only involves
a pointer dereference in a typical pipeline.
</para>
</listitem>
<listitem>
@ -108,7 +109,8 @@
<listitem>
<para>
The use of cothreads to minimize the threading overhead. Cothreads are a simple and fast
user-space method for switching between subtasks.
user-space method for switching between subtasks. Cothreads were measured to
consume as little as 600 cpu cycles.
</para>
</listitem>
<listitem>
@ -123,7 +125,24 @@
used.
</para>
</listitem>
<listitem>
<para>
All critical data passing is free of locks and mutexes.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="sec-goals-testbed">
<title>Provide a framework for codec experimentation</title>
<para>
GStreamer also wants to be an easy framework where codec developers
can experiment with different algorithms, speeding up the development
of open and free multimedia codecs like tarking and vorbis.
</para>
<para>
</para>
</sect2>
</sect1>
</chapter>

View file

@ -28,16 +28,17 @@ main (int argc, char *argv[])
}
</programlisting>
<para>
It is also possible to call the gst_init method with two NULL argumants.
It is also possible to call the gst_init method with two NULL arguments.
</para>
<para>
Use the GST_VERSION_MAJOR, GST_VERSION_MINOR and GST_VERSION_MICRO macros to
get the <application>GStreamer</application> version you are building against.
get the <application>GStreamer</application> version you are building against or
use gst_version() to get the version you are linked against.
</para>
<sect1>
<title>The popt interface</title>
<para>
more info here
You can also use a popt table to initialize your own parameters as shown in the next code fragment:
</para>
<programlisting>
int

View file

@ -56,7 +56,9 @@
<para>
Your typical media player might have a plugin for different media
types. Two media players will typically implement their own plugin
mechanism so that the codecs cannot be easily exchanged.
mechanism so that the codecs cannot be easily exchanged. The plugin system
of the typical media player is also very tailored to the specific needs
of the application.
</para>
<para>
The lack of a unified plugin mechanism also seriously hinders the
@ -67,7 +69,8 @@
While GStreamer also uses it own plugin system it offers a very rich
framework for the plugin developper and ensures the plugin can be used
in a wide range of applications, transparently interacting with other
plugins.
plugins. The Framework that GStreamer provides for the plugins is
flexible enough to host even the most demanding plugins.
</para>
</sect2>
@ -83,8 +86,9 @@
the GNOME object embedding using Bonobo.
</para>
<para>
While the GStreamer core does not use network transparent technologies
at the lowest level, it shouldn't be hard to create a wrapper around the
The GStreamer cores does not use network transparent technologies at the
lowest level as it only adds overhead for the local case.
That said, it shouldn't be hard to create a wrapper around the
core components.
</para>
</sect2>

View file

@ -27,7 +27,8 @@
very wide variety of formats including mp3, Ogg Vorbis, Mpeg1, Mpeg2, Avi, Quicktime, mod
and so on.
GStreamer, however, is much more than just another media player. Its
main advantages are that the pluggable components also make it possible
main advantages are that the pluggable components can be mixed and matched into
abitrary pipelines so that it's possible
to write a full fledged video or audio editing application.
</para>
@ -48,6 +49,7 @@
<para>
This book is about GStreamer from a developer's point of view; it describes
how to write a GStreamer application using the GStreamer libraries and tools.
For an explanation about writing plugins, we suggest the Plugin Writers Guide.
</para>
</sect1>

View file

@ -27,7 +27,8 @@
very wide variety of formats including mp3, Ogg Vorbis, Mpeg1, Mpeg2, Avi, Quicktime, mod
and so on.
GStreamer, however, is much more than just another media player. Its
main advantages are that the pluggable components also make it possible
main advantages are that the pluggable components can be mixed and matched into
abitrary pipelines so that it's possible
to write a full fledged video or audio editing application.
</para>
@ -48,6 +49,7 @@
<para>
This book is about GStreamer from a developer's point of view; it describes
how to write a GStreamer application using the GStreamer libraries and tools.
For an explanation about writing plugins, we suggest the Plugin Writers Guide.
</para>
</sect1>

View file

@ -56,7 +56,9 @@
<para>
Your typical media player might have a plugin for different media
types. Two media players will typically implement their own plugin
mechanism so that the codecs cannot be easily exchanged.
mechanism so that the codecs cannot be easily exchanged. The plugin system
of the typical media player is also very tailored to the specific needs
of the application.
</para>
<para>
The lack of a unified plugin mechanism also seriously hinders the
@ -67,7 +69,8 @@
While GStreamer also uses it own plugin system it offers a very rich
framework for the plugin developper and ensures the plugin can be used
in a wide range of applications, transparently interacting with other
plugins.
plugins. The Framework that GStreamer provides for the plugins is
flexible enough to host even the most demanding plugins.
</para>
</sect2>
@ -83,8 +86,9 @@
the GNOME object embedding using Bonobo.
</para>
<para>
While the GStreamer core does not use network transparent technologies
at the lowest level, it shouldn't be hard to create a wrapper around the
The GStreamer cores does not use network transparent technologies at the
lowest level as it only adds overhead for the local case.
That said, it shouldn't be hard to create a wrapper around the
core components.
</para>
</sect2>