diff --git a/docs/fwg/.gitignore b/docs/fwg/.gitignore index 4267130bb2..c9012a5e02 100644 --- a/docs/fwg/.gitignore +++ b/docs/fwg/.gitignore @@ -3,11 +3,11 @@ Makefile.in *.bak .deps images -gst-filter-writers-guide -gst-filter-writers-guide.pdf -gst-filter-writers-guide.ps -gst-filter-writers-guide.dvi -gst-filter-writers-guide.tex -gst-filter-writers-guide.log -gst-filter-writers-guide.aux -gst-filter-writers-guide.junk +gst-plugin-writers-guide +gst-plugin-writers-guide.pdf +gst-plugin-writers-guide.ps +gst-plugin-writers-guide.dvi +gst-plugin-writers-guide.tex +gst-plugin-writers-guide.log +gst-plugin-writers-guide.aux +gst-plugin-writers-guide.junk diff --git a/docs/fwg/Makefile.am b/docs/fwg/Makefile.am index bf3d21e695..55b2ea93c7 100644 --- a/docs/fwg/Makefile.am +++ b/docs/fwg/Makefile.am @@ -1,7 +1,7 @@ -manualname = gst-filter-writers-guide +manualname = gst-plugin-writers-guide htmlname = index.html -sgml_files = gst-filter-writers-guide.sgml \ +sgml_files = gst-plugin-writers-guide.sgml \ titlepage.sgml \ intro.sgml \ concepts.sgml diff --git a/docs/fwg/gst-filter-writers-guide.sgml b/docs/fwg/gst-plugin-writers-guide.sgml similarity index 58% rename from docs/fwg/gst-filter-writers-guide.sgml rename to docs/fwg/gst-plugin-writers-guide.sgml index c09af4e613..c09ca77932 100644 --- a/docs/fwg/gst-filter-writers-guide.sgml +++ b/docs/fwg/gst-plugin-writers-guide.sgml @@ -4,12 +4,28 @@ + + + + + + + + + + + + + + + + ]> &TITLEPAGE; - + Introduction @@ -36,7 +52,7 @@ &INTRO; - + Basic concepts @@ -52,23 +68,21 @@ - - + + Building our first plugin + + + We are now have the neccessary concepts to build our first plugin. + We are going to build an element which has a single input pad and + a single output pad, and simply passes anything it reads on + the input pad through and out on the output pad. In a later + section we will convert this plugin into something less useless. + + + &FIRSTPLUGIN; -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) @@ -80,43 +94,118 @@ Building our first filter The plugin_init function Registering the types Registering the filter -Building a simple test application + + + + + Building a simple test application + + + + + + &TESTAPP; Initialization Instantiating the plugins (NOTE: we really should have a debugging Sink) Connecting them Running the pipeline -Loop-based Elements + + + + + Loop-based Elements + + + + + + &LOOPBASED; 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 + + + + + Types and Properties + + + + + + &TYPESNPROPS; Building a simple format for testing A simple MIME type Type properties - Typefind functions and autopluggin -Buffers and Metadata + Typefind functions and autoplugging + + + + + Buffers and Metadata + + + + + + &BUFFERS; Anatomy of a Buffer Refcounts and mutability Metadata How Properties work efficiently Metadata mutability (FIXME: this is an unsolved problem) -Sources and Sinks + + + + + Sources and Sinks + + + + + + &SRCNSINK; 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 + + + + + State management + + + + + + &STATEMANAGE; What are states? Mangaging filter state -Checklist + + + + + Checklist + + + + + + &CHECKLIST; Things to check when writing a filter Things to check when writing a source or sink + + + + +