GStreamer Application Development Manual (0.8.9)

Wim Taymans

Steve Baker

Andy Wingo

Ronald S. Bultje

This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http://www.opencontent.org/opl.shtml).


Table of Contents
I. Overview
1. Introduction
1.1. What is GStreamer?
1.2. Structure of this Manual
2. Motivation & Goals
2.1. Current problems
2.2. The design goals
3. Foundations
3.1. Elements
3.2. Bins and pipelines
3.3. Pads
II. Basic Concepts
4. Initializing GStreamer
4.1. Simple initialization
4.2. The popt interface
5. Elements
5.1. What are elements?
5.2. Creating a GstElement
5.3. Using an element as a GObject
5.4. More about element factories
5.5. Linking elements
5.6. Element States
6. Bins
6.1. What are bins
6.2. Creating a bin
6.3. Custom bins
7. Pads and capabilities
7.1. Pads
7.2. Capabilities of a pad
7.3. What capabilities are used for
7.4. Ghost pads
8. Buffers and Events
8.1. Buffers
8.2. Events
9. Your first application
9.1. Hello world
9.2. Compiling and Running helloworld.c
9.3. Conclusion
III. Advanced GStreamer concepts
10. Position tracking and seeking
10.1. Querying: getting the position or length of a stream
10.2. Events: seeking (and more)
11. Metadata
11.1. Stream information
11.2. Tag reading
11.3. Tag writing
12. Interfaces
12.1. The Mixer interface
12.2. The Tuner interface
12.3. The Color Balance interface
12.4. The Property Probe interface
12.5. The X Overlay interface
13. Clocks in GStreamer
14. Dynamic Parameters
14.1. Getting Started
14.2. Creating and Attaching Dynamic Parameters
14.3. Changing Dynamic Parameter Values
14.4. Different Types of Dynamic Parameter
15. Threads
15.1. When would you want to use a thread?
15.2. Constraints placed on the pipeline by the GstThread
15.3. A threaded example application
16. Scheduling
16.1. Managing elements and data throughput
17. Autoplugging
17.1. MIME-types as a way to identity streams
17.2. Media stream type detection
17.3. Plugging together dynamic pipelines
18. Pipeline manipulation
18.1. Data probes
18.2. Manually adding or removing data from/to a pipeline
18.3. Embedding static elements in your application
IV. Higher-level interfaces for GStreamer applications
19. Components
19.1. Playbin
19.2. Decodebin
19.3. Spider
19.4. GstPlay
19.5. GstEditor
20. XML in GStreamer
20.1. Turning GstElements into XML
20.2. Loading a GstElement from an XML file
20.3. Adding custom XML tags into the core XML data
V. Appendices
21. Things to check when writing an application
21.1. Good programming habits
21.2. Debugging
21.3. Conversion plugins
21.4. Utility applications provided with GStreamer
22. Integration
22.1. Linux and UNIX-like operating systems
22.2. GNOME desktop
22.3. KDE desktop
22.4. OS X
22.5. Windows
23. Licensing advisory
23.1. How to license the applications you build with GStreamer
24. Windows support
24.1. Building GStreamer under Win32
24.2. Installation on the system
25. Quotes from the Developers
List of Figures
5-1. Visualisation of a source element
5-2. Visualisation of a filter element
5-3. Visualisation of a filter element with more than one output pad
5-4. Visualisation of a sink element
5-5. Visualisation of three linked elements
6-1. Visualisation of a bin with some elements in it
7-1. Visualisation of a GstBin element without ghost pads
7-2. Visualisation of a GstBin element with a ghost pad
9-1. The "hello world" pipeline
15-1. A thread
15-2. a two-threaded decoder with a queue
17-1. The Hello world pipeline with MIME types