posted by Christian F.K. Schaller on Tue 13th Jan 2004 19:28 UTC

"GStreamer Intro, Page 2"
GStreamer in the embeded world

From the early stages, GStreamer had a focus on keeping the core small and nimble enough to be useful on various embedded devices. GStreamer's first corporate sponsor was the embedded company RidgeRun Inc. working on a version of Linux for devices uses CPU's from Motorola. Unfortunately their cash reserves ran dry before they could get some products to market. The legacy of this work still remains however, and GStreamer can still today be easily slimmed down to fit on even small devices. GStreamer is also the media player back-end of the GPE media player from Philip Blundell maintains this player, he also made the Tremor Ogg Vorbis plugin in GStreamer.

GStreamer on the server

GStreamer has long been used by various groups and companies on the server side. Known uses have been as the backend for icecast webcasts, format converter at a telecom and media archiver at a radio station. Since the core GStreamer system doesn't contain any GUI code it is perfect for making server solutions.

There is also a new company being formed around GStreamer these days which will among other things produce server-based multimedia solutions based on GStreamer. We feel confident that the creation of this company, which already has its financing taken care of, will help boost our effort even further.

GStreamer on the desktop

The GStreamer team has from the beginning been very interested in seeing GStreamer integrated into the free desktop projects. As free software developers we are very keen to see the Linux desktop really becoming competitive with the commercial desktops out there and we feel that having top of the line multimedia capabilities is essential to making this happen. From the GStreamer point of view having a media player is just the tip of the iceberg in that regard.

GStreamer never had basic playback as a primary goal : it was, and to some degree still is (even if 'real' world concerns has made us increase the focus on it) a secondary concern to us. What has been our focus from the start is to make sure that GStreamer is powerful and flexible enough to allow people to make advanced media applications like non-linear editors, advanced audio mixers, sound editors, softh synthesizers, transcoders and so on. By having this focus we feel we have been able to make a much more clean and extensible design than we would have gotten if we focused on media playback and then added features to support other things as an afterthought.

As part of our desktop push we got GStreamer integrated into GNOME 2.2 and recently moved GStreamer CVS and website to be hosted on While the move has little practical effect we hope its sends out a clear message to developers that we see GStreamer not as the GNOME multimedia framework but as the Unix multimedia framework.

The use of GStreamer in GNOME

We introduced GStreamer at a basic level in GNOME 2.2 and the integration is planned to go much further in GNOME 2.6. This is what we are working on currently. A new addition that developers and users will notice in GStreamer 0.8.x is that it has a mixing interface designed by Ronald Bultje. This means that whenever someone writes an element for a sound system for GStreamer, all the core applications in GNOME will be able to do mixing and volume control on that sound system. Today if you want to add Irix audio volume control to GNOME you would need to add it to a lot of separate applications like the gnome-mixer, the GNOME volume applet, ACME (the gnome multimedia keyboard daemon) and any other GNOME application which adjusts volume and so on. No more. In GNOME 2.6 we plan to have all these systems use GStreamer which means that if a Irix audio system plugin is written for GStreamer then all the basic applications in GNOME can adjust the volume on an Irix system. Currently we have an OSS and an ALSA plug-ins which support this mixing interface, but there are work being done on trying to get a Sun Audio one also. Others will be added as they are contributed. Note that this new interface is for hardware mixing, software mixing we have of course been doing from the beginning. In GNOME 2.6 there will also be two new applications using GStreamer. Sound-Juicer is made by Ross Burton and is a neat little cd-ripping application. Rhythmbox, maintained by Colin Walters, is an advanced music playback application comparable to Apple's iTunes. We are also working hard on offering good video playback and video encoding, so even if we will not bundle any video player with GNOME 2.6 I do expect that some of the distributors will start to bundle Totem or gst-player during the lifetime of GNOME 2.6. And then if things go as planned I guess we see a GStreamer-using video player and maybe even a video recorder bundled with GNOME 2.8. Of course the main problem here in regards to distributors in the issue of a lot of the common media formats out there being covered by a host of patents in some countries, with the US being the one hardest to ignore, which makes it problematic for most Linux distributions and Unix vendors to ship GStreamer or any other media framework with support for these formats enabled.

This distribution problem is why supporting formats such as Ogg Vorbis, Ogg Theora, Ogg Tarkin, Matroska and FLAC both in regards to decoding, but also for encoding has been a top priority for us. We want to be a enabler for people in regards to moving to using free formats for their own stuff. In fact we have a really cool announcements for the world soon in that regard.

The use of GStreamer in KDE

GStreamer is not officially part of KDE today which means that there is naturally a lot less integration of GStreamer into the core of KDE. The first release that might see GStreamer officially adopted for KDE is KDE 4.0, as that is first opportunity where the current arts system can/should be deprecated.

This means that GStreamer use is currently at a more experimental level in the KDE world with Scott Wheeler's JuK being the only major application which offers using GStreamer as its backend. It uses the KDE GStreamer bindings developed by Tim Jansen which are hosted in KDE CVS currently.

There are some other KDE projects apart from Juk looking into using GStreamer out there, so hopefully when the times comes for KDE to choose the choice will be easy to make. Not only will such an event make sure that multimedia development effort is focused on going forward instead of redundant re-implementation, but it will be a portal to taking things a huge step forward in regards to cross-desktop interoperability and co-operation.

Table of contents
  1. "GStreamer Intro, Page 1"
  2. "GStreamer Intro, Page 2"
  3. "GStreamer Intro, Page 3"
e p (0)    53 Comment(s)

Technology White Papers

See More