Jump to content

GStreamer

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 84.12.111.19 (talk) at 11:29, 16 October 2007 (→‎Criticism: Rephrased to make it a little less about KDE, and a little more about GStreamer). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Gstreamer
Stable release
0.10.14 / 3 August 2007
Repository
Operating systemCross-platform
TypeMultimedia framework
LicenseGNU Lesser General Public License
Websitegstreamer.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.

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. GStreamer is today maintained by Wim Taymans.

Internals technical overview

A bin or pipeline consists of elements/plugins. This is an example of a filter graph. 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.

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.

Since version 0.10 the plugins are grouped into three sets (named after the film The Good, the Bad and the Ugly),

Plugin set name Description
Good This package contains the GStreamer plugins from the "good" set, a set of good-quality plug-ins under the LGPL license.[1] or according to Gstreamer, "contains a set of well-supported plug-ins under our preferred license"[2]
Bad GStreamer Bad Plug-ins is 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.[3]
Ugly This packages contains plugins from the "ugly" set, a set of good-quality plug-ins that might pose distribution problems[4]

Within a distribution these plugins may be further grouped, for example in Ubuntu the "bad" and "ugly" set are grouped into the "Main" component and the "Multiverse" component.

Criticism

GStreamer has been criticized by KDE developers for not offering a stable ABI. 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.[5]. Some believe the failure to be adapted as the standard multimedia backend in its own right may impede GStreamer's inclusion in the Linux Standard Base

Common applications using GStreamer

References

  1. ^ gstreamer0.10-plugins-good package description (Ubuntu 6.10)
  2. ^ GStreamer release notes base plugins 0.10.0
  3. ^ gstreamer0.10-plugins-bad package description (Ubuntu 6.10)
  4. ^ gstreamer0.10-plugins-ugly package description (Ubuntu 6.10)
  5. ^ Scott Wheeler (2006-11-05). "Multimedia Frameworks Yesterday, Today, Tomorrow". KDE Developer Journals. Retrieved 2007-02-25.