gstreamer/docs/manual/gstreamer-manual.xml

255 lines
6.4 KiB
XML
Raw Normal View History

<?xml version='1.0'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY % magic-entities SYSTEM "magic">
%magic-entities;
<!ENTITY INTRO SYSTEM "intro.xml">
<!ENTITY MOTIVATION SYSTEM "motivation.xml">
<!ENTITY GOALS SYSTEM "goals.xml">
<!ENTITY INIT SYSTEM "init.xml">
<!ENTITY ELEMENTS SYSTEM "elements.xml">
<!ENTITY PADS SYSTEM "pads.xml">
<!ENTITY CONNECTIONS SYSTEM "connections.xml">
<!ENTITY BINS SYSTEM "bins.xml">
<!ENTITY BUFFERS SYSTEM "buffers.xml">
<!ENTITY STATES SYSTEM "states.xml">
<!ENTITY HELLOWORLD SYSTEM "helloworld.xml">
<!ENTITY FACTORIES SYSTEM "factories.xml">
<!ENTITY AUTOPLUGGING SYSTEM "autoplugging.xml">
<!ENTITY HELLOWORLD2 SYSTEM "helloworld2.xml">
<!ENTITY THREADS SYSTEM "threads.xml">
<!ENTITY QUEUES SYSTEM "queues.xml">
<!ENTITY COTHREADS SYSTEM "cothreads.xml">
<!ENTITY SCHEDULERS SYSTEM "schedulers.xml">
<!ENTITY CLOCKS SYSTEM "clocks.xml">
<!ENTITY DYNAMIC SYSTEM "dynamic.xml">
<!ENTITY TYPEDETECTION SYSTEM "typedetection.xml">
<!ENTITY UTILITY SYSTEM "utility.xml">
<!ENTITY DPARAMS SYSTEM "dparams-app.xml">
<!ENTITY XML SYSTEM "xml.xml">
<!ENTITY PLUGINS SYSTEM "plugins.xml">
<!ENTITY DEBUGGING SYSTEM "debugging.xml">
<!ENTITY PROGRAMS SYSTEM "programs.xml">
<!ENTITY COMPONENTS SYSTEM "components.xml">
<!ENTITY QUOTES SYSTEM "quotes.xml">
]>
<book id="index">
<bookinfo>
<authorgroup>
<author>
<firstname>Wim</firstname>
<surname>Taymans</surname>
<authorblurb>
<para>
<email>wim.taymans@chello.be</email>
</para>
</authorblurb>
</author>
<author>
<firstname>Steve</firstname>
<surname>Baker</surname>
<authorblurb>
<para>
<email>stevebaker_org@yahoo.co.uk</email>
</para>
</authorblurb>
</author>
<author>
<firstname>Andy</firstname>
<surname>Wingo</surname>
<authorblurb>
<para>
<email>wingo@pobox.com</email>
</para>
</authorblurb>
</author>
</authorgroup>
<legalnotice id="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>
<title><application>GStreamer</application> Application Development Manual</title>
</bookinfo>
<!-- ############# Overview - part ############### -->
<part id="overview"><title>Overview</title>
<partintro>
<para>
<xref linkend="overview"/> gives you an overview of
<application>GStreamer</application> design goals.
<xref linkend="basic-concepts"/> rapidly covers the basics of
<application>GStreamer</application> programming.
In <xref linkend="build-app"/> we will move on to the
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>.
</para>
</partintro>
<!-- ############ Introduction - chapter ############# -->
&INTRO;
&MOTIVATION;
&GOALS;
</part>
<!-- ############ Basic concepts - part ############# -->
<part id="basic-concepts"><title>Basic concepts</title>
<partintro>
<para>
We will first describe the basics of
<application>GStreamer</application> programming by 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 ############# -->
&INIT;
&ELEMENTS;
&PLUGINS;
&PADS;
&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
full-scale <application>GStreamer</application> application.
</para>
<para>
We assume the reader is familiar with GTK+/GNOME programming.
</para>
</partintro>
&HELLOWORLD;
&FACTORIES;
</part>
<!-- ############ Advanced GStreamer - part ############# -->
<part id="advanced"><title>Advanced <application>GStreamer</application> concepts</title>
<partintro>
<para>
In this part we will cover the more advanced features of <application>GStreamer</application>.
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
low-level features of <application>GStreamer</application>.
</para>
</partintro>
&THREADS;
&QUEUES;
&COTHREADS;
&SCHEDULERS;
&CLOCKS;
&DYNAMIC;
&TYPEDETECTION;
&AUTOPLUGGING;
&HELLOWORLD2;
&DPARAMS;
</part>
<!-- ############ XML in GStreamer - part ############# -->
<part id="xml-gstreamer"><title>XML in <application>GStreamer</application></title>
<partintro>
<para>
<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>
</partintro>
&XML;
</part>
<!-- ############ Appendices - part ############# -->
<part id="appendices">
<title>Appendices</title>
<partintro>
<para>
<application>GStreamer</application> comes prepackaged with a few programs.
and some usefull debugging options.
</para>
</partintro>
&DEBUGGING;
&PROGRAMS;
&COMPONENTS;
&QUOTES;
</part>
</book>