+GStreamer 1.19.x development series
+
WHAT IT IS
----------
-This is gst-plugins, a set of plug-ins for GStreamer.
-
-COMPILING FROM SOURCE
----------------------
-- make sure you compiled and at least did a test-run of GStreamer (core)
-- check output of ./configure --help to see if any options apply to you
-- configure the source tree:
- - if you installed GStreamer, then do:
- ./configure
- If configure complains about missing GStreamer, you should try
- ./configure --with-pkg-config-path=prefix/lib/pkgconfig
- where prefix should be replaced by the prefix you used to configure
- GStreamer. (Be mindful NOT to ADD a trailing / to that option !)
- If this doesn't fix it, you have other issues ;)
-
- - if you didn't install GStreamer, you can still compile the plug-ins.
- Add the path to gstreamer-uninstalled.pc (which lives in the gstreamer
- source tree) to PKG_CONFIG_PATH
- or run configure --with-pkg-config-path=(path to gstreamer uninstalled)
-
- - the output of configure will give you a list of plug-ins with external
- dependencies (ie, depending on other libs, see below). By no means
- should you try to get them all built on your first run. This is hard
- enough as it is ;) Resist the urge to get the most features for now.
- It doesn't list all of the non-depending plug-ins, which get built
- regardless (unless you explicitly asked it not to).
-
-- build the tree:
- make
- If any plug-in causes a problem at this stage, you should re-configure
- with --disable-(dependency)
- and doublecheck if configure reports this plug-in as being disabled.
- Then re-run make.
-
-- install:
- - if you installed GStreamer, and want to install the plug-ins as well, run
- make install
- and, as root, run
- gst-register
- - if you installed GStreamer, but don't want to install the plug-ins, run
- gst-register --gst-plugin-path=.
- - if you didn't install GStreamer, then do
- path/to/gstreamer/tools/gst-register --gst-plugin-path=.
- (Replace path/to/gstreamer obviously)
-
-- test:
- - run
- gst-launch sinesrc ! fakesink
- and prefix gst-launch with the path to gstreamer/tools if you didn't install
- GStreamer.
- If this doesn't give any errors, you can abort it.
-
- - try replacing fakesink with your choice of
- osssink/esdsink/artsdsink/alsasink/jacksink (depending on what output
- method you have available) and see if you hear a C tone.
-
-- After this, you should look into installing an application, like
- gst-player, gst-editor or monkey-media with rhythmbox.
-
-COMPILING FROM CVS
-------------------
-When building from CVS sources, you will need to run autogen.sh to generate
-the build system files.
-GStreamer is cutting-edge stuff. To be a CVS developer, you need
-what used to be considered cutting-edge tools.
+This is GStreamer, a framework for streaming media.
+
+WHERE TO START
+--------------
+
+We have a website at
+
+ https://gstreamer.freedesktop.org
+
+Our documentation, including tutorials, API reference and FAQ can be found at
+
+ https://gstreamer.freedesktop.org/documentation/
+
+You can subscribe to our mailing lists:
+
+ https://lists.freedesktop.org/mailman/listinfo/gstreamer-announce
+
+ https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
+
+We track bugs, feature requests and merge requests (patches) in GitLab at
+
+ https://gitlab.freedesktop.org/gstreamer/
+
+You can join us on IRC - #gstreamer on irc.freenode.org
+
+GStreamer 1.0 series
+--------------------
+
+Starring
+
+ GSTREAMER
+
+The core around which all other modules revolve. Base functionality and
+libraries, some essential elements, documentation, and testing.
+
+ BASE
+
+A well-groomed and well-maintained collection of GStreamer plug-ins and
+elements, spanning the range of possible types of elements one would want
+to write for GStreamer.
+
+And introducing, for the first time ever, on the development screen ...
+
+ THE GOOD
+
+ --- "Such ingratitude. After all the times I've saved your life."
+
+A collection of plug-ins you'd want to have right next to you on the
+battlefield. Shooting sharp and making no mistakes, these plug-ins have it
+all: good looks, good code, and good licensing. Documented and dressed up
+in tests. If you're looking for a role model to base your own plug-in on,
+here it is.
+
+If you find a plot hole or a badly lip-synced line of code in them,
+let us know - it is a matter of honour for us to ensure Blondie doesn't look
+like he's been walking 100 miles through the desert without water.
+
+ THE UGLY
+
+ --- "When you have to shoot, shoot. Don't talk."
+
+There are times when the world needs a color between black and white.
+Quality code to match the good's, but two-timing, backstabbing and ready to
+sell your freedom down the river. These plug-ins might have a patent noose
+around their neck, or a lock-up license, or any other problem that makes you
+think twice about shipping them.
+
+We don't call them ugly because we like them less. Does a mother love her
+son less because he's not as pretty as the other ones ? No - she commends
+him on his great personality. These plug-ins are the life of the party.
+And we'll still step in and set them straight if you report any unacceptable
+behaviour - because there are two kinds of people in the world, my friend:
+those with a rope around their neck and the people who do the cutting.
+
+ THE BAD
+
+ --- "That an accusation?"
+
+No perfectly groomed moustache or any amount of fine clothing is going to
+cover up the truth - these plug-ins are Bad with a capital B.
+They look fine on the outside, and might even appear to get the job done, but
+at the end of the day they're a black sheep. Without a golden-haired angel
+to watch over them, they'll probably land in an unmarked grave at the final
+showdown.
+
+Don't bug us about their quality - exercise your Free Software rights,
+patch up the offender and send us the patch on the fastest steed you can
+steal from the Confederates. Because you see, in this world, there's two
+kinds of people, my friend: those with loaded guns and those who dig.
+You dig.
+
+The Lowdown
+-----------
-ATM, most of us have at least these versions :
+ --- "I've never seen so many plug-ins wasted so badly."
-* autoconf 2.52 (NOT 2.52d)
-* automake 1.5
-* libtool 1.4 (NOT Gentoo's genetic failure 1.4.2)
-* pkg-config 0.8.0
+GStreamer Plug-ins has grown so big that it's hard to separate the wheat from
+the chaff. Also, distributors have brought up issues about the legal status
+of some of the plug-ins we ship. To remedy this, we've divided the previous
+set of available plug-ins into four modules:
+
+- gst-plugins-base: a small and fixed set of plug-ins, covering a wide range
+ of possible types of elements; these are continuously kept up-to-date
+ with any core changes during the development series.
+
+ - We believe distributors can safely ship these plug-ins.
+ - People writing elements should base their code on these elements.
+ - These elements come with examples, documentation, and regression tests.
+
+- gst-plugins-good: a set of plug-ins that we consider to have good quality
+ code, correct functionality, our preferred license (LGPL for the plug-in
+ code, LGPL or LGPL-compatible for the supporting library).
+
+ - We believe distributors can safely ship these plug-ins.
+ - People writing elements should base their code on these elements.
+
+- gst-plugins-ugly: a set of plug-ins that have good quality and correct
+ functionality, but distributing them might pose problems. The license
+ on either the plug-ins or the supporting libraries might not be how we'd
+ like. The code might be widely known to present patent problems.
+
+ - Distributors should check if they want/can ship these plug-ins.
+ - People writing elements should base their code on these elements.
+
+- gst-plugins-bad: a set of plug-ins that aren't up to par compared to the
+ rest. They might be close to being good quality, but they're missing
+ something - be it a good code review, some documentation, a set of tests,
+ a real live maintainer, or some actual wide use.
+ If the blanks are filled in they might be upgraded to become part of
+ either gst-plugins-good or gst-plugins-ugly, depending on the other factors.
+
+ - If the plug-ins break, you can't complain - instead, you can fix the
+ problem and send us a patch, or bribe someone into fixing them for you.
+ - New contributors can start here for things to work on.
+
+PLATFORMS
+---------
+
+- Linux is of course fully supported
+- FreeBSD is reported to work; other BSDs should work too; same for Solaris
+- MacOS works, binary 1.x packages can be built using the cerbero build tool
+- Windows works; binary 1.x packages can be built using the cerbero build tool
+ - MSys/MinGW builds
+ - Microsoft Visual Studio builds are also available and supported
+- Android works, binary 1.x packages can be built using the cerbero build tool
+- iOS works
+
+INSTALLING FROM PACKAGES
+------------------------
+
+You should always prefer installing from packages first. GStreamer is
+well-maintained for a number of distributions, including Fedora, Debian,
+Ubuntu, Mandrake, Arch Linux, Gentoo, ...
+
+Only in cases where you:
+
+ - want to hack on GStreamer
+ - want to verify that a bug has been fixed
+ - do not have a sane distribution
+
+should you choose to build from source tarballs or git.
+
+Find more information about the various packages at
+
+ https://gstreamer.freedesktop.org/download/
+
+COMPILING FROM SOURCE TARBALLS
+------------------------------
+
+- again, make sure that you really need to install from source!
+ If GStreamer is one of your first projects ever that you build from source,
+ consider taking on an easier project.
+
+- you need a recent version of Meson installed, see
+
+ http://mesonbuild.com/Getting-meson.html
+
+ and
+
+ https://gitlab.freedesktop.org/gstreamer/gst-build/blob/master/README.md
+
+- run
+
+ meson build
+ ninja -C build
+
+ to build GStreamer.
+
+- if you want to install it (not required, but what you usually want to do), run
+
+ ninja -C build install
+
+- try out a simple test:
+ gst-launch-1.0 -v fakesrc num_buffers=5 ! fakesink
+ (If you didn't install GStreamer, run `./build/tools/gst-launch-1.0`)
+
+ If it outputs a bunch of messages from fakesrc and fakesink, everything is
+ ok.
+
+ If it did not work, keep in mind that you might need to adjust the
+ PATH and/or LD_LIBRARY_PATH environment variables to make the system
+ find GStreamer in the prefix where you installed (by default that is /usr/local).
+
+- After this, you're ready to install gst-plugins, which will provide the
+ functionality you're probably looking for by now, so go on and read
+ that README.
+
+COMPILING FROM GIT
+------------------
-autogen.sh will check for these versions and complain if you don't have
-them. You can also specify specific versions of automake and autoconf with
---with-automake and --with-autoconf
+You can build an uninstalled GStreamer from git for development or testing
+purposes without affecting your system installation.
-Check autogen.sh options by running autogen.sh --help
+Get started with:
-autogen.sh can pass on arguments to configure - you just need to separate them
-from autogen.sh with -- between the two.
-prefix has been added to autogen.sh but will be passed on to configure because
-some build scripts like that.
-You will probably have to pass at least --with-pkg-config-path to autogen.sh
-to point to the CVS version of GStreamer.
+ git clone https://gitlab.freedesktop.org/gstreamer/gst-build
+ meson build
+ ninja -C build
+ ninja -C build uninstalled
-When you have done this once, you can use autoregen.sh to re-autogen with
-the last passed options as a handy shortcut. Use it.
+For more information, see the `gst-build` module and its documentation:
-After the autogen.sh stage, you can follow the directions listed in
-"COMPILING FROM SOURCE"
+ https://gitlab.freedesktop.org/gstreamer/gst-build/blob/master/README.md
PLUG-IN DEPENDENCIES AND LICENSES
---------------------------------
-GStreamer is developed under the terms of the LGPL (see LICENSE file for
-details). Some of our plug-ins however rely on libraries which are available
-under other licenses. This means that if you are using an application which
-has a non-GPL compatible license (for instance a closed-source application)
-with GStreamer, you have to make sure not to use GPL-linked plug-ins.
-When using GPL-linked plug-ins, GStreamer is for all practical reasons
-under the GPL itself.
-
-The plug-ins which use a GPL library are as follows:
-cdparanoia libcdparanoia (http://www.xiph.org/paranoia/)
-aasink aalib (http://aa-project.sourceforge.net/aalib/)
-xmms libxmms (http://www.xmms.org)
-decdvd ac3dec,mpeg2dec (http://linuxvideo.org/mpeg2dec/,http://linuxvideo.org/ac3dec/)a
-mad mad (http://www.mars.org/home/rob/proj/mpeg/)
-
-Plug-ins which use an LGPL library are as follows:
-colorspace Hermes (http://www.clanlib.org/hermes/)
-httpsrc libghttp (ftp.gnome.org/pub/GNOME/stable/sources/libghttp/)
-alsasink alsa (http://alsa-project.org)
-arts aRts (http://arts-project.org)
-sdlsink libsdl (http://www.libsdl.org)
-gnomevfssource gnome-vfs (ftp.gnome.org//pub/GNOME/stable/sources/gnome-vfs)
-gnomevfssink gnome-vfs
-esdsink libesd (ftp.gnome.org/pub/GNOME/stable/sources/esound)
-icastsend libshout (http://www.icecast.org)
-lame libmp3lame (http://www.mp3dev.org/mp3/)
-gst1394 libraw1394 (http://linux1394.sourceforge.net)
-flac libFLAC (http://flac.sourceforge.net)
-RTP ortp (http://www.linphone.org/ortp/)
-
-Plug-ins which use a BSD covered library are as follows:
-vorbisenc libogg/libvorbis (http://www.xiph.org/ogg/vorbis)
-vorbisdec libogg/libvorbis
-
-Plug-ins based on libraries with other free licenses:
-xvideosink libXv (MIT X11 / X Consortium license)
-gsm libgsm (MIT license http://kbs.cs.tu-berlin.de/~jutta/toast.html)
-
-Plug-ins using non-free libraries:
-wincodec win32ddl (http://divx.euro.ru/)
+GStreamer is developed under the terms of the LGPL (see COPYING file for
+details). Some of our plug-ins however rely on libraries which are available
+under other licenses. This means that if you are distributing an application
+which has a non-GPL compatible license (for instance a closed-source
+application) with GStreamer, you have to make sure not to distribute GPL-linked
+plug-ins.
+
+When using GPL-linked plug-ins, GStreamer is for all practical reasons
+under the GPL itself.
+
+HISTORY
+-------
+
+The fundamental design comes from the video pipeline at Oregon Graduate
+Institute, as well as some ideas from DirectMedia. It's based on plug-ins that
+will provide the various codec and other functionality. The interface
+hopefully is generic enough for various companies (ahem, Apple) to release
+binary codecs for Linux, until such time as they get a clue and release the
+source.