1 2 3GSTREAMER 1.16 RELEASE NOTES 4 5 6GStreamer 1.16.0 was originally released on 19 April 2019. 7 8The latest bug-fix release in the 1.16 series is 1.16.2 and was released 9on 3 December 2019. 10 11See https://gstreamer.freedesktop.org/releases/1.16/ for the latest 12version of this document. 13 14_Last updated: Tuesday 03 December 2019, 08:00 UTC (log)_ 15 16 17Introduction 18 19The GStreamer team is proud to announce a new major feature release in 20the stable 1.x API series of your favourite cross-platform multimedia 21framework! 22 23As always, this release is again packed with many new features, bug 24fixes and other improvements. 25 26 27Highlights 28 29- GStreamer WebRTC stack gained support for data channels for 30 peer-to-peer communication based on SCTP, BUNDLE support, as well as 31 support for multiple TURN servers. 32 33- AV1 video codec support for Matroska and QuickTime/MP4 containers 34 and more configuration options and supported input formats for the 35 AOMedia AV1 encoder 36 37- Support for Closed Captions and other Ancillary Data in video 38 39- Support for planar (non-interleaved) raw audio 40 41- GstVideoAggregator, compositor and OpenGL mixer elements are now in 42 -base 43 44- New alternate fields interlace mode where each buffer carries a 45 single field 46 47- WebM and Matroska ContentEncryption support in the Matroska demuxer 48 49- new WebKit WPE-based web browser source element 50 51- Video4Linux: HEVC encoding and decoding, JPEG encoding, and improved 52 dmabuf import/export 53 54- Hardware-accelerated Nvidia video decoder gained support for VP8/VP9 55 decoding, whilst the encoder gained support for H.265/HEVC encoding. 56 57- Many improvements to the Intel Media SDK based hardware-accelerated 58 video decoder and encoder plugin (msdk): dmabuf import/export for 59 zero-copy integration with other components; VP9 decoding; 10-bit 60 HEVC encoding; video post-processing (vpp) support including 61 deinterlacing; and the video decoder now handles dynamic resolution 62 changes. 63 64- The ASS/SSA subtitle overlay renderer can now handle multiple 65 subtitles that overlap in time and will show them on screen 66 simultaneously 67 68- The Meson build is now feature-complete (*) and it is now the 69 recommended build system on all platforms. The Autotools build is 70 scheduled to be removed in the next cycle. 71 72- The GStreamer Rust bindings and Rust plugins module are now 73 officially part of upstream GStreamer. 74 75- The GStreamer Editing Services gained a gesdemux element that allows 76 directly playing back serialized edit list with playbin or 77 (uri)decodebin 78 79- Many performance improvements 80 81 82Major new features and changes 83 84Noteworthy new API 85 86- GstAggregator has a new "min-upstream-latency" property that forces 87 a minimum aggregate latency for the input branches of an aggregator. 88 This is useful for dynamic pipelines where branches with a higher 89 latency might be added later after the pipeline is already up and 90 running and where a change in the latency would be disruptive. This 91 only applies to the case where at least one of the input branches is 92 live though, it won’t force the aggregator into live mode in the 93 absence of any live inputs. 94 95- GstBaseSink gained a "processing-deadline" property and 96 setter/getter API to configure a processing deadline for live 97 pipelines. The processing deadline is the acceptable amount of time 98 to process the media in a live pipeline before it reaches the sink. 99 This is on top of the systemic latency that is normally reported by 100 the latency query. This defaults to 20ms and should make pipelines 101 such as v4l2src ! xvimagesink not claim that all frames are late in 102 the QoS events. Ideally, this should replace the "max-lateness" 103 property for most applications. 104 105- RTCP Extended Reports (XR) parsing according to RFC 3611: 106 Loss/Duplicate RLE, Packet Receipt Times, Receiver Reference Time, 107 Delay since the last Receiver (DLRR), Statistics Summary, and VoIP 108 Metrics reports. This only provides the ability to parse such 109 packets, generation of XR packets is not supported yet and XR 110 packets are not automatically parsed by rtpbin / rtpsession but must 111 be actively handled by the application. 112 113- a new mode for interlaced video was added where each buffer carries 114 a single field of interlaced video, with buffer flags indicating 115 whether the field is the top field or bottom field. Top and bottom 116 fields are expected to alternate in this mode. Caps for this 117 interlace mode must also carry a format:Interlaced caps feature to 118 ensure backwards compatibility. 119 120- The video library has gained support for three new raw pixel 121 formats: 122 123 - Y410: packed 4:4:4 YUV, 10 bits per channel 124 - Y210: packed 4:2:2 YUV, 10 bits per channel 125 - NV12_10LE40: fully-packed 10-bit variant of NV12_10LE32, 126 i.e. without the padding bits 127 128- GstRTPSourceMeta is a new meta that can be used to transport 129 information about the origin of depayloaded or decoded RTP buffers, 130 e.g. when mixing audio from multiple sources into a single stream. A 131 new "source-info" property on the RTP depayloader base class 132 determines whether depayloaders should put this meta on outgoing 133 buffers. Similarly, the same property on RTP payloaders determines 134 whether they should use the information from this meta to construct 135 the CSRCs list on outgoing RTP buffers. 136 137- gst_sdp_message_from_text() is a convenience constructor to parse 138 SDPs from a string which is particularly useful for language 139 bindings. 140 141Support for Planar (Non-Interleaved) Raw Audio 142 143Raw audio samples are usually passed around in interleaved form in 144GStreamer, which means that if there are multiple audio channels the 145samples for each channel are interleaved in memory, 146e.g. |LEFT|RIGHT|LEFT|RIGHT|LEFT|RIGHT| for stereo audio. A 147non-interleaved or planar arrangement in memory would look like 148|LEFT|LEFT|LEFT|RIGHT|RIGHT|RIGHT| instead, possibly with 149|LEFT|LEFT|LEFT| and |RIGHT|RIGHT|RIGHT| residing in separate memory 150chunks or separated by some padding. 151 152GStreamer has always had signalling for non-interleaved audio since 153version 1.0, but it was never actually properly implemented in any 154elements. audioconvert would advertise support for it, but wasn’t 155actually able to handle it correctly. 156 157With this release we now have full support for non-interleaved audio as 158well, which means more efficient integration with external APIs that 159handle audio this way, but also more efficient processing of certain 160operations like interleaving multiple 1-channel streams into a 161multi-channel stream which can be done without memory copies now. 162 163New API to support this has been added to the GStreamer Audio support 164library: There is now a new GstAudioMeta which describes how data is 165laid out inside the buffer, and buffers with non-interleaved audio must 166always carry this meta. To access the non-interleaved audio samples you 167must map such buffers with gst_audio_buffer_map() which works much like 168gst_buffer_map() or gst_video_frame_map() in that it will populate a 169little GstAudioBuffer helper structure passed to it with the number of 170samples, the number of planes and pointers to the start of each plane in 171memory. This function can also be used to map interleaved audio buffers 172in which case there will be only one plane of interleaved samples. 173 174Of course support for this has also been implemented in the various 175audio helper and conversion APIs, base classes, and in elements such as 176audioconvert, audioresample, audiotestsrc, audiorate. 177 178Support for Closed Captions and Other Ancillary Data in Video 179 180The video support library has gained support for detecting and 181extracting Ancillary Data from videos as per the SMPTE S291M 182specification, including: 183 184- a VBI (Vertical Blanking Interval) parser that can detect and 185 extract Ancillary Data from Vertical Blanking Interval lines of 186 component signals. This is currently supported for videos in v210 187 and UYVY format. 188 189- a new GstMeta for closed captions: GstVideoCaptionMeta. This 190 supports the two types of closed captions, CEA-608 and CEA-708, 191 along with the four different ways they can be transported (other 192 systems are a superset of those). 193 194- a VBI (Vertical Blanking Interval) encoder for writing ancillary 195 data to the Vertical Blanking Interval lines of component signals. 196 197The new closedcaption plugin in gst-plugins-bad then makes use of all 198this new infrastructure and provides the following elements: 199 200- cccombiner: a closed caption combiner that takes a closed captions 201 stream and another stream and adds the closed captions as 202 GstVideoCaptionMeta to the buffers of the other stream. 203 204- ccextractor: a closed caption extractor which will take 205 GstVideoCaptionMeta from input buffers and output them as a separate 206 closed captions stream. 207 208- ccconverter: a closed caption converter that can convert between 209 different formats 210 211- line21encoder, line21decoder: inject/extract line21 closed captions 212 to/from SD video streams 213 214- cc708overlay: decodes CEA 608/708 captions and overlays them on 215 video 216 217Additionally, the following elements have also gained Closed Caption 218support: 219 220- qtdemux and qtmux support CEA 608/708 Closed Caption tracks 221 222- mpegvideoparse, h264parse extracts Closed Captions from MPEG-2/H.264 223 video streams 224 225- avviddec, avvidenc, x264enc got support for extracting/injecting 226 Closed Captions 227 228- decklinkvideosink can output closed captions and decklinkvideosrc 229 can extract closed captions 230 231- playbin and playbin3 learned how to autoplug CEA 608/708 CC overlay 232 elements 233 234- the externally maintained ajavideosrc element for AJA capture cards 235 has support for extracting closed captions 236 237The rsclosedcaption plugin in the Rust plugins collection includes a 238MacCaption (MCC) file parser and encoder. 239 240New Elements 241 242- overlaycomposition: New element that allows applications to draw 243 GstVideoOverlayCompositions on a stream. The element will emit the 244 "draw" signal for each video buffer, and the application then 245 generates an overlay for that frame (or not). This is much more 246 performant than e.g. cairooverlay for many use cases, e.g. because 247 pixel format conversions can be avoided or the blitting of the 248 overlay can be delegated to downstream elements (such as 249 gloverlaycompositor). It’s particularly useful for cases where only 250 a small section of the video frame should be drawn on. 251 252- gloverlaycompositor: New OpenGL-based compositor element that 253 flattens any overlays from GstVideoOverlayCompositionMetas into the 254 video stream. This element is also always part of glimagesink. 255 256- glalpha: New element that adds an alpha channel to a video stream. 257 The values of the alpha channel can either be set to a constant or 258 can be dynamically calculated via chroma keying. It is similar to 259 the existing alpha element but based on OpenGL. Calculations are 260 done in floating point so results may not be identical to the output 261 of the existing alpha element. 262 263- rtpfunnel funnels together RTP streams into a single session. Use 264 cases include multiplexing and bundle. webrtcbin uses it to 265 implement BUNDLE support. 266 267- testsrcbin is a source element that provides an audio and/or video 268 stream and also announces them using the recently-introduced 269 GstStream API. This is useful for testing elements such as playbin3 270 or uridecodebin3 etc. 271 272- New closed caption elements: cccombiner, ccextractor, ccconverter, 273 line21encoder, line21decoder and cc708overlay (see above) 274 275- wpesrc: new source element acting as a Web Browser based on WebKit 276 WPE 277 278- Two new OpenCV-based elements: cameracalibrate and cameraundistort 279 that can communicate to figure out distortion correction parameters 280 for a camera and correct for the distortion. 281 282- New sctp plugin based on usrsctp with sctpenc and sctpdec elements. 283 These elements are used inside webrtcbin for implementing data 284 channels. 285 286New element features and additions 287 288- playbin3, playbin and playsink have gained a new "text-offset" 289 property to adjust the positioning of the selected subtitle stream 290 vis-a-vis the audio and video streams. This uses subtitleoverlay’s 291 new "subtitle-ts-offset" property. GstPlayer has gained matching API 292 for this, namely gst_player_get_text_video_offset(). 293 294- playbin3 buffering improvements: in network playback scenarios there 295 may be multiple inputs to decodebin3, and buffering will be done 296 before decodebin3 using queue2 or downloadbuffer elements inside 297 urisourcebin. Since this is before any parsers or demuxers there may 298 not be any bitrate information available for the various streams, so 299 it was difficult to configure the buffering there smartly within 300 global constraints. This was improved now: The queue2 elements 301 inside urisourcebin will now use the new bitrate query to figure out 302 a bitrate estimate for the stream if no bitrate was provided by 303 upstream, and urisourcebin will use the bitrates of the individual 304 queues to distribute the globally-set "buffer-size" budget in bytes 305 to the various queues. urisourcebin also gained "low-watermark" and 306 "high-watermark" properties which will be proxied to the internal 307 queues, as well as a read-only "statistics" property which allows 308 querying of the minimum/maximum/average byte and time levels of the 309 queues inside the urisourcebin in question. 310 311- splitmuxsink has gained a couple of new features: 312 313 - new "async-finalize" mode: This mode is useful for muxers or 314 outputs that can take a long time to finalize a file. Instead of 315 blocking the whole upstream pipeline while the muxer is doing 316 its stuff, we can unlink it and spawn a new muxer + sink 317 combination to continue running normally. This requires us to 318 receive the muxer and sink (if needed) as factories via the new 319 "muxer-factory" and "sink-factory" properties, optionally 320 accompanied by their respective properties structures (set via 321 the new "muxer-properties" and "sink-properties" properties). 322 There are also new "muxer-added" and "sink-added" signals in 323 case custom code has to be called for them to configure them. 324 325 - "split-at-running-time" action signal: When called by the user, 326 this action signal ends the current file (and starts a new one) 327 as soon as the given running time is reached. If called multiple 328 times, running times are queued up and processed in the order 329 they were given. 330 331 - "split-after" action signal to finish outputting the current GOP 332 to the current file and then start a new file as soon as the GOP 333 is finished and a new GOP is opened (unlike the existing 334 "split-now" which immediately finishes the current file and 335 writes the current GOP into the next newly-started file). 336 337 - "reset-muxer" property: when unset, the muxer is reset using 338 flush events instead of setting its state to NULL and back. This 339 means the muxer can keep state across resets, e.g. mpegtsmux 340 will keep the continuity counter continuous across segments as 341 required by hlssink2. 342 343- qtdemux gained PIFF track encryption box support in addition to the 344 already-existing PIFF sample encryption support, and also allows 345 applications to select which encryption system to use via a 346 "drm-preferred-decryption-system-id" context in case there are 347 multiple options. 348 349- qtmux: the "start-gap-threshold" property determines now whether an 350 edit list will be created to account for small gaps or offsets at 351 the beginning of a stream in case the start timestamps of tracks 352 don’t line up perfectly. Previously the threshold was hard-coded to 353 1% of the (video) frame duration, now it is 0 by default (so edit 354 list will be created even for small differences), but fully 355 configurable. 356 357- rtpjitterbuffer has improved end-of-stream handling 358 359- rtpmp4vpay will be preferred over rtpmp4gpay for MPEG-4 video in 360 autoplugging scenarios now 361 362- rtspsrc now allows applications to send RTSP SET_PARAMETER and 363 GET_PARAMETER requests using action signals. 364 365- rtspsrc has a small (100ms) configurable teardown delay by default 366 to try and make sure an RTSP TEARDOWN request gets sent out when the 367 source element shuts down. This will block the downward PAUSED to 368 READY state change for a short time, but can be disabled where it’s 369 a problem. Some servers only allow a limited number of concurrent 370 clients, so if no proper TEARDOWN is sent new clients may have 371 problems connecting to the server for a while. 372 373- souphttpsrc behaves better with low bitrate streams now. Before it 374 would increase the read block size too quickly which could lead to 375 it not reading any data from the socket for a very long time with 376 low bitrate streams that are output live downstream. This could lead 377 to servers kicking off the client. 378 379- filesink: do internal buffering to avoid performance regression with 380 small writes since we bypass libc buffering by using writev() 381 instead of fwrite() 382 383- identity: add "eos-after" property and fix "error-after" property 384 when the element is reused 385 386- input-selector: lets context queries pass through, so that 387 e.g. upstream OpenGL elements can use contexts and displays 388 advertised by downstream elements 389 390- queue2: avoid ping-pong between 0% and 100% buffering messages if 391 upstream is pushing buffers larger than one of its limits, plus 392 performance optimisations 393 394- opusdec: new "phase-inversion" property to control phase inversion. 395 When enabled, this will slightly increase stereo quality, but 396 produces a stream that when downmixed to mono will suffer audio 397 distortions. 398 399- The x265enc HEVC encoder also exposes a "key-int-max" property to 400 configure the maximum allowed GOP size now. 401 402- decklinkvideosink has seen stability improvements for long-running 403 pipelines (potential crash due to overflow of leaked clock refcount) 404 and clock-slaving improvements when performing flushing seeks 405 (causing stalls in the output timeline), pausing and/or buffering. 406 407- srtpdec, srtpenc: add support for MKIs which allow multiple keys to 408 be used with a single SRTP stream 409 410- srtpdec, srtpenc: add support for AES-GCM and also add support for 411 it in gst-rtsp-server and rtspsrc. 412 413- The srt Secure Reliable Transport plugin has integrated server and 414 client elements srt{client,server}{src,sink} into one (srtsrc and 415 srtsink), since SRT connection mode can be changed by uri 416 parameters. 417 418- h264parse and h265parse will handle SEI recovery point messages and 419 mark recovery points as keyframes as well (in addition to IDR 420 frames) 421 422- webrtcbin: "add-turn-server" action signal to pass multiple ICE 423 relays (TURN servers). 424 425- The removesilence element has received various new features and 426 properties, such as a "threshold" property, detecting silence only 427 after minimum silence time/buffers, a "silent" property to control 428 bus message notifications as well as a "squash" property. 429 430- AOMedia AV1 decoder gained support for 10/12bit decoding whilst the 431 AV1 encoder supports more image formats and subsamplings now and 432 acquired support for rate control and profile related configuration. 433 434- The Fraunhofer fdkaac plugin can now be built against the 2.0.0 435 version API and has improved multichannel support 436 437- kmssink now supports unpadded 24-bit RGB and can configure mode 438 setting from video info, which enables display of multi-planar 439 formats such as I420 or NV12 with modesetting. It has also gained a 440 number of new properties: The "restore-crtc" property does what it 441 says on the tin and is enabled by default. "plane-properties" and 442 "connector-properties" can be used to pass custom properties to the 443 DRM. 444 445- waylandsink has a "fullscreen" property now and supports the 446 XDG-Shell protocol. 447 448- decklinkvideosink, decklinkvideosrc support selecting between 449 half/full duplex 450 451- The vulkan plugin gained support for macOS and iOS via MoltenVK in 452 addition to the existing support for X11 and Wayland 453 454- imagefreeze has a new num-buffers property to limit the number of 455 buffers that are produced and to send an EOS event afterwards 456 457- webrtcbin has a new, introspectable get-transceiver signal in 458 addition to the old get-transceivers signal that couldn’t be used 459 from bindings 460 461- Support for per-element latency information was added to the latency 462 tracer 463 464Plugin and library moves 465 466- The stereo element was moved from -bad into the existing audiofx 467 plugin in -good. If you get duplicate type registration warnings 468 when upgrading, check that you don’t have a stale stereoplugin lying 469 about somewhere. 470 471GstVideoAggregator, compositor, and OpenGL mixer elements moved from -bad to -base 472 473GstVideoAggregator is a new base class for raw video mixers and muxers 474and is based on GstAggregator. It provides defined-latency mixing of raw 475video inputs and ensures that the pipeline won’t stall even if one of 476the input streams stops producing data. 477 478As part of the move to stabilise the API there were some last-minute API 479changes and clean-ups, but those should mostly affect internal elements. 480Most notably, the "ignore-eos" pad property was renamed to 481"repeat-after-eos" and the conversion code was moved to a 482GstVideoAggregatorConvertPad subclass to avoid code duplication, make 483things less awkward for subclasses like the OpenGL-based video mixer, 484and make the API more consistent with the audio aggregator API. 485 486It is used by the compositor element, which is a replacement for 487‘videomixer’ which did not handle live inputs very well. compositor 488should behave much better in that respect and generally behave as one 489would expected in most scenarios. 490 491The compositor element has gained support for per-pad blending mode 492operators (SOURCE, OVER, ADD) which determines what operator to use for 493blending this pad over the previous ones. This can be used to implement 494crossfading and the available operators can be extended in the future as 495needed. 496 497A number of OpenGL-based video mixer elements (glvideomixer, glmixerbin, 498glvideomixerelement, glstereomix, glmosaic) which are built on top of 499GstVideoAggregator have also been moved from -bad to -base now. These 500elements have been merged into the existing OpenGL plugin, so if you get 501duplicate type registration warnings when upgrading, check that you 502don’t have a stale openglmixers plugin lying about somewhere. 503 504Plugin removals 505 506The following plugins have been removed from gst-plugins-bad: 507 508- The experimental daala plugin has been removed, since it’s not so 509 useful now that all effort is focused on AV1 instead, and it had to 510 be enabled explicitly with --enable-experimental anyway. 511 512- The spc plugin has been removed. It has been replaced by the gme 513 plugin. 514 515- The acmmp3dec and acmenc plugins for Windows have been removed. ACM 516 is an ancient legacy API and there was no point in keeping the 517 plugins around for a licensed MP3 decoder now that the MP3 patents 518 have expired and we have a decoder in -good. We also didn’t ship 519 these in our cerbero-built Windows packages, so it’s unlikely that 520 they’ll be missed. 521 522 523Miscellaneous API additions 524 525- GstBitwriter: new generic bit writer API to complement the existing 526 bit reader 527 528- gst_buffer_new_wrapped_bytes() creates a wrap buffer from a GBytes 529 530- gst_caps_set_features_simple() sets a caps feature on all the 531 structures of a GstCaps 532 533- New GST_QUERY_BITRATE query: This allows determining from downstream 534 what the expected bitrate of a stream may be which is useful in 535 queue2 for setting time based limits when upstream does not provide 536 timing information. tsdemux, qtdemux and matroskademux have basic 537 support for this query on their sink pads. 538 539- elements: there is a new “Hardware” class specifier. Elements 540 interacting with hardware devices should specify this classifier in 541 their element factory class metadata. This is useful to advertise as 542 one might need to put such elements into READY state to test if the 543 hardware is present in the system for example. 544 545- protection: Add a new definition for unspecified system protection, 546 GST_PROTECTION_UNSPECIFIED_SYSTEM_ID 547 548- take functions for various mini objects that didn’t have them yet: 549 gst_query_take(), gst_message_take(), gst_tag_list_take(), 550 gst_buffer_list_take(). Unlike the various _replace() functions 551 _take() does not increase the reference count but takes ownership of 552 the mini object passed. 553 554- clear functions for various mini object types and GstObject which 555 unrefs the object or mini object (if non-NULL) and sets the variable 556 pointed to to NULL: gst_clear_structure(), gst_clear_tag_list(), 557 gst_clear_query(), gst_clear_message(), gst_clear_event(), 558 gst_clear_caps(), gst_clear_buffer_list(), gst_clear_buffer(), 559 gst_clear_mini_object(), gst_clear_object() 560 561- miniobject: new API gst_mini_object_add_parent() and 562 gst_mini_object_remove_parent() to set parent pointers on mini 563 objects to ensure correct writability: Every container of 564 miniobjects now needs to store itself as parent in the child object, 565 and remove itself again later. A mini object is then only writable 566 if there is at most one parent, that parent is writable itself, and 567 the reference count of the mini object is 1. GstBuffer (for 568 memories), GstBufferList (for buffers), GstSample (for caps, buffer, 569 bufferlist), and GstVideoOverlayComposition were updated 570 accordingly. Without this it was possible to have e.g. a buffer list 571 with a refcount of 2 used in two places at once that both modify the 572 same buffer with refcount 1 at the same time wrongly thinking it is 573 writable even though it’s really not. 574 575- poll: add API to watch for POLLPRI and stop treating POLLPRI as a 576 read. This is useful to wait for video4linux events which are 577 signalled via POLLPRI. 578 579- sample: new API to update the contents of a GstSample and make it 580 writable: gst_sample_set_buffer(), gst_sample_set_caps(), 581 gst_sample_set_segment(), gst_sample_set_info(), plus 582 gst_sample_is_writable() and gst_sample_make_writable(). This makes 583 it possible to reuse a sample object and avoid unnecessary memory 584 allocations, for example in appsink. 585 586- ClockIDs now keep a weak reference to underlying clock to avoid 587 crashes in basesink in corner cases where a clock goes away while 588 the ClockID is still in use, plus some new API 589 (gst_clock_id_get_clock(), gst_clock_id_uses_clock()) to check the 590 clock a ClockID is linked to. 591 592- The GstCheck unit test library gained a 593 fail_unless_equals_clocktime() convenience macro as well as some new 594 GstHarness API for for proposing meta APIs from the allocation 595 query: gst_harness_add_propose_allocation_meta(). ASSERT_CRITICAL() 596 checks in unit tests are now skipped if GStreamer was compiled with 597 GST_DISABLE_GLIB_CHECKS. 598 599- gst_audio_buffer_truncate() convenience function to truncate a raw 600 audio buffer 601 602- GstDiscoverer has support for caching the results of discovery in 603 the default cache directory. This can be enabled with the use-cache 604 property and is disabled by default. 605 606- GstMeta that are attached to GstBuffers are now always stored in the 607 order in which they were added. 608 609- Additional support for signalling ONVIF specific features were 610 added: the SEEK event can store a trickmode-interval now and support 611 for the Rate-Control and Frames RTSP headers was added to the RTSP 612 library. 613 614 615Miscellaneous performance and memory optimisations 616 617As always there have been many performance and memory usage improvements 618across all components and modules. Some of them (such as dmabuf 619import/export) have already been mentioned elsewhere so won’t be 620repeated here. 621 622The following list is only a small snapshot of some of the more 623interesting optimisations that haven’t been mentioned in other contexts 624yet: 625 626- The GstVideoEncoder and GstVideoDecoder base classes now release the 627 STREAM_LOCK when pushing out buffers, which means (multi-threaded) 628 encoders and decoders can now receive and continue to process input 629 buffers whilst waiting for downstream elements in the pipeline to 630 process the buffer that was pushed out. This increases throughput 631 and reduces processing latency, also and especially for 632 hardware-accelerated encoder/decoder elements. 633 634- GstQueueArray has seen a few API additions 635 (gst_queue_array_peek_nth(), gst_queue_array_set_clear_func(), 636 gst_queue_array_clear()) so that it can be used in other places like 637 GstAdapter instead of a GList, which reduces allocations and 638 improves performance. 639 640- appsink now reuses the sample object in pull_sample() if possible 641 642- rtpsession only starts the RTCP thread when it’s actually needed now 643 644- udpsrc uses a buffer pool now and the GstUdpSrc object structure was 645 optimised for better cache performance 646 647GstPlayer 648 649- API was added to fine-tune the synchronisation offset between 650 subtitles and video 651 652 653Miscellaneous changes 654 655- As a result of moving to newer FFmpeg APIs, encoder and decoder 656 elements exposed by the GStreamer FFmpeg wrapper plugin (gst-libav) 657 may have seen possibly incompatible changes to property names and/or 658 types, and not all properties exposed might be functional. We are 659 still reviewing the new properties and aim to minimise breaking 660 changes at least for the most commonly-used properties, so please 661 report any issues you run into! 662 663OpenGL integration 664 665- The OpenGL mixer elements have been moved from -bad to 666 gst-plugins-base (see above) 667 668- The Mesa GBM backend now supports headless mode 669 670- gloverlaycompositor: New OpenGL-based compositor element that 671 flattens any overlays from GstVideoOverlayCompositionMetas into the 672 video stream. 673 674- glalpha: New element that adds an alpha channel to a video stream. 675 The values of the alpha channel can either be set to a constant or 676 can be dynamically calculated via chroma keying. It is similar to 677 the existing alpha element but based on OpenGL. Calculations are 678 done in floating point so results may not be identical to the output 679 of the existing alpha element. 680 681- glupload: Implement direct dmabuf uploader, the idea being that some 682 GPUs (like the Vivante series) can actually perform the YUV->RGB 683 conversion internally, so no custom conversion shaders are needed. 684 To make use of this feature, we need an additional uploader that can 685 import DMABUF FDs and also directly pass the pixel format, relying 686 on the GPU to do the conversion. 687 688- The OpenGL library no longer restores the OpenGL viewport. This is a 689 performance optimization to not require performing multiple 690 expensive glGet*() function calls per frame. This affects any 691 application or plugin use of the following functions and objects: 692 - glcolorconvert library object (not the element) 693 - glviewconvert library object (not the element) 694 - gst_gl_framebuffer_draw_to_texture() 695 - custom GstGLWindow implementations 696 697 698Tracing framework and debugging improvements 699 700- There is now a GDB PRETTY PRINTER FOR VARIOUS GSTREAMER TYPES: For 701 GstObject pointers the type and name is added, e.g. 702 0x5555557e4110 [GstDecodeBin|decodebin0]. For GstMiniObject pointers 703 the object type is added, e.g. 0x7fffe001fc50 [GstBuffer]. For 704 GstClockTime and GstClockTimeDiff the time is also printed in human 705 readable form, e.g. 150116219955 [+0:02:30.116219955]. 706 707- GDB EXTENSION WITH TWO CUSTOM GDB COMMANDS gst-dot AND gst-print: 708 709 - gst-dot creates dot files that a very close to what 710 GST_DEBUG_BIN_TO_DOT_FILE() produces, but object properties and 711 buffer contents such as codec-data in caps are not available. 712 713 - gst-print produces high-level information about a GStreamer 714 object. This is currently limited to pads for GstElements and 715 events for the pads. The output may look like this: 716 717- gst_structure_to_string() now serialises the actual value of 718 pointers when serialising GstStructures instead of claiming they’re 719 NULL. This makes debug logging in various places less confusing, 720 because it’s clear now that structure fields actually hold valid 721 objects. Such object pointer values will never be deserialised 722 however. 723 724 725Tools 726 727- gst-inspect-1.0 has coloured output now and will automatically use a 728 pager if the output does not fit on a page. This only works in a 729 UNIX environment and if the output is not piped, and on Windows 10 730 build 16257 or newer. If you don’t like the colours you can disable 731 them by setting the GST_INSPECT_NO_COLORS=1 environment variable or 732 passing the --no-color command line option. 733 734 735GStreamer RTSP server 736 737- Improved backlog handling when using TCP interleaved for data 738 transport. Before there was a fixed maximum size for backlog 739 messages, which was prone to deadlocks and made it difficult to 740 control memory usage with the watch backlog. The RTSP server now 741 limits queued TCP data messages to one per stream, moving queuing of 742 the data into the pipeline and leaving the RTSP connection 743 responsive to RTSP messages in both directions, preventing all those 744 problems. 745 746- Initial ULP Forward Error Correction support in rtspclientsink and 747 for RECORD mode in the server. 748 749- API to explicitly enable retransmission requests (RTX) 750 751- Lots of multicast-related fixes 752 753- rtsp-auth: Add support for parsing .htdigest files 754 755 756GStreamer VAAPI 757 758- Support Wayland’s display for context sharing, so the application 759 can pass its own wl_display in order to be used for the VAAPI 760 display creation. 761 762- A lot of work to support new Intel hardware using media-driver as VA 763 backend. 764 765- For non-x86 devices, VAAPI display can instantiate, through DRM, 766 with no PCI bus. This enables the usage of libva-v4l2-request 767 driver. 768 769- Added support for XDG-shell protocol as wl_shell replacement which 770 is currently deprecated. This change add as dependency 771 wayland-protocol. 772 773- GstVaapiFilter, GstVaapiWindow, and GstVaapiDecoder classes now 774 inherit from GstObject, gaining all the GStreamer’s instrumentation 775 support. 776 777- The metadata now specifies the plugin as Hardware class. 778 779- H264 decoder is more stable with problematic streams. 780 781- In H265 decoder added support for profiles main-422-10 (P010_10LE), 782 main-444 (AYUV) and main-444-10 (Y410) 783 784- JPEG decoder handles dynamic resolution changes. 785 786- More specification adherence in H264 and H265 encoders. 787 788 789GStreamer OMX 790 791- Add support of NV16 format to video encoders input. 792 793- Video decoders now handle the ALLOCATION query to tell upstream 794 about the number of buffers they require. Video encoders will also 795 use this query to adjust their number of allocated buffers 796 preventing starvation when using dynamic buffer mode. 797 798- The OMX_PERFORMANCE debug category has been renamed to OMX_API_TRACE 799 and can now be used to track a widder variety of interactions 800 between OMX and GStreamer. 801 802- Video encoders will now detect frame rate only changes and will 803 inform OMX about it rather than doing a full format reset. 804 805- Various Zynq UltraScale+ specific improvements: 806 - Video encoders are now able to import dmabuf from upstream. 807 - Support for HEVC range extension profiles and more AVC profiles. 808 - We can now request video encoders to generate an IDR using the 809 force key unit event. 810 811 812GStreamer Editing Services and NLE 813 814- Added a gesdemux element, it is an auto pluggable element that 815 allows decoding edit list like files supported by GES 816 817- Added gessrc which wraps a GESTimeline as a standard source element 818 (implementing the ges protocol handler) 819 820- Added basic support for videorate::rate property potentially 821 allowing changing playback speed 822 823- Layer priority is now fully automatic and they should be moved with 824 the new ges_timeline_move_layer method, ges_layer_set_priority is 825 now deprecated. 826 827- Added a ges_timeline_element_get_layer_priority so we can simply get 828 all information about GESTimelineElement position in the timeline 829 830- GESVideoSource now auto orientates the images if it is defined in a 831 meta (overridable). 832 833- Added some PyGObject overrides to make the API more pythonic 834 835- The threading model has been made more explicit with safe guard to 836 make sure not thread safe APIs are not used from the wrong threads. 837 It is also now possible to properly handle in what thread the API 838 should be used. 839 840- Optimized GESClip and GESTrackElement creation 841 842- Added a way to compile out the old, unused and deprecated 843 GESPitiviFormatter 844 845- Re implemented the timeline editing API making it faster and making 846 the code much more maintainable 847 848- Simplified usage of nlecomposition outside GES by removing quirks in 849 it API usage and removing the need to treat it specially from an 850 application perspective. 851 852- ges-launch-1.0: 853 854 - Added support to add titles to the timeline 855 - Enhance the help auto generating it from the code 856 857- Deprecate ges_timeline_load_from_uri as loading the timeline should 858 be done through a project now 859 860- MANY leaks have been plugged and the unit testsuite is now “leak 861 free” 862 863 864GStreamer validate 865 866- Added an action type to verify the checksum of the sink last-sample 867 868- Added an include keyword to validate scenarios 869 870- Added the notion of variable in scenarios, with the set-vars keyword 871 872- Started adding support for “performance” like tests by allowing to 873 define the number of dropped buffers or the minimum buffer frequency 874 on a specific pad 875 876- Added a validateflow plugin which allows defining the data flow to 877 be seen on a particular pad and verifying that following runs match 878 the expectations 879 880- Added support for appsrc based test definition so we can instrument 881 the data pushed into the pipeline from scenarios 882 883- Added a mockdecryptor allowing adding tests with on encrypted files, 884 the element will potentially be instrumented with a validate 885 scenario 886 887- gst-validate-launcher: 888 889 - Cleaned up output 890 891 - Changed the default for “muting” tests as user doesn’t expect 892 hundreds of windows to show up when running the testsuite 893 894 - Fixed the outputted xunit files to be compatible with GitLab 895 896 - Added support to run tests on media files in push mode (using 897 pushfile://) 898 899 - Added support for running inside gst-build 900 901 - Added support for running ssim tests on rendered files 902 903 - Added a way to simply define tests on pipelines through a simple 904 .json file 905 906 - Added a python app to easily run python testsuite reusing all 907 the launcher features 908 909 - Added flatpak knowledge so we can print backtrace even when 910 running from within flatpak 911 912 - Added a way to automatically generated “known issues” 913 suppressions lines 914 915 - Added a way to rerun tests to check if they are flaky and added 916 a way to tolerate tests known to be flaky 917 918 - Add a way to output html log files 919 920 921GStreamer Python Bindings 922 923- add binding for gst_pad_set_caps() 924 925- pygobject dependency requirement was bumped to >= 3.8 926 927- new audiotestsrc, audioplot, and mixer plugin examples, and a 928 dynamic pipeline example 929 930 931GStreamer C# Bindings 932 933- bindings for the GstWebRTC library 934 935 936GStreamer Rust Bindings 937 938The GStreamer Rust bindings are now officially part of the GStreamer 939project and are also maintained in the GStreamer GitLab. 940 941The releases will generally not be synchronized with the releases of 942other GStreamer parts due to dependencies on other projects. 943 944Also unlike the other GStreamer libraries, the bindings will not commit 945to full API stability but instead will follow the approach that is 946generally taken by Rust projects, e.g.: 947 9481) 0.12.X will be completely API compatible with all other 0.12.Y 949 versions. 9502) 0.12.X+1 will contain bugfixes and compatible new feature additions. 9513) 0.13.0 will _not_ be backwards compatible with 0.12.X but projects 952 will be able to stay at 0.12.X without any problems as long as they 953 don’t need newer features. 954 955The current stable release is 0.12.2 and the next release series will be 9560.13, probably around March 2019. 957 958At this point the bindings cover most of GStreamer core (except for most 959notably GstAllocator and GstMemory), and most parts of the app, audio, 960base, check, editing-services, gl, net. pbutils, player, rtsp, 961rtsp-server, sdp, video and webrtc libraries. 962 963Also included is support for creating subclasses of the following types 964and writing GStreamer plugins: 965 966- gst::Element 967- gst::Bin and gst::Pipeline 968- gst::URIHandler and gst::ChildProxy 969- gst::Pad, gst::GhostPad 970- gst_base::Aggregator and gst_base::AggregatorPad 971- gst_base::BaseSrc and gst_base::BaseSink 972- gst_base::BaseTransform 973 974Changes to 0.12.X since 0.12.0 975 976Fixed 977 978- PTP clock constructor actually creates a PTP instead of NTP clock 979 980Added 981 982- Bindings for GStreamer Editing Services 983- Bindings for GStreamer Check testing library 984- Bindings for the encoding profile API (encodebin) 985 986- VideoFrame, VideoInfo, AudioInfo, StructureRef implements Send and 987 Sync now 988- VideoFrame has a function to get the raw FFI pointer 989- From impls from the Error/Success enums to the combined enums like 990 FlowReturn 991- Bin-to-dot file functions were added to the Bin trait 992- gst_base::Adapter implements SendUnique now 993- More complete bindings for the gst_video::VideoOverlay interface, 994 especially 995 gst_video::is_video_overlay_prepare_window_handle_message() 996 997Changed 998 999- All references were updated from GitHub to freedesktop.org GitLab 1000- Fix various links in the README.md 1001- Link to the correct location for the documentation 1002- Remove GitLab badge as that only works with gitlab.com currently 1003 1004Changes in git master for 0.13 1005 1006Fixed 1007 1008- gst::tag::Album is the album tag now instead of artist sortname 1009 1010Added 1011 1012- Subclassing infrastructure was moved directly into the bindings, 1013 making the gst-plugin crate deprecated. This involves many API 1014 changes but generally cleans up code and makes it more flexible. 1015 Take a look at the gst-plugins-rs crate for various examples. 1016 1017- Bindings for CapsFeatures and Meta 1018- Bindings for 1019 ParentBufferMeta,VideoMetaandVideoOverlayCompositionMeta` 1020- Bindings for VideoOverlayComposition and VideoOverlayRectangle 1021- Bindings for VideoTimeCode 1022 1023- UniqueFlowCombiner and UniqueAdapter wrappers that make use of the 1024 Rust compile-time mutability checks and expose more API in a safe 1025 way, and as a side-effect implement Sync and Send now 1026 1027- More complete bindings for Allocation Query 1028- pbutils functions for codec descriptions 1029- TagList::iter() for iterating over all tags while getting a single 1030 value per tag. The old ::iter_tag_list() function was renamed to 1031 ::iter_generic() and still provides access to each value for a tag 1032- Bus::iter() and Bus::iter_timed() iterators around the corresponding 1033 ::pop\*() functions 1034 1035- serde serialization of Value can also handle Buffer now 1036 1037- Extensive comments to all examples with explanations 1038- Transmuxing example showing how to use typefind, multiqueue and 1039 dynamic pads 1040- basic-tutorial-12 was ported and added 1041 1042Changed 1043 1044- Rust 1.31 is the minimum supported Rust version now 1045- Update to latest gir code generator and glib bindings 1046 1047- Functions returning e.g. gst::FlowReturn or other “combined” enums 1048 were changed to return split enums like 1049 Result<gst::FlowSuccess, gst::FlowError> to allow usage of the 1050 standard Rust error handling. 1051 1052- MiniObject subclasses are now newtype wrappers around the underlying 1053 GstRc<FooRef> wrapper. This does not change the API in any breaking 1054 way for the current usages, but allows MiniObjects to also be 1055 implemented in other crates and makes sure rustdoc places the 1056 documentation in the right places. 1057 1058- BinExt extension trait was renamed to GstBinExt to prevent conflicts 1059 with gtk::Bin if both are imported 1060 1061- Buffer::from_slice() can’t possible return None 1062 1063- Various clippy warnings 1064 1065 1066GStreamer Rust Plugins 1067 1068Like the GStreamer Rust bindings, the Rust plugins are now officially 1069part of the GStreamer project and are also maintained in the GStreamer 1070GitLab. 1071 1072In the 0.3.x versions this contained infrastructure for writing 1073GStreamer plugins in Rust, and a set of plugins. 1074 1075In git master that infrastructure was moved to the GLib and GStreamer 1076bindings directly, together with many other improvements that were made 1077possible by this, so the gst-plugins-rs repository only contains 1078GStreamer elements now. 1079 1080Elements included are: 1081 1082- Tutorials plugin: identity, rgb2gray and sinesrc with extensive 1083 comments 1084 1085- rsaudioecho, a port of the audiofx element 1086 1087- rsfilesrc, rsfilesink 1088 1089- rsflvdemux, a FLV demuxer. Not feature-equivalent with flvdemux yet 1090 1091- threadshare plugin: ts-appsrc, ts-proxysrc/sink, ts-queue, ts-udpsrc 1092 and ts-tcpclientsrc elements that use a fixed number of threads and 1093 share them between instances. For more background about these 1094 elements see Sebastian’s talk “When adding more threads adds more 1095 problems - Thread-sharing between elements in GStreamer” at the 1096 GStreamer Conference 2017. 1097 1098- rshttpsrc, a HTTP source around the hyper/reqwest Rust libraries. 1099 Not feature-equivalent with souphttpsrc yet. 1100 1101- togglerecord, an element that allows to start/stop recording at any 1102 time and keeps all audio/video streams in sync. 1103 1104- mccparse and mccenc, parsers and encoders for the MCC closed caption 1105 file format. 1106 1107Changes to 0.3.X since 0.3.0 1108 1109- All references were updated from GitHub to freedesktop.org GitLab 1110- Fix various links in the README.md 1111- Link to the correct location for the documentation 1112 1113Changes in git master for 0.4 1114 1115- togglerecord: Switch to parking_lot crate for mutexes/condition 1116 variables for lower overhead 1117- Merge threadshare plugin here 1118- New closedcaption plugin with mccparse and mccenc elements 1119- New identity element for the tutorials plugin 1120 1121- Register plugins statically in tests instead of relying on the 1122 plugin loader to find the shared library in a specific place 1123 1124- Update to the latest API changes in the GLib and GStreamer bindings 1125- Update to the latest versions of all crates 1126 1127 1128Build and Dependencies 1129 1130- The MESON BUILD SYSTEM BUILD IS NOW FEATURE-COMPLETE (*) and it is 1131 now the recommended build system on all platforms and also used by 1132 Cerbero to build GStreamer on all platforms. The Autotools build is 1133 scheduled to be removed in the next cycle. Developers who currently 1134 use gst-uninstalled should move to gst-build. The build option 1135 naming has been cleaned up and made consistent and there are now 1136 feature options to enable/disable plugins and various other features 1137 on a case-by-case basis. (*) with the exception of plugin docs which 1138 will be handled differently in future 1139 1140- Symbol export in libraries is now controlled via explicit exports 1141 using symbol visibility or export defines where supported, to ensure 1142 consistency across all platforms. This also allows libraries to have 1143 exports that vary based on detected platform features and configure 1144 options as is the case with the GStreamer OpenGL integration library 1145 for example. A few symbols that had been exported by accident in 1146 earlier versions may no longer be exported. These symbols will not 1147 have had declarations in any public header files then though and 1148 would not have been usable. 1149 1150- The GStreamer FFmpeg wrapper plugin (gst-libav) now depends on 1151 FFmpeg 4.x and uses the new FFmpeg 4.x API and stopped relying on 1152 ancient API that was removed with the FFmpeg 4.x release. This means 1153 that it is no longer possible to build this module against an older 1154 system-provided FFmpeg 3.x version. Use the internal FFmpeg 4.x copy 1155 instead if you build using autotools, or use gst-libav 1.14.x 1156 instead which targets the FFmpeg 3.x API and _should_ work fine in 1157 combination with a newer GStreamer. It’s difficult for us to support 1158 both old and new FFmpeg APIs at the same time, apologies for any 1159 inconvenience caused. 1160 1161- Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and 1162 nvenc can be built against CUDA Toolkit versions 9 and 10.0 now. The 1163 dynlink interface has been dropped since it’s deprecated in 10.0. 1164 1165- The (optional) OpenCV requirement has been bumped to >= 3.0.0 and 1166 the plugin can also be built against OpenCV 4.x now. 1167 1168- New sctp plugin based on usrsctp (for WebRTC data channels) 1169 1170Cerbero 1171 1172Cerbero is a meta build system used to build GStreamer plus dependencies 1173on platforms where dependencies are not readily available, such as 1174Windows, Android, iOS and macOS. 1175 1176Cerbero has seen a number of improvements: 1177 1178- Cerbero has been ported to Python 3 and requires Python 3.5 or newer 1179 now 1180 1181- Source tarballs are now protected by checksums in the recipes to 1182 guard against download errors and malicious takeover of projects or 1183 websites. In addition, downloads are only allowed via secure 1184 transports now and plain HTTP, FTP and git:// transports are not 1185 allowed anymore. 1186 1187- There is now a new fetch-bootstrap command which downloads sources 1188 required for bootstrapping, with an optional --build-tools-only 1189 argument to match the bootstrap --build-tools-only command. 1190 1191- The bootstrap, build, package and bundle-source commands gained a 1192 new --offline switch that ensures that only sources from the cache 1193 are used and never downloaded via the network. This is useful in 1194 combination with the fetch and fetch-bootstrap commands that acquire 1195 sources ahead of time before any build steps are executed. This 1196 allows more control over the sources used and when sources are 1197 updated, and is particularly useful for build environments that 1198 don’t have network access. 1199 1200- bootstrap --assume-yes will automatically say ‘yes’ to any 1201 interactive prompts during the bootstrap stage, such as those from 1202 apt-get or yum. 1203 1204- bootstrap --system-only will only bootstrap the system without build 1205 tools. 1206 1207- Manifest support: The build manifest can be used in continuous 1208 integration (CI) systems to fixate the Git revision of certain 1209 projects so that all builds of a pipeline are on the same reference. 1210 This is used in GStreamer’s gitlab CI for example. It can also be 1211 used in order to re-produce a specific build. To set a manifest, you 1212 can set manifest = 'my_manifest.xml' in your configuration file, or 1213 use the --manifest command line option. The command line option will 1214 take precedence over anything specific in the configuration file. 1215 1216- The new build-deps command can be used to build only the 1217 dependencies of a recipe, without the recipe itself. 1218 1219- new --list-variants command to list available variants 1220 1221- variants can now be set on the command line via the -v option as a 1222 comma-separated list. This overrides any variants set in any 1223 configuration files. 1224 1225- new qt5, intelmsdk and nvidia variants for enabling Qt5 and hardware 1226 codec support. See the Enabling Optional Features with Variants 1227 section in the Cerbero documentation for more details how to enable 1228 and use these variants. 1229 1230- When building on Windows, Cerbero can now build GStreamer recipes 1231 and core dependencies such as glib with Visual Studio. This is 1232 controlled by the visualstudio variant. Visual Studio 2015, 2017, 1233 and 2019 are supported. Currently, only 64-bit x86 is supported due 1234 to a known bug which will be fixed for the next release. 1235 1236- A new -t / --timestamp command line switch makes commands print 1237 timestamps 1238 1239 1240Platform-specific changes and improvements 1241 1242Android 1243 1244- toolchain: update compiler to clang and NDKr18. NDK r18 removed the 1245 armv5 target and only has Android platforms that target at least 1246 armv7 so the armv5 target is not useful anymore. 1247 1248- The way that GIO modules are named has changed due to upstream GLib 1249 natively adding support for loading static GIO modules. This means 1250 that any GStreamer application using gnutls for SSL/TLS on the 1251 Android or iOS platforms (or any other setup using static libraries) 1252 will fail to link looking for the g_io_module_gnutls_load_static() 1253 function. The new function name is now 1254 g_io_gnutls_load(gpointer data). data can be NULL for a static 1255 library. Look at this commit for the necessary change in the 1256 examples. 1257 1258- various build issues on Android have been fixed. 1259 1260macOS and iOS 1261 1262- various build issues on iOS have been fixed. 1263 1264- the minimum required iOS version is now 9.0. The difference in 1265 adoption between 8.0 and 9.0 is 0.1% and the bump to 9.0 fixes some 1266 build issues. 1267 1268- The way that GIO modules are named has changed due to upstream GLib 1269 natively adding support for loading static GIO modules. This means 1270 that any GStreamer application using gnutls for SSL/TLS on the 1271 Android or iOS platforms (or any other setup using static libraries) 1272 will fail to link looking for the g_io_module_gnutls_load_static() 1273 function. The new function name is now 1274 g_io_gnutls_load(gpointer data). data can be NULL for a static 1275 library. Look at this commit for the necessary change in the 1276 examples. 1277 1278Windows 1279 1280- The webrtcdsp element is shipped again as part of the Windows binary 1281 packages, the build system issue has been resolved. 1282 1283- ‘Inconsistent DLL linkage’ warnings when building with MSVC have 1284 been fixed 1285 1286- Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and 1287 nvenc build on Windows now, also with MSVC and using Meson. 1288 1289- The ksvideosrc camera capture plugin supports 16-bit grayscale video 1290 now 1291 1292- The wasapisrc audio capture element implements loopback recording 1293 from another output device or sink 1294 1295- wasapisink recover from low buffer levels in shared mode and some 1296 exclusive mode fixes 1297 1298- dshowsrc now implements the GstDeviceMonitor interface 1299 1300 1301Contributors 1302 1303Aaron Boxer, Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț, 1304Alex Ashley, Alexey Chernov, Alicia Boya García, Amit Pandya, Andoni 1305Morales Alastruey, Andreas Frisch, Andre McCurdy, Andy Green, Anthony 1306Violo, Antoine Jacoutot, Antonio Ospite, Arun Raghavan, Aurelien Jarno, 1307Aurélien Zanelli, ayaka, Bananahemic, Bastian Köcher, Branko Subasic, 1308Brendan Shanks, Carlos Rafael Giani, Charlie Turner, Christoph Reiter, 1309Corentin Noël, Daeseok Youn, Damian Vicino, Dan Kegel, Daniel Drake, 1310Daniel Klamt, Danilo Spinella, Dardo D Kleiner, David Ing, David 1311Svensson Fors, Devarsh Thakkar, Dimitrios Katsaros, Edward Hervey, 1312Emilio Pozuelo Monfort, Enrique Ocaña González, Erlend Eriksen, Ezequiel 1313Garcia, Fabien Dessenne, Fabrizio Gennari, Florent Thiéry, Francisco 1314Velazquez, Freyr666, Garima Gaur, Gary Bisson, George Kiagiadakis, Georg 1315Lippitsch, Georg Ottinger, Geunsik Lim, Göran Jönsson, Guillaume 1316Desmottes, H1Gdev, Haihao Xiang, Haihua Hu, Harshad Khedkar, Havard 1317Graff, He Junyan, Hoonhee Lee, Hosang Lee, Hyunjun Ko, Ilya Smelykh, 1318Ingo Randolf, Iñigo Huguet, Jakub Adam, James Stevenson, Jan Alexander 1319Steffens, Jan Schmidt, Jerome Laheurte, Jimmy Ohn, Joakim Johansson, 1320Jochen Henneberg, Johan Bjäreholt, John-Mark Bell, John Bassett, John 1321Nikolaides, Jonathan Karlsson, Jonny Lamb, Jordan Petridis, Josep Torra, 1322Joshua M. Doe, Jos van Egmond, Juan Navarro, Julian Bouzas, Jun Xie, 1323Junyan He, Justin Kim, Kai Kang, Kim Tae Soo, Kirill Marinushkin, Kyrylo 1324Polezhaiev, Lars Petter Endresen, Linus Svensson, Louis-Francis 1325Ratté-Boulianne, Lucas Stach, Luis de Bethencourt, Luz Paz, Lyon Wang, 1326Maciej Wolny, Marc-André Lureau, Marc Leeman, Marco Trevisan (Treviño), 1327Marcos Kintschner, Marian Mihailescu, Marinus Schraal, Mark Nauwelaerts, 1328Marouen Ghodhbane, Martin Kelly, Matej Knopp, Mathieu Duponchelle, 1329Matteo Valdina, Matthew Waters, Matthias Fend, memeka, Michael Drake, 1330Michael Gruner, Michael Olbrich, Michael Tretter, Miguel Paris, Mike 1331Wey, Mikhail Fludkov, Naveen Cherukuri, Nicola Murino, Nicolas Dufresne, 1332Niels De Graef, Nirbheek Chauhan, Norbert Wesp, Ognyan Tonchev, Olivier 1333Crête, Omar Akkila, Pat DeSantis, Patricia Muscalu, Patrick Radizi, 1334Patrik Nilsson, Paul Kocialkowski, Per Forlin, Peter Körner, Peter 1335Seiderer, Petr Kulhavy, Philippe Normand, Philippe Renon, Philipp Zabel, 1336Pierre Labastie, Piotr Drąg, Roland Jon, Roman Sivriver, Roman Shpuntov, 1337Rosen Penev, Russel Winder, Sam Gigliotti, Santiago Carot-Nemesio, 1338Sean-Der, Sebastian Dröge, Seungha Yang, Shi Yan, Sjoerd Simons, Snir 1339Sheriber, Song Bing, Soon, Thean Siew, Sreerenj Balachandran, Stefan 1340Ringel, Stephane Cerveau, Stian Selnes, Suhas Nayak, Takeshi Sato, 1341Thiago Santos, Thibault Saunier, Thomas Bluemel, Tianhao Liu, 1342Tim-Philipp Müller, Tobias Ronge, Tomasz Andrzejak, Tomislav Tustonić, 1343U. Artie Eoff, Ulf Olsson, Varunkumar Allagadapa, Víctor Guzmán, Víctor 1344Manuel Jáquez Leal, Vincenzo Bono, Vineeth T M, Vivia Nikolaidou, Wang 1345Fei, wangzq, Whoopie, Wim Taymans, Wind Yuan, Wonchul Lee, Xabier 1346Rodriguez Calvar, Xavier Claessens, Haihao Xiang, Yacine Bandou, 1347Yeongjin Jeong, Yuji Kuwabara, Zeeshan Ali, 1348 1349… and many others who have contributed bug reports, translations, sent 1350suggestions or helped testing. 1351 1352 1353Stable 1.16 branch 1354 1355After the 1.16.0 release there will be several 1.16.x bug-fix releases 1356which will contain bug fixes which have been deemed suitable for a 1357stable branch, but no new features or intrusive changes will be added to 1358a bug-fix release usually. The 1.16.x bug-fix releases will be made from 1359the git 1.16 branch, which is a stable branch. 1360 13611.16.0 1362 13631.16.0 was released on 19 April 2019. 1364 13651.16.1 1366 1367The first 1.16 bug-fix release (1.16.1) was released on 23 September 13682019. 1369 1370This release only contains bugfixes and it _should_ be safe to update 1371from 1.16.0. 1372 1373Highlighted bugfixes in 1.16.1 1374 1375- GStreamer-vaapi: fix green frames and decoding artefacts in some 1376 cases 1377- OpenGL: fix wayland event source burning CPU in certain 1378 circumstances 1379- Memory leak fixes and memory footprint improvements 1380- Performance improvements 1381- Stability and security fixes 1382- Fix enum for GST_MESSAGE_DEVICE_CHANGED which is technically an API 1383 break, but this is only used internally in GStreamer and duplicated 1384 another message enum 1385- hls: Make crypto dependency optional when hls-crypto is auto 1386- player: fix switching back and forth between forward and reverse 1387 playback 1388- decklinkaudiosink: Drop late buffers 1389- openh264enc: Fix compilation with openh264 v2.0 1390- wasapisrc: fix segtotal value being always 2 1391- android: Fix gnutls issue causing a FORTIFY crash on Android Q 1392- windows: Fix two crashes due to cross-CRT free when using MSVC 1393 1394gstreamer core 1395 1396- device: gst_device_create_element() is transfer floating, not 1397 transfer full 1398- filesink, fdsink: respect IOV_MAX for the writev iovec array 1399 (Solaris) 1400- miniobject: free qdata array when the last qdata is removed (reduces 1401 memory footprint) 1402- bin: Fix minor race when adding to a bin 1403- aggregator: Actually handle NEED_DATA return from update_src_caps() 1404- aggregator: Ensure that the source pad is created as a 1405 GstAggregatorPad if no type is given in the pad template 1406- latency: fix custom event leaks 1407- registry: Use plugin directory from the build system for 1408 relocateable Windows builds 1409- message: fix up enum value for GST_MESSAGE_DEVICE_CHANGED 1410- info: Fix deadlock in gst_ring_buffer_logger_log() 1411- downloadbuffer: Check for flush after seek 1412- identity: Non-live upstream have no max latency 1413- identity: Fix the ts-offset property getter 1414- aggregator: Make parsing of explicit sink pad names more robust 1415- bufferpool: Fix the buffer size reset code 1416- fakesink, fakesrc, identity: sync gst_buffer_get_flags_string() with 1417 new flags 1418- multiqueue: never unref queries we do not own 1419- concat: Reset last_stop on FLUSH_STOP too 1420- aggregator: fix flow-return boolean return type mismatch 1421- gstpad: Handle probes that reset the data field 1422- gst: Add support for g_autoptr(GstPromise) 1423- gst-inspect: fix unused-const-variable error in windows 1424- base: Include gstbitwriter.h in the single-include header 1425- Add various Since: 1.16 markers 1426- GST_MESSAGE_DEVICE_CHANGED duplicates GST_MESSAGE_REDIRECT 1427- Targetting wrong meson version 1428- meson: Make get_flex_version.py script executable 1429- meson: Link to objects instead of static helper library 1430- meson: set correct install path for gdb helper 1431- meson: fix warning about configure_file() install kwarg 1432 1433gst-plugins-base 1434 1435- video-info: parse field-order for all interleaved formats 1436- tests: fix up valgrind suppressions for glibc getaddrinfo leaks 1437- meson: Reenable NEON support (in audio resampler) 1438- audio-resampler: Update NEON to handle remainders not multiples of 4 1439- eglimage: Fix memory leak 1440- audiodecoder: Set output caps with negotiated caps to avoid critical 1441 info printed 1442- video-frame: Take TFF flag from the video info if it was set in 1443 there 1444- glcolorconvert: Fix external-oes shader 1445- video-anc: Fix ADF detection when trying to extract data from vanc 1446- gl/wayland: fix wayland event source burning CPU 1447- configure: add used attribute in order to make NEON detection 1448 working with -flto. 1449- audioaggregator: Return a valid rate range from caps query if 1450 downstream supports a whole range 1451- rtspconnection: data-offset increase not set 1452- rtpsconnection: Fix number of n_vectors 1453- video-color: Add compile-time assert for ColorimetryInfo enum 1454- audiodecoder: Fix leak on failed audio gaps 1455- glupload: Keep track of cached EGLImage texture format 1456- playsink: Set ts-offset to text sink. 1457- meson.build: use join_paths() on prefix 1458- compositor: copy frames as-is when possible 1459- compositor: Skip background when a pad obscures it completely 1460- rtspconnection: Start CSeq at 1 (some servers don’t cope well with 1461 seqnum 0) 1462- viv-fb: fix build break for GST_GL_API 1463- gl/tests: fix shader creation tests part 2 1464- gl/tests: fix shader creation tests 1465- wayland: set the event queue also for the xdg_wm_base object 1466- video: Added GI annotation for gstvideoaffinetransformationmeta 1467 apply_matrix 1468- compositor: Remove unneeded left shift for ARGB/AYUV SOURCE operator 1469- Colorimetry fixes 1470- alsasrc: Don’t use driver timestamp if it’s zero 1471- gloverlaycompositor: fix crash if buffer doesn’t have video meta 1472- meson: Don’t try to find gio-unix on Windows 1473- glshader: fix default external-oes shaders 1474- subparse: fix pushing WebVTT cue with no newline at the end 1475- meson: Missing “android” choice in gl_winsys 1476- video test: Keep BE test inline with LE test 1477- id3tag: Correctly validate the year from v1 tags before passing to 1478 GstDateTime 1479- gl/wayland: Don’t prefix wl_shell struct field 1480- eglimage: Add compatibility define for DRM_FORMAT_NV24 1481- Add various Since: 1.16 markers 1482- video-anc: Handle SD formats correctly 1483- Docs: add GL_CFLAGS to GTK_DOC_CFLAGS 1484- GL: using vaapi and showing on glimagesink on wayland loads one core 1485 for 100% on 1.16 1486- GL: external-oes shader places precision qualifier before #extension 1487 (was: androidmedia amcviddec fail after 1.15.90 1.16.0 update) 1488 1489gst-plugins-good 1490 1491- alpha: Fix one_over_kc calculation on arm/aarch64 1492- souphttpsrc: Fix incompatible type build warning 1493- rtpjitterbuffer: limit max-dropout-time to maxint32 1494- rtpjitterbuffer: Clear clock master before unreffing 1495- qtdemux: Use empty-array safe way to cleanup GPtrArray 1496- v4l2: Fix type compatibility issue with glibc 2.30 1497- valgrind: suppress Cond error coming from gnutls and Ignore leaks 1498 caused by shout/sethostent 1499- rtpfunnel: forward correct segment when switching pad 1500- gtkglsink: fix crash when widget is resized after element 1501 destruction 1502- jpegdec: Don’t dereference NULL input state if we have no caps in 1503 TIME segments 1504- rtp: opuspay: fix memory leak in gst_rtp_opus_pay_setcaps 1505- v4l2videodec: return right type for drain. 1506- rtpssrcdemux: Avoid taking streamlock out-of-band 1507- Support v4l2src buffer orphaning 1508- splitmuxsink: Only set running time on finalizing sink element when 1509 in async-finalize mode 1510- rtpsession: Always keep at least one NACK on early RTCP 1511- rtspsrc: do not try to send EOS with invalid seqnum 1512- rtpsession: Call on-new-ssrc earlier 1513- rtprawdepay: Don’t get rid of the buffer pool on FLUSH_STOP 1514- rtpbin: Free storage when freeing session 1515- scaletempo: Advertise interleaved layout in caps templates 1516- Support v4l2src buffer orphaning 1517 1518gst-plugins-bad 1519 1520- hls: Make crypto dependency optional when hls-crypto is auto 1521- player: fix switching back and forth between forward and reverse 1522 playback 1523- decklinkaudiosink: Drop late buffers 1524- srt: Add stats property, include sender-side statistics and fix a 1525 crash 1526- dshowsrcwrapper: fix regression on device selection 1527- tsdemux: Limit the maximum PES payload size 1528- wayland: Define libdrm_dep in meson.build to fix meson configure 1529 error when kms is disabled 1530- sctp: Fix crash on free() when using the MSVC binaries 1531- webrtc: Fix signals documentation 1532- h264parse: don’t critical on VUI parameters > 2^31 1533- rtmp: Fix crash inside free() with MSVC on Windows 1534- iqa: fix leak of map_meta.data 1535- d3dvideosink: Fix crash on WinProc handler 1536- amc: Fix crash when a sync_meta survives its sink 1537- pitch: Fix race between putSamples() and setting soundtouch 1538 parameters 1539- webrtc: fix type of max-retransmits, make it work 1540- mxfdemux: Also allow picture essence element type 0x05 for VC-3 1541- wasapi: fix symbol redefinition build error 1542- decklinkvideosrc: Retrieve mode of the ancillary data from the frame 1543- decklinkaudiosrc/decklinkvideosrc: Do nothing in 1544 BaseSrc::negotiate() and… 1545- adaptivedemux: do not retry downloads during shutdown. 1546- webrtcbin: fix GInetAddress leak 1547- dtls: fix dtls connection object leak 1548- siren: fix a global buffer overflow spotted by asan 1549- kmssink: Fix implicit declaration build error 1550- Fix -Werror=return-type error in configure. 1551- aiff: Fix infinite loop in header parsing. 1552- nvdec: Fix possible frame drop on EOS 1553- srtserversrc: yields malformed rtp payloads 1554- srtsink: Fix crash in case no URI 1555- dtlsagent: Fix leaked dtlscertificate 1556- meson: bluez: Early terminate configure on Windows 1557- decklink: Correctly ensure >=16 byte alignment for the buffers we 1558 allocate 1559- webrtcbin: fix DTLS when receivebin is set to DROP 1560- zbar: Include running-time, stream-time and duration in the messages 1561- uvch264src: Make sure we set our segment 1562- avwait: Allow start and end timecode to be set back to NULL 1563- avwait: Don’t print warnings for every buffer passed 1564- hls/meson: fix dependency logic 1565- Waylandsink gnome shell workaround 1566- avwait: Allow setting start timecode after end timecode; protect 1567 propeties with mutex 1568- wayland/wlbuffer: just return if used_by_compositor is true when 1569 attach 1570- proxy: Set SOURCE flag on the source and SINK flag on the sink 1571- ivfparse: Check the data size against IVF_FRAME_HEADER_SIZE 1572- webrtc: Add various Since markers to new types after 1.14.0 1573- msdk: fix the typo in debug category 1574- dtlsagent: Do not overwrite openssl locking callbacks 1575- meson: Fix typo in gsm header file name 1576- srt: handle races in state change 1577- webrtc: Add g_autoptr() support for public types 1578- openh264enc: Fix compilation with openh264 v2.0 1579- meson: Allow CUDA_PATH fallback on linux 1580- meson: fix build with opencv=enabled and opencv4. Fixes #964 1581- meson: Add support for the colormanagement plugin 1582- autotools: gstsctp: set LDFLAGS 1583- nvenc/nvdec: Add NVIDIA SDK headers to noinst_HEADERS 1584- h264parse: Fix typo when setting multiview mode and flags 1585- Add various Since: 1.16 markers 1586- opencv: allow compilation against 4.1.x 1587- Backport of some minor srt commits without MR into 1.16 1588- meson: fix build with opencv=enabled and opencv4 1589- wasapisrc: fix segtotal value being always 2 due to an unused 1590 variable 1591- meson: colormanagement missing 1592- androidmedia amcviddec fail after 1.15.90 1.16.0 update 1593 1594gst-plugins-ugly 1595 1596- meson: Always require the gmodule dependency 1597 1598gst-libav 1599 1600- docs: don’t include the type hierarchy, fixing build with gtk-doc 1601 1.30 1602- avvidenc: Correctly signal interlaced input to ffmpeg when the input 1603 caps are interlaced 1604- autotools: add bcrypt to win32 libs 1605- gstav: Use libavcodec util function for version check 1606- API documentation fails to build with gtk-doc 1.30 1607 1608gst-rtsp-server 1609 1610- rtsp-client: RTP Info must exist in PLAY response 1611- onvif-media: fix “void function returning a value” compiler warning 1612- Add various Since: 1.16 markers 1613 1614gstreamer-vaapi 1615 1616- fix egl context leak and display creation race 1617- pluginutil: Remove Mesa from drivers white list 1618- Classify vaapidecodebin as a hardware decoder 1619- Fix two leak 1620- vaapivideomemory: demote error message to info 1621- encoder: vp8,vp9: reset frame_counter when input frame’s format 1622 changes 1623- encoder: mpeg2: No packed header for SPS and PPS 1624- decoder: vp9: clear parser pointer after release 1625- encoder: Fixes deadlock in change state function 1626- encoder: h265: reset num_ref_idx_l1_active_minus1 when low delay B. 1627- encoder: not call ensure_num_slices inside g_assert() 1628- encoder: continue if roi meta is NULL 1629- decoder: vp9: Set chroma_ ype by VP9 bit_depth 1630- vaapipostproc: don’t do any color conversion when GL_TEXTURE_UPLOAD 1631- libs: surface: fix double free when dmabuf export fails 1632- h264 colors and artifacts upon upgrade to GStreamer Core Library 1633 version 1.15.90 1634 1635gst-editing-services 1636 1637- element: Properly handle the fact that pasting can return NULL 1638- Add various missing Since markers 1639- launch: Fix caps restriction short names 1640- python: Avoid warning about using deprecated methods 1641- video-transition: When using non crossfade effect use ‘over’ 1642 operations 1643- meson: Generate a pkgconfig file for the GES plugin 1644 1645gst-devtools 1646 1647- launcher: testsuites: skip systemclock stress tests 1648- validate: fix build on macOS 1649 1650gst-build 1651 1652- Update win flex bison binaries 1653- Update the flexmeson windows binary version 1654- Don’t allow people to run meson inside the uninstalled env 1655 1656Cerbero build tool and packaging changes in 1.16.1 1657 1658- cerbero: Add enums for Fedora 30, Fedora 31 and Debian bullseye 1659- gnutls.recipe: Fix crash when running on Android Q 1660- recipes: Upgrade openssl to 1.1.1c 1661- Fix some typos 1662- add support for vs build tools 2019, fixes #183 1663- android: Adjust gstreamer-1.0.mk for NDK r20 1664- Fix license enums 1665- bootstrap: Fix dnf usage on CentOS 1666- Make _add_system_libs reentrant 1667- meson.recipe: Fix setting of bitcode compiler options 1668- cerbero: support Ubuntu disco dingo 1669- cerbero: Set utf-8 to execution character set also on MSVC 1670- git: simplify the reset of the source branch. 1671- FORTIFY: %n not allowed on Android Q 1672- Fails to build if there’s no license file for the given license 1673 (GPL/LGPL without Plus, Proprietary, …) 1674 1675Contributors to 1.16.1 1676 1677Aaron Boxer, Adam Duskett, Alicia Boya García, Andoni Morales Alastruey, 1678Antonio Ospite, Arun Raghavan, Askar Safin, A. Wilcox, Charlie Turner, 1679Christoph Reiter, Damian Hobson-Garcia, Daniel Klamt, Danny Smith, David 1680Gunzinger, David Ing, David Svensson Fors, Doug Nazar, Edward Hervey, 1681Eike Hein, Fabrice Bellet, Fernando Herrrera, Georg Lippitsch, Göran 1682Jönsson, Guillaume Desmottes, Haihao Xiang, Haihua Hu, Håvard Graff, Hou 1683Qi, Ignacio Casal Quinteiro, Ilya Smelykh, Jan Schmidt, Javier Celaya, 1684Jim Mason, Jonas Larsson, Jordan Petridis, Jose Antonio Santos Cadenas, 1685Juan Navarro, Knut Andre Tidemann, Kristofer Björkström, Lucas Stach, 1686Marco Felsch, Marcos Kintschner, Mark Nauwelaerts, Martin Liska, Martin 1687Theriault, Mathieu Duponchelle, Matthew Waters, Michael Olbrich, Mike 1688Gorse, Nicola Murino, Nicolas Dufresne, Niels De Graef, Niklas 1689Hambüchen, Nirbheek Chauhan, Olivier Crête, Philippe Normand, Ross 1690Burton, Sebastian Dröge, Seungha Yang, Song Bing, Thiago Santos, 1691Thibault Saunier, Thomas Coldrick, Tim-Philipp Müller, Víctor Manuel 1692Jáquez Leal, Vivia Nikolaidou, Xavier Claessens, Yeongjin Jeong, 1693 1694… and many others who have contributed bug reports, translations, sent 1695suggestions or helped testing. Thank you all! 1696 1697List of merge requests and issues fixed in 1.16.1 1698 1699- List of Merge Requests applied in 1.16 1700- List of Issues fixed in 1.16.1 1701 17021.16.2 1703 1704The second 1.16 bug-fix release (1.16.2) was released on 03 December 17052019. 1706 1707This release only contains bugfixes and it _should_ be safe to update 1708from 1.16.1. 1709 1710Highlighted bugfixes in 1.16.2 1711 1712- Interlaced video scaling fixes 1713- CineForm video support in AVI 1714- audioresample: avoid glitches due to rounding errors after changing 1715 rate 1716- Command line tool output printing improvements on Windows 1717- various performance improvements, memory leak fixes and security 1718 fixes 1719- VP9 decoding fixes 1720- avfvideosrc: Explicitly request video permission on macOS 10.14+ 1721- wasapi: bug fixes and stability improvements 1722- webrtc-audio-processing: fix segmentation fault on 32-bit windows 1723- tsdemux: improved handling of certain discontinuities 1724- vaapi h265 decoder: wait for I-frame before trying to decode 1725 1726gstreamer 1727 1728- gst-launch: Fix ugly stdout on Windows 1729- tee: Make sure to actually deactivate pads that are released 1730- bin: Drop need-context messages without source instead of crashing 1731- gst: Don’t pass miniobjects to GST_DEBUG_OBJECT() and similar macros 1732- tracers: Don’t leak temporary GstStructure 1733 1734gst-plugins-base 1735 1736- xvimagepool: Update size, stride, and offset with allocated XvImage 1737- video-converter: Fix RGB-XYZ-RGB conversion 1738- audiorate: Update next_offset on rate change 1739- audioringbuffer: Reset reorder flag before check 1740- audio-buffer: Don’t fail to map buffers with zero samples 1741- videorate: Fix max-duplication-time handling 1742- gl/gbm: ensure we call the resize callback before attempting to draw 1743- video-converter: Various fixes for interlaced scaling 1744- gstrtspconnection: messages_bytes not decreased 1745- check: Don’t use real audio devices for tests 1746- riff: add CineForm mapping 1747- glfilters: Don’t use static variables for storing per-element state 1748- glupload: Add VideoMetas and GLSyncMeta to the raw uploaded buffers 1749- streamsynchronizer: avoid pad release race during logging. 1750- gst-play: Use gst_print* to avoid broken stdout string on Windows 1751 1752gst-plugins-good 1753 1754- vp9dec: Fix broken 4:4:4 8bits decoding 1755- rtpsession: add locking for clear-pt-map 1756- rtpL16depay: don’t crash if data is not modulo channels*width 1757- wavparse: Fix push mode ignoring audio with a size smaller than 1758 segment buffer 1759- wavparse: Fix push mode ignoring last audio payload chunk 1760- aacparse: fix wrong offset of the channel number in adts header 1761- jpegdec: Fix incorrect logic in EOI tag detection 1762- videocrop: Also update the coordinate when in-place 1763- jpegdec: don’t overwrite the last valid line 1764- vpx: Error out if enabled and no features found 1765- v4l2videodec: ensure pool exists before orphaning it 1766- v4l2videoenc: fix type conversion errors 1767- v4l2bufferpool: Queue number of allocated buffers to capture 1768- v4l2object: fix mpegversion number typo 1769- v4l2object: Work around bad TRY_FMT colorimetry implementations 1770 1771gst-plugins-bad 1772 1773- avfvideosrc: Explicitly request video permission on macOS 10.14+ 1774- wasapi: Various fixes and a workaround for a specific driver bug 1775- wasapi: Move to CoInitializeEx for COM initialization 1776- wasapi: Fix runtime/build warnings 1777- waylandsink: Commit the parent after creating subsurface 1778- msdkdec: fix surface leak in msdkdec_handle_frame 1779- tsmux: Fix copying of buffer region 1780- tsdemux: Handle continuity mismatch in more cases 1781- tsdemux: Always issue a DTS even when it’s equal to PTS 1782- openexr: Fix build with OpenEXR 2.4 (and also OpenEXR 2.2 on Ubuntu 1783 18.04) 1784- ccextractor: Always forward all sticky events to the caption pad 1785- pnmdec: Return early on ::finish() if we have no actual data to 1786 parse 1787- ass: avoid infinite unref loop with bad data 1788- fluidsynth: add sf3 to soundfont search path 1789- webrtcdsp/webrtcechoprobe segmentation fault on windows (1.16.0 x86) 1790 1791gst-libav 1792 1793- avvidenc: Fix error propagation 1794- avdemux: Fix segmentation fault if long_name is NULL 1795- avviddec: Fix huge leak caused by circular reference 1796- avviddec: Enforce allocate new AVFrame per input frame 1797- avdec_mpeg2video (and probably more): Huge memory leak in git master 1798 1799gst-rtsp-server 1800 1801- rtsp-media: Use lock in gst_rtsp_media_is_receive_only 1802- rtsp-client: RTP Info when completed_sender 1803- rtsp-client: fix location uri-format by getting uri directly from 1804 context instead 1805 1806gstreamer-vaapi 1807 1808- meson build: halt configuration if no renderer API 1809- libs: decoder: h265: skip all pictures prior the first I-frame 1810- libs: window: x11: Avoid usage of deprecated API 1811 1812gst-editing-services 1813 1814- Initialize debug categories before usage 1815 1816gst-build 1817 1818- gst-env: Use locally built GStreamer utility programs 1819 1820Cerbero build tool and packaging changes in 1.16.2 1821 1822General 1823 1824- openssl: Update to 1.1.1d 1825- Updated ffmpeg, expat, flac, freetype, croco, ogg, xml2, mpg123, 1826 openjpeg, opus, pixman, speex, tiff recipes 1827- Fix setting of git credentials in local source repos 1828 1829Windows 1830 1831- webrtc-audio-processing: fix segmentation fault on 32-bit windows 1832 with webrtcdsp/webrtcechoprobe elemens 1833- vpx plugin has no features when built with Visual Studio 2019 1834- libvpx: Add support for Visual Studio 2019 1835- mingw-runtime.recipe: Correctly package pkg-config in the MSI 1836- GIO doesn’t load any modules on Windows with MSVC, which breaks TLS 1837 support since glib-networking’s giognutls module isn’t loaded 1838- Make the instructions for running Cerbero the same on all platforms 1839 1840macOS + iOS 1841 1842- Add support for macOS 10.15 Catalina 1843- Updates for Xcode 11 1844- macos/ios: expose objc++ compilers in env variables 1845- srt.recipe: Fix crash in constructor on iOS 1846- osx-framework.recipe: Dynamically generate the list of libraries and 1847 ship pkg-config 1848- macos: add -mmacosx-version-min for framework 1849- gstreamer-1.0-osx-framework.recipe contains an outdated hard-coded 1850 list of libraries 1851- We need to ship pkg-config with macOS 1852 1853Linux 1854 1855- Fix filesprovider.find_shlib_regex when a lib_suffix is used in the 1856 cerbero config file 1857 1858Contributors to 1.16.2 1859 1860Adam Nilsson, Amr Mahdi, Angus Ao, Charlie Turner, Edward Hervey, Fabian 1861Greffrath, Fuwei Tang, Havard Graff, Hu Qian, James Cowgill, Jan 1862Alexander Steffens (heftig), Jeffy Chen, Jeremy Lempereur, Joakim 1863Johansson, Jochen Henneberg, Julien Isorce, Kevin Joly, Kristofer 1864Bjorkstrom, Kyrylo Polezhaiev, Matthew Waters, Michael Olbrich, Muhammet 1865Ilendemli, Nicolas Dufresne, Nirbheek Chauhan, Pablo Marcos Oltra, Roman 1866Shpuntov, Ruben Gonzalez, Scott Kanowitz, Sebastian Dröge, Seungha Yang, 1867Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, Vivia 1868Nikolaidou, 1869 1870… and many others who have contributed bug reports, translations, sent 1871suggestions or helped testing. Thank you all! 1872 1873List of merge requests and issues fixed in 1.16.2 1874 1875- List of Merge Requests applied in 1.16 1876- List of Issues fixed in 1.16.2 1877 1878 1879Known Issues 1880 1881- possibly breaking/incompatible changes to properties of wrapped 1882 FFmpeg decoders and encoders (see above). 1883 1884- The way that GIO modules are named has changed due to upstream GLib 1885 natively adding support for loading static GIO modules. This means 1886 that any GStreamer application using gnutls for SSL/TLS on the 1887 Android or iOS platforms (or any other setup using static libraries) 1888 will fail to link looking for the g_io_module_gnutls_load_static() 1889 function. The new function name is now 1890 g_io_gnutls_load(gpointer data). See Android/iOS sections above for 1891 further details. 1892 1893 1894Schedule for 1.18 1895 1896Our next major feature release will be 1.18, and 1.17 will be the 1897unstable development version leading up to the stable 1.18 release. The 1898development of 1.17/1.18 will happen in the git master branch. 1899 1900The plan for the 1.18 development cycle is yet to be confirmed, but it 1901is now expected that feature freeze will take place in December 2019, 1902with the first 1.18 stable release ready in late January or February. 1903 19041.18 will be backwards-compatible to the stable 1.16, 1.14, 1.12, 1.10, 19051.8, 1.6, 1.4, 1.2 and 1.0 release series. 1906 1907------------------------------------------------------------------------ 1908 1909_These release notes have been prepared by Tim-Philipp Müller with_ 1910_contributions from Sebastian Dröge, Guillaume Desmottes, Matthew 1911Waters, _ _Thibault Saunier, and Víctor Manuel Jáquez Leal._ 1912 1913_License: CC BY-SA 4.0_ 1914