2001-12-15 23:13:04 +00:00
|
|
|
<?xml version='1.0'?>
|
2003-10-08 14:34:09 +00:00
|
|
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
|
|
|
|
<!ENTITY % image-entities SYSTEM "image.entities">
|
|
|
|
%image-entities;
|
2003-10-08 18:21:41 +00:00
|
|
|
<!ENTITY % version-entities SYSTEM "version.entities">
|
|
|
|
%version-entities;
|
2000-08-16 21:38:57 +00:00
|
|
|
|
2003-12-29 14:15:02 +00:00
|
|
|
<!-- Part 1: Overview -->
|
2001-12-15 23:13:04 +00:00
|
|
|
<!ENTITY INTRO SYSTEM "intro.xml">
|
|
|
|
<!ENTITY MOTIVATION SYSTEM "motivation.xml">
|
|
|
|
<!ENTITY GOALS SYSTEM "goals.xml">
|
2000-08-18 20:35:48 +00:00
|
|
|
|
2003-12-29 14:15:02 +00:00
|
|
|
<!-- Part 2: Basic Concepts -->
|
2001-12-15 23:13:04 +00:00
|
|
|
<!ENTITY ELEMENTS SYSTEM "elements.xml">
|
|
|
|
<!ENTITY PADS SYSTEM "pads.xml">
|
2003-01-24 18:08:39 +00:00
|
|
|
<!ENTITY LINKS SYSTEM "links.xml">
|
2001-12-15 23:13:04 +00:00
|
|
|
<!ENTITY BINS SYSTEM "bins.xml">
|
|
|
|
<!ENTITY BUFFERS SYSTEM "buffers.xml">
|
|
|
|
<!ENTITY STATES SYSTEM "states.xml">
|
2003-12-29 14:15:02 +00:00
|
|
|
<!ENTITY PLUGINS SYSTEM "plugins.xml">
|
2000-08-22 21:18:18 +00:00
|
|
|
|
2003-12-29 14:15:02 +00:00
|
|
|
<!-- Part 3: Basic API -->
|
|
|
|
<!ENTITY INIT-API SYSTEM "init-api.xml">
|
|
|
|
<!ENTITY ELEMENTS-API SYSTEM "elements-api.xml">
|
|
|
|
<!ENTITY PADS-API SYSTEM "pads-api.xml">
|
|
|
|
<!ENTITY LINKS-API SYSTEM "links-api.xml">
|
|
|
|
<!ENTITY BINS-API SYSTEM "bins-api.xml">
|
|
|
|
<!ENTITY BUFFERS-API SYSTEM "buffers-api.xml">
|
|
|
|
<!ENTITY STATES-API SYSTEM "states-api.xml">
|
|
|
|
<!ENTITY PLUGINS-API SYSTEM "plugins-api.xml">
|
|
|
|
|
|
|
|
<!-- Part 4: Building An Application -->
|
2001-12-15 23:13:04 +00:00
|
|
|
<!ENTITY HELLOWORLD SYSTEM "helloworld.xml">
|
|
|
|
<!ENTITY FACTORIES SYSTEM "factories.xml">
|
|
|
|
<!ENTITY AUTOPLUGGING SYSTEM "autoplugging.xml">
|
|
|
|
<!ENTITY HELLOWORLD2 SYSTEM "helloworld2.xml">
|
2000-08-22 21:18:18 +00:00
|
|
|
|
2003-12-29 14:15:02 +00:00
|
|
|
<!-- Part 5: Advanced Concepts -->
|
2001-12-15 23:13:04 +00:00
|
|
|
<!ENTITY THREADS SYSTEM "threads.xml">
|
|
|
|
<!ENTITY QUEUES SYSTEM "queues.xml">
|
|
|
|
<!ENTITY COTHREADS SYSTEM "cothreads.xml">
|
2002-03-31 15:28:51 +00:00
|
|
|
<!ENTITY SCHEDULERS SYSTEM "schedulers.xml">
|
|
|
|
<!ENTITY CLOCKS SYSTEM "clocks.xml">
|
2001-12-15 23:13:04 +00:00
|
|
|
<!ENTITY DYNAMIC SYSTEM "dynamic.xml">
|
|
|
|
<!ENTITY TYPEDETECTION SYSTEM "typedetection.xml">
|
|
|
|
<!ENTITY UTILITY SYSTEM "utility.xml">
|
2002-03-24 14:06:02 +00:00
|
|
|
<!ENTITY DPARAMS SYSTEM "dparams-app.xml">
|
2001-12-15 23:13:04 +00:00
|
|
|
|
|
|
|
<!ENTITY XML SYSTEM "xml.xml">
|
|
|
|
<!ENTITY DEBUGGING SYSTEM "debugging.xml">
|
|
|
|
<!ENTITY PROGRAMS SYSTEM "programs.xml">
|
|
|
|
<!ENTITY COMPONENTS SYSTEM "components.xml">
|
2002-09-14 12:48:06 +00:00
|
|
|
<!ENTITY GNOME SYSTEM "gnome.xml">
|
2004-07-06 13:23:42 +00:00
|
|
|
<!ENTITY WIN32 SYSTEM "win32.xml">
|
2001-12-15 23:13:04 +00:00
|
|
|
<!ENTITY QUOTES SYSTEM "quotes.xml">
|
2000-08-16 21:38:57 +00:00
|
|
|
]>
|
|
|
|
|
2001-02-16 12:14:30 +00:00
|
|
|
<book id="index">
|
2000-08-16 21:38:57 +00:00
|
|
|
<bookinfo>
|
|
|
|
|
|
|
|
<authorgroup>
|
|
|
|
<author>
|
|
|
|
<firstname>Wim</firstname>
|
|
|
|
<surname>Taymans</surname>
|
|
|
|
<authorblurb>
|
|
|
|
<para>
|
|
|
|
<email>wim.taymans@chello.be</email>
|
|
|
|
</para>
|
|
|
|
</authorblurb>
|
|
|
|
</author>
|
2002-03-24 14:06:02 +00:00
|
|
|
<author>
|
|
|
|
<firstname>Steve</firstname>
|
|
|
|
<surname>Baker</surname>
|
|
|
|
<authorblurb>
|
|
|
|
<para>
|
|
|
|
<email>stevebaker_org@yahoo.co.uk</email>
|
|
|
|
</para>
|
|
|
|
</authorblurb>
|
|
|
|
</author>
|
2002-04-07 23:32:16 +00:00
|
|
|
<author>
|
|
|
|
<firstname>Andy</firstname>
|
|
|
|
<surname>Wingo</surname>
|
|
|
|
<authorblurb>
|
|
|
|
<para>
|
|
|
|
<email>wingo@pobox.com</email>
|
|
|
|
</para>
|
|
|
|
</authorblurb>
|
|
|
|
</author>
|
2000-08-16 21:38:57 +00:00
|
|
|
</authorgroup>
|
|
|
|
|
2004-01-28 15:08:17 +00:00
|
|
|
<legalnotice id="misc-legalnotice">
|
2000-08-16 21:38:57 +00:00
|
|
|
<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="
|
2004-05-01 20:00:44 +00:00
|
|
|
http://www.opencontent.org/opl.shtml"
|
|
|
|
type="http">http://www.opencontent.org/opl.shtml</ulink> )
|
2000-08-16 21:38:57 +00:00
|
|
|
</para>
|
|
|
|
</legalnotice>
|
|
|
|
|
2004-02-12 13:04:02 +00:00
|
|
|
<title><application>GStreamer</application> Application Development Manual (&GST_VERSION;)</title>
|
2000-08-16 21:38:57 +00:00
|
|
|
|
|
|
|
</bookinfo>
|
|
|
|
|
|
|
|
<!-- ############# Overview - part ############### -->
|
|
|
|
|
2004-01-28 15:08:17 +00:00
|
|
|
<part id="part-overview"><title>Overview</title>
|
2000-08-16 21:38:57 +00:00
|
|
|
<partintro>
|
2002-04-07 23:32:16 +00:00
|
|
|
<para>
|
2004-01-28 15:08:17 +00:00
|
|
|
<xref linkend="part-overview"/> gives you an overview of
|
2002-09-06 15:53:06 +00:00
|
|
|
<application>GStreamer</application> design goals.
|
|
|
|
|
2004-01-28 15:08:17 +00:00
|
|
|
<xref linkend="part-basic-concepts"/> rapidly covers the basics of
|
2002-09-06 15:53:06 +00:00
|
|
|
<application>GStreamer</application> programming.
|
|
|
|
|
2004-01-28 15:08:17 +00:00
|
|
|
In <xref linkend="part-build-app"/> we will move on to the
|
2002-09-06 15:53:06 +00:00
|
|
|
examples. Since <application>GStreamer</application> uses <ulink
|
|
|
|
url="http://developer.gnome.org/arch/gtk/glib.html" type="http">GLib
|
|
|
|
2.0</ulink>, the reader is assumed to understand the basics of the
|
|
|
|
<ulink url="http://developer.gnome.org/doc/API/2.0/gobject/index.html"
|
|
|
|
type="http">GObject object model</ulink>.
|
|
|
|
|
|
|
|
For a gentle introduction to this system, you may wish to read the
|
|
|
|
<emphasis><ulink url="http://www.gtk.org/tutorial/" type="http">GTK+
|
|
|
|
Tutorial</ulink></emphasis> or Eric Harlow's book <emphasis>Developing
|
|
|
|
Linux Applications with GTK+ and GDK</emphasis>.
|
|
|
|
|
2000-08-16 21:38:57 +00:00
|
|
|
</para>
|
|
|
|
</partintro>
|
|
|
|
|
|
|
|
<!-- ############ Introduction - chapter ############# -->
|
|
|
|
&INTRO;
|
|
|
|
|
|
|
|
&MOTIVATION;
|
|
|
|
|
|
|
|
&GOALS;
|
|
|
|
</part>
|
|
|
|
|
|
|
|
<!-- ############ Basic concepts - part ############# -->
|
|
|
|
|
2004-01-28 15:08:17 +00:00
|
|
|
<part id="part-basic-concepts"><title>Basic Concepts</title>
|
2000-08-16 21:38:57 +00:00
|
|
|
<partintro>
|
|
|
|
<para>
|
2002-09-06 15:53:06 +00:00
|
|
|
We will first describe the basics of
|
|
|
|
<application>GStreamer</application> programming by introducing the
|
|
|
|
different objects needed to create a media pipeline.
|
2000-08-16 21:38:57 +00:00
|
|
|
</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>
|
|
|
|
|
|
|
|
&ELEMENTS;
|
|
|
|
|
2001-01-04 23:35:50 +00:00
|
|
|
&PADS;
|
|
|
|
|
2003-10-09 12:42:49 +00:00
|
|
|
&PLUGINS;
|
|
|
|
|
2003-01-24 18:08:39 +00:00
|
|
|
&LINKS;
|
2000-08-16 21:38:57 +00:00
|
|
|
|
|
|
|
&BINS;
|
|
|
|
|
|
|
|
&BUFFERS;
|
|
|
|
|
|
|
|
&STATES;
|
2003-12-29 14:15:02 +00:00
|
|
|
</part>
|
|
|
|
|
|
|
|
<!-- ############ Basic API - part ############# -->
|
2004-01-28 15:08:17 +00:00
|
|
|
<part id="part-basic-api"><title>Basic API</title>
|
2003-12-29 14:15:02 +00:00
|
|
|
&INIT-API;
|
|
|
|
|
|
|
|
&ELEMENTS-API;
|
|
|
|
|
|
|
|
&PADS-API;
|
2001-01-06 02:35:17 +00:00
|
|
|
|
2003-12-29 14:15:02 +00:00
|
|
|
&PLUGINS-API;
|
|
|
|
|
|
|
|
&LINKS-API;
|
|
|
|
|
|
|
|
&BINS-API;
|
|
|
|
|
|
|
|
&BUFFERS-API;
|
|
|
|
|
|
|
|
&STATES-API;
|
|
|
|
|
|
|
|
|
2000-08-16 21:38:57 +00:00
|
|
|
</part>
|
2003-12-29 14:15:02 +00:00
|
|
|
|
2000-08-16 21:38:57 +00:00
|
|
|
<!-- ############ Building Apps - part ############# -->
|
|
|
|
|
2004-01-28 15:08:17 +00:00
|
|
|
<part id="part-build-app"><title>Building an application</title>
|
2000-08-16 21:38:57 +00:00
|
|
|
|
|
|
|
<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-16 21:38:57 +00:00
|
|
|
</part>
|
|
|
|
|
|
|
|
<!-- ############ Advanced GStreamer - part ############# -->
|
|
|
|
|
2004-01-28 15:08:17 +00:00
|
|
|
<part id="part-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;
|
|
|
|
|
2002-03-31 15:28:51 +00:00
|
|
|
&SCHEDULERS;
|
|
|
|
|
|
|
|
&CLOCKS;
|
|
|
|
|
2000-08-22 21:18:18 +00:00
|
|
|
&DYNAMIC;
|
|
|
|
|
|
|
|
&TYPEDETECTION;
|
|
|
|
|
2001-07-07 14:17:22 +00:00
|
|
|
&AUTOPLUGGING;
|
|
|
|
|
|
|
|
&HELLOWORLD2;
|
2002-03-24 14:06:02 +00:00
|
|
|
|
|
|
|
&DPARAMS;
|
2000-08-16 21:38:57 +00:00
|
|
|
</part>
|
|
|
|
|
|
|
|
<!-- ############ XML in GStreamer - part ############# -->
|
|
|
|
|
2004-01-28 15:08:17 +00:00
|
|
|
<part id="part-xml-gstreamer"><title>XML in <application>GStreamer</application></title>
|
2000-08-16 21:38:57 +00:00
|
|
|
|
|
|
|
<partintro>
|
|
|
|
<para>
|
2002-04-07 23:32:16 +00:00
|
|
|
<application>GStreamer</application> has the possibility to serialize the pipelines you
|
|
|
|
create using an XML format. You can load a previously created pipeline by loading the XML
|
|
|
|
file.
|
|
|
|
</para>
|
2000-08-16 21:38:57 +00:00
|
|
|
</partintro>
|
|
|
|
|
2000-08-22 21:18:18 +00:00
|
|
|
&XML;
|
2000-08-16 21:38:57 +00:00
|
|
|
</part>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ############ Appendices - part ############# -->
|
|
|
|
|
2004-01-28 15:08:17 +00:00
|
|
|
<part id="part-appendices">
|
2000-08-16 21:38:57 +00:00
|
|
|
<title>Appendices</title>
|
|
|
|
|
|
|
|
<partintro>
|
|
|
|
<para>
|
2002-09-08 21:17:16 +00:00
|
|
|
<application>GStreamer</application> comes prepackaged with a few
|
2002-09-14 14:13:34 +00:00
|
|
|
programs, and some useful debugging options.
|
2000-08-16 21:38:57 +00:00
|
|
|
</para>
|
|
|
|
</partintro>
|
2000-08-22 21:18:18 +00:00
|
|
|
|
2001-02-22 23:18:51 +00:00
|
|
|
&DEBUGGING;
|
|
|
|
|
2000-08-22 21:18:18 +00:00
|
|
|
&PROGRAMS;
|
|
|
|
|
2000-09-13 19:04:55 +00:00
|
|
|
&COMPONENTS;
|
|
|
|
|
2002-09-14 12:48:06 +00:00
|
|
|
&GNOME;
|
|
|
|
|
2004-07-06 13:23:42 +00:00
|
|
|
&WIN32;
|
|
|
|
|
2001-01-08 01:27:07 +00:00
|
|
|
"ES;
|
|
|
|
|
2000-08-16 21:38:57 +00:00
|
|
|
</part>
|
|
|
|
</book>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|