new proggy I never checked in
[platform/upstream/gstreamer.git] / docs / manual / gstreamer-manual.xml
1 <?xml version='1.0'?>
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">
5 %magic-entities;
6
7 <!ENTITY INTRO SYSTEM "intro.xml">
8 <!ENTITY MOTIVATION SYSTEM "motivation.xml">
9 <!ENTITY GOALS SYSTEM "goals.xml">
10
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">
18
19 <!ENTITY HELLOWORLD SYSTEM "helloworld.xml">
20 <!ENTITY FACTORIES SYSTEM "factories.xml">
21 <!ENTITY AUTOPLUGGING SYSTEM "autoplugging.xml">
22 <!ENTITY HELLOWORLD2 SYSTEM "helloworld2.xml">
23
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">
33
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">
41 ]>
42
43 <book id="index">
44   <bookinfo>
45     
46     <authorgroup>
47       <author>
48         <firstname>Wim</firstname>
49         <surname>Taymans</surname>
50         <authorblurb>
51           <para>
52             <email>wim.taymans@chello.be</email>
53           </para>
54         </authorblurb>
55       </author>
56       <author>
57         <firstname>Steve</firstname>
58         <surname>Baker</surname>
59         <authorblurb>
60           <para>
61             <email>stevebaker_org@yahoo.co.uk</email>
62           </para>
63         </authorblurb>
64       </author>
65       <author>
66         <firstname>Andy</firstname>
67         <surname>Wingo</surname>
68         <authorblurb>
69           <para>
70             <email>wingo@pobox.com</email>
71           </para>
72         </authorblurb>
73       </author>
74     </authorgroup>
75
76     <legalnotice id="legalnotice">
77       <para>
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> )
83       </para>
84     </legalnotice>
85
86     <title><application>GStreamer</application> Application Development Manual</title>
87
88   </bookinfo>
89       
90 <!-- ############# Overview - part ############### -->
91
92   <part id="overview"><title>Overview</title>
93     <partintro>
94       <para>
95         <xref linkend="overview"/> gives you an overview of
96         <application>GStreamer</application> design goals.
97
98         <xref linkend="basic-concepts"/> rapidly covers the basics of
99         <application>GStreamer</application> programming.
100
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>.
107
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>.
112
113       </para>
114     </partintro>
115
116 <!-- ############ Introduction - chapter ############# -->
117       &INTRO;
118
119       &MOTIVATION;
120
121       &GOALS;
122   </part>
123
124 <!-- ############ Basic concepts - part ############# -->
125
126   <part id="basic-concepts"><title>Basic concepts</title>
127     <partintro>
128       <para> 
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.
132       </para>
133       <para> 
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.
136       </para>
137     </partintro>
138
139 <!-- ############ Basic concepts - chapter ############# -->
140       &INIT;
141
142       &ELEMENTS;
143
144       &PLUGINS;
145
146       &PADS;
147
148       &LINKS;
149
150       &BINS;
151
152       &BUFFERS;
153
154       &STATES;
155
156   </part>
157 <!-- ############ Building Apps - part ############# -->
158
159   <part id="build-app"><title>Building an application</title>
160
161     <partintro>
162       <para>
163         With the basic concepts out of the way, you're ready to start building a
164         full-scale <application>GStreamer</application> application. 
165       </para>
166       <para>
167         We assume the reader is familiar with GTK+/GNOME programming.
168       </para>
169     </partintro>
170
171       &HELLOWORLD;
172
173       &FACTORIES;
174
175   </part>
176
177 <!-- ############ Advanced GStreamer - part ############# -->
178
179   <part id="advanced"><title>Advanced <application>GStreamer</application> concepts</title>
180
181     <partintro>
182       <para>
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>.
188       </para>      
189     </partintro>
190
191       &THREADS;
192
193       &QUEUES;
194
195       &COTHREADS;
196
197       &SCHEDULERS;
198
199       &CLOCKS;
200
201       &DYNAMIC;
202
203       &TYPEDETECTION;
204
205       &AUTOPLUGGING;
206
207       &HELLOWORLD2;
208       
209       &DPARAMS;
210   </part>
211
212 <!-- ############ XML in GStreamer - part ############# -->
213
214   <part id="xml-gstreamer"><title>XML in <application>GStreamer</application></title>
215
216     <partintro>
217       <para>
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
220         file.
221       </para>
222     </partintro>
223
224       &XML;
225   </part>
226
227
228 <!-- ############ Appendices - part ############# -->
229
230   <part id="appendices">
231     <title>Appendices</title>
232
233     <partintro>
234       <para>
235         <application>GStreamer</application> comes prepackaged with a few
236         programs, and some useful debugging options.
237       </para>
238     </partintro>
239
240       &DEBUGGING;
241
242       &PROGRAMS;
243
244       &COMPONENTS;
245
246       &GNOME;
247
248       &QUOTES;
249
250   </part>
251 </book>
252
253
254
255
256
257