
Release notes for GStreamer 1.8.2

The GStreamer team is proud to announce the second 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.1. 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
      * 763496 : queue: Can release serialized (ALLOCATION) query before downstream returned it
      * 765906 : typefind: Regression due to fix for 763491
      * 765961 : Fix element leak in gstutils.c:find_common_root()
      * 766002 : pad: IDLE probes don't block when returning GST_PAD_PROBE_OK

==== 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
    
      * Guillaume Desmottes
      * Jan Schmidt
      * Sebastian Dröge
 