Everything about Gstreamer totally explained
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's known to work on
Linux (
x86,
PowerPC and
ARM),
Solaris (x86 and
SPARC),
Mac OS X,
Microsoft Windows and
OS/400. GStreamer has bindings for programming-languages like
Python,
C++,
Perl,
GNU Guile and
Ruby. GStreamer is
free software, licensed under the
GNU Lesser General Public License.
Distribution
The
GNOME desktop environment, the primary user of GStreamer technology, has included GStreamer since GNOME version 2.2 and encourages GNOME and GTK+ applications to use it. Other projects also use it, such as
Chameleo media platform,
Phonon and the
Songbird media player.
GStreamer also operates in embedded devices like the
Nokia 770,
N800 and
N810 Internet Tablets running the
Internet Tablet OS.
History and development
Erik Walthinsen founded the GStreamer project in 1999. Many of its core design ideas came from a research project at the
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. Brock A. Frazier designed the GStreamer logo; Frazier worked for an embedded Linux company called RidgeRun, which also became 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.
freedesktop.org hosts the GStreamer project, which accordingly aims to improve interoperability and to share technology between free desktops. Wim Taymans, as of 2007, maintains GStreamer.
The 0.10 series is developed since end of 2005 . It is
API and
ABI stable since.
Technical overview
A
bin or
pipeline consists of elements which are provided by
plugins. This exemplifies a
filter graph. Bins can contain other bins to form a hierarchical 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 exemplify playing an
MP3 file using GStreamer. The file source reads an MP3 file from a computer's hard-drive and sends it to the MP3 decoder. The decoder decodes the file data and converts it into
PCM samples which then pass 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 the 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 get dynamically loaded to support a wide spectrum of
codecs,
container formats,
input/output drivers and effects.
Plugins can be installed semiautomatically when they're first needed. For that purpose distributions can register a backend that resolves feature-descriptions to package-names.
Since version 0.10 the plugins come 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. or according to Gstreamer, "contains a set of well-supported plug-ins under our preferred license" |
| Bad |
GStreamer Bad Plug-ins comprises a set of plug-ins not up-to-par compared to the rest. They might closely approach good-quality plugins, but they lack something: perhaps a good code review, some documentation, a set of tests, a real live maintainer, or some actual wide use. |
| Ugly |
This packages contains plugins from the "ugly" set, a set of good-quality plug-ins that might pose distribution problems |
Individual distributions may further sub-classify these plugins: for example
Ubuntu groups the "bad" and "ugly" sets into the "Universe" or the
Ubuntu#Package classification and support|"Multiverse" components.
Further Information
Get more info on 'Gstreamer'.
|
External Link Exchanges
Do you know how hard it is to get a link from a large encyclopaedia? Well we're different and will prove it. To get a link from us just add the following HTML to your site on a relevant page:
<a href="http://gstreamer.totallyexplained.com">GStreamer Totally Explained</a>
Then simply click through this link from your web page. Our crawlers will verify your link, extract the title of your web page and instantly add a link back to it. If you like you can remove the words Totally Explained and embed the link in article text.
As long as your link remains in place, we'll keep our link to you right here. Please play fair - our crawlers are watching. Your site must be closely related to this one's topic. Any kind of spamming, dubious practises or removing the link will result in your link from us being dropped and, potentially, your whole site being banned. |