
Release notes for GStreamer 0.11.92 "High Hopes"
        


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
      * API cleanup and minor API improvements
      * GstTagList is a refcounted type now
      * Lots of bugfixes, cleanup and other improvements
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
    
      * Alban Browaeys
      * Andre Moreira Magalhaes (andrunko)
      * Anton Belka
      * Bastien Nocera
      * Brian Cameron
      * Edward Hervey
      * Havard Graff
      * Josep Torra
      * Luis de Bethencourt
      * Mark Nauwelaerts
      * Mike Ruprecht
      * Sebastian Dröge
      * Sreerenj Balachandran
      * Stefan Sauer
      * Tim-Philipp Müller
      * Wim Taymans
 