All Topics  
GStreamer

 

   Email Print
   Bookmark   Link






 

GStreamer



 
 
GStreamer is a pipeline based multimedia framework
Multimedia framework

A multimedia framework is a software framework that handles Electronic media on a computer and through a network. A good multimedia framework offers an intuitive Application programming interface and a modular architecture to easily add support for new codecs, container formats and Streaming media....
 written in the C programming language
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
 with the type system based on GObject
GObject

The GLib Object System, or GObject, is a free software software library that provides a portable object system and transparent cross-language interoperability....
. GStreamer allows a programmer to create a variety of media-handling components, including simple audio
Audio frequency

An audio frequency , or audible frequency is characterized as a periodic vibration whose frequency is audible to the average human. While the range of frequencies that any individual can hear is largely related to environmental factors, the generally accepted standard range of audible frequencies is 20 to 20,000 hertz....
 playback, audio and video playback, recording, streaming, and editing. The pipeline design serves as a base to create many types of multimedia
Multimedia

Multimedia is media and content that utilizes a combination of different content format. The term can be used as a noun or as an adjective describing a medium as having multiple content forms....
 applications such as video editors
Video editing

The term video editing can refer to:* non-linear editing system, using computers with video editing software* linear video editing, using videotape...
, streaming media broadcasters, and media players.

Designed to be cross-platform
Cross-platform

In computing, cross-platform is a term used to refer to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms....
, it is known to work on Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
 (x86, PowerPC
PowerPC

PowerPC is a RISC instruction set architecture created by the 1991 Apple Inc.?IBM?Motorola alliance, known as AIM alliance. Originally intended for personal computers, PowerPC CPUs have since become popular embedded system and high-performance processors....
 and ARM
ARM architecture

The ARM architecture is a 32-bit RISC central processing unit architecture developed by ARM Limited that is widely used in embedded system designs....
), Solaris (x86 and SPARC
SPARC

SPARC is a Reduced Instruction Set Computer microprocessor instruction set Computer architecture originally designed in 1985 by Sun Microsystems....
), Mac OS X
Mac OS X

Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
, Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 and OS/400
OS/400

IBM i is an operating system used on IBM Power Systems, a unified server platform from the former IBM System i and IBM System p servers. IBM i was formerly known as i5/OS or OS/400....
.






Discussion
Ask a question about 'GStreamer'
Start a new discussion about 'GStreamer'
Answer questions from other users
Full Discussion Forum



Encyclopedia


GStreamer is a pipeline based multimedia framework
Multimedia framework

A multimedia framework is a software framework that handles Electronic media on a computer and through a network. A good multimedia framework offers an intuitive Application programming interface and a modular architecture to easily add support for new codecs, container formats and Streaming media....
 written in the C programming language
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
 with the type system based on GObject
GObject

The GLib Object System, or GObject, is a free software software library that provides a portable object system and transparent cross-language interoperability....
. GStreamer allows a programmer to create a variety of media-handling components, including simple audio
Audio frequency

An audio frequency , or audible frequency is characterized as a periodic vibration whose frequency is audible to the average human. While the range of frequencies that any individual can hear is largely related to environmental factors, the generally accepted standard range of audible frequencies is 20 to 20,000 hertz....
 playback, audio and video playback, recording, streaming, and editing. The pipeline design serves as a base to create many types of multimedia
Multimedia

Multimedia is media and content that utilizes a combination of different content format. The term can be used as a noun or as an adjective describing a medium as having multiple content forms....
 applications such as video editors
Video editing

The term video editing can refer to:* non-linear editing system, using computers with video editing software* linear video editing, using videotape...
, streaming media broadcasters, and media players.

Designed to be cross-platform
Cross-platform

In computing, cross-platform is a term used to refer to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms....
, it is known to work on Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
 (x86, PowerPC
PowerPC

PowerPC is a RISC instruction set architecture created by the 1991 Apple Inc.?IBM?Motorola alliance, known as AIM alliance. Originally intended for personal computers, PowerPC CPUs have since become popular embedded system and high-performance processors....
 and ARM
ARM architecture

The ARM architecture is a 32-bit RISC central processing unit architecture developed by ARM Limited that is widely used in embedded system designs....
), Solaris (x86 and SPARC
SPARC

SPARC is a Reduced Instruction Set Computer microprocessor instruction set Computer architecture originally designed in 1985 by Sun Microsystems....
), Mac OS X
Mac OS X

Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
, Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 and OS/400
OS/400

IBM i is an operating system used on IBM Power Systems, a unified server platform from the former IBM System i and IBM System p servers. IBM i was formerly known as i5/OS or OS/400....
. GStreamer has bindings for programming-languages like Python
Python (programming language)

Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python's core syntax and semantics are Minimalism , while the standard library is large and comprehensive....
, C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
, Perl
Perl

In computer programming, Perl is a high-level programming language, List of programming languages by category, Interpreter , dynamic programming language....
, GNU Guile
GNU Guile

GNU Guile is an interpreter /virtual machine for the Scheme . It was first released in 1993. Guile includes modularized extensions for POSIX system calls, APL array functionality, and others, packaged as an Object library Library ....
 and Ruby. GStreamer is free software
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
, licensed under the GNU Lesser General Public License
GNU Lesser General Public License

The GNU Lesser General Public License or LGPL is a free software license published by the Free Software Foundation . It was designed as a compromise between the strong-copyleft GNU General Public License and permissive licenses such as the BSD licenses and the MIT License....
.

Distribution


The GNOME
Gnome

A gnome is a mythical creature characterized by its extremely small size and wiktionary:subterranean lifestyle. The word gnome is derived from the New Latin gnomus....
 desktop environment
Desktop environment

In graphical computing, a desktop environment commonly refers to a style of graphical user interface that is based on the desktop metaphor which can be seen on most modern personal computers today....
, the primary user of GStreamer technology, has included GStreamer since GNOME version 2.2 and encourages GNOME and GTK+
GTK+

GTK+, or The GIMP Toolkit, is a cross-platform widget toolkit for creating graphical user interfaces. It is one of the most popular toolkits for the X Window System, along with Qt ....
 applications to use it. Other projects also use it, such as the Chameleo media platform, Phonon
Phonon (KDE)

Phonon is the multimedia API for KDE 4. Phonon was created to allow KDE 4 to be independent of any single multimedia framework such as GStreamer or xine and to provide a stable API for KDE 4's lifetime....
 and the Songbird
Songbird (software)

Songbird is a free-software media player and web browser developed as open source by a group known as Pioneers of the Inevitable , with a stated mission "to incubate Songbird, the first Web player, to catalyze and champion a diverse, open Media Web."...
 media player.

GStreamer also operates in embedded devices like the Nokia 770, N800
Nokia N800

The Nokia N800 Internet Tablet is a wireless Internet appliance from Nokia, originally announced at the Las Vegas, Nevada Consumer Electronics Show Summit in January 2007....
, Palm Pre
Palm Pre

The Palm Pre is an internet-connected multimedia smartphone designed and marketed by Palm, Inc. with a multi-touch screen and a sliding keyboard....
 and N810
Nokia N810

The Nokia N810 Internet Tablet is an Internet appliance from Nokia, announced on 17 October, 2007 at the Web 2.0 Summit in San Francisco. Despite Nokia's strong association with cellular products, the N810 is not a phone, but instead allows the user to browse the Internet and communicate using Wi-Fi networks or with a mobile phone via Bluetoo...
 Internet Tablets running the Maemo.

History and development


Erik Walthinsen founded the GStreamer project in 1999. Many of its core design ideas came from a research project at the Oregon Graduate Institute. Wim Taymans
Wim Taymans

Wim Taymans is a software developer and Belgian national based in Barcelona, Spain. Taymans started his career in multimedia development on the Commodore 64 writing various games and demos....
 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
Freedesktop.org

freedesktop.org is a project to work on interoperability and shared base technology for free software desktop environments for the X Window System on Linux and other Unix-like operating systems....
 hosts the GStreamer project, which accordingly aims to improve interoperability and to share technology between free desktops. As of 2008, Wim Taymans maintains GStreamer.

The current 0.10 stable release series began with the 0.10.0 release in December 2005. It has maintained API and ABI
Application binary interface

In computer software, an application binary interface describes the low-level interface between an application program and the operating system or an other application....
 compatibility since.

Technical overview


GStreamer processes media by connecting a number of processing elements into a pipeline. Each element is provided by a plugin
Plugin

In computing, a plug-in consists of a computer program that interacts with a host application software to provide a certain, usually very specific, function "on demand"....
. Elements can be grouped into bins, which can be further aggregated, thus forming a hierarchical graph. This is an example of a filter graph
Filter graph

A filter graph is used in multimedia processing. For example to capture video from a webcam. Filter take input, process it or change the input, and then output the process data....
.

Elements communicate by means of pads. A source pad on one element can be connected to a sink pad on another. When the pipeline is in the playing state, data buffers flow from the source pad to the sink pad. Pads negotiate the kind of data that will be sent using capabilities.

The diagram to the right could exemplify playing an MP3
MP3

MPEG-1 Audio Layer 3, more commonly referred to as MP3, is a digital audio Encoder format using a form of lossy data compression. It is a common audio format for consumer audio storage, as well as a de facto standard encoding for the transfer and playback of music on digital audio players....
 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
Pulse-code modulation

Pulse-code modulation is a digital representation of an analog Signalling where the magnitude of the signal is sampling regularly at uniform intervals, then Quantization to a series of symbols in a numeric code....
 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
Plugin

In computing, a plug-in consists of a computer program that interacts with a host application software to provide a certain, usually very specific, function "on demand"....
 architecture which makes the most of GStreamer's functionality implemented as shared libraries
Library (computer science)

In computer science, a library is a collection of subroutines or Class used to develop software. Libraries contain code and data that provide services to independent programs....
. 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 codec
Codec

A codec is a device or computer program capable of encoder and/or Decoding methods a digital data stream or signal . The word codec is a portmanteau of 'compressor-decompressor' or, most commonly, 'coder-decoder'....
s, container format
Container format

A container or wrapper format is a file format whose specifications regard only the way data are stored within the file, and how many metadata could or are effectively stored, whereas no specific codification of the data themselves is implied or specified....
s, input/output drivers
Device driver

In computing, a device driver or software driver is a computer program allowing higher-level computer programs to interact with a hardware device....
 and effects.

Plugins can be installed semi-automatically when they are 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
The Good, the Bad and the Ugly

The Good, the Bad and the Ugly is a 1966 in film Cinema of Italy epic Western spaghetti western film directed by Sergio Leone, starring Clint Eastwood, Lee Van Cleef, and Eli Wallach in the title roles....
),

Plugin set name Description
Good This package contains the GStreamer plugins from the "good" set, a set of high 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 "Multiverse" components.

External links

  • project on Ohloh
    Ohloh

    Ohloh is a website which provides a web services suite and online community platform that aims to map the landscape of open source software development....
  • [irc://irc.freenode.net/gstreamer #gstreamer] on freenode
    Freenode

    freenode, formerly known as Open Projects Network, is a popular Internet Relay Chat computer network used to discuss peer-directed projects....