Release 1.12.0
[platform/upstream/gstreamer.git] / NEWS
1 # GStreamer 1.12 Release Notes
2
3 GStreamer 1.12.0 was originally released on 4th May 2017.
4
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!
7
8 As always, this release is again packed with new features, bug fixes and other
9 improvements.
10
11 See [https://gstreamer.freedesktop.org/releases/1.12/][latest] for the latest
12 version of this document.
13
14 *Last updated: Thursday 4 May 2017, 11:00 UTC [(log)][gitlog]*
15
16 [latest]: https://gstreamer.freedesktop.org/releases/1.12/
17 [gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.12/release-notes-1.12.md
18
19 ## Introduction
20
21 The GStreamer team is proud to announce a new major feature release in the
22 stable 1.x API series of your favourite cross-platform multimedia framework!
23
24 As always, this release is again packed with new features, bug fixes and other
25 improvements.
26
27 ## Highlights
28
29 - new `msdk` plugin for Intel's Media SDK for hardware-accelerated video
30   encoding and decoding on Intel graphics hardware on Windows or Linux.
31
32 - `x264enc` can now use multiple x264 library versions compiled for different
33   bit depths at runtime, to transparently provide support for multiple bit
34   depths.
35
36 - `videoscale` and `videoconvert` now support multi-threaded scaling and
37   conversion, which is particularly useful with higher resolution video.
38
39 - `h264parse` will now automatically insert AU delimiters if needed when
40   outputting byte-stream format, which improves standard compliance and
41   is needed in particular for HLS playback on iOS/macOS.
42
43 - `rtpbin` has acquired bundle support for incoming streams
44
45 ## Major new features and changes
46
47 ### Noteworthy new API
48
49 - The video library gained support for a number of new video formats:
50
51   - `GBR_12LE`, `GBR_12BE`, `GBRA_12LE`, `GBRA_12BE` (planar 4:4:4 RGB/RGBA, 12 bits per channel)
52   - `GBRA_10LE`, `GBRA_10BE` (planar 4:4:4:4 RGBA, 10 bits per channel)
53   - `GBRA` (planar 4:4:4:4 ARGB, 8 bits per channel)
54   - `I420_12BE`, `I420_12LE` (planar 4:2:0 YUV, 12 bits per channel)
55   - `I422_12BE`,`I422_12LE` (planar 4:2:2 YUV, 12 bits per channel)
56   - `Y444_12BE`, `Y444_12LE` (planar 4:4:4 YUV, 12 bits per channel)
57   - `VYUY` (another packed 4:2:2 YUV format)
58
59 - The high-level `GstPlayer` API was extended with functions for taking video
60   snapshots and enabling accurate seeking. It can optionally also use the
61   still-experimental `playbin3` element now.
62
63 ### New Elements
64
65 - msdk: new plugin for Intel's Media SDK for hardware-accelerated video encoding
66   and decoding on Intel graphics hardware on Windows or Linux. This includes
67   an H.264 encoder/decoder (`msdkh264dec`, `msdkh264enc`),
68   an H.265 encoder/decoder (`msdkh265dec`, `msdkh265enc`),
69   an MJPEG encoder/encoder (`msdkmjpegdec`, `msdkmjpegenc`),
70   an MPEG-2 video encoder (`msdkmpeg2enc`) and a VP8 encoder (`msdkvp8enc`).
71
72 - `iqa` is a new Image Quality Assessment plugin based on [DSSIM][dssim],
73   similar to the old (unported) videomeasure element.
74
75 - The `faceoverlay` element, which allows you to overlay SVG graphics over
76   a detected face in a video stream, has been ported from 0.10.
77
78 - our `ffmpeg` wrapper plugin now exposes/maps the ffmpeg Opus audio decoder
79   (`avdec_opus`) as well as the GoPro CineForm HD / CFHD decoder (`avdec_cfhd`),
80   and also a parser/writer for the IVF format (`avdemux_ivf` and `avmux_ivf`).
81
82 - `audiobuffersplit` is a new element that splits raw audio buffers into
83   equal-sized buffers
84
85 - `audiomixmatrix` is a new element that mixes N:M audio channels according to
86   a configured mix matrix.
87
88 - The `timecodewait` element got renamed to `avwait` and can operate in
89   different modes now.
90
91 - The `opencv` video processing plugin has gained a new `dewarp` element that
92   dewarps fisheye images.
93
94 - `ttml` is a new plugin for parsing and rendering subtitles in Timed Text
95   Markup Language (TTML) format. For the time being these elements will not
96   be autoplugged during media playback however, unless the `GST_TTML_AUTOPLUG=1`
97   environment variable is set. Only the EBU-TT-D profile is supported at this
98   point.
99
100 [dssim]: https://github.com/pornel/dssim
101
102 ### New element features and additions
103
104 - `x264enc` can now use multiple x264 library versions compiled for different
105   bit depths at runtime, to transparently provide support for multiple bit
106   depths. A new configure parameter `--with-x264-libraries` has been added to
107   specify additional paths to look for additional x264 libraries to load.
108   Background is that the libx264 library is always compile for one specific
109   bit depth and the `x264enc` element would simply support the depth supported
110   by the underlying library. Now we can support multiple depths.
111
112 - `x264enc` also picks up the interlacing mode automatically from the input
113   caps now and passed interlacing/TFF information correctly to the library.
114
115 - `videoscale` and `videoconvert` now support multi-threaded scaling and
116   conversion, which is particularly useful with higher resolution video.
117   This has to be enabled explicitly via the `"n-threads"` property.
118
119 - `videorate`'s new `"rate"` property lets you set a speed factor
120   on the output stream
121
122 - `splitmuxsink`'s buffer collection and scheduling was rewritten to make
123   processing and splitting deterministic; before it was possible for a buffer
124   to end up in a different file chunk in different runs. `splitmuxsink` also
125   gained a new `"format-location-full"` signal that works just like the existing
126   `"format-location"` signal only that it is also passed the primary stream's
127   first buffer as argument, so that it is possible to construct the file name
128   based on metadata such as the buffer timestamp or any GstMeta attached to
129   the buffer. The new `"max-size-timecode"` property allows for timecode-based
130   splitting. `splitmuxsink` will now also automatically start a new file if the
131   input caps change in an incompatible way.
132
133 - `fakesink` has a new `"drop-out-of-segment"` property to not drop
134   out-of-segment buffers, which is useful for debugging purposes.
135
136 - `identity` gained a `"ts-offset"` property.
137
138 - both `fakesink` and `identity` now also print what kind of metas are attached
139   to buffers when printing buffer details via the `"last-message"` property
140   used by `gst-launch-1.0 -v`.
141
142 - multiqueue: made `"min-interleave-time"` a configurable property.
143
144 - video nerds will be thrilled to know that `videotestsrc`'s snow is now
145   deterministic. `videotestsrc` also gained some new properties to make the
146   ball pattern based on system time, and invert colours each second
147   (`"animation-mode"`, `"motion"`, and `"flip"` properties).
148
149 - `oggdemux` reverse playback should work again now. You're welcome.
150
151 - `playbin3` and `urisourcebin` now have buffering enabled by default, and
152   buffering message aggregation was fixed.
153
154 - `tcpclientsrc` now has a `"timeout"` property
155
156 - `appsink` has gained support for buffer lists. For backwards compatibility
157   reasons users need to enable this explicitly with `gst_app_sink_set_buffer_list_support()`,
158   however. Once activated, a pulled `GstSample` can contain either a buffer
159   list or a single buffer.
160
161 - `splitmuxsrc` reverse playback was fixed and handling of sparse streams, such
162   as subtitle tracks or metadata tracks, was improved.
163
164 - `matroskamux` has acquired support for muxing G722 audio; it also marks all
165   buffers as keyframes now when streaming only audio, so that `tcpserversink`
166   will behave properly with audio-only streams.
167
168 - `qtmux` gained support for ProRes 4444 XQ, HEVC/H.265 and CineForm (GoPro) formats,
169   and generally writes more video stream-related metadata into the track headers.
170   It is also allows configuration of the maximum interleave size in bytes and
171   time now. For fragmented mp4 we always write the `tfdt` atom now as required
172   by the DASH spec.
173
174 - `qtdemux` supports FLAC, xvid, mp2, S16L and CineForm (GoPro) tracks now, and
175   generally tries harder to extract more video-related information from track
176   headers, such as colorimetry or interlacing details. It also received a
177   couple of fixes for the scenario where upstream operates in TIME format and
178   feeds chunks to qtdemux (e.g. DASH or MSE).
179
180 - `audioecho` has two new properties to apply a delay only to certain channels
181   to create a surround effect, rather than an echo on all channels. This is
182   useful when upmixing from stereo, for example. The `"surround-delay"` property
183   enables this, and the `"surround-mask"` property controls which channels
184   are considered surround sound channels in this case.
185
186 - `webrtcdsp` gained various new properties for gain control and also exposes
187   voice activity detection now, in which case it will post `"voice-activity"`
188   messages on the bus whenever the voice detection status changes.
189
190 - The `decklink` capture elements for Blackmagic Decklink cards have seen a
191   number of improvements:
192
193   - `decklinkvideosrc` will post a warning message on "no signal" and an info
194     message when the signal lock has been (re)acquired. There is also a new
195     read-only `"signal"` property that can be used to query the signal lock
196     status. The `GAP` flag will be set on buffers that are captured without
197     a signal lock. The new `drop-no-signal-frames` will make `decklinkvideosrc`
198     drop all buffers that have been captured without an input signal. The
199     `"skip-first-time"` property will make the source drop the first few
200     buffers, which is handy since some devices will at first output buffers
201     with the wrong resolution before they manage to figure out the right input
202     format and decide on the actual output caps.
203
204   - `decklinkaudiosrc` supports more than just 2 audio channels now.
205
206   - The capture sources no longer use the "hardware" timestamps which turn
207     out to be useless and instead just use the pipeline clock directly.
208
209 - `srtpdec` now also has a readonly `"stats"` property, just like `srtpenc`.
210
211 - `rtpbin` gained RTP bundle support, as used by e.g. WebRTC. The first
212    rtpsession will have a `rtpssrcdemux` element inside splitting the streams
213    based on their SSRC and potentially dispatch to a different rtpsession.
214    Because retransmission SSRCs need to be merged with the corresponding media
215    stream the `::on-bundled-ssrc` signal is emitted on `rtpbin` so that the
216    application can find out to which session the SSRC belongs.
217
218 - `rtprtxqueue` gained two new properties exposing retransmission
219   statistics (`"requests"` and `"fulfilled-requests"`)
220
221 - `kmssink` will now use the preferred mode for the monitor and render to the
222   base plane if nothing else has set a mode yet. This can also be done forcibly
223   in any case via the new `"force-modesetting"` property. Furthermore, `kmssink`
224   now allows only the supported connector resolutions as input caps in order to
225   avoid scaling or positioning of the input stream, as `kmssink` can't know
226   whether scaling or positioning would be more appropriate for the use case at
227   hand.
228
229 - `waylandsink` can now take DMAbuf buffers as input in the presence
230   of a compatible Wayland compositor. This enables zero-copy transfer
231   from a decoder or source that outputs DMAbuf.
232
233 - `udpsrc` can be bound to more than one interface when joining a
234   multicast group, this is done by giving a comma separate list of
235   interfaces such as multicast-iface="eth0,eth1".
236
237 ### Plugin moves
238
239 - `dataurisrc` moved from gst-plugins-bad to core
240
241 - The `rawparse` plugin containing the `rawaudioparse` and `rawvideoparse`
242   elements moved from gst-plugins-bad to gst-plugins-base. These elements
243   supersede the old `videoparse` and `audioparse` elements. They work the
244   same, with just some minor API changes. The old legacy elements still
245   exist in gst-plugins-bad, but may be removed at some point in the future.
246
247 - `timecodestamper` is an element that attaches time codes to video buffers
248   in form of `GstVideoTimeCodeMeta`s. It had a `"clock-source"` property
249   which has now been removed because it was fairly useless in practice. It
250   gained some new properties however: the `"first-timecode"` property can
251   be used to set the inital timecode; alternatively `"first-timecode-to-now"`
252   can be set, and then the current system time at the time the first buffer
253   arrives is used as base time for the time codes.
254
255
256 ### Plugin removals
257
258 - The `mad` mp1/mp2/mp3 decoder plugin was removed from gst-plugins-ugly,
259   as libmad is GPL licensed, has been unmaintained for a very long time, and
260   there are better alternatives available. Use the `mpg123audiodec` element
261   from the `mpg123` plugin in gst-plugins-ugly instead, or `avdec_mp3` from
262   the `gst-libav` module which wraps the ffmpeg library. We expect that we
263   will be able to move mp3 decoding to gst-plugins-good in the next cycle
264   seeing that most patents around mp3 have expired recently or are about to
265   expire.
266
267 - The `mimic` plugin was removed from gst-plugins-bad. It contained a decoder
268   and encoder for a video codec used by MSN messenger many many years ago (in
269   a galaxy far far away). The underlying library is unmaintained and no one
270   really needs to use this codec any more. Recorded videos can still be played
271   back with the MIMIC decoder in gst-libav.
272
273 ## Miscellaneous API additions
274
275 - Request pad name templates passed to `gst_element_request_pad()` may now
276   contain multiple specifiers, such as e.g. `src_%u_%u`.
277
278 - [`gst_buffer_iterate_meta_filtered()`][buffer-iterate-meta-filtered] is a
279   variant of `gst_buffer_iterate_meta()` that only returns metas of the
280   requested type and skips all other metas.
281
282 - [`gst_pad_task_get_state()`][pad-task-get-state] gets the current state of
283   a task in a thread-safe way.
284
285 - [`gst_uri_get_media_fragment_table()`][uri-get-fragment-table] provides the
286   media fragments of an URI as a table of key=value pairs.
287
288 - [`gst_print()`][print], [`gst_println()`][println], [`gst_printerr()`][printerr],
289   and [`gst_printerrln()`][printerrln] can be used to print to stdout or stderr.
290   These functions are similar to `g_print()` and `g_printerr()` but they also
291   support all the additional format specifiers provided by the GStreamer
292   logging system, such as e.g. `GST_PTR_FORMAT`.
293
294 - a `GstParamSpecArray` has been added, for elements who want to have array
295   type properties, such as the `audiomixmatrix` element for example. There are
296   also two new functions to set and get properties of this type from bindings:
297    - gst_util_set_object_array()
298    - gst_util_get_object_array()
299
300 - various helper functions have been added to make it easier to set or get
301   GstStructure fields containing caps-style array or list fields from language
302   bindings (which usually support GValueArray but don't know about the GStreamer
303   specific fundamental types):
304    - [`gst_structure_get_array()`][get-array]
305    - [`gst_structure_set_array()`][set-array]
306    - [`gst_structure_get_list()`][get-list]
307    - [`gst_structure_set_list()`][set-list]
308
309 - a new ['dynamic type' registry factory type][dynamic-type] was added to
310   register dynamically loadable GType types. This is useful for automatically
311   loading enum/flags types that are used in caps, such as for example the
312   `GstVideoMultiviewFlagsSet` type used in multiview video caps.
313
314 - there is a new [`GstProxyControlBinding`][proxy-control-binding] for use
315   with GstController. This allows proxying the control interface from one
316   property on one GstObject to another property (of the same type) in another
317   GstObject. So e.g. in parent-child relationship, one may need to call
318   `gst_object_sync_values()` on the child and have a binding (set elsewhere)
319   on the parent update the value. This is used in `glvideomixer` and `glsinkbin`
320   for example, where `sync_values()` on the child pad or element will call
321   `sync_values()` on the exposed bin pad or element.
322
323   Note that this doesn't solve GObject property forwarding, that must
324   be taken care of by the implementation manually or using GBinding.
325
326 - `gst_base_parse_drain()` has been made public for subclasses to use.
327
328 - `gst_base_sink_set_drop_out_of_segment()' can be used by subclasses to
329   prevent GstBaseSink from dropping buffers that fall outside of the segment.
330
331 - [`gst_calculate_linear_regression()`][calc-lin-regression] is a new utility
332   function to calculate a linear regression.
333
334 - [`gst_debug_get_stack_trace`][get-stack-trace] is an easy way to retrieve a
335   stack trace, which can be useful in tracer plugins.
336
337 - allocators: the dmabuf allocator is now sub-classable, and there is a new
338   `GST_CAPS_FEATURE_MEMORY_DMABUF` define.
339
340 - video decoder subclasses can use the newly-added function
341   `gst_video_decoder_allocate_output_frame_with_params()` to
342   pass a `GstBufferPoolAcquireParams` to the buffer pool for
343   each buffer allocation.
344
345 - the video time code API has gained a dedicated [`GstVideoTimeCodeInterval`][timecode-interval]
346   type plus related API, including functions to add intervals to timecodes.
347
348 - There is a new `libgstbadallocators-1.0` library in gst-plugins-bad, which
349   may go away again in future releases once the `GstPhysMemoryAllocator`
350   interface API has been validated by more users and was moved to
351   `libgstallocators-1.0` from gst-plugins-base.
352
353 [timecode-interval]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideo.html#gst-video-time-code-interval-new
354 [buffer-iterate-meta-filtered]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#gst-buffer-iterate-meta-filtered
355 [pad-task-get-state]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-task-get-state
356 [uri-get-fragment-table]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUri.html#gst-uri-get-media-fragment-table
357 [print]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-print
358 [println]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-println
359 [printerr]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-printerr
360 [printerrln]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-printerrln
361 [get-array]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-get-array
362 [set-array]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-set-array
363 [get-list]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-get-list
364 [set-list]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-set-list
365 [dynamic-type]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstDynamicTypeFactory.html
366 [proxy-control-binding]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstProxyControlBinding.html
367 [calc-lin-regression]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUtils.html#gst-calculate-linear-regression
368 [get-stack-trace]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUtils.html#gst-debug-get-stack-trace
369
370 ### GstPlayer
371
372 New API has been added to:
373
374  - get the number of audio/video/subtitle streams:
375    - `gst_player_media_info_get_number_of_streams()`
376    - `gst_player_media_info_get_number_of_video_streams()`
377    - `gst_player_media_info_get_number_of_audio_streams()`
378    - `gst_player_media_info_get_number_of_subtitle_streams()`
379
380  - enable accurate seeking: `gst_player_config_set_seek_accurate()`
381    and `gst_player_config_get_seek_accurate()`
382
383  - get a snapshot image of the video in RGBx, BGRx, JPEG, PNG or
384    native format: [`gst_player_get_video_snapshot()`][snapshot]
385
386  - selecting use of a specific video sink element
387    ([`gst_player_video_overlay_video_renderer_new_with_sink()`][renderer-with-vsink])
388
389  - If the environment variable `GST_PLAYER_USE_PLAYBIN3` is set, GstPlayer will
390    use the still-experimental `playbin3` element and the `GstStreams` API for
391    playback.
392
393 [snapshot]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstplayer.html#gst-player-get-video-snapshot
394 [renderer-with-vsink]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html#gst-player-video-overlay-video-renderer-new-with-sink
395
396 ## Miscellaneous changes
397
398 - video caps for interlaced video may contain an optional `"field-order"` field
399   now in the case of `interlaced-mode=interleaved` to signal that the field
400   order is always the same throughout the stream. This is useful to signal to
401   muxers such as mp4mux. The new field is parsed from/to `GstVideoInfo` of course.
402
403 - video decoder and video encoder base classes try harder to proxy
404   interlacing, colorimetry and chroma-site related fields in caps properly.
405
406 - The buffer stored in the `PROTECTION` events is now left unchanged. This is a
407   change of behaviour since 1.8, especially for the mssdemux element which used to
408   decode the base64 parsed data wrapped in the protection events emitted by the
409   demuxer.
410
411 - `PROTECTION` events can now be injected into the pipeline from the application;
412   source elements deriving from GstBaseSrc will forward those downstream now.
413
414 - The DASH demuxer is now correctly parsing the MSPR-2.0 ContentProtection nodes
415   and emits Protection events accordingly. Applications relying on those events
416   might need to decode the base64 data stored in the event buffer before using it.
417
418 - The registry can now also be disabled by setting the environment variable
419   `GST_REGISTRY_DISABLE=yes`, with similar effect as the `GST_DISABLE_REGISTRY`
420   compile time switch.
421
422 - Seeking performance with gstreamer-vaapi based decoders was improved. It would
423   recreate the decoder and surfaces on every seek which can be quite slow.
424
425 - more robust handling of input caps changes in videoaggregator-based elements
426   such as `compositor`.
427
428 - Lots of adaptive streaming-related fixes across the board (DASH, MSS, HLS). Also:
429
430   - `mssdemux`, the Microsoft Smooth Streaming demuxer, has seen various
431     fixes for live streams, duration reporting and seeking.
432
433   - The DASH manifest parser now extracts MS PlayReady ContentProtection objects
434     from manifests and sends them downstream as `PROTECTION` events. It also
435     supports multiple Period elements in external xml now.
436
437 - gst-libav was updated to ffmpeg 3.3 but should still work with any 3.x
438   version.
439
440 - GstEncodingProfile has been generally enhanced so it can, for
441   example, be used to get possible profiles for a given file
442   extension. It is now possible to define profiles based on element
443   factory names or using a path to a `.gep` file containing a
444   serialized profile.
445
446 - `audioconvert` can now do endianness conversion in-place. All other
447   conversions still require a copy, but e.g. sign conversion and a few others
448   could also be implemented in-place now.
449
450 - The new, experimental `playbin3` and `urisourcebin` elements got many
451   bugfixes and improvements and should generally be closer to a full
452   replacement of the old elements.
453
454 - `interleave` now supports > 64 channels.
455
456 ### OpenGL integration
457
458 - As usual the GStreamer OpenGL integration library has seen numerous
459   fixes and performance improvements all over the place, and is hopefully
460   ready now to become API stable and be moved to gst-plugins-base during the
461   1.14 release cycle.
462
463 - The GStreamer OpenGL integration layer has also gained support for the
464   Vivante EGL FB windowing system, which improves performance on platforms
465   such as Freescale iMX.6 for those who are stuck with the proprietary driver.
466   The `qmlglsink` element also supports this now if Qt is used with eglfs or
467   wayland backend, and it works in conjunction with [gstreamer-imx][gstreamer-imx]
468   of course.
469
470 - various `qmlglsrc` improvements
471
472 [gstreamer-imx]: https://github.com/Freescale/gstreamer-imx
473
474 ## Tracing framework and debugging improvements
475
476 - New tracing hooks have been added to track GstMiniObject and GstObject
477   ref/unref operations.
478
479 - The memory leaks tracer can optionally use this to retrieve stack traces if
480   enabled with e.g. `GST_TRACERS=leaks(filters="GstEvent,GstMessage",stack-traces-flags=full)`
481
482 - The `GST_DEBUG_FILE` environment variable, which can be used to write the
483   debug log output to a file instead of printing it to stderr, can now contain
484   a name pattern, which is useful for automated testing and continuous
485   integration systems. The following format specifiers are supported:
486
487    - `%p`: will be replaced with the PID
488    - `%r`: will be replaced with a random number, which is useful for instance
489      when running two processes with the same PID but in different containers.
490
491 ## Tools
492
493 - `gst-inspect-1.0` can now list elements by type with the new `--types`
494    command-line option, e.g. `gst-inspect-1.0 --types=Audio/Encoder` will
495    show a list of audio encoders.
496
497 - `gst-launch-1.0` and `gst_parse_launch()` have gained a new operator (`:`)
498    that allows linking all pads between two elements. This is useful in cases
499    where the exact number of pads or type of pads is not known beforehand, such
500    as in the `uridecodebin : encodebin` scenario, for example. In this case,
501    multiple links will be created if the encodebin has multiple profiles
502    compatible with the output of uridecodebin.
503
504 - `gst-device-monitor-1.0` now shows a `gst-launch-1.0` snippet for each
505   device that shows how to make use of it in a `gst-launch-1.0` pipeline string.
506
507 ## GStreamer RTSP server
508
509 - The RTSP server now also supports Digest authentication in addition to Basic
510   authentication.
511
512 - The `GstRTSPClient` class has gained a `pre-*-request` signal and virtual
513   method for each client request type, emitted in the beginning of each rtsp
514   request. These signals or virtual methods let the application validate the
515   requests, configure the media/stream in a certain way and also generate error
516   status codes in case of an error or a bad request.
517
518 ## GStreamer VAAPI
519
520 - GstVaapiDisplay now inherits from GstObject, thus the VA display logging
521   messages are better and tracing the context sharing is more readable.
522
523 - When uploading raw images into a VA surfaces now VADeriveImages are tried
524   fist, improving the upload performance, if it is possible.
525
526 - The decoders and the post-processor now can push dmabuf-based buffers to
527   downstream under certain conditions. For example:
528
529   `GST_GL_PLATFORM=egl gst-play-1.0 video-sample.mkv --videosink=glimagesink`
530
531 - Refactored the wrapping of VA surface into gstreamer memory, adding lock
532   when mapping and unmapping, and many other fixes.
533
534 - Now `vaapidecodebin` loads `vaapipostproc` dynamically. It is possible to
535   avoid it usage with the environment variable `GST_VAAPI_DISABLE_VPP=1`.
536
537 - Regarding encoders: they have primary rank again, since they can discover,
538   in run-time, the color formats they can use for upstream raw buffers and
539   caps renegotiation is now possible. Also the encoders push encoding info
540   downstream via tags.
541
542 - About specific encoders: added constant bit-rate encoding mode for VP8 and
543   H265 encoder handles P010_10LE color format.
544
545 - Regarding decoders, flush operation has been improved, now the internal VA
546   encoder is not recreated at each flush. Also there are several improvements
547   in the handling of H264 and H265 streams.
548
549 - VAAPI plugins try to create their on GstGL context (when available) if they
550   cannot find it in the pipeline, to figure out what type of VA Display they
551   should create.
552
553 - Regarding `vaapisink` for X11, if the backend reports that it is unable to
554   render correctly the current color format, an internal VA post-processor, is
555   instantiated (if available) and converts the color format.
556
557 ## GStreamer Editing Services and NLE
558
559 - Enhanced auto transition behaviour
560
561 - Fix some races in `nlecomposition`
562
563 - Allow building with msvc
564
565 - Added a UNIX manpage for `ges-launch`
566
567 - API changes:
568   - Added ges_deinit (allowing the leak tracer to work properly)
569   - Added ges_layer_get_clips_in_interval
570   - Finally hide internal symbols that should never have been exposed
571
572 ## GStreamer validate
573
574 - Port `gst-validate-launcher` to python 3
575
576 - `gst-validate-launcher` now checks if blacklisted bugs have been fixed on
577   bugzilla and errors out if it is the case
578
579 - Allow building with msvc
580
581 - Add ability for the launcher to run GStreamer unit tests
582
583 - Added a way to activate the leaks tracer on our tests and fix leaks
584
585 - Make the http server multithreaded
586
587 - New testsuite for running various test scenarios on the DASH-IF test vectors
588
589 ## Build and Dependencies
590
591 - Meson build files are now disted in tarballs, for jhbuild and so distro
592   packagers can start using it. Note that the Meson-based build system is not
593   100% feature-equivalent with the autotools-based one yet.
594
595 - Some plugin filenames have been changed to match the plugin names: for example
596   the file name of the `encoding` plugin in gst-plugins-base containing the
597   `encodebin` element was `libgstencodebin.so` and has been changed to
598   `libgstencodebin.so`. This affects only a handful of plugins across modules.
599
600   **Developers who install GStreamer from source and just do `make install`**
601   **after updating the source code, without doing `make uninstall` first, will**
602   **have to manually remove the old installed plugin files from the installation**
603   **prefix, or they will get 'Cannot register existing type' critical warnings.**
604
605 - Most of the docbook-based documentation (FAQ, Application Development Manual,
606   Plugin Writer's Guide, design documents) has been converted to markdown and
607   moved into a new gst-docs module. The gtk-doc library API references and
608   the plugins documentation are still built as part of the source modules though.
609
610 - GStreamer core now optionally uses libunwind and libdw to generate backtraces.
611   This is useful for tracer plugins used during debugging and development.
612
613 - There is a new `libgstbadallocators-1.0` library in gst-plugins-bad (which
614   may go away again in future releases once the `GstPhysMemoryAllocator`
615   interface API has been validated by more users).
616
617 - `gst-omx` and `gstreamer-vaapi` modules can now also be built using the
618   Meson build system.
619
620 - The `qtkitvideosrc` element for macOS was removed. The API is deprecated
621   since 10.9 and it wasn't shipped in the binaries since a few releases.
622
623 ## Platform-specific improvements
624
625 ### Android
626
627 - androidmedia: add support for VP9 video decoding/encoding and Opus audio
628   decoding (where supported)
629
630 ### OS/X and iOS
631
632 - `avfvideosrc`, which represents an iPhone camera or, on a Mac, a screencapture
633   session, so far allowed you to select an input device by device index only.
634   New API adds the ability to select the position (front or back facing) and
635   device-type (wide angle, telephoto, etc.). Furthermore, you can now also
636   specify the orientation (portrait, landscape, etc.) of the videostream.
637
638 ### Windows
639
640 - `dx9screencapsrc` can now optionally also capture the cursor.
641
642 ## Contributors
643
644 Aleix Conchillo Flaque, Alejandro G. Castro, Aleksandr Slobodeniuk, Alexandru
645 Băluț, Alex Ashley, Andre McCurdy, Andrew, Anton Eliasson, Antonio Ospite,
646 Arnaud Vrac, Arun Raghavan, Aurélien Zanelli, Axel Menzel, Benjamin Otte,
647 Branko Subasic, Brendan Shanks, Carl Karsten, Carlos Rafael Giani, ChangBok
648 Chae, Chris Bass, Christian Schaller, christophecvr, Claudio Saavedra,
649 Corentin Noël, Dag Gullberg, Daniel Garbanzo, Daniel Shahaf, David Evans,
650 David Schleef, David Warman, Dominique Leuenberger, Dongil Park, Douglas
651 Bagnall, Edgard Lima, Edward Hervey, Emeric Grange, Enrico Jorns, Enrique
652 Ocaña González, Evan Nemerson, Fabian Orccon, Fabien Dessenne, Fabrice Bellet,
653 Florent Thiéry, Florian Zwoch, Francisco Velazquez, Frédéric Dalleau, Garima
654 Gaur, Gaurav Gupta, George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Graham
655 Leggett, Guillaume Desmottes, Gurkirpal Singh, Haihua Hu, Hanno Boeck, Havard
656 Graff, Heekyoung Seo, hoonhee.lee, Hyunjun Ko, Imre Eörs, Iñaki García
657 Etxebarria, Jagadish, Jagyum Koo, Jan Alexander Steffens (heftig), Jan
658 Schmidt, Jean-Christophe Trotin, Jochen Henneberg, Jonas Holmberg, Joris
659 Valette, Josep Torra, Juan Pablo Ugarte, Julien Isorce, Jürgen Sachs, Koop
660 Mast, Kseniia Vasilchuk, Lars Wendler, leigh123linux@googlemail.com, Luis de
661 Bethencourt, Lyon Wang, Marcin Kolny, Marinus Schraal, Mark Nauwelaerts,
662 Mathieu Duponchelle, Matthew Waters, Matt Staples, Michael Dutka, Michael
663 Olbrich, Michael Smith, Michael Tretter, Miguel París Díaz, namanyadav12, Neha
664 Arora, Nick Kallen, Nicola Murino, Nicolas Dechesne, Nicolas Dufresne, Nicolas
665 Huet, Nirbheek Chauhan, Ole André Vadla Ravnås, Olivier Crête, Patricia
666 Muscalu, Peter Korsgaard, Peter Seiderer, Petr Kulhavy, Philippe Normand,
667 Philippe Renon, Philipp Zabel, Rahul Bedarkar, Reynaldo H. Verdejo Pinochet,
668 Ricardo Ribalda Delgado, Rico Tzschichholz, Руслан Ижбулатов, Samuel Maroy,
669 Santiago Carot-Nemesio, Scott D Phillips, Sean DuBois, Sebastian Dröge, Sergey
670 Borovkov, Seungha Yang, shakin chou, Song Bing, Søren Juul, Sreerenj
671 Balachandran, Stefan Kost, Stefan Sauer, Stepan Salenikovich, Stian Selnes,
672 Stuart Weaver, suhas2go, Thiago Santos, Thibault Saunier, Thomas Bluemel,
673 Thomas Petazzoni, Tim-Philipp Müller, Ting-Wei Lan, Tobias Mueller, Todor
674 Tomov, Tomasz Zajac, Ulf Olsson, Ursula Maplehurst, Víctor Manuel Jáquez Leal,
675 Victor Toso, Vincent Penquerc'h, Vineeth TM, Vinod Kesti, Vitor Massaru Iha,
676 Vivia Nikolaidou, WeiChungChang, William Manley, Wim Taymans, Wojciech
677 Przybyl, Wonchul Lee, Xavier Claessens, Yasushi SHOJI
678
679 ... and many others who have contributed bug reports, translations, sent
680 suggestions or helped testing.
681
682 ## Bugs fixed in 1.12
683
684 More than [635 bugs][bugs-fixed-in-1.12] have been fixed during
685 the development of 1.12.
686
687 This list does not include issues that have been cherry-picked into the
688 stable 1.10 branch and fixed there as well, all fixes that ended up in the
689 1.10 branch are also included in 1.12.
690
691 This list also does not include issues that have been fixed without a bug
692 report in bugzilla, so the actual number of fixes is much higher.
693
694 [bugs-fixed-in-1.12]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=213265&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.10.1&target_milestone=1.10.2&target_milestone=1.10.3&target_milestone=1.10.4&target_milestone=1.11.1&target_milestone=1.11.2&target_milestone=1.11.3&target_milestone=1.11.4&target_milestone=1.11.90&target_milestone=1.11.91&target_milestone=1.12.0
695
696 ## Stable 1.12 branch
697
698 After the 1.12.0 release there will be several 1.12.x bug-fix releases which
699 will contain bug fixes which have been deemed suitable for a stable branch,
700 but no new features or intrusive changes will be added to a bug-fix release
701 usually. The 1.12.x bug-fix releases will be made from the git 1.12 branch, which
702 is a stable branch.
703
704 ### 1.12.0
705
706 1.12.0 was released on 4th May 2017.
707
708 ## Known Issues
709
710 - The `webrtcdsp` element is currently not shipped as part of the Windows
711   binary packages due to a [build system issue][bug-770264].
712
713 [bug-770264]: https://bugzilla.gnome.org/show_bug.cgi?id=770264
714
715 ## Schedule for 1.14
716
717 Our next major feature release will be 1.14, and 1.11 will be the unstable
718 development version leading up to the stable 1.12 release. The development
719 of 1.13/1.14 will happen in the git master branch.
720
721 The plan for the 1.14 development cycle is yet to be confirmed, but it is
722 expected that feature freeze will be around September 2017
723 followed by several 1.13 pre-releases and the new 1.14 stable release
724 in October.
725
726 1.14 will be backwards-compatible to the stable 1.12, 1.10, 1.8, 1.6, 1.4,
727 1.2 and 1.0 release series.
728
729 - - -
730
731 *These release notes have been prepared by Sebastian Dröge, Tim-Philipp Müller
732 and Víctor Manuel Jáquez Leal.*
733
734 *License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)*