GStreamer
Plugin Writer's Guide (1.0.6)
Richard John Boulton
Erik Walthinsen
Steve Baker
Leif Johnson
Ronald S. Bultje
Stefan Kost
Tim-Philipp Müller
Wim Taymans
Legal Notice
Table of Contents
I.
Introduction
Preface
What is
GStreamer
?
Who Should Read This Guide?
Preliminary Reading
Structure of This Guide
Foundations
Elements and Plugins
Pads
GstMiniObject, Buffers and Events
Media types and Properties
II.
Building a Plugin
Constructing the Boilerplate
Getting the GStreamer Plugin Templates
Using the Project Stamp
Examining the Basic Code
Element metadata
GstStaticPadTemplate
Constructor Functions
The plugin_init function
Specifying the pads
The chain function
The event function
The query function
What are states?
Managing filter state
Adding Properties
Signals
Building a Test Application
III.
Advanced Filter Concepts
Request and Sometimes pads
Sometimes pads
Request pads
Different scheduling modes
The pad activation stage
Pads driving the pipeline
Providing random access
Caps negotiation
Caps negotiation basics
Caps negotiation use cases
Upstream caps (re)negotiation
Implementing a CAPS query function
Pull-mode Caps negotiation
Memory allocation
GstMemory
GstBuffer
GstMeta
GstBufferPool
GST_QUERY_ALLOCATION
Types and Properties
Building a Simple Format for Testing
Typefind Functions and Autoplugging
List of Defined Types
Events: Seeking, Navigation and More
Downstream events
Upstream events
All Events Together
Clocking
Clocks
Clock running-time
Buffer running-time
Obligations of each element.
Quality Of Service (QoS)
Measuring QoS
Handling QoS
Throttling
QoS Messages
Supporting Dynamic Parameters
Getting Started
The Data Processing Loop
Interfaces
How to Implement Interfaces
URI interface
Color Balance Interface
Video Overlay Interface
Navigation Interface
Tagging (Metadata and Streaminfo)
Overview
Reading Tags from Streams
Writing Tags to Streams
IV.
Creating special element types
Pre-made base classes
Writing a sink
Writing a source
Writing a transformation element
Writing a Demuxer or Parser
Writing a N-to-1 Element or Muxer
Writing a Manager
V.
Appendices
Things to check when writing an element
About states
Debugging
Querying, events and the like
Testing your element
Porting 0.8 plug-ins to 0.10
List of changes
Porting 0.10 plug-ins to 1.0
GStreamer licensing
How to license the code you write for
GStreamer
Next >>>
Introduction