[gst-devel] GStreamer Filter Writer's Guide
Erik Walthinsen
omega at cse.ogi.edu
Sat Dec 2 11:06:55 CET 2000
I'm writing a proposed outline for the aforementioned document (outline
attached and in CVS soon). I'd like to have this written before the 0.1.0
release at the end of the year. If there's someone out there that would
like to tackle this project (a pretty easy one, actually, just some decent
writing needed), that'd make our lives much easier.
I'd like to make sure we have a number of the fundamental documents like
this and the Application Development Manual, plus a basic pass at the API
docs written before we release. The API docs should be *correct* if not
complete, that's something that needs work given the changes we're doing
now. The App Dev manual is looking good, just needs a bit more fleshing
out towards the end.
And of course, we're going to need editors. Anyone who wants to start now
should head to the main home page (gstreamer.sourceforge.net), and go
check out the Documentaton section. Any issues you find there should be
filed as bugs for the moment.
I've set up tasks 22608, 22609, and 22610 in the docs subproject to track
these.
Erik Walthinsen <omega at cse.ogi.edu> - Staff Programmer @ OGI
Quasar project - http://www.cse.ogi.edu/DISC/projects/quasar/
Video4Linux Two drivers and stuff - http://www.cse.ogi.edu/~omega/v4l2/
__
/ \ SEUL: Simple End-User Linux - http://www.seul.org/
| | M E G A Helping Linux become THE choice
_\ /_ for the home or office user
-------------- next part --------------
GStreamer Filter Writer's Guide
===============================
Outline:
Basic concepts
Chain vs loop elements
Scheduling
Buffers
Typing and Properties
Metadata
Building our first filter
Constructing the boilerplate
Doing it the easy way with FilterFactory
(NOTE: FilterFactory doesn't exist yet)
Doing it the hard way with G[tk]Object
An identity filter
Building an object with pads
Attaching functions
The chain function
The plugin_init function
Registering the types
Registering the filter
Building a simple test application
Initialization
Instantiating the plugins
(NOTE: we really should have a debugging Sink)
Connecting them
Running the pipeline
Loop-based Elements
How scheduling works, aka pushing and pulling
How a loopfunc works, aka pulling and pushing
Adding a second output
Identity is now a tee
Modifying the test application
Types and Properties
Building a simple format for testing
A simple MIME type
Type properties
Typefind functions and autopluggin
Buffers and Metadata
Anatomy of a Buffer
Refcounts and mutability
Metadata
How Properties work efficiently
Metadata mutability
(FIXME: this is an unsolved problem)
Sources and Sinks
Writing a source
Pull vs loop based
Region pulling
(NOTE: somewhere explain how filters use this)
Writing a sink
Gee, that was easy
State management
What are states?
Mangaging filter state
More information about the gstreamer-devel
mailing list