diff --git a/docs/fwg/Makefile.am b/docs/fwg/Makefile.am
index eaedbefef7..bf3d21e695 100644
--- a/docs/fwg/Makefile.am
+++ b/docs/fwg/Makefile.am
@@ -1,7 +1,10 @@
manualname = gst-filter-writers-guide
htmlname = index.html
-sgml_files = gst-filter-writers-guide.sgml
+sgml_files = gst-filter-writers-guide.sgml \
+ titlepage.sgml \
+ intro.sgml \
+ concepts.sgml
fig_files =
eps_files =
diff --git a/docs/fwg/concepts.sgml b/docs/fwg/concepts.sgml
new file mode 100644
index 0000000000..b50e9e8b4f
--- /dev/null
+++ b/docs/fwg/concepts.sgml
@@ -0,0 +1,82 @@
+
+ Plugins
+
+ Extensions to GStreamer can be made using a plugin mechanism. This is
+ used extensively in GStreamer even if only the standard package is
+ being used: a few very basic functions reside in the core library, and
+ all others are in a standard set of plugins.
+
+
+ Plugins are only loaded when needed: a plugin registry is used to
+ store the details of the plugins so that it is not neccessary to load
+ all plugins to determine which are needed.
+ This registry needs to be updated when a new plugin is added to the
+ system: see the gstreamer-register utility and the
+ documentation in the GStreamer Application Development
+ Manual for more details.
+
+
+ User extensions to GStreamer can be installed in the main plugin
+ directory, and will immediately be available for use in applications.
+ gstreamer-register should be run to update
+ the repository: but the system will work correctly even if it hasn't
+ been - it will just load the correct plugin faster.
+
+
+ User specific plugin directories and registries will be available in future
+ versions of GStreamer.
+
+
+
+
+ Elements
+
+ Elements are at the core of GStreamer. Without elements, GStreamer is just
+ a bunch of pipe fittings with nothing to connect. A large number of
+ elements (filters, sources and sinks) ship with GStreamer, but extra
+ elements can also be written.
+
+
+ An element may be constructed in several different ways, but all must
+ conform to the same basic rules. A simple filter may be built with the
+ FilterFactory, where the only code that need be written is the actual
+ filter code. A more complex filter, or a source or sink, will need to be
+ written out fully for complete access to the features and performance
+ possible with GStreamer.
+
+
+ The implementation of a new element will be contained in a plugin:
+ a single plugin may contain the implementation of several elements, or
+ just a single one.
+
+
+
+
+ Buffers
+
+
+
+
+
+ Scheduling
+
+
+
+
+
+ Chain vs Loop Elements
+
+
+
+
+
+ Typing and Properties
+
+
+
+
+
+ Metadata
+
+
+
diff --git a/docs/fwg/gst-filter-writers-guide.sgml b/docs/fwg/gst-filter-writers-guide.sgml
index 5a2d2e39ef..c09af4e613 100644
--- a/docs/fwg/gst-filter-writers-guide.sgml
+++ b/docs/fwg/gst-filter-writers-guide.sgml
@@ -2,11 +2,8 @@
-
-
-
-
-
+
+
]>
@@ -14,9 +11,13 @@
- Overview
+ Introduction
+ GStreamer is a framework for creating
+ streaming media applications. It is extremely powerful and versatile,
+ and this versatility stems in part from its modularity, and its ability
+ to incorporate new modules seamlessly into its framework.
This document describes how to extend the capabilities of
GStreamer by creating new plugins.
@@ -40,34 +41,14 @@
Basic concepts
- Filters are at the core of what GStreamer is. Without filters,
- GStreamer is just a bunch of pipe fittings with nothing to
- connect. A large number of filters (known as elements) ship with
- GStreamer, but they are only capable of so much. If you wish to
- extend it beyond these standard capabilities, you must write
- filters.
-
-
- A filter may be constructed in several different ways, but all must
- conform to the same basic rules. A simple filter may be built
- with the FilterFactory, where the only code that need be written
- is the actual filter code. A more complex filter may need to be
- written out fully for complete access to the features and
- performance possible with GStreamer. This guide will explain all
- the steps necessary for both methods.
+ This section introduces the basic concepts required to understand the
+ issues involved in extending GStreamer
+
- &ELEMENTPADS;
-
- &BUFFERS;
-
- &CHAINVSLOOP;
-
- &SCHEDULING;
-
- &TYPING;
+ &CONCEPTS;
diff --git a/docs/fwg/intro.sgml b/docs/fwg/intro.sgml
index 7a0d280dab..6c2883c406 100644
--- a/docs/fwg/intro.sgml
+++ b/docs/fwg/intro.sgml
@@ -1,56 +1,52 @@
-
- Introduction
+
+ Do I care?
- GStreamer is a framework for creating
- streaming media applications. It is extremely powerful and versatile,
- and this versatility stems in part from its modularity, and its ability
- to incorporate new modules seamlessly into its framework.
+ This guide explains how to write new modules for GStreamer. It is
+ relevant to:
+
+
+
+
+ Anyone who wants to add support for new input and output
+ devices, often called sources and sinks. For example,
+ adding the ability to write to a new video output system
+ could be done by writing an appropriate sink plugin.
+
+
+
+
+ Anyone who wants to add support for new ways of processing
+ data in GStreamer, often called
+ filters. For example, a new data format converter could be
+ created.
+
+
+
+
+ Anyone who wants to extend GStreamer in
+ any way: you need to have an understanding of how the plugin system
+ works before you can understand the constraints it places on the
+ rest of the code. And you might be surprised at how much can be
+ done with plugins.
+
+
+
+
+ This guide is not relevant to you if you only want to use the existing
+ functionality of GStreamer, or use an application which uses GStreamer.
+ You lot can go away. Shoo... (You might find the GStreamer
+ Application Development Manual helpful though.)
+
+
+
+
+ Preliminary reading
+
+ The reader should be familiar with the basic workings of
+ GStreamer. For a gentle introduction to
+ GStreamer, you may wish to read the GStreamer Application
+ Development Manual. Since GStreamer
+ adheres to the GTK+ programming model, the reader is also assumed to
+ understand the basics of GTK+.
-
-
- Do I care?
-
- This guide explains how to write new modules for GStreamer. It is
- relevant to:
-
-
- Anyone who wants to add support for new input and output
- devices, often called sources and sinks. For example,
- adding the ability to write to a new video output system
- could be done by writing an appropriate sink plugin.
-
-
- Anyone who wants to add support for new ways of processing
- data in GStreamer, often called
- filters. For example, a new data format converter could be
- created.
-
-
- Anyone who wants to extend GStreamer in
- any way: you need to have an understanding of how the plugin system
- works before you can understand the constraints it places on the
- rest of the code. And you might be surprised at how much can be
- done with plugins.
-
-
-
-
- This guide is not relevant to you if you only want to use the existing
- functionality of GStreamer, or use an application which uses GStreamer.
- You lot can go away. Shoo... (You might find the GStreamer
- Application Development Manual helpful though.)
-
-
-
-
- Preliminary reading
-
- The reader should be familiar with the basic workings of
- GStreamer. For a gentle introduction to
- GStreamer, you may wish to read the GStreamer Application
- Development Manual. Since
- GStreamer adheres to the GTK+ programming
- model, the reader is also assumed to understand the basics of GTK+.
-
-