Update theme submodule
[platform/upstream/gstreamer.git] / manual-index.md
1 ---
2 title: Application Development Manual
3 short-description: Complete walkthrough for building an application using GStreamer
4 ...
5
6 # Application Development Manual
7
8 ## Foreword
9
10 GStreamer is an extremely powerful and versatile framework for creating
11 streaming media applications. Many of the virtues of the GStreamer
12 framework come from its modularity: GStreamer can seamlessly incorporate
13 new plugin modules. But because modularity and power often come at a
14 cost of greater complexity, writing new applications is not always easy.
15
16 This guide is intended to help you understand the GStreamer framework
17 so you can develop applications based on it. The first
18 chapters will focus on development of a simple audio player, with much
19 effort going into helping you understand GStreamer concepts. Later
20 chapters will go into more advanced topics related to media playback,
21 but also at other forms of media processing (capture, editing, etc.).
22
23 ## Introduction
24
25 ### Who should read this manual?
26
27 This book is about GStreamer from an application developer's point of
28 view; it describes how to write a GStreamer application using the
29 GStreamer libraries and tools. For an explanation about writing plugins,
30 we suggest the [Plugin Writers Guide](pwg-index.md).
31
32 Also check out the other documentation available on the [GStreamer web
33 site](http://gstreamer.freedesktop.org/documentation/).
34
35 ### Preliminary reading
36
37 In order to understand this manual, you need to have a basic
38 understanding of the *C language*.
39
40 Since GStreamer adheres to the GObject programming model, this guide
41 also assumes that you understand the basics of
42 [GObject](http://library.gnome.org/devel/gobject/stable/) and
43 [glib](http://library.gnome.org/devel/glib/stable/) programming.
44 Especially,
45
46   - GObject instantiation
47
48   - GObject properties (set/get)
49
50   - GObject casting
51
52   - GObject referecing/dereferencing
53
54   - glib memory management
55
56   - glib signals and callbacks
57
58   - glib main loop
59
60 ### Structure of this manual
61
62 To help you navigate through this guide, it is divided into several
63 large parts. Each part addresses a particular broad topic concerning
64 GStreamer appliction development. The parts of this guide are laid out
65 in the following order:
66
67 [About GStreamer](manual-introduction.md) gives you an overview of
68 GStreamer, it's design principles and foundations.
69
70 [Building an Application](manual-building.md) covers the basics of
71 GStreamer application programming. At the end of this part, you should
72 be able to build your own audio player using GStreamer
73
74 In [Advanced GStreamer concepts](manual-advanced.md), we will move on to
75 advanced subjects which make GStreamer stand out of its competitors. We
76 will discuss application-pipeline interaction using dynamic parameters
77 and interfaces, we will discuss threading and threaded pipelines,
78 scheduling and clocks (and synchronization). Most of those topics are
79 not just there to introduce you to their API, but primarily to give a
80 deeper insight in solving application programming problems with
81 GStreamer and understanding their concepts.
82
83 Next, in [Higher-level interfaces for GStreamer
84 applications](manual-highlevel.md), we will go into higher-level
85 programming APIs for GStreamer. You don't exactly need to know all the
86 details from the previous parts to understand this, but you will need to
87 understand basic GStreamer concepts nevertheless. We will, amongst
88 others, discuss XML, playbin and autopluggers.
89
90 Finally in [Appendices](manual-appendices.md), you will find some random
91 information on integrating with GNOME, KDE, OS X or Windows, some
92 debugging help and general tips to improve and simplify GStreamer
93 programming.
94