Blame NEWS

Packit 29ef81
Packit 29ef81
Packit 29ef81
GSTREAMER 1.16 RELEASE NOTES
Packit 29ef81
Packit 29ef81
Packit 29ef81
GStreamer 1.16.0 was originally released on 19 April 2019.
Packit 29ef81
Packit 29ef81
The latest bug-fix release in the 1.16 series is 1.16.1 and was released
Packit 29ef81
on 23 September 2019.
Packit 29ef81
Packit 29ef81
See https://gstreamer.freedesktop.org/releases/1.16/ for the latest
Packit 29ef81
version of this document.
Packit 29ef81
Packit 29ef81
_Last updated: Sunday 22 September 2019, 21:00 UTC (log)_
Packit 29ef81
Packit 29ef81
Packit 29ef81
Introduction
Packit 29ef81
Packit 29ef81
The GStreamer team is proud to announce a new major feature release in
Packit 29ef81
the stable 1.x API series of your favourite cross-platform multimedia
Packit 29ef81
framework!
Packit 29ef81
Packit 29ef81
As always, this release is again packed with many new features, bug
Packit 29ef81
fixes and other improvements.
Packit 29ef81
Packit 29ef81
Packit 29ef81
Highlights
Packit 29ef81
Packit 29ef81
-   GStreamer WebRTC stack gained support for data channels for
Packit 29ef81
    peer-to-peer communication based on SCTP, BUNDLE support, as well as
Packit 29ef81
    support for multiple TURN servers.
Packit 29ef81
Packit 29ef81
-   AV1 video codec support for Matroska and QuickTime/MP4 containers
Packit 29ef81
    and more configuration options and supported input formats for the
Packit 29ef81
    AOMedia AV1 encoder
Packit 29ef81
Packit 29ef81
-   Support for Closed Captions and other Ancillary Data in video
Packit 29ef81
Packit 29ef81
-   Support for planar (non-interleaved) raw audio
Packit 29ef81
Packit 29ef81
-   GstVideoAggregator, compositor and OpenGL mixer elements are now in
Packit 29ef81
    -base
Packit 29ef81
Packit 29ef81
-   New alternate fields interlace mode where each buffer carries a
Packit 29ef81
    single field
Packit 29ef81
Packit 29ef81
-   WebM and Matroska ContentEncryption support in the Matroska demuxer
Packit 29ef81
Packit 29ef81
-   new WebKit WPE-based web browser source element
Packit 29ef81
Packit 29ef81
-   Video4Linux: HEVC encoding and decoding, JPEG encoding, and improved
Packit 29ef81
    dmabuf import/export
Packit 29ef81
Packit 29ef81
-   Hardware-accelerated Nvidia video decoder gained support for VP8/VP9
Packit 29ef81
    decoding, whilst the encoder gained support for H.265/HEVC encoding.
Packit 29ef81
Packit 29ef81
-   Many improvements to the Intel Media SDK based hardware-accelerated
Packit 29ef81
    video decoder and encoder plugin (msdk): dmabuf import/export for
Packit 29ef81
    zero-copy integration with other components; VP9 decoding; 10-bit
Packit 29ef81
    HEVC encoding; video post-processing (vpp) support including
Packit 29ef81
    deinterlacing; and the video decoder now handles dynamic resolution
Packit 29ef81
    changes.
Packit 29ef81
Packit 29ef81
-   The ASS/SSA subtitle overlay renderer can now handle multiple
Packit 29ef81
    subtitles that overlap in time and will show them on screen
Packit 29ef81
    simultaneously
Packit 29ef81
Packit 29ef81
-   The Meson build is now feature-complete (*) and it is now the
Packit 29ef81
    recommended build system on all platforms. The Autotools build is
Packit 29ef81
    scheduled to be removed in the next cycle.
Packit 29ef81
Packit 29ef81
-   The GStreamer Rust bindings and Rust plugins module are now
Packit 29ef81
    officially part of upstream GStreamer.
Packit 29ef81
Packit 29ef81
-   The GStreamer Editing Services gained a gesdemux element that allows
Packit 29ef81
    directly playing back serialized edit list with playbin or
Packit 29ef81
    (uri)decodebin
Packit 29ef81
Packit 29ef81
-   Many performance improvements
Packit 29ef81
Packit 29ef81
Packit 29ef81
Major new features and changes
Packit 29ef81
Packit 29ef81
Noteworthy new API
Packit 29ef81
Packit 29ef81
-   GstAggregator has a new "min-upstream-latency" property that forces
Packit 29ef81
    a minimum aggregate latency for the input branches of an aggregator.
Packit 29ef81
    This is useful for dynamic pipelines where branches with a higher
Packit 29ef81
    latency might be added later after the pipeline is already up and
Packit 29ef81
    running and where a change in the latency would be disruptive. This
Packit 29ef81
    only applies to the case where at least one of the input branches is
Packit 29ef81
    live though, it won’t force the aggregator into live mode in the
Packit 29ef81
    absence of any live inputs.
Packit 29ef81
Packit 29ef81
-   GstBaseSink gained a "processing-deadline" property and
Packit 29ef81
    setter/getter API to configure a processing deadline for live
Packit 29ef81
    pipelines. The processing deadline is the acceptable amount of time
Packit 29ef81
    to process the media in a live pipeline before it reaches the sink.
Packit 29ef81
    This is on top of the systemic latency that is normally reported by
Packit 29ef81
    the latency query. This defaults to 20ms and should make pipelines
Packit 29ef81
    such as v4l2src ! xvimagesink not claim that all frames are late in
Packit 29ef81
    the QoS events. Ideally, this should replace the "max-lateness"
Packit 29ef81
    property for most applications.
Packit 29ef81
Packit 29ef81
-   RTCP Extended Reports (XR) parsing according to RFC 3611:
Packit 29ef81
    Loss/Duplicate RLE, Packet Receipt Times, Receiver Reference Time,
Packit 29ef81
    Delay since the last Receiver (DLRR), Statistics Summary, and VoIP
Packit 29ef81
    Metrics reports. This only provides the ability to parse such
Packit 29ef81
    packets, generation of XR packets is not supported yet and XR
Packit 29ef81
    packets are not automatically parsed by rtpbin / rtpsession but must
Packit 29ef81
    be actively handled by the application.
Packit 29ef81
Packit 29ef81
-   a new mode for interlaced video was added where each buffer carries
Packit 29ef81
    a single field of interlaced video, with buffer flags indicating
Packit 29ef81
    whether the field is the top field or bottom field. Top and bottom
Packit 29ef81
    fields are expected to alternate in this mode. Caps for this
Packit 29ef81
    interlace mode must also carry a format:Interlaced caps feature to
Packit 29ef81
    ensure backwards compatibility.
Packit 29ef81
Packit 29ef81
-   The video library has gained support for three new raw pixel
Packit 29ef81
    formats:
Packit 29ef81
Packit 29ef81
    -   Y410: packed 4:4:4 YUV, 10 bits per channel
Packit 29ef81
    -   Y210: packed 4:2:2 YUV, 10 bits per channel
Packit 29ef81
    -   NV12_10LE40: fully-packed 10-bit variant of NV12_10LE32,
Packit 29ef81
        i.e. without the padding bits
Packit 29ef81
Packit 29ef81
-   GstRTPSourceMeta is a new meta that can be used to transport
Packit 29ef81
    information about the origin of depayloaded or decoded RTP buffers,
Packit 29ef81
    e.g. when mixing audio from multiple sources into a single stream. A
Packit 29ef81
    new "source-info" property on the RTP depayloader base class
Packit 29ef81
    determines whether depayloaders should put this meta on outgoing
Packit 29ef81
    buffers. Similarly, the same property on RTP payloaders determines
Packit 29ef81
    whether they should use the information from this meta to construct
Packit 29ef81
    the CSRCs list on outgoing RTP buffers.
Packit 29ef81
Packit 29ef81
-   gst_sdp_message_from_text() is a convenience constructor to parse
Packit 29ef81
    SDPs from a string which is particularly useful for language
Packit 29ef81
    bindings.
Packit 29ef81
Packit 29ef81
Support for Planar (Non-Interleaved) Raw Audio
Packit 29ef81
Packit 29ef81
Raw audio samples are usually passed around in interleaved form in
Packit 29ef81
GStreamer, which means that if there are multiple audio channels the
Packit 29ef81
samples for each channel are interleaved in memory, e.g.
Packit 29ef81
|LEFT|RIGHT|LEFT|RIGHT|LEFT|RIGHT| for stereo audio. A non-interleaved
Packit 29ef81
or planar arrangement in memory would look like
Packit 29ef81
|LEFT|LEFT|LEFT|RIGHT|RIGHT|RIGHT| instead, possibly with
Packit 29ef81
|LEFT|LEFT|LEFT| and |RIGHT|RIGHT|RIGHT| residing in separate memory
Packit 29ef81
chunks or separated by some padding.
Packit 29ef81
Packit 29ef81
GStreamer has always had signalling for non-interleaved audio since
Packit 29ef81
version 1.0, but it was never actually properly implemented in any
Packit 29ef81
elements. audioconvert would advertise support for it, but wasn’t
Packit 29ef81
actually able to handle it correctly.
Packit 29ef81
Packit 29ef81
With this release we now have full support for non-interleaved audio as
Packit 29ef81
well, which means more efficient integration with external APIs that
Packit 29ef81
handle audio this way, but also more efficient processing of certain
Packit 29ef81
operations like interleaving multiple 1-channel streams into a
Packit 29ef81
multi-channel stream which can be done without memory copies now.
Packit 29ef81
Packit 29ef81
New API to support this has been added to the GStreamer Audio support
Packit 29ef81
library: There is now a new GstAudioMeta which describes how data is
Packit 29ef81
laid out inside the buffer, and buffers with non-interleaved audio must
Packit 29ef81
always carry this meta. To access the non-interleaved audio samples you
Packit 29ef81
must map such buffers with gst_audio_buffer_map() which works much like
Packit 29ef81
gst_buffer_map() or gst_video_frame_map() in that it will populate a
Packit 29ef81
little GstAudioBuffer helper structure passed to it with the number of
Packit 29ef81
samples, the number of planes and pointers to the start of each plane in
Packit 29ef81
memory. This function can also be used to map interleaved audio buffers
Packit 29ef81
in which case there will be only one plane of interleaved samples.
Packit 29ef81
Packit 29ef81
Of course support for this has also been implemented in the various
Packit 29ef81
audio helper and conversion APIs, base classes, and in elements such as
Packit 29ef81
audioconvert, audioresample, audiotestsrc, audiorate.
Packit 29ef81
Packit 29ef81
Support for Closed Captions and Other Ancillary Data in Video
Packit 29ef81
Packit 29ef81
The video support library has gained support for detecting and
Packit 29ef81
extracting Ancillary Data from videos as per the SMPTE S291M
Packit 29ef81
specification, including:
Packit 29ef81
Packit 29ef81
-   a VBI (Vertical Blanking Interval) parser that can detect and
Packit 29ef81
    extract Ancillary Data from Vertical Blanking Interval lines of
Packit 29ef81
    component signals. This is currently supported for videos in v210
Packit 29ef81
    and UYVY format.
Packit 29ef81
Packit 29ef81
-   a new GstMeta for closed captions: GstVideoCaptionMeta. This
Packit 29ef81
    supports the two types of closed captions, CEA-608 and CEA-708,
Packit 29ef81
    along with the four different ways they can be transported (other
Packit 29ef81
    systems are a superset of those).
Packit 29ef81
Packit 29ef81
-   a VBI (Vertical Blanking Interval) encoder for writing ancillary
Packit 29ef81
    data to the Vertical Blanking Interval lines of component signals.
Packit 29ef81
Packit 29ef81
The new closedcaption plugin in gst-plugins-bad then makes use of all
Packit 29ef81
this new infrastructure and provides the following elements:
Packit 29ef81
Packit 29ef81
-   cccombiner: a closed caption combiner that takes a closed captions
Packit 29ef81
    stream and another stream and adds the closed captions as
Packit 29ef81
    GstVideoCaptionMeta to the buffers of the other stream.
Packit 29ef81
Packit 29ef81
-   ccextractor: a closed caption extractor which will take
Packit 29ef81
    GstVideoCaptionMeta from input buffers and output them as a separate
Packit 29ef81
    closed captions stream.
Packit 29ef81
Packit 29ef81
-   ccconverter: a closed caption converter that can convert between
Packit 29ef81
    different formats
Packit 29ef81
Packit 29ef81
-   line21encoder, line21decoder: inject/extract line21 closed captions
Packit 29ef81
    to/from SD video streams
Packit 29ef81
Packit 29ef81
-   cc708overlay: decodes CEA 608/708 captions and overlays them on
Packit 29ef81
    video
Packit 29ef81
Packit 29ef81
Additionally, the following elements have also gained Closed Caption
Packit 29ef81
support:
Packit 29ef81
Packit 29ef81
-   qtdemux and qtmux support CEA 608/708 Closed Caption tracks
Packit 29ef81
Packit 29ef81
-   mpegvideoparse, h264parse extracts Closed Captions from MPEG-2/H.264
Packit 29ef81
    video streams
Packit 29ef81
Packit 29ef81
-   avviddec, avvidenc, x264enc got support for extracting/injecting
Packit 29ef81
    Closed Captions
Packit 29ef81
Packit 29ef81
-   decklinkvideosink can output closed captions and decklinkvideosrc
Packit 29ef81
    can extract closed captions
Packit 29ef81
Packit 29ef81
-   playbin and playbin3 learned how to autoplug CEA 608/708 CC overlay
Packit 29ef81
    elements
Packit 29ef81
Packit 29ef81
-   the externally maintained ajavideosrc element for AJA capture cards
Packit 29ef81
    has support for extracting closed captions
Packit 29ef81
Packit 29ef81
The rsclosedcaption plugin in the Rust plugins collection includes a
Packit 29ef81
MacCaption (MCC) file parser and encoder.
Packit 29ef81
Packit 29ef81
New Elements
Packit 29ef81
Packit 29ef81
-   overlaycomposition: New element that allows applications to draw
Packit 29ef81
    GstVideoOverlayCompositions on a stream. The element will emit the
Packit 29ef81
    "draw" signal for each video buffer, and the application then
Packit 29ef81
    generates an overlay for that frame (or not). This is much more
Packit 29ef81
    performant than e.g. cairooverlay for many use cases, e.g. because
Packit 29ef81
    pixel format conversions can be avoided or the blitting of the
Packit 29ef81
    overlay can be delegated to downstream elements (such as
Packit 29ef81
    gloverlaycompositor). It’s particularly useful for cases where only
Packit 29ef81
    a small section of the video frame should be drawn on.
Packit 29ef81
Packit 29ef81
-   gloverlaycompositor: New OpenGL-based compositor element that
Packit 29ef81
    flattens any overlays from GstVideoOverlayCompositionMetas into the
Packit 29ef81
    video stream. This element is also always part of glimagesink.
Packit 29ef81
Packit 29ef81
-   glalpha: New element that adds an alpha channel to a video stream.
Packit 29ef81
    The values of the alpha channel can either be set to a constant or
Packit 29ef81
    can be dynamically calculated via chroma keying. It is similar to
Packit 29ef81
    the existing alpha element but based on OpenGL. Calculations are
Packit 29ef81
    done in floating point so results may not be identical to the output
Packit 29ef81
    of the existing alpha element.
Packit 29ef81
Packit 29ef81
-   rtpfunnel funnels together RTP streams into a single session. Use
Packit 29ef81
    cases include multiplexing and bundle. webrtcbin uses it to
Packit 29ef81
    implement BUNDLE support.
Packit 29ef81
Packit 29ef81
-   testsrcbin is a source element that provides an audio and/or video
Packit 29ef81
    stream and also announces them using the recently-introduced
Packit 29ef81
    GstStream API. This is useful for testing elements such as playbin3
Packit 29ef81
    or uridecodebin3 etc.
Packit 29ef81
Packit 29ef81
-   New closed caption elements: cccombiner, ccextractor, ccconverter,
Packit 29ef81
    line21encoder, line21decoder and cc708overlay (see above)
Packit 29ef81
Packit 29ef81
-   wpesrc: new source element acting as a Web Browser based on WebKit
Packit 29ef81
    WPE
Packit 29ef81
Packit 29ef81
-   Two new OpenCV-based elements: cameracalibrate and cameraundistort
Packit 29ef81
    that can communicate to figure out distortion correction parameters
Packit 29ef81
    for a camera and correct for the distortion.
Packit 29ef81
Packit 29ef81
-   New sctp plugin based on usrsctp with sctpenc and sctpdec elements.
Packit 29ef81
    These elements are used inside webrtcbin for implementing data
Packit 29ef81
    channels.
Packit 29ef81
Packit 29ef81
New element features and additions
Packit 29ef81
Packit 29ef81
-   playbin3, playbin and playsink have gained a new "text-offset"
Packit 29ef81
    property to adjust the positioning of the selected subtitle stream
Packit 29ef81
    vis-a-vis the audio and video streams. This uses subtitleoverlay’s
Packit 29ef81
    new "subtitle-ts-offset" property. GstPlayer has gained matching API
Packit 29ef81
    for this, namely gst_player_get_text_video_offset().
Packit 29ef81
Packit 29ef81
-   playbin3 buffering improvements: in network playback scenarios there
Packit 29ef81
    may be multiple inputs to decodebin3, and buffering will be done
Packit 29ef81
    before decodebin3 using queue2 or downloadbuffer elements inside
Packit 29ef81
    urisourcebin. Since this is before any parsers or demuxers there may
Packit 29ef81
    not be any bitrate information available for the various streams, so
Packit 29ef81
    it was difficult to configure the buffering there smartly within
Packit 29ef81
    global constraints. This was improved now: The queue2 elements
Packit 29ef81
    inside urisourcebin will now use the new bitrate query to figure out
Packit 29ef81
    a bitrate estimate for the stream if no bitrate was provided by
Packit 29ef81
    upstream, and urisourcebin will use the bitrates of the individual
Packit 29ef81
    queues to distribute the globally-set "buffer-size" budget in bytes
Packit 29ef81
    to the various queues. urisourcebin also gained "low-watermark" and
Packit 29ef81
    "high-watermark" properties which will be proxied to the internal
Packit 29ef81
    queues, as well as a read-only "statistics" property which allows
Packit 29ef81
    querying of the minimum/maximum/average byte and time levels of the
Packit 29ef81
    queues inside the urisourcebin in question.
Packit 29ef81
Packit 29ef81
-   splitmuxsink has gained a couple of new features:
Packit 29ef81
Packit 29ef81
    -   new "async-finalize" mode: This mode is useful for muxers or
Packit 29ef81
        outputs that can take a long time to finalize a file. Instead of
Packit 29ef81
        blocking the whole upstream pipeline while the muxer is doing
Packit 29ef81
        its stuff, we can unlink it and spawn a new muxer + sink
Packit 29ef81
        combination to continue running normally. This requires us to
Packit 29ef81
        receive the muxer and sink (if needed) as factories via the new
Packit 29ef81
        "muxer-factory" and "sink-factory" properties, optionally
Packit 29ef81
        accompanied by their respective properties structures (set via
Packit 29ef81
        the new "muxer-properties" and "sink-properties" properties).
Packit 29ef81
        There are also new "muxer-added" and "sink-added" signals in
Packit 29ef81
        case custom code has to be called for them to configure them.
Packit 29ef81
Packit 29ef81
    -   "split-at-running-time" action signal: When called by the user,
Packit 29ef81
        this action signal ends the current file (and starts a new one)
Packit 29ef81
        as soon as the given running time is reached. If called multiple
Packit 29ef81
        times, running times are queued up and processed in the order
Packit 29ef81
        they were given.
Packit 29ef81
Packit 29ef81
    -   "split-after" action signal to finish outputting the current GOP
Packit 29ef81
        to the current file and then start a new file as soon as the GOP
Packit 29ef81
        is finished and a new GOP is opened (unlike the existing
Packit 29ef81
        "split-now" which immediately finishes the current file and
Packit 29ef81
        writes the current GOP into the next newly-started file).
Packit 29ef81
Packit 29ef81
    -   "reset-muxer" property: when unset, the muxer is reset using
Packit 29ef81
        flush events instead of setting its state to NULL and back. This
Packit 29ef81
        means the muxer can keep state across resets, e.g. mpegtsmux
Packit 29ef81
        will keep the continuity counter continuous across segments as
Packit 29ef81
        required by hlssink2.
Packit 29ef81
Packit 29ef81
-   qtdemux gained PIFF track encryption box support in addition to the
Packit 29ef81
    already-existing PIFF sample encryption support, and also allows
Packit 29ef81
    applications to select which encryption system to use via a
Packit 29ef81
    "drm-preferred-decryption-system-id" context in case there are
Packit 29ef81
    multiple options.
Packit 29ef81
Packit 29ef81
-   qtmux: the "start-gap-threshold" property determines now whether an
Packit 29ef81
    edit list will be created to account for small gaps or offsets at
Packit 29ef81
    the beginning of a stream in case the start timestamps of tracks
Packit 29ef81
    don’t line up perfectly. Previously the threshold was hard-coded to
Packit 29ef81
    1% of the (video) frame duration, now it is 0 by default (so edit
Packit 29ef81
    list will be created even for small differences), but fully
Packit 29ef81
    configurable.
Packit 29ef81
Packit 29ef81
-   rtpjitterbuffer has improved end-of-stream handling
Packit 29ef81
Packit 29ef81
-   rtpmp4vpay will be preferred over rtpmp4gpay for MPEG-4 video in
Packit 29ef81
    autoplugging scenarios now
Packit 29ef81
Packit 29ef81
-   rtspsrc now allows applications to send RTSP SET_PARAMETER and
Packit 29ef81
    GET_PARAMETER requests using action signals.
Packit 29ef81
Packit 29ef81
-   rtspsrc has a small (100ms) configurable teardown delay by default
Packit 29ef81
    to try and make sure an RTSP TEARDOWN request gets sent out when the
Packit 29ef81
    source element shuts down. This will block the downward PAUSED to
Packit 29ef81
    READY state change for a short time, but can be disabled where it’s
Packit 29ef81
    a problem. Some servers only allow a limited number of concurrent
Packit 29ef81
    clients, so if no proper TEARDOWN is sent new clients may have
Packit 29ef81
    problems connecting to the server for a while.
Packit 29ef81
Packit 29ef81
-   souphttpsrc behaves better with low bitrate streams now. Before it
Packit 29ef81
    would increase the read block size too quickly which could lead to
Packit 29ef81
    it not reading any data from the socket for a very long time with
Packit 29ef81
    low bitrate streams that are output live downstream. This could lead
Packit 29ef81
    to servers kicking off the client.
Packit 29ef81
Packit 29ef81
-   filesink: do internal buffering to avoid performance regression with
Packit 29ef81
    small writes since we bypass libc buffering by using writev()
Packit 29ef81
    instead of fwrite()
Packit 29ef81
Packit 29ef81
-   identity: add "eos-after" property and fix "error-after" property
Packit 29ef81
    when the element is reused
Packit 29ef81
Packit 29ef81
-   input-selector: lets context queries pass through, so that
Packit 29ef81
    e.g. upstream OpenGL elements can use contexts and displays
Packit 29ef81
    advertised by downstream elements
Packit 29ef81
Packit 29ef81
-   queue2: avoid ping-pong between 0% and 100% buffering messages if
Packit 29ef81
    upstream is pushing buffers larger than one of its limits, plus
Packit 29ef81
    performance optimisations
Packit 29ef81
Packit 29ef81
-   opusdec: new "phase-inversion" property to control phase inversion.
Packit 29ef81
    When enabled, this will slightly increase stereo quality, but
Packit 29ef81
    produces a stream that when downmixed to mono will suffer audio
Packit 29ef81
    distortions.
Packit 29ef81
Packit 29ef81
-   The x265enc HEVC encoder also exposes a "key-int-max" property to
Packit 29ef81
    configure the maximum allowed GOP size now.
Packit 29ef81
Packit 29ef81
-   decklinkvideosink has seen stability improvements for long-running
Packit 29ef81
    pipelines (potential crash due to overflow of leaked clock refcount)
Packit 29ef81
    and clock-slaving improvements when performing flushing seeks
Packit 29ef81
    (causing stalls in the output timeline), pausing and/or buffering.
Packit 29ef81
Packit 29ef81
-   srtpdec, srtpenc: add support for MKIs which allow multiple keys to
Packit 29ef81
    be used with a single SRTP stream
Packit 29ef81
Packit 29ef81
-   srtpdec, srtpenc: add support for AES-GCM and also add support for
Packit 29ef81
    it in gst-rtsp-server and rtspsrc.
Packit 29ef81
Packit 29ef81
-   The srt Secure Reliable Transport plugin has integrated server and
Packit 29ef81
    client elements srt{client,server}{src,sink} into one (srtsrc and
Packit 29ef81
    srtsink), since SRT connection mode can be changed by uri
Packit 29ef81
    parameters.
Packit 29ef81
Packit 29ef81
-   h264parse and h265parse will handle SEI recovery point messages and
Packit 29ef81
    mark recovery points as keyframes as well (in addition to IDR
Packit 29ef81
    frames)
Packit 29ef81
Packit 29ef81
-   webrtcbin: "add-turn-server" action signal to pass multiple ICE
Packit 29ef81
    relays (TURN servers).
Packit 29ef81
Packit 29ef81
-   The removesilence element has received various new features and
Packit 29ef81
    properties, such as a "threshold" property, detecting silence only
Packit 29ef81
    after minimum silence time/buffers, a "silent" property to control
Packit 29ef81
    bus message notifications as well as a "squash" property.
Packit 29ef81
Packit 29ef81
-   AOMedia AV1 decoder gained support for 10/12bit decoding whilst the
Packit 29ef81
    AV1 encoder supports more image formats and subsamplings now and
Packit 29ef81
    acquired support for rate control and profile related configuration.
Packit 29ef81
Packit 29ef81
-   The Fraunhofer fdkaac plugin can now be built against the 2.0.0
Packit 29ef81
    version API and has improved multichannel support
Packit 29ef81
Packit 29ef81
-   kmssink now supports unpadded 24-bit RGB and can configure mode
Packit 29ef81
    setting from video info, which enables display of multi-planar
Packit 29ef81
    formats such as I420 or NV12 with modesetting. It has also gained a
Packit 29ef81
    number of new properties: The "restore-crtc" property does what it
Packit 29ef81
    says on the tin and is enabled by default. "plane-properties" and
Packit 29ef81
    "connector-properties" can be used to pass custom properties to the
Packit 29ef81
    DRM.
Packit 29ef81
Packit 29ef81
-   waylandsink has a "fullscreen" property now and supports the
Packit 29ef81
    XDG-Shell protocol.
Packit 29ef81
Packit 29ef81
-   decklinkvideosink, decklinkvideosrc support selecting between
Packit 29ef81
    half/full duplex
Packit 29ef81
Packit 29ef81
-   The vulkan plugin gained support for macOS and iOS via MoltenVK in
Packit 29ef81
    addition to the existing support for X11 and Wayland
Packit 29ef81
Packit 29ef81
-   imagefreeze has a new num-buffers property to limit the number of
Packit 29ef81
    buffers that are produced and to send an EOS event afterwards
Packit 29ef81
Packit 29ef81
-   webrtcbin has a new, introspectable get-transceiver signal in
Packit 29ef81
    addition to the old get-transceivers signal that couldn’t be used
Packit 29ef81
    from bindings
Packit 29ef81
Packit 29ef81
-   Support for per-element latency information was added to the latency
Packit 29ef81
    tracer
Packit 29ef81
Packit 29ef81
Plugin and library moves
Packit 29ef81
Packit 29ef81
-   The stereo element was moved from -bad into the existing audiofx
Packit 29ef81
    plugin in -good. If you get duplicate type registration warnings
Packit 29ef81
    when upgrading, check that you don’t have a stale stereoplugin lying
Packit 29ef81
    about somewhere.
Packit 29ef81
Packit 29ef81
GstVideoAggregator, compositor, and OpenGL mixer elements moved from -bad to -base
Packit 29ef81
Packit 29ef81
GstVideoAggregator is a new base class for raw video mixers and muxers
Packit 29ef81
and is based on GstAggregator. It provides defined-latency mixing of raw
Packit 29ef81
video inputs and ensures that the pipeline won’t stall even if one of
Packit 29ef81
the input streams stops producing data.
Packit 29ef81
Packit 29ef81
As part of the move to stabilise the API there were some last-minute API
Packit 29ef81
changes and clean-ups, but those should mostly affect internal elements.
Packit 29ef81
Most notably, the "ignore-eos" pad property was renamed to
Packit 29ef81
"repeat-after-eos" and the conversion code was moved to a
Packit 29ef81
GstVideoAggregatorConvertPad subclass to avoid code duplication, make
Packit 29ef81
things less awkward for subclasses like the OpenGL-based video mixer,
Packit 29ef81
and make the API more consistent with the audio aggregator API.
Packit 29ef81
Packit 29ef81
It is used by the compositor element, which is a replacement for
Packit 29ef81
‘videomixer’ which did not handle live inputs very well. compositor
Packit 29ef81
should behave much better in that respect and generally behave as one
Packit 29ef81
would expected in most scenarios.
Packit 29ef81
Packit 29ef81
The compositor element has gained support for per-pad blending mode
Packit 29ef81
operators (SOURCE, OVER, ADD) which determines what operator to use for
Packit 29ef81
blending this pad over the previous ones. This can be used to implement
Packit 29ef81
crossfading and the available operators can be extended in the future as
Packit 29ef81
needed.
Packit 29ef81
Packit 29ef81
A number of OpenGL-based video mixer elements (glvideomixer, glmixerbin,
Packit 29ef81
glvideomixerelement, glstereomix, glmosaic) which are built on top of
Packit 29ef81
GstVideoAggregator have also been moved from -bad to -base now. These
Packit 29ef81
elements have been merged into the existing OpenGL plugin, so if you get
Packit 29ef81
duplicate type registration warnings when upgrading, check that you
Packit 29ef81
don’t have a stale openglmixers plugin lying about somewhere.
Packit 29ef81
Packit 29ef81
Plugin removals
Packit 29ef81
Packit 29ef81
The following plugins have been removed from gst-plugins-bad:
Packit 29ef81
Packit 29ef81
-   The experimental daala plugin has been removed, since it’s not so
Packit 29ef81
    useful now that all effort is focused on AV1 instead, and it had to
Packit 29ef81
    be enabled explicitly with --enable-experimental anyway.
Packit 29ef81
Packit 29ef81
-   The spc plugin has been removed. It has been replaced by the gme
Packit 29ef81
    plugin.
Packit 29ef81
Packit 29ef81
-   The acmmp3dec and acmenc plugins for Windows have been removed. ACM
Packit 29ef81
    is an ancient legacy API and there was no point in keeping the
Packit 29ef81
    plugins around for a licensed MP3 decoder now that the MP3 patents
Packit 29ef81
    have expired and we have a decoder in -good. We also didn’t ship
Packit 29ef81
    these in our cerbero-built Windows packages, so it’s unlikely that
Packit 29ef81
    they’ll be missed.
Packit 29ef81
Packit 29ef81
Packit 29ef81
Miscellaneous API additions
Packit 29ef81
Packit 29ef81
-   GstBitwriter: new generic bit writer API to complement the existing
Packit 29ef81
    bit reader
Packit 29ef81
Packit 29ef81
-   gst_buffer_new_wrapped_bytes() creates a wrap buffer from a GBytes
Packit 29ef81
Packit 29ef81
-   gst_caps_set_features_simple() sets a caps feature on all the
Packit 29ef81
    structures of a GstCaps
Packit 29ef81
Packit 29ef81
-   New GST_QUERY_BITRATE query: This allows determining from downstream
Packit 29ef81
    what the expected bitrate of a stream may be which is useful in
Packit 29ef81
    queue2 for setting time based limits when upstream does not provide
Packit 29ef81
    timing information. tsdemux, qtdemux and matroskademux have basic
Packit 29ef81
    support for this query on their sink pads.
Packit 29ef81
Packit 29ef81
-   elements: there is a new “Hardware” class specifier. Elements
Packit 29ef81
    interacting with hardware devices should specify this classifier in
Packit 29ef81
    their element factory class metadata. This is useful to advertise as
Packit 29ef81
    one might need to put such elements into READY state to test if the
Packit 29ef81
    hardware is present in the system for example.
Packit 29ef81
Packit 29ef81
-   protection: Add a new definition for unspecified system protection,
Packit 29ef81
    GST_PROTECTION_UNSPECIFIED_SYSTEM_ID
Packit 29ef81
Packit 29ef81
-   take functions for various mini objects that didn’t have them yet:
Packit 29ef81
    gst_query_take(), gst_message_take(), gst_tag_list_take(),
Packit 29ef81
    gst_buffer_list_take(). Unlike the various _replace() functions
Packit 29ef81
    _take() does not increase the reference count but takes ownership of
Packit 29ef81
    the mini object passed.
Packit 29ef81
Packit 29ef81
-   clear functions for various mini object types and GstObject which
Packit 29ef81
    unrefs the object or mini object (if non-NULL) and sets the variable
Packit 29ef81
    pointed to to NULL: gst_clear_structure(), gst_clear_tag_list(),
Packit 29ef81
    gst_clear_query(), gst_clear_message(), gst_clear_event(),
Packit 29ef81
    gst_clear_caps(), gst_clear_buffer_list(), gst_clear_buffer(),
Packit 29ef81
    gst_clear_mini_object(), gst_clear_object()
Packit 29ef81
Packit 29ef81
-   miniobject: new API gst_mini_object_add_parent() and
Packit 29ef81
    gst_mini_object_remove_parent() to set parent pointers on mini
Packit 29ef81
    objects to ensure correct writability: Every container of
Packit 29ef81
    miniobjects now needs to store itself as parent in the child object,
Packit 29ef81
    and remove itself again later. A mini object is then only writable
Packit 29ef81
    if there is at most one parent, that parent is writable itself, and
Packit 29ef81
    the reference count of the mini object is 1. GstBuffer (for
Packit 29ef81
    memories), GstBufferList (for buffers), GstSample (for caps, buffer,
Packit 29ef81
    bufferlist), and GstVideoOverlayComposition were updated
Packit 29ef81
    accordingly. Without this it was possible to have e.g. a buffer list
Packit 29ef81
    with a refcount of 2 used in two places at once that both modify the
Packit 29ef81
    same buffer with refcount 1 at the same time wrongly thinking it is
Packit 29ef81
    writable even though it’s really not.
Packit 29ef81
Packit 29ef81
-   poll: add API to watch for POLLPRI and stop treating POLLPRI as a
Packit 29ef81
    read. This is useful to wait for video4linux events which are
Packit 29ef81
    signalled via POLLPRI.
Packit 29ef81
Packit 29ef81
-   sample: new API to update the contents of a GstSample and make it
Packit 29ef81
    writable: gst_sample_set_buffer(), gst_sample_set_caps(),
Packit 29ef81
    gst_sample_set_segment(), gst_sample_set_info(), plus
Packit 29ef81
    gst_sample_is_writable() and gst_sample_make_writable(). This makes
Packit 29ef81
    it possible to reuse a sample object and avoid unnecessary memory
Packit 29ef81
    allocations, for example in appsink.
Packit 29ef81
Packit 29ef81
-   ClockIDs now keep a weak reference to underlying clock to avoid
Packit 29ef81
    crashes in basesink in corner cases where a clock goes away while
Packit 29ef81
    the ClockID is still in use, plus some new API
Packit 29ef81
    (gst_clock_id_get_clock(), gst_clock_id_uses_clock()) to check the
Packit 29ef81
    clock a ClockID is linked to.
Packit 29ef81
Packit 29ef81
-   The GstCheck unit test library gained a
Packit 29ef81
    fail_unless_equals_clocktime() convenience macro as well as some new
Packit 29ef81
    GstHarness API for for proposing meta APIs from the allocation
Packit 29ef81
    query: gst_harness_add_propose_allocation_meta(). ASSERT_CRITICAL()
Packit 29ef81
    checks in unit tests are now skipped if GStreamer was compiled with
Packit 29ef81
    GST_DISABLE_GLIB_CHECKS.
Packit 29ef81
Packit 29ef81
-   gst_audio_buffer_truncate() convenience function to truncate a raw
Packit 29ef81
    audio buffer
Packit 29ef81
Packit 29ef81
-   GstDiscoverer has support for caching the results of discovery in
Packit 29ef81
    the default cache directory. This can be enabled with the use-cache
Packit 29ef81
    property and is disabled by default.
Packit 29ef81
Packit 29ef81
-   GstMeta that are attached to GstBuffers are now always stored in the
Packit 29ef81
    order in which they were added.
Packit 29ef81
Packit 29ef81
-   Additional support for signalling ONVIF specific features were
Packit 29ef81
    added: the SEEK event can store a trickmode-interval now and support
Packit 29ef81
    for the Rate-Control and Frames RTSP headers was added to the RTSP
Packit 29ef81
    library.
Packit 29ef81
Packit 29ef81
Packit 29ef81
Miscellaneous performance and memory optimisations
Packit 29ef81
Packit 29ef81
As always there have been many performance and memory usage improvements
Packit 29ef81
across all components and modules. Some of them (such as dmabuf
Packit 29ef81
import/export) have already been mentioned elsewhere so won’t be
Packit 29ef81
repeated here.
Packit 29ef81
Packit 29ef81
The following list is only a small snapshot of some of the more
Packit 29ef81
interesting optimisations that haven’t been mentioned in other contexts
Packit 29ef81
yet:
Packit 29ef81
Packit 29ef81
-   The GstVideoEncoder and GstVideoDecoder base classes now release the
Packit 29ef81
    STREAM_LOCK when pushing out buffers, which means (multi-threaded)
Packit 29ef81
    encoders and decoders can now receive and continue to process input
Packit 29ef81
    buffers whilst waiting for downstream elements in the pipeline to
Packit 29ef81
    process the buffer that was pushed out. This increases throughput
Packit 29ef81
    and reduces processing latency, also and especially for
Packit 29ef81
    hardware-accelerated encoder/decoder elements.
Packit 29ef81
Packit 29ef81
-   GstQueueArray has seen a few API additions
Packit 29ef81
    (gst_queue_array_peek_nth(), gst_queue_array_set_clear_func(),
Packit 29ef81
    gst_queue_array_clear()) so that it can be used in other places like
Packit 29ef81
    GstAdapter instead of a GList, which reduces allocations and
Packit 29ef81
    improves performance.
Packit 29ef81
Packit 29ef81
-   appsink now reuses the sample object in pull_sample() if possible
Packit 29ef81
Packit 29ef81
-   rtpsession only starts the RTCP thread when it’s actually needed now
Packit 29ef81
Packit 29ef81
-   udpsrc uses a buffer pool now and the GstUdpSrc object structure was
Packit 29ef81
    optimised for better cache performance
Packit 29ef81
Packit 29ef81
GstPlayer
Packit 29ef81
Packit 29ef81
-   API was added to fine-tune the synchronisation offset between
Packit 29ef81
    subtitles and video
Packit 29ef81
Packit 29ef81
Packit 29ef81
Miscellaneous changes
Packit 29ef81
Packit 29ef81
-   As a result of moving to newer FFmpeg APIs, encoder and decoder
Packit 29ef81
    elements exposed by the GStreamer FFmpeg wrapper plugin (gst-libav)
Packit 29ef81
    may have seen possibly incompatible changes to property names and/or
Packit 29ef81
    types, and not all properties exposed might be functional. We are
Packit 29ef81
    still reviewing the new properties and aim to minimise breaking
Packit 29ef81
    changes at least for the most commonly-used properties, so please
Packit 29ef81
    report any issues you run into!
Packit 29ef81
Packit 29ef81
OpenGL integration
Packit 29ef81
Packit 29ef81
-   The OpenGL mixer elements have been moved from -bad to
Packit 29ef81
    gst-plugins-base (see above)
Packit 29ef81
Packit 29ef81
-   The Mesa GBM backend now supports headless mode
Packit 29ef81
Packit 29ef81
-   gloverlaycompositor: New OpenGL-based compositor element that
Packit 29ef81
    flattens any overlays from GstVideoOverlayCompositionMetas into the
Packit 29ef81
    video stream.
Packit 29ef81
Packit 29ef81
-   glalpha: New element that adds an alpha channel to a video stream.
Packit 29ef81
    The values of the alpha channel can either be set to a constant or
Packit 29ef81
    can be dynamically calculated via chroma keying. It is similar to
Packit 29ef81
    the existing alpha element but based on OpenGL. Calculations are
Packit 29ef81
    done in floating point so results may not be identical to the output
Packit 29ef81
    of the existing alpha element.
Packit 29ef81
Packit 29ef81
-   glupload: Implement direct dmabuf uploader, the idea being that some
Packit 29ef81
    GPUs (like the Vivante series) can actually perform the YUV->RGB
Packit 29ef81
    conversion internally, so no custom conversion shaders are needed.
Packit 29ef81
    To make use of this feature, we need an additional uploader that can
Packit 29ef81
    import DMABUF FDs and also directly pass the pixel format, relying
Packit 29ef81
    on the GPU to do the conversion.
Packit 29ef81
Packit 29ef81
-   The OpenGL library no longer restores the OpenGL viewport. This is a
Packit 29ef81
    performance optimization to not require performing multiple
Packit 29ef81
    expensive glGet*() function calls per frame. This affects any
Packit 29ef81
    application or plugin use of the following functions and objects:
Packit 29ef81
    -   glcolorconvert library object (not the element)
Packit 29ef81
    -   glviewconvert library object (not the element)
Packit 29ef81
    -   gst_gl_framebuffer_draw_to_texture()
Packit 29ef81
    -   custom GstGLWindow implementations
Packit 29ef81
Packit 29ef81
Packit 29ef81
Tracing framework and debugging improvements
Packit 29ef81
Packit 29ef81
-   There is now a GDB PRETTY PRINTER FOR VARIOUS GSTREAMER TYPES: For
Packit 29ef81
    GstObject pointers the type and name is added, e.g.
Packit 29ef81
    0x5555557e4110 [GstDecodeBin|decodebin0]. For GstMiniObject pointers
Packit 29ef81
    the object type is added, e.g. 0x7fffe001fc50 [GstBuffer]. For
Packit 29ef81
    GstClockTime and GstClockTimeDiff the time is also printed in human
Packit 29ef81
    readable form, e.g. 150116219955 [+0:02:30.116219955].
Packit 29ef81
Packit 29ef81
-   GDB EXTENSION WITH TWO CUSTOM GDB COMMANDS gst-dot AND gst-print:
Packit 29ef81
Packit 29ef81
    -   gst-dot creates dot files that a very close to what
Packit 29ef81
        GST_DEBUG_BIN_TO_DOT_FILE() produces, but object properties and
Packit 29ef81
        buffer contents such as codec-data in caps are not available.
Packit 29ef81
Packit 29ef81
    -   gst-print produces high-level information about a GStreamer
Packit 29ef81
        object. This is currently limited to pads for GstElements and
Packit 29ef81
        events for the pads. The output may look like this:
Packit 29ef81
Packit 29ef81
-   gst_structure_to_string() now serialises the actual value of
Packit 29ef81
    pointers when serialising GstStructures instead of claiming they’re
Packit 29ef81
    NULL. This makes debug logging in various places less confusing,
Packit 29ef81
    because it’s clear now that structure fields actually hold valid
Packit 29ef81
    objects. Such object pointer values will never be deserialised
Packit 29ef81
    however.
Packit 29ef81
Packit 29ef81
Packit 29ef81
Tools
Packit 29ef81
Packit 29ef81
-   gst-inspect-1.0 has coloured output now and will automatically use a
Packit 29ef81
    pager if the output does not fit on a page. This only works in a
Packit 29ef81
    UNIX environment and if the output is not piped, and on Windows 10
Packit 29ef81
    build 16257 or newer. If you don’t like the colours you can disable
Packit 29ef81
    them by setting the GST_INSPECT_NO_COLORS=1 environment variable or
Packit 29ef81
    passing the --no-color command line option.
Packit 29ef81
Packit 29ef81
Packit 29ef81
GStreamer RTSP server
Packit 29ef81
Packit 29ef81
-   Improved backlog handling when using TCP interleaved for data
Packit 29ef81
    transport. Before there was a fixed maximum size for backlog
Packit 29ef81
    messages, which was prone to deadlocks and made it difficult to
Packit 29ef81
    control memory usage with the watch backlog. The RTSP server now
Packit 29ef81
    limits queued TCP data messages to one per stream, moving queuing of
Packit 29ef81
    the data into the pipeline and leaving the RTSP connection
Packit 29ef81
    responsive to RTSP messages in both directions, preventing all those
Packit 29ef81
    problems.
Packit 29ef81
Packit 29ef81
-   Initial ULP Forward Error Correction support in rtspclientsink and
Packit 29ef81
    for RECORD mode in the server.
Packit 29ef81
Packit 29ef81
-   API to explicitly enable retransmission requests (RTX)
Packit 29ef81
Packit 29ef81
-   Lots of multicast-related fixes
Packit 29ef81
Packit 29ef81
-   rtsp-auth: Add support for parsing .htdigest files
Packit 29ef81
Packit 29ef81
Packit 29ef81
GStreamer VAAPI
Packit 29ef81
Packit 29ef81
-   Support Wayland’s display for context sharing, so the application
Packit 29ef81
    can pass its own wl_display in order to be used for the VAAPI
Packit 29ef81
    display creation.
Packit 29ef81
Packit 29ef81
-   A lot of work to support new Intel hardware using media-driver as VA
Packit 29ef81
    backend.
Packit 29ef81
Packit 29ef81
-   For non-x86 devices, VAAPI display can instantiate, through DRM,
Packit 29ef81
    with no PCI bus. This enables the usage of libva-v4l2-request
Packit 29ef81
    driver.
Packit 29ef81
Packit 29ef81
-   Added support for XDG-shell protocol as wl_shell replacement which
Packit 29ef81
    is currently deprecated. This change add as dependency
Packit 29ef81
    wayland-protocol.
Packit 29ef81
Packit 29ef81
-   GstVaapiFilter, GstVaapiWindow, and GstVaapiDecoder classes now
Packit 29ef81
    inherit from GstObject, gaining all the GStreamer’s instrumentation
Packit 29ef81
    support.
Packit 29ef81
Packit 29ef81
-   The metadata now specifies the plugin as Hardware class.
Packit 29ef81
Packit 29ef81
-   H264 decoder is more stable with problematic streams.
Packit 29ef81
Packit 29ef81
-   In H265 decoder added support for profiles main-422-10 (P010_10LE),
Packit 29ef81
    main-444 (AYUV) and main-444-10 (Y410)
Packit 29ef81
Packit 29ef81
-   JPEG decoder handles dynamic resolution changes.
Packit 29ef81
Packit 29ef81
-   More specification adherence in H264 and H265 encoders.
Packit 29ef81
Packit 29ef81
Packit 29ef81
GStreamer OMX
Packit 29ef81
Packit 29ef81
-   Add support of NV16 format to video encoders input.
Packit 29ef81
Packit 29ef81
-   Video decoders now handle the ALLOCATION query to tell upstream
Packit 29ef81
    about the number of buffers they require. Video encoders will also
Packit 29ef81
    use this query to adjust their number of allocated buffers
Packit 29ef81
    preventing starvation when using dynamic buffer mode.
Packit 29ef81
Packit 29ef81
-   The OMX_PERFORMANCE debug category has been renamed to OMX_API_TRACE
Packit 29ef81
    and can now be used to track a widder variety of interactions
Packit 29ef81
    between OMX and GStreamer.
Packit 29ef81
Packit 29ef81
-   Video encoders will now detect frame rate only changes and will
Packit 29ef81
    inform OMX about it rather than doing a full format reset.
Packit 29ef81
Packit 29ef81
-   Various Zynq UltraScale+ specific improvements:
Packit 29ef81
    -   Video encoders are now able to import dmabuf from upstream.
Packit 29ef81
    -   Support for HEVC range extension profiles and more AVC profiles.
Packit 29ef81
    -   We can now request video encoders to generate an IDR using the
Packit 29ef81
        force key unit event.
Packit 29ef81
Packit 29ef81
Packit 29ef81
GStreamer Editing Services and NLE
Packit 29ef81
Packit 29ef81
-   Added a gesdemux element, it is an auto pluggable element that
Packit 29ef81
    allows decoding edit list like files supported by GES
Packit 29ef81
Packit 29ef81
-   Added gessrc which wraps a GESTimeline as a standard source element
Packit 29ef81
    (implementing the ges protocol handler)
Packit 29ef81
Packit 29ef81
-   Added basic support for videorate::rate property potentially
Packit 29ef81
    allowing changing playback speed
Packit 29ef81
Packit 29ef81
-   Layer priority is now fully automatic and they should be moved with
Packit 29ef81
    the new ges_timeline_move_layer method, ges_layer_set_priority is
Packit 29ef81
    now deprecated.
Packit 29ef81
Packit 29ef81
-   Added a ges_timeline_element_get_layer_priority so we can simply get
Packit 29ef81
    all information about GESTimelineElement position in the timeline
Packit 29ef81
Packit 29ef81
-   GESVideoSource now auto orientates the images if it is defined in a
Packit 29ef81
    meta (overridable).
Packit 29ef81
Packit 29ef81
-   Added some PyGObject overrides to make the API more pythonic
Packit 29ef81
Packit 29ef81
-   The threading model has been made more explicit with safe guard to
Packit 29ef81
    make sure not thread safe APIs are not used from the wrong threads.
Packit 29ef81
    It is also now possible to properly handle in what thread the API
Packit 29ef81
    should be used.
Packit 29ef81
Packit 29ef81
-   Optimized GESClip and GESTrackElement creation
Packit 29ef81
Packit 29ef81
-   Added a way to compile out the old, unused and deprecated
Packit 29ef81
    GESPitiviFormatter
Packit 29ef81
Packit 29ef81
-   Re implemented the timeline editing API making it faster and making
Packit 29ef81
    the code much more maintainable
Packit 29ef81
Packit 29ef81
-   Simplified usage of nlecomposition outside GES by removing quirks in
Packit 29ef81
    it API usage and removing the need to treat it specially from an
Packit 29ef81
    application perspective.
Packit 29ef81
Packit 29ef81
-   ges-launch-1.0:
Packit 29ef81
Packit 29ef81
    -   Added support to add titles to the timeline
Packit 29ef81
    -   Enhance the help auto generating it from the code
Packit 29ef81
Packit 29ef81
-   Deprecate ges_timeline_load_from_uri as loading the timeline should
Packit 29ef81
    be done through a project now
Packit 29ef81
Packit 29ef81
-   MANY leaks have been plugged and the unit testsuite is now “leak
Packit 29ef81
    free”
Packit 29ef81
Packit 29ef81
Packit 29ef81
GStreamer validate
Packit 29ef81
Packit 29ef81
-   Added an action type to verify the checksum of the sink last-sample
Packit 29ef81
Packit 29ef81
-   Added an include keyword to validate scenarios
Packit 29ef81
Packit 29ef81
-   Added the notion of variable in scenarios, with the set-vars keyword
Packit 29ef81
Packit 29ef81
-   Started adding support for “performance” like tests by allowing to
Packit 29ef81
    define the number of dropped buffers or the minimum buffer frequency
Packit 29ef81
    on a specific pad
Packit 29ef81
Packit 29ef81
-   Added a validateflow plugin which allows defining the data flow to
Packit 29ef81
    be seen on a particular pad and verifying that following runs match
Packit 29ef81
    the expectations
Packit 29ef81
Packit 29ef81
-   Added support for appsrc based test definition so we can instrument
Packit 29ef81
    the data pushed into the pipeline from scenarios
Packit 29ef81
Packit 29ef81
-   Added a mockdecryptor allowing adding tests with on encrypted files,
Packit 29ef81
    the element will potentially be instrumented with a validate
Packit 29ef81
    scenario
Packit 29ef81
Packit 29ef81
-   gst-validate-launcher:
Packit 29ef81
Packit 29ef81
    -   Cleaned up output
Packit 29ef81
Packit 29ef81
    -   Changed the default for “muting” tests as user doesn’t expect
Packit 29ef81
        hundreds of windows to show up when running the testsuite
Packit 29ef81
Packit 29ef81
    -   Fixed the outputted xunit files to be compatible with GitLab
Packit 29ef81
Packit 29ef81
    -   Added support to run tests on media files in push mode (using
Packit 29ef81
        pushfile://)
Packit 29ef81
Packit 29ef81
    -   Added support for running inside gst-build
Packit 29ef81
Packit 29ef81
    -   Added support for running ssim tests on rendered files
Packit 29ef81
Packit 29ef81
    -   Added a way to simply define tests on pipelines through a simple
Packit 29ef81
        .json file
Packit 29ef81
Packit 29ef81
    -   Added a python app to easily run python testsuite reusing all
Packit 29ef81
        the launcher features
Packit 29ef81
Packit 29ef81
    -   Added flatpak knowledge so we can print backtrace even when
Packit 29ef81
        running from within flatpak
Packit 29ef81
Packit 29ef81
    -   Added a way to automatically generated “known issues”
Packit 29ef81
        suppressions lines
Packit 29ef81
Packit 29ef81
    -   Added a way to rerun tests to check if they are flaky and added
Packit 29ef81
        a way to tolerate tests known to be flaky
Packit 29ef81
Packit 29ef81
    -   Add a way to output html log files
Packit 29ef81
Packit 29ef81
Packit 29ef81
GStreamer Python Bindings
Packit 29ef81
Packit 29ef81
-   add binding for gst_pad_set_caps()
Packit 29ef81
Packit 29ef81
-   pygobject dependency requirement was bumped to >= 3.8
Packit 29ef81
Packit 29ef81
-   new audiotestsrc, audioplot, and mixer plugin examples, and a
Packit 29ef81
    dynamic pipeline example
Packit 29ef81
Packit 29ef81
Packit 29ef81
GStreamer C# Bindings
Packit 29ef81
Packit 29ef81
-   bindings for the GstWebRTC library
Packit 29ef81
Packit 29ef81
Packit 29ef81
GStreamer Rust Bindings
Packit 29ef81
Packit 29ef81
The GStreamer Rust bindings are now officially part of the GStreamer
Packit 29ef81
project and are also maintained in the GStreamer GitLab.
Packit 29ef81
Packit 29ef81
The releases will generally not be synchronized with the releases of
Packit 29ef81
other GStreamer parts due to dependencies on other projects.
Packit 29ef81
Packit 29ef81
Also unlike the other GStreamer libraries, the bindings will not commit
Packit 29ef81
to full API stability but instead will follow the approach that is
Packit 29ef81
generally taken by Rust projects, e.g.:
Packit 29ef81
Packit 29ef81
1)  0.12.X will be completely API compatible with all other 0.12.Y
Packit 29ef81
    versions.
Packit 29ef81
2)  0.12.X+1 will contain bugfixes and compatible new feature additions.
Packit 29ef81
3)  0.13.0 will _not_ be backwards compatible with 0.12.X but projects
Packit 29ef81
    will be able to stay at 0.12.X without any problems as long as they
Packit 29ef81
    don’t need newer features.
Packit 29ef81
Packit 29ef81
The current stable release is 0.12.2 and the next release series will be
Packit 29ef81
0.13, probably around March 2019.
Packit 29ef81
Packit 29ef81
At this point the bindings cover most of GStreamer core (except for most
Packit 29ef81
notably GstAllocator and GstMemory), and most parts of the app, audio,
Packit 29ef81
base, check, editing-services, gl, net. pbutils, player, rtsp,
Packit 29ef81
rtsp-server, sdp, video and webrtc libraries.
Packit 29ef81
Packit 29ef81
Also included is support for creating subclasses of the following types
Packit 29ef81
and writing GStreamer plugins:
Packit 29ef81
Packit 29ef81
-   gst::Element
Packit 29ef81
-   gst::Bin and gst::Pipeline
Packit 29ef81
-   gst::URIHandler and gst::ChildProxy
Packit 29ef81
-   gst::Pad, gst::GhostPad
Packit 29ef81
-   gst_base::Aggregator and gst_base::AggregatorPad
Packit 29ef81
-   gst_base::BaseSrc and gst_base::BaseSink
Packit 29ef81
-   gst_base::BaseTransform
Packit 29ef81
Packit 29ef81
Changes to 0.12.X since 0.12.0
Packit 29ef81
Packit 29ef81
Fixed
Packit 29ef81
Packit 29ef81
-   PTP clock constructor actually creates a PTP instead of NTP clock
Packit 29ef81
Packit 29ef81
Added
Packit 29ef81
Packit 29ef81
-   Bindings for GStreamer Editing Services
Packit 29ef81
-   Bindings for GStreamer Check testing library
Packit 29ef81
-   Bindings for the encoding profile API (encodebin)
Packit 29ef81
Packit 29ef81
-   VideoFrame, VideoInfo, AudioInfo, StructureRef implements Send and
Packit 29ef81
    Sync now
Packit 29ef81
-   VideoFrame has a function to get the raw FFI pointer
Packit 29ef81
-   From impls from the Error/Success enums to the combined enums like
Packit 29ef81
    FlowReturn
Packit 29ef81
-   Bin-to-dot file functions were added to the Bin trait
Packit 29ef81
-   gst_base::Adapter implements SendUnique now
Packit 29ef81
-   More complete bindings for the gst_video::VideoOverlay interface,
Packit 29ef81
    especially
Packit 29ef81
    gst_video::is_video_overlay_prepare_window_handle_message()
Packit 29ef81
Packit 29ef81
Changed
Packit 29ef81
Packit 29ef81
-   All references were updated from GitHub to freedesktop.org GitLab
Packit 29ef81
-   Fix various links in the README.md
Packit 29ef81
-   Link to the correct location for the documentation
Packit 29ef81
-   Remove GitLab badge as that only works with gitlab.com currently
Packit 29ef81
Packit 29ef81
Changes in git master for 0.13
Packit 29ef81
Packit 29ef81
Fixed
Packit 29ef81
Packit 29ef81
-   gst::tag::Album is the album tag now instead of artist sortname
Packit 29ef81
Packit 29ef81
Added
Packit 29ef81
Packit 29ef81
-   Subclassing infrastructure was moved directly into the bindings,
Packit 29ef81
    making the gst-plugin crate deprecated. This involves many API
Packit 29ef81
    changes but generally cleans up code and makes it more flexible.
Packit 29ef81
    Take a look at the gst-plugins-rs crate for various examples.
Packit 29ef81
Packit 29ef81
-   Bindings for CapsFeatures and Meta
Packit 29ef81
-   Bindings for
Packit 29ef81
    ParentBufferMeta,VideoMetaandVideoOverlayCompositionMeta`
Packit 29ef81
-   Bindings for VideoOverlayComposition and VideoOverlayRectangle
Packit 29ef81
-   Bindings for VideoTimeCode
Packit 29ef81
Packit 29ef81
-   UniqueFlowCombiner and UniqueAdapter wrappers that make use of the
Packit 29ef81
    Rust compile-time mutability checks and expose more API in a safe
Packit 29ef81
    way, and as a side-effect implement Sync and Send now
Packit 29ef81
Packit 29ef81
-   More complete bindings for Allocation Query
Packit 29ef81
-   pbutils functions for codec descriptions
Packit 29ef81
-   TagList::iter() for iterating over all tags while getting a single
Packit 29ef81
    value per tag. The old ::iter_tag_list() function was renamed to
Packit 29ef81
    ::iter_generic() and still provides access to each value for a tag
Packit 29ef81
-   Bus::iter() and Bus::iter_timed() iterators around the corresponding
Packit 29ef81
    ::pop\*() functions
Packit 29ef81
Packit 29ef81
-   serde serialization of Value can also handle Buffer now
Packit 29ef81
Packit 29ef81
-   Extensive comments to all examples with explanations
Packit 29ef81
-   Transmuxing example showing how to use typefind, multiqueue and
Packit 29ef81
    dynamic pads
Packit 29ef81
-   basic-tutorial-12 was ported and added
Packit 29ef81
Packit 29ef81
Changed
Packit 29ef81
Packit 29ef81
-   Rust 1.31 is the minimum supported Rust version now
Packit 29ef81
-   Update to latest gir code generator and glib bindings
Packit 29ef81
Packit 29ef81
-   Functions returning e.g. gst::FlowReturn or other “combined” enums
Packit 29ef81
    were changed to return split enums like
Packit 29ef81
    Result<gst::FlowSuccess, gst::FlowError> to allow usage of the
Packit 29ef81
    standard Rust error handling.
Packit 29ef81
Packit 29ef81
-   MiniObject subclasses are now newtype wrappers around the underlying
Packit 29ef81
    GstRc<FooRef> wrapper. This does not change the API in any breaking
Packit 29ef81
    way for the current usages, but allows MiniObjects to also be
Packit 29ef81
    implemented in other crates and makes sure rustdoc places the
Packit 29ef81
    documentation in the right places.
Packit 29ef81
Packit 29ef81
-   BinExt extension trait was renamed to GstBinExt to prevent conflicts
Packit 29ef81
    with gtk::Bin if both are imported
Packit 29ef81
Packit 29ef81
-   Buffer::from_slice() can’t possible return None
Packit 29ef81
Packit 29ef81
-   Various clippy warnings
Packit 29ef81
Packit 29ef81
Packit 29ef81
GStreamer Rust Plugins
Packit 29ef81
Packit 29ef81
Like the GStreamer Rust bindings, the Rust plugins are now officially
Packit 29ef81
part of the GStreamer project and are also maintained in the GStreamer
Packit 29ef81
GitLab.
Packit 29ef81
Packit 29ef81
In the 0.3.x versions this contained infrastructure for writing
Packit 29ef81
GStreamer plugins in Rust, and a set of plugins.
Packit 29ef81
Packit 29ef81
In git master that infrastructure was moved to the GLib and GStreamer
Packit 29ef81
bindings directly, together with many other improvements that were made
Packit 29ef81
possible by this, so the gst-plugins-rs repository only contains
Packit 29ef81
GStreamer elements now.
Packit 29ef81
Packit 29ef81
Elements included are:
Packit 29ef81
Packit 29ef81
-   Tutorials plugin: identity, rgb2gray and sinesrc with extensive
Packit 29ef81
    comments
Packit 29ef81
Packit 29ef81
-   rsaudioecho, a port of the audiofx element
Packit 29ef81
Packit 29ef81
-   rsfilesrc, rsfilesink
Packit 29ef81
Packit 29ef81
-   rsflvdemux, a FLV demuxer. Not feature-equivalent with flvdemux yet
Packit 29ef81
Packit 29ef81
-   threadshare plugin: ts-appsrc, ts-proxysrc/sink, ts-queue, ts-udpsrc
Packit 29ef81
    and ts-tcpclientsrc elements that use a fixed number of threads and
Packit 29ef81
    share them between instances. For more background about these
Packit 29ef81
    elements see Sebastian’s talk “When adding more threads adds more
Packit 29ef81
    problems - Thread-sharing between elements in GStreamer” at the
Packit 29ef81
    GStreamer Conference 2017.
Packit 29ef81
Packit 29ef81
-   rshttpsrc, a HTTP source around the hyper/reqwest Rust libraries.
Packit 29ef81
    Not feature-equivalent with souphttpsrc yet.
Packit 29ef81
Packit 29ef81
-   togglerecord, an element that allows to start/stop recording at any
Packit 29ef81
    time and keeps all audio/video streams in sync.
Packit 29ef81
Packit 29ef81
-   mccparse and mccenc, parsers and encoders for the MCC closed caption
Packit 29ef81
    file format.
Packit 29ef81
Packit 29ef81
Changes to 0.3.X since 0.3.0
Packit 29ef81
Packit 29ef81
-   All references were updated from GitHub to freedesktop.org GitLab
Packit 29ef81
-   Fix various links in the README.md
Packit 29ef81
-   Link to the correct location for the documentation
Packit 29ef81
Packit 29ef81
Changes in git master for 0.4
Packit 29ef81
Packit 29ef81
-   togglerecord: Switch to parking_lot crate for mutexes/condition
Packit 29ef81
    variables for lower overhead
Packit 29ef81
-   Merge threadshare plugin here
Packit 29ef81
-   New closedcaption plugin with mccparse and mccenc elements
Packit 29ef81
-   New identity element for the tutorials plugin
Packit 29ef81
Packit 29ef81
-   Register plugins statically in tests instead of relying on the
Packit 29ef81
    plugin loader to find the shared library in a specific place
Packit 29ef81
Packit 29ef81
-   Update to the latest API changes in the GLib and GStreamer bindings
Packit 29ef81
-   Update to the latest versions of all crates
Packit 29ef81
Packit 29ef81
Packit 29ef81
Build and Dependencies
Packit 29ef81
Packit 29ef81
-   The MESON BUILD SYSTEM BUILD IS NOW FEATURE-COMPLETE (*) and it is
Packit 29ef81
    now the recommended build system on all platforms and also used by
Packit 29ef81
    Cerbero to build GStreamer on all platforms. The Autotools build is
Packit 29ef81
    scheduled to be removed in the next cycle. Developers who currently
Packit 29ef81
    use gst-uninstalled should move to gst-build. The build option
Packit 29ef81
    naming has been cleaned up and made consistent and there are now
Packit 29ef81
    feature options to enable/disable plugins and various other features
Packit 29ef81
    on a case-by-case basis. (*) with the exception of plugin docs which
Packit 29ef81
    will be handled differently in future
Packit 29ef81
Packit 29ef81
-   Symbol export in libraries is now controlled via explicit exports
Packit 29ef81
    using symbol visibility or export defines where supported, to ensure
Packit 29ef81
    consistency across all platforms. This also allows libraries to have
Packit 29ef81
    exports that vary based on detected platform features and configure
Packit 29ef81
    options as is the case with the GStreamer OpenGL integration library
Packit 29ef81
    for example. A few symbols that had been exported by accident in
Packit 29ef81
    earlier versions may no longer be exported. These symbols will not
Packit 29ef81
    have had declarations in any public header files then though and
Packit 29ef81
    would not have been usable.
Packit 29ef81
Packit 29ef81
-   The GStreamer FFmpeg wrapper plugin (gst-libav) now depends on
Packit 29ef81
    FFmpeg 4.x and uses the new FFmpeg 4.x API and stopped relying on
Packit 29ef81
    ancient API that was removed with the FFmpeg 4.x release. This means
Packit 29ef81
    that it is no longer possible to build this module against an older
Packit 29ef81
    system-provided FFmpeg 3.x version. Use the internal FFmpeg 4.x copy
Packit 29ef81
    instead if you build using autotools, or use gst-libav 1.14.x
Packit 29ef81
    instead which targets the FFmpeg 3.x API and _should_ work fine in
Packit 29ef81
    combination with a newer GStreamer. It’s difficult for us to support
Packit 29ef81
    both old and new FFmpeg APIs at the same time, apologies for any
Packit 29ef81
    inconvenience caused.
Packit 29ef81
Packit 29ef81
-   Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and
Packit 29ef81
    nvenc can be built against CUDA Toolkit versions 9 and 10.0 now. The
Packit 29ef81
    dynlink interface has been dropped since it’s deprecated in 10.0.
Packit 29ef81
Packit 29ef81
-   The (optional) OpenCV requirement has been bumped to >= 3.0.0 and
Packit 29ef81
    the plugin can also be built against OpenCV 4.x now.
Packit 29ef81
Packit 29ef81
-   New sctp plugin based on usrsctp (for WebRTC data channels)
Packit 29ef81
Packit 29ef81
Cerbero
Packit 29ef81
Packit 29ef81
Cerbero is a meta build system used to build GStreamer plus dependencies
Packit 29ef81
on platforms where dependencies are not readily available, such as
Packit 29ef81
Windows, Android, iOS and macOS.
Packit 29ef81
Packit 29ef81
Cerbero has seen a number of improvements:
Packit 29ef81
Packit 29ef81
-   Cerbero has been ported to Python 3 and requires Python 3.5 or newer
Packit 29ef81
    now
Packit 29ef81
Packit 29ef81
-   Source tarballs are now protected by checksums in the recipes to
Packit 29ef81
    guard against download errors and malicious takeover of projects or
Packit 29ef81
    websites. In addition, downloads are only allowed via secure
Packit 29ef81
    transports now and plain HTTP, FTP and git:// transports are not
Packit 29ef81
    allowed anymore.
Packit 29ef81
Packit 29ef81
-   There is now a new fetch-bootstrap command which downloads sources
Packit 29ef81
    required for bootstrapping, with an optional --build-tools-only
Packit 29ef81
    argument to match the bootstrap --build-tools-only command.
Packit 29ef81
Packit 29ef81
-   The bootstrap, build, package and bundle-source commands gained a
Packit 29ef81
    new --offline switch that ensures that only sources from the cache
Packit 29ef81
    are used and never downloaded via the network. This is useful in
Packit 29ef81
    combination with the fetch and fetch-bootstrap commands that acquire
Packit 29ef81
    sources ahead of time before any build steps are executed. This
Packit 29ef81
    allows more control over the sources used and when sources are
Packit 29ef81
    updated, and is particularly useful for build environments that
Packit 29ef81
    don’t have network access.
Packit 29ef81
Packit 29ef81
-   bootstrap --assume-yes will automatically say ‘yes’ to any
Packit 29ef81
    interactive prompts during the bootstrap stage, such as those from
Packit 29ef81
    apt-get or yum.
Packit 29ef81
Packit 29ef81
-   bootstrap --system-only will only bootstrap the system without build
Packit 29ef81
    tools.
Packit 29ef81
Packit 29ef81
-   Manifest support: The build manifest can be used in continuous
Packit 29ef81
    integration (CI) systems to fixate the Git revision of certain
Packit 29ef81
    projects so that all builds of a pipeline are on the same reference.
Packit 29ef81
    This is used in GStreamer’s gitlab CI for example. It can also be
Packit 29ef81
    used in order to re-produce a specific build. To set a manifest, you
Packit 29ef81
    can set manifest = 'my_manifest.xml' in your configuration file, or
Packit 29ef81
    use the --manifest command line option. The command line option will
Packit 29ef81
    take precedence over anything specific in the configuration file.
Packit 29ef81
Packit 29ef81
-   The new build-deps command can be used to build only the
Packit 29ef81
    dependencies of a recipe, without the recipe itself.
Packit 29ef81
Packit 29ef81
-   new --list-variants command to list available variants
Packit 29ef81
Packit 29ef81
-   variants can now be set on the command line via the -v option as a
Packit 29ef81
    comma-separated list. This overrides any variants set in any
Packit 29ef81
    configuration files.
Packit 29ef81
Packit 29ef81
-   new qt5, intelmsdk and nvidia variants for enabling Qt5 and hardware
Packit 29ef81
    codec support. See the Enabling Optional Features with Variants
Packit 29ef81
    section in the Cerbero documentation for more details how to enable
Packit 29ef81
    and use these variants.
Packit 29ef81
Packit 29ef81
-   When building on Windows, Cerbero can now build GStreamer recipes
Packit 29ef81
    and core dependencies such as glib with Visual Studio. This is
Packit 29ef81
    controlled by the visualstudio variant. Visual Studio 2015, 2017,
Packit 29ef81
    and 2019 are supported. Currently, only 64-bit x86 is supported due
Packit 29ef81
    to a known bug which will be fixed for the next release.
Packit 29ef81
Packit 29ef81
-   A new -t / --timestamp command line switch makes commands print
Packit 29ef81
    timestamps
Packit 29ef81
Packit 29ef81
Packit 29ef81
Platform-specific changes and improvements
Packit 29ef81
Packit 29ef81
Android
Packit 29ef81
Packit 29ef81
-   toolchain: update compiler to clang and NDKr18. NDK r18 removed the
Packit 29ef81
    armv5 target and only has Android platforms that target at least
Packit 29ef81
    armv7 so the armv5 target is not useful anymore.
Packit 29ef81
Packit 29ef81
-   The way that GIO modules are named has changed due to upstream GLib
Packit 29ef81
    natively adding support for loading static GIO modules. This means
Packit 29ef81
    that any GStreamer application using gnutls for SSL/TLS on the
Packit 29ef81
    Android or iOS platforms (or any other setup using static libraries)
Packit 29ef81
    will fail to link looking for the g_io_module_gnutls_load_static()
Packit 29ef81
    function. The new function name is now
Packit 29ef81
    g_io_gnutls_load(gpointer data). data can be NULL for a static
Packit 29ef81
    library. Look at this commit for the necessary change in the
Packit 29ef81
    examples.
Packit 29ef81
Packit 29ef81
-   various build issues on Android have been fixed.
Packit 29ef81
Packit 29ef81
macOS and iOS
Packit 29ef81
Packit 29ef81
-   various build issues on iOS have been fixed.
Packit 29ef81
Packit 29ef81
-   the minimum required iOS version is now 9.0. The difference in
Packit 29ef81
    adoption between 8.0 and 9.0 is 0.1% and the bump to 9.0 fixes some
Packit 29ef81
    build issues.
Packit 29ef81
Packit 29ef81
-   The way that GIO modules are named has changed due to upstream GLib
Packit 29ef81
    natively adding support for loading static GIO modules. This means
Packit 29ef81
    that any GStreamer application using gnutls for SSL/TLS on the
Packit 29ef81
    Android or iOS platforms (or any other setup using static libraries)
Packit 29ef81
    will fail to link looking for the g_io_module_gnutls_load_static()
Packit 29ef81
    function. The new function name is now
Packit 29ef81
    g_io_gnutls_load(gpointer data). data can be NULL for a static
Packit 29ef81
    library. Look at this commit for the necessary change in the
Packit 29ef81
    examples.
Packit 29ef81
Packit 29ef81
Windows
Packit 29ef81
Packit 29ef81
-   The webrtcdsp element is shipped again as part of the Windows binary
Packit 29ef81
    packages, the build system issue has been resolved.
Packit 29ef81
Packit 29ef81
-   ‘Inconsistent DLL linkage’ warnings when building with MSVC have
Packit 29ef81
    been fixed
Packit 29ef81
Packit 29ef81
-   Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and
Packit 29ef81
    nvenc build on Windows now, also with MSVC and using Meson.
Packit 29ef81
Packit 29ef81
-   The ksvideosrc camera capture plugin supports 16-bit grayscale video
Packit 29ef81
    now
Packit 29ef81
Packit 29ef81
-   The wasapisrc audio capture element implements loopback recording
Packit 29ef81
    from another output device or sink
Packit 29ef81
Packit 29ef81
-   wasapisink recover from low buffer levels in shared mode and some
Packit 29ef81
    exclusive mode fixes
Packit 29ef81
Packit 29ef81
-   dshowsrc now implements the GstDeviceMonitor interface
Packit 29ef81
Packit 29ef81
Packit 29ef81
Contributors
Packit 29ef81
Packit 29ef81
Aaron Boxer, Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț,
Packit 29ef81
Alex Ashley, Alexey Chernov, Alicia Boya García, Amit Pandya, Andoni
Packit 29ef81
Morales Alastruey, Andreas Frisch, Andre McCurdy, Andy Green, Anthony
Packit 29ef81
Violo, Antoine Jacoutot, Antonio Ospite, Arun Raghavan, Aurelien Jarno,
Packit 29ef81
Aurélien Zanelli, ayaka, Bananahemic, Bastian Köcher, Branko Subasic,
Packit 29ef81
Brendan Shanks, Carlos Rafael Giani, Charlie Turner, Christoph Reiter,
Packit 29ef81
Corentin Noël, Daeseok Youn, Damian Vicino, Dan Kegel, Daniel Drake,
Packit 29ef81
Daniel Klamt, Danilo Spinella, Dardo D Kleiner, David Ing, David
Packit 29ef81
Svensson Fors, Devarsh Thakkar, Dimitrios Katsaros, Edward Hervey,
Packit 29ef81
Emilio Pozuelo Monfort, Enrique Ocaña González, Erlend Eriksen, Ezequiel
Packit 29ef81
Garcia, Fabien Dessenne, Fabrizio Gennari, Florent Thiéry, Francisco
Packit 29ef81
Velazquez, Freyr666, Garima Gaur, Gary Bisson, George Kiagiadakis, Georg
Packit 29ef81
Lippitsch, Georg Ottinger, Geunsik Lim, Göran Jönsson, Guillaume
Packit 29ef81
Desmottes, H1Gdev, Haihao Xiang, Haihua Hu, Harshad Khedkar, Havard
Packit 29ef81
Graff, He Junyan, Hoonhee Lee, Hosang Lee, Hyunjun Ko, Ilya Smelykh,
Packit 29ef81
Ingo Randolf, Iñigo Huguet, Jakub Adam, James Stevenson, Jan Alexander
Packit 29ef81
Steffens, Jan Schmidt, Jerome Laheurte, Jimmy Ohn, Joakim Johansson,
Packit 29ef81
Jochen Henneberg, Johan Bjäreholt, John-Mark Bell, John Bassett, John
Packit 29ef81
Nikolaides, Jonathan Karlsson, Jonny Lamb, Jordan Petridis, Josep Torra,
Packit 29ef81
Joshua M. Doe, Jos van Egmond, Juan Navarro, Julian Bouzas, Jun Xie,
Packit 29ef81
Junyan He, Justin Kim, Kai Kang, Kim Tae Soo, Kirill Marinushkin, Kyrylo
Packit 29ef81
Polezhaiev, Lars Petter Endresen, Linus Svensson, Louis-Francis
Packit 29ef81
Ratté-Boulianne, Lucas Stach, Luis de Bethencourt, Luz Paz, Lyon Wang,
Packit 29ef81
Maciej Wolny, Marc-André Lureau, Marc Leeman, Marco Trevisan (Treviño),
Packit 29ef81
Marcos Kintschner, Marian Mihailescu, Marinus Schraal, Mark Nauwelaerts,
Packit 29ef81
Marouen Ghodhbane, Martin Kelly, Matej Knopp, Mathieu Duponchelle,
Packit 29ef81
Matteo Valdina, Matthew Waters, Matthias Fend, memeka, Michael Drake,
Packit 29ef81
Michael Gruner, Michael Olbrich, Michael Tretter, Miguel Paris, Mike
Packit 29ef81
Wey, Mikhail Fludkov, Naveen Cherukuri, Nicola Murino, Nicolas Dufresne,
Packit 29ef81
Niels De Graef, Nirbheek Chauhan, Norbert Wesp, Ognyan Tonchev, Olivier
Packit 29ef81
Crête, Omar Akkila, Pat DeSantis, Patricia Muscalu, Patrick Radizi,
Packit 29ef81
Patrik Nilsson, Paul Kocialkowski, Per Forlin, Peter Körner, Peter
Packit 29ef81
Seiderer, Petr Kulhavy, Philippe Normand, Philippe Renon, Philipp Zabel,
Packit 29ef81
Pierre Labastie, Piotr Drąg, Roland Jon, Roman Sivriver, Roman Shpuntov,
Packit 29ef81
Rosen Penev, Russel Winder, Sam Gigliotti, Santiago Carot-Nemesio,
Packit 29ef81
Sean-Der, Sebastian Dröge, Seungha Yang, Shi Yan, Sjoerd Simons, Snir
Packit 29ef81
Sheriber, Song Bing, Soon, Thean Siew, Sreerenj Balachandran, Stefan
Packit 29ef81
Ringel, Stephane Cerveau, Stian Selnes, Suhas Nayak, Takeshi Sato,
Packit 29ef81
Thiago Santos, Thibault Saunier, Thomas Bluemel, Tianhao Liu,
Packit 29ef81
Tim-Philipp Müller, Tobias Ronge, Tomasz Andrzejak, Tomislav Tustonić,
Packit 29ef81
U. Artie Eoff, Ulf Olsson, Varunkumar Allagadapa, Víctor Guzmán, Víctor
Packit 29ef81
Manuel Jáquez Leal, Vincenzo Bono, Vineeth T M, Vivia Nikolaidou, Wang
Packit 29ef81
Fei, wangzq, Whoopie, Wim Taymans, Wind Yuan, Wonchul Lee, Xabier
Packit 29ef81
Rodriguez Calvar, Xavier Claessens, Haihao Xiang, Yacine Bandou,
Packit 29ef81
Yeongjin Jeong, Yuji Kuwabara, Zeeshan Ali,
Packit 29ef81
Packit 29ef81
… and many others who have contributed bug reports, translations, sent
Packit 29ef81
suggestions or helped testing.
Packit 29ef81
Packit 29ef81
Packit 29ef81
Stable 1.16 branch
Packit 29ef81
Packit 29ef81
After the 1.16.0 release there will be several 1.16.x bug-fix releases
Packit 29ef81
which will contain bug fixes which have been deemed suitable for a
Packit 29ef81
stable branch, but no new features or intrusive changes will be added to
Packit 29ef81
a bug-fix release usually. The 1.16.x bug-fix releases will be made from
Packit 29ef81
the git 1.16 branch, which is a stable branch.
Packit 29ef81
Packit 29ef81
1.16.0
Packit 29ef81
Packit 29ef81
1.16.0 was released on 19 April 2019.
Packit 29ef81
Packit 29ef81
1.16.1
Packit 29ef81
Packit 29ef81
The first 1.16 bug-fix release (1.16.1) was released on 23 September
Packit 29ef81
2019.
Packit 29ef81
Packit 29ef81
This release only contains bugfixes and it _should_ be safe to update
Packit 29ef81
from 1.16.0.
Packit 29ef81
Packit 29ef81
Highlighted bugfixes in 1.16.1
Packit 29ef81
Packit 29ef81
-   GStreamer-vaapi: fix green frames and decoding artefacts in some
Packit 29ef81
    cases
Packit 29ef81
-   OpenGL: fix wayland event source burning CPU in certain
Packit 29ef81
    circumstances
Packit 29ef81
-   Memory leak fixes and memory footprint improvements
Packit 29ef81
-   Performance improvements
Packit 29ef81
-   Stability and security fixes
Packit 29ef81
-   Fix enum for GST_MESSAGE_DEVICE_CHANGED which is technically an API
Packit 29ef81
    break, but this is only used internally in GStreamer and duplicated
Packit 29ef81
    another message enum
Packit 29ef81
-   hls: Make crypto dependency optional when hls-crypto is auto
Packit 29ef81
-   player: fix switching back and forth between forward and reverse
Packit 29ef81
    playback
Packit 29ef81
-   decklinkaudiosink: Drop late buffers
Packit 29ef81
-   openh264enc: Fix compilation with openh264 v2.0
Packit 29ef81
-   wasapisrc: fix segtotal value being always 2
Packit 29ef81
-   Fix issues on Android Q
Packit 29ef81
Packit 29ef81
gstreamer core
Packit 29ef81
Packit 29ef81
-   device: gst_device_create_element() is transfer floating, not
Packit 29ef81
    transfer full
Packit 29ef81
-   filesink, fdsink: respect IOV_MAX for the writev iovec array
Packit 29ef81
    (Solaris)
Packit 29ef81
-   miniobject: free qdata array when the last qdata is removed (reduces
Packit 29ef81
    memory footprint)
Packit 29ef81
-   bin: Fix minor race when adding to a bin
Packit 29ef81
-   aggregator: Actually handle NEED_DATA return from update_src_caps()
Packit 29ef81
-   aggregator: Ensure that the source pad is created as a
Packit 29ef81
    GstAggregatorPad if no type is given in the pad template
Packit 29ef81
-   latency: fix custom event leaks
Packit 29ef81
-   registry: Use plugin directory from the build system for
Packit 29ef81
    relocateable Windows builds
Packit 29ef81
-   message: fix up enum value for GST_MESSAGE_DEVICE_CHANGED
Packit 29ef81
-   info: Fix deadlock in gst_ring_buffer_logger_log()
Packit 29ef81
-   downloadbuffer: Check for flush after seek
Packit 29ef81
-   identity: Non-live upstream have no max latency
Packit 29ef81
-   identity: Fix the ts-offset property getter
Packit 29ef81
-   aggregator: Make parsing of explicit sink pad names more robust
Packit 29ef81
-   bufferpool: Fix the buffer size reset code
Packit 29ef81
-   fakesink, fakesrc, identity: sync gst_buffer_get_flags_string() with
Packit 29ef81
    new flags
Packit 29ef81
-   multiqueue: never unref queries we do not own
Packit 29ef81
-   concat: Reset last_stop on FLUSH_STOP too
Packit 29ef81
-   aggregator: fix flow-return boolean return type mismatch
Packit 29ef81
-   gstpad: Handle probes that reset the data field
Packit 29ef81
-   gst: Add support for g_autoptr(GstPromise)
Packit 29ef81
-   gst-inspect: fix unused-const-variable error in windows
Packit 29ef81
-   base: Include gstbitwriter.h in the single-include header
Packit 29ef81
-   Add various Since: 1.16 markers
Packit 29ef81
-   GST_MESSAGE_DEVICE_CHANGED duplicates GST_MESSAGE_REDIRECT
Packit 29ef81
-   Targetting wrong meson version
Packit 29ef81
-   meson: Make get_flex_version.py script executable
Packit 29ef81
-   meson: Link to objects instead of static helper library
Packit 29ef81
-   meson: set correct install path for gdb helper
Packit 29ef81
-   meson: fix warning about configure_file() install kwarg
Packit 29ef81
Packit 29ef81
gst-plugins-base
Packit 29ef81
Packit 29ef81
-   video-info: parse field-order for all interleaved formats
Packit 29ef81
-   tests: fix up valgrind suppressions for glibc getaddrinfo leaks
Packit 29ef81
-   meson: Reenable NEON support (in audio resampler)
Packit 29ef81
-   audio-resampler: Update NEON to handle remainders not multiples of 4
Packit 29ef81
-   eglimage: Fix memory leak
Packit 29ef81
-   audiodecoder: Set output caps with negotiated caps to avoid critical
Packit 29ef81
    info printed
Packit 29ef81
-   video-frame: Take TFF flag from the video info if it was set in
Packit 29ef81
    there
Packit 29ef81
-   glcolorconvert: Fix external-oes shader
Packit 29ef81
-   video-anc: Fix ADF detection when trying to extract data from vanc
Packit 29ef81
-   gl/wayland: fix wayland event source burning CPU
Packit 29ef81
-   configure: add used attribute in order to make NEON detection
Packit 29ef81
    working with -flto.
Packit 29ef81
-   audioaggregator: Return a valid rate range from caps query if
Packit 29ef81
    downstream supports a whole range
Packit 29ef81
-   rtspconnection: data-offset increase not set
Packit 29ef81
-   rtpsconnection: Fix number of n_vectors
Packit 29ef81
-   video-color: Add compile-time assert for ColorimetryInfo enum
Packit 29ef81
-   audiodecoder: Fix leak on failed audio gaps
Packit 29ef81
-   glupload: Keep track of cached EGLImage texture format
Packit 29ef81
-   playsink: Set ts-offset to text sink.
Packit 29ef81
-   meson.build: use join_paths() on prefix
Packit 29ef81
-   compositor: copy frames as-is when possible
Packit 29ef81
-   compositor: Skip background when a pad obscures it completely
Packit 29ef81
-   rtspconnection: Start CSeq at 1 (some servers don’t cope well with
Packit 29ef81
    seqnum 0)
Packit 29ef81
-   viv-fb: fix build break for GST_GL_API
Packit 29ef81
-   gl/tests: fix shader creation tests part 2
Packit 29ef81
-   gl/tests: fix shader creation tests
Packit 29ef81
-   wayland: set the event queue also for the xdg_wm_base object
Packit 29ef81
-   video: Added GI annotation for gstvideoaffinetransformationmeta
Packit 29ef81
    apply_matrix
Packit 29ef81
-   compositor: Remove unneeded left shift for ARGB/AYUV SOURCE operator
Packit 29ef81
-   Colorimetry fixes
Packit 29ef81
-   alsasrc: Don’t use driver timestamp if it’s zero
Packit 29ef81
-   gloverlaycompositor: fix crash if buffer doesn’t have video meta
Packit 29ef81
-   meson: Don’t try to find gio-unix on Windows
Packit 29ef81
-   glshader: fix default external-oes shaders
Packit 29ef81
-   subparse: fix pushing WebVTT cue with no newline at the end
Packit 29ef81
-   meson: Missing “android” choice in gl_winsys
Packit 29ef81
-   video test: Keep BE test inline with LE test
Packit 29ef81
-   id3tag: Correctly validate the year from v1 tags before passing to
Packit 29ef81
    GstDateTime
Packit 29ef81
-   gl/wayland: Don’t prefix wl_shell struct field
Packit 29ef81
-   eglimage: Add compatibility define for DRM_FORMAT_NV24
Packit 29ef81
-   Add various Since: 1.16 markers
Packit 29ef81
-   video-anc: Handle SD formats correctly
Packit 29ef81
-   Docs: add GL_CFLAGS to GTK_DOC_CFLAGS
Packit 29ef81
-   GL: using vaapi and showing on glimagesink on wayland loads one core
Packit 29ef81
    for 100% on 1.16
Packit 29ef81
-   GL: external-oes shader places precision qualifier before #extension
Packit 29ef81
    (was: androidmedia amcviddec fail after 1.15.90 1.16.0 update)
Packit 29ef81
Packit 29ef81
gst-plugins-good
Packit 29ef81
Packit 29ef81
-   alpha: Fix one_over_kc calculation on arm/aarch64
Packit 29ef81
-   souphttpsrc: Fix incompatible type build warning
Packit 29ef81
-   rtpjitterbuffer: limit max-dropout-time to maxint32
Packit 29ef81
-   rtpjitterbuffer: Clear clock master before unreffing
Packit 29ef81
-   qtdemux: Use empty-array safe way to cleanup GPtrArray
Packit 29ef81
-   v4l2: Fix type compatibility issue with glibc 2.30
Packit 29ef81
-   valgrind: suppress Cond error coming from gnutls and Ignore leaks
Packit 29ef81
    caused by shout/sethostent
Packit 29ef81
-   rtpfunnel: forward correct segment when switching pad
Packit 29ef81
-   gtkglsink: fix crash when widget is resized after element
Packit 29ef81
    destruction
Packit 29ef81
-   jpegdec: Don’t dereference NULL input state if we have no caps in
Packit 29ef81
    TIME segments
Packit 29ef81
-   rtp: opuspay: fix memory leak in gst_rtp_opus_pay_setcaps
Packit 29ef81
-   v4l2videodec: return right type for drain.
Packit 29ef81
-   rtpssrcdemux: Avoid taking streamlock out-of-band
Packit 29ef81
-   Support v4l2src buffer orphaning
Packit 29ef81
-   splitmuxsink: Only set running time on finalizing sink element when
Packit 29ef81
    in async-finalize mode
Packit 29ef81
-   rtpsession: Always keep at least one NACK on early RTCP
Packit 29ef81
-   rtspsrc: do not try to send EOS with invalid seqnum
Packit 29ef81
-   rtpsession: Call on-new-ssrc earlier
Packit 29ef81
-   rtprawdepay: Don’t get rid of the buffer pool on FLUSH_STOP
Packit 29ef81
-   rtpbin: Free storage when freeing session
Packit 29ef81
-   scaletempo: Advertise interleaved layout in caps templates
Packit 29ef81
-   Support v4l2src buffer orphaning
Packit 29ef81
Packit 29ef81
gst-plugins-bad
Packit 29ef81
Packit 29ef81
-   hls: Make crypto dependency optional when hls-crypto is auto
Packit 29ef81
-   player: fix switching back and forth between forward and reverse
Packit 29ef81
    playback
Packit 29ef81
-   decklinkaudiosink: Drop late buffers
Packit 29ef81
-   srt: Add stats property, include sender-side statistics and fix a
Packit 29ef81
    crash
Packit 29ef81
-   dshowsrcwrapper: fix regression on device selection
Packit 29ef81
-   tsdemux: Limit the maximum PES payload size
Packit 29ef81
-   wayland: Define libdrm_dep in meson.build to fix meson configure
Packit 29ef81
    error when kms is disabled
Packit 29ef81
-   sctp: Fix crash on free() when using the MSVC binaries
Packit 29ef81
-   webrtc: Fix signals documentation
Packit 29ef81
-   h264parse: don’t critical on VUI parameters > 2^31
Packit 29ef81
-   rtmp: Fix crash inside free() with MSVC on Windows
Packit 29ef81
-   iqa: fix leak of map_meta.data
Packit 29ef81
-   d3dvideosink: Fix crash on WinProc handler
Packit 29ef81
-   amc: Fix crash when a sync_meta survives its sink
Packit 29ef81
-   pitch: Fix race between putSamples() and setting soundtouch
Packit 29ef81
    parameters
Packit 29ef81
-   webrtc: fix type of max-retransmits, make it work
Packit 29ef81
-   mxfdemux: Also allow picture essence element type 0x05 for VC-3
Packit 29ef81
-   wasapi: fix symbol redefinition build error
Packit 29ef81
-   decklinkvideosrc: Retrieve mode of the ancillary data from the frame
Packit 29ef81
-   decklinkaudiosrc/decklinkvideosrc: Do nothing in
Packit 29ef81
    BaseSrc::negotiate() and…
Packit 29ef81
-   adaptivedemux: do not retry downloads during shutdown.
Packit 29ef81
-   webrtcbin: fix GInetAddress leak
Packit 29ef81
-   dtls: fix dtls connection object leak
Packit 29ef81
-   siren: fix a global buffer overflow spotted by asan
Packit 29ef81
-   kmssink: Fix implicit declaration build error
Packit 29ef81
-   Fix -Werror=return-type error in configure.
Packit 29ef81
-   aiff: Fix infinite loop in header parsing.
Packit 29ef81
-   nvdec: Fix possible frame drop on EOS
Packit 29ef81
-   srtserversrc: yields malformed rtp payloads
Packit 29ef81
-   srtsink: Fix crash in case no URI
Packit 29ef81
-   dtlsagent: Fix leaked dtlscertificate
Packit 29ef81
-   meson: bluez: Early terminate configure on Windows
Packit 29ef81
-   decklink: Correctly ensure >=16 byte alignment for the buffers we
Packit 29ef81
    allocate
Packit 29ef81
-   webrtcbin: fix DTLS when receivebin is set to DROP
Packit 29ef81
-   zbar: Include running-time, stream-time and duration in the messages
Packit 29ef81
-   uvch264src: Make sure we set our segment
Packit 29ef81
-   avwait: Allow start and end timecode to be set back to NULL
Packit 29ef81
-   avwait: Don’t print warnings for every buffer passed
Packit 29ef81
-   hls/meson: fix dependency logic
Packit 29ef81
-   Waylandsink gnome shell workaround
Packit 29ef81
-   avwait: Allow setting start timecode after end timecode; protect
Packit 29ef81
    propeties with mutex
Packit 29ef81
-   wayland/wlbuffer: just return if used_by_compositor is true when
Packit 29ef81
    attach
Packit 29ef81
-   proxy: Set SOURCE flag on the source and SINK flag on the sink
Packit 29ef81
-   ivfparse: Check the data size against IVF_FRAME_HEADER_SIZE
Packit 29ef81
-   webrtc: Add various Since markers to new types after 1.14.0
Packit 29ef81
-   msdk: fix the typo in debug category
Packit 29ef81
-   dtlsagent: Do not overwrite openssl locking callbacks
Packit 29ef81
-   meson: Fix typo in gsm header file name
Packit 29ef81
-   srt: handle races in state change
Packit 29ef81
-   webrtc: Add g_autoptr() support for public types
Packit 29ef81
-   openh264enc: Fix compilation with openh264 v2.0
Packit 29ef81
-   meson: Allow CUDA_PATH fallback on linux
Packit 29ef81
-   meson: fix build with opencv=enabled and opencv4. Fixes #964
Packit 29ef81
-   meson: Add support for the colormanagement plugin
Packit 29ef81
-   autotools: gstsctp: set LDFLAGS
Packit 29ef81
-   nvenc/nvdec: Add NVIDIA SDK headers to noinst_HEADERS
Packit 29ef81
-   h264parse: Fix typo when setting multiview mode and flags
Packit 29ef81
-   Add various Since: 1.16 markers
Packit 29ef81
-   opencv: allow compilation against 4.1.x
Packit 29ef81
-   Backport of some minor srt commits without MR into 1.16
Packit 29ef81
-   meson: fix build with opencv=enabled and opencv4
Packit 29ef81
-   wasapisrc: fix segtotal value being always 2 due to an unused
Packit 29ef81
    variable
Packit 29ef81
-   meson: colormanagement missing
Packit 29ef81
-   androidmedia amcviddec fail after 1.15.90 1.16.0 update
Packit 29ef81
Packit 29ef81
gst-plugins-ugly
Packit 29ef81
Packit 29ef81
-   meson: Always require the gmodule dependency
Packit 29ef81
Packit 29ef81
gst-libav
Packit 29ef81
Packit 29ef81
-   docs: don’t include the type hierarchy, fixing build with gtk-doc
Packit 29ef81
    1.30
Packit 29ef81
-   avvidenc: Correctly signal interlaced input to ffmpeg when the input
Packit 29ef81
    caps are interlaced
Packit 29ef81
-   autotools: add bcrypt to win32 libs
Packit 29ef81
-   gstav: Use libavcodec util function for version check
Packit 29ef81
-   API documentation fails to build with gtk-doc 1.30
Packit 29ef81
Packit 29ef81
gst-rtsp-server
Packit 29ef81
Packit 29ef81
-   rtsp-client: RTP Info must exist in PLAY response
Packit 29ef81
-   onvif-media: fix “void function returning a value” compiler warning
Packit 29ef81
-   Add various Since: 1.16 markers
Packit 29ef81
Packit 29ef81
gstreamer-vaapi
Packit 29ef81
Packit 29ef81
-   fix egl context leak and display creation race
Packit 29ef81
-   pluginutil: Remove Mesa from drivers white list
Packit 29ef81
-   Classify vaapidecodebin as a hardware decoder
Packit 29ef81
-   Fix two leak
Packit 29ef81
-   vaapivideomemory: demote error message to info
Packit 29ef81
-   encoder: vp8,vp9: reset frame_counter when input frame’s format
Packit 29ef81
    changes
Packit 29ef81
-   encoder: mpeg2: No packed header for SPS and PPS
Packit 29ef81
-   decoder: vp9: clear parser pointer after release
Packit 29ef81
-   encoder: Fixes deadlock in change state function
Packit 29ef81
-   encoder: h265: reset num_ref_idx_l1_active_minus1 when low delay B.
Packit 29ef81
-   encoder: not call ensure_num_slices inside g_assert()
Packit 29ef81
-   encoder: continue if roi meta is NULL
Packit 29ef81
-   decoder: vp9: Set chroma_ ype by VP9 bit_depth
Packit 29ef81
-   vaapipostproc: don’t do any color conversion when GL_TEXTURE_UPLOAD
Packit 29ef81
-   libs: surface: fix double free when dmabuf export fails
Packit 29ef81
-   h264 colors and artifacts upon upgrade to GStreamer Core Library
Packit 29ef81
    version 1.15.90
Packit 29ef81
Packit 29ef81
gst-editing-services
Packit 29ef81
Packit 29ef81
-   element: Properly handle the fact that pasting can return NULL
Packit 29ef81
-   Add various missing Since markers
Packit 29ef81
-   launch: Fix caps restriction short names
Packit 29ef81
-   python: Avoid warning about using deprecated methods
Packit 29ef81
-   video-transition: When using non crossfade effect use ‘over’
Packit 29ef81
    operations
Packit 29ef81
-   meson: Generate a pkgconfig file for the GES plugin
Packit 29ef81
Packit 29ef81
gst-devtools
Packit 29ef81
Packit 29ef81
-   launcher: testsuites: skip systemclock stress tests
Packit 29ef81
-   validate: fix build on macOS
Packit 29ef81
Packit 29ef81
gst-build
Packit 29ef81
Packit 29ef81
-   Update win flex bison binaries
Packit 29ef81
-   Update the flexmeson windows binary version
Packit 29ef81
-   Don’t allow people to run meson inside the uninstalled env
Packit 29ef81
Packit 29ef81
Cerbero build tool and packaging changes in 1.16.1
Packit 29ef81
Packit 29ef81
-   cerbero: Add enums for Fedora 30, Fedora 31 and Debian bullseye
Packit 29ef81
-   gnutls.recipe: Fix crash when running on Android Q
Packit 29ef81
-   recipes: Upgrade openssl to 1.1.1c
Packit 29ef81
-   Fix some typos
Packit 29ef81
-   add support for vs build tools 2019, fixes #183
Packit 29ef81
-   android: Adjust gstreamer-1.0.mk for NDK r20
Packit 29ef81
-   Fix license enums
Packit 29ef81
-   bootstrap: Fix dnf usage on CentOS
Packit 29ef81
-   Make _add_system_libs reentrant
Packit 29ef81
-   meson.recipe: Fix setting of bitcode compiler options
Packit 29ef81
-   cerbero: support Ubuntu disco dingo
Packit 29ef81
-   cerbero: Set utf-8 to execution character set also on MSVC
Packit 29ef81
-   git: simplify the reset of the source branch.
Packit 29ef81
-   FORTIFY: %n not allowed on Android Q
Packit 29ef81
-   Fails to build if there’s no license file for the given license
Packit 29ef81
    (GPL/LGPL without Plus, Proprietary, …)
Packit 29ef81
Packit 29ef81
Contributors to 1.16.1
Packit 29ef81
Packit 29ef81
Aaron Boxer, Adam Duskett, Alicia Boya García, Andoni Morales Alastruey,
Packit 29ef81
Antonio Ospite, Arun Raghavan, Askar Safin, A. Wilcox, Charlie Turner,
Packit 29ef81
Christoph Reiter, Damian Hobson-Garcia, Daniel Klamt, Danny Smith, David
Packit 29ef81
Gunzinger, David Ing, David Svensson Fors, Doug Nazar, Edward Hervey,
Packit 29ef81
Eike Hein, Fabrice Bellet, Fernando Herrrera, Georg Lippitsch, Göran
Packit 29ef81
Jönsson, Guillaume Desmottes, Haihao Xiang, Haihua Hu, Håvard Graff, Hou
Packit 29ef81
Qi, Ignacio Casal Quinteiro, Ilya Smelykh, Jan Schmidt, Javier Celaya,
Packit 29ef81
Jim Mason, Jonas Larsson, Jordan Petridis, Jose Antonio Santos Cadenas,
Packit 29ef81
Juan Navarro, Knut Andre Tidemann, Kristofer Björkström, Lucas Stach,
Packit 29ef81
Marco Felsch, Marcos Kintschner, Mark Nauwelaerts, Martin Liska, Martin
Packit 29ef81
Theriault, Mathieu Duponchelle, Matthew Waters, Michael Olbrich, Mike
Packit 29ef81
Gorse, Nicola Murino, Nicolas Dufresne, Niels De Graef, Niklas
Packit 29ef81
Hambüchen, Nirbheek Chauhan, Olivier Crête, Philippe Normand, Ross
Packit 29ef81
Burton, Sebastian Dröge, Seungha Yang, Song Bing, Thiago Santos,
Packit 29ef81
Thibault Saunier, Thomas Coldrick, Tim-Philipp Müller, Víctor Manuel
Packit 29ef81
Jáquez Leal, Vivia Nikolaidou, Xavier Claessens, Yeongjin Jeong,
Packit 29ef81
Packit 29ef81
… and many others who have contributed bug reports, translations, sent
Packit 29ef81
suggestions or helped testing. Thank you all!
Packit 29ef81
Packit 29ef81
List of merge requests and issues fixed in 1.16.1
Packit 29ef81
Packit 29ef81
-   List of Merge Requests applied in 1.16
Packit 29ef81
-   List of Issues fixed in 1.16.1
Packit 29ef81
Packit 29ef81
Packit 29ef81
Known Issues
Packit 29ef81
Packit 29ef81
-   possibly breaking/incompatible changes to properties of wrapped
Packit 29ef81
    FFmpeg decoders and encoders (see above).
Packit 29ef81
Packit 29ef81
-   The way that GIO modules are named has changed due to upstream GLib
Packit 29ef81
    natively adding support for loading static GIO modules. This means
Packit 29ef81
    that any GStreamer application using gnutls for SSL/TLS on the
Packit 29ef81
    Android or iOS platforms (or any other setup using static libraries)
Packit 29ef81
    will fail to link looking for the g_io_module_gnutls_load_static()
Packit 29ef81
    function. The new function name is now
Packit 29ef81
    g_io_gnutls_load(gpointer data). See Android/iOS sections above for
Packit 29ef81
    further details.
Packit 29ef81
Packit 29ef81
Packit 29ef81
Schedule for 1.18
Packit 29ef81
Packit 29ef81
Our next major feature release will be 1.18, and 1.17 will be the
Packit 29ef81
unstable development version leading up to the stable 1.18 release. The
Packit 29ef81
development of 1.17/1.18 will happen in the git master branch.
Packit 29ef81
Packit 29ef81
The plan for the 1.18 development cycle is yet to be confirmed, but it
Packit 29ef81
is now expected that feature freeze will take place shortly after the
Packit 29ef81
GStreamer conference/hackfest in early November 2019, with the first
Packit 29ef81
1.18 stable release ready in late November or early December.
Packit 29ef81
Packit 29ef81
1.18 will be backwards-compatible to the stable 1.16, 1.14, 1.12, 1.10,
Packit 29ef81
1.8, 1.6, 1.4, 1.2 and 1.0 release series.
Packit 29ef81
Packit 29ef81
------------------------------------------------------------------------
Packit 29ef81
Packit 29ef81
_These release notes have been prepared by Tim-Philipp Müller with_
Packit 29ef81
_contributions from Sebastian Dröge, Guillaume Desmottes, Matthew
Packit 29ef81
Waters, _ _Thibault Saunier, and Víctor Manuel Jáquez Leal._
Packit 29ef81
Packit 29ef81
_License: CC BY-SA 4.0_