GStreamer Plugin Writer's Guide (0.8.3)

Richard John Boulton

Erik Walthinsen

Steve Baker

Leif Johnson

Ronald S. Bultje

Legal Notice
Table of Contents
I. Introduction
Preface
Who Should Read This Guide?
Preliminary Reading
Structure of This Guide
Basic Concepts
Elements and Plugins
Pads
Data, Buffers and Events
Mimetypes and Properties
II. Building a Plugin
Constructing the Boilerplate
Getting the GStreamer Plugin Templates
!!! FIXME !!! Using the Project Stamp
Examining the Basic Code
GstElementDetails
GstStaticPadTemplate
Constructor Functions
The plugin_init function
Specifying the pads
The link function
The getcaps function
Explicit caps
The chain function
What are states?
Mangaging filter state
Adding Arguments
Signals
Building a Test Application
Creating a Filter with a Filter Factory
III. Advanced Filter Concepts
How scheduling works
The Basic Scheduler
The Optimal Scheduler
How a loopfunc works
Multi-Input Elements
The Bytestream Object
Adding a second output
Modifying the test application
Types and Properties
Building a Simple Format for Testing
Typefind Functions and Autoplugging
List of Defined Types
Request and Sometimes pads
Sometimes pads
Request pads
Clocking
Supporting Dynamic Parameters
Comparing Dynamic Parameters with GObject Properties
Getting Started
Defining Parameter Specificiations
The Data Processing Loop
MIDI
Interfaces
How to Implement Interfaces
Mixer Interface
Tuner Interface
Color Balance Interface
Property Probe Interface
Profile Interface
X Overlay Interface
Navigation Interface
Tagging (Metadata and Streaminfo)
Reading Tags from Streams
Writing Tags to Streams
Events: Seeking, Navigation and More
Downstream events
Upstream events
All Events Together
IV. Other Element Types
Writing a Source
The get()-function
Events, querying and converting
Time, clocking and synchronization
Using special memory
Writing a Sink
Data processing, events, synchronization and clocks
Special memory
Writing a 1-to-N Element, Demuxer or Parser
Demuxer Caps Negotiation
Data processing and downstream events
Parsing versus interpreting
Simple seeking and indexes
Writing a N-to-1 Element or Demuxer
The Data Loop Function
Events in the Loop Function
Negotiation
Markup vs. data processing
Writing a N-to-N element
Writing an Autoplugger
Writing a Manager
V. Appendices
Things to check when writing an element
Things to check when writing a filter
Things to check when writing a source or sink