GStreamer Application Development Manual (0.11.0.2)

Wim Taymans

Steve Baker

Andy Wingo

Ronald S. Bultje

Stefan Kost

Legal Notice
Table of Contents
Foreword
Introduction
Who should read this manual?
Preliminary reading
Structure of this manual
I. About GStreamer
What is GStreamer?
Design principles
Clean and powerful
Object oriented
Extensible
Allow binary-only plugins
High performance
Clean core/plugins separation
Provide a framework for codec experimentation
Foundations
Elements
Pads
Bins and pipelines
Communication
II. Building an Application
Initializing GStreamer
Simple initialization
The GOption interface
Elements
What are elements?
Creating a GstElement
Using an element as a GObject
More about element factories
Linking elements
Element States
Bins
What are bins
Creating a bin
Custom bins
Bins manage states of their children
Bus
How to use a bus
Message types
Pads and capabilities
Pads
Capabilities of a pad
What capabilities are used for
Ghost pads
Buffers and Events
Buffers
Events
Your first application
Hello world
Compiling and Running helloworld.c
Conclusion
III. Advanced GStreamer concepts
Position tracking and seeking
Querying: getting the position or length of a stream
Events: seeking (and more)
Metadata
Metadata reading
Tag writing
Interfaces
The URI interface
The Mixer interface
The Tuner interface
The Color Balance interface
The Property Probe interface
The X Overlay interface
Clocks in GStreamer
Clock providers
Clock slaves
Dynamic Controllable Parameters
Getting Started
Setting up parameter control
Threads
When would you want to force a thread?
Scheduling in GStreamer
Autoplugging
MIME-types as a way to identify streams
Media stream type detection
Plugging together dynamic pipelines
Pipeline manipulation
Data probing
Manually adding or removing data from/to a pipeline
Embedding static elements in your application
IV. Higher-level interfaces for GStreamer applications
Components
Playbin
Decodebin
XML in GStreamer (deprecated)
V. Appendices
Things to check when writing an application
Good programming habits
Debugging
Conversion plugins
Utility applications provided with GStreamer
Porting 0.8 applications to 0.10
List of changes
Integration
Linux and UNIX-like operating systems
GNOME desktop
KDE desktop
OS X
Windows
Licensing advisory
How to license the applications you build with GStreamer
Quotes from the Developers