...
 
Commits (31)
=== release 1.8.3 ===
2016-08-19 Sebastian Dröge <slomo@coaxion.net>
* configure.ac:
releasing 1.8.3
2016-08-16 21:11:35 +0300 Sebastian Dröge <sebastian@centricular.com>
* configure.ac:
configure: Explicitly disable CrystalHD decoder
Otherwise it will pick it up when the system has the relevant headers,
and then linking produces an unusable plugin later as we don't ensure
that the plugin also links against the crystalhd library.
Also backport a few other similar cases from master at the same time.
https://bugzilla.gnome.org/show_bug.cgi?id=769809
2016-08-04 10:45:14 +0200 Edward Hervey <edward@centricular.com>
* ext/libav/gstavviddec.c:
avvidec: Ensure skipping strategy gets properly reset
When switching playback modes, like from TRICKMODE or TRICKMODE_KEY_UNITS
back to regular playback, we need to make sure we set the skip mode
back to the default setting.
While this field would be properly reset when we *have* feedback from
downstream (i.e. diff != G_MAXINT64), it would not be reset during
the initial phase (i.e. when the decoder hasn't pushed a buffer yet,
and therefore the sink hasn't sent back QoS information).
This avoids dropping plenty of frames when going back to regular playback
2016-07-22 14:54:21 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavauddec.c:
* ext/libav/gstavaudenc.c:
* ext/libav/gstavviddec.c:
* ext/libav/gstavvidenc.c:
libav: Ignore more quasi-codecs
2016-07-22 14:42:59 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavviddec.c:
* ext/libav/gstavvidenc.c:
libav: Ignore VAAPI decoders and VAAPI/nvenc encoders
These can show up when having a build against a system version of ffmpeg.
2016-07-05 20:15:28 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavvidenc.c:
avvidenc: Create caps from the codec context after it is opened
We won't get codec_data and various other information otherwise.
2016-07-05 20:16:09 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavaudenc.c:
avaudenc: Create caps from the codec context after it is opened
We won't get codec_data and various other information otherwise.
2016-07-05 20:16:45 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavaudenc.c:
avaudenc: Use gst_caps_fixate() instead of gst_caps_truncate()
Just truncating might not be enough.
=== release 1.8.2 ===
2016-06-09 11:52:04 +0300 Sebastian Dröge <sebastian@centricular.com>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
* docs/plugins/inspect/plugin-libav.xml:
* gst-libav.doap:
Release 1.8.2
2016-05-14 12:09:06 +0200 Edward Hervey <bilboed@bilboed.com>
* ext/libav/gstavviddec.c:
avvidec: Don't set bogus latency
We might have cases where the framerate is not known (0/1).
2016-05-12 11:09:13 +0200 Edward Hervey <edward@centricular.com>
* ext/libav/gstavviddec.c:
avvidec: Report the latency once we're fully configured
Several decoders will only be able to report a real latency (has_b_frames)
once they're actually initialized (i.e. when they return their first frame).
Doing it earlier (in set_format) doesn't guarantee that the AVCodecContext
has_b_frames has been properly initialized.
https://bugzilla.gnome.org/show_bug.cgi?id=766362
2016-05-03 19:04:06 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/ext/libav:
libav: Update to ffmpeg n3.0.2
2016-04-29 13:06:07 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavauddec.c:
avauddec: Finish frames if they are header buffers only and don't produce any output
Otherwise we will consider them as one frame of raw audio that is still
pending, and shift all timestamps by the amount of time spent with header
buffers.
https://bugzilla.gnome.org/show_bug.cgi?id=765797
2016-04-29 12:55:19 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavauddec.c:
avauddec: If decoding a frame failed, skip it
Otherwise the next successfully decoded frame will get its timestamp and we
will slowly let a/v sync drift apart.
https://bugzilla.gnome.org/show_bug.cgi?id=765797
2016-04-28 18:43:37 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavaudenc.c:
avaudenc: Set all required fields in the AVFrame
Various functions in libavcodec need them, like the format, sample rate, etc.
and just having them in the context is not enough.
This fixes draining for codecs like MP2 that require a fixed frame size and
require libav to pad the last frame if required.
2016-04-25 18:39:54 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavcfg.c:
avcfg: Use av_strdup() instead of g_strdup() for strings owned by ffmpeg
It has its own allocator that depending on the configuration is incompatible
with GLib's and just causes a segmentation fault. Like on Windows.
https://bugzilla.gnome.org/show_bug.cgi?id=760266
=== release 1.8.1 ===
2016-04-20 18:31:25 +0300 Sebastian Dröge <sebastian@centricular.com>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
* docs/plugins/inspect/plugin-libav.xml:
* gst-libav.doap:
Release 1.8.1
2016-04-20 15:27:45 +0300 Sebastian Dröge <sebastian@centricular.com>
* configure.ac:
* ext/libav/gstav.c:
avdeinterlace: Register all filters and only disable all except for yadif during compilation
Otherwise avdeinterlace won't find any filters, and we only use yadif in
there.
https://bugzilla.gnome.org/show_bug.cgi?id=765319
2016-04-15 12:51:07 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/ext/libav:
libav: Update to n3.0.1
=== release 1.8.0 ===
2016-03-24 Sebastian Dröge <slomo@coaxion.net>
2016-03-24 12:55:15 +0200 Sebastian Dröge <sebastian@centricular.com>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
releasing 1.8.0
* docs/plugins/inspect/plugin-libav.xml:
* gst-libav.doap:
Release 1.8.0
2016-03-20 13:43:00 +0000 Egor Zaharov <nexfwall@yandex.ru>
......@@ -2711,7 +2872,6 @@
* ext/libav/gstav.h:
* ext/libav/gstavdemux.c:
* ext/libav/gstavmux.c:
* ext/libav/gstavpipe.h:
* ext/libav/gstavprotocol.c:
* ext/libav/gstavprotocol.h:
av: Move gst_ffmpegdata functions to gstavprotocol.h too
......@@ -3119,9 +3279,6 @@
* ext/libav/gstavauddec.h:
* ext/libav/gstavaudenc.c:
* ext/libav/gstavaudenc.h:
* ext/libav/gstavdec.c:
* ext/libav/gstavenc.c:
* ext/libav/gstavenc.h:
* ext/libav/gstavviddec.c:
* ext/libav/gstavviddec.h:
* ext/libav/gstavvidenc.h:
......@@ -3400,28 +3557,6 @@
* configure.ac:
* ext/Makefile.am:
* ext/ffmpeg/Makefile.am:
* ext/ffmpeg/gstffmpeg.c:
* ext/ffmpeg/gstffmpeg.h:
* ext/ffmpeg/gstffmpegaudioresample.c:
* ext/ffmpeg/gstffmpegcfg.c:
* ext/ffmpeg/gstffmpegcfg.h:
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegcodecmap.h:
* ext/ffmpeg/gstffmpegdec.c:
* ext/ffmpeg/gstffmpegdeinterlace.c:
* ext/ffmpeg/gstffmpegdemux.c:
* ext/ffmpeg/gstffmpegenc.c:
* ext/ffmpeg/gstffmpegenc.h:
* ext/ffmpeg/gstffmpegmux.c:
* ext/ffmpeg/gstffmpegpipe.h:
* ext/ffmpeg/gstffmpegprotocol.c:
* ext/ffmpeg/gstffmpegscale.c:
* ext/ffmpeg/gstffmpegutils.c:
* ext/ffmpeg/gstffmpegutils.h:
* ext/ffmpeg/gstffmpegviddec.c:
* ext/ffmpeg/gstffmpegvidenc.c:
* ext/ffmpeg/gstffmpegvidenc.h:
* ext/libav/Makefile.am:
* ext/libav/gstav.c:
* ext/libav/gstav.h:
......@@ -4232,14 +4367,6 @@
* configure.ac:
* docs/plugins/Makefile.am:
* docs/plugins/gst-ffmpeg-plugins-docs.sgml:
* docs/plugins/gst-ffmpeg-plugins-sections.txt:
* docs/plugins/gst-ffmpeg-plugins.args:
* docs/plugins/gst-ffmpeg-plugins.hierarchy:
* docs/plugins/gst-ffmpeg-plugins.interfaces:
* docs/plugins/gst-ffmpeg-plugins.prerequisites:
* docs/plugins/gst-ffmpeg-plugins.signals:
* docs/plugins/gst-ffmpeg-plugins.types:
* docs/plugins/gst-libav-plugins-docs.sgml:
* docs/plugins/gst-libav-plugins-sections.txt:
* docs/plugins/gst-libav-plugins.args:
......@@ -4268,18 +4395,13 @@
* ext/libpostproc/gstpostproc.c:
* ext/libswscale/Makefile.am:
* ext/libswscale/gstffmpegscale.c:
* gst-ffmpeg.doap:
* gst-ffmpeg.spec.in:
* gst-libav.doap:
* gst-libav.spec.in:
* tests/check/Makefile.am:
* tests/check/elements/avdec_adpcm.c:
* tests/check/elements/avdemux_ape.c:
* tests/check/elements/ffdec_adpcm.c:
* tests/check/elements/ffdemux_ape.c:
* tests/check/generic/libavcodec-locking.c:
* tests/check/generic/plugin-test.c:
* tests/check/gst-ffmpeg.supp:
* tests/check/gst-libav.supp:
Rename everything from gst-ffmpeg to gst-libav
Also change elements factory names to avenc_*, avdec_*,
......
# GStreamer 1.8 Release Notes
### 1.8.3
The third 1.8 bug-fix release (1.8.3) was released on 19 August 2016.
This release only contains bugfixes and it should be safe to update from 1.8.x.
#### Major bugfixes in 1.8.3
- Fix Android build scripts on OS X and Windows
- Fix stepping in PAUSED state in certain circumstances
- Fix jackaudiosink hang when exiting
- Fix udpsrc receiving multicast packets not only from the selected
multicast group
- Fix unnecessary decoding of unselected streams in GES
- Fix (multi)udpsink randomly not sending to clients
- Fix ALL\_BOTH probes not considering EVENT\_FLUSH
- Fix average input rate calculations in queue2
- Fix various locking issues causing deadlock in adaptivedemux
- Fix gst-libav encoders to correctly produce codec\_data in caps
- Add Wayland, Windows and Rasberry Pi support to the QML GL video sink
- Add support for building with OpenH264 1.6
- Add support for controlling deinterlacing in GES video sources
- ... and many, many more!
For a full list of bugfixes see [Bugzilla][buglist-1.8.3]. Note that this is
not the full list of changes. For the full list of changes please refer to the
GIT logs or ChangeLogs of the particular modules.
[buglist-1.8.3]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=145400&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.3
**GStreamer 1.8.0 was released on 24 March 2016.**
The GStreamer team is proud to announce a new major feature release in the
stable 1.x API series of your favourite cross-platform multimedia framework!
As always, this release is again packed with new features, bug fixes and other
improvements.
See [https://gstreamer.freedesktop.org/releases/1.8/][latest] for the latest
version of this document.
*Last updated: Thursday 24 March 2016, 10:00 UTC [(log)][gitlog]*
[latest]: https://gstreamer.freedesktop.org/releases/1.8/
[gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.8/release-notes-1.8.md
## Highlights
- **Hardware-accelerated zero-copy video decoding on Android**
- **New video capture source for Android using the android.hardware.Camera API**
- **Windows Media reverse playback** support (ASF/WMV/WMA)
- **New tracing system** provides support for more sophisticated debugging tools
- **New high-level GstPlayer playback convenience API**
- **Initial support for the new [Vulkan][vulkan] API**, see
[Matthew Waters' blog post][vulkan-in-gstreamer] for more details
- **Improved Opus audio codec support**: Support for more than two channels; MPEG-TS demuxer/muxer can now handle Opus;
[sample-accurate][opus-sample-accurate] encoding/decoding/transmuxing with
Ogg, Matroska, ISOBMFF (Quicktime/MP4), and MPEG-TS as container;
[new codec utility functions for Opus header and caps handling][opus-codec-utils]
in pbutils library. The Opus encoder/decoder elements were also moved to
gst-plugins-base (from -bad), and the opus RTP depayloader/payloader to -good.
[opus-sample-accurate]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiometa.html#GstAudioClippingMeta
[opus-codec-utils]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstpbutilscodecutils.html
- **GStreamer VAAPI module now released and maintained as part of the GStreamer project**
[vulkan]: https://www.khronos.org/vulkan
[vulkan-in-gstreamer]: http://ystreet00.blogspot.co.uk/2016/02/vulkan-in-gstreamer.html
## Major new features and changes
### Noteworthy new API, features and other changes
- New GstVideoAffineTransformationMeta meta for adding a simple 4x4 affine
transformation matrix to video buffers
- [g\_autoptr()](https://developer.gnome.org/glib/stable/glib-Miscellaneous-Macros.html#g-autoptr)
support for all types is exposed in GStreamer headers now, in combination
with a sufficiently-new GLib version (i.e. 2.44 or later). This is primarily
for the benefit of application developers who would like to make use of
this, the GStreamer codebase itself will not be using g_autoptr() for
the time being due to portability issues.
- GstContexts are now automatically propagated to elements added to a bin
or pipeline, and elements now maintain a list of contexts set on them.
The list of contexts set on an element can now be queried using the new functions
[gst\_element\_get\_context()](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-get-context)
and [gst\_element\_get\_contexts()](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-get-contexts). GstContexts are used to share context-specific configuration objects
between elements and can also be used by applications to set context-specific
configuration objects on elements, e.g. for OpenGL or Hardware-accelerated
video decoding.
- New [GST\_BUFFER\_DTS\_OR\_PTS()](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#GST-BUFFER-DTS-OR-PTS:CAPS)
convenience macro that returns the decode timestamp if one is set and
otherwise returns the presentation timestamp
- New GstPadEventFullFunc that returns a GstFlowReturn instead of a gboolean.
This new API is mostly for internal use and was added to fix a race condition
where occasionally internal flow error messages were posted on the bus when
sticky events were propagated at just the wrong moment whilst the pipeline
was shutting down. This happened primarily when the pipeline was shut down
immediately after starting it up. GStreamer would not know that the reason
the events could not be propagated was because the pipeline was shutting down
and not some other problem, and now the flow error allows GStreamer to know
the reason for the failure (and that there's no reason to post an error
message). This is particularly useful for queue-like elements which may need
to asynchronously propagate a previous flow return from downstream.
- Pipeline dumps in form of "dot files" now also show pad properties that
differ from their default value, the same as it does for elements. This is
useful for elements with pad subclasses that provide additional properties,
e.g. videomixer or compositor.
- Pad probes are now guaranteed to be called in the order they were added
(before they were called in reverse order, but no particular order was
documented or guaranteed)
- Plugins can now have dependencies on device nodes (not just regular files)
and also have a prefix filter. This is useful for plugins that expose
features (elements) based on available devices, such as the video4linux
plugin does with video decoders on certain embedded systems.
- gst\_segment\_to\_position() has been deprecated and been replaced by the
better-named gst\_segment\_position\_from\_running\_time(). At the same time
gst\_segment\_position\_from\_stream\_time() was added, as well as \_full()
variants of both to deal with negative stream time.
- GstController: the interpolation control source gained a new monotonic cubic
interpolation mode that, unlike the existing cubic mode, will never overshoot
the min/max y values set.
- GstNetAddressMeta: can now be read from buffers in language bindings as well,
via the new gst\_buffer\_get\_net\_address\_meta() function
- ID3 tag PRIV frames are now extraced into a new GST\_TAG\_PRIVATE\_DATA tag
- gst-launch-1.0 and gst\_parse\_launch() now warn in the most common case if
a dynamic pad link could not be resolved, instead of just silently
waiting to see if a suitable pad appears later, which is often perceived
by users as hanging -- they are now notified when this happens and can check
their pipeline.
- GstRTSPConnection now also parses custom RTSP message headers and retains
them for the application instead of just ignoring them
- rtspsrc handling of authentication over tunneled connections (e.g. RTSP over HTTP)
was fixed
- gst\_video\_convert\_sample() now crops if there is a crop meta on the input buffer
- The debugging system printf functions are now exposed for general use, which
supports special printf format specifiers such as GST\_PTR\_FORMAT and
GST\_SEGMENT\_FORMAT to print GStreamer-related objects. This is handy for
systems that want to prepare some debug log information to be output at a
later point in time. The GStreamer-OpenGL subsystem is making use of these
new functions, which are [gst\_info\_vasprintf()][gst_info_vasprintf],
[gst\_info\_strdup\_vprintf()][gst_info_strdup_vprintf] and
[gst\_info\_strdup\_printf()][gst_info_strdup_printf].
- videoparse: "strides", "offsets" and "framesize" properties have been added to
allow parsing raw data with strides and padding that do not match GStreamer
defaults.
- GstPreset reads presets from the directories given in GST\_PRESET\_PATH now.
Presets are read from there after presets in the system path, but before
application and user paths.
[gst_info_vasprintf]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-info-vasprintf
[gst_info_strdup_vprintf]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-info-strdup-vprintf
[gst_info_strdup_printf]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-info-strdup-printf
### New Elements
- [netsim](): a new (resurrected) element to simulate network jitter and
packet dropping / duplication.
- New VP9 RTP payloader/depayloader elements: rtpvp9pay/rtpvp9depay
- New [videoframe_audiolevel]() element, a video frame synchronized audio level element
- New spandsp-based tone generator source
- New NVIDIA NVENC-based H.264 encoder for GPU-accelerated video encoding on
suitable NVIDIA hardware
- [rtspclientsink](), a new RTSP RECORD sink element, was added to gst-rtsp-server
- [alsamidisrc](), a new ALSA MIDI sequencer source element
### Noteworthy element features and additions
- *identity*: new ["drop-buffer-flags"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-identity.html#GstIdentity--drop-buffer-flags)
property to drop buffers based on buffer flags. This can be used to drop all
non-keyframe buffers, for example.
- *multiqueue*: various fixes and improvements, in particular special handling
for sparse streams such as substitle streams, to make sure we don't overread
them any more. For sparse streams it can be normal that there's no buffer for
a long period of time, so having no buffer queued is perfectly normal. Before
we would often unnecessarily try to fill the subtitle stream queue, which
could lead to much more data being queued in multiqueue than necessary.
- *multiqueue*/*queue*: When dealing with time limits, these elements now use the
new ["GST_BUFFER_DTS_OR_PTS"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#GST-BUFFER-DTS-OR-PTS:CAPS)
and ["gst_segment_to_running_time_full()"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstSegment.html#gst-segment-to-running-time-full)
API, resulting in more accurate levels, especially when dealing with non-raw
streams (where reordering happens, and we want to use the increasing DTS as
opposed to the non-continuously increasing PTS) and out-of-segment input/output.
Previously all encoded buffers before the segment start, which can happen when
doing ACCURATE seeks, were not taken into account in the queue level calculation.
- *multiqueue*: New ["use-interleave"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-multiqueue.html#GstMultiQueue--use-interleave)
property which allows the size of the queues to be optimized based on the input
streams interleave. This should only be used with input streams which are properly
timestamped. It will be used in the future decodebin3 element.
- *queue2*: new ["avg-in-rate"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-queue2.html#GstQueue2--avg-in-rate)
property that returns the average input rate in bytes per second
- audiotestsrc now supports all audio formats and is no longer artificially
limited with regard to the number of channels or sample rate
- gst-libav (ffmpeg codec wrapper): map and enable JPEG2000 decoder
- multisocketsink can, on request, send a custom GstNetworkMessage event
upstream whenever data is received from a client on a socket. Similarly,
socketsrc will, on request, pick up GstNetworkMessage events from downstream
and send any data contained within them via the socket. This allows for
simple bidirectional communication.
- matroska muxer and demuxer now support the ProRes video format
- Improved VP8/VP9 decoding performance on multi-core systems by enabling
multi-threaded decoding in the libvpx-based decoders on such systems
- appsink has a new ["wait-on-eos"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-appsink.html#GstAppSink--wait-on-eos)
property, so in cases where it is uncertain if an appsink will have a consumer for
its buffers when it receives an EOS this can be set to FALSE to ensure that the
appsink will not hang.
- rtph264pay and rtph265pay have a new "config-interval" mode -1 that will
re-send the setup data (SPS/PPS/VPS) before every keyframe to ensure
optimal coverage and the shortest possibly start-up time for a new client
- mpegtsmux can now mux H.265/HEVC video as well
- The MXF muxer was ported to 1.x and produces more standard conformant files now
that can be handled by more other software; The MXF demuxer got improved
support for seek tables (IndexTableSegments).
### Plugin moves
- The rtph265pay/depay RTP payloader/depayloader elements for H.265/HEVC video
from the rtph265 plugin in -bad have been moved into the existing rtp plugin
in gst-plugins-good.
- The mpg123 plugin containing a libmpg123 based audio decoder element has
been moved from -bad to -ugly.
- The Opus encoder/decoder elements have been moved to gst-plugins-base and
the RTP payloader to gst-plugins-good, both coming from gst-plugins-bad.
### New tracing tools for developers
A new tracing subsystem API has been added to GStreamer, which provides
external tracers with the possibility to strategically hook into GStreamer
internals and collect data that can be evaluated later. These tracers are a
new type of plugin features, and GStreamer core ships with a few example
tracers (latency, stats, rusage, log) to start with. Tracers can be loaded
and configured at start-up via an environment variable (GST\_TRACER\_PLUGINS).
Background: While GStreamer provides plenty of data on what's going on in a
pipeline via its debug log, that data is not necessarily structured enough to
be generally useful, and the overhead to enable logging output for all data
required might be too high in many cases. The new tracing system allows tracers
to just obtain the data needed at the right spot with as little overhead as
possible, which will be particularly useful on embedded systems.
Of course it has always been possible to do performance benchmarks and debug
memory leaks, memory consumption and invalid memory access using standard
operating system tools, but there are some things that are difficult to track
with the standard tools, and the new tracing system helps with that. Examples
are things such as latency handling, buffer flow, ownership transfer of
events and buffers from element to element, caps negotiation, etc.
For some background on the new tracing system, watch Stefan Sauer's
GStreamer Conference talk ["A new tracing subsystem for GStreamer"][tracer-0]
and for a more specific example how it can be useful have a look at
Thiago Santos's lightning talk ["Analyzing caps negotiation using GstTracer"][tracer-1]
and his ["GstTracer experiments"][tracer-2] blog post. There was also a Google
Summer of Code project in 2015 that used tracing system for a graphical
GStreamer debugging tool ["gst-debugger"][tracer-3].
This is all still very much work in progress, but we hope this will provide the
foundation for a whole suite of new debugging tools for GStreamer pipelines.
[tracer-0]: https://gstconf.ubicast.tv/videos/a-new-tracing-subsystem-for-gstreamer/
[tracer-1]: https://gstconf.ubicast.tv/videos/analyzing-caps-negotiation-using-gsttracer/
[tracer-2]: http://blog.thiagoss.com/2015/07/23/gsttracer-experiments/
[tracer-3]: https://git.gnome.org/browse/gst-debugger
### GstPlayer: a new high-level API for cross-platform multimedia playback
GStreamer has had reasonably high-level API for multimedia playback
in the form of the playbin element for a long time. This allowed application
developers to just configure a URI to play, and playbin would take care of
everything else. This works well, but there is still way too much to do on
the application-side to implement a fully-featured playback application, and
too much general GStreamer pipeline API exposed, making it less accessible
to application developers.
Enter GstPlayer. GstPlayer's aim is to provide an even higher-level abstraction
of a fully-featured playback API but specialised for its specific use case. It
also provides easy integration with and examples for Gtk+, Qt, Android, OS/X,
iOS and Windows. Watch Sebastian's [GstPlayer talk at the GStreamer Conference][gstplayer-talk]
for more information, or check out the [GstPlayer API reference][gstplayer-api]
and [GstPlayer examples][gstplayer-examples].
[gstplayer-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/player.html
[gstplayer-talk]: https://gstconf.ubicast.tv/videos/gstplayer-a-simple-cross-platform-api-for-all-your-media-playback-needs-part-1/
[gstplayer-examples]: https://github.com/sdroege/gst-player/
### Adaptive streaming: DASH, HLS and MSS improvements
- dashdemux now supports loading external xml nodes pointed from its MPD.
- Content protection nodes parsing support for PlayReady WRM in mssdemux.
- Reverse playback was improved to respect seek start and stop positions.
- Adaptive demuxers (hlsdemux, dashdemux, mssdemux) now support the SNAP_AFTER
and SNAP_BEFORE seek flags which will jump to the nearest fragment boundary
when executing a seek, which means playback resumes more quickly after a seek.
### Audio library improvements
- audio conversion, quantization and channel up/downmixing functionality
has been moved from the audioconvert element into the audio library and
is now available as public API in form of [GstAudioConverter][audio-0],
[GstAudioQuantize][audio-1] and [GstAudioChannelMixer][audio-2].
Audio resampling will follow in future releases.
- [gst\_audio\_channel\_get\_fallback\_mask()][audio-3] can be used
to retrieve a default channel mask for a given number of channels as last
resort if the layout is unknown
- A new [GstAudioClippingMeta][audio-4] meta was added for specifying clipping
on encoded audio buffers
- A new GstAudioVisualizer base class for audio visualisation elements;
most of the existing visualisers have been ported over to the new base class.
This new base class lives in the pbutils library rather than the audio library,
since we'd have had to make libgstaudio depend on libgstvideo otherwise,
which was deemed undesirable.
[audio-0]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-GstAudioConverter.html
[audio-1]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-GstAudioQuantize.html
[audio-2]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiochannels.html#gst-audio-channel-mix-new
[audio-3]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiochannels.html#gst-audio-channel-get-fallback-mask
[audio-4]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiometa.html#GstAudioClippingMeta
### GStreamer OpenGL support improvements
#### Better OpenGL Shader support
[GstGLShader][shader] has been revamped to allow more OpenGL shader types
by utilizing a new GstGLSLStage object. Each stage holds an OpenGL pipeline
stage such as a vertex, fragment or a geometry shader that are all compiled
separately into a program that is executed.
The glshader element has also received a revamp as a result of the changes in
the library. It does not take file locations for the vertex and fragment
shaders anymore. Instead it takes the strings directly leaving the file
management to the application.
A new [example][liveshader-example] was added utilizing the new shader
infrastructure showcasing live shader edits.
[shader]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstglshader.html
[liveshader-example]: https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examples/gtk/glliveshader.c
#### OpenGL GLMemory rework
[GstGLMemory] was extensively reworked to support the addition of multiple
texture targets required for zero-copy integration with the Android
MediaCodec elements. This work was also used to provide IOSurface based
GLMemory on OS X for zero-copy with OS X's VideoToolbox decoder (vtdec) and
AV Foundation video source (avfvideosrc). There are also patches in bugzilla
for GstGLMemoryEGL specifically aimed at improving the decoding performance on
the Raspberry Pi.
[GstGLMemory]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstglmemory.html
A texture-target field was added to video/x-raw(memory:GLMemory) caps to signal
the texture target contained in the GLMemory. Its values can be 2D, rectangle
or external-oes. glcolorconvert can convert between the different formats as
required and different elements will accept or produce different targets. e.g.
glimagesink can take and render external-oes textures directly as required for
effecient zero-copy on android.
A generic GL allocation framework was also implemented to support the generic
allocation of OpenGL buffers and textures which is used extensively by
GstGLBufferPool.
#### OpenGL DMABuf import uploader
There is now a DMABuf uploader available for automatic selection that will
attempt to import the upstream provided DMABuf. The uploader will import into
2D textures with the necesarry format. YUV to RGB conversion is still provided
by glcolorconvert to avoid the laxer restrictions with external-oes textures.
#### OpenGL queries
Queries of various aspects of the OpenGL runtime such as timers, number of
samples or the current timestamp are not possible. The GstGLQuery object uses a
delayed debug system to delay the debug output to later to avoid expensive calls
to the glGet\* family of functions directly after finishing a query. It is
currently used to output the time taken to perform various operations of texture
uploads and downloads in GstGLMemory.
#### New OpenGL elements
glcolorbalance has been created mirroring the videobalance elements.
glcolorbalance provides the exact same interface as videobalance so can be used
as a GPU accelerated replacement. glcolorbalance has been added to glsinkbin so
usage with playsink/playbin will use it automatically instead of videobalance
where possible.
glvideoflip, which is the OpenGL equiavalant of videoflip, implements the exact
same interface and functionality as videoflip.
#### EGL implementation now selects OpenGL 3.x
The EGL implementation can now select OpenGL 3.x contexts.
#### OpenGL API removal
The GstGLDownload library object was removed as it was not used by anything.
Everything is performed by GstGLMemory or in the gldownloadelement.
The GstGLUploadMeta library object was removed as it was not being used and we
don't want to promote the use of GstVideoGLTextureUploadMeta.
#### OpenGL: Other miscellaneous changes
- The EGL implementation can now select OpenGL 3.x contexts. This brings
OpenGL 3.x to e.g. wayland and other EGL systems.
- glstereomix/glstereosplit are now built and are usable on OpenGL ES systems
- The UYVY/YUY2 to RGBA and RGBA to UYVY/YUY2 shaders were fixed removing the
sawtooth pattern and luma bleeding.
- We now utilize the GL\_APPLE\_sync extension on iOS devices which improves
performance of OpenGL applications, especially with multiple OpenGL
contexts.
- glcolorconvert now uses a bufferpool to avoid costly
glGenTextures/glDeleteTextures for every frame.
- glvideomixer now has full glBlendFunc and glBlendEquation support per input.
- gltransformation now support navigation events so your weird transformations
also work with DVD menus.
- qmlglsink can now run on iOS, OS X and Android in addition to the already
supported Linux platform.
- glimagesink now posts unhandled keyboard and mouse events (on backends that
support user input, current only X11) on the bus for the application.
### Initial GStreamer Vulkan support
Some new elements, vulkansink and vulkanupload have been implemented utilizing
the new Vulkan API. The implementation is currently limited to X11 platforms
(via xcb) and does not perform any scaling of the stream's contents to the size
of the available output.
A lot of infrasctructure work has been undertaken to support using Vulkan in
GStreamer in the future. A number of GstMemory subclasses have been created for
integrating Vulkan's GPU memory handling along with VkBuffer's and VkImage's
that can be passed between elements. Some GStreamer refcounted wrappers for
global objects such as VkInstance, VkDevice, VkQueue, etc have also been
implemented along with GstContext integration for sharing these objects with the
application.
### GStreamer VAAPI support for hardware-accelerated video decoding and encoding on Intel (and other) platforms
#### GStreamer VAAPI is now part of upstream GStreamer
The GStreamer-VAAPI module which provides support for hardware-accelerated
video decoding, encoding and post-processing on Intel graphics hardware
on Linux has moved from its previous home at the [Intel Open Source Technology Center][iostc]
to the upstream GStreamer repositories, where it will in future be maintained
as part of the upstream GStreamer project and released in lockstep with the
other GStreamer modules. The current maintainers will continue to spearhead
the development at the new location:
[http://cgit.freedesktop.org/gstreamer/gstreamer-vaapi/][gst-vaapi-git]
[gst-vaapi-git]: http://cgit.freedesktop.org/gstreamer/gstreamer-vaapi/
GStreamer-VAAPI relies heavily on certain GStreamer infrastructure API that
is still in flux such as the OpenGL integration API or the codec parser
libraries, and one of the goals of the move was to be able to leverage
new developments early and provide tighter integration with the latest
developments of those APIs and other graphics-related APIs provided by
GStreamer, which should hopefully improve performance even further and in
some cases might also provide better stability.
Thanks to everyone involved in making this move happen!
#### GStreamer VAAPI: Bug tracking
Bugs had already been tracked on [GNOME bugzilla](bgo) but will be moved
from the gstreamer-vaapi product into a new gstreamer-vaapi component of
the GStreamer product in bugzilla. Please file new bugs against the new
component in the GStreamer product from now on.
#### GStreamer VAAPI: Pending patches
The code base has been re-indented to the GStreamer code style, which
affected some files more than others. This means that some of the patches
in bugzilla might not apply any longer, so if you have any unmerged patches
sitting in bugzilla please consider checking if they still apply cleany and
refresh them if not. Sorry for any inconvenience this may cause.
#### GStreamer VAAPI: New versioning scheme and supported GStreamer versions
The version numbering has been changed to match the GStreamer version
numbering to avoid confusion: there is a new gstreamer-vaapi 1.6.0 release
and a 1.6 branch that is roughly equivalent to the previous 0.7.0 version.
Future releases 1.7.x and 1.8.x will be made alongside GStreamer releases.
While it was possible and supported by previous releases to build against
a whole range of different GStreamer versions (such as 1.2, 1.4, 1.6 or 1.7/1.8),
in the future there will only be one target branch, so that git master will
track GStreamer git master, 1.8.x will target GStreamer 1.8, and
1.6.x will target the 1.6 series.
[iostc]: http://01.org
[bgo]: http://bugzilla.gnome.og
#### GStreamer VAAPI: Miscellaneous changes
All GStreamer-VAAPI functionality is now provided solely by its GStreamer
elements. There is no more public library exposing GstVaapi API, this API
was only ever meant for private use by the elements. Parts of it may be
resurrected again in future if needed, but for now it has all been made
private.
GStreamer-VAAPI now unconditionally uses the codecparser library in
gst-plugins-bad instead of shipping its own internal copy. Similarly,
it no longer ships its own codec parsers but relies on the upstream
codec parser elements.
The GStreamer-VAAPI encoder elements have been renamed from vaapiencode_foo
to vaapifooenc, so encoders are now called vaapih264enc, vaapih265enc,
vaapimpeg2enc, vaapijpegenc, and vaapivp8enc. With this change we now follow
the standard names in GStreamer, and the plugin documentation is generated
correctly.
In the case of the decoders, only the jpeg decoder has been split from the
general decoding element vaapidecode: vaapijpegdec. This is the first step to
split per codec each decoding element. The vaapijpegdec has also been given
marginal rank for the time being.
#### GStreamer VAAPI: New features in 1.8: 10-bit H.265/HEVC decoding support
Support for decoding 10-bit H.265/HEVC has been added. For the time being
this only works in combination with vaapisink though, until support for the
P010 video format used internally is added to GStreamer and to the
vaGetImage()/vaPutimage() API in the vaapi-intel-driver.
Several fixes for memory leaks, build errors, and in the internal
video parsing.
Finally, vaapisink now posts the unhandled keyboard and mouse events to the
application.
### GStreamer Video 4 Linux Support
Colorimetry support has been enhanced even more. It will now properly select
default values when not specified by the driver. The range of color formats
supported by GStreamer has been greatly improved. Notably, support for
multi-planar I420 has been added along with all the new and non-ambiguous RGB
formats that got added in recent kernels.
The device provider now exposes a variety of properties as found in the udev
database.
The video decoder is now able to negotiate the downstream format.
Elements that are dynamically created from /dev/video\* now track changes on
these devices to ensure the registry stay up to date.
All this and various bug fixes that improve both stability and correctness.
### GStreamer Editing Services
Added APIs to handle asset proxying support. Proxy creation is not the
responsibility of GES itself, but GES provides all the needed features
for it to be cleanly handled at a higher level.
Added support for changing playback rate. This means that now, whenever a
user adds a 'pitch' element (as it is the only known element to change playback
rate through properties), GES will handle everything internally. This change
introduced a new media-duration-factor property in NleObject which will
lead to tweaking of seek events so they have the proper playback range to be
requested upstream.
Construction of NLE objects has been reworked making copy/pasting fully
functional and allowing users to set properties on effects right after
creating them.
Rework of the title source to add more flexibility in text positioning,
and letting the user get feedback about rendered text positioning.
Report nlecomposition structural issues (coming from user programing mistakes)
into ERROR messages on the bus.
Add GI/pythyon testsuite in GES itself, making sure the API is working as expected
in python, and allowing writing tests faster.
### GstValidate
Added support to run tests inside gdb.
Added a 'smart' reporting mode where we give as much information as possible about
critical errors.
Uses GstTracer now instead of a LD\_PRELOAD library.
## Miscellaneous
- encodebin now works with "encoder-muxers" such as wavenc
- gst-play-1.0 acquired a new keyboard shortcut: '0' seeks back to the start
- gst-play-1.0 supports two new command line switches: -v for verbose output
and --flags to configure the playbin flags to use.
## Build and Dependencies
- The GLib dependency requirement was bumped to 2.40
- The -Bsymbolic configure check now works with clang as well
- ffmpeg is now required as libav provider, incompatible changes were
introduced that make it no longer viable to support both FFmpeg and Libav
as libav providers. Most major distros have switched to FFmpeg or are in
the process of switching to it anyway, so we don't expect this to be a
problem, and there is still an internal copy of ffmpeg that can be used
as fallback if needed.
- The internal ffmpeg snapshot is now FFMpeg 3.0, but it should be possible
to build against 2.8 as well for the time being.
## Platform-specific improvements
### Android
- Zero-copy video decoding on Android using the hardware-accelerated decoders
has been implemented, and is fully integrated with the GStreamer OpenGL stack
- ahcsrc, a new camera source element, has been merged and can be used to
capture video on android devices. It uses the android.hardware.Camera Java
API to capture from the system's cameras.
- The OpenGL-based QML video sink can now also be used on Android
- New tinyalsasink element, which is mainly useful for Android but can also
be used on other platforms.
### OS/X and iOS
- The system clock now uses mach\_absolute\_time() on OSX/iOS, which is
the preferred high-resolution monotonic clock to be used on Apple platforms
- The OpenGL-based QML video sink can now also be used on OS X and iOS (with
some Qt build system massaging)
- New IOSurface based memory implementation in avfvideosrc and vtdec on OS X
for zerocopy with OpenGL. The previously used OpenGL extension
GL_APPLE_ycbcr_422 is not compatible with GL 3.x core contexts.
- New GstAppleCoreVideoMemory wrapping CVPixelBuffer's
- avfvideosrc now supports renegotiation.
### Windows
- Various bugs with UDP and multicast were fixed on Windows, mostly related to
gst-rtsp-server.
- A few bugs in directsoundsrc and directsoundsink were fixed that could cause
the element to lock up. Also the "mute" property on the sink was fixed, and
a new "device" property for device selection was added to the source.
## Known Issues
- Building GStreamer applications with the Android NDK r11 is currently not
supported due to incompatible changes in the NDK. This is expected to be
fixed for 1.8.1.
[Bugzilla #763999](https://bugzilla.gnome.org/show_bug.cgi?id=763999)
- vp8enc crashes on 32 bit Windows, but was working fine in 1.6. 64 bit
Windows is unaffected.
[Bugzilla #763663](https://bugzilla.gnome.org/show_bug.cgi?id=763663)
## Contributors
Adam Miartus, Alban Bedel, Aleix Conchillo Flaqué, Aleksander Wabik,
Alessandro Decina, Alex Ashley, Alex Dizengof, Alex Henrie, Alistair Buxton,
Andreas Cadhalpun, Andreas Frisch, André Draszik, Anthony G. Basile,
Antoine Jacoutot, Anton Bondarenko, Antonio Ospite, Arjen Veenhuizen,
Arnaud Vrac, Arun Raghavan, Athanasios Oikonomou, Aurélien Zanelli, Ben Iofel,
Bob Holcomb, Branko Subasic, Carlos Rafael Giani, Chris Bass, Csaba Toth,
Daniel Kamil Kozar, Danilo Cesar Lemes de Paula, Dave Craig, David Fernandez,
David Schleef, David Svensson Fors, David Waring, David Wu, Duncan Palmer,
Edward Hervey, Egor Zaharov, Etienne Peron, Eunhae Choi, Evan Callaway,
Evan Nemerson, Fabian Orccon, Florent Thiéry, Florin Apostol, Frédéric Wang,
George Kiagiadakis, George Yunaev, Göran Jönsson, Graham Leggett,
Guillaume Desmottes, Guillaume Marquebielle, Haihua Hu, Havard Graff,
Heinrich Fink, Holger Kaelberer, HoonHee Lee, Hugues Fruchet, Hyunil Park,
Hyunjun Ko, Ilya Konstantinov, James Stevenson, Jan Alexander Steffens (heftig),
Jan Schmidt, Jason Litzinger, Jens Georg, Jimmy Ohn, Joan Pau Beltran,
Joe Gorse, John Chang, John Slade, Jose Antonio Santos Cadenas, Josep Torra,
Julian Bouzas, Julien Isorce, Julien Moutte, Justin Kim, Kazunori Kobayashi,
Koop Mast, Lim Siew Hoon, Linus Svensson, Lubosz Sarnecki, Luis de Bethencourt,
Lukasz Forynski, Manasa Athreya, Marcel Holtmann, Marcin Kolny, Marcus Prebble,
Mark Nauwelaerts, Maroš Ondrášek, Martin Kelly, Matej Knopp, Mathias Hasselmann,
Mathieu Duponchelle, Matt Crane, Matthew Marsh, Matthew Waters, Matthieu Bouron,
Mersad Jelacic, Michael Olbrich, Miguel París Díaz, Mikhail Fludkov,
Mischa Spiegelmock, Nicola Murino, Nicolas Dufresne, Nicolas Huet,
Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Pablo Anton, Pankaj Darak,
Paolo Pettinato, Patricia Muscalu, Paul Arzelier, Pavel Bludov, Perry Hung,
Peter Korsgaard, Peter Seiderer, Petr Viktorin, Philippe Normand,
Philippe Renon, Philipp Zabel, Philip Van Hoof, Philip Withnall, Piotr Drąg,
plamot, Polochon\_street, Prashant Gotarne, Rajat Verma, Ramiro Polla,
Ravi Kiran K N, Reynaldo H. Verdejo Pinochet, Robert Swain, Romain Picard,
Roman Nowicki, Ross Burton, Ryan Hendrickson, Santiago Carot-Nemesio,
Scott D Phillips, Sebastian Dröge, Sebastian Rasmussen, Sergey Borovkov,
Seungha Yang, Sjors Gielen, Song Bing, Sreerenj Balachandran, Srimanta Panda,
Stavros Vagionitis, Stefan Sauer, Steven Hoving, Stian Selnes, Suhwang Kim,
Thiago Santos, Thibault Saunier, Thijs Vermeir, Thomas Bluemel, Thomas Roos,
Thomas Vander Stichele, Tim-Philipp Müller, Tim Sheridan, Ting-Wei Lan,
Tom Deseyn, Vanessa Chipirrás Navalón, Víctor Manuel Jáquez Leal,
Vincent Dehors, Vincent Penquerc'h, Vineeth T M, Vivia Nikolaidou,
Wang Xin-yu (王昕宇), William Manley, Wim Taymans, Wonchul Lee, Xavi Artigas,
Xavier Claessens, Youness Alaoui,
... and many others who have contributed bug reports, translations, sent
suggestions or helped testing.
## Bugs fixed in 1.8
More than [~700 bugs][bugs-fixed-in-1.8] have been fixed during
the development of 1.8.
This list does not include issues that have been cherry-picked into the
stable 1.6 branch and fixed there as well, all fixes that ended up in the
1.6 branch are also included in 1.8.
This list also does not include issues that have been fixed without a bug
report in bugzilla, so the actual number of fixes is much higher.
[bugs-fixed-in-1.8]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=107311&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.6.1&target_milestone=1.6.2&target_milestone=1.6.3&target_milestone=1.7.0&target_milestone=1.7.1&target_milestone=1.7.2&target_milestone=1.7.3&target_milestone=1.7.4&target_milestone=1.7.90&target_milestone=1.7.91&target_milestone=1.7.92&target_milestone=1.7.x&target_milestone=1.8.0
## Stable 1.8 branch
After the 1.8.0 release there will be several 1.8.x bug-fix releases which
will contain bug fixes which have been deemed suitable for a stable branch,
but no new features or intrusive changes will be added to a bug-fix release
usually. The 1.8.x bug-fix releases will be made from the git 1.8 branch, which
is a stable branch.
### 1.8.0
1.8.0 was released on 24 March 2016.
### 1.8.1
The first 1.8 bug-fix release (1.8.1) is planned for April 2016.
## Schedule for 1.10
Our next major feature release will be 1.10, and 1.9 will be the unstable
development version leading up to the stable 1.10 release. The development
of 1.9/1.10 will happen in the git master branch.
The plan for the 1.10 development cycle is yet to be confirmed, but it is
expected that feature freeze will be around late July or early August,
followed by several 1.9 pre-releases and the new 1.10 stable release
in September.
1.10 will be backwards-compatible to the stable 1.8, 1.6, 1.4, 1.2 and 1.0
release series.
- - -
*These release notes have been prepared by Tim-Philipp Müller with
contributions from Sebastian Dröge, Nicolas Dufresne, Edward Hervey, Víctor
Manuel Jáquez Leal, Arun Raghavan, Thiago Santos, Thibault Saunier, Jan
Schmidt and Matthew Waters.*
*License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)*
Release notes for GStreamer libav Plugins 1.8.0
Release notes for GStreamer libav Plugins 1.8.3
The GStreamer team is pleased to announce the first release of the new stable
1.8 release series. The 1.8 release series is adding new features on top of
the 1.0, 1.2, 1.4 and 1.6 series and is part of the API and ABI-stable 1.x
release series of the GStreamer multimedia framework.
The GStreamer team is proud to announce the third bugfix release in the stable
1.8 release series of your favourite cross-platform multimedia framework!
Binaries for Android, iOS, Mac OS X and Windows will be provided shortly after
the source release by the GStreamer project during the stable 1.8 release
series.
This release only contains bugfixes and it is safe to update from 1.8.x. For a
full list of bugfixes see Bugzilla.
This module contains plugins based on the libav project, including codecs.
See /releases/1.8/ for the full release notes.
This module contains plugins based on the ffmpeg/libav project, including codecs.
......@@ -35,10 +35,6 @@ contains a set of less supported plugins that haven't passed the
Bugs fixed in this release
* 763940 : 'configure' using system libav always fails with " Uncompatible libavcodec found "
==== Download ====
You can find source releases of gst-libav in the download
......@@ -74,5 +70,6 @@ subscribe to the gstreamer-devel list.
Contributors to this release
* Egor Zaharov
* Edward Hervey
* Sebastian Dröge
 
\ No newline at end of file
......@@ -3,7 +3,7 @@ AC_PREREQ(2.69)
dnl initialize autoconf
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, cvs and prerelease does Werror too
AC_INIT(GStreamer libav, 1.8.0,
AC_INIT(GStreamer libav, 1.8.3,
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
gst-libav)
......@@ -40,7 +40,7 @@ GST_API_VERSION=1.0
AC_SUBST(GST_API_VERSION)
AG_GST_LIBTOOL_PREPARE
AS_LIBTOOL(GST, 800, 0, 800)
AS_LIBTOOL(GST, 803, 0, 803)
dnl *** required versions of GStreamer stuff ***
GST_REQ=1.8.0
......@@ -362,7 +362,9 @@ else
--disable-programs --disable-ffserver --disable-ffplay --disable-ffprobe --disable-ffmpeg \
--disable-encoder=flac --disable-protocols --disable-devices \
--disable-network --disable-hwaccels --disable-dxva2 --disable-vdpau \
--disable-filters --disable-doc --disable-vda --disable-d3d11va --disable-dxva2 \
--disable-filters --enable-filter=yadif --disable-doc --disable-vda --disable-d3d11va --disable-dxva2 \
--disable-videotoolbox --disable-vaapi --disable-crystalhd \
--disable-nvenc --disable-mmal --disable-libmfx \
--disable-iconv --enable-optimizations"
if test "x$enable_gpl" == "xyes"; then
......@@ -378,7 +380,7 @@ else
target_os=darwin
;;
*)
target_os=`echo $host_os | sed 's/-gnu//'`
target_os=`echo $host_os | sed 's/-gnu.*//'`
;;
esac
......
......@@ -106,10 +106,6 @@ GObject
avdec_opus
avdec_paf_audio
avdec_pcm_lxf
avdec_pcm_s16be_planar
avdec_pcm_s24le_planar
avdec_pcm_s32le_planar
avdec_pcm_s8_planar
avdec_qcelp
avdec_qdm2
avdec_ralf
......@@ -159,10 +155,6 @@ GObject
avenc_mp2
avenc_mp2fixed
avenc_nellymoser
avenc_pcm_s16be_planar
avenc_pcm_s24le_planar
avenc_pcm_s32le_planar
avenc_pcm_s8_planar
avenc_real_144
avenc_roq_dpcm
avenc_s302m
......@@ -176,7 +168,6 @@ GObject
GstPipeline
GstFFMpegDeinterlace
GstVideoDecoder
avdec_012v
avdec_4xm
avdec_8bps
avdec_aasc
......@@ -194,7 +185,6 @@ GObject
avdec_avrp
avdec_avs
avdec_avui
avdec_ayuv
avdec_bethsoftvid
avdec_bfi
avdec_binkvideo
......@@ -340,9 +330,6 @@ GObject
avdec_txd
avdec_ultimotion
avdec_utvideo
avdec_v308
avdec_v408
avdec_v410
avdec_vb
avdec_vble
avdec_vc1
......@@ -372,11 +359,8 @@ GObject
avdec_xface
avdec_xl
avdec_xwd
avdec_y41p
avdec_yop
avdec_yuv4
avdec_zerocodec
avdec_zlib
avdec_zmbv
GstVideoEncoder
avenc_a64multi
......@@ -388,7 +372,6 @@ GObject
avenc_asv2
avenc_avrp
avenc_avui
avenc_ayuv
avenc_bmp
avenc_cinepak
avenc_cljr
......@@ -436,18 +419,12 @@ GObject
avenc_targa
avenc_tiff
avenc_utvideo
avenc_v308
avenc_v408
avenc_v410
avenc_vc2
avenc_wmv1
avenc_wmv2
avenc_wrapped_avframe
avenc_xbm
avenc_xface
avenc_xwd
avenc_y41p
avenc_yuv4
avenc_zmbv
avdemux_4xm
avdemux_aiff
......
......@@ -3,33 +3,12 @@
<description>All libav codecs and formats (local snapshot)</description>
<filename>../../ext/libav/.libs/libgstlibav.so</filename>
<basename>libgstlibav.so</basename>
<version>1.8.0</version>
<version>1.8.3</version>
<license>LGPL</license>
<source>gst-libav</source>
<package>libav</package>
<origin>http://www.libav.org</origin>
<elements>
<element>
<name>avdec_012v</name>
<longname>libav Uncompressed 4:2:2 10-bit decoder</longname>
<class>Codec/Decoder/Video</class>
<description>libav 012v decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-raw, format=(string){ I420, YUY2, RGB, BGR, Y42B, Y444, YUV9, Y41B, GRAY8, RGB8P, I420, Y42B, Y444, UYVY, NV12, NV21, ARGB, RGBA, ABGR, BGRA, GRAY16_BE, GRAY16_LE, A420, RGB16, RGB15, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE }</details>
</caps>
</pads>
</element>
<element>
<name>avdec_4xm</name>
<longname>libav 4X Movie decoder</longname>
......@@ -1458,27 +1437,6 @@
</caps>
</pads>
</element>
<element>
<name>avdec_ayuv</name>
<longname>libav Uncompressed packed MS 4:4:4:4 decoder</longname>
<class>Codec/Decoder/Video</class>
<description>libav ayuv decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-raw, format=(string){ I420, YUY2, RGB, BGR, Y42B, Y444, YUV9, Y41B, GRAY8, RGB8P, I420, Y42B, Y444, UYVY, NV12, NV21, ARGB, RGBA, ABGR, BGRA, GRAY16_BE, GRAY16_LE, A420, RGB16, RGB15, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE }</details>
</caps>
</pads>
</element>
<element>
<name>avdec_bethsoftvid</name>
<longname>libav Bethesda VID video decoder</longname>
......@@ -4524,90 +4482,6 @@
</caps>
</pads>
</element>
<element>
<name>avdec_pcm_s16be_planar</name>
<longname>libav PCM signed 16-bit big-endian planar decoder</longname>
<class>Codec/Decoder/Audio</class>
<description>libav pcm_s16be_planar decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>audio/x-raw, layout=(string)interleaved, format=(string)S16LE</details>
</caps>
</pads>
</element>
<element>
<name>avdec_pcm_s24le_planar</name>
<longname>libav PCM signed 24-bit little-endian planar decoder</longname>
<class>Codec/Decoder/Audio</class>
<description>libav pcm_s24le_planar decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>audio/x-raw, layout=(string)interleaved, format=(string)S32LE</details>
</caps>
</pads>
</element>
<element>
<name>avdec_pcm_s32le_planar</name>
<longname>libav PCM signed 32-bit little-endian planar decoder</longname>
<class>Codec/Decoder/Audio</class>
<description>libav pcm_s32le_planar decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>audio/x-raw, layout=(string)interleaved, format=(string)S32LE</details>
</caps>
</pads>
</element>
<element>
<name>avdec_pcm_s8_planar</name>
<longname>libav PCM signed 8-bit planar decoder</longname>
<class>Codec/Decoder/Audio</class>
<description>libav pcm_s8_planar decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>audio/x-raw, layout=(string)interleaved, format=(string)U8</details>
</caps>
</pads>
</element>
<element>
<name>avdec_pcx</name>
<longname>libav PC Paintbrush PCX image decoder</longname>
......@@ -5952,69 +5826,6 @@
</caps>
</pads>
</element>
<element>
<name>avdec_v308</name>
<longname>libav Uncompressed packed 4:4:4 decoder</longname>
<class>Codec/Decoder/Video</class>
<description>libav v308 decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-raw, format=(string){ I420, YUY2, RGB, BGR, Y42B, Y444, YUV9, Y41B, GRAY8, RGB8P, I420, Y42B, Y444, UYVY, NV12, NV21, ARGB, RGBA, ABGR, BGRA, GRAY16_BE, GRAY16_LE, A420, RGB16, RGB15, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE }</details>
</caps>
</pads>
</element>
<element>
<name>avdec_v408</name>
<longname>libav Uncompressed packed QT 4:4:4:4 decoder</longname>
<class>Codec/Decoder/Video</class>
<description>libav v408 decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-raw, format=(string){ I420, YUY2, RGB, BGR, Y42B, Y444, YUV9, Y41B, GRAY8, RGB8P, I420, Y42B, Y444, UYVY, NV12, NV21, ARGB, RGBA, ABGR, BGRA, GRAY16_BE, GRAY16_LE, A420, RGB16, RGB15, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE }</details>
</caps>
</pads>
</element>
<element>
<name>avdec_v410</name>
<longname>libav Uncompressed 4:4:4 10-bit decoder</longname>
<class>Codec/Decoder/Video</class>
<description>libav v410 decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-raw, format=(string){ I420, YUY2, RGB, BGR, Y42B, Y444, YUV9, Y41B, GRAY8, RGB8P, I420, Y42B, Y444, UYVY, NV12, NV21, ARGB, RGBA, ABGR, BGRA, GRAY16_BE, GRAY16_LE, A420, RGB16, RGB15, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE }</details>
</caps>
</pads>
</element>
<element>
<name>avdec_vb</name>
<longname>libav Beam Software VB decoder</longname>
......@@ -6855,27 +6666,6 @@
</caps>
</pads>
</element>
<element>
<name>avdec_y41p</name>
<longname>libav Uncompressed YUV 4:1:1 12-bit decoder</longname>
<class>Codec/Decoder/Video</class>
<description>libav y41p decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-raw, format=(string){ I420, YUY2, RGB, BGR, Y42B, Y444, YUV9, Y41B, GRAY8, RGB8P, I420, Y42B, Y444, UYVY, NV12, NV21, ARGB, RGBA, ABGR, BGRA, GRAY16_BE, GRAY16_LE, A420, RGB16, RGB15, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE }</details>
</caps>
</pads>
</element>
<element>
<name>avdec_yop</name>
<longname>libav Psygnosis YOP Video decoder</longname>
......@@ -6897,27 +6687,6 @@
</caps>
</pads>
</element>
<element>
<name>avdec_yuv4</name>
<longname>libav Uncompressed packed 4:2:0 decoder</longname>
<class>Codec/Decoder/Video</class>
<description>libav yuv4 decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-raw, format=(string){ I420, YUY2, RGB, BGR, Y42B, Y444, YUV9, Y41B, GRAY8, RGB8P, I420, Y42B, Y444, UYVY, NV12, NV21, ARGB, RGBA, ABGR, BGRA, GRAY16_BE, GRAY16_LE, A420, RGB16, RGB15, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE }</details>
</caps>
</pads>
</element>
<element>
<name>avdec_zerocodec</name>
<longname>libav ZeroCodec Lossless Video decoder</longname>
......@@ -6939,27 +6708,6 @@
</caps>
</pads>
</element>
<element>
<name>avdec_zlib</name>
<longname>libav LCL (LossLess Codec Library) ZLIB decoder</longname>
<class>Codec/Decoder/Video</class>
<description>libav zlib decoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;, Edward Hervey &lt;bilboed@bilboed.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>video/x-zlib</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-raw, format=(string){ I420, YUY2, RGB, BGR, Y42B, Y444, YUV9, Y41B, GRAY8, RGB8P, I420, Y42B, Y444, UYVY, NV12, NV21, ARGB, RGBA, ABGR, BGRA, GRAY16_BE, GRAY16_LE, A420, RGB16, RGB15, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE }</details>
</caps>
</pads>
</element>
<element>
<name>avdec_zmbv</name>
<longname>libav Zip Motion Blocks Video decoder</longname>
......@@ -8238,27 +7986,6 @@
</caps>
</pads>
</element>
<element>
<name>avenc_ayuv</name>
<longname>libav Uncompressed packed MS 4:4:4:4 encoder</longname>
<class>Codec/Encoder/Video</class>
<description>libav ayuv encoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>video/x-raw</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
</pads>
</element>
<element>
<name>avenc_bmp</name>
<longname>libav BMP (Windows and OS/2 bitmap) encoder</longname>
......@@ -9015,90 +8742,6 @@
</caps>
</pads>
</element>
<element>
<name>avenc_pcm_s16be_planar</name>
<longname>libav PCM signed 16-bit big-endian planar encoder</longname>
<class>Codec/Encoder/Audio</class>
<description>libav pcm_s16be_planar encoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>audio/x-raw, channels=(int)[ 1, 2 ], rate=(int)[ 4000, 96000 ], layout=(string)interleaved, format=(string)S16LE</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
</pads>
</element>
<element>
<name>avenc_pcm_s24le_planar</name>
<longname>libav PCM signed 24-bit little-endian planar encoder</longname>
<class>Codec/Encoder/Audio</class>
<description>libav pcm_s24le_planar encoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>audio/x-raw, channels=(int)[ 1, 2 ], rate=(int)[ 4000, 96000 ], layout=(string)interleaved, format=(string)S32LE</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
</pads>
</element>
<element>
<name>avenc_pcm_s32le_planar</name>
<longname>libav PCM signed 32-bit little-endian planar encoder</longname>
<class>Codec/Encoder/Audio</class>
<description>libav pcm_s32le_planar encoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>audio/x-raw, channels=(int)[ 1, 2 ], rate=(int)[ 4000, 96000 ], layout=(string)interleaved, format=(string)S32LE</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
</pads>
</element>
<element>
<name>avenc_pcm_s8_planar</name>
<longname>libav PCM signed 8-bit planar encoder</longname>
<class>Codec/Encoder/Audio</class>
<description>libav pcm_s8_planar encoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>audio/x-raw, channels=(int)[ 1, 2 ], rate=(int)[ 4000, 96000 ], layout=(string)interleaved, format=(string)U8</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>unknown/unknown</details>
</caps>
</pads>
</element>
<element>
<name>avenc_pcx</name>
<longname>libav PC Paintbrush PCX image encoder</longname>
......@@ -9645,69 +9288,6 @@
</caps>
</pads>
</element>
<element>
<name>avenc_v308</name>
<longname>libav Uncompressed packed 4:4:4 encoder</longname>
<class>Codec/Encoder/Video</class>
<description>libav v308 encoder</description>
<author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;</author>
<pads>