GStreamer Application Development Manual (0.8.5)

Wim Taymans

Steve Baker

Andy Wingo

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?
2. Motivation
2.1. Current problems
3. Goals
3.1. The design goals
II. Basic Concepts
4. Elements
4.1. What is an element ?
4.2. Types of elements
5. Pads
5.1. Types of pad
5.2. Capabilities of a pad
6. Plugins
7. Linking elements
8. Bins
9. Buffers
10. Element states
10.1. The different element states
10.2. The NULL state
10.3. The READY state
10.4. The PAUSED state
10.5. The PLAYING state
III. Basic API
11. Initializing GStreamer
11.1. The popt interface
12. Elements
12.1. Creating a GstElement
12.2. GstElement properties
12.3. GstElement signals
12.4. More about GstElementFactory
13. Pads
13.1. Types of pad
13.2. Capabilities of a pad
14. Plugins
15. Linking elements
15.1. Making simple links
15.2. Making filtered links
16. Bins
16.1. Creating a bin
16.2. Adding elements to a bin
16.3. Custom bins
16.4. Ghost pads
17. Buffers
18. Element states
18.1. Changing element state
IV. Building an application
19. Your first application
19.1. Hello world
19.2. Compiling helloworld.c
19.3. Conclusion
20. More on factories
20.1. The problems with the helloworld example
20.2. More on MIME Types
20.3. GStreamer types
20.4. Creating elements with the factory
20.5. GStreamer basic types
V. Advanced GStreamer concepts
21. Threads
21.1. Constraints placed on the pipeline by the GstThread
21.2. When would you want to use a thread?
22. Queues
23. Cothreads
23.1. Chain-based elements
23.2. Loop-based elements
24. Understanding schedulers
25. Clocks in GStreamer
26. Dynamic pipelines
27. Type Detection
28. Autoplugging
28.1. Using autoplugging
28.2. Using the GstAutoplugCache element
28.3. Another approach to autoplugging
29. Your second application
29.1. Autoplugging helloworld
30. Dynamic Parameters
30.1. Getting Started
30.2. Creating and Attaching Dynamic Parameters
30.3. Changing Dynamic Parameter Values
30.4. Different Types of Dynamic Parameter
VI. XML in GStreamer
31. XML in GStreamer
31.1. Turning GstElements into XML
31.2. Loading a GstElement from an XML file
31.3. Adding custom XML tags into the core XML data
VII. Appendices
32. Debugging
32.1. Command line options
32.2. Adding debugging to a plugin
33. Programs
33.1. gst-register
33.2. gst-launch
33.3. gst-inspect
34. Components
34.1. GstPlay
34.2. GstMediaPlay
34.3. GstEditor
35. GNOME integration
35.1. Command line options
36. Windows support
36.1. Building GStreamer under Win32
36.2. Installation on the system
37. Quotes from the Developers
List of Figures
4-1. Visualisation of a source element
4-2. Visualisation of a filter element
4-3. Visualisation of a filter element with more than one output pad
4-4. Visualisation of a sink element
7-1. Visualisation of three linked elements
8-1. Visualisation of a bin with some elements in it
16-1. Visualisation of a GstBin element without ghost pads
16-2. Visualisation of a GstBin element with a ghost pad
19-1. The "hello world" pipeline
20-1. The Hello world pipeline with MIME types
21-1. A thread
22-1. a two-threaded decoder with a queue