This is GStreamer 0.8.8.

Changes since 0.8.7:

      * Threading fixes
      * Opt scheduler fixes
      * Documentation updates
      * New translation: Norwegian Bokmaal (Kjartan Maraas)
      * New translation: Italian (Luca Ferretti)
      * New scheduler: fair

Bugs fixed since 0.8.7:

      * 144804 : opt scheduler breaks on playing a pipeline
      * 148787 : clocks are not distributed correctly
      * 149936 : [PATCH] [build] GStreamer without registry support do not...
      * 150051 : fakesrc needs a data rate parameter that timestamps the d...
      * 151605 : impossible to play .mpg or avi files with gst-launch-ext
      * 153882 : [PATCH] The win32 version of gstenumtypes is not up to date
      * 154061 : optimal scheduler doesn't get freed
      * 156063 : infinite loop and 100% CPU with some MP3
      * 156179 : gstreamer typefind plugin information from gst-inspect is...
      * 157127 : Cleanup of issues reported by sparse
      * 157263 : use G_SIGNAL_TYPE_STATIC_SCOPE for GstBuffers in handoff ...
      * 158018 : gstreamer typefind stalls on these JPEG files
      * 158162 : opt deadlock
      * 158163 : [api] Problem querying on ghostpads
      * 159852 : [PATCH] [api] g_signal_emit thread safety issues
      * 160019 : segfault when error occurs playback of uri containing per...
      * 160220 : gst_pad_set_explicit_caps of a NULL caps doesn't work

API changes since 0.8.7:

- API additions:

* A new function, gst_plugin_get_version, has been added.

Changes since 0.8.6:

      * important playback thread fix
      * typefind fix for non-seekable streams

Changes since 0.8.5:

      * spider, queue fixes
      * fakesrc and identity now have a datarate property
      * dataprotocol threadsafety fix

Bugs fixed since 0.8.5:

      * 136962 : crc error when decoding flac with typefind and threads
      * 150001 : [PATCH] Mem leaks in gstpad.c, gstxml.c and gstelement.c
      * 150262 : gstreamer.spec file needs correction to work with rpmbuil...
      * 150626 : bug trying to play a theora web stream
      * 153657 : make typefind prevent unneeded discont element
      * 153881 : [PATCH] in-code C declarations

API changes since 0.8.5:

- API additions:

* The "fakesrc" element now has a datarate property.
* The "identity" element now has a datarate property.

Changes since 0.8.4:

      * New Translation: Albanian (sq), Laurent Dhima
      * first release that works on Windows with MSVC7
      * fixed lists can now be intersected
      * transform functions from fraction to double added
      * optimal scheduler fixes
      * fixation fixes
      * filesrc fixes
      * typefind fixes

Bugs fixed since 0.8.4:

      * 145100 : segfault in gst_pad_call_get_function
      * 147889 : gst_element_link_pads_filtered may ignore named dest pad ...
      * 148692 : GstQueue binary compatibility breakage
      * 149981 : Win32 not included in the source distribution
      * 150242 : GStreamer doesn't copy some buffer flags correctly

API changes since 0.8.4:

- API additions:
     
* A new function, gst_scheduler_register, has been added.
* A new enum member of GstBufferFlag, GST_BUFFER_DELTA_UNIT has been added.
 
- API depreciations:
     
* GstBufferFlag has a deprecated enum member, GST_BUFFER_KEY_UNIT.
Buffers should be marked with GST_BUFFER_DELTA_UNIT when they're not
key units instead, since key units are the more common case.

Changes since 0.8.3:
    
      * New Translation: Czech (cs), Miloslav Trmac
      * New Translation: Catalan (ca), Jordi Mallach
      * gst_init () now behaves like gtk_init ()
      * queue fixes
      * ongoing win32 build integration
      * bytestream now has GstFilePad
      * gst-register is now i18n-ized
      * GstCaps XML-ization works again
      * Fixed enum GValue
      * Added GstFraction GValue

Bugs fixed since 0.8.3:
    
      * 109831 : clocks aren't refcounted properly
      * 123774 : state change on bin should set same state change on all c...
      * 134663 : failed assertion at end of movie in totem
      * 137863 : CPU/Memory leak when using spider decoder
      * 140219 : no man page for gst-xmlinspect
      * 141378 : gstreamer crashes during initialization due to a recent c...
      * 141692 : gst_init() type function that ignores arguments it doesn'...
      * 142418 : Win32 Debug build should not be the same as the Release one
      * 142422 : Win32 Build documentation missing
      * 142795 : [PATCH] Memory leak in queue element
      * 142813 : [PATCH] Deadlock in optimal scheduler
      * 142850 : GST-Register didn't find any plugins
      * 142903 : [PATCH] fdsrc element never resets buffer offset to zero
      * 143741 : cross compiling issue
      * 143777 : [opt] problem after removing some elemnts and putting the...
      * 143953 : Crash cause by gst_data_is_writable + audioconvert
      * 144185 : Double-free memory
      * 145137 : patch to make GstCaps XML functions actually do something
      * 145338 : [PATCH] Fix a bus error in the optimal scheduler
      * 145391 : gstvalue.c: ref klasses instead of peek
      * 145520 : registry rebuilds too easily
      * 147707 : FreeBSD dosn't have strndup
      * 147713 : opt scheduler resorts the chain incorrectly
      * 147819 : [PATCH] Add some checks in the opt scheduler
      * 147894 : opt scheduler decoupled elements mismanagement
      * 147929 : [PATCH] running gst-register in non-utf8 locale can cause...

Changes since 0.8.2:

      * Hotfix for unregisterable switch element

Changes since 0.8.1:

      * new translations: Turkish, Ukrainian, GB English
      * Fixes for setting elements to NULL to release devices
      * Windows port
      * New GStreamer Data Protocol helper library
      * New GstAdapter, similar to bytestream
      * Fixes for registry loading plugins with same name
      * Added no-more-pads signal
      * Added Fixed List GValue type
      * Fixes to schedulers

Bugs fixed since 0.8.1:

      * 133897 : Internal GStreamer error: seek problem
      * 134839 : buffers leaked by filesrc, typefind, spider or fakesink
      * 137710 : When seeking, the sink's time is reset
      * 138012 : [opt] simple pipeline crashe
      * 138836 : docs build but won't install
      * 140015 : GstValue GTypes should not derive from G_TYPE_BOXED
      * 140156 : ARM port / type reading patches
      * 140477 : [debug] crash with *:2 while playing alien.mpg
      * 140594 : Small memory leak int gst_parse_launch()
      * 140734 : filesrc should handle named pipes/devices
      * 140743 : Leak in _gst_parse_escape()
      * 141083 : gstreamer-0.8.1 compile failure with gcc-3.4: error: PIC ...
      * 141304 : GST_CAPS and GST_IS_CAPS broken
      * 141317 : Win32 build with newest Microsoft compilers
      * 141414 : filesink leaks events
      * 141416 : leak in entrygthread scheduler
      * 141417 : Memory leak in gthread-cothreads.h
      * 142304 : The Win32 makefiles clean too much
      * 142804 : needed change to allow x86 Solaris compile with Forte
      * 142957 : xmlregistry failes to compile on osx

Changes since 0.8.0:

      * new translations: Azarbaijani, Afrikaans, Swedish
      * MinGW compilation fixes
      * buffer internal fixes
      * new entry scheduler
      * move from memchunks to malloc
      * lots of memleak fixes
      * better valgrind support
      * registry fixes

Changes since 0.7.6:

      * coding style consistency for .c files
      * ABI padding for GstCaps and GstStructure

Changes since 0.7.5:
                                                                                
      * uses 0.8 as the major/minor number
      * opt scheduler fixes
      * don't link non-versioned tools to gstreamer
      * bindings-related fixes and additions
 
Changes since 0.7.4:

      * API additions for bindings
      * Queue memleak fix
      * optimal scheduler fixes
      * Ghost pad fixes
      * Signal marshalling fixes
      * documentation fixes
      * underquotedness fixes for automake 1.8
      * fixed atomic implementation on sparc and S390
      * gstreamer-scan fixes
      * multidisksrc renamed to multifilesrc
      * fixed GstCaps docs
      * fixed libxml checking when not needed
      * added timeout to filesrc
      * added support for double dparams
      * make spider report an error when it can't handle a mime type
      * fixed navigation event handling
      * added codec and volume tags

Bugs fixed since 0.7.4:
    
      * 105844 : --disable-loadsave --disable-registry still check for libxml
      * 118310 : Timeout support added for fdsrc
      * 127133 : [API] Need non-vararg version of gst_index_add_association
      * 127815 : gst-register sigsegs 100% of the time.
      * 129600 : patch to compile on OSX
      * 131362 : use serialize/deserialize in the core
      * 132045 : incorrect dependency causes rebuilding of libgstreamer on "m
      * 132935 : setting pipeline -> NULL -> PLAYING doesn't restart stream
      * 132996 : configure fails: aclocal: macro `jm_AC_TYPE_UNSIGNED_LONG_LO
      * 133391 : the asm mutex implementation is broken on SPARC
      * 133631 : gst-launch seg faults in gst_caps_free with no sink
      * 133800 : fixes for underquoted macros and automake 1.8.x
      * 133817 : add support for disc number tag
      * 134128 : typo in ./gstreamer/gst/gstclock.c
      * 134145 : pot-update not updated after file removal
      * 134583 : Race on gst_pad_link_free
      * 134816 : test -e in autogen.sh does not work on Solaris
      * 134841 : gst-inspect.c is defining GList *pads twice
