2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
4 <!ENTITY % image-entities SYSTEM "image.entities">
6 <!ENTITY % version-entities SYSTEM "version.entities">
8 <!ENTITY % url-entities SYSTEM "url.entities">
14 The code for this example is automatically extracted from
15 the documentation and built under <filename>examples/manual</filename>
16 in the GStreamer tarball.
21 <!ENTITY TITLEPAGE SYSTEM "titlepage.xml">
23 <!-- Part 1: Overview -->
24 <!ENTITY INTRO SYSTEM "intro-preface.xml">
26 <!ENTITY GSTREAMER SYSTEM "intro-gstreamer.xml">
27 <!ENTITY MOTIVATION SYSTEM "intro-motivation.xml">
28 <!ENTITY CONCEPTS SYSTEM "intro-basics.xml">
30 <!-- Part 2: Basic Concepts -->
31 <!ENTITY INIT SYSTEM "basics-init.xml">
32 <!ENTITY ELEMENTS SYSTEM "basics-elements.xml">
33 <!ENTITY BINS SYSTEM "basics-bins.xml">
34 <!ENTITY BUS SYSTEM "basics-bus.xml">
35 <!ENTITY PADS SYSTEM "basics-pads.xml">
36 <!ENTITY DATA SYSTEM "basics-data.xml">
37 <!ENTITY HELLOWORLD SYSTEM "basics-helloworld.xml">
39 <!-- Part 3: Advanced Concepts -->
40 <!ENTITY QUERYEVENTS SYSTEM "advanced-position.xml">
41 <!ENTITY METADATA SYSTEM "advanced-metadata.xml">
42 <!ENTITY INTERFACES SYSTEM "advanced-interfaces.xml">
43 <!ENTITY CLOCKS SYSTEM "advanced-clocks.xml">
44 <!ENTITY DPARAMS SYSTEM "advanced-dparams.xml">
45 <!ENTITY THREADS SYSTEM "advanced-threads.xml">
46 <!ENTITY AUTOPLUGGING SYSTEM "advanced-autoplugging.xml">
47 <!ENTITY DATAACCESS SYSTEM "advanced-dataaccess.xml">
49 <!-- Part 4: Higher-level interfaces -->
50 <!ENTITY XML SYSTEM "highlevel-xml.xml">
51 <!ENTITY COMPONENTS SYSTEM "highlevel-components.xml">
54 <!ENTITY CHECKLIST SYSTEM "appendix-checklist.xml">
55 <!ENTITY PORTING SYSTEM "appendix-porting.xml">
56 <!ENTITY INTEGRATION SYSTEM "appendix-integration.xml">
57 <!ENTITY LICENSING SYSTEM "appendix-licensing.xml">
58 <!ENTITY QUOTES SYSTEM "appendix-quotes.xml">
60 <!ENTITY GStreamer "<application>GStreamer</application>">
61 <!ENTITY GstPWG "<emphasis>GStreamer Plugin Writer's Guide</emphasis>">
67 <!-- ############# Introduction ############### -->
69 <preface><title>Foreword</title>
70 <para><!-- synchronize with PWG -->
71 &GStreamer; is an extremely powerful and versatile framework for
72 creating streaming media applications. Many of the virtues of the
73 &GStreamer; framework come from its modularity: &GStreamer; can
74 seamlessly incorporate new plugin modules. But because modularity
75 and power often come at a cost of greater complexity, writing new
76 applications is not always easy.
79 This guide is intended to help you understand the &GStreamer;
80 framework (version &GST_VERSION;) so you can develop applications
81 based on it. The first chapters will focus on development of a
82 simple audio player, with much effort going into helping you
83 understand &GStreamer; concepts. Later chapters will go into
84 more advanced topics related to media playback, but also at
85 other forms of media processing (capture, editing, etc.).
90 <preface><title>Introduction</title>
96 <!-- ############# Overview - part ############### -->
98 <part id="part-introduction">
99 <title>About GStreamer</title>
102 This part gives you an overview of the technologies described in
113 <!-- ############ Basic concepts - part ############# -->
115 <part id="part-building">
116 <title>Building an Application</title>
119 In these chapters, we will discuss the basic concepts of &GStreamer;
120 and the most-used objects, such as elements, pads and buffers. We
121 will use a visual representation of these objects so that we can
122 visualize the more complex pipelines you will learn to build later
123 on. You will get a first glance at the &GStreamer; API, which should
124 be enough for building elementary applications. Later on in this
125 part, you will also learn to build a basic command-line application.
128 Note that this part will give a look into the low-level API and
129 concepts of &GStreamer;. Once you're going to build applications,
130 you might want to use higher-level APIs. Those will be discussed
131 later on in this manual.
145 <!-- ############ Advanced GStreamer - part ############# -->
147 <part id="part-advanced">
148 <title>Advanced &GStreamer; concepts</title>
151 In this part we will cover the more advanced features of &GStreamer;.
152 With the basics you learned in the previous part you should be
153 able to create a <emphasis>simple</emphasis> application. However,
154 &GStreamer; provides much more candy than just the basics of playing
155 back audio files. In this chapter, you will learn more of the
156 low-level features and internals of &GStreamer;.
159 Some parts of this part will serve mostly as an explanation of
160 how &GStreamer; works internally; they are not actually needed for
161 actual application development. This includes chapters such as the
162 ones covering scheduling, autoplugging and synchronization. Other
163 chapters, however, discuss more advanced ways of
164 pipeline-application interaction, and can turn out to be very useful
165 for certain applications. This includes the chapters on metadata,
166 querying and events, interfaces, dynamic parameters and pipeline
182 <!-- ############ Higher-level APIs in GStreamer - part ############# -->
184 <part id="part-highlevel">
185 <title>Higher-level interfaces for &GStreamer; applications</title>
188 In the previous two parts, you have learned many of the internals
189 and their corresponding low-level interfaces into &GStreamer;
190 application programming. Many people will, however, not need so
191 much control (and as much code), but will prefer to use a standard
192 playback interface that does most of the difficult internals for
193 them. In this chapter, we will introduce you into the concept of
194 autopluggers, playback managing elements, XML-based pipelines and
195 other such things. Those higher-level interfaces are intended to
196 simplify &GStreamer;-based application programming. They do, however,
197 also reduce the flexibility. It is up to the application developer
198 to choose which interface he will want to use.
207 <!-- ############ Appendices - part ############# -->
209 <part id="part-appendices">
210 <title>Appendices</title>
213 By now, you've learned all about the internals of &GStreamer; and
214 application programming using the &GStreamer; framework. This part
215 will go into some random bits that are useful to know if you're
216 going to use &GStreamer; for serious application programming. It
217 will touch upon things related to integration with popular desktop
218 environments that we run on (GNOME, KDE, OS X, Windows), it will
219 shortly explain how applications included with &GStreamer; can help
220 making your life easier, and some information on debugging.
223 In addition, we also provide a porting guide which will explain
224 easily how to port &GStreamer;-0.8 applications to &GStreamer;-0.10.
230 * Debugging and error handling
231 - 'error' signal in pipelines
232 - checking return values and how to handle them
233 - using signals for pipeline states
236 * Desktop integration
240 . {v4l,v4l2,oss,alsa}src
242 . GConf ({video,audio}{src,sink})
243 . gnomevfssrc, gnomevfssink
245 . app examples (RB, Totem, gnome-media, ...)
248 . app examples (JuK, AmaroK)
251 . native video/audio sink