[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