summaryrefslogtreecommitdiff
path: root/manual-index.md
blob: 2b5ad5e5c2bb91e342ed619eb4ba8bf62316a155 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
---
title: Application Development Manual
short-description: Complete walkthrough for building an application using GStreamer
...

# Application Development Manual

## Foreword

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
so you can develop applications based on it. The first
chapters will focus on development of a simple audio player, with much
effort going into helping you understand GStreamer concepts. Later
chapters will go into more advanced topics related to media playback,
but also at other forms of media processing (capture, editing, etc.).

## Introduction

### Who should read this manual?

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,
we suggest the [Plugin Writers Guide](pwg-index.md).

Also check out the other documentation available on the [GStreamer web
site](http://gstreamer.freedesktop.org/documentation/).

### Preliminary reading

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

  - GObject referecing/dereferencing

  - glib memory management

  - glib signals and callbacks

  - glib main loop

### Structure of this manual

To help you navigate through this guide, it is divided into several
large parts. Each part addresses a particular broad topic concerning
GStreamer appliction development. The parts of this guide are laid out
in the following order:

[About GStreamer](manual-introduction.md) gives you an overview of
GStreamer, it's design principles and foundations.

[Building an Application](manual-building.md) 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](manual-advanced.md), we will move on to
advanced subjects which make GStreamer stand out of its competitors. We
will discuss 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 their API, but primarily to give a
deeper insight in solving application programming problems with
GStreamer and understanding their concepts.

Next, in [Higher-level interfaces for GStreamer
applications](manual-highlevel.md), we will go into higher-level
programming APIs for GStreamer. You don't exactly 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 XML, playbin and autopluggers.

Finally in [Appendices](manual-appendices.md), you will find some random
information on integrating with GNOME, KDE, OS X or Windows, some
debugging help and general tips to improve and simplify GStreamer
programming.