This is GStreamer Bad Plug-ins 0.10.21, "Pink Noise"

Changes since 0.10.20:

      * alsaspdif: removed alsaspdifsink element (replaced by alsasink device=spdif)
      * metadata: remove metadata plugin
      * jack: jack plugin has moved to gst-plugins-good (0.10.27)
      * selector: input-selector and output-selector have moved to GStreamer core (0.10.32)
      * valve: has moved to gstreamer core (0.10.32)
      * applemedia: new plugin for Apple multimedia APIs (avfvideosrc, celvideosrc, qtkitvideosrc, miovideosrc, vth264decbin, vth264encbin, vtdec, vtenc)
      * applemedia: new iOS video source based on AVFoundation
      * y4mdec: new y4mdec element
      * dcaparse: new dts/dca audio parser
      * camerabin2: new camerabin element (work-in-progress, experimental)
      * opencv: new plugin with elements facedetect, faceblur, edgedetect, cvsobel, cvsmooth, cvlaplace, cverode, cvequalizehist, cvdilate, textwrite, templatematch, pyramidsegment
      * interlace: new element
      * geometrictransform: new rotate element
      * jp2kdecimator: add a JPEG2000 decimator element (drop details without reencoding)
      * audioparsers: add dcaparse, a dts/dca parser, and mpegaudioparse (mp3parse replacement)
      * autoconvert: add autovideoconvert, an autoconvert based video format converter
      * checksumsink, chopmydata: new debug elements
      * dvbsuboverlay: new element to overlay DVB subtitle
      * rsvgoverlay: new element for scalable and relative svg overlay with cairo
      * qtmux: add new ismlmux element, for fragmented isml major brand
      * ac3parse: properly parse E-AC3 frame header and use proper EAC-3 caps
      * ac3parse: relax BSID checking, performance improvements
      * applemedia mtapi: update to reflect new API on iOS 4.x
      * applemedia vtenc: bump H.264 level from 1.3 to 3.0
      * applemedia vtenc: remove keyframe enforcement workaround
      * applemedia celapi: update to reflect new API on iOS 4.x
      * applemedia cvapi: add wrapper for IO surface access
      * audioparse: add support for setting the channel-positions
      * audioparsers: increase ranks to enable auto-plugging (incl. new mp3 parser)
      * baseparse: enhancements for timestamp marked framed formats
      * baseparse: increase keyframe awareness
      * baseparse: perform bitrate handling and posting after newsegment sending
      * baseparse: post duration message if average bitrates is updated
      * baseparse: prevent indefinite resyncing
      * baseparse: add index support, seek table and accurate seek support
      * baseparse: support reverse playback
      * baseparse: use determined seekability in answering SEEKING query
      * basevideo: Add handling of GstForceKeyUnit events
      * basevideodecoder: add capture pattern handling; don't blow away field information
      * bayer2rgb: add format=bggr/etc. to caps, add framerate to the sink caps
      * camerabin: add "preview-source-filter","ready-for-capture", "idle" properties
      * camerabin: change "zoom" property from int to float
      * camerabin: enable all conversion flags by default to make it work out-of-the-box everywhere
      * coloreffects: Add chromahold effect
      * cog: improvements in colorspace and scaler; add fast paths for colorspace conversion
      * colorspace: revive element and add support for many more pixellayouts/colorspaces
      * colorspace: add support for SDTV/HDTV YUV conversions
      * dtmfsrc: Make the dtmfsrc accept events sent with gst_element_send_event
      * tools: misc. improvements to element-maker tool
      * faac: handle trailing encoder output
      * faad: support reverse playback; cater for decoder delay and renegotiation
      * faad: tweak output buffer timestamping
      * flacparse: don't drop the last frame if it is followed by garbage
      * flacparse: don't parse the complete FLAC frames but only look for valid frame headers (for performance)
      * flacparse: fix picture parsing, fix parsing with unknown framesizes
      * flacparse: parse seektable
      * frei0r: add support for the FREI0R_PATH environment variable
      * frei0r: fix crashes if plugins don't provide correct property information
      * frei0r: fix scanning of plugin subdirectories and support different vendors
      * frei0r: update frei0r interface specification to 1.2
      * gaudieffects: avoid divide by 0 in burn element, make filter parameters dynamic and controllable
      * id3mux: map GST_TAG_ALBUM_ARTIST, give PRIMARY rank
      * invtelecine: Fix name of 30p/60i pattern
      * jasperdec: don't fail hard on decoding error
      * jifmux: detect EOI correctly; do not limit the size of the image on 16bits
      * jp2kenc: Emit SOP markers in every codestream packet
      * jpegparse: avoid infinite loop when resyncing; discard incomplete image
      * kate: add segment tracking, and various other improvements
      * kate: ensure the kate pad does not shoot ahead of the video pad
      * mpegtsdemux: extract language for DVB subtitle streams
      * mpegtsdemux: enable gather_pes only for DVB subtitle private streams
      * mpegtsdemux: fix re-syncing on invalid data after seek
      * mpegtsmux: Initialize PES packet before getting the header size
      * mpegtsmux: Set adaptation flag when appropriate
      * mpegtsmux: Set random_access_indicator for keyframes
      * mpegtsparse: send TDT tables messages in a serialized event downstream
      * ofa: Call g_object_notify() after the fingerprint was created
      * pcapparse: Add support for Linux Cooked Capture (SLL) frames
      * photography: add missing property and cabability flag for noise reduction
      * photography: Add "zoom" and "image-preview-supported-caps" interface properties
      * photography: add gst_photography_{set,get}_noise_reduction() and CAPS_NOISE_REDUCTION flag
      * qtmux: add support for fragmented mp4
      * qtmux: add "streamable" property to avoid building fragmented mfra index
      * qtmux: timestamp tracking fixes and many other fixes
      * resindvd: attempt to use glib language setting for DVD menus/audio
      * resindvd: improve error messages on read errors; button state tracking fixes
      * rfbsrc: fail more gracefully if source gets disconnected or geometry changes
      * sdlvideosink: re-enable YVYU and UYVY support
      * sdpdemux: error out if no streams found in sdp message
      * sdpdemux: redirect SDP with an rtsp control URL and add property to disable redirect
      * ssim: add I420 support
      * tiger: outline text by default, to make it easier to read
      * winks: add property probing support; fix framerate fraction range mapping
      * winks: ignore unsupported formats; work around shutdown deadlock
      * winks: performance improvements
      * zbar: make scanner cache optional, disable it by default
      * zbar: use correct strides, support more formats

Bugs fixed since 0.10.20:

      * 628609 : The qtwrapperaudiodec_samr decoder doesn't handle buffers containing many AMR frames properly
      * 639296 : [y4mdec] Doesn't handle files which don't specify a colorspace
      * 613379 : camerabin: Do not use audio clock after stopping video capture
      * 636279 : REGRESSION: Video often freezes during playback of mpeg2 files
      * 630255 : [examples] camerabin example still uses old GstXOverlay interface
      * 631232 : [colorspace] AYUV/ARGB handling broken on big endian systems
      * 627229 : fpsdisplaysink should not measure fps relative to pipeline clock
      * 435120 : cairosvgoverlay
      * 486659 : xmp/exif metadata handling
      * 578629 : libgstphotography missing exports for MSVC
      * 587223 : mpegtsdemux seg.fault due to invalid PMT_pid
      * 598078 : osxvideosrc doesn't build in snow leopard x86_64
      * 600929 : [kate] tiger element doesn't handle segments and text/video synchronization properly
      * 603063 : camerabin example fails to start recording
      * 611428 : [gdiscreencapsrc] leaks memory (ICONINFO)
      * 613633 : [resindvd] scrambled DVDs yield useless generic error message if dvdcss is not available
      * 616814 : Photography interface extension: colour tone mode and noise reduction settings
      * 616923 : camerabin: remove photography interface implementation
      * 618045 : [cogcolorspace] No Y41B support
      * 618542 : DVB subtitles support
      * 625558 : [basevideoencoder] [vp8] encoder timestamps are wrong when there are gaps
      * 626425 : cog_virt_frame_new_convert_u8 has bogus source data
      * 627134 : photography interface: add API for capture correction
      * 627211 : jpegformat: Push tags after setting srcpad caps
      * 627253 : [mpegtsparse] Post tags of channel and currently running event
      * 627992 : dtmfsrc doesn't support gst_element_send_event
      * 628326 : vdpau: don't change structure in setcaps function
      * 628527 : videoanalyse: classificication is wrong
      * 628548 : [mpegtsmux] Initialize PES packet before getting the header size
      * 628570 : cogcolorspace: element classificication is wrong
      * 629554 : dvbsrc: Fix example usage, bandwidth=8 not 8MHz
      * 629897 : [cog] Ignores --disable-orc and always requires orc
      * 629910 : jpegparse: properly clean up comment string
      * 629917 : [output-selector] Recheck pending_pad after pushing a buffer
      * 630046 : sdpdemux: Add optional support for rtspsrc as session element
      * 630253 : [sdl] Still uses old GstXOverlay interface
      * 630254 : [vdpau] Still uses old GstXOverlay interface
      * 630783 : [frei0r] Crashes if broken plugins don't give correct property information
      * 630808 : valve: move to core
      * 631200 : flacparse: major performance improvements
      * 631389 : [flacparse] backport/check corner case fixes done in flacdec
      * 631449 : [audioparse] doest not support several channel numbers
      * 631501 : [faad] failed to dynamically switch from 2 audio channels to 6
      * 631814 : [flacparse] unit test failures
      * 631993 : [flacparse] imperfect timestamping
      * 632070 : qtmux: infinite loop
      * 632668 : Gaudi Effects [review]
      * 632885 : Gaudi Effects dynamically controllable parameters [review]
      * 632911 : qtmux: add fragmented mp4 support (isml brand)
      * 633466 : [katedec] Pushes events before the final caps are known
      * 633917 : [mpegtsparse] [PATCH] Send TDT messages in an serialized event downstream
      * 635200 : [dvbbasebin] [PATCH] Add TDT to the initial pids filter for dvbsrc
      * 635202 : mpeg4videoparse: Minor fixes
      * 635204 : mpeg4videoparse: Set srcpad caps before forwarding newsegment
      * 635205 : h264parse: Set srcpad caps before forwarding newsegment
      * 635229 : celtenc: uninitialized tags variable can cause segfault
      * 635304 : [opencv] fix caps issues and extend supported caps for some elements [PATCH]
      * 635397 : rfbsrc: avoid infinite loop if source gets disconnected and  don't crash if frame geometry changes
      * 635529 : interlace: Add pattern offset and fix timestamps
      * 635720 : vp8enc incorrectly sets timestamps based on theoretical framerate
      * 635786 : [audioparse] Fix division-by-zero exception
      * 635878 : [qtmux] gst_qtmux_check_difference subtract 2 unsigned numbers without taking care of the result sign
      * 636106 : autocolorspace: new plugin for auto space convertor selection
      * 636109 : [SSIM] klass should be Filter/Effect/Video
      * 636185 : qtmux: msvc incompatibility
      * 637062 : [ac3parse] parse problems on some MTS streams
      * 637224 : [bayer2rgb] missing framerate in sink caps
      * 637308 : gst-plugins-bad did not find xvidcore on my box
      * 637359 : Internal GStreamer error, during pcap to mp4 conversion
      * 637403 : qtmux do not store 1st TS when detect 1st buffer
      * 637486 : qtmux: error if no buffers have arrived to one pad at EOS
      * 637532 : applemedia: redundant declaration of 'parent_class'
      * 637590 : [PATCH] fix gst-plugins-bad compile against latest gtk+
      * 637824 : mpeg4videoparse: gst_buffer_is_metadata_writable warning (regression)
      * 637929 : mve: do not use the pad buffer allocation functions in demuxers
      * 637931 : mpegdemux: do not use the pad buffer allocation functions in demuxers
      * 638004 : tiger: fallback on headers in caps to initialize if headers are absent
      * 638288 : qtmux: fails to handle out-of-order buffers without duration
      * 638412 : kate: reenable the sending of a message for tags
      * 638527 : tiger: outline text by default, to make it easier to read
      * 638604 : basecamerasrc isn't build by default but camerabin2 is and requires it
      * 639063 : mpegtsparse: fix (re)sync with invalid data at beginning
      * 639338 : [qtmux] Protect against copying a null caps
      * 639413 : Camerabin should use output-selector:pad-negotiation-mode=active
      * 639456 : [camerabin] Should have all conversion flags enabled by default
      * 639555 : [audioparsers] Be careful to not lose the event ref
      * 639950 : flacparse: avoid unref'ing NULL buffer
      * 630830 : zbar: Fixes, single frame scan and width/stride fix
      * 635281 : [mpegtsparse] TDT packets are only parsed for odd hours

Changes since 0.10.19:

      * asfmux streaming fixes and improvements
      * new video effects plugins: coloreffects, gaudieffects, geometrictransform
      * new gsettings plugin with gsettings{audio,video}{src,sink} elements
      * new ivfparse element
      * new rtmpsrc element
      * new shmsink and shmsrc elements for IPC using shared memory
      * new videomaxrate element
      * dshowvideosink improvements
      * vdpau: H.264 and MPEG-4 decoder (not enabled for autoplugging yet though)
      * vp8enc: support multipass encoding and keyframe-only mode
      * neonhttpsrc: timeout properties and cookie support
      * h264parse and mpegvideoparse: can periodically insert codec data into stream now
      * build: require GLib >= 2.20, automake >= 1.10, autoconf >= 2.60, want orc
      * asfmux: deprecate "is-live" property, replaced by new "streamable" property
      * asfmux: don't set the 'seekable' flag in headers if we are streaming
      * asfmux: put headers into "streamheader" field in output caps for streaming
      * asfmux: write preroll info in the header at initialization
      * bayer: support more formats in bayer2rgb, add rgb2bayer element
      * camerabin: make viewfinder-sink property work with bins
      * celt: add support for celt 0.8, remove support for celt < 0.5
      * celtenc: add "prediction" and "start band" properties
      * coloreffects: new element with heat, sepia, xray and cross-process effects
      * dshowvideosink: many fixes and improvements
      * fpsdisplaysink: add "fps-update-interval" and read-only "max-fps"/"min-fps" properties
      * frei0r: check for plugins in /usr/{local/,}lib{32,64}/frei0r-1 too
      * gaudieffects: new plugin with burn, chromium, dilate, dodge, exclusion, gaussianblur and solarize video effect elements
      * geometrictransform: new plugin with circle, diffuse, kaleidoscope, marble, pinch, sphere, twirl, and waterripple, fisheye, mirror, square, tunnel, bulge, stretch video effect elements
      * gsettings: new GSettings plugin with audio/video sources and sinks (to replace gconf plugin)
      * h264parse: add "config-interval" property to insert SPS/PPS at periodic intervals
      * h264parse: handle 3-byte bytestream sync codes; process incoming timestamps more correctly
      * id3mux: add support for beats-per-minute tag
      * invtelecine: support more video formats, more pulldown formats, add "verify-field-flags" property
      * ivfparse: add simple IVF parser element (simple framing for VP8 video data)
      * jpegformat: add exif writing to jifmux and exif parsing to jpegparse
      * jpegparse: skip extra 0xff markers, optimize jpeg image parsing
      * mimic: lots of fixes and clean-ups
      * mpeg4videoparse: add "config-interval" property to re-insert config in stream
      * mpegtsmux: start pmt at 0x020; take all the pmt in the streamheaders
      * mpegtsparse: actually work when we have small buffers coming in
      * mpegvideoparse: apply previous timestamp when there isn't any newer
      * neonhttpsrc: add "connect-timeout", "read-timeout" and "cookies" properties
      * qtmux: write audio/video stream bitrates into header, if available
      * qtmux: write track-number etc. tags even if count is not available
      * rtmpsrc: new RTMP source element based on librtmp
      * rtpdtmfmux: add priority sink pads and drop buffers on non-priority sink pads when something is incoming on the priority sink
      * rtpmux: add support for GstBufferLists; aggregate incoming segments; fix buffer leak
      * shm: add new shm-based shmsink and shmsrc elements for IPC using shared memory
      * vdpau: add H.264 decoder and MPEG-4 part 2 decoder; countless other fixes and improvements
      * videomaxrate: new plugin/element to limit videorate conditionally based on threshold
      * vp8dec: mark discont buffers, set decoder deadline from the QoS information
      * vp8enc: allow a maximum keyframe distance of 0, i.e. all frames are keyframes
      * vp8enc: fix handling of invisible/alt ref frames
      * vp8enc: add support for enabling automatic insertion of alt-ref frames by the encoder
      * vp8enc: implement multipass encoding
      * wildmidi: Add support for wildmidi 0.2.3

Bugs fixed since 0.10.19:

      * 625908 : [geometrictransform] Some more configuration options for effects
      * 625076 : neonhttpsrc: add connect-timeout and read-timeout properties
      * 620746 : basevideodecoder: remove spurious warning
      * 566614 : bayer2rgb: Make first line configurable
      * 570428 : autogen.sh fails
      * 574290 : [dshowvideosink] make set_xwindow_id() in PLAYING state work
      * 579926 : [directshowvideosink] Doesn't update the last frame after a seek with the pipeline in PAUSED state.
      * 580967 : shared memory based sink and source
      * 591622 : [vdpau] needs better error/failure handling
      * 602551 : dshowvideosink window close doesn't cause gst-launch to exit
      * 602936 : [ mp4mux] Lipsync issue when converting mkv to mp4 using h264/aac
      * 613346 : [dshowvideosink] Add support for updating video caps
      * 616265 : Add a GSettings plugin that provides the same services as the GConf plugin
      * 618336 : [mpegvideoparse] mpegvideoparse makes some streams unplayable
      * 618522 : [asfmux][patch] Improve support for streaming
      * 618921 : [dshowvideosink] Replace CoIntialize with CoInitializeEx for bettrer integration with GStreamer threads
      * 618936 : [dshowvideosink] close the created window in ::stop()
      * 620324 : Format warning in ivfparse
      * 620717 : [geometrytransform] Incomplete template caps
      * 620825 : [geometrytransform] Make properties controllable and threadsafe
      * 620978 : insert NAL7/8 always when encountering I frame
      * 621205 : [mpeg4videoparse] add config-interval property to insert mpeg4video config data in regular intervals
      * 621348 : [vp8enc] Implement multipass encoding
      * 621523 : [id3mux] write beats-per-minute tag
      * 622369 : [rtmpsrc] crash if correct server but wrong video file name
      * 622484 : [qtmux] missing track number tag when transcoding to aac
      * 622690 : elements/jpegparse check fails
      * 622692 : pipelines/metadata check fails
      * 622725 : [mpgtsparse] Doesn't remove pids from pes_pids
      * 623272 : [dshowvideosink] setting force-aspect-ratio has no effect after the sink's renderer has been configured
      * 623365 : [qtmux and variant] Don't store codec tags
      * 623550 : doesn't compile with celt 0.8
      * 623678 : qtmux: Write AAC/H.264 bitrate if available
      * 623710 : [frei0r] Load frei0r plugins in /usr/lib64/frei0r-1 too
      * 623713 : [dshowaudiodec][patch] Fix compilation error
      * 623722 : gstwildmidi element update to newer library version
      * 623802 : camerabin: Bin based viewfinder sink support is broken
      * 623854 : jpegparse reads a wrong EXIF section size
      * 623881 : aiffmux.c divide by zero
      * 623883 : [winks] gstksvideosrc.c error on MSVC using gst_element_class_set_details()
      * 625003 : [examples] Don't use GdkDraw
      * 625138 : [dshowvideosrc] Don't use a range in the caps if min==max
      * 625174 : neonhttpsrc: adds cookies support
      * 625496 : qtmux - misc fix on btrt box
      * 625722 : [geometrictransform] Some new effect elements for cheese
      * 625817 : coloreffects: new plugin for lookup table color mapping
      * 625959 : geometrictransform: make CircleGeometricTransform " radius " property relative
      * 626049 : [vdpau] crashes in states.check unit test
      * 626603 : generic/states check fails with gsettings element installed
      * 626670 : gaudieffects: Fails to link inline functions properly
      * 626815 : vp8dec: infinite loop if EOS event before started
      * 627413 : jifmux causes broken jpeg images at least with some rgb pixel format
      * 627918 : Do not install gst-camera.ui
      * 627991 : rtpmux will freeze whenever a flush is sent
      * 624212 : mp4mux produces incorrect frame rates when h264 input uses bframes
      * 619158 : IVF parser plugin
      * 619484 : vp8dec: s/IMG_FMT_I420/VPX_IMG_FMT_I420/
      * 621404 : [dvbsrc] Set stats-reporting-interval on construction

Changes since 0.10.18:

      * audioparsers: add bitrate calculation
      * camerabin: add API to query supported image capture resolution
      * camerabin: add block-after-capture property for viewfinder blocking
      * camerabin: add video-capture-width/height/framerate properties
      * camerabin: add video-source-filter and viewfinder-filter properties
      * capssetter: element was moved to gst-plugins-good
      * cogcolorspace: implement color-matrix handling and chroma-site
      * dc1394: add iso-speed property
      * dshowvideosrc: add support for YUY2 input format
      * festival: don't open an infinite number of connections to the server and close connections
      * h264parse: fix writing NALU prefix for byte-stream output format
      * h264parse: fix wrong timestamps in some cases after seeking
      * imagefreeze: plugin was moved to gst-plugins-good
      * invtelecine: add invtelecine element
      * jackaudiosrc: implement multichannel support
      * jpegformat: add xmp reading and writing support
      * ladspa, lv2: don't fail in plugin_init when having 0 elements (which would cause the plugin to get blacklisted)
      * mmssrc: Check URI for validity and work around URI parsing bugs in libmms
      * mmssrc: Use the escaped location for the RTSP redirect message
      * mpegtsdemux: add support for Blu-Ray style DTS and the two DTS HD stream types
      * mpegtsparse: parse TDT table in mpegts
      * mpegvideoparse: export profile and level in caps; estimate bitrate; update caps when sequence header changes
      * oss4: plugin was moved to gst-plugins-good
      * qtmux: add support for the VP8 video codec and XMP tags
      * segmentclip: add audio/video buffer segment clip elements
      * vcdsrc: support the DVD URI scheme so a device can be specified via the URI
      * vp8: add libvpx-based VP8 encoder/decoder (NB: encoder properties/API not fully stable yet; also, this plugin may not be compatible with GPLv2-only applications)

Bugs fixed since 0.10.18:

      * 340986 : [vcdsrc] plugin not auto-plugged, and weird URI handling
      * 572551 : mpeg4videoparse fails to extract codec_data from this network camera video stream
      * 603745 : [dc1394src] add " iso-speed " property
      * 611302 : [imagefreeze] Add still frame stream generator
      * 612208 : [soundtouch] [pitch] Removing annoying g_print
      * 612331 : inputselector: linkage flags are incorrect
      * 612454 : fix compile errors in latest gst-plugins-bad
      * 612615 : [camerabin] video bin elements in wrong state when recording
      * 612687 : [mpegvideoparse] Update caps when sequence header changes
      * 612757 : Unable to build gst-plugins-bad with Sun Studio compiler
      * 613156 : cog can't be built against libpng 1.4.x
      * 613160 : [cogcolorspace] RGB- > I420 conversion adds green vertical bar at the right border
      * 613332 : [cog] generate_tables generates invalid tables for YUV- > RGB
      * 613708 : [dshowvideosrc][PATCH] Add support for YUY2 format
      * 613758 : More build warnings on OS X
      * 613795 : libmodplug's public header requires WORDS_BIGENDIAN
      * 613920 : audioparsers: Add bitrate calculation to baseparse
      * 614016 : [baseparse] NEWSEGMENT event sent with wrong start and position time
      * 614037 : flacparse: Fix buffer refcount issue
      * 614259 : mpegtsdemux: can't detect DTS audio
      * 614349 : [mpegtsparse] assertion gst_buffer_is_metadata_writable (buffer) failed
      * 614475 : [dvbsrc] Wrong property types for frequency and symbol rate
      * 614479 : [mpegtspacketizer] Use CRC to check if tables are duplicate
      * 614591 : [h264parse] Not cleaning internal state properly for reuse
      * 614958 : [camerabin] Replace actions with properties for setting parameters
      * 614991 : baseparse: Don't emit bitrate tags too early
      * 616078 : mpegvideoparse: Export profile and level in caps
      * 616541 : jackaudiosrc/sink needs to set layout on caps
      * 617145 : Compile mplex element with with --enable-runtime-pseudo-reloc-v2 on Windows
      * 617146 : Lots of printf string format warnings on Windows
      * 617331 : More warnings in -bad
      * 617650 : [mmssrc] should check location
      * 618044 : [cogcolorspace] I420/YV12 - > packed 4:2:2 gives assertions
      * 618388 : [frei0r] Boolean values can't be set from gst-launch [PATCH]
      * 618409 : jackaudiosrc: improve process callback
      * 618527 : festival plugin does not close connections to server
      * 618710 : [resindvd] Needs to check for libdvdread too
      * 618867 : Remove gst-plugins-bad/ext/polyp ?
      * 619064 : h264parse: broken timestamps after seeking
      * 619169 : [vp8enc] Limit DEFAULT_MAX_LATENCY to 25 to match libvpx
      * 619172 : [vp8] exclude dec/enc based on CONFIG_VP8_DECODER/ENCODER
      * 619290 : [vp8] add mode property to switch between CBR/VBR
      * 619317 : [vp8] Encoder thread support
      * 619318 : [vp8] Decoder QoS (avoid memcpy)
      * 619344 : [vp8enc] Use GST_VIDEO_CAPS_YUV instead of handwritten YUV caps
      * 619444 : [mpegtsparse] Memory leak in mpegts_packetizer_parse_pmt
      * 619502 : [mpegvideoparse] segfault because of access to a NULL buffer gotten from mpeg_packetizer_get_block
      * 619617 : [h264parse] leaks memory
      * 619916 : [vp8enc] Doesn't skip non-frame packets correctly
      * 614317 : [oss4] should always accept PCM in native endianness even if the hardware doesn't

Changes since 0.10.17:

      * aacparse: lots of fixes, now based on common baseparser class and merged into audioparser plugin
      * ac3parse: new AC3 parser element based on common baseparser class and part of new audioparser plugin
      * adpcmenc: new adpcm encoder element
      * aiffmux: new aiff muxer element
      * amrparse: use (default) time handling of baseparser class, merged into audioparser plugin
      * apexsink: change volume property to a double to make work with playbin2
      * asfmux: handle streams with different start times
      * asfmux: improve compatibility with WMSP in WMP
      * asfmux, rfbsrc, vmnc, mpegdemux, resindvd: fix alignment and endianness issues
      * assrender: countless fixes and improvements
      * audioparsers: rename baseparse GType name to avoid possible conflicts
      * audioparsers: fix seek handling, newsegment sending, push mode data draining
      * celt: make compile against earlier CELT versions
      * configure: call $PKG_CONFIG instead of pkg-config to fix cross compilation
      * dataurisrc: new source element for data:// URIs
      * faac: lots of fixes (channel layout, output caps, bps estimation etc.)
      * flacparse: fix multiple channel frame parsing; merged into new audioparser plugin
      * fpsdisplaysink: expose video sink using a property
      * h264parse: Correctly rewrite all nal prefixes
      * h264parse: fix caps parameters setting, framerate calculation
      * h264parse: fix regression in output buffer timestamping
      * h264parse: optionally output AUs rather than NALUs or transform from bytestream to sample format and vice versa
      * h264parse: parse SPS some more (e.g. for width/height)
      * ivorbisdec: moved to -base (to reuse same codebase as vorbisdec)
      * jpegformat: new jifmux element
      * jpegparse: new jpeg parser element (not autoplugged for now)
      * mmssrc: post error message in addition to redirect when connect fails
      * mpegtsdemux: Handle eac3 in PMT
      * mpegtsmux: add pat-interval and pmt-interval properties
      * mpegtsmux: Do not crash on misinterpreted h264
      * mpegtsmux: Fix mistake on previous commit
      * mpegtsmux: fix PAT/PMT insertion frequency, add PAT/PMT in streamheader
      * mpegtsmux: mark delta-unit on outgoing buffers
      * qtmux: add moov recovery feature (to finalise recording after crash or so)
      * qtmux: improves compatibility with some hardware players
      * qtmux: add support for ALAC, SVQ3, IMA ADPCM; improve j2k handling
      * qtmux: misc. tag writing fixes: write all udta children atoms; crash less
      * shapewipe: moved to -bad
      * vdpau: lots of fixes and refactoring

Bugs fixed since 0.10.17:

      * 606657 : mpegtsmux crashes with h264parse in byte-stream mode
      * 607513 : input-selector segfaults in g_object_notify()
      * 440476 : RhythmBox displays an incorrect track length for .aac files.
      * 530513 : [h264parse] no width and height in output caps
      * 563433 : implement h264parse AVC output
      * 575878 : assrender searches entire current working directory when searching for fonts to use
      * 583098 : Add jpegparse element
      * 598350 : qtmux with AAC streams (from faac) generate invalid files
      * 598682 : make check fails due to fpsdisplaysink if xvimagesink does not exist
      * 598916 : qtmux: support more of j2k
      * 600409 : tremor/ivorbis: should pack result smarter
      * 601108 : gst-camera requires glade
      * 601417 : Problem compiling gst-plugins-bad 0.10.16
      * 602161 : bad .17 VPATH build fix
      * 602465 : gst/dtmf/tone_detect.h incompatible with MSVC
      * 602524 : frei0r: GST_EXTRA_MODULE_SUFFIX never defined
      * 602528 : lv2: vocoder plugin breaks gstreamer
      * 603938 : assrender cannot load font attachments in Matroska container
      * 603983 : gstdshowvideosink leaking DirectShow objects
      * 603986 : gstdshowvideosink not releasing the filter media event interface
      * 604099 : rtpmux: Make sure to call release_pad() when the element is disposed
      * 604101 : rtpmux: update the current_ssrc from the caps
      * 604280 : fpsdisplaysink: allow access to internal video sink used
      * 604311 : gst-plugins-bad: fails to build against libcelt 0.4.0
      * 604908 : [mpegtsmux] mark delta-unit on outgoing buffers
      * 604925 : qtmux shouldn't accept adts aac
      * 605720 : modplug: Add 32-bit depth caps
      * 605721 : modplug: Allow 1-channel output for 16 and 32 bit depth too
      * 605904 : mpegtsdemux doesn't handle e-ac-3 in PMT
      * 606371 : mpegdemux2 plugin doesn't work on some ARM CPU due to the guint32*'s alignment
      * 606636 : [mmssrc] no error message when connect to server fails
      * 606665 : error: " __MSVCRT_VERSION__ " redefined
      * 606677 : Port librdf (rdfsrc) to Windows
      * 606726 : FAAC bitrate setting has no effect
      * 606859 : Get mp4mux request pad  during decodebin2's new-decoded-pad event fails.
      * 607105 : faac doesn't negotiate channel positions correctly
      * 607285 : cdxaparse leaks memory
      * 607555 : asfmux plugin generates data streams incompatible with WMSP (MMSH) and WMP
      * 607747 : [dvbsrc] Pipeline does not stop when reception is very bad
      * 608042 : [camerabin-example] v4l2 device busy after setting back to ready and changing the mode
      * 608651 : dshowvideosink.cpp crash
      * 608706 : assrender recursively scans directories for fonts
      * 608751 : [assrender] Random crashes because libass is not threadsafe
      * 608753 : assrender: use more compatible hinting method
      * 608896 : mpegtsmux: PAT/PMT interval fixes
      * 608998 : [jpegparse] unit test fails
      * 609055 : [qtmux - mp4mux] crash when setting
      * 609215 : [rsvg] fix compilation with MSVC
      * 609478 : [faad] SIGSEGV when caps contains codec_data=(buffer)NULL
      * 164870 : PNM [en,de]coder
      * 383478 : Need ac3 parser to support seeking in unframed .ac3 files
      * 606878 : [apexsink] crashes when changing volume in rhythmbox
      * 580731 : qtmux needs mapping for ALAC
      * 587922 : qtmux lacks mapping for Sorenson Video v3
      * 601576 : qtmux feature: moov recovery

Changes since 0.10.16:
    
      * Fix DVD playback
      * New elements: DTMF tone source and detector
      * ASS subtitle support improvements
      * Fix compilation on OS/X Snow Leopard
      * Support DVB 3.3 API
      * Inputselector fixes

Bugs fixed since 0.10.16:
     
      * 602106 : Bad atom size calculation
      * 574434 : [camerabin] Changing default video/audio source for Windows
      * 584361 : gppmux Support for 3gr6
      * 586929 : [midi] Doesn't handle push
      * 595161 : [mpegtsdemux] Internal dataflow problem with some streams.
      * 598552 : faac: Clean up defaults
      * 598763 : New plugin: aiffmux
      * 598808 : mpegpsmux: Fix CLFAGS typo and reorder flags
      * 599050 : [mpegvideoparse] Does not check width/height range
      * 599469 : resindvd: problems pre-rolling in the absence of audio
      * 600454 : aacparse detecting aac file as mpegversion=2 instead of 4
      * 600461 : [zbar] Over-eager detection of barcodes
      * 600662 : [assrender] Doesn't synchronize subtitle buffers
      * 600707 : autoconvert depends on function from core 0.10.26
      * 600724 : celt: fails to build against celt-0.7
      * 599903 : Scaletempo plugin stops early when playing slowly

Changes since 0.10.15:
    
      * Fix various bugs in the 0.10.15 release
      * Fix a deadlock in starting DVD
      * Fix compilation problems
      * Allow libneon versions >= 29.x

Bugs fixed since 0.10.15:
     
      * 599272 : faac check fails, undefined symbol
      * 599332 : [neonhttpsrc] fails to compile with libneon 0.29.0

Changes since 0.10.14:
    
      * Add barcode scanner plugin using the zbar library
      * Improvements to camerabin
      * Support audio-track format switching in DVD
      * Improve parsing and display of PGS subpictures
      * Add Cog plugin
      * Add LV2 plugin support
      * Improve VDPAU plugin. Add post-processing support
      * Add videomeasure plugin
      * Improve Siren codec
      * Improved Directshow capture element
      * Add EAC3 mapping in MPEG-TS playback
      * Improve AAC encoding
      * Improved MIDI file playback
      * Improve H-264 parsing
      * Add MPEG-PS muxer
      * Add PNM encoder and decoder
      * Add SVG decoder
      * Update GLib dependency to GLib 2.16
      * Various other bug fixes and improvements (see ChangeLog)

Bugs fixed since 0.10.14:
     
      * 303975 : Add tar support
      * 519001 : [wildmidi] Doesn't handle seeking correctly
      * 575261 : Do not use the outdated Debian/Ubuntu libass libraries!
      * 583901 : aacparse fails for remuxing
      * 589609 : [PATCH] fix dvdspu crash when subtitles do not fit the incoming video
      * 593348 : faac encoder produces first buffer with wrong duration
      * 593625 : Broken Compilation, missing files with latest commits in git repository
      * 593683 : Typo in variable name for libraries to link against
      * 593864 : pcapparse: Set the GStreamer timestamp according to the pcap timestamps
      * 594030 : [mpegtsdemux] Support for AC3/EAC3 not 100% correct
      * 594277 : Make the default segment of outputselector TIME instead of UNDEFINED
      * 594278 : dshowvideosink: remove unused variable
      * 594279 : dshowsrcwrapper: use tchar macro for string literals
      * 594321 : Videomeasure plugin
      * 594382 : assrender: Fix compilation with libass = 0.9.6
      * 594489 : broken compilation for mpegdemux
      * 594715 : libgstsignalprocessor install issues
      * 594812 : [mpegpsdemux] Seeking broken for MPEG PS cut from VOB file
      * 595215 : PNM encoder doesn't support ASCII encoding
      * 595409 : PNM decoder can't decode ASCII encoded files.
      * 596285 : gstvideomeasure crashes at the end of some streams
      * 596743 : qtmux: fix flags_as_uint to flags[]
      * 598139 : faad element leaks itself.
      * 598263 : refcount leak in resindvd
      * 598274 : dtsdec leaks input buffers
      * 598369 : Properly detect pre-releases
      * 598733 : id3mux doesn't write image to APIC tag
      * 582779 : [resindvd] Add support for other audio codecs than ac3
      * 595700 : PNM decoder doesn't handle ASCII encoded pnm data split over several buffers

Changes since 0.10.13:

      * Moved rtpmanager to -good
      * Moved dirac elements from schroedinger to gst-plugins-bad
        (new schroedinger release without the gstreamer elements
         will follow shortly)
      * amrwb: Remove AMR-WB parser and decoder and rename encoder plugin
        from amrwb to amrwbenc (the removed elements will re-appear in the
        next -ugly release; no migration strategy provided in this case
        because of the special status of the amrwb plugin)
      * asfmux, rtpasfpay: add ASF muxer and windows media payloader
      * basevideo: add experimental video base class library/API
      * camerabin: lots of fixes and improvements
      * capssetter: new element for debugging purposes
      * directdraw: Implement GstNavigation interface
      * directshow: refactor and improve dshowsrcwrapper, dshowideosrc, dshowaudiosrc
      * frei0r: wrapper for frei0r video filter plugins
      * gme: add libgme plugin which supersedes the existing OpenSPC spc plugin
      * Implement SEEKING query in more demuxers and decoders (notably
        mpeg-ps/mpeg-ts, mxf, musepack, rawparse)
      * kate: add kate subtitle encoder, decoder and overlay
      * mimic: lots of fixes for mimenc and mimdec; add "paused mode"
      * mpegpsdemux: added caps for AAC and fixed playback of a clip with LPCM
      * mpegtsdemux: added VC1, EAC3 and LPCM related to blueray/hdmv
      * qtmux: handle pixel-aspect-ratio; misc. other fixes and improvements
      * shapewipe: support ARGB/RGBA for video input/output; fix for still images
      * vdpau: add experimental vdpau plugin

Bugs fixed since 0.10.13:

      * 587819 : [mpegtsparse] crash because of double free
      * 344129 : [directsoundsrc] Plugin for Directsound source
      * 377784 : xvidenc should output video/mpeg
      * 540128 : Totem freeze with short HDV file
      * 541962 : [directdrawsink] crash when exposing in GST_STATE_READY
      * 561241 : metadatademux pad activation deadlock
      * 561752 : GstRtpBin implement Release pad functions
      * 575672 : [mpegtsdemux] crashes when souphttpsrc is used as a stream source
      * 575818 : [ivorbisdec] extract vorbis tags
      * 576800 : gstreamer SPC plugin requires non-portable x86 code
      * 583470 : mpegtsparse: Old pes pids not removed when receiving PAT table
      * 584252 : enhancements to OSSv4 plugin
      * 584897 : Remove AMR plugin as it has been replaced by updated OpenCore plugin
      * 585839 : Support for sending RTP packets as GstBufferList in the gstrtpbin
      * 586019 : [mxfdemux] stray semicolons after if statement
      * 586097 : GStreamer DVB tuning too quick for some devices
      * 586956 : Include < sys/time.h > only if it is present in the system
      * 587023 : [freeze] disable plugin static lib
      * 587595 : [dshowsrcwrapper] start refactoring
      * 588638 : [katedec] add x-dvd-subpicture output
      * 588944 : mpegpsdemux doesn't support seeking with GST_FORMAT_TIME anymore
      * 590030 : rtpsource: Incoming buffers do not always have caps
      * 590208 : GstNavigation interface support for directdrawsink
      * 590360 : [qtmux] requires endianness even if the samples are 8bit
      * 590446 : [mpegdemux] MPEG TS with A52 not seekable
      * 590797 : Memory leak in rtpsource.c
      * 591440 : rtpdtmfsrc event cleanup
      * 591538 : generic states test fails (vdpau, mimenc)
      * 591610 : asfmux: messing up with sinkpads
      * 591927 : REQUIREMENTS is out of date
      * 592259 : mimenc: fourcc written incorrectly
      * 593024 : regression in schroenc streamheader initialization
      * 593063 : resindvd and rawparse do not use correct base LDFLAGS
      * 593068 : Disarray in directsoundsrc/directdrawsink
      * 586354 : [h264parse] blocked in infinite loop while parsing a corrupted frame


Changes since 0.10.12:
    
      * New shapewipe video transition plugin
      * qtmux improvements
      * camerabin improvements
      * HDV MPEG-TS private streams support
      * Output interlacing information in mpegvideoparse
      * MS-ADPCM decoder
      * RTP fixes and enhancements
      * DTS decoder improvements
      * New ID3 tagging plugin that supports v1, v2.3 and v2.4
      * Support for PGS (BluRay) subtitles
      * Many other bug fixes and enhancements

Bugs fixed since 0.10.12:
     
      * 584945 : camerabin unit tests failing
      * 511097 : Support self-signed certificates in neonhttpsrc
      * 561752 : GstRtpBin implement Release pad functions
      * 584164 : gstspu-pgs.c warnings for format string args and uninitia...
      * 584165 : rtpbin sdes message broken
      * 584360 : gppmux ftyp
      * 585015 : debugutils can't find libgstinterfaces
      * 585660 : segfault in scaletempo plugin
      * 584114 : gppmux and h263
      * 583188 : Problem with sdp: bind failed or video disappear after fe...
      * 583627 : statistic file name needs to be standardized

Changes since 0.10.11:
    
      * Presets support in several elements
      * Support ITV MPEG-TS streams
      * New element: flvmux
      * New element: osxvideosrc
      * Fixes in RTP elements
      * camerabin fixes
      * Improved QT/mp4 muxing
      * xdgmime based content type guessing
      * deinterlace2 moved to the Good plugins (replacing deinterlace)
      * Support for MXF muxing, and improved MXF demuxing
      * Greatly improved DVD playback
      * DirectDraw element moved back from Good plugins
      * Many other bug fixes and improvements

Bugs fixed since 0.10.11:
     
      * 573852 : Update celt to 0.5.x
      * 574401 : metadatamux fails^WIS failure
      * 580091 : soundtouch plugin fails to load
      * 153684 : [osxvideosrc] Mac users needs an osxvideosrc
      * 537700 : [scaletempo] Scale audio tempo in sync with playback rate
      * 569437 : mpegtsparse: flow error or crashes while dynamicly changi...
      * 569673 : [Mpegtsparse] PAT changes not always signaled
      * 569781 : [Mpegtsparse] drop of valid TS packets
      * 573595 : plugins-bad mingw ports
      * 573846 : Check for soundtouch-1.4 too
      * 573847 : Use SDL static-libs for conftest and libs for gstsdl*
      * 573848 : Use native CPU number detection in mpeg2enc
      * 573849 : modplug's sndfile.h conflicts with libsndfile's sndfile.h
      * 575388 : [aacparse] deadlocks in busy loop when seeking
      * 575736 : mpeg2enc's bitrate parameter does not work properly
      * 576408 : [playbin2] Deadlock when using resindvd as source
      * 577690 : rtpdtmfmux: missing pad unref
      * 577864 : [residvd] dvdnav version requirements should be higher
      * 578112 : x264enc: I-frame request
      * 578562 : dshowdecwrapper missing check for GST_DISABLE_GST_DEBUG
      * 578563 : win32 export files are not disted
      * 580133 : Regression in baseparse since last release
      * 580144 : emit notify::internal-ssrc when there is a ssrc collision
      * 580786 : [flvmux] " uninitialized variable " compiler warning
      * 580901 : Uninitialized variable may be used in fpsdisplaysink.c
      * 581375 : rtpssrcdemux crashes on SR-less rtcp packets
      * 582013 : uninitialized var in mxfmux.c prevents gst-plugins-bad bu...
      * 582074 : [faad] Fails to build with faad 2.6 (misdetected as 2.7)
      * 582208 : [PATCH] fix for soundtouch-1.4
      * 582483 : y4menc doesn't pass timestamps on
      * 582656 : [mxfdemux] Fix deadlock when querying from the pad-added ...
      * 582702 : qtmux: crash in atom_moov_add_blob_tag
      * 583337 : [mxfmux] Wrong layout for non-interlaced formats
      * 580585 : rtpmux memleak
      * 577843 : input-selector causes problems with DVD menus in playbin2
      * 581593 : gppmux doesn't support MPEG4 part 2 in sink caps
      * 575284 : add auto-connect-forced mode to jackaudiosrc and jackaudi...
      * 576021 : On Windows qtmux can't write files longer than 2-4 GiB, u...
      * 576712 : Output-selector keeps reference to latest buffer when cha...
      * 581427 : [mpeg4videoparse] config buffer is leaked

Changes since 0.10.10:
    
      * Add ASS/SSA subtitle handling element assrender
      * Leak fixes in the QuickTime decoder wrapper
      * Better DirectShow output on Windows
      * Extend QT muxing support to include AMR and H.263
      * mms seeking support
      * Extended MXF file format handling
      * camerabin and photography API for digital camera interfacing
      * Merge elements from Farsight: liveadder, sirendec, sirenenc, valve,
        rtpdtmfsrc, rtpdtmdepay, dtmfsrc, rtpdtmfmux, autoconvert,
        mimdec, mimenc
      * typefinder based on xdgmime

Bugs fixed since 0.10.10:
     
      * 573369 : [gstfaad] Memory corruption and segfault
      * 568704 : Metadatamux: unable to configure byte order for EXIF
      * 354908 : videoflipping interface for v4l2src
      * 369912 : missing inclusion in rpm spec file
      * 469930 : [mmssrc] seeking support PATCH
      * 481075 : Full support for ASS/SSA subtitles
      * 549645 : merge useful elements from gst-plugins-farsight into core
      * 567003 : [ladspa] improve plugin scanning
      * 567371 : [mpegtsparse] memory leak in mpegtspacketizer
      * 567828 : rtpmanager and RTCP BYE packet
      * 567965 : [flvdemux] add support for ECMA arrays in script tags
      * 568480 : gst-plugins-bad dccp plugin won't compile on Soalris
      * 568483 : Problems linking gst-plugins-bad
      * 568837 : RFE: allow building against the system modplug library
      * 569323 : [qtmux] should support audio/AMR sink
      * 570996 : bpmdetect relibably crashes with SIGSEGV on particular file
      * 571560 : gstdshowaudio decoder doesn't compile.
      * 572315 : Compiling camerabin on Windows with Visual Studio
      * 572900 : gstrtpsession should not forward recv side event to the s...
      * 573288 : [mpegtsdemux] memory leak when pusi is missed due to pack...
      * 573391 : [videoanalyse] Wrong brightness calculation
      * 575157 : xdgmime typefinder: make more conservative
      * 575565 : [mxf] mxf plugin uses symbols not in glib 2.6 (minimum gl...
      * 564114 : [PATCH] fbdev: fix depth calculation
      * 573850 : Use Glib's byte order in gstgsmdec
      * 573851 : Use glib integer types in gstfaad
      * 172043 : [mpegpsdemux] wrong video length on mpeg file

Changes since 0.10.9:

      * Require gettext 0.17
      * ACM mp3 decoder element for win32
      * New MXF demuxer added
      * JPEG-2000 encoder - jp2enc added
      * RTP support
      * Fixes for RTP support
      * Add parsers for AAC and AMR
      * Move libgstapp and elements to -base
      * Add Quicktime muxer element qtmux
      * Enhance RFB capture
      * Improve MPEG-TS and MPEG-PS demuxing
      * Don't install static libs for plugins
      * Introduce audioringbuffer element
      * Improve DVD playback of ResinDVD components
      * Move old audioresample from -base as legacyaudioresample
      * Improve speexresampler, and then move it to -base
      * Improve FLV demuxing and parsing
      * Various DVB input fixes
      * Add support for frequency list descriptors for DVB
      * Improve MPEG-TS muxer
      * Various other bug-fixes

Bugs fixed since 0.10.9:

      * 127574 : replaygain support
      * 480543 : [spc] crashes when not given any input data
      * 546319 : [resindvd] Stuck on first menu (language selection)
      * 549222 : Totem using resindvd element as DVD navigation module doe...
      * 550280 : Move qtmux to gst-plugins-bad
      * 550454 : FLV demuxer screws up in Pitivi
      * 550613 : [mpegtsmux] Add support for ac3/dts/lpcm
      * 553823 : CodeStyle improvements and minor fixes to the DCCP plugin.
      * 555238 : Recent changes in x264 breaks compilation of x264 plugin.
      * 557161 : Wrong time displayed and no seeking with MPEG PS cut from...
      * 557763 : [mpegtsmux] DeadlockEOS due to interleaving mechanism
      * 557814 : [mpegdemux] frequency list descriptor support
      * 558639 : cross-configuring interrupts due to a failing check for " ...
      * 560841 : Provide access to packet loss
      * 561992 : debug format warning during compilation of resindvdsrc.c ...
      * 562312 : Lip-sync generates wrong `ts-offset' in GstRtpBin
      * 562319 : [rtpsession] memory corruption
      * 562802 : [appsrc] lockup in pad_push() if previous flow was wrong-...
      * 563006 : mxf mpeg422 file stops playing
      * 563147 : input-selector doesn't notify of active-pad changing when...
      * 564232 : Dual Licensing qtmux
      * 565439 : Make pcapparse compile with (mingw32) gcc
      * 565509 : rtpsource on receiver side can't get clock-rate for h264,...
      * 565614 : [mpegtsdemux] Fix memory leak
      * 565910 : allow forcing the ssrc on a rtpsession
      * 566356 : [dvbbasebin] Couple of memleaks
      * 566613 : bayer2rgb calculates wrong color offset
      * 566878 : [ladspa] Add dependencies for ladspa modules
      * 566957 : Add time based seeking to ResinDVD
      * 566958 : fix dirac support in qtmux/mp4mux
      * 566959 : Fix duration query on mpegtsdemux
      * 508029 : [speexresample] pops/glitches in some cases
      * 558416 : [PATCH] realvideodec: use pixel aspect ratio of container
      * 564482 : [appsrc] semantics of push-buffer signal awkward for bind...
      * 565319 : rtpjitterbuffer: bursty reception can cause time to be re...
      * 565613 : [mpegtsdemux] Add scrambled field to service structure
      * 567004 : ladspa plugin crashes on Solaris

Changes since 0.10.8:

      * New CELT encoder and decoder
      * New TwoLAME encoder
      * New DCCP element
      * New AIFF parser element
      * New APEX sink element
      * deinterlace2 element improvements
      * New JACK audio src element
      * New winscreencap, winks and pcapparse plugins
      * x624enc fixes
      * Support for ATSC tuning and channels.conf parsing
      * RTP improvements
      * New scaletempo element
      * Add Fluendo MPEG-TS muxer
      * Add Fluendo MPEG-TS and MPEG-PS demuxers
      * New JPEG2000 element
      * New FLAC parser element
      * DVD playback improvements
      * Improved DirectShow decoding support
      * New Windows Audio Session audio src element
      * New FLV muxer element
      * Many other bug fixes and improvements

Bugs fixed since 0.10.8:

      * 537700 : [scaletempo] Scale audio tempo in sync with playback rate
      * 550468 : [name conflict] New Fluendo mpeg demuxers
      * 545197 : jackaudiosrc
      * 555244 : Output-selector has unexpected event forwarding right aft...
      * 402593 : deinterleave gives corrupt output
      * 406673 : Need AIFF parser
      * 535527 : [real] Real video/audio stream fails to play
      * 537455 : ATSC: VSB / QAM Annex B support
      * 538500 : AIFF file doesn't play
      * 542390 : Implementation of DCCP Plugin for gstreamer
      * 542510 : [apexsink] Apple AirPort Express Wireless Sink
      * 545247 : use g_setenv() insteed of setenv() in sdlvideosink.c
      * 546312 : Make the metadata writable before modifying it in rtpmanager
      * 549409 : gstrtpbin don't stop at the end of a stream
      * 549774 : audio / video synchronization glitch during rtsp playback
      * 550486 : [faac] Negotiation problem with mono audio for some sampl...
      * 550657 : New element jasperdec
      * 552506 : [neonhttpsrc] doesn't handle/throw errors correctly
      * 552536 : fix incomplete change to gstdvbsrc.c
      * 553755 : [mpegpsdemux] FP exception when playing tv2-1_25.mpg
      * 555193 : [ELEMENT-MOVE] Move mpegtsparse element into mpegdemux pl...
      * 555198 : [mpegpsdemux] Lower the RANK to MARGINAL for next release
      * 555912 : [apexsink] Missing from ext/Makefile.am
      * 555965 : Missing space after point mark
      * 555968 : Missing space after point mark
      * 555969 : Missing space after point mark
      * 556003 : [flvdemux] Regression in handling flow returns in pull-mode
      * 556274 : [aiffparse] Uses debugging methods before debugging is in...
      * 556338 : Failed to configure latency
      * 556428 : [mpegpsdemux] Creates invalid newsegment events 
      * 556430 : [inputselector] Assumes there's always an otherpad
      * 556440 : [PATCH] crash on demuxing certain transport streams
      * 556482 : [PATCH] crash in mpegtsparse get_encoding_and_convert
      * 556564 : [flvmux] Copy & paste bugs resulting in invalid files
      * 556588 : [apexsink] should not have PRIMARY rank
      * 557080 : [mpegpsdemux] Regression with reverse-playback
      * 543480 : gstrtpbin fails to release lock while emitting signal
      * 556520 : jitterbuffer seqnum gap detection is wrong
      * 463941 : Plugin for screen capture on windows
      * 519935 : New plugin for video capture on Windows
      * 520899 : New plugin: pcapparse
      * 520901 : New plugin: wasapi (Windows Audio Session API) 

Changes since 0.10.7:

      * Support shared desktops in RFB input
      * Make the Quicktime codec wrapper work on win32
      * Experimental DVD navigation support
      * Support AAC/H.264 in FLV files
      * Fixes in the DirectShow codec wrapper
      * Fix the Real codec wrapper plugin
      * New deinterlace2 plugin incorporating TVtime deinterlacers
      * Handle seeking, timestamps, duration in RAW video/audio parsers
      * New DirectShow video sink for Win32
      * FAAD reverse playback support
      * OSS4 support improvements
      * MythTV seeking support
      * SPC decoder now supports seeking, tags and duration queries
      * Replaygain elements moved to Good
      * Deinterleave/interleave elements fixed and moved to Good
      * MPEG-4 video stream parser fixes
      * Improved MPEG-TS parsing for DVB support
      * Improvements in App source/sink
      * RTP manager enhancements

Bugs fixed since 0.10.7:

      * 533736 : [mythtvsrc] Seeking doesn't work
      * 544050 : ext/timidity/gsttimidity.c :  ISO C90 forbids mixed decla...
      * 454151 : SPC plugin enhancements (patch)
      * 506594 : [interleave] doesn't work with channels > 1
      * 521392 : Proposed patches for bayer2rgb encoding
      * 525613 : [wildmidi] [PATCH] initializes library multiple times
      * 528618 : amrwb plugin do not build without warning with the 3ggp s...
      * 529359 : BBC Real Audio stream is just noise
      * 530611 : [gstsrtenc] declare variables at beginning of block
      * 531840 : QuickTime wrapper doesn't work on Win32
      * 531955 : gstrtpsession doesn't send RTCP bye on EOS
      * 532723 : mpeg4videoparse should parse the codec data
      * 533435 : wildmidi does not work
      * 533559 : mpeg4videoparse should skip garbage
      * 535043 : VCD plugin only plays first track
      * 536042 : mpeg4videoparse broken on big endian architectures
      * 536258 : interleave doesn't close properly
      * 536856 : rtpmanager deadlocks when receiving new data while going ...
      * 538560 : [mpegtsparse] static caps reference counter incremented i...
      * 539292 : memory leak in mpegtsparse
      * 539601 : [realvideodec] not-negotiated error if codec lib isn't found
      * 541522 : cross mingw32 gcc: festival plugin compilation fix
      * 541543 : fix HAVE_OSS4 detection code in configure.ac
      * 543286 : deinterlace2 doesn't build outside gcc
      * 543846 : [resindvd] Impossible to build from the first configure r...
      * 543848 : [ladspa] Needs to link with -ldl for dlopen() and friends
      * 543860 : [modplug] Uses CFLAGS for CXXFLAGS
      * 543861 : [resindvd] Some files not disted
      * 544457 : -bad doesn't compile with MSVC
      * 526905 : [musepack] Port to the new libmpcdec API
      * 532011 : Deadlock in rtpsession
      * 536309 : Seeking in pipeline with videoparse crashes

Changes since 0.10.6:
    
      * OSS v4 support
      * libdc1394 2.0.0 support
      * AAC support fixes
      * RTP support improved
      * New OFA element
      * SRT subtitle encoder added
      * Windows Inet support for http/ftp
      * Fixes in dc1394, MIDI, MPEG-2 encoding, MythTV input, NAS
      * Fixes in Bayer decoder, replaygain analysis, GSM decoder
      * DVB/MPEG-TS support improved
      * NSF decoder updated
      * 'metadata' plugin enhancements
      * Dirac encoder ported to libschroedinger
      * mplex element ported to 0.10
      * VCD/CDXA parser ported to 0.10
      * Directshow wrapper improvements
      * 'selector' plugin enhancements
      * souphttpsrc moved to the -good module
      * Various other fixes and enhancements

Bugs fixed since 0.10.6:
     
      * 498237 : nsfdec crash with SK8ORDIE.
      * 529378 : faad leaks GstAudioChannelPosition
      * 351309 : New Element: gst-puid
      * 469979 : [faad] Could not map channel positions - setting caps on ...
      * 494499 : replaygain analysis slowdown on low volume (denormals)
      * 514948 : [souphttpsrc] configurable buffer size setting and zero-copy
      * 514964 : [dc1394] port to new stable 2.0.x API
      * 517937 : various C89 fixes
      * 518227 : test/icles/metadata_editor.c does not compile on Windows
      * 518722 : [souphttpsrc] append cookie headers to HTTP request
      * 519905 : [mvedemux] fix audio discontinuity
      * 520329 : [PATCH] mjpegtools: mplex ported to 0.10 and mpeg2enc upd...
      * 520626 : Implement collision and loop detection in rtpmanager
      * 520892 : [dshowvideosrc] latency and shutdown improvements
      * 520894 : rtpmanager rtcp thread shutdown deadlock
      * 520897 : new element: wininetsrc
      * 521749 : [souphttpsrc] unit test fails on mandriva cooker
      * 522134 : [souphttpsrc] Playback should continue seamlessly on serv...
      * 522212 : wrong origin
      * 522884 : gstneonhttpsrc does not handle the HTTP status 303 correc...
      * 523854 : [souphttpsrc] Glitches and crackling when playing things ...
      * 524035 : [neonhttpsrc] fails to compile with libneon 0.28.x
      * 525271 : [new plugin] srtenc
      * 526337 : souphttpsrc ignores connections error
      * 527622 : [flvdemux] crash in FLV demuxer
      * 528000 : [timidity] Doesn't dist all files correctly
      * 528011 : [dc1394] Shouldn't be included in the states test
      * 528245 : rtpbin element leaks
      * 528266 : [ofa] Unit test fails because of different fingerprints
      * 528614 : timeout introduced in poll loop for fd in dvbsrc causes b...
      * 529283 : [ofa] Unit test leaks tag string
      * 529285 : [rganalysis] Unit test leaks a GstTagList
      * 517854 : DirectFB check fails
      * 517895 : nas plugin no longer builds (configure.ac error)
      * 517896 : PATCH: fix building of mpeg2enc plugin with even newer mj...
      * 525100 : does not build with --disable-external
      * 481354 : [wavparse] does not play 700Hz GSM 6.10 wav file

Changes since 0.10.5:
    
      * DVB support added
      * dc1394 support
      * RTP-manager improvements
      * Support for native QT codecs on OS/X and DirectShow codecs on Windows,
        courtesy of Songbird and Fluendo
      * New elements: flvdemux, flvparse, mpegtsparse, dvbsrc, dvdspu
      * More new elements: mpeg4videoparse, metadatademux/mux, souphttpsrc,
        speexresample, qtwrapper
      * Even more new elements: rawaudioparse, fbdevsink
      * Renamed elements/plugins: switch (now selector), pitch (now soundtouch)
      * Elements graduated to good: multifilesrc/sink, spectrum, equalizer,
        bpwsinc, lpwsinc
      * Elements graduated to ugly: xingmux (now part of mpegaudioparse)
      * OpenGL support moved to new module: gst-plugins-gl
      * appsrc/appsink improvements
      * Fixes in neonhttpsrc
      * Fixes in amrwbparse
      * Deinterlacer improvements
      * Fixes in dtsdec
      * Fixes in the Real codec wrappers

Bugs fixed since 0.10.5:
     
      * 321240 : [PLUGIN-MOVE] dfbvideosink should be moved from -bad to -...
      * 508029 : [speexresample] pops/glitches in some cases
      * 508294 : [realaudiodec] crash in set_caps dereferencing NULL funcs...
      * 387251 : New Plugin! : dc1394 Adds Support for firewire (1394) IID...
      * 393461 : [Real] Location of .so varies on each distribution
      * 395424 : neonhttpsrc lacks support for proxy servers
      * 397759 : Xingmux may not write a proper Xing/VBR header
      * 403992 : [new plugin] timidity based midi decoder
      * 409974 : Code for improved GStreamer resampler (based on speex res...
      * 426657 : Add support for SDP multicast description files
      * 433373 : [win32] autogenerated win32/common/config.h needed
      * 444499 : build of fresh CVS is failing in ext/sdl
      * 450175 : gcc-2.9x build fixes
      * 450605 : Missing files in po/POTFILES.in
      * 452009 : ./configure breaks when cross-compiling FAAD2
      * 452258 : [mpeg2enc] make work with mjpegtools 1.9
      * 453636 : dvbsrc needs more flexible adapter selection
      * 454078 : [ivorbis] header files missing in release tarball
      * 454313 : missing xml files to build docs/plugins
      * 456901 : PATCH: add several missing supported mime-types to the mo...
      * 456912 : PATCH: make wildmidi plugin check for /etc/timidity.cfg
      * 461068 : Seeking not properly implemented by the pitch plugin
      * 461373 : HP-UX 11.11 build with native compiler
      * 461377 : [festival] port to GStreamer-0.10
      * 461601 : Some files missing from POTFILES.in
      * 462737 : compilation breaks with g++-4.2 and gcc-4.2
      * 464678 : Add connection-speed property to mmssrc element
      * 468039 : [mythtvsrc] missing examples for live tv in gst-inspect
      * 471554 : real media videos do not work
      * 473562 : [rtpmanager] cvs build problem due to compiler warning
      * 474969 : [neonhttpsrc] fails to play radio streams with neon > =0.26
      * 476128 : Printf format fixes
      * 476148 : Add mpeg4 video parser
      * 476159 : memleak patch to rtpmanager
      * 476370 : [faad] shouldn't set channel-positions for mono and stereo
      * 477306 : amrwbenc has not property to select band mode
      * 478566 : Add notification of active SSRCs to the RTP manager
      * 481200 : gstneonhttpsrc discards GET parameters from URL
      * 481276 : [mpegtsparse] " not linked (-1) " error
      * 481279 : [mpegtsparse] partial corruption of the output stream
      * 483400 : mpegtsparse: PAT with version 0 incorrectly skipped by pa...
      * 484990 : memleak - missing g_free() rtpmanager/gstrtpbin.c
      * 485462 : alsaspdifsink uses wrong sample rate
      * 487496 : [dvdspu] fails to link on Mac OS
      * 487892 : [mpegtsparse] getting pat-info property before PAT is ava...
      * 487901 : [mpegtsparse] stale PAT info when switching from PLAYING ...
      * 490060 : [faac] a few minor issues: bitrate, enum nick for low com...
      * 490682 : [interleave] can't create more than one request sink pad
      * 492406 : Crasher in libgstdshow on Windows/MSVC
      * 492798 : [rtpmanager] build issues on Windows/MSVC
      * 496221 : Streaming FLV's over HTTP doesn't work, for totem and the...
      * 498430 : incomplete CVS commit
      * 498667 : gstreamer segfaults in faac
      * 498755 : FLV files incorrectly report framerate of 1000fps
      * 499008 : mpeg2enc ignores the incoming stream aspect property
      * 500099 : Fixes and improvements to souphttpsrc
      * 500142 : switch element in switch plugin should be renamed
      * 501579 : rtpmanager should emit a signal when it can associate a s...
      * 502335 : [souphttpsrc] some enhancements
      * 502879 : videoparse segmentation fault
      * 503308 : Changing tempo using pitch plugin doesn't update length info
      * 507020 : [rtpjitterbuffer] unreffing peeked buffer and not popping...
      * 507584 : gio: gstgiobasesrc.c does not compile with CVS version of...
      * 507940 : rtpsession:rtp_send_src shouldnt not have fixed caps
      * 508515 : [rtpbin] allow request_new_pad with name NULL
      * 508587 : Improvement to rtpsession
      * 508979 : Enhancement for xingmux
      * 510708 : [souphttpsrc] support for libsoup-2.4
      * 511001 : enhanced deinterlace plugin
      * 511146 : rtpjitterbuffer should not return an error on no-caps
      * 511530 : DTS library API change?
      * 511683 : gstrtpbin fails to associate streams together for lipsync
      * 511686 : make gstrtpjitterbuffer respect different clock rates for...
      * 511920 : rtpsource queue full tries to treat GstBuffer as GstObject
      * 512654 : [h264parse] does not build in cvs head (unused variable i...
      * 512774 : [rtpjitterbuffer] does not accept clock rate from caps
      * 512826 : switch / selector event leak
      * 514093 : bug in configure.ac prevents glimagesink plugin from bein...
      * 515564 : souphttpsrc unit test fails to build
      * 515567 : [states] States unit test should exclude the dvb plugin
      * 515588 : Warning building tremor plugin
      * 515720 : [xvid] Memory leak caused by not unsetting GValue
      * 515721 : [rfb] rfbsrc leaking the rfb decoder
      * 515722 : [fbdev] Leaking the device property string
      * 515815 : [mpegvideoparse] fix a few new memory leaks
      * 515860 : plugins should not install headers - fix metadata
      * 515919 : Fix a bunch of finalize leaks
      * 515964 : [docs] Still contains docs for the GIO plugin although it...
      * 515970 : [dshowdecwrapper] Doesn't chain up dispose function properly
      * 516061 : [h264parse] fix a few new memory leaks
      * 516094 : Remove glimagesink from -bad
      * 516114 : dvbbasebin leaks the location string when the uri handler...
      * 516160 : gstrtpbin did not ignore streams with no SR when doing as...
      * 516436 : [dvdsub] segfault on display of 1st subpicture in 2nd cha...
      * 516448 : criticals due to missing debug category init in mpegtsparse
      * 516499 : critical caused by assuming optional property " descriptor...
      * 517391 : [tta] Doesn't link with libm
      * 517571 : small memory leak in gstrtpbin
      * 517684 : [mythtvsrc] Small bug fixes
      * 478159 : Could not decode realvideo buffer
      * 497020 : Add fully async HTTP source based on libsoup.
      * 501562 : [switch] bogus locking order

Changes since 0.10.4:

      * New plugin - realdec for decoding Real streams using binary libs
      * New plugin - MythTV source
      * New plugin - appsrc (for application data insertion)
      * New plugin - VMnc VMware capture decoder
      * New plugin - JACK audio output
      * New plugin - interleave/deinterleave
      * New plugin - RTP manager
      * New plugin - Bayer to RGB converter
      * New plugin - ReplayGain support
      * New plugin - DirectShow win32 input support
      * New plugin - videosignal/videoanalyse
      * LADSPA plugin improvements
      * IIR equaliser ported to 0.10 (iirequalizer)
      * libsndfile output ported to 0.10
      * mpegvideoparse ported to 0.10 and improved
      * switch element ported to 0.10
      * VCD source element ported to 0.10
      * AMR-WB support fixes 
      * MIDI renderer plugin based on timidity
      * Windows and OS/X output plugins moved to the Good module 
      * qtdemux, wavpack and videocrop plugins moved to the Good module
      * Many other bug fixes and improvements
      * Parallel installability with 0.8.x series
      * Threadsafe design and API

Bugs fixed since 0.10.4:

      * 152403 : [mpeg/DVB] Integrating externaly developped DVB source el...
      * 333307 : AmrWB Plugin
      * 345633 : [nassink] port to 0.10
      * 354174 : [PATCH] add REAL support by using the proprietary drivers
      * 354451 : [mythtvsrc] Plugin for MythTV source
      * 357055 : Tremor (ivorbis) plug-in is unable to decode vorbis strea...
      * 374773 : [qtdemux] [PLUGIN-MOVE] Move from -bad to good
      * 375264 : [neonhttpsrc] add seek support
      * 376591 : configure.ac looks for wrong symbols for FAAD support
      * 382184 : Port interleave and deinterleave to 0.10 for audio channe...
      * 388050 : [neonhttpsrc] code simplifications
      * 392112 : [rfbsrc] doesn't build with MinGW
      * 393622 : Not building real plugin, only works on 32bit x86 platforms.
      * 395536 : [wavpackenc] Trivial cleanup
      * 395597 : Deinterleave fails to negotiate with alsasrc when using D...
      * 400555 : dts-in-wav: only 2 channel recognised
      * 402470 : [osxvideosink] video sink for MacOSX
      * 412077 : [speed] can't initially set speed > 1
      * 412710 : [replaygain] Add playback elements
      * 413818 : [neonhttpsrc] errors out on redirects
      * 421110 : New x264enc plugin
      * 421598 : [wavpack] Add support for non-8*n depths and don't play a...
      * 423283 : [qtdemux] timestamps of outgoing h264 packets are wrong
      * 423741 : [amrwb] use external shared libamrwb
      * 430594 : Unable to compile gst-plugins-bad CVS
      * 430598 : [realvideodec] dll functions not available on MinGW
      * 430664 : name conflict for " rtpbin " element
      * 437260 : CFLAGS are poinsoned by the OpenGL test
      * 437403 : gst-plugins-bad uses #ifdef G_OS_WIN32 instead of #ifdef ...
      * 437539 : Compilation of DirectDraw and DirectSound plugins using m...
      * 439405 : YUV not working in GL image sink.
      * 439910 : [switch] Warning in a debug function (Mingw)
      * 439911 : [qtdemux] Warning in a debug function (MinGW)
      * 439914 : [directdraw] Warnings when using MinGW
      * 440466 : [PLUGIN-MOVE] osxvideo
      * 440774 : [sdl] sdlvideosink has ill-formatted element details
      * 442689 : [neon] Property-related cleanups of neonhttpsrc
      * 445189 : PLUGIN-MOVE - Move Windows sinks to -good
      * 348973 : New plugins: MVE muxer/demuxer
      * 391971 : Fix build with gcc-2.x
      * 392313 : [directdrawsink] dist and add to gst-plugins-bad
      * 392638 : [directsoundsink] dist and add to gst-plugins-bad
      * 392856 : [qtdemux] plugin must link against zlib (error with MinGW)
      * 403572 : Port equaliser element to 0.10
      * 352605 : [PLUGIN-MOVE] move wavpack to -good
      * 426972 : Specific set of H.264 files cannot be played
      * 434101 : [gsm] doesn't link against libgstbase-0.10

Changes since 0.10.3:

      * V4L2 source element moved to Good plugins
      * Many improvements in Quicktime playback
      * Xvid encoding and decoding improvements
      * FAAD decoder fixes
      * New element: alsaspdifsink for IEC958 output
      * Spectrum FFT analysis element ported
      * New element: h264parse. H.264 Parser
      * Fixes in bz2 support
      * New element: theoraexpdec. Libtheoraexp based Theora decoder
      * New element: wavpackenc. Wavpack decoder
      * Improvements in the libneon based http source
      * gstfilter ported to 0.10
      * mpeg2enc ported to 0.10
      * New element: nsfdec. NSF decoder
      * New element: spcdec. libopenspc based SPC decoder
      * videocrop ported/re-written from 0.8
      * cdaudio element ported to 0.10
      * New element: rganalysis. ReplayGain analysis element
      * New element: dvbsrc. DVB source element (disabled by default)
      * deinterlace (Simple deinterlacer) ported from 0.8
      * New element: nuvdemux. NUV video demuxer
      * Fixes in the DirectDraw output elements
      * New elements: multifilesrc, multifilesink
      * y4mencode ported from 0.8
      * rfbsrc, librfb based capture source ported from 0.8
      * New element: jackaudiosink. JACK audio output element
      * Many other fixes and improvements

Bugs fixed since 0.10.3:

      * 379261 : crash in Movie Player: Trying to play a partial...
      * 151192 : [PATCH] nsf decoder
      * 124580 : [jacksink] plugin needs a maintainer/love/to be updated
      * 330632 : [qtdemux] MP3 stream in MP4 container not playable
      * 335507 : [FAAD] blur_warhammer.mp4 movie doesn't transcode
      * 339462 : [PATCH] xvid plugin to support more capabilities of XviD ...
      * 340638 : New plugin: h264 parse element
      * 341231 : [qtdemux] [faad] audio in some superman trailers doesn't ...
      * 341461 : gst-plugins-bad missing -no-undefined again
      * 341563 : [faad] fails to decode middle of file, should just skip o...
      * 343031 : v4l2src caps negotion is faulty
      * 343131 : [wavpack] add wavpack encoder
      * 343184 : [mpeg2enc] ported to 0.10
      * 343866 : cygwin fixes
      * 344472 : [wavpackdec] should post audio codec tag and extract bitrate
      * 344821 : [pitch] controllable properties
      * 344944 : AAC Support crashes with some files
      * 345182 : [neonhttpsrc] fails to compile with libneon 0.26.x
      * 345336 : modplug plugin doesn't work on AMD64
      * 345653 : [videocrop] port to 0.10, support all common formats
      * 346853 : [PATCH] ported gstfilter elements to 0.10
      * 347079 : [qtdemux] plugin doesn't decode Year
      * 347443 : [wavpack] port parser/decoder to official API and random ...
      * 347935 : [nsf] warning when building RPM
      * 348220 : New libopenspc-based SPC playback plugin
      * 348976 : [xviddec] crashes after invalid unit size warning
      * 350399 : [qtdemux] extract multiple redirect locations and require...
      * 350741 : [faac] Wrong bitrate set
      * 351495 : [wavpackparse] add support for push-based mode
      * 351557 : [wavpackparse] resync in push mode if sync was lost
      * 357069 : [rganalysis] New element: ReplayGain analysis
      * 357212 : [glimagesink] crashes if no DISPLAY
      * 361260 : New element: nuvdemux
      * 362626 : Fixes compiling with forte: warning clean up (part 5)
      * 376106 : Port rfbsrc to gst 0.10
      * 378613 : [qtdemux] non-working redirect ('alis' redirect reference...
      * 382203 : ladspa element needs to be enabled
      * 384294 : [modplug] returns position query results in attoseconds
      * 385048 : [qtdemux] Crash on a mp4 file in qtdemux_parse_trak
      * 385788 : [SECURITY] buffer overflows in modplug
      * 387076 : [wavpack] Wrong include
      * 387122 : [qtdemux] regression: crash in parse_trak
      * 387160 : [qtdemux] posts buffering message which can cause hangs
      * 351659 : [wavpackparse] fix resync in push mode, implement it in p...
      * 351663 : [wavpackenc] doesn't set correct caps on source pad
      * 352476 : [wavpack] documentation, unit tests, memleak fix
      * 366523 : [directdraw] fix playback and vs8 fixes
      * 369539 : [wavpackenc] More sensible values for GstEnums, don't sen...
      * 384140 : [neonhttpsrc] id3demux autoplug loop streaming mp3 with I...
      * 387137 : Regression: qtdemux paletted image handling
      * 349916 : [gdp] raw audio saved in gdp, when depayloading  complain...
      * 346723 : gstneonhttpsrc fails for URL
      * 347439 : [qtdemux] seeks poorly in files with slideshows
      * 349204 : [gdp] raw audio saved in gdp does not depayload correctly
      * 351825 : [qtdemux] doesn't set proper caps for RGB video
      * 367696 : [qtdemux] No support for QuickTime Animation (RLE).
      * 372243 : [PATCH] yuv4mpeg (v2) encoder ported to 0.10
      * 380610 : [rganalysis] Incorrect event handling
      * 383471 : cannot link 1 ch raw 24-bit PCM audio
      * 344987 : [PATCH] [dvbsrc] [ts-tools] gstreamer 0.10 port

There was no 0.10.2 release

Changes since 0.10.1:

      * FAAD/AAC decoder improvements
      * Better QuickTime support
      * Plugins ported from 0.8: modplug, v4l2src, Musicbrainz TRM
      * New plugins: Xing muxer, libsoundtouch, AMR-WB, theora-exp
      * Musepack decoder improved
      * libneon based http input now supports iradio mode
      * More uniform plugin descriptions
      * Many bug fixes

Bugs fixed since 0.10.1:

      * 334700 : [qtdemux] Memory leaks
      * 333307 : AmrWB Plugin
      * 330317 : New xingmux element  for writing Xing headers
      * 304795 : [ximagesrc] port to 0.9 [PATCH]
      * 154906 : [qtdemux] A/V Synch problem + crackling sound
      * 167129 : [qtdemux] eats last chunk
      * 173007 : [faad] Failed to decode buffer: Channel coupling not yet ...
      * 302606 : [qtdemux] Movie playback too fast (quicktime mov, H.263 c...
      * 321351 : extracted AAC output is played too slow
      * 324082 : [qtdemux] [faad] playback issues with quicktime videos
      * 327075 : [qtdemux] add support for palettized SMC videos
      * 327355 : gst-plugins-bad CVS compilation breaks on gcc 4.1
      * 331335 : New Element: libsoundtouch based pitch shifter
      * 331909 : support for more fourccs in qtdemux
      * 332066 : [qtdemux] doesn't extract Disc Number field from some files
      * 332155 : Seeking problems in .mov files
      * 332402 : quicktime file will not play
      * 332598 : port modplug to 0.10
      * 332892 : [faad] 'Negative scalefactor found' and 'Maximum number o...
      * 333283 : [xviddec] Fix build with gcc 2.95
      * 333501 : [patch] taglib element
      * 334123 : [taglibmux] fixes for TPOS and TCOP
      * 334417 : autogen.sh bit rot
      * 334748 : [faad] doesn't take sampling rate from demuxer
      * 335585 : xvidenc does not mark key-frame/delta-units
      * 336898 : Port musicbrainz/trm plugin to 0.10
      * 337263 : plugins need better/unified descriptions
      * 338233 : theora-exp api out of sync
      * 339041 : qtdemux : Floating point exception
      * 339074 : Thumbnail generation fails on the following file
      * 337436 : Sound is very jerky on this .mov file
      * 338935 : [qtdemux] floating point exception parsing trac header

Changes since 0.10.0:

      * Parallel installability with 0.8.x series
      * Threadsafe design and API
      * Lots of fixes for the QT/MOV demuxer, including restoring 
        the ability to play web streams, and more codecs supported
      * AAC decoder fixes
      * MMS source fixes
      * DirectFB plugin updated
      * New plugins ported to 0.10: swfdec, XVid, dtsdec, glimagesink
      * New libneon based http source filter
      * APE tag reader moved to gst-plugins-good module

Bugs fixed since 0.10.0:

      * 303167 : Add bzip2 support
      * 322973 : [wavpack] erroneous sampling rates range
      * 326524 : Support for Indeo 3-encoded QuickTime files
      * 327133 : [qtdemux] QuickTime with 8-bit audio
      * 328854 : AAC+ stream not working with FAAD plugin
      * 330089 : [bz2] Wrong mimetype and no typefinding
      * 331302 : bz2 plugin source files lack copyright notices
      * 331543 : crash on iTunes MPEG v4 AAC-LC files
      * 331582 : [qtdemux] protect log statement against invalid memory access

Bugs fixed since 0.9.7:
    
      * 322962 : wavpack plugins don't get built

Changes since 0.9.6:

      * wavpack ported
      * libmms ported

Changes since 0.9.5:
    
      * Fractional framerates

Bugs fixed since 0.9.5:
    
      * 320532 : [faac] set output samplerate and number of channels
      * 321903 : [qtdemux] does not know fourcc DX50, as produced by DivX 5

Changes since 0.9.4:
    
      * Parallel installability with 0.8.x series
      * Threadsafe design and API
      * qtdemux supports custom genre tags
      * tremor integer vorbis decoder ported
      * directfb video sink ported (with examples and documentation!)

Bugs fixed since 0.9.4:
    
      * 321241 : faad compile fix

Bugs fixed since 0.9.3:

      * 317438 : [speed] fix 0.9 port
      * 318659 : [faac] problem with float capabilities
      * 318660 : [faac] missing unrefs

Changes since 0.9.1:

      * ported gsm, tta, sdlvideosink
