1 # GStreamer 1.8 Release Notes
3 **GStreamer 1.8.0 was released on 24 March 2016.**
5 The GStreamer team is proud to announce a new major feature release in the
6 stable 1.x API series of your favourite cross-platform multimedia framework!
8 As always, this release is again packed with new features, bug fixes and other
11 See [https://gstreamer.freedesktop.org/releases/1.8/][latest] for the latest
12 version of this document.
14 *Last updated: Thursday 24 March 2016, 10:00 UTC [(log)][gitlog]*
16 [latest]: https://gstreamer.freedesktop.org/releases/1.8/
17 [gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.8/release-notes-1.8.md
21 - **Hardware-accelerated zero-copy video decoding on Android**
23 - **New video capture source for Android using the android.hardware.Camera API**
25 - **Windows Media reverse playback** support (ASF/WMV/WMA)
27 - **New tracing system** provides support for more sophisticated debugging tools
29 - **New high-level GstPlayer playback convenience API**
31 - **Initial support for the new [Vulkan][vulkan] API**, see
32 [Matthew Waters' blog post][vulkan-in-gstreamer] for more details
34 - **Improved Opus audio codec support**: Support for more than two channels; MPEG-TS demuxer/muxer can now handle Opus;
35 [sample-accurate][opus-sample-accurate] encoding/decoding/transmuxing with
36 Ogg, Matroska, ISOBMFF (Quicktime/MP4), and MPEG-TS as container;
37 [new codec utility functions for Opus header and caps handling][opus-codec-utils]
38 in pbutils library. The Opus encoder/decoder elements were also moved to
39 gst-plugins-base (from -bad), and the opus RTP depayloader/payloader to -good.
41 [opus-sample-accurate]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiometa.html#GstAudioClippingMeta
42 [opus-codec-utils]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstpbutilscodecutils.html
44 - **GStreamer VAAPI module now released and maintained as part of the GStreamer project**
46 [vulkan]: https://www.khronos.org/vulkan
47 [vulkan-in-gstreamer]: http://ystreet00.blogspot.co.uk/2016/02/vulkan-in-gstreamer.html
49 ## Major new features and changes
51 ### Noteworthy new API, features and other changes
53 - New GstVideoAffineTransformationMeta meta for adding a simple 4x4 affine
54 transformation matrix to video buffers
56 - [g\_autoptr()](https://developer.gnome.org/glib/stable/glib-Miscellaneous-Macros.html#g-autoptr)
57 support for all types is exposed in GStreamer headers now, in combination
58 with a sufficiently-new GLib version (i.e. 2.44 or later). This is primarily
59 for the benefit of application developers who would like to make use of
60 this, the GStreamer codebase itself will not be using g_autoptr() for
61 the time being due to portability issues.
63 - GstContexts are now automatically propagated to elements added to a bin
64 or pipeline, and elements now maintain a list of contexts set on them.
65 The list of contexts set on an element can now be queried using the new functions
66 [gst\_element\_get\_context()](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-get-context)
67 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
68 between elements and can also be used by applications to set context-specific
69 configuration objects on elements, e.g. for OpenGL or Hardware-accelerated
72 - New [GST\_BUFFER\_DTS\_OR\_PTS()](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#GST-BUFFER-DTS-OR-PTS:CAPS)
73 convenience macro that returns the decode timestamp if one is set and
74 otherwise returns the presentation timestamp
76 - New GstPadEventFullFunc that returns a GstFlowReturn instead of a gboolean.
77 This new API is mostly for internal use and was added to fix a race condition
78 where occasionally internal flow error messages were posted on the bus when
79 sticky events were propagated at just the wrong moment whilst the pipeline
80 was shutting down. This happened primarily when the pipeline was shut down
81 immediately after starting it up. GStreamer would not know that the reason
82 the events could not be propagated was because the pipeline was shutting down
83 and not some other problem, and now the flow error allows GStreamer to know
84 the reason for the failure (and that there's no reason to post an error
85 message). This is particularly useful for queue-like elements which may need
86 to asynchronously propagate a previous flow return from downstream.
88 - Pipeline dumps in form of "dot files" now also show pad properties that
89 differ from their default value, the same as it does for elements. This is
90 useful for elements with pad subclasses that provide additional properties,
91 e.g. videomixer or compositor.
93 - Pad probes are now guaranteed to be called in the order they were added
94 (before they were called in reverse order, but no particular order was
95 documented or guaranteed)
97 - Plugins can now have dependencies on device nodes (not just regular files)
98 and also have a prefix filter. This is useful for plugins that expose
99 features (elements) based on available devices, such as the video4linux
100 plugin does with video decoders on certain embedded systems.
102 - gst\_segment\_to\_position() has been deprecated and been replaced by the
103 better-named gst\_segment\_position\_from\_running\_time(). At the same time
104 gst\_segment\_position\_from\_stream\_time() was added, as well as \_full()
105 variants of both to deal with negative stream time.
107 - GstController: the interpolation control source gained a new monotonic cubic
108 interpolation mode that, unlike the existing cubic mode, will never overshoot
109 the min/max y values set.
111 - GstNetAddressMeta: can now be read from buffers in language bindings as well,
112 via the new gst\_buffer\_get\_net\_address\_meta() function
114 - ID3 tag PRIV frames are now extraced into a new GST\_TAG\_PRIVATE\_DATA tag
116 - gst-launch-1.0 and gst\_parse\_launch() now warn in the most common case if
117 a dynamic pad link could not be resolved, instead of just silently
118 waiting to see if a suitable pad appears later, which is often perceived
119 by users as hanging -- they are now notified when this happens and can check
122 - GstRTSPConnection now also parses custom RTSP message headers and retains
123 them for the application instead of just ignoring them
125 - rtspsrc handling of authentication over tunneled connections (e.g. RTSP over HTTP)
128 - gst\_video\_convert\_sample() now crops if there is a crop meta on the input buffer
130 - The debugging system printf functions are now exposed for general use, which
131 supports special printf format specifiers such as GST\_PTR\_FORMAT and
132 GST\_SEGMENT\_FORMAT to print GStreamer-related objects. This is handy for
133 systems that want to prepare some debug log information to be output at a
134 later point in time. The GStreamer-OpenGL subsystem is making use of these
135 new functions, which are [gst\_info\_vasprintf()][gst_info_vasprintf],
136 [gst\_info\_strdup\_vprintf()][gst_info_strdup_vprintf] and
137 [gst\_info\_strdup\_printf()][gst_info_strdup_printf].
139 - videoparse: "strides", "offsets" and "framesize" properties have been added to
140 allow parsing raw data with strides and padding that do not match GStreamer
143 - GstPreset reads presets from the directories given in GST\_PRESET\_PATH now.
144 Presets are read from there after presets in the system path, but before
145 application and user paths.
147 [gst_info_vasprintf]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-info-vasprintf
148 [gst_info_strdup_vprintf]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-info-strdup-vprintf
149 [gst_info_strdup_printf]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-info-strdup-printf
153 - [netsim](): a new (resurrected) element to simulate network jitter and
154 packet dropping / duplication.
156 - New VP9 RTP payloader/depayloader elements: rtpvp9pay/rtpvp9depay
158 - New [videoframe_audiolevel]() element, a video frame synchronized audio level element
160 - New spandsp-based tone generator source
162 - New NVIDIA NVENC-based H.264 encoder for GPU-accelerated video encoding on
163 suitable NVIDIA hardware
165 - [rtspclientsink](), a new RTSP RECORD sink element, was added to gst-rtsp-server
167 - [alsamidisrc](), a new ALSA MIDI sequencer source element
169 ### Noteworthy element features and additions
171 - *identity*: new ["drop-buffer-flags"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-identity.html#GstIdentity--drop-buffer-flags)
172 property to drop buffers based on buffer flags. This can be used to drop all
173 non-keyframe buffers, for example.
175 - *multiqueue*: various fixes and improvements, in particular special handling
176 for sparse streams such as substitle streams, to make sure we don't overread
177 them any more. For sparse streams it can be normal that there's no buffer for
178 a long period of time, so having no buffer queued is perfectly normal. Before
179 we would often unnecessarily try to fill the subtitle stream queue, which
180 could lead to much more data being queued in multiqueue than necessary.
182 - *multiqueue*/*queue*: When dealing with time limits, these elements now use the
183 new ["GST_BUFFER_DTS_OR_PTS"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#GST-BUFFER-DTS-OR-PTS:CAPS)
184 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)
185 API, resulting in more accurate levels, especially when dealing with non-raw
186 streams (where reordering happens, and we want to use the increasing DTS as
187 opposed to the non-continuously increasing PTS) and out-of-segment input/output.
188 Previously all encoded buffers before the segment start, which can happen when
189 doing ACCURATE seeks, were not taken into account in the queue level calculation.
191 - *multiqueue*: New ["use-interleave"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-multiqueue.html#GstMultiQueue--use-interleave)
192 property which allows the size of the queues to be optimized based on the input
193 streams interleave. This should only be used with input streams which are properly
194 timestamped. It will be used in the future decodebin3 element.
196 - *queue2*: new ["avg-in-rate"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-queue2.html#GstQueue2--avg-in-rate)
197 property that returns the average input rate in bytes per second
199 - audiotestsrc now supports all audio formats and is no longer artificially
200 limited with regard to the number of channels or sample rate
202 - gst-libav (ffmpeg codec wrapper): map and enable JPEG2000 decoder
204 - multisocketsink can, on request, send a custom GstNetworkMessage event
205 upstream whenever data is received from a client on a socket. Similarly,
206 socketsrc will, on request, pick up GstNetworkMessage events from downstream
207 and send any data contained within them via the socket. This allows for
208 simple bidirectional communication.
210 - matroska muxer and demuxer now support the ProRes video format
212 - Improved VP8/VP9 decoding performance on multi-core systems by enabling
213 multi-threaded decoding in the libvpx-based decoders on such systems
215 - 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)
216 property, so in cases where it is uncertain if an appsink will have a consumer for
217 its buffers when it receives an EOS this can be set to FALSE to ensure that the
218 appsink will not hang.
220 - rtph264pay and rtph265pay have a new "config-interval" mode -1 that will
221 re-send the setup data (SPS/PPS/VPS) before every keyframe to ensure
222 optimal coverage and the shortest possibly start-up time for a new client
224 - mpegtsmux can now mux H.265/HEVC video as well
226 - The MXF muxer was ported to 1.x and produces more standard conformant files now
227 that can be handled by more other software; The MXF demuxer got improved
228 support for seek tables (IndexTableSegments).
232 - The rtph265pay/depay RTP payloader/depayloader elements for H.265/HEVC video
233 from the rtph265 plugin in -bad have been moved into the existing rtp plugin
236 - The mpg123 plugin containing a libmpg123 based audio decoder element has
237 been moved from -bad to -ugly.
239 - The Opus encoder/decoder elements have been moved to gst-plugins-base and
240 the RTP payloader to gst-plugins-good, both coming from gst-plugins-bad.
242 ### New tracing tools for developers
244 A new tracing subsystem API has been added to GStreamer, which provides
245 external tracers with the possibility to strategically hook into GStreamer
246 internals and collect data that can be evaluated later. These tracers are a
247 new type of plugin features, and GStreamer core ships with a few example
248 tracers (latency, stats, rusage, log) to start with. Tracers can be loaded
249 and configured at start-up via an environment variable (GST\_TRACER\_PLUGINS).
251 Background: While GStreamer provides plenty of data on what's going on in a
252 pipeline via its debug log, that data is not necessarily structured enough to
253 be generally useful, and the overhead to enable logging output for all data
254 required might be too high in many cases. The new tracing system allows tracers
255 to just obtain the data needed at the right spot with as little overhead as
256 possible, which will be particularly useful on embedded systems.
258 Of course it has always been possible to do performance benchmarks and debug
259 memory leaks, memory consumption and invalid memory access using standard
260 operating system tools, but there are some things that are difficult to track
261 with the standard tools, and the new tracing system helps with that. Examples
262 are things such as latency handling, buffer flow, ownership transfer of
263 events and buffers from element to element, caps negotiation, etc.
265 For some background on the new tracing system, watch Stefan Sauer's
266 GStreamer Conference talk ["A new tracing subsystem for GStreamer"][tracer-0]
267 and for a more specific example how it can be useful have a look at
268 Thiago Santos's lightning talk ["Analyzing caps negotiation using GstTracer"][tracer-1]
269 and his ["GstTracer experiments"][tracer-2] blog post. There was also a Google
270 Summer of Code project in 2015 that used tracing system for a graphical
271 GStreamer debugging tool ["gst-debugger"][tracer-3].
273 This is all still very much work in progress, but we hope this will provide the
274 foundation for a whole suite of new debugging tools for GStreamer pipelines.
276 [tracer-0]: https://gstconf.ubicast.tv/videos/a-new-tracing-subsystem-for-gstreamer/
277 [tracer-1]: https://gstconf.ubicast.tv/videos/analyzing-caps-negotiation-using-gsttracer/
278 [tracer-2]: http://blog.thiagoss.com/2015/07/23/gsttracer-experiments/
279 [tracer-3]: https://git.gnome.org/browse/gst-debugger
281 ### GstPlayer: a new high-level API for cross-platform multimedia playback
283 GStreamer has had reasonably high-level API for multimedia playback
284 in the form of the playbin element for a long time. This allowed application
285 developers to just configure a URI to play, and playbin would take care of
286 everything else. This works well, but there is still way too much to do on
287 the application-side to implement a fully-featured playback application, and
288 too much general GStreamer pipeline API exposed, making it less accessible
289 to application developers.
291 Enter GstPlayer. GstPlayer's aim is to provide an even higher-level abstraction
292 of a fully-featured playback API but specialised for its specific use case. It
293 also provides easy integration with and examples for Gtk+, Qt, Android, OS/X,
294 iOS and Windows. Watch Sebastian's [GstPlayer talk at the GStreamer Conference][gstplayer-talk]
295 for more information, or check out the [GstPlayer API reference][gstplayer-api]
296 and [GstPlayer examples][gstplayer-examples].
298 [gstplayer-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/player.html
299 [gstplayer-talk]: https://gstconf.ubicast.tv/videos/gstplayer-a-simple-cross-platform-api-for-all-your-media-playback-needs-part-1/
300 [gstplayer-examples]: https://github.com/sdroege/gst-player/
302 ### Adaptive streaming: DASH, HLS and MSS improvements
304 - dashdemux now supports loading external xml nodes pointed from its MPD.
306 - Content protection nodes parsing support for PlayReady WRM in mssdemux.
308 - Reverse playback was improved to respect seek start and stop positions.
310 - Adaptive demuxers (hlsdemux, dashdemux, mssdemux) now support the SNAP_AFTER
311 and SNAP_BEFORE seek flags which will jump to the nearest fragment boundary
312 when executing a seek, which means playback resumes more quickly after a seek.
314 ### Audio library improvements
316 - audio conversion, quantization and channel up/downmixing functionality
317 has been moved from the audioconvert element into the audio library and
318 is now available as public API in form of [GstAudioConverter][audio-0],
319 [GstAudioQuantize][audio-1] and [GstAudioChannelMixer][audio-2].
320 Audio resampling will follow in future releases.
322 - [gst\_audio\_channel\_get\_fallback\_mask()][audio-3] can be used
323 to retrieve a default channel mask for a given number of channels as last
324 resort if the layout is unknown
326 - A new [GstAudioClippingMeta][audio-4] meta was added for specifying clipping
327 on encoded audio buffers
329 - A new GstAudioVisualizer base class for audio visualisation elements;
330 most of the existing visualisers have been ported over to the new base class.
331 This new base class lives in the pbutils library rather than the audio library,
332 since we'd have had to make libgstaudio depend on libgstvideo otherwise,
333 which was deemed undesirable.
335 [audio-0]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-GstAudioConverter.html
336 [audio-1]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-GstAudioQuantize.html
337 [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
338 [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
339 [audio-4]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiometa.html#GstAudioClippingMeta
341 ### GStreamer OpenGL support improvements
343 #### Better OpenGL Shader support
345 [GstGLShader][shader] has been revamped to allow more OpenGL shader types
346 by utilizing a new GstGLSLStage object. Each stage holds an OpenGL pipeline
347 stage such as a vertex, fragment or a geometry shader that are all compiled
348 separately into a program that is executed.
350 The glshader element has also received a revamp as a result of the changes in
351 the library. It does not take file locations for the vertex and fragment
352 shaders anymore. Instead it takes the strings directly leaving the file
353 management to the application.
355 A new [example][liveshader-example] was added utilizing the new shader
356 infrastructure showcasing live shader edits.
358 [shader]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstglshader.html
359 [liveshader-example]: https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examples/gtk/glliveshader.c
361 #### OpenGL GLMemory rework
363 [GstGLMemory] was extensively reworked to support the addition of multiple
364 texture targets required for zero-copy integration with the Android
365 MediaCodec elements. This work was also used to provide IOSurface based
366 GLMemory on OS X for zero-copy with OS X's VideoToolbox decoder (vtdec) and
367 AV Foundation video source (avfvideosrc). There are also patches in bugzilla
368 for GstGLMemoryEGL specifically aimed at improving the decoding performance on
371 [GstGLMemory]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstglmemory.html
373 A texture-target field was added to video/x-raw(memory:GLMemory) caps to signal
374 the texture target contained in the GLMemory. Its values can be 2D, rectangle
375 or external-oes. glcolorconvert can convert between the different formats as
376 required and different elements will accept or produce different targets. e.g.
377 glimagesink can take and render external-oes textures directly as required for
378 effecient zero-copy on android.
380 A generic GL allocation framework was also implemented to support the generic
381 allocation of OpenGL buffers and textures which is used extensively by
384 #### OpenGL DMABuf import uploader
386 There is now a DMABuf uploader available for automatic selection that will
387 attempt to import the upstream provided DMABuf. The uploader will import into
388 2D textures with the necesarry format. YUV to RGB conversion is still provided
389 by glcolorconvert to avoid the laxer restrictions with external-oes textures.
393 Queries of various aspects of the OpenGL runtime such as timers, number of
394 samples or the current timestamp are not possible. The GstGLQuery object uses a
395 delayed debug system to delay the debug output to later to avoid expensive calls
396 to the glGet\* family of functions directly after finishing a query. It is
397 currently used to output the time taken to perform various operations of texture
398 uploads and downloads in GstGLMemory.
400 #### New OpenGL elements
402 glcolorbalance has been created mirroring the videobalance elements.
403 glcolorbalance provides the exact same interface as videobalance so can be used
404 as a GPU accelerated replacement. glcolorbalance has been added to glsinkbin so
405 usage with playsink/playbin will use it automatically instead of videobalance
408 glvideoflip, which is the OpenGL equiavalant of videoflip, implements the exact
409 same interface and functionality as videoflip.
411 #### EGL implementation now selects OpenGL 3.x
413 The EGL implementation can now select OpenGL 3.x contexts.
415 #### OpenGL API removal
417 The GstGLDownload library object was removed as it was not used by anything.
418 Everything is performed by GstGLMemory or in the gldownloadelement.
420 The GstGLUploadMeta library object was removed as it was not being used and we
421 don't want to promote the use of GstVideoGLTextureUploadMeta.
423 #### OpenGL: Other miscellaneous changes
425 - The EGL implementation can now select OpenGL 3.x contexts. This brings
426 OpenGL 3.x to e.g. wayland and other EGL systems.
428 - glstereomix/glstereosplit are now built and are usable on OpenGL ES systems
430 - The UYVY/YUY2 to RGBA and RGBA to UYVY/YUY2 shaders were fixed removing the
431 sawtooth pattern and luma bleeding.
433 - We now utilize the GL\_APPLE\_sync extension on iOS devices which improves
434 performance of OpenGL applications, especially with multiple OpenGL
437 - glcolorconvert now uses a bufferpool to avoid costly
438 glGenTextures/glDeleteTextures for every frame.
440 - glvideomixer now has full glBlendFunc and glBlendEquation support per input.
442 - gltransformation now support navigation events so your weird transformations
443 also work with DVD menus.
445 - qmlglsink can now run on iOS, OS X and Android in addition to the already
446 supported Linux platform.
448 - glimagesink now posts unhandled keyboard and mouse events (on backends that
449 support user input, current only X11) on the bus for the application.
451 ### Initial GStreamer Vulkan support
453 Some new elements, vulkansink and vulkanupload have been implemented utilizing
454 the new Vulkan API. The implementation is currently limited to X11 platforms
455 (via xcb) and does not perform any scaling of the stream's contents to the size
456 of the available output.
458 A lot of infrasctructure work has been undertaken to support using Vulkan in
459 GStreamer in the future. A number of GstMemory subclasses have been created for
460 integrating Vulkan's GPU memory handling along with VkBuffer's and VkImage's
461 that can be passed between elements. Some GStreamer refcounted wrappers for
462 global objects such as VkInstance, VkDevice, VkQueue, etc have also been
463 implemented along with GstContext integration for sharing these objects with the
466 ### GStreamer VAAPI support for hardware-accelerated video decoding and encoding on Intel (and other) platforms
468 #### GStreamer VAAPI is now part of upstream GStreamer
470 The GStreamer-VAAPI module which provides support for hardware-accelerated
471 video decoding, encoding and post-processing on Intel graphics hardware
472 on Linux has moved from its previous home at the [Intel Open Source Technology Center][iostc]
473 to the upstream GStreamer repositories, where it will in future be maintained
474 as part of the upstream GStreamer project and released in lockstep with the
475 other GStreamer modules. The current maintainers will continue to spearhead
476 the development at the new location:
478 [http://cgit.freedesktop.org/gstreamer/gstreamer-vaapi/][gst-vaapi-git]
480 [gst-vaapi-git]: http://cgit.freedesktop.org/gstreamer/gstreamer-vaapi/
482 GStreamer-VAAPI relies heavily on certain GStreamer infrastructure API that
483 is still in flux such as the OpenGL integration API or the codec parser
484 libraries, and one of the goals of the move was to be able to leverage
485 new developments early and provide tighter integration with the latest
486 developments of those APIs and other graphics-related APIs provided by
487 GStreamer, which should hopefully improve performance even further and in
488 some cases might also provide better stability.
490 Thanks to everyone involved in making this move happen!
492 #### GStreamer VAAPI: Bug tracking
494 Bugs had already been tracked on [GNOME bugzilla](bgo) but will be moved
495 from the gstreamer-vaapi product into a new gstreamer-vaapi component of
496 the GStreamer product in bugzilla. Please file new bugs against the new
497 component in the GStreamer product from now on.
499 #### GStreamer VAAPI: Pending patches
501 The code base has been re-indented to the GStreamer code style, which
502 affected some files more than others. This means that some of the patches
503 in bugzilla might not apply any longer, so if you have any unmerged patches
504 sitting in bugzilla please consider checking if they still apply cleany and
505 refresh them if not. Sorry for any inconvenience this may cause.
507 #### GStreamer VAAPI: New versioning scheme and supported GStreamer versions
509 The version numbering has been changed to match the GStreamer version
510 numbering to avoid confusion: there is a new gstreamer-vaapi 1.6.0 release
511 and a 1.6 branch that is roughly equivalent to the previous 0.7.0 version.
512 Future releases 1.7.x and 1.8.x will be made alongside GStreamer releases.
514 While it was possible and supported by previous releases to build against
515 a whole range of different GStreamer versions (such as 1.2, 1.4, 1.6 or 1.7/1.8),
516 in the future there will only be one target branch, so that git master will
517 track GStreamer git master, 1.8.x will target GStreamer 1.8, and
518 1.6.x will target the 1.6 series.
520 [iostc]: http://01.org
521 [bgo]: http://bugzilla.gnome.og
523 #### GStreamer VAAPI: Miscellaneous changes
525 All GStreamer-VAAPI functionality is now provided solely by its GStreamer
526 elements. There is no more public library exposing GstVaapi API, this API
527 was only ever meant for private use by the elements. Parts of it may be
528 resurrected again in future if needed, but for now it has all been made
531 GStreamer-VAAPI now unconditionally uses the codecparser library in
532 gst-plugins-bad instead of shipping its own internal copy. Similarly,
533 it no longer ships its own codec parsers but relies on the upstream
534 codec parser elements.
536 The GStreamer-VAAPI encoder elements have been renamed from vaapiencode_foo
537 to vaapifooenc, so encoders are now called vaapih264enc, vaapih265enc,
538 vaapimpeg2enc, vaapijpegenc, and vaapivp8enc. With this change we now follow
539 the standard names in GStreamer, and the plugin documentation is generated
542 In the case of the decoders, only the jpeg decoder has been split from the
543 general decoding element vaapidecode: vaapijpegdec. This is the first step to
544 split per codec each decoding element. The vaapijpegdec has also been given
545 marginal rank for the time being.
547 #### GStreamer VAAPI: New features in 1.8: 10-bit H.265/HEVC decoding support
549 Support for decoding 10-bit H.265/HEVC has been added. For the time being
550 this only works in combination with vaapisink though, until support for the
551 P010 video format used internally is added to GStreamer and to the
552 vaGetImage()/vaPutimage() API in the vaapi-intel-driver.
554 Several fixes for memory leaks, build errors, and in the internal
557 Finally, vaapisink now posts the unhandled keyboard and mouse events to the
560 ### GStreamer Video 4 Linux Support
562 Colorimetry support has been enhanced even more. It will now properly select
563 default values when not specified by the driver. The range of color formats
564 supported by GStreamer has been greatly improved. Notably, support for
565 multi-planar I420 has been added along with all the new and non-ambiguous RGB
566 formats that got added in recent kernels.
568 The device provider now exposes a variety of properties as found in the udev
571 The video decoder is now able to negotiate the downstream format.
573 Elements that are dynamically created from /dev/video\* now track changes on
574 these devices to ensure the registry stay up to date.
576 All this and various bug fixes that improve both stability and correctness.
578 ### GStreamer Editing Services
580 Added APIs to handle asset proxying support. Proxy creation is not the
581 responsibility of GES itself, but GES provides all the needed features
582 for it to be cleanly handled at a higher level.
584 Added support for changing playback rate. This means that now, whenever a
585 user adds a 'pitch' element (as it is the only known element to change playback
586 rate through properties), GES will handle everything internally. This change
587 introduced a new media-duration-factor property in NleObject which will
588 lead to tweaking of seek events so they have the proper playback range to be
591 Construction of NLE objects has been reworked making copy/pasting fully
592 functional and allowing users to set properties on effects right after
595 Rework of the title source to add more flexibility in text positioning,
596 and letting the user get feedback about rendered text positioning.
598 Report nlecomposition structural issues (coming from user programing mistakes)
599 into ERROR messages on the bus.
601 Add GI/pythyon testsuite in GES itself, making sure the API is working as expected
602 in python, and allowing writing tests faster.
606 Added support to run tests inside gdb.
608 Added a 'smart' reporting mode where we give as much information as possible about
611 Uses GstTracer now instead of a LD\_PRELOAD library.
615 - encodebin now works with "encoder-muxers" such as wavenc
617 - gst-play-1.0 acquired a new keyboard shortcut: '0' seeks back to the start
619 - gst-play-1.0 supports two new command line switches: -v for verbose output
620 and --flags to configure the playbin flags to use.
622 ## Build and Dependencies
624 - The GLib dependency requirement was bumped to 2.40
626 - The -Bsymbolic configure check now works with clang as well
628 - ffmpeg is now required as libav provider, incompatible changes were
629 introduced that make it no longer viable to support both FFmpeg and Libav
630 as libav providers. Most major distros have switched to FFmpeg or are in
631 the process of switching to it anyway, so we don't expect this to be a
632 problem, and there is still an internal copy of ffmpeg that can be used
633 as fallback if needed.
635 - The internal ffmpeg snapshot is now FFMpeg 3.0, but it should be possible
636 to build against 2.8 as well for the time being.
638 ## Platform-specific improvements
642 - Zero-copy video decoding on Android using the hardware-accelerated decoders
643 has been implemented, and is fully integrated with the GStreamer OpenGL stack
645 - ahcsrc, a new camera source element, has been merged and can be used to
646 capture video on android devices. It uses the android.hardware.Camera Java
647 API to capture from the system's cameras.
649 - The OpenGL-based QML video sink can now also be used on Android
651 - New tinyalsasink element, which is mainly useful for Android but can also
652 be used on other platforms.
656 - The system clock now uses mach\_absolute\_time() on OSX/iOS, which is
657 the preferred high-resolution monotonic clock to be used on Apple platforms
659 - The OpenGL-based QML video sink can now also be used on OS X and iOS (with
660 some Qt build system massaging)
662 - New IOSurface based memory implementation in avfvideosrc and vtdec on OS X
663 for zerocopy with OpenGL. The previously used OpenGL extension
664 GL_APPLE_ycbcr_422 is not compatible with GL 3.x core contexts.
666 - New GstAppleCoreVideoMemory wrapping CVPixelBuffer's
668 - avfvideosrc now supports renegotiation.
672 - Various bugs with UDP and multicast were fixed on Windows, mostly related to
675 - A few bugs in directsoundsrc and directsoundsink were fixed that could cause
676 the element to lock up. Also the "mute" property on the sink was fixed, and
677 a new "device" property for device selection was added to the source.
681 - Building GStreamer applications with the Android NDK r11 is currently not
682 supported due to incompatible changes in the NDK. This is expected to be
684 [Bugzilla #763999](https://bugzilla.gnome.org/show_bug.cgi?id=763999)
686 - vp8enc crashes on 32 bit Windows, but was working fine in 1.6. 64 bit
687 Windows is unaffected.
688 [Bugzilla #763663](https://bugzilla.gnome.org/show_bug.cgi?id=763663)
692 Adam Miartus, Alban Bedel, Aleix Conchillo Flaqué, Aleksander Wabik,
693 Alessandro Decina, Alex Ashley, Alex Dizengof, Alex Henrie, Alistair Buxton,
694 Andreas Cadhalpun, Andreas Frisch, André Draszik, Anthony G. Basile,
695 Antoine Jacoutot, Anton Bondarenko, Antonio Ospite, Arjen Veenhuizen,
696 Arnaud Vrac, Arun Raghavan, Athanasios Oikonomou, Aurélien Zanelli, Ben Iofel,
697 Bob Holcomb, Branko Subasic, Carlos Rafael Giani, Chris Bass, Csaba Toth,
698 Daniel Kamil Kozar, Danilo Cesar Lemes de Paula, Dave Craig, David Fernandez,
699 David Schleef, David Svensson Fors, David Waring, David Wu, Duncan Palmer,
700 Edward Hervey, Egor Zaharov, Etienne Peron, Eunhae Choi, Evan Callaway,
701 Evan Nemerson, Fabian Orccon, Florent Thiéry, Florin Apostol, Frédéric Wang,
702 George Kiagiadakis, George Yunaev, Göran Jönsson, Graham Leggett,
703 Guillaume Desmottes, Guillaume Marquebielle, Haihua Hu, Havard Graff,
704 Heinrich Fink, Holger Kaelberer, HoonHee Lee, Hugues Fruchet, Hyunil Park,
705 Hyunjun Ko, Ilya Konstantinov, James Stevenson, Jan Alexander Steffens (heftig),
706 Jan Schmidt, Jason Litzinger, Jens Georg, Jimmy Ohn, Joan Pau Beltran,
707 Joe Gorse, John Chang, John Slade, Jose Antonio Santos Cadenas, Josep Torra,
708 Julian Bouzas, Julien Isorce, Julien Moutte, Justin Kim, Kazunori Kobayashi,
709 Koop Mast, Lim Siew Hoon, Linus Svensson, Lubosz Sarnecki, Luis de Bethencourt,
710 Lukasz Forynski, Manasa Athreya, Marcel Holtmann, Marcin Kolny, Marcus Prebble,
711 Mark Nauwelaerts, Maroš Ondrášek, Martin Kelly, Matej Knopp, Mathias Hasselmann,
712 Mathieu Duponchelle, Matt Crane, Matthew Marsh, Matthew Waters, Matthieu Bouron,
713 Mersad Jelacic, Michael Olbrich, Miguel París Díaz, Mikhail Fludkov,
714 Mischa Spiegelmock, Nicola Murino, Nicolas Dufresne, Nicolas Huet,
715 Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Pablo Anton, Pankaj Darak,
716 Paolo Pettinato, Patricia Muscalu, Paul Arzelier, Pavel Bludov, Perry Hung,
717 Peter Korsgaard, Peter Seiderer, Petr Viktorin, Philippe Normand,
718 Philippe Renon, Philipp Zabel, Philip Van Hoof, Philip Withnall, Piotr Drąg,
719 plamot, Polochon\_street, Prashant Gotarne, Rajat Verma, Ramiro Polla,
720 Ravi Kiran K N, Reynaldo H. Verdejo Pinochet, Robert Swain, Romain Picard,
721 Roman Nowicki, Ross Burton, Ryan Hendrickson, Santiago Carot-Nemesio,
722 Scott D Phillips, Sebastian Dröge, Sebastian Rasmussen, Sergey Borovkov,
723 Seungha Yang, Sjors Gielen, Song Bing, Sreerenj Balachandran, Srimanta Panda,
724 Stavros Vagionitis, Stefan Sauer, Steven Hoving, Stian Selnes, Suhwang Kim,
725 Thiago Santos, Thibault Saunier, Thijs Vermeir, Thomas Bluemel, Thomas Roos,
726 Thomas Vander Stichele, Tim-Philipp Müller, Tim Sheridan, Ting-Wei Lan,
727 Tom Deseyn, Vanessa Chipirrás Navalón, Víctor Manuel Jáquez Leal,
728 Vincent Dehors, Vincent Penquerc'h, Vineeth T M, Vivia Nikolaidou,
729 Wang Xin-yu (王昕宇), William Manley, Wim Taymans, Wonchul Lee, Xavi Artigas,
730 Xavier Claessens, Youness Alaoui,
732 ... and many others who have contributed bug reports, translations, sent
733 suggestions or helped testing.
737 More than [~700 bugs][bugs-fixed-in-1.8] have been fixed during
738 the development of 1.8.
740 This list does not include issues that have been cherry-picked into the
741 stable 1.6 branch and fixed there as well, all fixes that ended up in the
742 1.6 branch are also included in 1.8.
744 This list also does not include issues that have been fixed without a bug
745 report in bugzilla, so the actual number of fixes is much higher.
747 [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
751 After the 1.8.0 release there will be several 1.8.x bug-fix releases which
752 will contain bug fixes which have been deemed suitable for a stable branch,
753 but no new features or intrusive changes will be added to a bug-fix release
754 usually. The 1.8.x bug-fix releases will be made from the git 1.8 branch, which
759 1.8.0 was released on 24 March 2016.
763 The first 1.8 bug-fix release (1.8.1) is planned for April 2016.
767 Our next major feature release will be 1.10, and 1.9 will be the unstable
768 development version leading up to the stable 1.10 release. The development
769 of 1.9/1.10 will happen in the git master branch.
771 The plan for the 1.10 development cycle is yet to be confirmed, but it is
772 expected that feature freeze will be around late July or early August,
773 followed by several 1.9 pre-releases and the new 1.10 stable release
776 1.10 will be backwards-compatible to the stable 1.8, 1.6, 1.4, 1.2 and 1.0
781 *These release notes have been prepared by Tim-Philipp Müller with
782 contributions from Sebastian Dröge, Nicolas Dufresne, Edward Hervey, Víctor
783 Manuel Jáquez Leal, Arun Raghavan, Thiago Santos, Thibault Saunier, Jan
784 Schmidt and Matthew Waters.*
786 *License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)*