GStreamer
Encyclopedia
GStreamer is a pipeline-based multimedia framework
Multimedia framework
A multimedia framework is a software framework that handles media on a computer and through a network. A good multimedia framework offers an intuitive API and a modular architecture to easily add support for new audio, video and container formats and transmission protocols...

 written in the C programming language
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

 with the type system
Type system
A type system associates a type with each computed value. By examining the flow of these values, a type system attempts to ensure or prove that no type errors can occur...

 based on GObject
GObject
The GLib Object System, or GObject, is a free software library providing 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...

 playback, audio and video playback, recording
Recording
Recording is the process of capturing data or translating information to a recording format stored on some storage medium, which is often referred to as a record or, if an auditory medium, a recording....

, streaming
Streaming media
Streaming media is multimedia that is constantly received by and presented to an end-user while being delivered by a streaming provider.The term "presented" is used in this article in a general sense that includes audio or video playback. The name refers to the delivery method of the medium rather...

 and editing. The pipeline design serves as a base to create many types of multimedia
Multimedia
Multimedia is media and content that uses a combination of different content forms. The term can be used as a noun or as an adjective describing a medium as having multiple content forms. The term is used in contrast to media which use only rudimentary computer display such as text-only, or...

 applications such as video editors
Video editing
The term video editing can refer to:* Linear video editing, using video tape* Non-linear editing system , using computers with video editing software* Offline editing* Online editing...

, streaming media broadcasters, and media players.

Designed to be cross-platform
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred 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 Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 (x86, PowerPC
PowerPC
PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM...

 and ARM
ARM architecture
ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...

), Solaris (Intel and SPARC
SPARC
SPARC is a RISC instruction set architecture developed by Sun Microsystems and introduced in mid-1987....

) and OpenSolaris
OpenSolaris
OpenSolaris was an open source computer operating system based on Solaris created by Sun Microsystems. It was also the name of the project initiated by Sun to build a developer and user community around the software...

, FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...

, OpenBSD
OpenBSD
OpenBSD is a Unix-like computer operating system descended from Berkeley Software Distribution , a Unix derivative developed at the University of California, Berkeley. It was forked from NetBSD by project leader Theo de Raadt in late 1995...

, NetBSD
NetBSD
NetBSD is a freely available open source version of the Berkeley Software Distribution Unix operating system. It was the second open source BSD descendant to be formally released, after 386BSD, and continues to be actively developed. The NetBSD project is primarily focused on high quality design,...

, Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

, Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

 and OS/400
OS/400
IBM i is an EBCDIC based operating system that runs on IBM Power Systems. It is the current evolution of the operating system named i5/OS which was originally named OS/400 when it was introduced with the AS/400 computer system in 1988....

. GStreamer has bindings
Language binding
In computing, a binding from a programming language to a library or OS service is an API providing that service in the language.Many software libraries are written in systems programming languages such as C or C++...

 for programming-languages like Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

, Vala
Vala (programming language)
Vala is a programming language created with the goal of bringing modern language features to C, with no added runtime needs and with little overhead, by targeting the GObject object system. It is being developed by Jürg Billeter and Raffaele Sandrini. The syntax borrows heavily from C#...

, C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

, Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

, GNU Guile
GNU Guile
GNU Guile is an interpreter/virtual machine for the Scheme programming language. It was first released in 1993. Guile includes modularized extensions for POSIX system calls, APL array functionality, and others packaged as an object library...

 and Ruby. GStreamer is 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 or GPL and permissive licenses such as the BSD licenses and the MIT License...

.

Distribution

The GNOME
GNOME
GNOME is a desktop environment and graphical user interface that runs on top of a computer operating system. It is composed entirely of free and open source software...

 desktop environment
Desktop environment
In graphical computing, a desktop environment commonly refers to a style of graphical user interface derived from the desktop metaphor that is seen on most modern personal computers. These GUIs help the user in easily accessing, configuring, and modifying many important and frequently accessed...

, the primary user of GStreamer technology, has included GStreamer since GNOME version 2.2 and encourages GNOME and GTK+
GTK+
GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...

 applications to use it. Other projects also use or support it, such as the Chameleo media platform, the Phonon
Phonon (KDE)
Phonon is the multimedia API provided by Qt and is the standard abstraction for handling multimedia streams within the KDE Software Compilation 4....

 media framework and the Songbird
Songbird (software)
Songbird is a free and open source software audio player and web browser, 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 Palm Pre
Palm Pre
The Palm Pre is a multimedia smartphone designed and marketed by Palm with a multi-touch screen and a sliding keyboard. The smartphone was the first to use Palm's Linux based mobile operating system, webOS...

, and the Nokia 770, N800
Nokia N800
The Nokia N800 Internet tablet is a wireless Internet appliance from Nokia, originally announced at the Las Vegas CES 2007 Summit in January 2007. N800 allows the user to browse the Internet and communicate using Wi-Fi networks or with mobile phone via Bluetooth. The N800 was developed as the...

, 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...

 and N900
Nokia N900
The Nokia N900 is a smartphone made by Nokia. It supersedes the Nokia N810. Its default operating system, Maemo 5, is a Linux-based OS originally developed for the Nokia 770 Internet Tablet. It is the first Nokia device based upon the Texas Instruments OMAP3 microprocessor with the ARM Cortex-A8...

 Internet Tablets running the Maemo
Maemo
Maemo is a software platform developed by the Maemo community for smartphones and Internet tablets. It is based on the Debian Linux distribution, but has no relation to it...

 operating system.

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. He was known in the Commodore 64 coding community under the nickname The Wim...

 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 first major release was 0.1.0 which was announced on 11 January 2001. Not long after, GStreamer picked up its first commercial backer, an embedded Linux
Embedded Linux
Embedded Linux is the use of Linux in embedded computer systems such as mobile phones, personal digital assistants, media players, set-top boxes, and other consumer electronics devices, networking equipment, machine control, industrial automation, navigation equipment and medical instruments...

 company called RidgeRun. Towards the end of January 2001, they hired Erik Walthinsen to develop methods for embedding GStreamer in smaller (cell phone-class) devices. Another RidgeRun employee, Brock A. Frazier, designed the GStreamer logo. RidgeRun later ran into financial trouble and had to let its staff go, including Erik Walthinsen. GStreamer progress was mostly unaffected.

The project released a series of major releases with 0.2.0 coming out in July 2001, 0.4.0 in September 2002, and 0.8.0 in March 2004. During that period the project also changed its versioning strategy and while the first releases were simply new versions, later on the middle number started signifying release series. This meant the project did release a string of 0.6.x and 0.8.x releases which was meant to stay binary compatible within those release series. Erik Walthinsen more or less left GStreamer development behind during this time as he went on to focus on other ventures.

During the 0.8.x release series, the project faced some difficulties. The 0.8.x series was not very popular in the Linux community mostly because of stability issues and a serious lack of features compared to competing projects like Xine
Xine
xine is a multimedia playback engine for Unix-like operating systems released under the GNU General Public License. xine is built around a shared library that supports different frontend player applications. Another important feature of xine is the ability to manually correct the synchronization...

, MPlayer
MPlayer
MPlayer is a free and open source media player. The program is available for all major operating systems, including Linux and other Unix-like systems, Microsoft Windows and Mac OS X. Versions for OS/2, Syllable, AmigaOS and MorphOS are also available. The Windows version works, with some minor...

 or VLC
VLC
VLC may refer to:* Valencia Airport , an airport near Valencia, Spain* VLC media player, a free software cross-platform multimedia player and framework...

. The project also suffered a bit in terms of lack of leadership as Wim Taymans, who had been the project lead since Erik Walthinsen had left, had also mostly ceased active participation.

In 2004, a new company was founded, Fluendo
Fluendo
Fluendo DVD Player is one of the first products that can be bought that allows legal/licensed DVD playback for Unix/Linux users...

, which wanted to use GStreamer to write a streaming server Flumotion
Flumotion
Flumotion Services, S.A. is a Spanish company based in Barcelona, which has developed a multiformat streaming media platform to publish audio and video content via the internet...

 and also provide multimedia solutions for GStreamer. During this time, Fluendo hired most of the core developers including Wim Taymans and attracted the support of companies such as Nokia
Nokia
Nokia Corporation is a Finnish multinational communications corporation that is headquartered in Keilaniemi, Espoo, a city neighbouring Finland's capital Helsinki...

 and Intel to bring GStreamer to a professional level and drive community adoption. With Wim Taymans back at the helm, the core of GStreamer was redesigned and became what is the current 0.10.x series, which had its first release in December 2005.

With a new stable core in place, GStreamer gained in popularity in 2006, being used by media players including Totem
Totem (media player)
Totem is a media player for the GNOME computer desktop environment which runs on GNU/Linux, Solaris, BSD and other Unix and Unix-like systems. It is officially included in GNOME starting from version 2.10 , but de facto it was already included in most GNOME environments...

, Rhythmbox
Rhythmbox
Rhythmbox is an audio player that plays and helps organize digital music. Originally inspired by Apple's iTunes, it is free software, designed to work well under the GNOME Desktop using the GStreamer media framework. However, Rhythmbox functions on desktop environments other than GNOME.-Music...

 and Banshee
Banshee (music player)
Banshee is an open-source media player, called Sonance until 2005. Built upon Mono and Gtk#, it uses the GStreamer multimedia platform for encoding and decoding various media formats, including Ogg Vorbis, MP3 and FLAC. Banshee can play and import audio CDs and supports many portable media players,...

 with many more to follow.

In 2007, most of the core GStreamer developers left Fluendo, including GStreamer maintainer Wim Taymans who went on to co-found Collabora Multimedia
Collabora
Collabora Ltd. is a private company founded by Robert McQueen, Robert Taylor and Philippe Kalaf based in Cambridge, United Kingdom, with offices in Cambridge, Montreal and Barcelona. Collabora's mission is to make Open Source the de-facto standard in the industry. It does this by providing...

 together with other GStreamer veterans, while others joined Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...

, Oblong and Songbird
Songbird (software)
Songbird is a free and open source software audio player and web browser, with a stated mission "to incubate Songbird, the first Web player, to catalyze and champion a diverse, open Media Web."...

.

GStreamer has also continued seeing both open source and commercial success and adoption by many different corporations (Nokia
Nokia
Nokia Corporation is a Finnish multinational communications corporation that is headquartered in Keilaniemi, Espoo, a city neighbouring Finland's capital Helsinki...

, Motorola
Motorola
Motorola, Inc. was an American multinational telecommunications company based in Schaumburg, Illinois, which was eventually divided into two independent public companies, Motorola Mobility and Motorola Solutions on January 4, 2011, after losing $4.3 billion from 2007 to 2009...

, Texas Instruments
Texas Instruments
Texas Instruments Inc. , widely known as TI, is an American company based in Dallas, Texas, United States, which develops and commercializes semiconductor and computer technology...

, Freescale
Freescale Semiconductor
Freescale Semiconductor, Inc. is a producer and designer of embedded hardware, with 17 billion semiconductor chips in use around the world. The company focuses on the automotive, consumer, industrial and networking markets with its product portfolio including microprocessors, microcontrollers,...

, Tandberg
Tandberg
This article is about the video-conferencing vendor, a Cisco company. Other companies with the same name such as Tandberg Television or Tandberg Data for data storage: see here and here...

, Intel and many more) and has become a very powerful cross platform multimedia framework.

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. It was founded by Havoc Pennington from Red Hat in March 2000.The organisation focuses on the user....

 hosts the GStreamer project, which accordingly aims to improve interoperability and to share technology between free desktops. Since 2005 Wim Taymans has maintained GStreamer.

The 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 another application.- Description :...

 compatibility since.

The GStreamer community is currently deciding on when to fork for a new development series and aim to release GStreamer 1.0.

Technical overview


GStreamer processes media by connecting a number of processing elements into a pipeline. Each element is provided by a plug-in. 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. Filters take input, process it or change the input, and then output the process data. An example of a filter, would be a video codec that takes raw uncompressed video and compresses it using a video...

.

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 above-right could exemplify playing an MP3
MP3
MPEG-1 or MPEG-2 Audio Layer III, more commonly referred to as MP3, is a patented digital audio encoding format using a form of lossy data compression...

 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 method used to digitally represent sampled analog signals. It is the standard form for digital audio in computers and various Blu-ray, Compact Disc and DVD formats, as well as other uses such as digital telephone systems...

 samples which then pass to the ALSA sound-driver. The ALSA sound-driver sends the PCM sound samples to the computer's speakers.

Plug-ins

GStreamer uses a plug-in 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 resources used to develop software. These may include pre-written code and subroutines, classes, values or type specifications....

. GStreamer's base functionality contains functions for registering and loading plug-ins and for providing the fundamentals of all classes in the form of base classes. Plug-in libraries get dynamically loaded to support a wide spectrum of codec
Codec
A codec is a device or computer program capable of encoding or decoding a digital data stream or signal. The word codec is a portmanteau of "compressor-decompressor" or, more commonly, "coder-decoder"...

s, container format
Container format
A container or wrapper format is a meta-file format whose specification describes how different data elements and metadata coexist in a computer file....

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.

Plug-ins 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 plug-ins 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 Italian epic spaghetti western film directed by Sergio Leone, starring Clint Eastwood, Lee Van Cleef, and Eli Wallach in the title roles. The screenplay was written by Age & Scarpelli, Luciano Vincenzoni and Leone, based on a story by Vincenzoni and Leone...

),
Plug-in set name Description
Good This package contains the GStreamer plug-ins 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 plug-ins, 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 package contains plug-ins from the "ugly" set, a set of good-quality plug-ins that might pose distribution problems.


Individual distributions may further sub-classify these plug-ins: for example Ubuntu
Ubuntu (operating system)
Ubuntu is a computer operating system based on the Debian Linux distribution and distributed as free and open source software. It is named after the Southern African philosophy of Ubuntu...

 groups the "bad" and "ugly" sets into the "Universe" or the "Multiverse" components.

There's also a separate GStreamer FFmpeg plug-in, which is a FFmpeg
FFmpeg
FFmpeg is a free software project that produces libraries and programs for handling multimedia data. The most notable parts of FFmpeg are libavcodec, an audio/video codec library used by several other projects, libavformat, an audio/video container mux and demux library, and the ffmpeg command line...

-based plug-in that supports many media formats such as MPEG-1
MPEG-1
MPEG-1 is a standard for lossy compression of video and audio. It is designed to compress VHS-quality raw digital video and CD audio down to 1.5 Mbit/s without excessive quality loss, making video CDs, digital cable/satellite TV and digital audio broadcasting possible.Today, MPEG-1 has become...

, MPEG-2
MPEG-2
MPEG-2 is a standard for "the generic coding of moving pictures and associated audio information". It describes a combination of lossy video compression and lossy audio data compression methods which permit storage and transmission of movies using currently available storage media and transmission...

, MPEG-4
MPEG-4
MPEG-4 is a method of defining compression of audio and visual digital data. It was introduced in late 1998 and designated a standard for a group of audio and video coding formats and related technology agreed upon by the ISO/IEC Moving Picture Experts Group under the formal standard ISO/IEC...

, H.261
H.261
H.261 is a ITU-T video coding standard, ratified in November 1988. It is the first member of the H.26x family of video coding standards in the domain of the ITU-T Video Coding Experts Group , and was the first video codec that was useful in practical terms.H.261 was originally designed for...

, H.263
H.263
H.263 is a video compression standard originally designed as a low-bitrate compressed format for videoconferencing. It was developed by the ITU-T Video Coding Experts Group in a project ending in 1995/1996 as one member of the H.26x family of video coding standards in the domain of the ITU-T.H.263...

, H.264
H.264/MPEG-4 AVC
H.264/MPEG-4 Part 10 or AVC is a standard for video compression, and is currently one of the most commonly used formats for the recording, compression, and distribution of high definition video...

, RealVideo
RealVideo
RealVideo is a suite of proprietary video compression formats developed by RealNetworks – the specific format changes with the version. It was first released in 1997 and is at version 10. RealVideo is supported on many platforms, including Windows, Mac, Linux, Solaris, and several mobile...

, MP3
MP3
MPEG-1 or MPEG-2 Audio Layer III, more commonly referred to as MP3, is a patented digital audio encoding format using a form of lossy data compression...

, WMV
Windows Media Video
'Windows Media Video is a video compression format for several proprietary codecs developed by Microsoft. The original video format, known as WMV, was originally designed for Internet streaming applications, as a competitor to RealVideo. The other formats, such as WMV Screen and WMV Image, cater...

, FLV, etc. It was first released on 26 February 2004, with version number 0.7.1.

See also

  • OggConvert
    OggConvert
    OggConvert is an Open source tool, released under the GNU LGPL, for converting audio and video files of various types into the free Ogg Vorbis audio format, and the Theora, VP8 and Dirac video formats. It supports Ogg, Matroska and WebM containers for output. It is developed by a single author,...

    , a simple GUI front end
  • Helix DNA
    Helix (project)
    Helix DNA is a project to produce software that can play audio and video media in various formats, aid in producing such media, and serve them over a network. It is intended as a largely free and open source digital media framework that runs on numerous operating systems and processors and was...

  • MPlayer
    MPlayer
    MPlayer is a free and open source media player. The program is available for all major operating systems, including Linux and other Unix-like systems, Microsoft Windows and Mac OS X. Versions for OS/2, Syllable, AmigaOS and MorphOS are also available. The Windows version works, with some minor...

  • VLC
    VLC media player
    VLC media player is a free and open source media player and multimedia framework written by the VideoLAN project.VLC is a portable multimedia player, encoder, and streamer supporting many audio and video codecs and file formats as well as DVDs, VCDs, and various streaming protocols. It is able to...

  • XBMC Media Center
  • Xine
    Xine
    xine is a multimedia playback engine for Unix-like operating systems released under the GNU General Public License. xine is built around a shared library that supports different frontend player applications. Another important feature of xine is the ability to manually correct the synchronization...

  • PiTiVi
    PiTiVi
    PiTiVi is a open source non-linear video editor developed by Collabora and contributors from the worldwide community. It is licensed under the terms of the GNU Lesser General Public License. PiTiVi is designed to be intuitive video editing software that integrates well in the GNOME desktop...

  • Jokosher
    Jokosher
    Jokosher is a free, non-linear multi-track digital audio editor, the source code of which is released under the GNU GPL. It is being developed in Python, using the GTK+ interface and GStreamer as an audio back-end, initially just for the Linux operating system but now also with support for Windows...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK