GStreamer Application Development Manual (1.0.6)

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 Color Balance interface
The Video Overlay interface
Clocks and synchronization in GStreamer
Clock running-time
Buffer running-time
Buffer stream-time
Time overview
Clock providers
Latency
Buffering
Stream buffering
Download buffering
Timeshift buffering
Live buffering
Buffering strategies
Dynamic Controllable Parameters
Getting Started
Setting up parameter control
Threads
Scheduling in GStreamer
Configuring Threads in GStreamer
When would you want to force a thread?
Autoplugging
Media types as a way to identify streams
Media stream type detection
Dynamically autoplugging a pipeline
Pipeline manipulation
Using probes
Manually adding or removing data from/to a pipeline
Forcing a format
Dynamically changing the pipeline
IV. Higher-level interfaces for GStreamer applications
Playback Components
Playbin
Decodebin
URIDecodebin
Playsink
V. Appendices
Programs
gst-launch
gst-inspect
Compiling
Embedding static elements in your application
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
Porting 0.10 applications to 1.0
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