2000-10-21 12:04:40 +00:00
|
|
|
<!DOCTYPE book PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.0//EN" "" [
|
2000-08-16 21:38:57 +00:00
|
|
|
<!ENTITY INTRO SYSTEM "intro.sgml">
|
|
|
|
<!ENTITY MOTIVATION SYSTEM "motivation.sgml">
|
|
|
|
<!ENTITY GOALS SYSTEM "goals.sgml">
|
|
|
|
|
|
|
|
<!ENTITY ELEMENTS SYSTEM "elements.sgml">
|
|
|
|
<!ENTITY CONNECTIONS SYSTEM "connections.sgml">
|
|
|
|
<!ENTITY BINS SYSTEM "bins.sgml">
|
|
|
|
<!ENTITY BUFFERS SYSTEM "buffers.sgml">
|
|
|
|
<!ENTITY STATES SYSTEM "states.sgml">
|
2000-08-18 20:35:48 +00:00
|
|
|
|
|
|
|
<!ENTITY HELLOWORLD SYSTEM "helloworld.sgml">
|
2000-08-19 16:36:24 +00:00
|
|
|
<!ENTITY FACTORIES SYSTEM "factories.sgml">
|
2000-08-22 21:18:18 +00:00
|
|
|
<!ENTITY HELLOWORLD2 SYSTEM "helloworld2.sgml">
|
|
|
|
|
|
|
|
<!ENTITY THREADS SYSTEM "threads.sgml">
|
|
|
|
<!ENTITY QUEUES SYSTEM "queues.sgml">
|
|
|
|
<!ENTITY COTHREADS SYSTEM "cothreads.sgml">
|
|
|
|
<!ENTITY DYNAMIC SYSTEM "dynamic.sgml">
|
|
|
|
<!ENTITY GHOSTPADS SYSTEM "ghostpads.sgml">
|
|
|
|
<!ENTITY TYPEDETECTION SYSTEM "typedetection.sgml">
|
|
|
|
<!ENTITY UTILITY SYSTEM "utility.sgml">
|
|
|
|
|
|
|
|
<!ENTITY XML SYSTEM "xml.sgml">
|
|
|
|
<!ENTITY PLUGINS SYSTEM "plugins.sgml">
|
|
|
|
<!ENTITY PROGRAMS SYSTEM "programs.sgml">
|
2000-09-13 19:04:55 +00:00
|
|
|
<!ENTITY COMPONENTS SYSTEM "components.sgml">
|
2000-08-16 21:38:57 +00:00
|
|
|
]>
|
|
|
|
|
|
|
|
<book id="GStreamer">
|
|
|
|
<bookinfo>
|
|
|
|
|
|
|
|
<authorgroup>
|
|
|
|
<author>
|
|
|
|
<firstname>Wim</firstname>
|
|
|
|
<surname>Taymans</surname>
|
|
|
|
<authorblurb>
|
|
|
|
<para>
|
|
|
|
<email>wim.taymans@chello.be</email>
|
|
|
|
</para>
|
|
|
|
</authorblurb>
|
|
|
|
</author>
|
|
|
|
</authorgroup>
|
|
|
|
|
|
|
|
<legalnotice>
|
|
|
|
<para>
|
|
|
|
This material may be distributed only subject to the terms and
|
|
|
|
conditions set forth in the Open Publication License, v1.0 or later (the
|
|
|
|
latest version is presently available at <ulink url="
|
|
|
|
http://www.opencontent.org/openpub/"
|
|
|
|
type="http">http://www.opencontent.org/openpub/</ulink> )
|
|
|
|
</para>
|
|
|
|
</legalnotice>
|
|
|
|
|
2000-09-09 16:36:10 +00:00
|
|
|
<title><application>GStreamer</application> Application Development Manual</title>
|
2000-08-16 21:38:57 +00:00
|
|
|
|
|
|
|
</bookinfo>
|
|
|
|
|
|
|
|
<!-- ############# Overview - part ############### -->
|
|
|
|
|
|
|
|
<part id="overview"><title>Overview</title>
|
|
|
|
<partintro>
|
|
|
|
<para>
|
2000-09-09 16:36:10 +00:00
|
|
|
The first chapter of the book gives you an overview of <application>GStreamer</application>
|
|
|
|
design goals. Chapter 2 rapidly covers the basics of <application>GStreamer</application>
|
2000-08-16 21:38:57 +00:00
|
|
|
programming. In chapter 3 we will move on to the examples.
|
2000-09-09 16:36:10 +00:00
|
|
|
Since <application>GStreamer</application> adheres to the GTK+ programming model, the reader is
|
2000-08-16 21:38:57 +00:00
|
|
|
assumed to understand the basics of GTK+.
|
|
|
|
For a gentle introduction to GTK+, you may wish to read the <emphasis>GTK+
|
|
|
|
Tutorial</emphasis> or Eric Harlow's book <emphasis>Developing Linux
|
|
|
|
Applications with GTK+ and GDK</emphasis>.
|
|
|
|
</para>
|
|
|
|
</partintro>
|
|
|
|
|
|
|
|
<!-- ############ Introduction - chapter ############# -->
|
|
|
|
&INTRO;
|
|
|
|
|
|
|
|
&MOTIVATION;
|
|
|
|
|
|
|
|
&GOALS;
|
|
|
|
</part>
|
|
|
|
|
|
|
|
<!-- ############ Basic concepts - part ############# -->
|
|
|
|
|
|
|
|
<part id="basic-concepts"><title>Basic concepts</title>
|
|
|
|
<partintro>
|
|
|
|
<para>
|
2000-09-09 16:36:10 +00:00
|
|
|
We will first describe the basics of the <application>GStreamer</application> programming by
|
2000-08-16 21:38:57 +00:00
|
|
|
introducing the different objects needed to create a media pipeline.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
We will use a visual representation of these objects so that we can
|
|
|
|
visualize the more complex pipelines you will learn to build later on.
|
|
|
|
</para>
|
|
|
|
</partintro>
|
|
|
|
|
|
|
|
<!-- ############ Basic concepts - chapter ############# -->
|
|
|
|
&ELEMENTS;
|
|
|
|
|
|
|
|
&CONNECTIONS;
|
|
|
|
|
|
|
|
&BINS;
|
|
|
|
|
|
|
|
&BUFFERS;
|
|
|
|
|
|
|
|
&STATES;
|
|
|
|
</part>
|
|
|
|
<!-- ############ Building Apps - part ############# -->
|
|
|
|
|
|
|
|
<part id="build-app"><title>Building an application</title>
|
|
|
|
|
|
|
|
<partintro>
|
|
|
|
<para>
|
|
|
|
With the basic concepts out of the way, you're ready to start building a
|
2000-09-09 16:36:10 +00:00
|
|
|
full-scale <application>GStreamer</application> application.
|
2000-08-18 20:35:48 +00:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
We assume the reader is familiar with GTK+/GNOME programming.
|
2000-08-16 21:38:57 +00:00
|
|
|
</para>
|
|
|
|
</partintro>
|
|
|
|
|
2000-08-18 20:35:48 +00:00
|
|
|
&HELLOWORLD;
|
|
|
|
|
2000-08-19 16:36:24 +00:00
|
|
|
&FACTORIES;
|
|
|
|
|
2000-08-22 21:18:18 +00:00
|
|
|
&HELLOWORLD2;
|
2000-08-16 21:38:57 +00:00
|
|
|
</part>
|
|
|
|
|
|
|
|
<!-- ############ Advanced GStreamer - part ############# -->
|
|
|
|
|
2000-09-09 16:36:10 +00:00
|
|
|
<part id="advanced"><title>Advanced <application>GStreamer</application> concepts</title>
|
2000-08-16 21:38:57 +00:00
|
|
|
|
|
|
|
<partintro>
|
|
|
|
<para>
|
2000-09-09 16:36:10 +00:00
|
|
|
In this part we will cover the more advanced features of <application>GStreamer</application>.
|
2000-08-22 21:18:18 +00:00
|
|
|
With the basics you learned in the prevous part you should be
|
|
|
|
able to create a 'simple' pipeline. If you want more control over
|
|
|
|
the media types and the pipeline you should use the more
|
2000-09-09 16:36:10 +00:00
|
|
|
low-level features of <application>GStreamer</application>.
|
2000-08-16 21:38:57 +00:00
|
|
|
</para>
|
|
|
|
</partintro>
|
|
|
|
|
2000-08-22 21:18:18 +00:00
|
|
|
&THREADS;
|
|
|
|
|
|
|
|
&QUEUES;
|
|
|
|
|
|
|
|
&COTHREADS;
|
|
|
|
|
|
|
|
&DYNAMIC;
|
|
|
|
|
|
|
|
&GHOSTPADS;
|
|
|
|
|
|
|
|
&TYPEDETECTION;
|
|
|
|
|
|
|
|
&UTILITY;
|
2000-08-16 21:38:57 +00:00
|
|
|
</part>
|
|
|
|
|
|
|
|
<!-- ############ XML in GStreamer - part ############# -->
|
|
|
|
|
2000-09-09 16:36:10 +00:00
|
|
|
<part id="xml-gstreamer"><title>XML in <application>GStreamer</application></title>
|
2000-08-16 21:38:57 +00:00
|
|
|
|
|
|
|
<partintro>
|
|
|
|
<para>
|
2000-09-09 16:36:10 +00:00
|
|
|
<application>GStreamer</application> has the posibility to externalize the pipelines
|
2000-08-22 21:18:18 +00:00
|
|
|
you create using an XML format. You can load a previously
|
|
|
|
created pipeline by loading the XML file.
|
2000-08-16 21:38:57 +00:00
|
|
|
</para>
|
|
|
|
</partintro>
|
|
|
|
|
2000-08-22 21:18:18 +00:00
|
|
|
&XML;
|
2000-08-16 21:38:57 +00:00
|
|
|
</part>
|
|
|
|
|
|
|
|
<!-- ############ XML in GStreamer - part ############# -->
|
|
|
|
|
2000-09-09 16:36:10 +00:00
|
|
|
<part id="plugins"><title>plugin development in <application>GStreamer</application></title>
|
2000-08-16 21:38:57 +00:00
|
|
|
|
|
|
|
<partintro>
|
|
|
|
<para>
|
2000-11-20 19:04:32 +00:00
|
|
|
In this part we will describe how you can create a new plugin
|
2000-09-09 16:36:10 +00:00
|
|
|
to be used in <application>GStreamer</application>.
|
2000-08-16 21:38:57 +00:00
|
|
|
</para>
|
|
|
|
</partintro>
|
|
|
|
|
2000-08-22 21:18:18 +00:00
|
|
|
&PLUGINS;
|
2000-08-16 21:38:57 +00:00
|
|
|
</part>
|
|
|
|
|
|
|
|
<!-- ############ Appendices - part ############# -->
|
|
|
|
|
|
|
|
<part id="appendices">
|
|
|
|
<title>Appendices</title>
|
|
|
|
|
|
|
|
<partintro>
|
|
|
|
<para>
|
2000-09-09 16:36:10 +00:00
|
|
|
<application>GStreamer</application> comes prepackaged with a few programs.
|
2000-08-16 21:38:57 +00:00
|
|
|
</para>
|
|
|
|
</partintro>
|
2000-08-22 21:18:18 +00:00
|
|
|
|
|
|
|
&PROGRAMS;
|
|
|
|
|
2000-09-13 19:04:55 +00:00
|
|
|
&COMPONENTS;
|
|
|
|
|
2000-08-16 21:38:57 +00:00
|
|
|
</part>
|
|
|
|
</book>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|