2016-06-04 06:55:52 +00:00
|
|
|
---
|
2016-06-04 07:00:52 +00:00
|
|
|
title: Application Development Manual
|
2016-06-04 06:55:52 +00:00
|
|
|
short-description: Complete walkthrough for building an application using GStreamer
|
|
|
|
...
|
|
|
|
|
2016-06-04 07:00:52 +00:00
|
|
|
# Application Development Manual
|
2016-06-04 06:55:52 +00:00
|
|
|
|
|
|
|
# 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
|
|
|
|
(version 1.9.0.1) 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.
|
|
|
|
|