GStreamer
From Wikipedia, the free encyclopedia
Gstreamer | |
Latest release: | 0.10.11 / 6 December 2006 |
---|---|
OS: | Cross-platform |
Use: | Multimedia framework |
License: | GNU Lesser General Public License |
Website: | http://gstreamer.freedesktop.org/ |
GStreamer is a multimedia framework written in the C programming language with the type system based on GObject. GStreamer serves a host of multimedia applications, such as video editors, streaming media broadcasters, and media players. Designed to be cross-platform, it is known to work on Linux (x86, PowerPC and ARM), Solaris (x86 and SPARC), Mac OS X, Microsoft Windows and OS/400. GStreamer is free software, licensed under the GNU Lesser General Public License.
The GNOME desktop environment is the primary user of GStreamer technology, having included GStreamer since GNOME version 2.2 and encourages GNOME and GTK+ applications to use it. Other groups are beginning to use it as well.
GStreamer is also being used in embedded devices like the Maemo environment from Nokia, which is found on the Nokia 770 Internet Tablet.
Contents |
[edit] History and development
The project was founded in 1999 by Erik Walthinsen and had many of its core design ideas taken from a research project at University of Oregon. Wim Taymans joined the project soon thereafter and greatly expanded on many aspects of the system. Many others around the world have contributed to various degrees since then. The GStreamer logo was designed by Brock A. Frazier, working for an embedded Linux company called RidgeRun, which also was the first corporate sponsor of GStreamer in the form of hiring Erik Walthinsen to develop methods for embedding GStreamer in smaller (cell-phone-class) devices.
It is a hosted project at freedesktop.org, and therefore aims to improve interoperability and share technology between free desktops.
[edit] Internals technical overview
A bin or pipeline consists of elements/plug-ins. Elements contain pads such as source and sink. Data flows through the pipeline in a single direction. Pads have capabilities called 'caps'.
The diagram to the right could be an example of playing an MP3 file using GStreamer. The file source reads an MP3 file from the computers hard drive and sends it to the MP3 decoder. The decoder decodes the file data and converts it into PCM samples which are sent to the ALSA sound driver. The ALSA sound driver sends the PCM sound samples to the computer's speakers.
[edit] Plugins
GStreamer uses a plugin architecture which makes most of GStreamer's functionality implemented as shared libraries. GStreamer’s base functionality contains functions for registering and loading plugins and for providing the fundamentals of all classes in the form of base classes. Plugin libraries are dynamically loaded to support a wide spectrum of codecs, container formats and input/output drivers.
Bindings are provided for programming languages like Python, C++, Perl, GNU Guile and Ruby.
[edit] Common applications using GStreamer
- Banshee
- BMPx
- Buzztard
- GnomeBaker
- Goobox
- Jokosher
- JuK
- Kaffeine
- Muine
- Pitivi
- Quod Libet
- Rhythmbox
- Sound Juicer
- Thoggen
- Totem
[edit] External links
- GStreamer
- Fluendo S.L., software company employing many of the core GStreamer developers including project co-founder Wim Taymans.
- An introduction to Gstreamer