
Release notes for GStreamer 1.8.1

The GStreamer team is proud to announce the first bugfix release in the stable
1.8 release series of your favourite cross-platform multimedia framework!


This release only contains bugfixes and it is safe to update from 1.8.0. For a
full list of bugfixes see Bugzilla.


See /releases/1.8/
for the full release notes.


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 plugins
gst-plugins-good
contains a set of well-supported plugins under our preferred license
gst-plugins-ugly
contains a set of well-supported plugins, but might pose problems for
    distributors
gst-plugins-bad
contains a set of less supported plugins that haven't passed the
    rigorous quality testing we expect, or are still missing documentation
    and/or unit tests
gst-libav
contains a set of codecs plugins based on libav (formerly gst-ffmpeg)



  

Bugs fixed in this release
     
      * 727105 : doc: Drop reference to osssink / esdsink / etc, from gst-launch-1.0 man page
      * 741001 : GST_DEBUG categories are missing when using --gst-debug-help
      * 761912 : gstpad: Fix race between gst_element_remove_pad and state change
      * 762995 : queue: Use full running time for level calculation
      * 763753 : valve: don't send sticky events as a direct response to upstream events
      * 763757 : multiqueue: Make sure mq- > percent remains valid after modifying high-percent value
      * 765096 : baseparse: When initializing DTS from PTS, remember that we did so
      * 765260 : baseparse: regression with aac streams

==== Download ====

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

The git repository and details how to clone it can be found at
http://cgit.freedesktop.org/gstreamer/gstreamer/

==== Homepage ====

The project's website is https://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

Please submit patches via bugzilla as well.

For help and support, please subscribe to and send questions to the
gstreamer-devel mailing list (see below for details).

There is also a #gstreamer IRC channel on the Freenode IRC network.

==== Developers ====

GStreamer is stored in Git, hosted at git.freedesktop.org, and can be cloned
from there (see link above).

Interested developers of the core library, plugins, and applications should
subscribe to the gstreamer-devel list.

        
Contributors to this release
    
      * Carlos Rafael Giani
      * Edward Hervey
      * Havard Graff
      * Sebastian Dröge
      * Stian Selnes
 