
Release notes for GStreamer 0.11.91 "I will give you five magic beans!"
        


The GStreamer team is proud to announce a new release
in the 0.11.x unstable series of the
core of the GStreamer streaming media framework.


The 0.11.x series is an unstable series targeted at developers and will
eventually lead up to the stable 1.0 series.
It is not API or ABI compatible with the stable 0.10.x series.
It is, however, parallel installable with the 0.10.x series.


The 0.11.x series has improved memory management and features
various cleanups and enhancements.



This module, gstreamer, only contains core functionality.
For actual media playback, you will need other modules.

gst-plugins-base
contains a basic set of well-supported plug-ins
gst-plugins-good
contains a set of well-supported plug-ins under our preferred license
gst-plugins-ugly
contains a set of well-supported plug-ins, but might pose problems for
    distributors
gst-plugins-bad
contains a set of less supported plug-ins that haven't passed the
    rigorous quality testing we expect



  

Features of this release
    
      * Parallel installability with 0.10.x series
      * Threadsafe design and API
      * API cleanup and minor improvements
      * More hiding of structs that don't need to be public
      * Addition of SNAP flag for seek events
There were no bugs fixed in this release
    

Download

You can find source releases of gstreamer in the download directory:
http://gstreamer.freedesktop.org/src/gstreamer/

GStreamer Homepage

More details can be found on the project's website:
http://gstreamer.freedesktop.org/

Support and Bugs

We use GNOME's bugzilla for bug reports and feature requests:
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer

Developers

GStreamer is stored in Git, hosted at git.freedesktop.org, and can be cloned from there.
Interested developers of the core library, plug-ins, and applications should
subscribe to the gstreamer-devel list. If there is sufficient interest we
will create more lists as necessary.

        
Applications

Various applications have early ports to GStreamer 0.11 including Totem, RhythmBox,
Webkit, Jokosher, Transmageddon and others. We're working on porting more applications.

  
Contributors to this release
    
      * Anton Belka
      * Edward Hervey
      * Mark Nauwelaerts
      * Matej Knopp
      * Raimo Järvi
      * Reynaldo H. Verdejo Pinochet
      * Sebastian Dröge
      * Sebastian Rasmussen
      * Sreerenj Balachandran
      * Stefan Sauer
      * Thiago Santos
      * Tim-Philipp Müller
      * Vincent Penquerc'h
      * Wim Taymans
      * Youness Alaoui
      * Руслан Ижбулатов
 