index.md 3.66 KB
Newer Older
1
---
Mathieu Duponchelle's avatar
Mathieu Duponchelle committed
2
title: Application Development Manual
3
4
5
short-description: Complete walkthrough for building an application using GStreamer
...

Mathieu Duponchelle's avatar
Mathieu Duponchelle committed
6
# Application Development Manual
7

8
## Foreword
9
10
11
12
13
14
15
16

GStreamer is an extremely powerful and versatile framework for creating
streaming media applications. Many of the virtues of the GStreamer
framework come from its modularity: GStreamer can seamlessly incorporate
new plugin modules. But because modularity and power often come at a
cost of greater complexity, writing new applications is not always easy.

This guide is intended to help you understand the GStreamer framework
17
so you can develop applications based on it. The first
18
19
chapters will focus on development of a simple audio player, with much
effort going into helping you understand GStreamer concepts. Later
pfee's avatar
pfee committed
20
21
chapters will go into more advanced topics related to media playback and
other forms of media processing (capture, editing, etc.).
22

23
## Introduction
24

25
### Who should read this manual?
26
27
28
29

This book is about GStreamer from an application developer's point of
view; it describes how to write a GStreamer application using the
GStreamer libraries and tools. For an explanation about writing plugins,
30
we suggest the [Plugin Writer's Guide](plugin-development/index.md).
31

32
### Preliminary reading
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

In order to understand this manual, you need to have a basic
understanding of the *C language*.

Since GStreamer adheres to the GObject programming model, this guide
also assumes that you understand the basics of
[GObject](http://library.gnome.org/devel/gobject/stable/) and
[glib](http://library.gnome.org/devel/glib/stable/) programming.
Especially,

  - GObject instantiation

  - GObject properties (set/get)

  - GObject casting

pfee's avatar
pfee committed
49
  - GObject referencing/dereferencing
50
51
52
53
54
55
56

  - glib memory management

  - glib signals and callbacks

  - glib main loop

57
### Structure of this manual
58
59
60

To help you navigate through this guide, it is divided into several
large parts. Each part addresses a particular broad topic concerning
Gaurav Kalra's avatar
Gaurav Kalra committed
61
GStreamer application development. The parts of this guide are laid out
62
63
in the following order:

64
65
66
67
68
69
70
71
[About GStreamer][about] gives you an overview of GStreamer, its design
principles and foundations.

[Building an Application][app-building] covers the basics of GStreamer
application programming. At the end of this part, you should be able to
build your own audio player using GStreamer

In [Advanced GStreamer concepts][advanced], we will move on to advanced
pfee's avatar
pfee committed
72
subjects which make GStreamer stand out from its competitors. We will discuss
73
74
75
application-pipeline interaction using dynamic parameters and interfaces, we
will discuss threading and threaded pipelines, scheduling and clocks (and
synchronization). Most of those topics are not just there to introduce you to
pfee's avatar
pfee committed
76
their API, but primarily to give a deeper insight into solving application
77
78
79
programming problems with GStreamer and understanding their concepts.

Next, in [Higher-level interfaces for GStreamer applications][highlevel], we
pfee's avatar
pfee committed
80
will go into higher-level programming APIs for GStreamer. You don't
81
82
83
84
85
need to know all the details from the previous parts to understand this, but
you will need to understand basic GStreamer concepts nevertheless. We will,
amongst others, discuss playbin and autopluggers.

Finally in [Appendices][appendix], you will find some random
86
87
88
information on integrating with GNOME, KDE, OS X or Windows, some
debugging help and general tips to improve and simplify GStreamer
programming.
89
90

[about]: application-development/introduction/index.md
91
[app-building]: application-development/basics/index.md
92
93
94
[advanced]: application-development/advanced/index.md
[highlevel]: application-development/highlevel/index.md
[appendix]: application-development/appendix/index.md