Gstreamer for Debian
====================
This package contains the GStreamer plugin distribution.

More information can be found at http://gstreamer.net/

As of GStreamer plugins version 0.8.0 all packages are versioned and
parallel installable with other releases with other major.minor
versions.  For example, 0.8.x series is versioned as 0.8 and parallel
installable with both unversioned 0.6.x series and future 0.9.x and
beyond.  The version part is represented as VER below.

GStreamer plugins are split into a number of packages:

plugins without external dependencies:

   gstreamerVER-plugins-ugly     many independent plugins

documentation:

   gstreamerVER-plugins-ugly-doc		html documentation


Notes
=====

ChangeLog
---------

The upstream ChangeLog is not included in all the plugin packages due to its
large size.  Please see upstream sources if you are interested in detailed
source changes.

Unofficial plugin packages
--------------------------

Various plugins in the upstream source are not yet packaged or not officially
supported.  This is most likely due to:

  * upstream considers them too unstable
  * libraries they depend on are not are yet in Debian or are poorly supported

To build additional unofficial plugin packages:

  * Get the source and Debian diff (for example, "apt-get source gst-plugins")
  * Add new package name to the EXTRA_PLUGINS variable in debian/rules
  * Add appropriate dependency and control info to debian/extra
  * Add a .install file for the package
  * Rebuild

External tools support
----------------------

Your favorite codec isn't wrapped as a plugin?  External programs can be
used to process streams.  Take a look at "pipefilter" element or try
something like this (untested):

  $ mkfifo fifo
  $ gst-launch myaudiosrc ! filesink location=fifo &
  $ cat fifo | my_encoder > output_file


David I. Lehn <dlehn@debian.org>  Tue, 23 Mar 2004 04:38:37 -0500

update:
Sebastien Bacher <seb128@debian.org>  Wed, 14 Dec 2005 17:00:21 +0100
