GStreamer

From Wikipedia, the free encyclopedia

Gstreamer
Image:Gstreamer-logo.png
Latest release: 0.10.12 / 7 March 2007
OS: Cross-platform
Use: Multimedia framework
License: GNU Lesser General Public License
Website: 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 and its successor, the Nokia N800.

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/plugins. 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] Criticism

GStreamer has been criticized by KDE developers for not offering a stable ABI, which makes it unsuitable as the standard multimedia framework in KDE4 and could prevent its inclusion in the Linux Standard Base. This problem eventually led to the development of Phonon, a simplified multimedia framework for KDE4, which would provide wrappers for other multimedia frameworks, including GStreamer.[1]

[edit] Common applications using GStreamer

[edit] References

  1. ^ Scott Wheeler (2006-11-05). Multimedia Frameworks Yesterday, Today, Tomorrow. KDE Developer Journals. Retrieved on 2007-02-25.

[edit] External links