Blame NEWS

Packit 2febb0
Packit 2febb0
Packit 2febb0
GSTREAMER 1.14 RELEASE NOTES
Packit 2febb0
Packit 2febb0
Packit 2febb0
GStreamer 1.14.0 was originally released on 19 March 2018.
Packit 2febb0
Packit 2febb0
The latest bug-fix release in the 1.14 series is 1.14.1 and was released
Packit 2febb0
on 17 May 2018.
Packit 2febb0
Packit 2febb0
See https://gstreamer.freedesktop.org/releases/1.14/ for the latest
Packit 2febb0
version of this document.
Packit 2febb0
Packit 2febb0
_Last updated: Thursday 17 May 2018, 12:00 UTC (log)_
Packit 2febb0
Packit 2febb0
Packit 2febb0
Introduction
Packit 2febb0
Packit 2febb0
The GStreamer team is proud to announce a new major feature release in
Packit 2febb0
the stable 1.x API series of your favourite cross-platform multimedia
Packit 2febb0
framework!
Packit 2febb0
Packit 2febb0
As always, this release is again packed with new features, bug fixes and
Packit 2febb0
other improvements.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Highlights
Packit 2febb0
Packit 2febb0
-   WebRTC support: real-time audio/video streaming to and from web
Packit 2febb0
    browsers
Packit 2febb0
Packit 2febb0
-   Experimental support for the next-gen royalty-free AV1 video codec
Packit 2febb0
Packit 2febb0
-   Video4Linux: encoding support, stable element names and faster
Packit 2febb0
    device probing
Packit 2febb0
Packit 2febb0
-   Support for the Secure Reliable Transport (SRT) video streaming
Packit 2febb0
    protocol
Packit 2febb0
Packit 2febb0
-   RTP Forward Error Correction (FEC) support (ULPFEC)
Packit 2febb0
Packit 2febb0
-   RTSP 2.0 support in rtspsrc and gst-rtsp-server
Packit 2febb0
Packit 2febb0
-   ONVIF audio backchannel support in gst-rtsp-server and rtspsrc
Packit 2febb0
Packit 2febb0
-   playbin3 gapless playback and pre-buffering support
Packit 2febb0
Packit 2febb0
-   tee, our stream splitter/duplication element, now does allocation
Packit 2febb0
    query aggregation which is important for efficient data handling and
Packit 2febb0
    zero-copy
Packit 2febb0
Packit 2febb0
-   QuickTime muxer has a new prefill recording mode that allows file
Packit 2febb0
    import in Adobe Premiere and FinalCut Pro while the file is still
Packit 2febb0
    being written.
Packit 2febb0
Packit 2febb0
-   rtpjitterbuffer fast-start mode and timestamp offset adjustment
Packit 2febb0
    smoothing
Packit 2febb0
Packit 2febb0
-   souphttpsrc connection sharing, which allows for connection reuse,
Packit 2febb0
    cookie sharing, etc.
Packit 2febb0
Packit 2febb0
-   nvdec: new plugin for hardware-accelerated video decoding using the
Packit 2febb0
    NVIDIA NVDEC API
Packit 2febb0
Packit 2febb0
-   Adaptive DASH trick play support
Packit 2febb0
Packit 2febb0
-   ipcpipeline: new plugin that allows splitting a pipeline across
Packit 2febb0
    multiple processes
Packit 2febb0
Packit 2febb0
-   Major gobject-introspection annotation improvements for large parts
Packit 2febb0
    of the library API
Packit 2febb0
Packit 2febb0
-   GStreamer C# bindings have been revived and seen many updates and
Packit 2febb0
    fixes
Packit 2febb0
Packit 2febb0
-   The externally maintained GStreamer Rust bindings had many usability
Packit 2febb0
    improvements and cover most of the API now. Coinciding with the 1.14
Packit 2febb0
    release, a new release with the 1.14 API additions is happening.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Major new features and changes
Packit 2febb0
Packit 2febb0
WebRTC support
Packit 2febb0
Packit 2febb0
There is now basic support for WebRTC in GStreamer in form of a new
Packit 2febb0
webrtcbin element and a webrtc support library. This allows you to build
Packit 2febb0
applications that set up connections with and stream to and from other
Packit 2febb0
WebRTC peers, whilst leveraging all of the usual GStreamer features such
Packit 2febb0
as hardware-accelerated encoding and decoding, OpenGL integration,
Packit 2febb0
zero-copy and embedded platform support. And it's easy to build and
Packit 2febb0
integrate into your application too!
Packit 2febb0
Packit 2febb0
WebRTC enables real-time communication of audio, video and data with web
Packit 2febb0
browsers and native apps, and it is supported or about to be support by
Packit 2febb0
recent versions of all major browsers and operating systems.
Packit 2febb0
Packit 2febb0
GStreamer's new WebRTC implementation uses libnice for Interactive
Packit 2febb0
Connectivity Establishment (ICE) to figure out the best way to
Packit 2febb0
communicate with other peers, punch holes into firewalls, and traverse
Packit 2febb0
NATs.
Packit 2febb0
Packit 2febb0
The implementation is not complete, but all the basics are there, and
Packit 2febb0
the code sticks fairly close to the PeerConnection API. Where
Packit 2febb0
functionality is missing it should be fairly obvious where it needs to
Packit 2febb0
go.
Packit 2febb0
Packit 2febb0
For more details, background and example code, check out Nirbheek's blog
Packit 2febb0
post _GStreamer has grown a WebRTC implementation_, as well as Matthew's
Packit 2febb0
_GStreamer WebRTC_ talk from last year's GStreamer Conference in Prague.
Packit 2febb0
Packit 2febb0
New Elements
Packit 2febb0
Packit 2febb0
-   webrtcbin handles the transport aspects of webrtc connections (see
Packit 2febb0
    WebRTC section above for more details)
Packit 2febb0
Packit 2febb0
-   New srtsink and srtsrc elements for the Secure Reliable Transport
Packit 2febb0
    (SRT) video streaming protocol, which aims to be easy to use whilst
Packit 2febb0
    striking a new balance between reliability and latency for low
Packit 2febb0
    latency video streaming use cases. More details about SRT and the
Packit 2febb0
    implementation in GStreamer in Olivier's blog post _SRT in
Packit 2febb0
    GStreamer_.
Packit 2febb0
Packit 2febb0
-   av1enc and av1dec elements providing experimental support for the
Packit 2febb0
    next-generation royalty free video AV1 codec, alongside Matroska
Packit 2febb0
    support for it.
Packit 2febb0
Packit 2febb0
-   hlssink2 is a rewrite of the existing hlssink element, but unlike
Packit 2febb0
    its predecessor hlssink2 takes elementary streams as input and
Packit 2febb0
    handles the muxing to MPEG-TS internally. It also leverages
Packit 2febb0
    splitmuxsink internally to do the splitting. This allows more
Packit 2febb0
    control over the chunk splitting and sizing process and relies less
Packit 2febb0
    on the co-operation of an upstream muxer. Different to the old
Packit 2febb0
    hlssink it also works with pre-encoded streams and does not require
Packit 2febb0
    close interaction with an upstream encoder element.
Packit 2febb0
Packit 2febb0
-   audiolatency is a new element for measuring audio latency end-to-end
Packit 2febb0
    and is useful to measure roundtrip latency including both the
Packit 2febb0
    GStreamer-internal latency as well as latency added by external
Packit 2febb0
    components or circuits.
Packit 2febb0
Packit 2febb0
-   'fakevideosink is basically a null sink for video data and very
Packit 2febb0
    similar to fakesink, only that it will answer allocation queries and
Packit 2febb0
    will advertise support for various video-specific things such
Packit 2febb0
    GstVideoMeta, GstVideoCropMeta and GstVideoOverlayCompositionMeta
Packit 2febb0
    like a normal video sink would. This is useful for throughput
Packit 2febb0
    testing and testing the zero-copy path when creating a new pipeline.
Packit 2febb0
Packit 2febb0
-   ipcpipeline: new plugin that allows the splitting of a pipeline into
Packit 2febb0
    multiple processes. Usually a GStreamer pipeline runs in a single
Packit 2febb0
    process and parallelism is achieved by distributing workloads using
Packit 2febb0
    multiple threads. This means that all elements in the pipeline have
Packit 2febb0
    access to all the other elements' memory space however, including
Packit 2febb0
    that of any libraries used. For security reasons one might therefore
Packit 2febb0
    want to put sensitive parts of a pipeline such as DRM and decryption
Packit 2febb0
    handling into a separate process to isolate it from the rest of the
Packit 2febb0
    pipeline. This can now be achieved with the new ipcpipeline plugin.
Packit 2febb0
    Check out George's blog post _ipcpipeline: Splitting a GStreamer
Packit 2febb0
    pipeline into multiple processes_ or his lightning talk from last
Packit 2febb0
    year's GStreamer Conference in Prague for all the gory details.
Packit 2febb0
Packit 2febb0
-   proxysink and proxysrc are new elements to pass data from one
Packit 2febb0
    pipeline to another within the same process, very similar to the
Packit 2febb0
    existing inter elements, but not limited to raw audio and video
Packit 2febb0
    data. These new proxy elements are very special in how they work
Packit 2febb0
    under the hood, which makes them extremely powerful, but also
Packit 2febb0
    dangerous if not used with care. The reason for this is that it's
Packit 2febb0
    not just data that's passed from sink to src, but these elements
Packit 2febb0
    basically establish a two-way wormhole that passes through queries
Packit 2febb0
    and events in both directions, which means caps negotiation and
Packit 2febb0
    allocation query driven zero-copy can work through this wormhole.
Packit 2febb0
    There are scheduling considerations as well: proxysink forwards
Packit 2febb0
    everything into the proxysrc pipeline directly from the proxysink
Packit 2febb0
    streaming thread. There is a queue element inside proxysrc to
Packit 2febb0
    decouple the source thread from the sink thread, but that queue is
Packit 2febb0
    not unlimited, so it is entirely possible that the proxysink
Packit 2febb0
    pipeline thread gets stuck in the proxysrc pipeline, e.g. when that
Packit 2febb0
    pipeline is paused or stops consuming data for some other reason.
Packit 2febb0
    This means that one should always shut down down the proxysrc
Packit 2febb0
    pipeline before shutting down the proxysink pipeline, for example.
Packit 2febb0
    Or at least take care when shutting down pipelines. Usually this is
Packit 2febb0
    not a problem though, especially not in live pipelines. For more
Packit 2febb0
    information see Nirbheek's blog post _Decoupling GStreamer
Packit 2febb0
    Pipelines_, and also check out out the new ipcpipeline plugin for
Packit 2febb0
    sending data from one process to another process (see above).
Packit 2febb0
Packit 2febb0
-   lcms is a new LCMS-based ICC color profile correction element
Packit 2febb0
Packit 2febb0
-   openmptdec is a new OpenMPT-based decoder for module music formats,
Packit 2febb0
    such as S3M, MOD, XM, IT. It is built on top of a new
Packit 2febb0
    GstNonstreamAudioDecoder base class which aims to unify handling of
Packit 2febb0
    files which do not operate a streaming model. The wildmidi plugin
Packit 2febb0
    has also been revived and is also implemented on top of this new
Packit 2febb0
    base class.
Packit 2febb0
Packit 2febb0
-   The curl plugin has gained a new curlhttpsrc element, which is
Packit 2febb0
    useful for testing HTTP protocol version 2.0 amongst other things.
Packit 2febb0
Packit 2febb0
-   The msdk plugin has gained a MPEG-2 video decoder(msdkmpeg2dec), VP8
Packit 2febb0
    decoder(msdkvp8dec) and a VC1/WMV decoder(msdkvc1dec)
Packit 2febb0
Packit 2febb0
Noteworthy new API
Packit 2febb0
Packit 2febb0
-   GstPromise provides future/promise-like functionality. This is used
Packit 2febb0
    in the GStreamer WebRTC implementation.
Packit 2febb0
Packit 2febb0
-   GstReferenceTimestampMeta is a new meta that allows you to attach
Packit 2febb0
    additional reference timestamps to a buffer. These timestamps don't
Packit 2febb0
    have to relate to the pipeline clock in any way. Examples of this
Packit 2febb0
    could be an NTP timestamp when the media was captured, a frame
Packit 2febb0
    counter on the capture side or the (local) UNIX timestamp when the
Packit 2febb0
    media was captured. The decklink elements make use of this.
Packit 2febb0
Packit 2febb0
-   GstVideoRegionOfInterestMeta: it's now possible to attach generic
Packit 2febb0
    free-form element-specific parameters to a region of interest meta,
Packit 2febb0
    for example to tell a downstream encoder to use certain codec
Packit 2febb0
    parameters for a certain region.
Packit 2febb0
Packit 2febb0
-   gst_bus_get_pollfd can be used to obtain a file descriptor for the
Packit 2febb0
    bus that can be poll()-ed on for new messages. This is useful for
Packit 2febb0
    integration with non-GLib event loops.
Packit 2febb0
Packit 2febb0
-   gst_get_main_executable_path() can be used by wrapper plugins that
Packit 2febb0
    need to find things in the directory where the application
Packit 2febb0
    executable is located. In the same vein,
Packit 2febb0
    GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_RELATIVE_TO_EXE can be used to
Packit 2febb0
    signal that plugin dependency paths are relative to the main
Packit 2febb0
    executable.
Packit 2febb0
Packit 2febb0
-   pad templates can be told about the GType of the pad subclass of the
Packit 2febb0
    pad via newly-added GstPadTemplate API API or the
Packit 2febb0
    gst_element_class_add_static_pad_template_with_gtype() convenience
Packit 2febb0
    function. gst-inspect-1.0 will use this information to print pad
Packit 2febb0
    properties.
Packit 2febb0
Packit 2febb0
-   new convenience functions to iterate over element pads without using
Packit 2febb0
    the GstIterator API: gst_element_foreach_pad(),
Packit 2febb0
    gst_element_foreach_src_pad(), and gst_element_foreach_sink_pad().
Packit 2febb0
Packit 2febb0
-   GstBaseSrc and appsrc have gained support for buffer lists:
Packit 2febb0
    GstBaseSrc subclasses can use gst_base_src_submit_buffer_list(), and
Packit 2febb0
    applications can use gst_app_src_push_buffer_list() to push a buffer
Packit 2febb0
    list into appsrc.
Packit 2febb0
Packit 2febb0
-   The GstHarness unit test harness has a couple of new convenience
Packit 2febb0
    functions to retrieve all pending data in the harness in form of a
Packit 2febb0
    single chunk of memory.
Packit 2febb0
Packit 2febb0
-   GstAudioStreamAlign is a new helper object for audio elements that
Packit 2febb0
    handles discontinuity detection and sample alignment. It will align
Packit 2febb0
    samples after the previous buffer's samples, but keep track of the
Packit 2febb0
    divergence between buffer timestamps and sample position (jitter).
Packit 2febb0
    If it exceeds a configurable threshold the alignment will be reset.
Packit 2febb0
    This simply factors out code that was duplicated in a number of
Packit 2febb0
    elements into a common helper API.
Packit 2febb0
Packit 2febb0
-   The GstVideoEncoder base class implements Quality of Service (QoS)
Packit 2febb0
    now. This is disabled by default and must be opted in by setting the
Packit 2febb0
    "qos" property, which will make the base class gather statistics
Packit 2febb0
    about the real-time performance of the pipeline from downstream
Packit 2febb0
    elements (usually sinks that sync the pipeline clock). Subclasses
Packit 2febb0
    can then make use of this by checking whether input frames are late
Packit 2febb0
    already using gst_video_encoder_get_max_encode_time() If late, they
Packit 2febb0
    can just drop them and skip encoding in the hope that the pipeline
Packit 2febb0
    will catch up.
Packit 2febb0
Packit 2febb0
-   The GstVideoOverlay interface gained a few helper functions for
Packit 2febb0
    installing and handling a "render-rectangle" property on elements
Packit 2febb0
    that implement this interface, so that this functionality can also
Packit 2febb0
    be used from the command line for testing and debugging purposes.
Packit 2febb0
    The property wasn't added to the interface itself as that would
Packit 2febb0
    require all implementors to provide it which would not be
Packit 2febb0
    backwards-compatible.
Packit 2febb0
Packit 2febb0
-   A new base class, GstNonstreamAudioDecoder for non-stream audio
Packit 2febb0
    decoders was added to gst-plugins-bad. This base-class is meant to
Packit 2febb0
    be used for audio decoders that require the whole stream to be
Packit 2febb0
    loaded first before decoding can start. Examples of this are module
Packit 2febb0
    formats (MOD/S3M/XM/IT/etc), C64 SID tunes, video console music
Packit 2febb0
    files (GYM/VGM/etc), MIDI files and others. The new openmptdec
Packit 2febb0
    element is based on this.
Packit 2febb0
Packit 2febb0
-   Full list of API new in 1.14:
Packit 2febb0
-   GStreamer core API new in 1.14
Packit 2febb0
-   GStreamer base library API new in 1.14
Packit 2febb0
-   gst-plugins-base libraries API new in 1.14
Packit 2febb0
-   gst-plugins-bad: no list, mostly GstWebRTC library and new
Packit 2febb0
    non-stream audio decoder base class.
Packit 2febb0
Packit 2febb0
New RTP features and improvements
Packit 2febb0
Packit 2febb0
-   rtpulpfecenc and rtpulpfecdec are new elements that implement
Packit 2febb0
    Generic Forward Error Correction (FEC) using Uneven Level Protection
Packit 2febb0
    (ULP) as described in RFC 5109. This can be used to protect against
Packit 2febb0
    certain types of (non-bursty) packet loss, and important packets
Packit 2febb0
    such as those containing codec configuration data or key frames can
Packit 2febb0
    be protected with higher redundancy. Equally, packets that are not
Packit 2febb0
    particularly important can be given low priority or not be protected
Packit 2febb0
    at all. If packets are lost, the receiver can then hopefully restore
Packit 2febb0
    the lost packet(s) from the surrounding packets which were received.
Packit 2febb0
    This is an alternative to, or rather complementary to, dealing with
Packit 2febb0
    packet loss using _retransmission (rtx)_. GStreamer has had
Packit 2febb0
    retransmission support for a long time, but Forward Error Correction
Packit 2febb0
    allows for different trade-offs: The advantage of Forward Error
Packit 2febb0
    Correction is that it doesn't add latency, whereas retransmission
Packit 2febb0
    requires at least one more roundtrip to request and hopefully
Packit 2febb0
    receive lost packets; Forward Error Correction increases the
Packit 2febb0
    required bandwidth however, even in situations where there is no
Packit 2febb0
    packet loss at all, so one will typically want to fine-tune the
Packit 2febb0
    overhead and mechanisms used based on the characteristics of the
Packit 2febb0
    link at the time.
Packit 2febb0
Packit 2febb0
-   New _Redundant Audio Data (RED)_ encoders and decoders for RTP as
Packit 2febb0
    per RFC 2198 are also provided (rtpredenc and rtpreddec), mostly for
Packit 2febb0
    chrome webrtc compatibility, as chrome will wrap ULPFEC-protected
Packit 2febb0
    streams in RED packets, and such streams need to be wrapped and
Packit 2febb0
    unwrapped in order to use ULPFEC with chrome.
Packit 2febb0
Packit 2febb0
-   a few new buffer flags for FEC support:
Packit 2febb0
    GST_BUFFER_FLAG_NON_DROPPABLE can be used to mark important buffers,
Packit 2febb0
    e.g. to flag RTP packets carrying keyframes or codec setup data for
Packit 2febb0
    RTP Forward Error Correction purposes, or to prevent still video
Packit 2febb0
    frames from being dropped by elements due to QoS. There already is a
Packit 2febb0
    GST_BUFFER_FLAG_DROPPABLE. GST_RTP_BUFFER_FLAG_REDUNDANT is used to
Packit 2febb0
    signal internally that a packet represents a redundant RTP packet
Packit 2febb0
    and used in rtpstorage to hold back the packet and use it only for
Packit 2febb0
    recovery from packet loss. Further work is still needed in
Packit 2febb0
    payloaders to make use of these.
Packit 2febb0
Packit 2febb0
-   rtpbin now has an option for increasing timestamp offsets gradually:
Packit 2febb0
    Sudden large changes to the internal ts_offset may cause timestamps
Packit 2febb0
    to move backwards and may also cause visible glitches in media
Packit 2febb0
    playback. The new "max-ts-offset-adjustment" and "max-ts-offset"
Packit 2febb0
    properties let the application control the rate to apply changes to
Packit 2febb0
    ts_offset. There have also been some EOS/BYE handling improvements
Packit 2febb0
    in rtpbin.
Packit 2febb0
Packit 2febb0
-   rtpjitterbuffer has a new fast start mode: in many scenarios the
Packit 2febb0
    jitter buffer will have to wait for the full configured latency
Packit 2febb0
    before it can start outputting packets. The reason for that is that
Packit 2febb0
    it often can't know what the sequence number of the first expected
Packit 2febb0
    RTP packet is, so it can't know whether a packet earlier than the
Packit 2febb0
    earliest packet received will still arrive in future. This behaviour
Packit 2febb0
    can now be bypassed by setting the "faststart-min-packets" property
Packit 2febb0
    to the number of consecutive packets needed to start, and the jitter
Packit 2febb0
    buffer will start output packets as soon as it has N consecutive
Packit 2febb0
    packets queued internally. This is particularly useful to get a
Packit 2febb0
    first video frame decoded and rendered as quickly as possible.
Packit 2febb0
Packit 2febb0
-   rtpL8pay and rtpL8depay provide RTP payloading and depayloading for
Packit 2febb0
    8-bit raw audio
Packit 2febb0
Packit 2febb0
New element features
Packit 2febb0
Packit 2febb0
-   playbin3 has gained support or gapless playback via the
Packit 2febb0
    "about-to-finish" signal where users can set the uri for the next
Packit 2febb0
    item to play. For non-live streams this will be emitted as soon as
Packit 2febb0
    the first uri has finished downloading, so with sufficiently large
Packit 2febb0
    buffers it is now possible to pre-buffer the next item well ahead of
Packit 2febb0
    time (unlike playbin where there would not be a lot of time between
Packit 2febb0
    "about-to-finish" emission and the end of the stream). If the stream
Packit 2febb0
    format of the next stream is the same as that of the previous
Packit 2febb0
    stream, the data will be concatenated via the concat element.
Packit 2febb0
    Whether this will result in true gaplessness depends on the
Packit 2febb0
    container format and codecs used, there might still be codec-related
Packit 2febb0
    gaps between streams with some codecs.
Packit 2febb0
Packit 2febb0
-   tee now does allocation query aggregation, which is important for
Packit 2febb0
    zero-copy and efficient data handling, especially for video. Those
Packit 2febb0
    who want to drop allocation queries on purpose can use the identity
Packit 2febb0
    element's new "drop-allocation" property for that instead.
Packit 2febb0
Packit 2febb0
-   audioconvert now has a "mix-matrix" property, which obsoletes the
Packit 2febb0
    audiomixmatrix element. There's also mix matrix support in the audio
Packit 2febb0
    conversion and channel mixing API.
Packit 2febb0
Packit 2febb0
-   x264enc: new "insert-vui" property to disable VUI (Video Usability
Packit 2febb0
    Information) parameter insertion into the stream, which allows
Packit 2febb0
    creation of streams that are compatible with certain legacy hardware
Packit 2febb0
    decoders that will refuse to decode in certain combinations of
Packit 2febb0
    resolution and VUI parameters; the max. allowed number of B-frames
Packit 2febb0
    was also increased from 4 to 16.
Packit 2febb0
Packit 2febb0
-   dvdlpcmdec: has gained support for Blu-Ray audio LPCM.
Packit 2febb0
Packit 2febb0
-   appsrc has gained support for buffer lists (see above) and also seen
Packit 2febb0
    some other performance improvements.
Packit 2febb0
Packit 2febb0
-   flvmux has been ported to the GstAggregator base class which means
Packit 2febb0
    it can work in defined-latency mode with live input sources and
Packit 2febb0
    continue streaming if one of the inputs stops producing data.
Packit 2febb0
Packit 2febb0
-   jpegenc has gained a "snapshot" property just like pngenc to make it
Packit 2febb0
    easier to output just a single encoded frame.
Packit 2febb0
Packit 2febb0
-   jpegdec will now handle interlaced MJPEG streams properly and also
Packit 2febb0
    handles frames without an End of Image marker better.
Packit 2febb0
Packit 2febb0
-   v4l2: There are now video encoders for VP8, VP9, MPEG4, and H263.
Packit 2febb0
    The v4l2 video decoder handles dynamic resolution changes, and the
Packit 2febb0
    video4linux device provider now does much faster device probing. The
Packit 2febb0
    plugin also no longer uses the libv4l2 library by default, as it has
Packit 2febb0
    prevented a lot of interesting use cases like CREATE_BUFS, DMABuf,
Packit 2febb0
    usage of TRY_FMT. As the libv4l2 library is totally inactive and not
Packit 2febb0
    really maintained, we decided to disable it. This might affect a
Packit 2febb0
    small number of cheap/old webcams with custom vendor formats for
Packit 2febb0
    which we do not provide conversion in GStreamer. It is possible to
Packit 2febb0
    re-enable support for libv4l2 at run-time however, by setting the
Packit 2febb0
    environment variable GST_V4L2_USE_LIBV4L2=1.
Packit 2febb0
Packit 2febb0
-   rtspsrc now has support for RTSP protocol version 2.0 as well as
Packit 2febb0
    ONVIF audio backchannels (see below for more details). It also
Packit 2febb0
    sports a new "accept-certificate" signal for "manually" checking a
Packit 2febb0
    TLS certificate for validity. It now also prints RTSP/SDP messages
Packit 2febb0
    to the gstreamer debug log instead of stdout.
Packit 2febb0
Packit 2febb0
-   shout2send now uses non-blocking I/O and has a configurable network
Packit 2febb0
    operations timeout.
Packit 2febb0
Packit 2febb0
-   splitmuxsink has gained a "split-now" action signal and new
Packit 2febb0
    "alignment-threshold" and "use-robust-muxing" properties. If robust
Packit 2febb0
    muxing is enabled, it will check and set the muxer's reserved space
Packit 2febb0
    properties if present. This is primarily for use with mp4mux's
Packit 2febb0
    robust muxing mode.
Packit 2febb0
Packit 2febb0
-   qtmux has a new _prefill recording mode_ which sets up a moov header
Packit 2febb0
    with the correct sample positions beforehand, which then allows
Packit 2febb0
    software like Adobe Premiere and FinalCut Pro to import the files
Packit 2febb0
    while they are still being written to. This only works with constant
Packit 2febb0
    framerate I-frame only streams, and for now only support for ProRes
Packit 2febb0
    video and raw audio is implemented. Adding support for additional
Packit 2febb0
    codecs is just a matter of defining appropriate maximum frame sizes
Packit 2febb0
    though.
Packit 2febb0
Packit 2febb0
-   qtmux also supports writing of svmi atoms with stereoscopic video
Packit 2febb0
    information now. Trak timescales can be configured on a per-stream
Packit 2febb0
    basis using the "trak-timescale" property on the sink pads. Various
Packit 2febb0
    new formats can be muxed: MPEG layer 1 and 2, AC3 and Opus, as well
Packit 2febb0
    as PNG and VP9.
Packit 2febb0
Packit 2febb0
-   souphttpsrc now does connection sharing by default: it shares its
Packit 2febb0
    SoupSession with other elements in the same pipeline via a
Packit 2febb0
    GstContext if possible (session-wide settings are all the defaults).
Packit 2febb0
    This allows for connection reuse, cookie sharing, etc. Applications
Packit 2febb0
    can also force a context to use. In other news, HTTP headers
Packit 2febb0
    received from the server are posted as element messages on the bus
Packit 2febb0
    now for easier diagnostics, and it's also possible now to use other
Packit 2febb0
    types of proxy servers such as SOCKS4 or SOCKS5 proxies, support for
Packit 2febb0
    which is implemented directly in gio. Before only HTTP proxies were
Packit 2febb0
    allowed.
Packit 2febb0
Packit 2febb0
-   qtmux, mp4mux and matroskamux will now refuse caps changes of input
Packit 2febb0
    streams at runtime. This isn't really supported with these
Packit 2febb0
    containers (or would have to be implemented differently with a
Packit 2febb0
    considerable effort) and doesn't produce valid and spec-compliant
Packit 2febb0
    files that will play everywhere. So if you can't guarantee that the
Packit 2febb0
    input caps won't change, use a container format that does support on
Packit 2febb0
    the fly caps changes for a stream such as MPEG-TS or use
Packit 2febb0
    splitmuxsink which can start a new file when the caps change. What
Packit 2febb0
    would happen before is that e.g. rtph264depay or rtph265depay would
Packit 2febb0
    simply send new SPS/PPS inband even for AVC format, which would then
Packit 2febb0
    get muxed into the container as if nothing changed. Some decoders
Packit 2febb0
    will handle this just fine, but that's often more luck than by
Packit 2febb0
    design. In any case, it's not right, so we disallow it now.
Packit 2febb0
Packit 2febb0
-   matroskamux has Table of Content (TOC) support now (chapters etc.)
Packit 2febb0
    and matroskademux TOC support has been improved. matroskademux has
Packit 2febb0
    also seen seeking improvements searching for the right cluster and
Packit 2febb0
    position.
Packit 2febb0
Packit 2febb0
-   videocrop now uses GstVideoCropMeta if downstream supports it, which
Packit 2febb0
    means cropping can be handled more efficiently without any copying.
Packit 2febb0
Packit 2febb0
-   compositor now has support for _crossfade blending_, which can be
Packit 2febb0
    used via the new "crossfade-ratio" property on the sink pads.
Packit 2febb0
Packit 2febb0
-   The avwait element has a new "end-timecode" property and posts
Packit 2febb0
    "avwait-status" element messages now whenever avwait starts or stops
Packit 2febb0
    passing through data (e.g. because target-timecode and end-timecode
Packit 2febb0
    respectively have been reached).
Packit 2febb0
Packit 2febb0
-   'alsamidisrc' element has been broken for many many years and has
Packit 2febb0
    now been repaired allowing live capture from your MIDI HW.
Packit 2febb0
Packit 2febb0
-   h265parse and h265parse will try harder to make upstream output the
Packit 2febb0
    same caps as downstream requires or prefers, thus avoiding
Packit 2febb0
    unnecessary conversion. The parsers also expose chroma format and
Packit 2febb0
    bit depth in the caps now.
Packit 2febb0
Packit 2febb0
-   The dtls elements now longer rely on or require the application to
Packit 2febb0
    run a GLib main loop that iterates the default main context
Packit 2febb0
    (GStreamer plugins should never rely on the application running a
Packit 2febb0
    GLib main loop).
Packit 2febb0
Packit 2febb0
-   openh264enc allows to change the encoding bitrate dynamically at
Packit 2febb0
    runtime now
Packit 2febb0
Packit 2febb0
-   nvdec is a new plugin for hardware-accelerated video decoding using
Packit 2febb0
    the NVIDIA NVDEC API (which replaces the old VDPAU API which is no
Packit 2febb0
    longer supported by NVIDIA)
Packit 2febb0
Packit 2febb0
-   The NVIDIA NVENC hardware-accelerated video encoders now support
Packit 2febb0
    dynamic bitrate and preset reconfiguration and support the I420
Packit 2febb0
    4:2:0 video format. It's also possible to configure the gop size via
Packit 2febb0
    the new "gop-size" property.
Packit 2febb0
Packit 2febb0
-   The MPEG-TS muxer and demuxer (tsmux, tsdemux) now have support for
Packit 2febb0
    JPEG2000
Packit 2febb0
Packit 2febb0
-   openjpegdec and jpeg2000parse support 2-component images now (gray
Packit 2febb0
    with alpha), and jpeg2000parse has gained limited support for
Packit 2febb0
    conversion between JPEG2000 stream-formats. (JP2, J2C, JPC) and also
Packit 2febb0
    extracts more details such as colorimetry, interlace-mode,
Packit 2febb0
    field-order, multiview-mode and chroma siting.
Packit 2febb0
Packit 2febb0
-   The decklink plugin for Blackmagic capture and playback cards have
Packit 2febb0
    seen numerous improvements:
Packit 2febb0
Packit 2febb0
-   decklinkaudiosrc and decklinkvideosrc now put hardware reference
Packit 2febb0
    timestamp on buffers in form of GstReferenceTimestampMetas.
Packit 2febb0
    This can be useful to know on multi-channel cards which frames from
Packit 2febb0
    different channels were captured at the same time.
Packit 2febb0
Packit 2febb0
-   decklinkvideosink has gained support for Decklink hardware keying
Packit 2febb0
    with two new properties ("keyer-mode" and "keyer-level") to control
Packit 2febb0
    the built-in hardware keyer of Decklink cards.
Packit 2febb0
Packit 2febb0
-   decklinkaudiosink has been re-implemented around GstBaseSink instead
Packit 2febb0
    of the GstAudioBaseSink base class, since the Decklink APIs don't
Packit 2febb0
    fit very well with the GstAudioBaseSink APIs, which used to cause
Packit 2febb0
    various problems due to inaccuracies in the clock calculations.
Packit 2febb0
    Problems were audio drop-outs and A/V sync going wrong after
Packit 2febb0
    pausing/seeking.
Packit 2febb0
Packit 2febb0
-   support for more than 16 devices, without any artificial limit
Packit 2febb0
Packit 2febb0
-   work continued on the msdk plugin for Intel's Media SDK which
Packit 2febb0
    enables hardware-accelerated video encoding and decoding on Intel
Packit 2febb0
    graphics hardware on Windows or Linux. Added the video memory,
Packit 2febb0
    buffer pool, and context/session sharing support which helps to
Packit 2febb0
    improve the performance and resource utilization. Rendernode support
Packit 2febb0
    is in place which helps to avoid the constraint of having a running
Packit 2febb0
    graphics server as DRM-Master. Encoders are exposing a number rate
Packit 2febb0
    control algorithms now. More encoder tuning options like
Packit 2febb0
    trellis-quantiztion (h264), slice size control (h264), B-pyramid
Packit 2febb0
    prediction(h264), MB-level bitrate control, frame partitioning and
Packit 2febb0
    adaptive I/B frame insertion were added, and more pixel formats and
Packit 2febb0
    video codecs are supported now. The encoder now also handles
Packit 2febb0
    force-key-unit events and can insert frame-packing SEIs for
Packit 2febb0
    side-by-side and top-bottom stereoscopic 3D video.
Packit 2febb0
Packit 2febb0
-   dashdemux can now do adaptive trick play of certain types of DASH
Packit 2febb0
    streams, meaning it can do fast-forward/fast-rewind of normal (non-I
Packit 2febb0
    frame only) streams even at high speeds without saturating network
Packit 2febb0
    bandwidth or exceeding decoder capabilities. It will keep statistics
Packit 2febb0
    and skip keyframes or fragments as needed. See Sebastian's blog post
Packit 2febb0
    _DASH trick-mode playback in GStreamer_ for more details. It also
Packit 2febb0
    supports webvtt subtitle streams now and has seen improvements when
Packit 2febb0
    seeking in live streams.
Packit 2febb0
Packit 2febb0
-   kmssink has seen lots of fixes and improvements in this cycle,
Packit 2febb0
    including:
Packit 2febb0
Packit 2febb0
-   Raspberry Pi (vc4) and Xilinx DRM driver support
Packit 2febb0
Packit 2febb0
-   new "render-rectangle" property that can be used from the command
Packit 2febb0
    line as well as "display-width" and "display-height", and
Packit 2febb0
    "can-scale" properties
Packit 2febb0
Packit 2febb0
-   GstVideoCropMeta support
Packit 2febb0
Packit 2febb0
Plugin and library moves
Packit 2febb0
Packit 2febb0
MPEG-1 audio (mp1, mp2, mp3) decoders and encoders moved to -good
Packit 2febb0
Packit 2febb0
Following the expiration of the last remaining mp3 patents in most
Packit 2febb0
jurisdictions, and the termination of the mp3 licensing program, as well
Packit 2febb0
as the decision by certain distros to officially start shipping full mp3
Packit 2febb0
decoding and encoding support, these plugins should now no longer be
Packit 2febb0
problematic for most distributors and have therefore been moved from
Packit 2febb0
-ugly and -bad to gst-plugins-good. Distributors can still disable these
Packit 2febb0
plugins if desired.
Packit 2febb0
Packit 2febb0
In particular these are:
Packit 2febb0
Packit 2febb0
-   mpg123audiodec: an mp1/mp2/mp3 audio decoder using libmpg123
Packit 2febb0
-   lamemp3enc: an mp3 encoder using LAME
Packit 2febb0
-   twolamemp2enc: an mp2 encoder using TwoLAME
Packit 2febb0
Packit 2febb0
GstAggregator moved from -bad to core
Packit 2febb0
Packit 2febb0
GstAggregator has been moved from gst-plugins-bad to the base library in
Packit 2febb0
GStreamer and is now stable API.
Packit 2febb0
Packit 2febb0
GstAggregator is a new base class for mixers and muxers that have to
Packit 2febb0
handle multiple input pads and aggregate streams into one output stream.
Packit 2febb0
It improves upon the existing GstCollectPads API in that it is a proper
Packit 2febb0
base class which was also designed with live streaming in mind.
Packit 2febb0
GstAggregator subclasses will operate in a mode with defined latency if
Packit 2febb0
any of the inputs are live streams. This ensures that the pipeline won't
Packit 2febb0
stall if any of the inputs stop producing data, and that the configured
Packit 2febb0
maximum latency is never exceeded.
Packit 2febb0
Packit 2febb0
GstAudioAggregator, audiomixer and audiointerleave moved from -bad to -base
Packit 2febb0
Packit 2febb0
GstAudioAggregator is a new base class for raw audio mixers and muxers
Packit 2febb0
and is based on GstAggregator (see above). It provides defined-latency
Packit 2febb0
mixing of raw audio inputs and ensures that the pipeline won't stall
Packit 2febb0
even if one of the input streams stops producing data.
Packit 2febb0
Packit 2febb0
As part of the move to stabilise the API there were some last-minute API
Packit 2febb0
changes and clean-ups, but those should mostly affect internal elements.
Packit 2febb0
Packit 2febb0
It is used by the audiomixer element, which is a replacement for
Packit 2febb0
'adder', which did not handle live inputs very well and did not align
Packit 2febb0
input streams according to running time. audiomixer should behave much
Packit 2febb0
better in that respect and generally behave as one would expected in
Packit 2febb0
most scenarios.
Packit 2febb0
Packit 2febb0
Similarly, audiointerleave replaces the 'interleave' element which did
Packit 2febb0
not handle live inputs or non-aligned inputs very robustly.
Packit 2febb0
Packit 2febb0
GstAudioAggregator and its subclases have gained support for input
Packit 2febb0
format conversion, which does not include sample rate conversion though
Packit 2febb0
as that would add additional latency. Furthermore, GAP events are now
Packit 2febb0
handled correctly.
Packit 2febb0
Packit 2febb0
We hope to move the video equivalents (GstVideoAggregator and
Packit 2febb0
compositor) to -base in the next cycle, i.e. for 1.16.
Packit 2febb0
Packit 2febb0
GStreamer OpenGL integration library and plugin moved from -bad to -base
Packit 2febb0
Packit 2febb0
The GStreamer OpenGL integration library and opengl plugin have moved
Packit 2febb0
from gst-plugins-bad to -base and are now part of the stable API canon.
Packit 2febb0
Not all OpenGL elements have been moved; a few had to be left behind in
Packit 2febb0
gst-plugins-bad in the new openglmixers plugin, because they depend on
Packit 2febb0
the GstVideoAggregator base class which we were not able to move in this
Packit 2febb0
cycle. We hope to reunite these elements with the rest of their family
Packit 2febb0
for 1.16 though.
Packit 2febb0
Packit 2febb0
This is quite a milestone, thanks to everyone who worked to make this
Packit 2febb0
happen!
Packit 2febb0
Packit 2febb0
Qt QML and GTK plugins moved from -bad to -good
Packit 2febb0
Packit 2febb0
The Qt QML-based qmlgl plugin has moved to -good and provides a
Packit 2febb0
qmlglsink video sink element as well as a qmlglsrc element. qmlglsink
Packit 2febb0
renders video into a QQuickItem, and qmlglsrc captures a window from a
Packit 2febb0
QML view and feeds it as video into a pipeline for further processing.
Packit 2febb0
Both elements leverage GStreamer's OpenGL integration. In addition to
Packit 2febb0
the move to -good the following features were added:
Packit 2febb0
Packit 2febb0
-   A proxy object is now used for thread-safe access to the QML widget
Packit 2febb0
    which prevents crashes in corner case scenarios: QML can destroy the
Packit 2febb0
    video widget at any time, so without this we might be left with a
Packit 2febb0
    dangling pointer.
Packit 2febb0
Packit 2febb0
-   EGL is now supported with the X11 backend, which works e.g. on
Packit 2febb0
    Freescale imx6
Packit 2febb0
Packit 2febb0
The GTK+ plugin has also moved from -bad to -good. It includes gtksink
Packit 2febb0
and gtkglsink which both render video into a GtkWidget. gtksink uses
Packit 2febb0
Cairo for rendering the video, which will work everywhere in all
Packit 2febb0
scenarios but involves an extra memory copy, whereas gtkglsink fully
Packit 2febb0
leverages GStreamer's OpenGL integration, but might not work properly in
Packit 2febb0
all scenarios, e.g. where the OpenGL driver does not properly support
Packit 2febb0
multiple sharing contexts in different threads; on Linux Nouveau is
Packit 2febb0
known to be broken in this respect, whilst NVIDIA's proprietary drivers
Packit 2febb0
and most other drivers generally work fine, and the experience with
Packit 2febb0
Intel's driver seems to be mixed; some proprietary embedded Linux
Packit 2febb0
drivers don't work; macOS works.
Packit 2febb0
Packit 2febb0
GstPhysMemoryAllocator interface moved from -bad to -base
Packit 2febb0
Packit 2febb0
GstPhysMemoryAllocator is a marker interface for allocators with
Packit 2febb0
physical address backed memory.
Packit 2febb0
Packit 2febb0
Plugin removals
Packit 2febb0
Packit 2febb0
-   the sunaudio plugin was removed, since it couldn't ever have been
Packit 2febb0
    built or used with GStreamer 1.0, but no one even noticed in all
Packit 2febb0
    these years.
Packit 2febb0
Packit 2febb0
-   the schroedinger-based Dirac encoder/decoder plugin has been
Packit 2febb0
    removed, as there is no longer any upstream or anyone else
Packit 2febb0
    maintaining it. Seeing that it's quite a fringe codec it seemed best
Packit 2febb0
    to simply remove it.
Packit 2febb0
Packit 2febb0
API removals
Packit 2febb0
Packit 2febb0
-   some MPEG video parser API in the API unstable codecutils library in
Packit 2febb0
    gst-plugins-bad was removed after having been deprecated for 5
Packit 2febb0
    years.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Miscellaneous changes
Packit 2febb0
Packit 2febb0
-   The video support library has gained support for a few new pixel
Packit 2febb0
    formats:
Packit 2febb0
-   NV16_10LE32: 10-bit variant of NV16, packed into 32bit words (plus 2
Packit 2febb0
    bits padding)
Packit 2febb0
-   NV12_10LE32: 10-bit variant of NV12, packed into 32bit words (plus 2
Packit 2febb0
    bits padding)
Packit 2febb0
-   GRAY10_LE32: 10-bit grayscale, packed in 32bit words (plus 2 bits
Packit 2febb0
    padding)
Packit 2febb0
Packit 2febb0
-   decodebin, playbin and GstDiscoverer have seen stability
Packit 2febb0
    improvements in corner cases such as shutdown while still starting
Packit 2febb0
    up or shutdown in error cases (hat tip to the oss-fuzz project).
Packit 2febb0
Packit 2febb0
-   floating reference handling was inconsistent and has been cleaned up
Packit 2febb0
    across the board, including annotations. This solves various
Packit 2febb0
    long-standing memory leaks in language bindings, which e.g. often
Packit 2febb0
    caused elements and pads to be leaked.
Packit 2febb0
Packit 2febb0
-   major gobject-introspection annotation improvements for large parts
Packit 2febb0
    of the library API, including nullability of return types and
Packit 2febb0
    function parameters, correct types (e.g. strings vs. filenames),
Packit 2febb0
    ownership transfer, array length parameters, etc. This allows to use
Packit 2febb0
    bigger parts of the GStreamer API to be safely used from dynamic
Packit 2febb0
    language bindings (e.g. Python, Javascript) and allows static
Packit 2febb0
    bindings (e.g. C#, Rust, Vala) to autogenerate more API bindings
Packit 2febb0
    without manual intervention.
Packit 2febb0
Packit 2febb0
OpenGL integration
Packit 2febb0
Packit 2febb0
-   The GStreamer OpenGL integration library has moved to
Packit 2febb0
    gst-plugins-base and is now part of our stable API.
Packit 2febb0
Packit 2febb0
-   new MESA3D GBM BACKEND. On devices with working libdrm support, it
Packit 2febb0
    is possible to use Mesa3D's GBM library to set up an EGL context
Packit 2febb0
    directly on top of KMS. This makes it possible to use the GStreamer
Packit 2febb0
    OpenGL elements without a windowing system if a libdrm- and
Packit 2febb0
    Mesa3D-supported GPU is present.
Packit 2febb0
Packit 2febb0
-   Prefer wayland display over X11: As most Wayland compositors support
Packit 2febb0
    XWayland, the X11 backend would get selected.
Packit 2febb0
Packit 2febb0
-   gldownload can export dmabufs now, and glupload will advertise
Packit 2febb0
    dmabuf as caps feature.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Tracing framework and debugging improvements
Packit 2febb0
Packit 2febb0
-   NEW MEMORY RINGBUFFER BASED DEBUG LOGGER, useful for long-running
Packit 2febb0
    applications or to retrieve diagnostics when encountering an error.
Packit 2febb0
    The GStreamer debug logging system provides in-depth debug logging
Packit 2febb0
    about what is going on inside a pipeline. When enabled, debug logs
Packit 2febb0
    are usually written into a file, printed to the terminal, or handed
Packit 2febb0
    off to a log handler installed by the application. However, at
Packit 2febb0
    higher debug levels the volume of debug output quickly becomes
Packit 2febb0
    unmanageable, which poses a problem in disk-space or bandwidth
Packit 2febb0
    restricted environments or with long-running pipelines where a
Packit 2febb0
    problem might only manifest itself after multiple days. In those
Packit 2febb0
    situations, developers are usually only interested in the most
Packit 2febb0
    recent debug log output. The new in-memory ringbuffer logger makes
Packit 2febb0
    this easy: just installed it with gst_debug_add_ring_buffer_logger()
Packit 2febb0
    and retrieve logs with gst_debug_ring_buffer_logger_get_logs() when
Packit 2febb0
    needed. It is possible to limit the memory usage per thread and set
Packit 2febb0
    a timeout to determine how long messages are kept around. It was
Packit 2febb0
    always possible to implement this in the application with a custom
Packit 2febb0
    log handler of course, this just provides this functionality as part
Packit 2febb0
    of GStreamer.
Packit 2febb0
Packit 2febb0
-   'fakevideosink is a null sink for video data that advertises
Packit 2febb0
    video-specific metas and behaves like a video sink. See above for
Packit 2febb0
    more details.
Packit 2febb0
Packit 2febb0
-   gst_util_dump_buffer() prints the content of a buffer to stdout.
Packit 2febb0
Packit 2febb0
-   gst_pad_link_get_name() and gst_state_change_get_name() print pad
Packit 2febb0
    link return values and state change transition values as strings.
Packit 2febb0
Packit 2febb0
-   The LATENCY TRACER has seen a few improvements: trace records now
Packit 2febb0
    contain timestamps which is useful to plot things over time, and
Packit 2febb0
    downstream synchronisation time is now excluded from the measured
Packit 2febb0
    values.
Packit 2febb0
Packit 2febb0
-   Miniobject refcount tracing and logging was not entirley
Packit 2febb0
    thread-safe, there were duplicates or missing entries at times. This
Packit 2febb0
    has now been made reliable.
Packit 2febb0
Packit 2febb0
-   The netsim element, which can be used to simulate network jitter,
Packit 2febb0
    packet reordering and packet loss, received new features and
Packit 2febb0
    improvements: it can now also simulate network congestion using a
Packit 2febb0
    token bucket algorithm. This can be enabled via the "max-kbps"
Packit 2febb0
    property. Packet reordering can be disabled now via the
Packit 2febb0
    "allow-reordering" property: Reordering of packets is not very
Packit 2febb0
    common in networks, and the delay functions will always introduce
Packit 2febb0
    reordering if delay > packet-spacing, so by setting
Packit 2febb0
    "allow-reordering" to FALSE you guarantee that the packets are in
Packit 2febb0
    order, while at the same time introducing delay/jitter to them. By
Packit 2febb0
    using the new "delay-distribution" property the user can control how
Packit 2febb0
    the delay applied to delayed packets is distributed: This is either
Packit 2febb0
    the uniform distribution (as before) or the normal distribution; in
Packit 2febb0
    addition there is also the gamma distribution which simulates the
Packit 2febb0
    delay on wifi networks better.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Tools
Packit 2febb0
Packit 2febb0
-   gst-inspect-1.0 now prints pad properties for elements that have pad
Packit 2febb0
    subclasses with special properties, such as compositor or
Packit 2febb0
    audiomixer. This only works for elements that use the newly-added
Packit 2febb0
    GstPadTemplate API API or the
Packit 2febb0
    gst_element_class_add_static_pad_template_with_gtype() convenience
Packit 2febb0
    function to tell GStreamer about the special pad subclass.
Packit 2febb0
Packit 2febb0
-   gst-launch-1.0 now generates a gstreamer pipeline diagram (.dot
Packit 2febb0
    file) whenever SIGHUP is sent to it on Linux/*nix systems.
Packit 2febb0
Packit 2febb0
-   gst-discoverer-1.0 can now analyse live streams such as rtsp:// URIs
Packit 2febb0
Packit 2febb0
Packit 2febb0
GStreamer RTSP server
Packit 2febb0
Packit 2febb0
-   Initial support for RTSP protocol version 2.0 was added, which is to
Packit 2febb0
    the best of our knowledge the first RTSP 2.0 implementation ever!
Packit 2febb0
Packit 2febb0
-   ONVIF audio backchannel support. This is an extension specified by
Packit 2febb0
    ONVIF that allows RTSP clients (e.g. a control room operator) to
Packit 2febb0
    send audio back to the RTSP server (e.g. an IP camera).
Packit 2febb0
    Theoretically this could have been done also by using the RECORD
Packit 2febb0
    method of the RTSP protocol, but ONVIF chose not to do that, so the
Packit 2febb0
    backchannel is set up alongside the other streams. Format
Packit 2febb0
    negotiation needs to be done out of band, if needed. Use the new
Packit 2febb0
    ONVIF-specific subclasses GstRTSPOnvifServer and
Packit 2febb0
    GstRTSPOnvifMediaFactory to enable this functionality.
Packit 2febb0
Packit 2febb0
-   The internal server streaming pipeline is now dynamically
Packit 2febb0
    reconfigured on PLAY based on the transports needed. This means that
Packit 2febb0
    the server no longer adds the pipeline plumbing for all possible
Packit 2febb0
    transports from the start, but only if needed as needed. This
Packit 2febb0
    improves performance and memory footprint.
Packit 2febb0
Packit 2febb0
-   rtspclientsink has gained an "accept-certificate" signal for
Packit 2febb0
    manually checking a TLS certificate for validity.
Packit 2febb0
Packit 2febb0
-   Fix keep-alive/timeout issue for certain clients using TCP
Packit 2febb0
    interleave as transport who don't do keep-alive via some other
Packit 2febb0
    method such as periodic RTSP OPTION requests. We now put netaddress
Packit 2febb0
    metas on the packets from the TCP interleaved stream, so can map
Packit 2febb0
    RTCP packets to the right stream in the server and can handle them
Packit 2febb0
    properly.
Packit 2febb0
Packit 2febb0
-   Language bindings improvements: in general there were quite a few
Packit 2febb0
    improvements in the gobject-introspection annotations, but we also
Packit 2febb0
    extended the permissions API which was not usable from bindings
Packit 2febb0
    before.
Packit 2febb0
Packit 2febb0
-   Fix corner case issue where the wrong mount point was found when
Packit 2febb0
    there were multiple mount points with a common prefix.
Packit 2febb0
Packit 2febb0
Packit 2febb0
GStreamer VAAPI
Packit 2febb0
Packit 2febb0
-   Improve DMABuf's usage, both upstream and dowstream, and
Packit 2febb0
    memory:DMABuf caps feature is also negotiated when the dmabuf-based
Packit 2febb0
    buffer cannot be mapped onto user-space.
Packit 2febb0
Packit 2febb0
-   VA initialization was fixed when it is used in headless systems.
Packit 2febb0
Packit 2febb0
-   VA display sharing, through GstContext, among the pipeline, has been
Packit 2febb0
    improved, adding the possibility to the application share its VA
Packit 2febb0
    display (external display) via gst.vaapi.app.Display context.
Packit 2febb0
Packit 2febb0
-   VA display cache was removed.
Packit 2febb0
Packit 2febb0
-   libva's log messages are now redirected into the GStreamer log
Packit 2febb0
    handler.
Packit 2febb0
Packit 2febb0
-   Decoders improved their upstream re-negotiation by avoiding to
Packit 2febb0
    re-instantiate the internal decoder if stream caps are compatible
Packit 2febb0
    with the previous one.
Packit 2febb0
Packit 2febb0
-   When downstream doesn't support GstVideoMeta and the decoded frames
Packit 2febb0
    don't have standard strides, they are copied onto system
Packit 2febb0
    memory-based buffers.
Packit 2febb0
Packit 2febb0
-   H.264 decoder has a low-latency property, for live streams which
Packit 2febb0
    doesn't conform the H.264 specification but still it is required to
Packit 2febb0
    push the frames to downstream as soon as possible.
Packit 2febb0
Packit 2febb0
-   As part of the Google Summer of Code 2017 the H.264 decoder drops
Packit 2febb0
    MVC and SVC frames when base-only property is enabled.
Packit 2febb0
Packit 2febb0
-   Added support for libva-2.0 (VA-API 1.0).
Packit 2febb0
Packit 2febb0
-   H.264 and H.265 encoders handle Region-Of-Interest metas by adding a
Packit 2febb0
    delta-qp for every rectangle within the frame specified by those
Packit 2febb0
    metas.
Packit 2febb0
Packit 2febb0
-   Encoders for H.264 and H.265 set the media profile by the downstream
Packit 2febb0
    caps.
Packit 2febb0
Packit 2febb0
-   H.264 encoder inserts an AU delimiter for each encoded frame when
Packit 2febb0
    aud property is enabled (it is only available for certain drivers
Packit 2febb0
    and platforms).
Packit 2febb0
Packit 2febb0
-   H.264 encoder supports for P and B hierarchical prediction modes.
Packit 2febb0
Packit 2febb0
-   All encoders handles a quality-level property, which is a number
Packit 2febb0
    from 1 to 8, where a lower number means higher quality, but slower
Packit 2febb0
    processing, and vice-versa.
Packit 2febb0
Packit 2febb0
-   VP8 and VP9 encoders support constant bit-rate mode (CBR).
Packit 2febb0
Packit 2febb0
-   VP8, VP9 and H.265 encoders support variable bit-rate mode (VBR).
Packit 2febb0
Packit 2febb0
-   Resurrected GstGLUploadTextureMeta handling for EGL backends.
Packit 2febb0
Packit 2febb0
-   H.265 encoder can configure its number of reference frames via the
Packit 2febb0
    refs property.
Packit 2febb0
Packit 2febb0
-   Add H.264 encoder mbbrc property, which controls the macro-block
Packit 2febb0
    bitrate as auto, on or off.
Packit 2febb0
Packit 2febb0
-   Add H.264 encoder temporal-levels property, to select the number of
Packit 2febb0
    temporal levels to be included.
Packit 2febb0
Packit 2febb0
-   Add to H.264 and H.265 encoders the properties qp-ip and qp-ib, to
Packit 2febb0
    handle the QP (quality parameter) difference between the I and P
Packit 2febb0
    frames, and the I and B frames, respectively.
Packit 2febb0
Packit 2febb0
-   vaapisink was demoted to marginal rank on Wayland because COGL
Packit 2febb0
    cannot display YUV surfaces.
Packit 2febb0
Packit 2febb0
More details in Víctor's blog post _GStreamer VA-API 1.14: what’s new?_.
Packit 2febb0
Packit 2febb0
Packit 2febb0
GStreamer Editing Services and NLE
Packit 2febb0
Packit 2febb0
-   Handle crossfade in complex scenarios by using the new
Packit 2febb0
    compositorpad::crossfade-ratio property
Packit 2febb0
Packit 2febb0
-   Add API allowing to stop using proxies for clips in the timeline
Packit 2febb0
Packit 2febb0
-   Allow management of none square pixel aspect ratios by allowing
Packit 2febb0
    application to deal with them in the way they want
Packit 2febb0
Packit 2febb0
-   Misc fixes around the timeline editing API
Packit 2febb0
Packit 2febb0
Packit 2febb0
GStreamer validate
Packit 2febb0
Packit 2febb0
-   Handle running scenarios on live pipelines (in the "content sense",
Packit 2febb0
    not the GStreamer one)
Packit 2febb0
Packit 2febb0
-   Implement RTSP support with a basic server based on gst-rtsp-server,
Packit 2febb0
    and add RTSP 1.0 and 2.0 integration tests
Packit 2febb0
Packit 2febb0
-   Implement a plugin that allows users to implement configurable
Packit 2febb0
    tests. It currently can check if a particular element is added a
Packit 2febb0
    configurable number of time in the pipeline. In the future that
Packit 2febb0
    plugin should allow us to implement specific tests of any kind in a
Packit 2febb0
    descriptive way
Packit 2febb0
Packit 2febb0
-   Add a verbosity configuration which behaves in a similare way as the
Packit 2febb0
    gst-launch-1.0 verbose flags allowing the informations to be
Packit 2febb0
    outputed on any running pipeline when enabling GstValidate.
Packit 2febb0
Packit 2febb0
-   Misc optimization in the launcher, making the tests run much faster.
Packit 2febb0
Packit 2febb0
Packit 2febb0
GStreamer C# bindings
Packit 2febb0
Packit 2febb0
-   Port to the meson build system, autotools support has been removed
Packit 2febb0
Packit 2febb0
-   Use a new GlibSharp version, set as a meson subproject
Packit 2febb0
Packit 2febb0
-   Update wrapped API to GStreamer 1.14
Packit 2febb0
Packit 2febb0
-   Removed the need for "glue" code
Packit 2febb0
Packit 2febb0
-   Provide a nuget
Packit 2febb0
Packit 2febb0
-   Misc API fixes
Packit 2febb0
Packit 2febb0
Packit 2febb0
Build and Dependencies
Packit 2febb0
Packit 2febb0
-   the new WebRTC support in gst-plugins-bad depends on the GStreamer
Packit 2febb0
    elements that ship as part of libnice, and libnice version 1.1.14 is
Packit 2febb0
    required. Also the dtls and srtp plugins.
Packit 2febb0
Packit 2febb0
-   gst-plugins-bad no longer depends on the libschroedinger Dirac codec
Packit 2febb0
    library.
Packit 2febb0
Packit 2febb0
-   The srtp plugin can now also be built against libsrtp2.
Packit 2febb0
Packit 2febb0
-   some plugins and libraries have moved between modules, see the
Packit 2febb0
    _Plugin and_ _library moves_ section above, and their respective
Packit 2febb0
    dependencies have moved with them of course, e.g. the GStreamer
Packit 2febb0
    OpenGL integration support library and plugin is now in
Packit 2febb0
    gst-plugins-base, and mpg123, LAME and twoLAME based audio decoder
Packit 2febb0
    and encoder plugins are now in gst-plugins-good.
Packit 2febb0
Packit 2febb0
-   Unify static and dynamic plugin interface and remove plugin specific
Packit 2febb0
    static build option: Static and dynamic plugins now have the same
Packit 2febb0
    interface. The standard --enable-static/--enable-shared toggle is
Packit 2febb0
    sufficient. This allows building static and shared plugins from the
Packit 2febb0
    same object files, instead of having to build everything twice.
Packit 2febb0
Packit 2febb0
-   The default plugin entry point has changed. This will only affect
Packit 2febb0
    plugins that are recompiled against new GStreamer headers. Binary
Packit 2febb0
    plugins using the old entry point will continue to work. However,
Packit 2febb0
    plugins that are recompiled must have matching plugin names in
Packit 2febb0
    GST_PLUGIN_DEFINE and filenames, as the plugin entry point for
Packit 2febb0
    shared plugins is now deduced from the plugin filename. This means
Packit 2febb0
    you can no longer have a plugin called foo living in a file called
Packit 2febb0
    libfoobar.so or such, the plugin filename needs to match. This might
Packit 2febb0
    cause problems with some external third party plugin modules when
Packit 2febb0
    they get rebuilt against GStreamer 1.14.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Note to packagers and distributors
Packit 2febb0
Packit 2febb0
A number of libraries, APIs and plugins moved between modules and/or
Packit 2febb0
libraries in different modules between version 1.12.x and 1.14.x, see
Packit 2febb0
the _Plugin and_ _library moves_ section above. Some APIs have seen
Packit 2febb0
minor ABI changes in the course of moving them into the stable APIs
Packit 2febb0
section.
Packit 2febb0
Packit 2febb0
This means that you should try to ensure that all major GStreamer
Packit 2febb0
modules are synced to the same major version (1.12 or 1.13/1.14) and can
Packit 2febb0
only be upgraded in lockstep, so that your users never end up with a mix
Packit 2febb0
of major versions on their system at the same time, as this may cause
Packit 2febb0
breakages.
Packit 2febb0
Packit 2febb0
Also, plugins compiled against >= 1.14 headers will not load with
Packit 2febb0
GStreamer <= 1.12 owing to a new plugin entry point (but plugin binaries
Packit 2febb0
built against older GStreamer versions will continue to load with newer
Packit 2febb0
versions of GStreamer of course).
Packit 2febb0
Packit 2febb0
There is also a small structure size related ABI breakage introduced in
Packit 2febb0
the gst-plugins-bad codecparsers library between version 1.13.90 and
Packit 2febb0
1.13.91. This should "only" affect gstreamer-vaapi, so anyone who ships
Packit 2febb0
the release candidates is advised to upgrade those two modules at the
Packit 2febb0
same time.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Platform-specific improvements
Packit 2febb0
Packit 2febb0
Android
Packit 2febb0
Packit 2febb0
-   ahcsrc (Android camera source) does autofocus now
Packit 2febb0
Packit 2febb0
macOS and iOS
Packit 2febb0
Packit 2febb0
-   no major changes in macOS and iOS support, only bugfixes
Packit 2febb0
Packit 2febb0
Windows
Packit 2febb0
Packit 2febb0
-   The GStreamer wasapi plugin was rewritten and should not only be
Packit 2febb0
    usable now, but in top shape and suitable for low-latency use cases.
Packit 2febb0
    The Windows Audio Session API (WASAPI) is Microsoft's most modern
Packit 2febb0
    method for talking with audio devices, and now that the wasapi
Packit 2febb0
    plugin is up to scratch it is preferred over the directsound plugin.
Packit 2febb0
    The ranks of the wasapisink and wasapisrc elements have been updated
Packit 2febb0
    to reflect this. Further improvements include:
Packit 2febb0
Packit 2febb0
-   support for more than 2 channels
Packit 2febb0
Packit 2febb0
-   a new "low-latency" property to enable low-latency operation (which
Packit 2febb0
    should always be safe to enable)
Packit 2febb0
Packit 2febb0
-   support for the AudioClient3 API which is only available on Windows
Packit 2febb0
    10: in wasapisink this will be used automatically if available; in
Packit 2febb0
    wasapisrc it will have to be enabled explicitly via the
Packit 2febb0
    "use-audioclient3" property, as capturing audio with low latency and
Packit 2febb0
    without glitches seems to require setting the realtime priority of
Packit 2febb0
    the entire pipeline to "critical", which cannot be done from inside
Packit 2febb0
    the element, but has to be done in the application.
Packit 2febb0
Packit 2febb0
-   set realtime thread priority to avoid glitches
Packit 2febb0
Packit 2febb0
-   allow opening devices in exclusive mode, which provides much lower
Packit 2febb0
    latency compared to shared mode where WASAPI's engine period is
Packit 2febb0
    10ms. This can be activated via the "exclusive" property.
Packit 2febb0
Packit 2febb0
-   Also see Nirbheek's blog post _Low Latency Audio on Windows with
Packit 2febb0
    GStreamer_.
Packit 2febb0
Packit 2febb0
-   There are now GstDeviceProvider implementations for the wasapi and
Packit 2febb0
    directsound plugins, so it's now possible to discover both audio
Packit 2febb0
    sources and audio sinks on Windows via the GstDeviceMonitor API
Packit 2febb0
Packit 2febb0
-   debug log timestamps are now higher granularity owing to
Packit 2febb0
    g_get_monotonic_time() now being used as fallback in
Packit 2febb0
    gst_utils_get_timestamp(). Before that, there would sometimes be
Packit 2febb0
    10-20 lines of debug log output sporting the same timestamp.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Contributors
Packit 2febb0
Packit 2febb0
Aaron Boxer, Adrián Pardini, Adrien SCH, Akinobu Mita, Alban Bedel,
Packit 2febb0
Alessandro Decina, Alex Ashley, Alicia Boya García, Alistair Buxton,
Packit 2febb0
Alvaro Margulis, Anders Jonsson, Andreas Frisch, Andrejs Vasiljevs,
Packit 2febb0
Andrew Bott, Antoine Jacoutot, Antonio Ospite, Antoni Silvestre, Anton
Packit 2febb0
Obzhirov, Anuj Jaiswal, Arjen Veenhuizen, Arnaud Bonatti, Arun Raghavan,
Packit 2febb0
Ashish Kumar, Aurélien Zanelli, Ayaka, Branislav Katreniak, Branko
Packit 2febb0
Subasic, Brion Vibber, Carlos Rafael Giani, Cassandra Rommel, Chris
Packit 2febb0
Bass, Chris Paulson-Ellis, Christoph Reiter, Claudio Saavedra, Clemens
Packit 2febb0
Lang, Cyril Lashkevich, Daniel van Vugt, Dave Craig, Dave Johnstone,
Packit 2febb0
David Evans, David Schleef, Deepak Srivastava, Dimitrios Katsaros,
Packit 2febb0
Dmitry Zhadinets, Dongil Park, Dustin Spicuzza, Eduard Sinelnikov,
Packit 2febb0
Edward Hervey, Enrico Jorns, Eunhae Choi, Ezequiel Garcia, fengalin,
Packit 2febb0
Filippo Argiolas, Florent Thiéry, Florian Zwoch, Francisco Velazquez,
Packit 2febb0
François Laignel, fvanzile, George Kiagiadakis, Georg Lippitsch, Graham
Packit 2febb0
Leggett, Guillaume Desmottes, Gurkirpal Singh, Gwang Yoon Hwang, Gwenole
Packit 2febb0
Beauchesne, Haakon Sporsheim, Haihua Hu, Håvard Graff, Heekyoung Seo,
Packit 2febb0
Heinrich Fink, Holger Kaelberer, Hoonhee Lee, Hosang Lee, Hyunjun Ko,
Packit 2febb0
Ian Jamison, James Stevenson, Jan Alexander Steffens (heftig), Jan
Packit 2febb0
Schmidt, Jason Lin, Jens Georg, Jeremy Hiatt, Jérôme Laheurte, Jimmy
Packit 2febb0
Ohn, Jochen Henneberg, John Ludwig, John Nikolaides, Jonathan Karlsson,
Packit 2febb0
Josep Torra, Juan Navarro, Juan Pablo Ugarte, Julien Isorce, Jun Xie,
Packit 2febb0
Jussi Kukkonen, Justin Kim, Lasse Laursen, Lubosz Sarnecki, Luc
Packit 2febb0
Deschenaux, Luis de Bethencourt, Marcin Lewandowski, Mario Alfredo
Packit 2febb0
Carrillo Arevalo, Mark Nauwelaerts, Martin Kelly, Matej Knopp, Mathieu
Packit 2febb0
Duponchelle, Matteo Valdina, Matt Fischer, Matthew Waters, Matthieu
Packit 2febb0
Bouron, Matthieu Crapet, Matt Staples, Michael Catanzaro, Michael
Packit 2febb0
Olbrich, Michael Shigorin, Michael Tretter, Michał Dębski, Michał Górny,
Packit 2febb0
Michele Dionisio, Miguel París, Mikhail Fludkov, Munez, Nael Ouedraogo,
Packit 2febb0
Neos3452, Nicholas Panayis, Nick Kallen, Nicola Murino, Nicolas
Packit 2febb0
Dechesne, Nicolas Dufresne, Nirbheek Chauhan, Ognyan Tonchev, Ole André
Packit 2febb0
Vadla Ravnås, Oleksij Rempel, Olivier Crête, Omar Akkila, Orestis
Packit 2febb0
Floros, Patricia Muscalu, Patrick Radizi, Paul Kim, Per-Erik Brodin,
Packit 2febb0
Peter Seiderer, Philip Craig, Philippe Normand, Philippe Renon, Philipp
Packit 2febb0
Zabel, Pierre Pouzol, Piotr Drąg, Ponnam Srinivas, Pratheesh Gangadhar,
Packit 2febb0
Raimo Järvi, Ramprakash Jelari, Ravi Kiran K N, Reynaldo H. Verdejo
Packit 2febb0
Pinochet, Rico Tzschichholz, Robert Rosengren, Roland Peffer, Руслан
Packit 2febb0
Ижбулатов, Sam Hurst, Sam Thursfield, Sangkyu Park, Sanjay NM, Satya
Packit 2febb0
Prakash Gupta, Scott D Phillips, Sean DuBois, Sebastian Cote, Sebastian
Packit 2febb0
Dröge, Sebastian Rasmussen, Sejun Park, Sergey Borovkov, Seungha Yang,
Packit 2febb0
Shakin Chou, Shinya Saito, Simon Himmelbauer, Sky Juan, Song Bing,
Packit 2febb0
Sreerenj Balachandran, Stefan Kost, Stefan Popa, Stefan Sauer, Stian
Packit 2febb0
Selnes, Thiago Santos, Thibault Saunier, Thijs Vermeir, Tim Allen,
Packit 2febb0
Tim-Philipp Müller, Ting-Wei Lan, Tomas Rataj, Tom Bailey, Tonu Jaansoo,
Packit 2febb0
U. Artie Eoff, Umang Jain, Ursula Maplehurst, VaL Doroshchuk, Vasilis
Packit 2febb0
Liaskovitis, Víctor Manuel Jáquez Leal, vijay, Vincent Penquerc'h,
Packit 2febb0
Vineeth T M, Vivia Nikolaidou, Wang Xin-yu (王昕宇), Wei Feng, Wim
Packit 2febb0
Taymans, Wonchul Lee, Xabier Rodriguez Calvar, Xavier Claessens,
Packit 2febb0
XuGuangxin, Yasushi SHOJI, Yi A Wang, Youness Alaoui,
Packit 2febb0
Packit 2febb0
... and many others who have contributed bug reports, translations, sent
Packit 2febb0
suggestions or helped testing.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Bugs fixed in 1.14
Packit 2febb0
Packit 2febb0
More than 800 bugs have been fixed during the development of 1.14.
Packit 2febb0
Packit 2febb0
This list does not include issues that have been cherry-picked into the
Packit 2febb0
stable 1.12 branch and fixed there as well, all fixes that ended up in
Packit 2febb0
the 1.12 branch are also included in 1.14.
Packit 2febb0
Packit 2febb0
This list also does not include issues that have been fixed without a
Packit 2febb0
bug report in bugzilla, so the actual number of fixes is much higher.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Stable 1.14 branch
Packit 2febb0
Packit 2febb0
After the 1.14.0 release there will be several 1.14.x bug-fix releases
Packit 2febb0
which will contain bug fixes which have been deemed suitable for a
Packit 2febb0
stable branch, but no new features or intrusive changes will be added to
Packit 2febb0
a bug-fix release usually. The 1.14.x bug-fix releases will be made from
Packit 2febb0
the git 1.14 branch, which is a stable branch.
Packit 2febb0
Packit 2febb0
1.14.0
Packit 2febb0
Packit 2febb0
1.14.0 was released on 19 March 2018.
Packit 2febb0
Packit 2febb0
1.14.1
Packit 2febb0
Packit 2febb0
The first 1.14 bug-fix release (1.14.1) was released on 17 May 2018.
Packit 2febb0
Packit 2febb0
This release only contains bugfixes and it should be safe to update from
Packit 2febb0
1.14.0.
Packit 2febb0
Packit 2febb0
Noteworthy bugfixes in 1.14.1
Packit 2febb0
Packit 2febb0
-   GstPad: Fix race condition causing the same probe to be called
Packit 2febb0
    multiple times
Packit 2febb0
-   Fix occasional deadlocks on windows when outputting debug logging
Packit 2febb0
-   Fix debug levels being applied in the wrong order
Packit 2febb0
-   GIR annotation fixes for bindings
Packit 2febb0
-   audiomixer, audioaggregator: fix some negotiation issues
Packit 2febb0
-   gst-play-1.0: fix leaving stdin in non-blocking mode after exit
Packit 2febb0
-   flvmux: wait for caps on all input pads before writing header even
Packit 2febb0
    if source is live
Packit 2febb0
-   flvmux: don't wake up the muxer unless there is data, fixes busy
Packit 2febb0
    looping if there's no input data
Packit 2febb0
-   flvmux: fix major leak of input buffers
Packit 2febb0
-   rtspsrc, rtsp-server: revert to RTSP RFC handling of
Packit 2febb0
    sendonly/recvonly attributes
Packit 2febb0
-   rtpvrawpay: fix payloading with very large mtu sizes where
Packit 2febb0
    everything fits into a single RTP packet
Packit 2febb0
-   v4l2: Fix hard-coded enabled v4l2 probe on Linux/ARM
Packit 2febb0
-   v4l2: Disable DMABuf for emulated formats when using libv4l2
Packit 2febb0
-   v4l2: Always set colorimetry in S_FMT
Packit 2febb0
-   asfdemux: Set stream-format field for H264 streams and handle H.264
Packit 2febb0
    in bytestream format
Packit 2febb0
-   x265enc: Fix tagging of keyframes on output buffers
Packit 2febb0
-   ladspa: Fix critical during plugin load on Windows
Packit 2febb0
-   decklink: Fix COM initialisation on Windows
Packit 2febb0
-   h264parse: fix re-use across pipeline stop/restart
Packit 2febb0
-   mpegtsmux: fix force-keyframe event handling and PCR/PMT changes
Packit 2febb0
    that would confuse some players with generated HLS streams
Packit 2febb0
-   adaptivedemux: Support period change in live playlist
Packit 2febb0
-   rfbsrc: Fix support for applevncserver and support NULL pool in
Packit 2febb0
    decide_allocation
Packit 2febb0
-   jpegparse: Fix APP1 marker segment parsing
Packit 2febb0
-   h265parse: Make caps writable before modifying them, fixes criticals
Packit 2febb0
-   fakevideosink: request an extra buffer if enable-last-sample is
Packit 2febb0
    enabled
Packit 2febb0
-   wasapisrc: Don't provide a clock based on WASAPI's clock
Packit 2febb0
-   wasapi: Only use audioclient3 when low-latency, as it might
Packit 2febb0
    otherwise glitch with slow CPUs or VMs
Packit 2febb0
-   wasapi: Don't derive device period from latency time, should make it
Packit 2febb0
    more robust against glitches
Packit 2febb0
-   audiolatency: Fix wave detection in buffers and avoid bogus pts
Packit 2febb0
    values while starting
Packit 2febb0
-   msdk: fix plugin load on implementations with only HW support
Packit 2febb0
-   msdk: dec: set framerate to the driver only if provided, not in 0/1
Packit 2febb0
    case
Packit 2febb0
-   msdk: Don't set extended coding options for JPEG encode
Packit 2febb0
-   rtponviftimestamp: fix state change function init/reset causing
Packit 2febb0
    races/crashes on shutdown
Packit 2febb0
-   decklink: fix initialization failure in windows binary
Packit 2febb0
-   ladspa: Fix critical warnings during plugin load on Windows and fix
Packit 2febb0
    dependencies in meson build
Packit 2febb0
-   gl: fix cross-compilation error with viv-fb
Packit 2febb0
-   qmlglsink: make work with eglfs_kms
Packit 2febb0
-   rtspclientsink: Don't deadlock in preroll on early close
Packit 2febb0
-   rtspclientsink: Fix client ports for the RTCP backchannel
Packit 2febb0
-   rtsp-server: Fix session timeout when streaming data to client over
Packit 2febb0
    TCP
Packit 2febb0
-   vaapiencode: h264: find best profile in those available, fixing
Packit 2febb0
    negotiation errors
Packit 2febb0
-   vaapi: remove custom GstGL context handling, use GstGL instead.
Packit 2febb0
    Fixes GL Context sharing with WebkitGtk on wayland
Packit 2febb0
-   gst-editing-services: various fixes
Packit 2febb0
-   gst-python: bump pygobject req to 3.8; fix
Packit 2febb0
    GstPad.set_query_function(); dist autogen.sh and configure.ac in
Packit 2febb0
    tarball
Packit 2febb0
-   g-i: pick up GstVideo-1.0.gir from local build directory in GstGL
Packit 2febb0
    build
Packit 2febb0
-   g-i: update constant values for bindings
Packit 2febb0
-   avoid duplicate symbols in plugins across modules in static builds
Packit 2febb0
-   ... and many, many more!
Packit 2febb0
Packit 2febb0
Cerbero build tool and packaging changes in 1.14.1
Packit 2febb0
Packit 2febb0
Toolchain updates on iOS and Android necessitated a fairly large number
Packit 2febb0
of changes in our cerbero build tool used to create our binary packages
Packit 2febb0
for the various platforms we support:
Packit 2febb0
Packit 2febb0
-   Add support for Ubuntu 18.04 in cerbero
Packit 2febb0
-   Fix generation of fat shared libraries on macOS
Packit 2febb0
-   gnutls: also rename assembly functions on macos/ios to fix link
Packit 2febb0
    errors
Packit 2febb0
-   gnutls: fix assembly symbol names for windows x86
Packit 2febb0
-   openssl: fix linking on android/armv7
Packit 2febb0
-   openssl: fix linker issue with Android NDK's r16 binutils
Packit 2febb0
-   ffmpeg: disable asm for android x86 to fix issues when linking with
Packit 2febb0
    apps
Packit 2febb0
-   x264: disable asm for android x86 to fix issues when linking with
Packit 2febb0
    apps
Packit 2febb0
-   gnutls: rename private symbols for armv8, x86 to not conflict with
Packit 2febb0
    openssl
Packit 2febb0
-   mpg123: disable assembly on android/x86 to fix linker problems with
Packit 2febb0
    relocations
Packit 2febb0
-   Check built version while loading recipe and rebuild if needed
Packit 2febb0
-   Fix packaging of libgcc_s_sjlj which was missing in Windows packages
Packit 2febb0
-   Make not-found in library search fatal so we don't accidentally ship
Packit 2febb0
    broken packages
Packit 2febb0
-   ship the proxy plugin which was new in 1.14
Packit 2febb0
-   Fix git commands accidentally pulling in locally built libraries and
Packit 2febb0
    failing
Packit 2febb0
Packit 2febb0
Contributors to 1.14.1
Packit 2febb0
Packit 2febb0
Antonio Ospite, Aurélien Zanelli, Brendan Shanks, Carlos Rafael Giani,
Packit 2febb0
Edward Hervey, Emilio Pozuelo Monfort, Enrique Ocaña González, Garima
Packit 2febb0
Gaur, Georg Lippitsch, Guillaume Desmottes, Havard Graff, Hoonhee Lee,
Packit 2febb0
Hyunjun Ko, James Stevenson, Jan Alexander Steffens (heftig), Jan
Packit 2febb0
Schmidt, Joakim Johansson, Jun Xie, Kai Kang, Kirill Marinushkin, Mark
Packit 2febb0
Nauwelaerts, Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthias
Packit 2febb0
Fend, Michael Olbrich, Mikhail Fludkov, Nicolas Dufresne, Nirbheek
Packit 2febb0
Chauhan, Olivier Crête, Omar Akkila, Patrik Nilsson, Philippe Normand,
Packit 2febb0
Pierre Labastie, Sebastian Dröge, Seungha Yang, Sreerenj Balachandran,
Packit 2febb0
Stian Selnes, Takeshi Sato, Thibault Saunier, Tim-Philipp Müller, U.
Packit 2febb0
Artie Eoff, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Whoopie, Xabier
Packit 2febb0
Rodriguez Calvar, Xavier Claessens, Zeeshan Ali, and countless others.
Packit 2febb0
Packit 2febb0
List of bugs fixed in 1.14.1
Packit 2febb0
Packit 2febb0
For a full list of bugfixes see Bugzilla. Note that this is not the full
Packit 2febb0
list of changes. For the full list of changes please refer to the GIT
Packit 2febb0
logs or ChangeLogs of the particular modules.
Packit 2febb0
Packit 2febb0
1.14.2
Packit 2febb0
Packit 2febb0
The second 1.14 bug-fix release (1.14.2) is scheduled to be released
Packit 2febb0
around mid-June 2018.
Packit 2febb0
Packit 2febb0
This release only contains bugfixes and it should be safe to update from
Packit 2febb0
1.14.x.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Known Issues
Packit 2febb0
Packit 2febb0
-   The webrtcdsp element (which is unrelated to the newly-landed
Packit 2febb0
    GStreamer webrtc support) is currently not shipped as part of the
Packit 2febb0
    Windows binary packages due to a build system issue.
Packit 2febb0
Packit 2febb0
-   The gst-libav module currently won't build against the
Packit 2febb0
    newly-released ffmpeg 4.0 (as in F28). Use the internal ffmpeg copy
Packit 2febb0
    instead, if you build using autotools.
Packit 2febb0
Packit 2febb0
Packit 2febb0
Schedule for 1.16
Packit 2febb0
Packit 2febb0
Our next major feature release will be 1.16, and 1.15 will be the
Packit 2febb0
unstable development version leading up to the stable 1.16 release. The
Packit 2febb0
development of 1.15/1.16 will happen in the git master branch.
Packit 2febb0
Packit 2febb0
The plan for the 1.16 development cycle is yet to be confirmed, but it
Packit 2febb0
is expected that feature freeze will be around August 2018 followed by
Packit 2febb0
several 1.15 pre-releases and the new 1.16 stable release in September.
Packit 2febb0
Packit 2febb0
1.16 will be backwards-compatible to the stable 1.14, 1.12, 1.10, 1.8,
Packit 2febb0
1.6, 1.4, 1.2 and 1.0 release series.
Packit 2febb0
Packit 2febb0
------------------------------------------------------------------------
Packit 2febb0
Packit 2febb0
_These release notes have been prepared by Tim-Philipp Müller with_
Packit 2febb0
_contributions from Sebastian Dröge, Sreerenj Balachandran, Thibault
Packit 2febb0
Saunier_ _and Víctor Manuel Jáquez Leal._
Packit 2febb0
Packit 2febb0
_License: CC BY-SA 4.0_