2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
4 <!ENTITY % magic-entities SYSTEM "magic">
7 <!ENTITY INTRO SYSTEM "intro.xml">
8 <!ENTITY MOTIVATION SYSTEM "motivation.xml">
9 <!ENTITY GOALS SYSTEM "goals.xml">
11 <!ENTITY INIT SYSTEM "init.xml">
12 <!ENTITY ELEMENTS SYSTEM "elements.xml">
13 <!ENTITY PADS SYSTEM "pads.xml">
14 <!ENTITY LINKS SYSTEM "links.xml">
15 <!ENTITY BINS SYSTEM "bins.xml">
16 <!ENTITY BUFFERS SYSTEM "buffers.xml">
17 <!ENTITY STATES SYSTEM "states.xml">
19 <!ENTITY HELLOWORLD SYSTEM "helloworld.xml">
20 <!ENTITY FACTORIES SYSTEM "factories.xml">
21 <!ENTITY AUTOPLUGGING SYSTEM "autoplugging.xml">
22 <!ENTITY HELLOWORLD2 SYSTEM "helloworld2.xml">
24 <!ENTITY THREADS SYSTEM "threads.xml">
25 <!ENTITY QUEUES SYSTEM "queues.xml">
26 <!ENTITY COTHREADS SYSTEM "cothreads.xml">
27 <!ENTITY SCHEDULERS SYSTEM "schedulers.xml">
28 <!ENTITY CLOCKS SYSTEM "clocks.xml">
29 <!ENTITY DYNAMIC SYSTEM "dynamic.xml">
30 <!ENTITY TYPEDETECTION SYSTEM "typedetection.xml">
31 <!ENTITY UTILITY SYSTEM "utility.xml">
32 <!ENTITY DPARAMS SYSTEM "dparams-app.xml">
34 <!ENTITY XML SYSTEM "xml.xml">
35 <!ENTITY PLUGINS SYSTEM "plugins.xml">
36 <!ENTITY DEBUGGING SYSTEM "debugging.xml">
37 <!ENTITY PROGRAMS SYSTEM "programs.xml">
38 <!ENTITY COMPONENTS SYSTEM "components.xml">
39 <!ENTITY GNOME SYSTEM "gnome.xml">
40 <!ENTITY QUOTES SYSTEM "quotes.xml">
48 <firstname>Wim</firstname>
49 <surname>Taymans</surname>
52 <email>wim.taymans@chello.be</email>
57 <firstname>Steve</firstname>
58 <surname>Baker</surname>
61 <email>stevebaker_org@yahoo.co.uk</email>
66 <firstname>Andy</firstname>
67 <surname>Wingo</surname>
70 <email>wingo@pobox.com</email>
76 <legalnotice id="legalnotice">
78 This material may be distributed only subject to the terms and
79 conditions set forth in the Open Publication License, v1.0 or later (the
80 latest version is presently available at <ulink url="
81 http://www.opencontent.org/openpub/"
82 type="http">http://www.opencontent.org/openpub/</ulink> )
86 <title><application>GStreamer</application> Application Development Manual</title>
90 <!-- ############# Overview - part ############### -->
92 <part id="overview"><title>Overview</title>
95 <xref linkend="overview"/> gives you an overview of
96 <application>GStreamer</application> design goals.
98 <xref linkend="basic-concepts"/> rapidly covers the basics of
99 <application>GStreamer</application> programming.
101 In <xref linkend="build-app"/> we will move on to the
102 examples. Since <application>GStreamer</application> uses <ulink
103 url="http://developer.gnome.org/arch/gtk/glib.html" type="http">GLib
104 2.0</ulink>, the reader is assumed to understand the basics of the
105 <ulink url="http://developer.gnome.org/doc/API/2.0/gobject/index.html"
106 type="http">GObject object model</ulink>.
108 For a gentle introduction to this system, you may wish to read the
109 <emphasis><ulink url="http://www.gtk.org/tutorial/" type="http">GTK+
110 Tutorial</ulink></emphasis> or Eric Harlow's book <emphasis>Developing
111 Linux Applications with GTK+ and GDK</emphasis>.
116 <!-- ############ Introduction - chapter ############# -->
124 <!-- ############ Basic concepts - part ############# -->
126 <part id="basic-concepts"><title>Basic concepts</title>
129 We will first describe the basics of
130 <application>GStreamer</application> programming by introducing the
131 different objects needed to create a media pipeline.
134 We will use a visual representation of these objects so that we can
135 visualize the more complex pipelines you will learn to build later on.
139 <!-- ############ Basic concepts - chapter ############# -->
157 <!-- ############ Building Apps - part ############# -->
159 <part id="build-app"><title>Building an application</title>
163 With the basic concepts out of the way, you're ready to start building a
164 full-scale <application>GStreamer</application> application.
167 We assume the reader is familiar with GTK+/GNOME programming.
177 <!-- ############ Advanced GStreamer - part ############# -->
179 <part id="advanced"><title>Advanced <application>GStreamer</application> concepts</title>
183 In this part we will cover the more advanced features of <application>GStreamer</application>.
184 With the basics you learned in the prevous part you should be
185 able to create a 'simple' pipeline. If you want more control over
186 the media types and the pipeline you should use the more
187 low-level features of <application>GStreamer</application>.
212 <!-- ############ XML in GStreamer - part ############# -->
214 <part id="xml-gstreamer"><title>XML in <application>GStreamer</application></title>
218 <application>GStreamer</application> has the possibility to serialize the pipelines you
219 create using an XML format. You can load a previously created pipeline by loading the XML
228 <!-- ############ Appendices - part ############# -->
230 <part id="appendices">
231 <title>Appendices</title>
235 <application>GStreamer</application> comes prepackaged with a few
236 programs, and some useful debugging options.