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:
===================

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.

Package:	GStreamer Base Plugins
Version:	0.10.11.2
Recommended:	0.10.latest
URL:		http://gstreamer.freedesktop.org/
DebianPackage:	libgstreamer-plugins-base0.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 Base Plugins CVS.



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

This file lists supporting libraries for which gst-plugins 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
Notes:		Used by many plugins for accelerating processing

Package:	GTK+
Version:	>= 2.0
Recommended:	>= 2.2
URL:		http://www.gtk.org/
DebianPackage:	libgtk2.0-dev
Plugins:	gdkpixbuf (gdkpixbufdec, gdkpixbufscale)
Notes:		Also required by several examples.  Plugin require >= 2.2.

Package:	Check
DebianPackage:	check
URL:		http://check.sourceforge.net/

Package:	Xlib
Plugins:	ximagesrc, v4l2
DebianPackage:	libx11-dev libxv-dev libxt-dev

Package:	AALib
Plugins:	aasink
URL:		http://aa-project.sourceforge.net/aalib/

Package:	LibXML
Version:	>= 2.4.9
Plugins:	annodex (cmmlenc, cmmldec)
URL:		http://xmlsoft.org/

Package:	Cairo
Version:	>= 1.0
Plugins:	cairo (cairotextoverlay, cairotimeoverlay)
URL:		http://cairographics.org/

Package:	CDIO
Version:	>= 0.71
Plugins:	cdio (cdiocddasrc)
URL:		http://www.gnu.org/software/libcdio/

Package:	ESound
Version:	>= 0.2.12
Plugins:	esdsink
URL:		http://www.gnome.org/

Package:	FLAC
Version:	== 1.1.2
Plugins:	flac (flacenc, flacdec)
URL:		http://flac.sourceforge.net/

Package:	GConf
Version:	>= 2.0
Plugins:	gconfelements (gconfvideosink, gconfvideosrc, gconfaudiosink,
		gconfaudiosrc)
URL:		http://www.gnome.org/

Package:	HAL
Version:	>= 0.5.6
Plugins:	halelements (halaudiosink, halaudiosrc)
URL:		http://hal.freedesktop.org/

Package:	IJG JPEG library
Plugins:	jpeg (jpegenc, jpegdec, smokeenc, smokedec)
URL:		http://www.ijg.org/

Package:	LADSPA
Plugins:	ladspa
URL:		http://www.ladspa.org/

Package:	Libcaca
Plugins:	cacasink
URL:		http://libcaca.zoy.org/

Package:	Libdv
Version:	>= 0.100
Plugins:	dv (dvdec)
URL:		http://libdv.sourceforge.net/

Package:	Libpng
Version:	>= 1.2
Plugins:	png (pngenc, pngdec)
URL:		http://www.libpng.org/pub/png/libpng.html

Package:	libraw1394
Plugins:	dv1394
URL:		http://www.linux1394.org/

Package:	libiec61883
Plugins:	dv1394
URL:		http://www.linux1394.org/

Package:	libshout
Version:	>= 2.0
URL:		http://www.icecast.org/

Package:	speex
Version:	>= 1.0.4 or >= 1.1.5
Plugins:	speex (speexenc, speexdec)
URL:		http://www.speex.org/

Package:	taglib
Version:	>= 1.4
DebianPackage:	libtag1-dev
URL:		http://developer.kde.org/~wheeler/taglib.html

Package:	zlib
Plugins:	id3demux
URL:		http://www.zlib.net/


Optional (debian) packages:
===========================

gtk-doc-tools 1.6  -- needed to build documentation
python-xml  -- needed to build plugin documentation
