GStreamer uses a *large* array of tools and libraries, most of which are
optional.  We have attempted to make sure that any code that depends on
optional libraries doesn't get built unless you have those libraries.  If
you find this not to be the case, please, let us know by filing a bug
report at http://bugzilla.gnome.org/.


Required tools:
===============

An extra set of tools is required if you wish to build GStreamer out of
CVS (using autogen.sh):

autoconf 2.52 or better 
automake 1.5
gettext 0.11.5
libtool v1.4 or better
pkgconfig 0.9.0 or better (http://www.freedesktop.org/software/pkgconfig/)

Required libraries:
===================

The core GStreamer libraries. See the gstreamer/ module in GStreamer cvs, or
the version that corresponds to this plugin release.

Package:	GStreamer
Version:	0.10.11.2
Recommended:	0.10.latest
URL:		http://gstreamer.freedesktop.org/
DebianPackage:	libgstreamer0.10-dev
Notes:		The required version is updated frequently, so the version
	listed in this file is often wrong.  If you are compiling from CVS,
	the required version is often the latest GStreamer CVS.


Optional libraries:
===================

This file lists supporting libraries for which gst-plugins-base contains
plugins, as well as their minimum version.  You can find the corresponding
plugins in ext/(library)

Package:	Orc
Version:	>= 0.4.5
Recommended:	0.4.latest
URL:		http://code.entropywave.com/orc
DebianPackage:	liborc-0.4-dev

Package:	GTK+
Version:	>= 2.0
Recommended:	>= 2.2
URL:		http://www.gtk.org/
DebianPackage:	libgtk2.0-dev
Notes:		Required by several examples

Package:	Xlib
Plugins:	xvimagesink, ximagesink, v4l (v4lsrc), ximagesrc
DebianPackage:	libx11-dev libxv-dev libxt-dev

Package:	Alsa
Version:	>= 0.9.1
Plugins:	alsa (alsasrc, alsasink)
URL:		http://www.alsa-project.org/
DebianPackage:	libasound2-dev

Package:	CDParanoia
Plugins:	cdparanoia
URL:		http://xiph.org/paranoia/
DebianPackage:	libcdparanoia0-dev

Package:	GnomeVFS
Version:	>= 2.0 (2.4?)
Plugins:	gnomevfs (gnomevfssrc)
URL:		http://www.gnome.org/
DebianPackage:	libgnomevfs2-dev

Package:	libvisual
Version:	>= 0.2.0
Recommended:	0.4.0
Plugins:	libvisual
URL:		http://localhost.nl/~synap/libvisual-wiki/index.php/Main_Page
DebianPackage:	libvisual0.4-dev

Package:	Ogg
Version:	>= 1.0
Plugins:	ogg (oggdemux, oggmux)
URL:		http://xiph.org/ogg/
DebianPackage:	libogg-dev

Package:	Pango
Plugins:	pango
DebianPackage:	libpango1.0-dev
URL:		http://www.pango.org/

Package:	Theora
Plugins:	theora (theoradec, theoraenc)
URL:		http://www.theora.org/
DebianPackage:	libtheora-dev

Package:	Vorbis
Plugins:	vorbis (vorbisdec, vorbisenc)
DebianPackage:	libvorbis-dev
URL:		http://www.vorbis.com/


