
Release notes for GStreamer Base Plug-ins 0.11.1 "A handful sometimes, A heartful always"
        


The GStreamer team is proud to announce a new release
in the 0.11.x unstable series of the
GStreamer Base Plug-ins.


The 0.11.x series is an unstable series targeted at developers.
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.



This module contains a set of reference plugins, base classes for other
plugins, and helper libraries.

This module is kept up-to-date together with the core developments.  Element
writers should look at the elements in this module as a reference for
their development.

This module contains elements for, among others:

  device plugins: x(v)imagesink, alsa, v4lsrc, cdparanoia
  containers: ogg
  codecs: vorbis, theora
  text: textoverlay, subparse
  sources: audiotestsrc, videotestsrc, gnomevfssrc, giosrc
  network: tcp
  typefind functions
  audio processing: audioconvert, adder, audiorate, audioresample, volume
  visualisation: libvisual
  video processing: videoconvert
  aggregate elements: uridecodebin, playbin, decodebin, encodebin
  libraries: app, audio, cdda, fft, interfaces, netbuffer, pbutils, riff, rtp, rtsp, sdp, tag, video


Other modules containing plug-ins are:


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
      * Rename GstXOverlay -> GstVideoOverlay
      * Reworked audio caps
      * Support for multiple frames in buffers
      * Add video colorimetry support
There were no bugs fixed in this release
    

Download

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

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
  
Contributors to this release
    
      * Age Bosma
      * Alessandro Decina
      * Alex Lancaster
      * Benjamin Otte
      * Christian Fredrik Kalager Schaller
      * David Schleef
      * Edward Hervey
      * Erich Schubert
      * Iago Toral
      * Jan Schmidt
      * Jason Kivlighn
      * Josep Torra
      * LoneStar
      * Mark Nauwelaerts
      * Monty Montgomery
      * Nicolas Dufresne
      * Olivier Crête
      * Raimo Järvi
      * René Stadler
      * Robert Swain
      * Sebastian Dröge
      * Sergey Scobich
      * Sergey Scobich)
      * Sjoerd Simons
      * Stefan Kost
      * Stefan Sauer
      * Sébastien Moutte
      * Thiago Santos
      * Thomas Vander Stichele
      * Tim-Philipp Müller
      * Tommi Myöhänen
      * Vincent Penquerc'h
      * Wim Taymans
      * Youness Alaoui
 