Release notes for GStreamer Base Plug-ins 0.10.36 "Better" The GStreamer team is proud to announce a new release in the 0.10.x stable series of the GStreamer Base Plug-ins. The 0.10.x series is a stable series targeted at end users. It is not API or ABI compatible with the stable 0.8.x series. It is, however, parallel installable with the 0.8.x series. This module contains a set of reference plugins, base classes for other plugins, and helper libraries. This module is kept up-to-date together with the core developments. Element writers should look at the elements in this module as a reference for their development. This module contains elements for, among others: device plugins: x(v)imagesink, alsa, v4lsrc, cdparanoia containers: ogg codecs: vorbis, theora text: textoverlay, subparse sources: audiotestsrc, videotestsrc, gnomevfssrc, giosrc network: tcp typefind functions audio processing: audioconvert, adder, audiorate, audioresample, volume visualisation: libvisual video processing: ffmpegcolorspace aggregate elements: uridecodebin, playbin2, decodebin2, decodebin, playbin, encodebin libraries: app, audio, cdda, fft, interfaces, netbuffer, pbutils, riff, rtp, rtsp, sdp, tag, video Other modules containing plug-ins are: gst-plugins-good contains a set of well-supported plug-ins under our preferred license gst-plugins-ugly contains a set of well-supported plug-ins, but might pose problems for distributors gst-plugins-bad contains a set of less supported plug-ins that haven't passed the rigorous quality testing we expect Features of this release * audio: new IEC 61937 payloading library * audio: new GstAudioFormat, GstAudioFormatInfo and GstAudioInfo API * audio: new GstAudioDecoder and GstAudioEncoder base classes * audio: baseaudiosink: allow subclasses to provide payloaders * audio: baseaudiosink: fix latency calculation for live elements * audio: baseaudiosink: make discont-wait configurable * audio: baseaudiosink: split "drift-tolerance" into "alignment-threshold" * codec-utils: Add method to convert H.264 text level in a level_idc * discoverer: add support for subtitles; try harder to extract language and duration * encoding-profile: add function to create a profile from a discoverer info * ringbuffer: add support for AAC, DTS, E-AC3 and MPEG audio buffers * rtcpbuffer: Add feedback message types from RFC 510 * rtcpbuffer: prevent overflow of 16bit header length * rtspconnection: make hostname lookup thread-safe; OSX portability fixes * rtspconnection: only send new data immediately if there are no queued messages * tags: add new GstTagMux base class * tags: add convenience API to handle creative commons licenses * tags: add API to parse ID3v2 tags * tags: various exif and xmp tag writing fixes * tags: xmp: add Iptc4xmpExt schema support * tags: gstvorbistag: map ENCODER Vorbis comment to application-name * video: add video overlay composition API for subtitles * video: fix a RGB ordering mixup in colorspace conversion code * alsasink: fix high sample rates being rejected, and negotiation to "nearest" rate * audioresample: don't emit DISCONT buffers if no discontinuity happened * audioresample: fix quality setting being ignored; use SSE/SSE2 when possible * audiotestsrc: add red (brownian) and blue/violet noise generator * cdparanoiasrc: fix build issue on OSX (caused by broken cdparanoia port and broken system headers) * decodebin2: improve handling of multi-stream chains (e.g. mpeg-ts) * decodebin2: Cache the upstream seekability for demuxer decode chains and use it for the non-preroll multiqueue limits * decodebin2: add support for autoplugging parsers and parser-converters, and negotiate stream-format conversions properly as needed * decodebin2: link elements before testing if they can reach the READY state, so allow hw-accelerated elements can query the video context * decodebin2: use a TIME limit for pre-rolling in live streams and not in non-live streams * decodebin2: fix preroll for HLS streams at low bitrates * decodebin2: add source pads to stream-topology element messages * decodebin, decodebin2: don't plug the same parser multiple times in a row, so we can make parsers accept parsed input as well (and use them to convert to different stream formats) * encodebin: add flags to disable conversion elements * encodebin: autoplug formatters; re-enable parsers * gnomevfssrc: add support for cancelling read operations * oggdemux, oggmux: add support for new Opus audio codec * oggdemux: implement push mode seeking (e.g. for http) * oggdemux: assume input is live stream if byte size cannot be determined * oggdemux: fix hang on small truncated files * oggmux: add skeleton write support * oggmux: sync input streams and select input buffers based on running time * oggmux: headers should always have granpos 0 * oggmux: refactor how EOS is determined * oggmux: support sparse streams as input (e.g. kate subtitle streams) * playbin2: fix decoder-sink compatibility check for raw audio/video formats * playbin2: make sure that the decoders we plug are compatible with the fixed sink * playsink: Add audio and video converter convenience bins * playbin2: improve stream switching * playbin2/playsink: Decide if A/V caps are raw only inside playsink * playbin2/playsink: better support for raw + compressed streams (audio passthrough) * playbin2/playsink: improve handling of "non-raw" formats (for hw-accelerated video decoding) * playsinkconvertbin: Reconfigure if we switch from raw to incompatible raw caps * subparse: subtitle format typefinding improvements * subtitleoverlay: handle non raw video streams (add suport for hardware accelerated videos) * textoverlay: support more video formats * textoverlay: add "outline-color" and "shadow" properties * textoverlay: attach GstVideoOverlayComposition to buffers if input is not raw video * theoraenc: do not automatically override quality when using target bitrate * theoraenc: proxy downstream caps restrictions upstream * typefinding: extract SOF marker in jpeg typefinder (to distinguish lossless JPEG) * typefinding: add typefinder for WAP WBMP bitmaps (mostly to avoid false positives) * typefinding: typefind UTF-16 and UTF-32 with BOMs (to avoid false positives) * typefinding: recognize Asylum modules * videorate: add a "max-rate" property; optionally ensure maximum average output frame rate * videorate: add "force-fps" property to force an output framerate or change it on the fly * videorate: optionally only drop frames to ensure maximum frame rate * videoscale: add modified Lanczos scaling method * volume: Fix handling of volume>=4.0 for 8 and 16 bit integer formats * vorbisenc: relax overly tight jitter tolerances (make it work better with non-perfect input streams) * xvimagesink, ximagesink: fall back to non-XShm mode if allocating the XShm image failed Bugs fixed in this release * 643202 : [encodebin] streamcombiner not completely implemented * 654270 : oggmux unit test fails after latest changes * 658984 : Fix typos in gst-plugins-base * 555437 : [tag] add GstTagMux base class * 556648 : [typefind] detect lossless jpeg * 563251 : oggmux should have option to create Ogg Skeleton stream * 584811 : playbin2's get-text-tags sometimes fails in text stream 0 * 607619 : [typefind] utf-16 text file mistakenly identified as layer 1 mpeg audio * 607742 : API: add gst_event_new_{upstream,downstream}_force_key_unit() etc. * 609918 : [OS X] configure: cdda_interface.h: present but cannot be compiled (if VERSION is defined) * 610443 : baseaudiosink: clock can jump on setcaps * 612443 : oggdemux: only use information from skeleton if we have nothing better * 615131 : playing an ogg over http does not report duration correctly * 615342 : [gstalsamixer] leaks * 621897 : [oggdemux] reports wrong duration, and push mode seeking support * 628337 : [gnomevfssrc] Add support for cancelling read operations * 628764 : [videorate] add new option for max frame rate * 629212 : [oggdemux] Improve support for push mode (seeking, duration) * 630322 : make seek example work with windows * 630442 : xvimagesink, ximagesink: fallback to X*CreateImage() if X*ShmCreateImage() fails * 630497 : [seek] sprinkle GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS to dump pipeline to dot file * 632788 : [playbin2] Doesn't support files with a streams that are supported compressed by a sink and streams that need decoding * 635556 : [oggdemux] bad duration estimate in streaming mode with vertical-overview.ogg * 637812 : vorbisenc: choppy sound due to input timestamp jitter * 638897 : [textrender] allow setting the canvas size using peer caps + bugfixes * 639055 : discoverer: add support for subtitle streams * 640041 : textoverlay: Added parameters to control text outline color and whether shadowing is enabled * 640564 : Remuxing a Theora stream generates a stream that oggz-validate complains about * 640859 : basesink incorrectly categorizes timestamp jitter as drift * 642690 : [baseaudio] GstBaseAudioEncoder and GstBaseAudioDecoder class * 642878 : encoding-profile: add a function to create a profile from a discoverer info * 643578 : [encodebin] - broken remuxing * 644284 : Suspicious max_latency computation in gstbaseaudiosink.c * 647648 : videorate: support for caps modifications in a running pipeline * 647769 : [decodebin2] Fix preroll for streams at low bitrate * 649319 : Add boiler plate code to xvimagesink * 649642 : [volume] Overflows with volume > =4.0 and 8/16 bit integer formats * 649969 : [audiotestsrc] Add more noise variants * 650406 : vorbisdec does not handle headers in caps * 651089 : [xvimagesink/ximagesink] Remove g_assert from Interface query * 651294 : WBMP images are not supported by typefind * 651496 : encodebin seems to fail to pick up container variant * 651615 : [vorbisenc] Too small jitter tolerance * 651788 : [theoraenc] separate encode and push block in theora_enc_chain * 651855 : elements/volume unit test fails * 652342 : encoding-target: set name on audio and video profiles when reading from keyfile * 652642 : typefind: NULL check in degas_type_find * 652838 : gst_discoverer_discover_uri Allow NULL GError* argument * 653461 : [theoraenc] element causes encoder to drop frames? * 654295 : [typefind] audio/x-sap detection doesn't work * 654434 : [basertppayload] RTP timestamps not longer reproducible * 654959 : textoverlay would flicker if it receives not timestampes text on input * 655244 : encodebin has to provide the downstream possible caps to h264parse * 655268 : decodebin2: deadlock after multi-stream chains change * 655279 : [playbin2] Don't reset sinks when not needed * 655347 : theoradec: segfault on 0-byte ogg_packet in _chain_reverse * 655503 : pbutils: Add MPEG-4 SP levels 4a, 5 and 6 * 655574 : ogg: crash determining duration of empty vorbis packet * 656022 : volume: fix sample depth typo * 656034 : gstvorbistag: map ENCODER Vorbis comment to application-name * 656392 : audioresample: add FFT based checks * 656715 : playbin2, playsink: reference count ts_offset to avoid crashes * 656775 : oggmux: various cleanups * 656781 : resample.c has warnings treated as errors that prevent compilation * 657049 : textoverlay: buffer leaks * 657062 : oggdemux: do not skip sparse streams when determining start times * 657151 : ogg: another cleanup round * 657257 : discoverer: retrieve audio track language from tags too * 657261 : resindvd: regression in git: no more button highlights in menus * 657319 : videorate should use basetransform * 657333 : theoraenc: fix caps leak * 657504 : gtk-doc distcheck failure: files left in build directory after distclean: * 657872 : [subparse] Doesn't detect some SRT subtitle files * 658294 : gst-inspect videorate hangs * 658416 : decodebin2: refcounting bugs causing criticals * 658443 : theoraenc: do not automatically override quality when using target bitrate * 658514 : typefinding: recognize .amf (Asylum Music File) files for modplug * 658609 : Handle subtitles with non raw caps video streams in subtitle overlay * 658846 : Playbin2 pipeline stuck while prerolling if decoder is missing * 658901 : textoverlay: crash when the video sink pad has no parent * 659562 : videorate: gst_mini_object_unref: assertion `GST_IS_MINI_OBJECT (mini_object)' failed * 660150 : baseaudio: compiler warnings if debugging system is disabled * 660170 : alsasrc: broken timestamps lead to alsasrc ! audiorate endless loop * 660301 : playbin2: Fix mingw compiler warnings * 660304 : videotestsrc: Fix mingw compiler warning * 660598 : playbin2: Make sure that elements that are plugged are compatible with the fixed sink * 660604 : textoverlay: add YV12 support * 660816 : dvd menus got broken * 661105 : audiotestsrc: add missing break * 661106 : tests: actually test what we said we would * 661122 : videotestsrc does not build on Solaris * 661202 : decodebin2: fire drained signal where appropriate * 661738 : Deadlock between threads in gstaudiosink and gstringbuffer * 661897 : oggdemux: do not retry seeking indefinitely * 661983 : Regression: Reverse playback does not work for vorbis * 662049 : oggdemux/oggmux in push mode cause preroll to wedge * 662108 : Assertion in base audio decoder when decoding vorbis * 662330 : [decodebin2] Should link and add elements to the bin before checking if they can reach READY state * 662475 : oggdemux: Improvements on the push mode seeking algorithm. * 662829 : [textoverlay] - silent property looks not well implemented * 663174 : oggmux: set collectpads2 not to wait on sparse streams * 663312 : decodebin2: Post all source pads in stream-topology messages as " element-srcpad " values * 663390 : theoraenc: fix speed level failure test * 663391 : theoraenc: misc small tweaks * 663465 : baseaudiosink: fix late buffers leaking * 663766 : [0.11] oggmux: split request pad templates into audio/video/subtitle * 663892 : [playbin2] visualisation leads to not-negotiated error * 663893 : playbin2: g_object_set_valist: construct property " use-volume " for object `GstPlaySinkAudioConvert' can't be set after construction * 664818 : Autoplugger sink bin receives strange caps while it gets the correct ones in 0.10.35 and earlier * 665004 : audioresample emits spurious disconts * 665074 : [gstfft] headers are not bracketed * 665080 : API: subtitle overlays for raw and non-raw video buffers * 665120 : playbin2: decoder not selected for audio-sink=autoaudiosink * 666395 : playbin2: set uri to a non-existed file in " about-to-finish " causes a CRITICAL warning * 667210 : videotestsrc/generate_sine_table needs to link against glib * 667306 : discoverer: don't use unportable vararg macro * 667311 : fix various unlikely, but still potential memoryleaks * 667312 : appsrc: implement get_caps * 667313 : rtcpbuffer: prevent overflow of 16bit header length. * 667315 : videotestsrc: keep the calculation fixed-point * 667316 : pango: Changes includes from brackets to quotes for local files * 667917 : alsasink: Rate doesn't match (requested 88200Hz, get 0Hz) * 668097 : [subtitleoverlay] fix state change stall on PAUSED- > READY- > PAUSED (patch) * 669039 : gstrtspconnection: new data may get sent even-though there is a queued message in the GstRTSPWatch * 669164 : oggdemux generates invalid granpos which causes asserts in theoraparse * 669167 : vorbisparse drops certain data buffers on the floor mistakenly thinking they're headers * 669203 : playbin2: totem segfaults in gst_stream_get_other_pad_from_pad() * 646868 : tag: Provide Creative Commons helper functions * 654388 : [tags] API: move id3 parsing from id3demux to tag lib * 311486 : [oggmux] theora bos must come before any audio bos pages API changed in this release - API additions: * gst_audio_decoder_finish_frame() * gst_audio_decoder_get_audio_info() * gst_audio_decoder_get_byte_time() * gst_audio_decoder_get_delay() * gst_audio_decoder_get_drainable() * gst_audio_decoder_get_latency() * gst_audio_decoder_get_max_errors() * gst_audio_decoder_get_min_latency() * gst_audio_decoder_get_needs_format() * gst_audio_decoder_get_parse_state() * gst_audio_decoder_get_plc() * gst_audio_decoder_get_plc_aware() * gst_audio_decoder_get_tolerance() * gst_audio_decoder_get_type() * gst_audio_decoder_set_byte_time() * gst_audio_decoder_set_drainable() * gst_audio_decoder_set_latency() * gst_audio_decoder_set_max_errors() * gst_audio_decoder_set_min_latency() * gst_audio_decoder_set_needs_format() * gst_audio_decoder_set_plc() * gst_audio_decoder_set_plc_aware() * gst_audio_decoder_set_tolerance() * gst_audio_encoder_finish_frame() * gst_audio_encoder_get_audio_info() * gst_audio_encoder_get_drainable() * gst_audio_encoder_get_frame_max() * gst_audio_encoder_get_frame_samples_max() * gst_audio_encoder_get_frame_samples_min() * gst_audio_encoder_get_hard_min() * gst_audio_encoder_get_hard_resync() * gst_audio_encoder_get_latency() * gst_audio_encoder_get_lookahead() * gst_audio_encoder_get_mark_granule() * gst_audio_encoder_get_perfect_timestamp() * gst_audio_encoder_get_tolerance() * gst_audio_encoder_get_type() * gst_audio_encoder_merge_tags() * gst_audio_encoder_proxy_getcaps() * gst_audio_encoder_set_drainable() * gst_audio_encoder_set_frame_max() * gst_audio_encoder_set_frame_samples_max() * gst_audio_encoder_set_frame_samples_min() * gst_audio_encoder_set_hard_min() * gst_audio_encoder_set_hard_resync() * gst_audio_encoder_set_latency() * gst_audio_encoder_set_lookahead() * gst_audio_encoder_set_mark_granule() * gst_audio_encoder_set_perfect_timestamp() * gst_audio_encoder_set_tolerance() * gst_audio_iec61937_frame_size() * gst_audio_iec61937_payload() * gst_audio_info_clear() * gst_audio_info_convert() * gst_audio_info_copy() * gst_audio_info_free() * gst_audio_info_from_caps() * gst_audio_info_init() * gst_audio_info_to_caps() * gst_base_audio_sink_get_alignment_threshold() * gst_base_audio_sink_get_discont_wait() * gst_base_audio_sink_set_alignment_threshold() * gst_base_audio_sink_set_discont_wait() * gst_codec_utils_h264_get_level_idc() * gst_discoverer_audio_info_get_language() * gst_discoverer_info_get_subtitle_streams() * gst_discoverer_subtitle_info_get_language() * gst_discoverer_subtitle_info_get_type() * gst_encoding_profile_from_discoverer() * gst_tag_get_license_description() * gst_tag_get_license_flags() * gst_tag_get_license_jurisdiction() * gst_tag_get_license_nick() * gst_tag_get_license_title() * gst_tag_get_license_version() * gst_tag_get_licenses() * gst_tag_license_flags_get_type() * gst_tag_get_id3v2_tag_size() * gst_tag_list_from_id3v2_tag() * gst_tag_mux_get_type() * gst_video_buffer_get_overlay_composition() * gst_video_buffer_set_overlay_composition() * gst_video_event_is_force_key_unit() * gst_video_event_new_downstream_force_key_unit() * gst_video_event_new_upstream_force_key_unit() * gst_video_event_parse_downstream_force_key_unit() * gst_video_event_parse_upstream_force_key_unit() * gst_video_get_size_from_caps() * gst_video_overlay_composition_add_rectangle() * gst_video_overlay_composition_blend() * gst_video_overlay_composition_copy() * gst_video_overlay_composition_get_rectangle() * gst_video_overlay_composition_get_seqnum() * gst_video_overlay_composition_get_type() * gst_video_overlay_composition_make_writable() * gst_video_overlay_composition_n_rectangles() * gst_video_overlay_composition_new() * gst_video_overlay_rectangle_copy() * gst_video_overlay_rectangle_get_pixels_argb() * gst_video_overlay_rectangle_get_pixels_unscaled_argb() * gst_video_overlay_rectangle_get_render_rectangle() * gst_video_overlay_rectangle_get_seqnum() * gst_video_overlay_rectangle_get_type() * gst_video_overlay_rectangle_new_argb() * gst_video_overlay_rectangle_set_render_rectangle() Download You can find source releases of gst-plugins-base in the download directory: http://gstreamer.freedesktop.org/src/gst-plugins-base/ GStreamer Homepage More details can be found on the project's website: http://gstreamer.freedesktop.org/ Support and Bugs We use GNOME's bugzilla for bug reports and feature requests: http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer Developers GStreamer is stored in Git, hosted at git.freedesktop.org, and can be cloned from there. Interested developers of the core library, plug-ins, and applications should subscribe to the gstreamer-devel list. If there is sufficient interest we will create more lists as necessary. Applications Contributors to this release * Age Bosma * Alessandro Decina * Alex Lancaster * Alexey Fisher * Andoni Morales Alastruey * Anssi Hannula * Benjamin Otte * Brian Cameron * Christian Fredrik Kalager Schaller * Christophe Fergeau * Colin Walters * David Schleef * Edward Hervey * Erich Schubert * Felipe Contreras * Havard Graff * Iago Toral * Idar Tollefsen * James "Doc" Livingston * James Doc Livingston * Jan Schmidt * Jason Kivlighn * Jens Georg * Jonathan Liu * Jonathan Matthew * Josep Torra * Julien Moutte * Kipp Cannon * LoneStar * Luis de Bethencourt * Mark Nauwelaerts * Mart Raudsepp * Mersad Jelacic * Michael Smith * Monty Montgomery * Nicolas Dufresne * Ognyan Tonchev * Olivier Crête * Pascal Buhler * Philip Jägenstedt * Philippe Normand * Piotr Fusik * Raimo Järvi * René Stadler * Reynaldo H. Verdejo Pinochet * Robert Swain * Sebastian Dröge * Sergey Scobich * Sergey Scobich) * Sjoerd Simons * Stefan Kost * Stefan Sauer * Sébastien Moutte * Thiago Santos * Thibault Saunier * Thomas Vander Stichele * Tim-Philipp Müller * Tommi Myöhänen * Vincent Penquerc'h * Wim Taymans * Youness Alaoui