From e978887fca0af79b15ca5c2426188c1bcee0e8df Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Wed, 28 Jan 2004 15:08:17 +0000 Subject: [PATCH] fix manual id's Original commit message from CVS: fix manual id's --- ChangeLog | 41 +++++ docs/manual/advanced-autoplugging.xml | 18 +-- docs/manual/advanced-clocks.xml | 5 - docs/manual/advanced-dparams.xml | 10 +- docs/manual/advanced-schedulers.xml | 2 +- docs/manual/advanced-threads.xml | 12 +- docs/manual/appendix-checklist.xml | 6 +- docs/manual/appendix-debugging.xml | 6 +- docs/manual/appendix-gnome.xml | 2 +- docs/manual/appendix-integration.xml | 2 +- docs/manual/appendix-programs.xml | 8 +- docs/manual/appendix-quotes.xml | 2 +- docs/manual/autoplugging.xml | 8 +- docs/manual/basics-bins.xml | 49 ------ docs/manual/basics-data.xml | 2 +- docs/manual/basics-elements.xml | 30 ++-- docs/manual/basics-helloworld.xml | 10 +- docs/manual/basics-init.xml | 2 +- docs/manual/basics-pads.xml | 20 +-- docs/manual/basics-plugins.xml | 31 ---- docs/manual/bins-api.xml | 20 +-- docs/manual/bins.xml | 6 +- docs/manual/buffers-api.xml | 2 +- docs/manual/buffers.xml | 2 +- docs/manual/clocks.xml | 2 +- docs/manual/components.xml | 10 +- docs/manual/cothreads.xml | 6 +- docs/manual/debugging.xml | 6 +- docs/manual/dparams-app.xml | 10 +- docs/manual/dynamic.xml | 2 +- docs/manual/elements-api.xml | 16 +- docs/manual/elements.xml | 30 ++-- docs/manual/factories.xml | 18 +-- docs/manual/gnome.xml | 2 +- docs/manual/goals.xml | 18 +-- docs/manual/helloworld.xml | 10 +- docs/manual/helloworld2.xml | 2 +- docs/manual/highlevel-components.xml | 37 ----- docs/manual/highlevel-xml.xml | 283 ---------------------------------- docs/manual/init-api.xml | 2 +- docs/manual/intro-motivation.xml | 14 +- docs/manual/intro-preface.xml | 59 ------- docs/manual/intro.xml | 4 +- docs/manual/links-api.xml | 8 +- docs/manual/links.xml | 4 +- docs/manual/manual.xml | 22 +-- docs/manual/motivation.xml | 14 +- docs/manual/pads-api.xml | 20 +-- docs/manual/pads.xml | 20 +-- docs/manual/plugins-api.xml | 2 +- docs/manual/plugins.xml | 2 +- docs/manual/programs.xml | 8 +- docs/manual/queues.xml | 4 +- docs/manual/quotes.xml | 2 +- docs/manual/schedulers.xml | 2 +- docs/manual/states-api.xml | 4 +- docs/manual/states.xml | 14 +- docs/manual/threads.xml | 12 +- docs/manual/typedetection.xml | 2 +- docs/manual/xml.xml | 8 +- 60 files changed, 276 insertions(+), 699 deletions(-) delete mode 100644 docs/manual/advanced-clocks.xml delete mode 100644 docs/manual/basics-bins.xml delete mode 100644 docs/manual/basics-plugins.xml delete mode 100644 docs/manual/highlevel-components.xml delete mode 100644 docs/manual/highlevel-xml.xml delete mode 100644 docs/manual/intro-preface.xml diff --git a/ChangeLog b/ChangeLog index 442d184..23a765f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,46 @@ 2004-01-28 Thomas Vander Stichele + * docs/manual/autoplugging.xml: + * docs/manual/bins-api.xml: + * docs/manual/bins.xml: + * docs/manual/buffers-api.xml: + * docs/manual/buffers.xml: + * docs/manual/clocks.xml: + * docs/manual/components.xml: + * docs/manual/cothreads.xml: + * docs/manual/debugging.xml: + * docs/manual/dparams-app.xml: + * docs/manual/dynamic.xml: + * docs/manual/elements-api.xml: + * docs/manual/elements.xml: + * docs/manual/factories.xml: + * docs/manual/gnome.xml: + * docs/manual/goals.xml: + * docs/manual/helloworld.xml: + * docs/manual/helloworld2.xml: + * docs/manual/init-api.xml: + * docs/manual/intro.xml: + * docs/manual/links-api.xml: + * docs/manual/links.xml: + * docs/manual/manual.xml: + * docs/manual/motivation.xml: + * docs/manual/pads-api.xml: + * docs/manual/pads.xml: + * docs/manual/plugins-api.xml: + * docs/manual/plugins.xml: + * docs/manual/programs.xml: + * docs/manual/queues.xml: + * docs/manual/quotes.xml: + * docs/manual/schedulers.xml: + * docs/manual/states-api.xml: + * docs/manual/states.xml: + * docs/manual/threads.xml: + * docs/manual/typedetection.xml: + * docs/manual/xml.xml: + use chapter, part, section or misc as id starts for all bits + +2004-01-28 Thomas Vander Stichele + * docs/gst/gstreamer-sections.txt: Fix up TITLE of the sections diff --git a/docs/manual/advanced-autoplugging.xml b/docs/manual/advanced-autoplugging.xml index 91a7ffb..5965431 100644 --- a/docs/manual/advanced-autoplugging.xml +++ b/docs/manual/advanced-autoplugging.xml @@ -1,4 +1,4 @@ - + More on factories The small application we created in the previous chapter used the @@ -11,7 +11,7 @@ We will first explain the concepts involved before we move on to the reworked helloworld example using autoplugging. - + The problems with the helloworld example If we take a look at how the elements were created in the previous @@ -40,7 +40,7 @@ - + More on MIME Types GStreamer uses MIME types to identify the different types of data @@ -82,10 +82,10 @@ - shows the MIME types associated with + shows the MIME types associated with each pad from the "hello world" example. -
+
The Hello world pipeline with MIME types @@ -115,7 +115,7 @@ - + GStreamer types GStreamer assigns a unique number to all registered MIME types. @@ -204,12 +204,12 @@ struct _GstType { This function will return 0 if the extension was not known. - For more information, see . + For more information, see . - + Creating elements with the factory In the previous section we described how you could obtain @@ -232,7 +232,7 @@ struct _GstType { - + GStreamer basic types GStreamer only has two builtin types: diff --git a/docs/manual/advanced-clocks.xml b/docs/manual/advanced-clocks.xml deleted file mode 100644 index 0abe388..0000000 --- a/docs/manual/advanced-clocks.xml +++ /dev/null @@ -1,5 +0,0 @@ - - Clocks in GStreamer - - - diff --git a/docs/manual/advanced-dparams.xml b/docs/manual/advanced-dparams.xml index 22f5545..d7b1b3e 100644 --- a/docs/manual/advanced-dparams.xml +++ b/docs/manual/advanced-dparams.xml @@ -1,7 +1,7 @@ - + Dynamic Parameters - + Getting Started The Dynamic Parameters subsystem is contained within the @@ -31,7 +31,7 @@ - + Creating and Attaching Dynamic Parameters Once you have created your elements you can create and attach dparams to them. @@ -81,7 +81,7 @@ - + Changing Dynamic Parameter Values All interaction with dparams to actually set the dparam value is done through simple GObject properties. @@ -116,7 +116,7 @@ - + Different Types of Dynamic Parameter There are currently only two implementations of dparams so far. They are both for real-time use so diff --git a/docs/manual/advanced-schedulers.xml b/docs/manual/advanced-schedulers.xml index b86e72f..b31af1b 100644 --- a/docs/manual/advanced-schedulers.xml +++ b/docs/manual/advanced-schedulers.xml @@ -1,4 +1,4 @@ - + Understanding schedulers The scheduler is responsible for managing the plugins at runtime. Its diff --git a/docs/manual/advanced-threads.xml b/docs/manual/advanced-threads.xml index f11cd25..2f625ce 100644 --- a/docs/manual/advanced-threads.xml +++ b/docs/manual/advanced-threads.xml @@ -1,4 +1,4 @@ - + Threads GStreamer has support for multithreading through the use of @@ -37,7 +37,7 @@ itself. You never need to explicitly iterate a thread. - + Constraints placed on the pipeline by the GstThread Within the pipeline, everything is the same as in any other bin. The @@ -46,13 +46,13 @@ fundamentally buffer-oriented rather than byte-oriented, the natural solution to this problem is an element that can "buffer" the buffers between the threads, in a thread-safe fashion. This element is the - queue, described more fully in . It doesn't + queue, described more fully in . It doesn't matter if the queue is placed in the containing bin or in the thread itself, but it needs to be present on one side or the other to enable inter-thread communication. - + When would you want to use a thread? If you are writing a GUI application, making the top-level bin a thread will make your GUI @@ -63,9 +63,9 @@ an audio pipeline. - shows how a thread can be visualised. + shows how a thread can be visualised. -
+
A thread diff --git a/docs/manual/appendix-checklist.xml b/docs/manual/appendix-checklist.xml index feb7541..698d8da 100644 --- a/docs/manual/appendix-checklist.xml +++ b/docs/manual/appendix-checklist.xml @@ -1,11 +1,11 @@ - + Debugging GStreamer has an extensive set of debugging tools for plugin developers. - + Command line options Applications using the GStreamer libraries accept the following set @@ -94,7 +94,7 @@ Mask (to be OR'ed) info/debug FLAGS 0x02000000 / REFCOUNTING - + Adding a custom debug handler diff --git a/docs/manual/appendix-debugging.xml b/docs/manual/appendix-debugging.xml index feb7541..698d8da 100644 --- a/docs/manual/appendix-debugging.xml +++ b/docs/manual/appendix-debugging.xml @@ -1,11 +1,11 @@ - + Debugging GStreamer has an extensive set of debugging tools for plugin developers. - + Command line options Applications using the GStreamer libraries accept the following set @@ -94,7 +94,7 @@ Mask (to be OR'ed) info/debug FLAGS 0x02000000 / REFCOUNTING - + Adding a custom debug handler diff --git a/docs/manual/appendix-gnome.xml b/docs/manual/appendix-gnome.xml index ab195f0..d8f8266 100644 --- a/docs/manual/appendix-gnome.xml +++ b/docs/manual/appendix-gnome.xml @@ -1,4 +1,4 @@ - + GNOME integration GStreamer is fairly easy to integrate with GNOME applications. diff --git a/docs/manual/appendix-integration.xml b/docs/manual/appendix-integration.xml index ab195f0..d8f8266 100644 --- a/docs/manual/appendix-integration.xml +++ b/docs/manual/appendix-integration.xml @@ -1,4 +1,4 @@ - + GNOME integration GStreamer is fairly easy to integrate with GNOME applications. diff --git a/docs/manual/appendix-programs.xml b/docs/manual/appendix-programs.xml index 0c22496..c87cdf3 100644 --- a/docs/manual/appendix-programs.xml +++ b/docs/manual/appendix-programs.xml @@ -1,9 +1,9 @@ - + Programs - + <command>gst-register</command> gst-register is used to rebuild the database of plugins. @@ -12,7 +12,7 @@ - + <command>gst-launch</command> This is a tool that will construct pipelines based on a command-line @@ -149,7 +149,7 @@ main (int argc, char *argv[]) - + <command>gst-inspect</command> This is a tool to query a plugin or an element about its properties. diff --git a/docs/manual/appendix-quotes.xml b/docs/manual/appendix-quotes.xml index 30ad944..1c6754b 100644 --- a/docs/manual/appendix-quotes.xml +++ b/docs/manual/appendix-quotes.xml @@ -1,4 +1,4 @@ - + Quotes from the Developers As well as being a cool piece of software, diff --git a/docs/manual/autoplugging.xml b/docs/manual/autoplugging.xml index 00e17d7..ab417ee 100644 --- a/docs/manual/autoplugging.xml +++ b/docs/manual/autoplugging.xml @@ -1,4 +1,4 @@ - + Autoplugging GStreamer provides an API to automatically @@ -91,12 +91,12 @@ - + Using the <classname>GstAutoplugCache</classname> element The GstAutoplugCache element is used to cache the media stream when performing typedetection. As we have seen in - , the typefind function consumes a + , the typefind function consumes a buffer to determine its media type. After we have set up the pipeline to play the media stream we should be able to 'replay' the previous buffer(s). This is what the autoplugcache is used for. @@ -147,7 +147,7 @@ autoplugger, the autoplugcache and the typefind element. - + Another approach to autoplugging The autoplug API is interesting, but often impractical. It is static; diff --git a/docs/manual/basics-bins.xml b/docs/manual/basics-bins.xml deleted file mode 100644 index 9372681..0000000 --- a/docs/manual/basics-bins.xml +++ /dev/null @@ -1,49 +0,0 @@ - - Bins - - A bin is a container element. You can add elements to a bin. Since a bin is - an element itself, it can also be added to another bin. - - - Bins allow you to combine a group of linked elements into one logical element. You do - not deal with the individual elements anymore but with just one element, the bin. - We will see that this is extremely powerful when you are going to construct - complex pipelines since it allows you to break up the pipeline in smaller chunks. - - - The bin will also manage the elements contained in it. It will figure out how - the data will flow in the bin and generate an optimal plan for that data flow. Plan - generation is one of the most complicated procedures in GStreamer. - - -
- Visualisation of a bin with some elements in it - - - - - -
- - - There are two specialized bins available to the GStreamer programmer: - - - - - a pipeline: a generic container that allows scheduling of the - containing elements. The toplevel bin has to be a pipeline. - Every application thus needs at least one of these. - - - - - a thread: a bin that will be run in a separate execution thread. - You will have to use this bin if you have to carefully - synchronize audio and video, or for buffering. You will learn - more about threads in . - - - - -
diff --git a/docs/manual/basics-data.xml b/docs/manual/basics-data.xml index 36bfd80..026830a 100644 --- a/docs/manual/basics-data.xml +++ b/docs/manual/basics-data.xml @@ -1,4 +1,4 @@ - + Buffers Buffers contain the data that will flow through the pipeline you have diff --git a/docs/manual/basics-elements.xml b/docs/manual/basics-elements.xml index a712e8b..209ebed 100644 --- a/docs/manual/basics-elements.xml +++ b/docs/manual/basics-elements.xml @@ -1,11 +1,11 @@ - + Elements The most important object in GStreamer for the application programmer is the GstElement object. - + What is an element ? An element is the basic building block for the media pipeline. @@ -16,26 +16,26 @@ Elements, from the perspective of GStreamer, are viewed as "black boxes" with a number of different aspects. One of these aspects is the presence - of "pads" (see ), or link points. This terminology arises from soldering; + of "pads" (see ), or link points. This terminology arises from soldering; pads are where wires can be attached. - + Types of elements - + Source elements Source elements generate data for use by a pipeline, for example reading from disk or from a sound card. - shows how we will visualise + shows how we will visualise a source element. We always draw a source pad to the right of the element. -
+
Visualisation of a source element @@ -50,7 +50,7 @@ - + Filters and codecs Filter elements have both input and output pads. They operate on @@ -63,7 +63,7 @@ for example, a video mixer might have two input pads (the images of the two different video streams) and one output pad. -
+
Visualisation of a filter element @@ -72,12 +72,12 @@
- shows how we will visualise + shows how we will visualise a filter element. This element has one sink (input) pad and one source (output) pad. Sink pads are drawn on the left of the element. -
+
Visualisation of a filter element with more than one output pad @@ -88,7 +88,7 @@
- shows the visualisation of a filter element with + shows the visualisation of a filter element with more than one output pad. An example of such a filter is the AVI demultiplexer. This element will parse the input data and extract the audio and video data. Most of these filters dynamically @@ -97,15 +97,15 @@ - + Sink elements Sink elements are end points in a media pipeline. They accept data but do not produce anything. Disk writing, soundcard playback, and video output would all be implemented by sink elements. - shows a sink element. + shows a sink element. -
+
Visualisation of a sink element diff --git a/docs/manual/basics-helloworld.xml b/docs/manual/basics-helloworld.xml index 780caf5..deb891f 100644 --- a/docs/manual/basics-helloworld.xml +++ b/docs/manual/basics-helloworld.xml @@ -1,4 +1,4 @@ - + Your first application This chapter describes the most rudimentary aspects of a @@ -7,7 +7,7 @@ pausing and stopping the pipeline. - + Hello world We will create a simple first application, a complete MP3 player, using @@ -177,7 +177,7 @@ main (int argc, char *argv[]) We now have a created a complete pipeline. We can visualise the pipeline as follows: -
+
The "hello world" pipeline @@ -232,7 +232,7 @@ main (int argc, char *argv[]) - + Compiling helloworld.c To compile the helloworld example, use: @@ -256,7 +256,7 @@ main (int argc, char *argv[]) - + Conclusion This concludes our first example. As you see, setting up a pipeline diff --git a/docs/manual/basics-init.xml b/docs/manual/basics-init.xml index 7f73fde..48491e2 100644 --- a/docs/manual/basics-init.xml +++ b/docs/manual/basics-init.xml @@ -1,4 +1,4 @@ - + Initializing <application>GStreamer</application> When writing a GStreamer application, you can diff --git a/docs/manual/basics-pads.xml b/docs/manual/basics-pads.xml index 47fd004..f107931 100644 --- a/docs/manual/basics-pads.xml +++ b/docs/manual/basics-pads.xml @@ -1,13 +1,13 @@ - + Pads - As we have seen in , the pads are the element's + As we have seen in , the pads are the element's interface to the outside world. The specific type of media that the element can handle will be exposed by the pads. The description of this media type is done with capabilities(see - ) + ) @@ -24,10 +24,10 @@ - + Types of pads - + Dynamic pads Some elements might not have all of their pads when the element is @@ -47,7 +47,7 @@ pipelines later on in this manual. - + Request pads An element can also have request pads. These pads are not created @@ -63,7 +63,7 @@ - + Capabilities of a pad Since the pads play a very important role in how the element is viewed by the @@ -76,7 +76,7 @@ Plugin Writer's Guide. - + Capabilities Capabilities are attached to a pad in order to describe @@ -137,7 +137,7 @@ Pads: rate: Integer range: 11025 - 48000 - + What are properties ? Properties are used to describe extra information for @@ -217,7 +217,7 @@ Pads: - + What capabilities are used for Capabilities describe in great detail the type of media that is handled by the pads. diff --git a/docs/manual/basics-plugins.xml b/docs/manual/basics-plugins.xml deleted file mode 100644 index c8e62ee..0000000 --- a/docs/manual/basics-plugins.xml +++ /dev/null @@ -1,31 +0,0 @@ - - Plugins - - - A plugin is a shared library that contains at least one of the following - items: - - - - - - one or more element factories - - - - - one or more type definitions - - - - - one or more auto-pluggers - - - - - exported symbols for use in other plugins - - - - diff --git a/docs/manual/bins-api.xml b/docs/manual/bins-api.xml index 89c9f8a..602807d 100644 --- a/docs/manual/bins-api.xml +++ b/docs/manual/bins-api.xml @@ -1,6 +1,6 @@ - + Bins - + Creating a bin Bins are created in the same way that other elements are created. ie. @@ -22,7 +22,7 @@ - + Adding elements to a bin Elements are added to a bin with the following code sample: @@ -95,7 +95,7 @@ - + Custom bins The application programmer can create custom bins packed with elements @@ -121,7 +121,7 @@ Note that the above code assumes that the mp3player bin derives itself from a GstThread, which begins to play as soon as its state is set to PLAYING. Other bin types may need explicit - iteration. For more information, see . + iteration. For more information, see . Custom bins can be created with a plugin or an XML description. You @@ -130,13 +130,13 @@ - + Ghost pads - You can see from how a bin has no pads of its own. + You can see from how a bin has no pads of its own. This is where "ghost pads" come into play. -
+
Visualisation of a <classname>GstBin</classname> element without ghost pads @@ -151,7 +151,7 @@ for creating custom bins. -
+
Visualisation of a <classname>GstBin</classname> element with a ghost pad @@ -160,7 +160,7 @@
- + is a representation of a ghost pad. The sink pad of element one is now also a pad of the bin. diff --git a/docs/manual/bins.xml b/docs/manual/bins.xml index 9372681..c1d6b3b 100644 --- a/docs/manual/bins.xml +++ b/docs/manual/bins.xml @@ -1,4 +1,4 @@ - + Bins A bin is a container element. You can add elements to a bin. Since a bin is @@ -16,7 +16,7 @@ generation is one of the most complicated procedures in GStreamer. -
+
Visualisation of a bin with some elements in it @@ -41,7 +41,7 @@ a thread: a bin that will be run in a separate execution thread. You will have to use this bin if you have to carefully synchronize audio and video, or for buffering. You will learn - more about threads in . + more about threads in . diff --git a/docs/manual/buffers-api.xml b/docs/manual/buffers-api.xml index 5546c87..ccf89d8 100644 --- a/docs/manual/buffers-api.xml +++ b/docs/manual/buffers-api.xml @@ -1,4 +1,4 @@ - + Buffers diff --git a/docs/manual/buffers.xml b/docs/manual/buffers.xml index 36bfd80..026830a 100644 --- a/docs/manual/buffers.xml +++ b/docs/manual/buffers.xml @@ -1,4 +1,4 @@ - + Buffers Buffers contain the data that will flow through the pipeline you have diff --git a/docs/manual/clocks.xml b/docs/manual/clocks.xml index 0abe388..68b3720 100644 --- a/docs/manual/clocks.xml +++ b/docs/manual/clocks.xml @@ -1,4 +1,4 @@ - + Clocks in GStreamer diff --git a/docs/manual/components.xml b/docs/manual/components.xml index 0c5923f..2875d46 100644 --- a/docs/manual/components.xml +++ b/docs/manual/components.xml @@ -1,4 +1,4 @@ - + Components @@ -10,7 +10,7 @@ in their programs. - + GstPlay GstPlay is a GtkWidget with a simple API to play, pause and stop a media file. @@ -18,15 +18,15 @@ - + GstMediaPlay - GstMediaply is a complete player widget. + GstMediaPlay is a complete player widget. - + GstEditor GstEditor is a set of widgets to display a graphical representation of a diff --git a/docs/manual/cothreads.xml b/docs/manual/cothreads.xml index 18b5535..450a26f 100644 --- a/docs/manual/cothreads.xml +++ b/docs/manual/cothreads.xml @@ -1,4 +1,4 @@ - + Cothreads Cothreads are user-space threads that greatly reduce context switching overhead introduced by @@ -34,7 +34,7 @@ explain the chain-based elements. - + Chain-based elements Chain based elements receive a buffer of data and are supposed @@ -69,7 +69,7 @@ chain_function (GstPad *pad, GstBuffer *buffer) - + Loop-based elements As opposed to chain-based elements, loop-based elements enter an diff --git a/docs/manual/debugging.xml b/docs/manual/debugging.xml index feb7541..698d8da 100644 --- a/docs/manual/debugging.xml +++ b/docs/manual/debugging.xml @@ -1,11 +1,11 @@ - + Debugging GStreamer has an extensive set of debugging tools for plugin developers. - + Command line options Applications using the GStreamer libraries accept the following set @@ -94,7 +94,7 @@ Mask (to be OR'ed) info/debug FLAGS 0x02000000 / REFCOUNTING - + Adding a custom debug handler diff --git a/docs/manual/dparams-app.xml b/docs/manual/dparams-app.xml index 22f5545..d7b1b3e 100644 --- a/docs/manual/dparams-app.xml +++ b/docs/manual/dparams-app.xml @@ -1,7 +1,7 @@ - + Dynamic Parameters - + Getting Started The Dynamic Parameters subsystem is contained within the @@ -31,7 +31,7 @@ - + Creating and Attaching Dynamic Parameters Once you have created your elements you can create and attach dparams to them. @@ -81,7 +81,7 @@ - + Changing Dynamic Parameter Values All interaction with dparams to actually set the dparam value is done through simple GObject properties. @@ -116,7 +116,7 @@ - + Different Types of Dynamic Parameter There are currently only two implementations of dparams so far. They are both for real-time use so diff --git a/docs/manual/dynamic.xml b/docs/manual/dynamic.xml index 3cc834f..50731db 100644 --- a/docs/manual/dynamic.xml +++ b/docs/manual/dynamic.xml @@ -1,4 +1,4 @@ - + Dynamic pipelines In this chapter we will see how you can create a dynamic pipeline. A diff --git a/docs/manual/elements-api.xml b/docs/manual/elements-api.xml index 8cb9971..64099a3 100644 --- a/docs/manual/elements-api.xml +++ b/docs/manual/elements-api.xml @@ -1,6 +1,6 @@ - + Elements - + Creating a GstElement A GstElement object is created from @@ -55,7 +55,7 @@ gst_element_unref (element); - + GstElement properties A GstElement can have several properties @@ -105,7 +105,7 @@ - + GstElement signals A GstElement also provides various @@ -114,25 +114,25 @@ - + More about GstElementFactory We talk some more about the GstElementFactory object. - + Getting information about an element using the factory details - + Finding out what pads an element can contain - + Different ways of querying the factories diff --git a/docs/manual/elements.xml b/docs/manual/elements.xml index a712e8b..209ebed 100644 --- a/docs/manual/elements.xml +++ b/docs/manual/elements.xml @@ -1,11 +1,11 @@ - + Elements The most important object in GStreamer for the application programmer is the GstElement object. - + What is an element ? An element is the basic building block for the media pipeline. @@ -16,26 +16,26 @@ Elements, from the perspective of GStreamer, are viewed as "black boxes" with a number of different aspects. One of these aspects is the presence - of "pads" (see ), or link points. This terminology arises from soldering; + of "pads" (see ), or link points. This terminology arises from soldering; pads are where wires can be attached. - + Types of elements - + Source elements Source elements generate data for use by a pipeline, for example reading from disk or from a sound card. - shows how we will visualise + shows how we will visualise a source element. We always draw a source pad to the right of the element. -
+
Visualisation of a source element @@ -50,7 +50,7 @@ - + Filters and codecs Filter elements have both input and output pads. They operate on @@ -63,7 +63,7 @@ for example, a video mixer might have two input pads (the images of the two different video streams) and one output pad. -
+
Visualisation of a filter element @@ -72,12 +72,12 @@
- shows how we will visualise + shows how we will visualise a filter element. This element has one sink (input) pad and one source (output) pad. Sink pads are drawn on the left of the element. -
+
Visualisation of a filter element with more than one output pad @@ -88,7 +88,7 @@
- shows the visualisation of a filter element with + shows the visualisation of a filter element with more than one output pad. An example of such a filter is the AVI demultiplexer. This element will parse the input data and extract the audio and video data. Most of these filters dynamically @@ -97,15 +97,15 @@ - + Sink elements Sink elements are end points in a media pipeline. They accept data but do not produce anything. Disk writing, soundcard playback, and video output would all be implemented by sink elements. - shows a sink element. + shows a sink element. -
+
Visualisation of a sink element diff --git a/docs/manual/factories.xml b/docs/manual/factories.xml index 91a7ffb..5965431 100644 --- a/docs/manual/factories.xml +++ b/docs/manual/factories.xml @@ -1,4 +1,4 @@ - + More on factories The small application we created in the previous chapter used the @@ -11,7 +11,7 @@ We will first explain the concepts involved before we move on to the reworked helloworld example using autoplugging. - + The problems with the helloworld example If we take a look at how the elements were created in the previous @@ -40,7 +40,7 @@ - + More on MIME Types GStreamer uses MIME types to identify the different types of data @@ -82,10 +82,10 @@ - shows the MIME types associated with + shows the MIME types associated with each pad from the "hello world" example. -
+
The Hello world pipeline with MIME types @@ -115,7 +115,7 @@ - + GStreamer types GStreamer assigns a unique number to all registered MIME types. @@ -204,12 +204,12 @@ struct _GstType { This function will return 0 if the extension was not known. - For more information, see . + For more information, see . - + Creating elements with the factory In the previous section we described how you could obtain @@ -232,7 +232,7 @@ struct _GstType { - + GStreamer basic types GStreamer only has two builtin types: diff --git a/docs/manual/gnome.xml b/docs/manual/gnome.xml index ab195f0..d8f8266 100644 --- a/docs/manual/gnome.xml +++ b/docs/manual/gnome.xml @@ -1,4 +1,4 @@ - + GNOME integration GStreamer is fairly easy to integrate with GNOME applications. diff --git a/docs/manual/goals.xml b/docs/manual/goals.xml index e2ee9a2..10ca219 100644 --- a/docs/manual/goals.xml +++ b/docs/manual/goals.xml @@ -1,16 +1,16 @@ - + Goals GStreamer was designed to provide a solution to the current Linux media problems. - + The design goals We describe what we try to achieve with GStreamer. - + Clean and powerful GStreamer wants to provide a clean interface to: @@ -35,7 +35,7 @@ - + Object oriented GStreamer adheres to the GLib 2.0 object model. A programmer familiar with GLib 2.0 or older versions @@ -55,7 +55,7 @@ - + Extensible All GStreamer Objects can be extended using the GObject inheritance methods. @@ -66,7 +66,7 @@ - + Allow binary only plugins Plugins are shared libraries that are loaded at runtime. Since all the properties of the @@ -79,7 +79,7 @@ - + High performance High performance is obtained by: @@ -138,7 +138,7 @@ - + Clean core/plugins separation The core of GStreamer is essentially media-agnostic. It only knows @@ -152,7 +152,7 @@ - + Provide a framework for codec experimentation GStreamer also wants to be an easy framework where codec diff --git a/docs/manual/helloworld.xml b/docs/manual/helloworld.xml index 780caf5..deb891f 100644 --- a/docs/manual/helloworld.xml +++ b/docs/manual/helloworld.xml @@ -1,4 +1,4 @@ - + Your first application This chapter describes the most rudimentary aspects of a @@ -7,7 +7,7 @@ pausing and stopping the pipeline. - + Hello world We will create a simple first application, a complete MP3 player, using @@ -177,7 +177,7 @@ main (int argc, char *argv[]) We now have a created a complete pipeline. We can visualise the pipeline as follows: -
+
The "hello world" pipeline @@ -232,7 +232,7 @@ main (int argc, char *argv[]) - + Compiling helloworld.c To compile the helloworld example, use: @@ -256,7 +256,7 @@ main (int argc, char *argv[]) - + Conclusion This concludes our first example. As you see, setting up a pipeline diff --git a/docs/manual/helloworld2.xml b/docs/manual/helloworld2.xml index 5a382c4..6f76885 100644 --- a/docs/manual/helloworld2.xml +++ b/docs/manual/helloworld2.xml @@ -1,4 +1,4 @@ - + Your second application FIXME: delete this section, talk more about the spider. In a previous chapter we created a first diff --git a/docs/manual/highlevel-components.xml b/docs/manual/highlevel-components.xml deleted file mode 100644 index 0c5923f..0000000 --- a/docs/manual/highlevel-components.xml +++ /dev/null @@ -1,37 +0,0 @@ - - Components - - - FIXME: This chapter is way out of date. - - - - GStreamer includes components that people can include - in their programs. - - - - GstPlay - - GstPlay is a GtkWidget with a simple API to play, pause and stop a media file. - - - - - - GstMediaPlay - - GstMediaply is a complete player widget. - - - - - - GstEditor - - GstEditor is a set of widgets to display a graphical representation of a - pipeline. - - - - diff --git a/docs/manual/highlevel-xml.xml b/docs/manual/highlevel-xml.xml deleted file mode 100644 index 7f72802..0000000 --- a/docs/manual/highlevel-xml.xml +++ /dev/null @@ -1,283 +0,0 @@ - - XML in <application>GStreamer</application> - - GStreamer uses XML to store and load - its pipeline definitions. XML is also used internally to manage the - plugin registry. The plugin registry is a file that contains the definition - of all the plugins GStreamer knows about to have - quick access to the specifics of the plugins. - - - - We will show you how you can save a pipeline to XML and how you can reload that - XML file again for later use. - - - - Turning GstElements into XML - - - We create a simple pipeline and write it to stdout with - gst_xml_write_file (). The following code constructs an MP3 player - pipeline with two threads and then writes out the XML both to stdout - and to a file. Use this program with one argument: the MP3 file on disk. - - - -/* example-begin xml-mp3.c */ -#include <stdlib.h> -#include <gst/gst.h> - -gboolean playing; - -int -main (int argc, char *argv[]) -{ - GstElement *filesrc, *osssink, *queue, *queue2, *decode; - GstElement *bin; - GstElement *thread, *thread2; - - gst_init (&argc,&argv); - - if (argc != 2) { - g_print ("usage: %s <mp3 filename>\n", argv[0]); - exit (-1); - } - - /* create a new thread to hold the elements */ - thread = gst_element_factory_make ("thread", "thread"); - g_assert (thread != NULL); - thread2 = gst_element_factory_make ("thread", "thread2"); - g_assert (thread2 != NULL); - - /* create a new bin to hold the elements */ - bin = gst_bin_new ("bin"); - g_assert (bin != NULL); - - /* create a disk reader */ - filesrc = gst_element_factory_make ("filesrc", "disk_source"); - g_assert (filesrc != NULL); - g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL); - - queue = gst_element_factory_make ("queue", "queue"); - queue2 = gst_element_factory_make ("queue", "queue2"); - - /* and an audio sink */ - osssink = gst_element_factory_make ("osssink", "play_audio"); - g_assert (osssink != NULL); - - decode = gst_element_factory_make ("mad", "decode"); - g_assert (decode != NULL); - - /* add objects to the main bin */ - gst_bin_add_many (GST_BIN (bin), filesrc, queue, NULL); - - gst_bin_add_many (GST_BIN (thread), decode, queue2, NULL); - - gst_bin_add (GST_BIN (thread2), osssink); - - gst_element_link_many (filesrc, queue, decode, queue2, osssink, NULL); - - gst_bin_add_many (GST_BIN (bin), thread, thread2, NULL); - - /* write the bin to stdout */ - gst_xml_write_file (GST_ELEMENT (bin), stdout); - - /* write the bin to a file */ - gst_xml_write_file (GST_ELEMENT (bin), fopen ("xmlTest.gst", "w")); - - exit (0); -} -/* example-end xml-mp3.c */ - - - The most important line is: - - - gst_xml_write_file (GST_ELEMENT (bin), stdout); - - - gst_xml_write_file () will turn the given element into an xmlDocPtr that - is then formatted and saved to a file. To save to disk, pass the result - of a fopen(2) as the second argument. - - - The complete element hierarchy will be saved along with the inter element - pad links and the element parameters. Future GStreamer - versions will also allow you to store the signals in the XML file. - - - - - Loading a GstElement from an XML file - - Before an XML file can be loaded, you must create a GstXML object. - A saved XML file can then be loaded with the - gst_xml_parse_file (xml, filename, rootelement) method. - The root element can optionally left NULL. The following code example loads - the previously created XML file and runs it. - - -#include <stdlib.h> -#include <gst/gst.h> - -int -main(int argc, char *argv[]) -{ - GstXML *xml; - GstElement *bin; - gboolean ret; - - gst_init (&argc, &argv); - - xml = gst_xml_new (); - - ret = gst_xml_parse_file(xml, "xmlTest.gst", NULL); - g_assert (ret == TRUE); - - bin = gst_xml_get_element (xml, "bin"); - g_assert (bin != NULL); - - gst_element_set_state (bin, GST_STATE_PLAYING); - - while (gst_bin_iterate(GST_BIN(bin))); - - gst_element_set_state (bin, GST_STATE_NULL); - - exit (0); -} - - - gst_xml_get_element (xml, "name") can be used to get a specific element - from the XML file. - - - gst_xml_get_topelements (xml) can be used to get a list of all toplevel elements - in the XML file. - - - In addition to loading a file, you can also load a from a xmlDocPtr and - an in memory buffer using gst_xml_parse_doc and gst_xml_parse_memory - respectively. Both of these methods return a gboolean indicating - success or failure of the requested action. - - - - Adding custom XML tags into the core XML data - - - It is possible to add custom XML tags to the core XML created with - gst_xml_write. This feature can be used by an application to add more - information to the save plugins. The editor will for example insert - the position of the elements on the screen using the custom XML tags. - - - It is strongly suggested to save and load the custom XML tags using - a namespace. This will solve the problem of having your XML tags - interfere with the core XML tags. - - - To insert a hook into the element saving procedure you can link - a signal to the GstElement using the following piece of code: - - -xmlNsPtr ns; - - ... - ns = xmlNewNs (NULL, "http://gstreamer.net/gst-test/1.0/", "test"); - ... - thread = gst_element_factory_make ("thread", "thread"); - g_signal_connect (G_OBJECT (thread), "object_saved", - G_CALLBACK (object_saved), g_strdup ("decoder thread")); - ... - - - When the thread is saved, the object_save method will be called. Our example - will insert a comment tag: - - -static void -object_saved (GstObject *object, xmlNodePtr parent, gpointer data) -{ - xmlNodePtr child; - - child = xmlNewChild (parent, ns, "comment", NULL); - xmlNewChild (child, ns, "text", (gchar *)data); -} - - - Adding the custom tag code to the above example you will get an XML file - with the custom tags in it. Here's an excerpt: - - - ... - <gst:element> - <gst:name>thread</gst:name> - <gst:type>thread</gst:type> - <gst:version>0.1.0</gst:version> - ... - </gst:children> - <test:comment> - <test:text>decoder thread</test:text> - </test:comment> - </gst:element> - ... - - - To retrieve the custom XML again, you need to attach a signal to - the GstXML object used to load the XML data. You can then parse your - custom XML from the XML tree whenever an object is loaded. - - - - We can extend our previous example with the following piece of - code. - - - - xml = gst_xml_new (); - - g_signal_connect (G_OBJECT (xml), "object_loaded", - G_CALLBACK (xml_loaded), xml); - - ret = gst_xml_parse_file (xml, "xmlTest.gst", NULL); - g_assert (ret == TRUE); - - - - Whenever a new object has been loaded, the xml_loaded function will - be called. This function looks like: - - -static void -xml_loaded (GstXML *xml, GstObject *object, xmlNodePtr self, gpointer data) -{ - xmlNodePtr children = self->xmlChildrenNode; - - while (children) { - if (!strcmp (children->name, "comment")) { - xmlNodePtr nodes = children->xmlChildrenNode; - - while (nodes) { - if (!strcmp (nodes->name, "text")) { - gchar *name = g_strdup (xmlNodeGetContent (nodes)); - g_print ("object %s loaded with comment '%s'\n", - gst_object_get_name (object), name); - } - nodes = nodes->next; - } - } - children = children->next; - } -} - - - As you can see, you'll get a handle to the GstXML object, the - newly loaded GstObject and the xmlNodePtr that was used to create - this object. In the above example we look for our special tag inside - the XML tree that was used to load the object and we print our - comment to the console. - - - - diff --git a/docs/manual/init-api.xml b/docs/manual/init-api.xml index 7f73fde..48491e2 100644 --- a/docs/manual/init-api.xml +++ b/docs/manual/init-api.xml @@ -1,4 +1,4 @@ - + Initializing <application>GStreamer</application> When writing a GStreamer application, you can diff --git a/docs/manual/intro-motivation.xml b/docs/manual/intro-motivation.xml index ea91d30..c66704f 100644 --- a/docs/manual/intro-motivation.xml +++ b/docs/manual/intro-motivation.xml @@ -1,4 +1,4 @@ - + Motivation Linux has historically lagged behind other operating systems in the multimedia @@ -9,12 +9,12 @@ with the professional level of software available for MS Windows and MacOS. - + Current problems We describe the typical problems in today's media handling on Linux. - + Multitude of duplicate code The Linux user who wishes to hear a sound file must hunt through their collection of @@ -28,7 +28,7 @@ - + 'One goal' media players/libraries Your typical MPEG player was designed to play MPEG video and audio. Most of @@ -51,7 +51,7 @@ - + Non unified plugin mechanisms Your typical media player might have a plugin for different media @@ -74,7 +74,7 @@ - + Provision for network transparency No infrastructure is present to allow network transparent media @@ -94,7 +94,7 @@ - + Catch up with the <trademark>Windows</trademark> world We need solid media handling if we want to see Linux succeed on diff --git a/docs/manual/intro-preface.xml b/docs/manual/intro-preface.xml deleted file mode 100644 index db6bd18..0000000 --- a/docs/manual/intro-preface.xml +++ /dev/null @@ -1,59 +0,0 @@ - - Introduction - - This chapter gives you an overview of the technologies described in this - book. - - - - What is GStreamer? - - GStreamer is a framework for creating streaming media applications. - The fundamental design comes from the video pipeline at Oregon Graduate - Institute, as well as some ideas from DirectShow. - - - - GStreamer's development framework makes it possible to write any type of - streaming multimedia application. The GStreamer framework is designed - to make it easy to write applications that handle audio or video or both. - It isn't restricted to audio and video, and can process any kind of - data flow. - The pipeline design is made to have little overhead above what the - applied filters induce. This makes GStreamer a good framework for designing - even high-end audio applications which put high demands on latency. - - - - One of the the most obvious uses of GStreamer is using it to build - a media player. GStreamer already includes components for building a - media player that can support a very wide variety of formats, including - MP3, Ogg Vorbis, MPEG1, MPEG2, AVI, Quicktime, mod, and more. GStreamer, - however, is much more than just another media player. Its main advantages - are that the pluggable components can be mixed and matched into arbitrary - pipelines so that it's possible to write a full-fledged video or audio - editing application. - - - - The framework is based on plugins that will provide the various codec - and other functionality. The plugins can be linked and arranged in - a pipeline. This pipeline defines the flow of the data. Pipelines can - also be edited with a GUI editor and saved as XML so that pipeline - libraries can be made with a minimum of effort. - - - - The GStreamer core function is to provide a framework for plugins, data flow - and media type handling/negotiation. - It also provides an API to write applications using the various plugins. - - - - This book is about GStreamer from a developer's point of view; it describes - how to write a GStreamer application using the GStreamer libraries and tools. - For an explanation about writing plugins, we suggest the Plugin Writers Guide. - - - - diff --git a/docs/manual/intro.xml b/docs/manual/intro.xml index db6bd18..fd38af1 100644 --- a/docs/manual/intro.xml +++ b/docs/manual/intro.xml @@ -1,11 +1,11 @@ - + Introduction This chapter gives you an overview of the technologies described in this book. - + What is GStreamer? GStreamer is a framework for creating streaming media applications. diff --git a/docs/manual/links-api.xml b/docs/manual/links-api.xml index b4a8f1b..692bc29 100644 --- a/docs/manual/links-api.xml +++ b/docs/manual/links-api.xml @@ -1,6 +1,6 @@ - + Linking elements - + Making simple links You can link two pads with: @@ -66,12 +66,12 @@ - + Making filtered links You can also force a specific media type on the link by using gst_pad_link_filtered () and gst_element_link_filtered () with capabilities. - See for + See for an explanation of capabilities. diff --git a/docs/manual/links.xml b/docs/manual/links.xml index d313e69..819c042 100644 --- a/docs/manual/links.xml +++ b/docs/manual/links.xml @@ -1,11 +1,11 @@ - + Linking elements You can link the different pads of elements together so that the elements form a chain. -