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
+
+
+
+
+