X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=subprojects%2Fgstreamer-vaapi%2FNEWS;h=472dd522a6b3ad40b63b3c5ac0d9f1cfbc359745;hb=064711d8b382c106afffe75cefbabe8f7bac8532;hp=0e581c39b8f309e72086551ee7ea1045409aa9da;hpb=f627a5c2ed50f8638d83e8ecd3fc29251af29f0a;p=platform%2Fupstream%2Fgstreamer.git diff --git a/subprojects/gstreamer-vaapi/NEWS b/subprojects/gstreamer-vaapi/NEWS index 0e581c3..472dd52 100644 --- a/subprojects/gstreamer-vaapi/NEWS +++ b/subprojects/gstreamer-vaapi/NEWS @@ -1,23 +1,14 @@ -GStreamer 1.20 Release Notes +GStreamer 1.22 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release -around October/November 2021. +GStreamer 1.22.0 was originally released on 23 January 2023. -1.19.x is the unstable development version that is being developed in -the git main branch and which will eventually result in 1.20, and 1.19.2 -is the current development release in that series +The latest bug-fix release in the stable 1.22 series is 1.22.4 and was +released on 20 June 2023. -It is expected that feature freeze will be in early October 2021, -followed by one or two 1.19.9x pre-releases and the new 1.20 stable -release around October/November 2021. - -1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12, -1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series. - -See https://gstreamer.freedesktop.org/releases/1.20/ for the latest +See https://gstreamer.freedesktop.org/releases/1.22/ for the latest version of this document. -Last updated: Wednesday 22 September 2021, 18:00 UTC (log) +Last updated: Tuesday 20 June 2023, 16:30 UTC (log) Introduction @@ -30,270 +21,2010 @@ fixes and other improvements. Highlights -- this section will be completed in due course +- AV1 video codec support improvements +- New HLS, DASH and Microsoft Smooth Streaming adaptive streaming + clients +- Qt6 support for rendering video inside a QML scene +- Minimal builds optimised for binary size, including only the + individual elements needed +- Playbin3, Decodebin3, UriDecodebin3, Parsebin enhancements and + stabilisation +- WebRTC simulcast support and support for Google Congestion Control +- WebRTC-based media server ingestion/egress (WHIP/WHEP) support +- New easy to use batteries-included WebRTC sender plugin +- Easy RTP sender timestamp reconstruction for RTP and RTSP +- ONVIF timed metadata support +- New fragmented MP4 muxer and non-fragmented MP4 muxer +- New plugins for Amazon AWS storage and audio transcription services +- New gtk4paintablesink and gtkwaylandsink renderers +- New videocolorscale element that can convert and scale in one go for + better performance +- High bit-depth video improvements +- Touchscreen event support in navigation API +- Rust plugins now shipped in macOS and Windows/MSVC binary packages +- H.264/H.265 timestamp correction elements for PTS/DTS reconstruction + before muxers +- Improved design for DMA buffer sharing and modifier handling for + hardware-accelerated video decoders/encoders/filters and + capturing/rendering on Linux +- Video4Linux2 hardware accelerated decoder improvements +- CUDA integration and Direct3D11 integration and plugin improvements +- New H.264 / AVC, H.265 / HEVC and AV1 hardware-accelerated video + encoders for AMD GPUs using the Advanced Media Framework (AMF) SDK +- applemedia: H.265 / HEVC video encoding + decoding support +- androidmedia: H.265 / HEVC video encoding support +- New “force-live” property for audiomixer, compositor, glvideomixer, + d3d11compositor etc. +- Lots of new plugins, features, performance improvements and bug + fixes Major new features and changes -Noteworthy new features and API +AV1 video codec support improvements + +AV1 is a royalty free next-generation video codec by AOMedia and a free +alternative to H.265/HEVC. + +While supported in earlier versions of GStreamer already, this release +saw a lot of improvements across the board: + +- Support for hardware encoding and decoding via VAAPI/VA, AMF, D3D11, + NVCODEC, QSV and Intel MediaSDK. Hardware codecs for AV1 are slowly + becoming available in embedded systems and desktop GPUs (AMD, Intel, + NVIDIA), and these can now be used via GStreamer. + +- New AV1 RTP payloader and depayloader elements. + +- New encoder settings in the AOM reference encoder-based av1enc + element. + +- Various improvements in the AV1 parser and in the MP4/Matroska/WebM + muxers/demuxers. + +- dav1d and rav1e based software decoder/encoder elements shipped as + part of the binaries. + +- AV1 parser improvements and various bugfixes all over the place. + +Touchscreen event support in Navigation API + +The Navigation API supports the sending of key press events and mouse +events through a GStreamer pipeline. Typically these will be picked up +by a video sink on which these events happen and then the event is +transmitted into the pipeline so it can be handled by elements inside +the pipeline if it wasn’t handled by the application. + +This has traditionally been used for DVD menu support, but can also be +used to forward such inputs to source elements that render a web page +using a browser engine such as WebKit or Chromium. + +This API has now gained support for touchscreen events, and this has +been implemented in various plugins such as the GTK, Qt, XV, and x11 +video sinks as well as the wpevideosrc element. + +GStreamer CUDA integration + +- New gst-cuda library +- integration with D3D11 and NVIDIA dGPU NVMM elements +- new cudaconvertscale element + +GStreamer Direct3D11 integration + +- New gst-d3d11 public library + - gst-d3d11 library is not integrated with GStreamer documentation + system yet. Please refer to the examples +- d3d11screencapture: Add Windows Graphics Capture API based capture + mode, including Win32 application window capturing +- d3d11videosink and d3d11convert can support flip/rotation and crop + meta +- d3d11videosink: New emit-present property and present signal so that + applications can overlay an image on Direct3D11 swapchain’s + backbuffer via Direct3D/Direct2D APIs. See also C++ and Rust + examples +- d3d11compositor supports YUV blending/composing without intermediate + RGB(A) conversion to improve performance +- Direct3D11 video decoders are promoted to GST_RANK_PRIMARY or + higher, except for the MPEG2 decoder + +H.264/H.265 timestamp correction elements + +- Muxers are often picky and need proper PTS/DTS timestamps set on the + input buffers, but that can be a problem if the encoded input media + stream comes from a source that doesn’t provide proper signalling of + DTS, such as is often the case for RTP, RTSP and WebRTC streams or + Matroska container files. Theoretically parsers should be able to + fix this up, but it would probably require fairly invasive changes + in the parsers, so two new elements h264timestamper and + h265timestamper bridge the gap in the meantime and can reconstruct + missing PTS/DTS. + +Easy sender timestamp reconstruction for RTP and RTSP + +- it was always possible to reconstruct and retrieve the original RTP + sender timestamps in GStreamer, but required a fair bit of + understanding of the internal mechanisms and the right property + configuration and clock setup. + +- rtspsrc and rtpjitterbuffer gained a new + “add-reference-timestamp-meta” property that if set puts the + original absolute reconstructed sender timestamps on the output + buffers via a meta. This is particularly useful if the sender is + synced to an NTP clock or PTP clock. The original sender timestamps + are either based on the RTCP NTP times, NTP RTP header extensions + (RFC6051) or RFC7273-style clock signalling. + +Qt6 support -- this section will be filled in in due course +- new qml6glsink element for Qt6 similar to the existing Qt5 element. + Matching source and overlay elements will hopefully follow in the + near future. -New elements +OpenGL + Video library enhancements -- this section will be filled in in due course +- Support for new video formats (NV12_4L4, NV12_16L32S, NV12_8L128, + NV12_10BE_8L128) and dmabuf import in more formats (Y410, Y212_LE, + Y212_BE, Y210, NV21, NV61) + +- Improved support for tiled formats with arbitrary tile dimensions, + as needed by certain hardware decoders/encoders + +- glvideomixer: New “crop-left,”crop-right, “crop-top” and + “crop-bottom” pad properties for cropping inputs + +- OpenGL support for gst_video_sample_convert(): + + - Used for video snapshotting and thumbnailing, to convert buffers + retrieved from appsinks or sink “last-sample” properties in + JPG/PNG thumbnails. + - This function can now take samples and buffers backed by GL + textures as input and will automatically plug a gldownload + element in that case. + +High bit-depth support (10, 12, 16 bits per component value) improvements + +- compositor can now handle any supported input format and also mix + high-bitdepth (10-16 bit) formats (naively) + +- videoflip has gained support for higher bit depth formats. + +- vp9enc, vp9dec now support 12-bit formats and also 10-bit 4:4:4 + +WebRTC + +- Allow insertion of bandwidth estimation elements e.g. for Google + Congestion Control (GCC) support + +- Initial support for sending or receiving simulcast streams + +- Support for asynchronous host resolution for STUN/TURN servers + +- GstWebRTCICE was split into base classes and implementation to make + it possible to plug custom ICE implementations + +- webrtcsink: batteries-included WebRTC sender (Rust) + +- whipsink: WebRTC HTTP ingest (WHIP) to a MediaServer (Rust) + +- whepsrc: WebRTC HTTP egress (WHEP) from a MediaServer (Rust) + +- Many other improvements and bug fixes + +New HLS, DASH and MSS adaptive streaming clients + +A new set of “adaptive demuxers” to support HLS, DASH and MSS adaptive +streaming protocols has been added. They provide improved performance, +new features and better stream compatibility compared to the previous +elements. These new elements require a “streams-aware” pipeline such as +playbin3, uridecodebin3 or urisourcebin. + +The previous elements’ design prevented implementing several use-cases +and fixing long-standing issues. The new elements were re-designed from +scratch to tackle those: + +- Scheduling Only 3 threads are present, regardless of the number of + streams selected. One in charge of downloading fragments and + manifests, one in charge of outputting parsed data downstream, and + one in charge of scheduling. This improves performance, resource + usage and latency. + +- Better download control The elements now directly control the + scheduling and download of manifests and fragments using libsoup + directly instead of depending on external elements for downloading. + +- Stream selection, only the selected streams are downloaded. This + improves bandwith usage. Switching stream is done in such a way to + ensure there are no gaps, meaning the new stream will be switched to + only once enough data for it has been downloaded. + +- Internal parsing, the downloaded streams are parsed internally. This + allows the element to fully respect the various specifications and + offer accurate buffering, seeking and playback. This is especially + important for HLS streams which require parsing for proper + positioning of streams. + +- Buffering and adaptive rate switching, the new elements handle + buffering internally which allows them to have a more accurate + visibility of which bandwith variant to switch to. + +Playbin3, Decodebin3, UriDecodebin3, Parsebin improvements + +The “new” playback elements introduced in 1.18 (playbin3 and its various +components) have been refactored to allow more use-cases and improve +performance. They are no longer considered experimental, so applications +using the legacy playback elements (playbin and (uri)decodebin) can +migrate to the new components to benefit from these improvements. + +- Gapless The “gapless” feature allows files and streams to be + fetched, buffered and decoded in order to provide a “gapless” + output. This feature has been refactored extensively in the new + components: + - A single (uri)decodebin3 (and therefore a single set of + decoders) is used. This improves memory and cpu usage, since on + identical codecs a single decoder will be used. + - The “next” stream to play will be pre-rolled “just-in-time” + thanks to the buffering improvements in urisourcebin (see below) + - This feature is now handled at the uridecodebin3 level. + Applications that wish to have a “gapless” stream and process it + (instead of just outputting it, for example for transcoding, + retransmission, …) can now use uridecodebin3 directly. Note that + a streamsynchronizer element is required in that case. +- Buffering improvements The urisourcebin element is in charge of + fetching and (optionally) buffering/downloading the stream. It has + been extended and improved: + - When the parse-streams property is used (by default in + uridecodebin3 and playbin3), compatible streams will be demuxed + and parsed (via parsebin) and buffering will be done on the + elementary streams. This provides a more accurate handling of + buffering. Previously buffering was done on a best-effort basis + and was mostly wrong (i.e. downloading more than needed). + - Applications can use urisourcebin with this property as a + convenient way of getting elementary streams from a given URI. + - Elements can handle buffering themselves (such as the new + adaptive demuxers) by answering the GST_QUERY_BUFFERING query. + In that case urisourcebin will not handle it. +- Stream Selection Efficient stream selection was previously only + possible within decodebin3. The downside is that this meant that + upstream elements had to provide all the streams from which to chose + from, which is inefficient. With the addition of the + GST_QUERY_SELECTABLE query, this can now be handled by elements + upstream (i.e. sources) + - Elements that can handle stream selection internally (such as + the new adaptive demuxer elements) answer that query, and handle + the stream selection events themselves. + - In this case, decodebin3 will always process all streams that + are provided to it. +- Instant URI switching This new feature allows switching URIs + “instantly” in playbin3 (and uridecodebin3) without having to change + states. This mimics switching channels on a television. + - If compatible, decoders will be re-used, providing lower + latency/cpu/memory than by switching states. + - This is enabled by setting the instant-uri property to true, + setting the URI to switch to immediately, and then disabling the + instant-uri property again afterwards. +- playbin3, decodebin3, uridecodebin3, parsebin, and urisourcebin are + no longer experimental + - They were originally marked as ‘technology preview’ but have + since seen extensive usage in production settings, so are + considered ready for general use now. + +Fraunhofer AAC audio encoder HE-AAC and AAC-LD profile support + +- fdkaacenc: + - Support for encoding to HE-AACv1 and HE-AACv2 profile + - Support for encoding to AAC Low Delay (LD) profile + - Advanced bitrate control options via new “rate-control”, + “vbr-preset”, “peak-bitrate”, and “afterburner” properties + +RTP rapid synchronization support in the RTP stack (RFC6051) + +RTP provides several mechanisms how streams can be synchronized relative +to each other, and how absolute sender times for RTP packets can be +obtained. One of these mechanisms is via RTCP, which has the +disadvantage that the synchronization information is only distributed +out-of-band and usually some time after the start. + +GStreamer’s RTP stack, specifically the rtpbin, rtpsession and +rtpjitterbuffer elements, now also have support for retrieving and +sending the same synchronization information in-band via RTP header +extensions according to RFC6051 (Rapid Synchronisation of RTP Flows). +Only 64-bit timestamps are supported currently. + +This provides per packet synchronization information from the very +beginning of a stream and allows accurate inter-stream, and (depending +on setup) inter-device, synchronization at the receiver side. + +ONVIF XML Timed Metadata support + +The ONVIF standard implemented by various security cameras also +specifies a format for timed metadata that is transmitted together with +the audio/video streams, usually over RTSP. + +Support for this timed metadata is implemented in the MP4 demuxer now as +well as the new fragmented MP4 muxer and the new non-fragmented MP4 +muxer from the GStreamer Rust plugins. Additionally, the new onvif +plugin ‒ which is part of the GStreamer Rust plugins ‒ provides general +elements for handling the metadata and e.g. overlaying certain parts of +it over a video stream. + +As part of this support for absolute UTC times was also implemented +according to the requirements of the ONVIF standards in the +corresponding elements. + +MP3 gapless playback support + +While MP3 can probably considered a legacy format at this point, a new +feature was added with this release. + +When playing back plain MP3 files, i.e. outside a container format, +switches between files can now be completely gapless if the required +metadata is provided inside the file. There is no standardized metadata +for this, but the LAME MP3 encoder writes metadata that can be parsed by +the mpegaudioparse element now and forwarded to decoders for ensuring +removal of padding samples at the front and end of MP3 files. + +“force-live” property for audio + video aggregators + +This is a quality of life fix for playout and streaming applications +where it is common to have audio and video mixer elements that should +operate in live mode from the start and produce output continuously. + +Often one would start a pipeline without any inputs hooked up to these +mixers in the beginning, and up until now there was no way to easily +force these elements into live mode from the start. One would have to +add an initial live video or audio test source as dummy input to achieve +this. + +The new “force-live” property makes these audio and video aggregators +start in live mode without the need for any dummy inputs, which is +useful for scenarios where inputs are only added after starting the +pipeline. + +This new property should usually be used in connection with the +“min-upstream-latency” property, i.e. you should always set a non-0 +minimum upstream latency then. + +This is now supported in all GstAudioAggregator and GstVideoAggregator +subclasses such as audiomixer, audiointerleave, compositor, +glvideomixer, d3d11compositor, etc. + +New elements and plugins + +- new cudaconvertscale element that can convert and scale in one pass + +- new gtkwaylandsink element based on gtksink, but similar to + waylandsink and uses Wayland APIs directly instead of rendering with + Gtk/Cairo primitives. This approach is only compatible with Gtk3, + and like gtksink this element only supports Gtk3. + +- new h264timestamper and h265timestamper elements to reconstruct + missing pts/dts from inputs that might not provide them such as + e.g. RTP/RTSP/WebRTC inputs (see above) + +- mfaacdec, mfmp3dec: Windows MediaFoundation AAC and MP3 decoders + +- new msdkav1enc AV1 video encoder element + +- new nvcudah264enc, nvcudah265enc, nvd3d11h264enc, and nvd3d11h265enc + NVIDIA GPU encoder elements to support zero-copy encoding, via CUDA + and Direct3D11 APIs, respectively + +- new nvautogpuh264enc and nvautogpuh265enc NVIDIA GPU encoder + elements: The auto GPU elements will automatically select a target + GPU instance in case multiple NVIDIA desktop GPUs are present, also + taking into account the input memory. On Windows CUDA or Direct3D11 + mode will be determined by the elements automatically as well. Those + new elements are useful if target GPU and/or API mode (either CUDA + or Direct3D11 in case of Windows) is undeterminable from the encoder + point of view at the time when pipeline is configured, and therefore + lazy target GPU and/or API selection are required in order to avoid + unnecessary memory copy operations. + +- new nvav1dec AV1 NVIDIA desktop GPU decoder element + +- new qml6glsink element to render video with Qt6 + +- qsv: New Intel OneVPL/MediaSDK (a.k.a Intel Quick Sync) based + decoder and encoder elements, with gst-d3d11 (on Windows) and gst-va + (on Linux) integration + + - Support multi-GPU environment, for example, concurrent video + encoding using Intel iGPU and dGPU in a single pipeline + - H.264 / H.265 / VP9 and JPEG decoders + - H.264 / H.265 / VP9 / AV1 / JPEG encoders with dynamic encoding + bitrate update + - New plugin does not require external SDK for building on Windows + +- vulkanoverlaycompositor: new vulkan overlay compositor element to + overlay upstream GstVideoOverlayCompositonMeta onto the video + stream. + +- vulkanshaderspv: performs operations with SPIRV shaders in Vulkan + +- win32ipcvideosink, win32ipcvideosrc: new shared memory videosrc/sink + elements for Windows + +- wicjpegdec, wicpngdec: Windows Imaging Component (WIC) based JPEG + and PNG decoder elements. + +- Many exciting new Rust elements, see Rust section below New element features and additions -- this section will be filled in in due course +- audioconvert: Dithering now uses a slightly slower, less biased PRNG + which results in better quality output. Also dithering can now be + enabled via the new “dithering-threshold” property for target bit + depths of more than 20 bits. + +- av1enc: Add “keyframe-max-dist” property for controlling max + distance between keyframes, as well as “enc-pass”, “keyframe-mode”, + “lag-in-frames” and “usage-profile” properties. + +- cccombiner: new “output-padding” property + +- decklink: Add support for 4k DCI, 8k/UHD2 and 8k DCI modes + +- dvbsubenc: Support for >SD resolutions is working correctly now. + +- fdkaacenc: Add HE-AAC / HE-AACv2 profile support + +- glvideomixer: New “crop-left,”crop-right, “crop-top” and + “crop-bottom” pad properties for cropping inputs + +- gssink: new ‘content-type’ property. Useful when one wants to upload + a video as video/mp4 instead of ’video/quicktime` for example. + +- jpegparse: Rewritten using the common parser library + +- msdk: + + - new msdkav1enc AV1 video encoder element + - msdk decoders: Add support for Scaler Format Converter (SFC) on + supported Intel platforms for hardware accelerated conversion + and scaling + - msdk encoders: support import of dmabuf, va memory and D3D11 + memory + - msdk encoders: add properties for low delay bitrate control and + max frame sizes for I/P frames + - msdkh264enc, msdkh265enc: more properties to control intra + refresh + - note that on systems with multi GPUs the Windows D3D11 + integration might only work reliably if the Intel GPU is the + primary GPU + +- mxfdemux: Add support for Canon XF-HEVC + +- openaptx: Support the freeaptx library + +- qroverlay: + + - new “qrcode-case-sensitive” property allows encoding case + sensitive strings like wifi SSIDs or passwords. + - added the ability to pick up data to render from an + upstream-provided custom GstQROverlay meta + +- qtdemux: Add support for ONVIF XML Timed MetaData and AVC-Intra + video + +- rfbsrc now supports the uri handler interface, so applications can + use RFB/VNC sources in uridecodebin(3) and playbin, with + e.g. rfb://:password@10.1.2.3:5903?shared=1 + +- rtponviftimestamp: Add support for using reference timestamps + +- rtpvp9depay now has the same keyframe-related properties as + rtpvp8depay and rtph264depay: “request-keyframe” and + “wait-for-keyframe” + +- rtspsrc: Various RTSP servers are using invalid URL operations for + constructing the control URL. Until GStreamer 1.16 these worked + correctly because GStreamer was just appending strings itself to + construct the control URL, but starting version 1.18 the correct URL + operations were used. With GStreamer 1.22, rtspsrc now first tries + with the correct control URL and if that fails it will retry with + the wrongly constructed control URL to restore support for such + servers. + +- rtspsrc and rtpjitterbuffer gained a new + “add-reference-timestamp-meta” property that makes them put the + unmodified original sender timestamp on output buffers for NTP or + PTP clock synced senders + +- srtsrc, srtsink: new “auto-reconnect” property to make it possible + to disable automatic reconnects (in caller mode) and make the + elements post an error immediately instead; also stats improvements + +- srtsrc: new “keep-listening” property to avoid EOS on disconnect and + keep the source running while it waits for a new connection. + +- videocodectestsink: added YUV 4:2:2 support + +- wasapi2src: Add support for process loopback capture + +- wpesrc: Add support for modifiers in key/touch/pointer events Plugin and library moves -- this section will be filled in in due course +- The xingmux plugin has been moved from gst-plugins-ugly into + gst-plugins-good. -- There were no plugin moves or library moves in this cycle. +- The various Windows directshow plugins in gst-plugins-bad have been + unified into a single directshow plugin. Plugin removals -The following elements or plugins have been removed: - -- this section will be filled in in due course +- The dxgiscreencapsrc element has been removed, use + d3d11screencapturesrc instead Miscellaneous API additions -- this section will be filled in in due course +- GST_AUDIO_FORMAT_INFO_IS_VALID_RAW() and + GST_VIDEO_FORMAT_INFO_IS_VALID_RAW() can be used to check if a + GstAudioFormatInfo or GstVideoFormatInfo has been initialised to a + valid raw format. + +- Video SEI meta: new GstVideoSEIUserDataUnregisteredMeta to carry + H.264 and H.265 metadata from SEI User Data Unregistered messages. + +- vulkan: Expose gst_vulkan_result_to_string() Miscellaneous performance, latency and memory optimisations -- this section will be filled in in due course +- liborc 0.4.33 adds support for aarch64 (64-bit ARM) architecture + (not enabled by default on Windows yet though) and improvements for + 32-bit ARM and should greatly enhance performance for certain + operations that use ORC. + +- as always there have been plenty of performance, latency and memory + optimisations all over the place. Miscellaneous other changes and enhancements -- this section will be filled in in due course +- the audio/video decoder base classes will not consider decoding + errors a hard error by default anymore but will continue trying to + decode. Previously more than 10 consecutive errors were considered a + hard error but this caused various partially broken streams to fail. + The threshold is configurable via the “max-errors” property. + +- compatibility of the GStreamer PTP clock implementation with + different PTP server implementations was improved, and + synchronization is achieved successfully in various scenarios that + failed before. Tracing framework and debugging improvements -- this section will be filled in in due course +New tracers + +- buffer-lateness: Records lateness of buffers and the reported + latency for each pad in a CSV file. Comes with a script for + visualisation. + +- pipeline-snapshot: Creates a .dot file of all pipelines in the + application whenever requested via SIGUSR1 (on UNIX systems) + +- queue-levels: Records queue levels for each queue in a CSV file. + Comes with a script for visualisation. + +Debug logging system improvements + +- new log macros GST_LOG_ID, GST_DEBUG_ID, GST_INFO_ID, + GST_WARNING_ID, GST_ERROR_ID, and GST_TRACE_ID allow passing a + string identifier instead of a GObject. This makes it easier to log + non-gobject-based items and also has performance benefits. Tools -- this section will be filled in in due course +- gst-play-1.0 gained a --no-position command line option to suppress + position/duration queries, which can be useful to reduce debug log + noise. + +GStreamer FFMPEG wrapper + +- Fixed bitrate management and timestamp inaccuracies for video + encoders + +- Fix synchronization issues and errors created by the (wrong) + forwarding of upstream segment events by ffmpeg demuxers. + +- Clipping meta support for gapless mp3 playback GStreamer RTSP server -- this section will be filled in in due course +- Add RFC5576 Source-specific media attribute to the SDP media for + signalling the CNAME + +- Add support for adjusting request response on pipeline errors + + - Give the application the possibility to adjust the error code + when responding to a request. For that purpose the pipeline’s + bus messages are emitted to subscribers through a + “handle-message” signal. The subscribers can then check those + messages for errors and adjust the response error code by + overriding the virtual method + GstRTSPClientClass::adjust_error_code(). + +- Add gst_rtsp_context_set_token() method to make it possible to set + the RTSPToken on some RTSPContext from bindings such as the Python + bindings. + +- rtspclientsink gained a “publish-clock-mode” property to configure + whether the pipeline clock should be published according to RFC7273 + (RTP Clock Source Signalling), similar to the same API on + GstRTSPMedia. + +GStreamer VA-API support + +- Development activity has shifted towards the new va plugin, with + gstreamer-vaapi now basically in maintenance-only mode. Most of the + below refers to the va plugin (not gstreamer-vaapi). + +- new gst-va library for GStreamer VA-API integration + +- vajpegdec: new JPEG decoder + +- vah264enc, vah265enc: new H.264/H.265 encoders + +- vah264lpenc, vah265lpenc: new low power mode encoders + +- vah265enc: Add extended formats support such as 10/12 bits, 4:2:2 + and 4:4:4 + +- Support encoder reconfiguration + +- vacompositor: Add new compositor element using the VA-API VPP + interface + +- vapostproc: + + - new “scale-method” property + - Process HDR caps if supported + - parse video orientation from tags + +- vaapipostproc: Enable the use of DMA-Buf import and export + (gstreamer-vaapi) -GStreamer VAAPI +GStreamer Video4Linux2 support -- this section will be filled in in due course +- Added support for Mediatek Stateless CODEC (VP8, H.264, VP9) + +- Stateless H.264 interlaced decoder support + +- Stateless H.265 decoder support + +- Stateful decoder support for driver resolution change events + +- Stateful decoding support fixes for NXP/Amphion driver + +- Support for hardware crop in v4l2src + +- Conformance test improvement for stateful decoders + +- Fixes for Raspberry Pi CODEC GStreamer OMX -- this section will be filled in in due course +- There were no changes in this module GStreamer Editing Services and NLE -- this section will be filled in in due course +- Handle compositors that are bins around the actual compositor + implementation (like glvideomixers which wraps several elements) + +- Add a mode to disable timeline editing API so the user can be in + full control of its layout (meaning that the user is responsible for + ensuring its validity/coherency) + +- Add a new fade-in transition type + +- Add support for non-1/1 PAR source videos + +- Fix frame accuracy when working with very low framerate streams GStreamer validate -- this section will be filled in in due course +- Clean up and stabilize API so we can now generate rust bindings + +- Enhance the appsrc-push action type allowing to find tune the + buffers more in details + +- Add an action type to verify currently configured pad caps + +- Add a way to run checks from any thread after executing a ‘wait’ + action. This is useful when waiting on a signal and want to check + the value of a property right when it is emited for example. GStreamer Python Bindings -- this section will be filled in in due course +- Add a Gst.init_python() function to be called from plugins which + will initialise everything needed for the GStreamer Python bindings + but not call Gst.init() again since this will have been called + already. + +- Add support for the GstURIHandlerInterface that allows elements to + advertise what URI protocols they support. GStreamer C# Bindings -- this section will be filled in in due course +- Fix AppSrc and AppSink constructors + +- The C# bindings have yet to be updated to include new 1.22 API, + which requires improvements in various places in the bindings / + binding generator stack. See issue #1718 in GitLab for more + information and to track progress. GStreamer Rust Bindings and Rust Plugins The GStreamer Rust bindings are released separately with a different release cadence that’s tied to gtk-rs, but the latest release has -already been updated for the upcoming new GStreamer 1.20 API. +already been updated for the new GStreamer 1.22 API. Check the bindings +release notes for details of the changes since 0.18, which was released +around GStreamer 1.20. gst-plugins-rs, the module containing GStreamer plugins written in Rust, -has also seen lots of activity with many new elements and plugins. - -What follows is a list of elements and plugins available in -gst-plugins-rs, so people don’t miss out on all those potentially useful -elements that have no C equivalent. - -- FIXME: add new elements - -Rust audio plugins - -- audiornnoise: New element for audio denoising which implements the - noise removal algorithm of the Xiph RNNoise library, in Rust -- rsaudioecho: Port of the audioecho element from gst-plugins-good - rsaudioloudnorm: Live audio loudness normalization element based on - the FFmpeg af_loudnorm filter -- claxondec: FLAC lossless audio codec decoder element based on the - pure-Rust claxon implementation -- csoundfilter: Audio filter that can use any filter defined via the - Csound audio programming language -- lewtondec: Vorbis audio decoder element based on the pure-Rust - lewton implementation - -Rust video plugins - -- cdgdec/cdgparse: Decoder and parser for the CD+G video codec based - on a pure-Rust CD+G implementation, used for example by karaoke CDs -- cea608overlay: CEA-608 Closed Captions overlay element -- cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT - subtitles) converter -- tttocea608: CEA-608 Closed Captions from timed-text converter -- mccenc/mccparse: MacCaption Closed Caption format encoder and parser -- sccenc/sccparse: Scenarist Closed Caption format encoder and parser -- dav1dec: AV1 video decoder based on the dav1d decoder implementation - by the VLC project -- rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e - encoder implementation -- rsflvdemux: Alternative to the flvdemux FLV demuxer element from - gst-plugins-good, not feature-equivalent yet -- rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust - implementations by the image-rs project - -Rust text plugins - -- textwrap: Element for line-wrapping timed text (e.g. subtitles) for - better screen-fitting, including hyphenation support for some - languages - -Rust network plugins - -- reqwesthttpsrc: HTTP(S) source element based on the Rust - reqwest/hyper HTTP implementations and almost feature-equivalent - with the main GStreamer HTTP source souphttpsrc -- s3src/s3sink: Source/sink element for the Amazon S3 cloud storage -- awstranscriber: Live audio to timed text transcription element using - the Amazon AWS Transcribe API - -Generic Rust plugins - -- sodiumencrypter/sodiumdecrypter: Encryption/decryption element based - on libsodium/NaCl -- togglerecord: Recording element that allows to pause/resume - recordings easily and considers keyframe boundaries -- fallbackswitch/fallbacksrc: Elements for handling potentially - failing (network) sources, restarting them on errors/timeout and - showing a fallback stream instead -- threadshare: Set of elements that provide alternatives for various - existing GStreamer elements but allow to share the streaming threads - between each other to reduce the number of threads -- rsfilesrc/rsfilesink: File source/sink elements as replacements for - the existing filesrc/filesink elements +has also seen lots of activity with many new elements and plugins. A +list of all Rust plugins and elements provided with the 0.9 release can +be found in the repository. + +- 33% of GStreamer commits are now in Rust (bindings + plugins), and + the Rust plugins module is also where most of the new plugins are + added these days. + +- The Rust plugins are now shipped as part of the Windows MSVC + macOS + binary packages. See below for the list of shipped plugins and the + status of Rust support in cerbero. + +- The Rust plugins are also part of the documentation on the GStreamer + website now. + +- Rust plugins can be used from any programming language. To the + outside they look just like a plugin written in C or C++. + +New Rust plugins and elements + +- rtpav1pay / rtpav1depay: RTP (de)payloader for the AV1 video codec +- gtk4paintablesink: a GTK4 video sink that provides a GdkPaintable + for rendering a video in any place inside a GTK UI. Supports + zero-copy rendering via OpenGL on Linux and macOS. +- ndi: source, sink and device provider for NewTek NDI protocol +- onvif: Various elements for parsing, RTP (de)payloading, overlaying + of ONVIF timed metadata. +- livesync: Element for converting a live stream into a continuous + stream without gaps and timestamp jumps while preserving live + latency requirements. +- raptorq: Encoder/decoder elements for the RaptorQ FEC mechanism that + can be used for RTP streams (RFC6330). + +WebRTC elements + +- webrtcsink: a WebRTC sink (batteries included WebRTC sender with + specific signalling) +- whipsink: WebRTC HTTP ingest (WHIP) to MediaServer +- whepsrc: WebRTC HTTP egress (WHEP) from MediaServer +- rtpgccbwe: RTP bandwidth estimator based on the Google Congestion + Control algorithm (GCC), used by webrtcsink + +Amazon AWS services + +- awss3src / awss3sink: A source and sink element to talk to the + Amazon S3 object storage system. +- awss3hlssink: A sink element to store HLS streams on Amazon S3. +- awstranscriber: an element wrapping the AWS Transcriber service. +- awstranscribeparse: an element parsing the packets of the AWS + Transcriber service. + +Video Effects (videofx) + +- roundedcorners: Element to make the corners of a video rounded via + the alpha channel. +- colordetect: A pass-through filter able to detect the dominant + color(s) on incoming frames, using color-thief. +- videocompare: Compare similarity of video frames. The element can + use different hashing algorithms like Blockhash, DSSIM, and others. + +New MP4 muxer + Fragmented MP4 muxer + +- isofmp4mux, cmafmux, dashmp4mux, onviffmp4mux: New fragmented + MP4/ISOBMFF/CMAF muxer for generating e.g. DASH/HLS media fragments. +- isomp4mux, onvifmp4mux: New non-fragmented, normal MP4 muxer. + +Both plugins provides elements that replace the existing qtmux/mp4mux +element from gst-plugins-good. While not feature-equivalent yet, the new +codebase and using separate elements for the fragment and non-fragmented +case allows for easier extensability in the future. + +Cerbero Rust support + +- Starting this release, cerbero has support for building and shipping + Rust code on Linux, Windows (MSVC) and macOS. The Windows (MSVC) and + macOS binaries also ship the GStreamer Rust plugins in this release. + Only dynamic plugins are built and shipped currently. + +- Preliminary support for Android, iOS and Windows (MinGW) exists but + more work is needed. Check the tracker issue for more details about + future work. + +- The following plugins are included currently: audiofx, aws, cdg, + claxon, closedcaption, dav1d, fallbackswitch, ffv1, fmp4, gif, + hlssink3, hsv, json, livesync, lewton, mp4, ndi, onvif, rav1e, + regex, reqwest, raptorq, png, rtp, textahead, textwrap, threadshare, + togglerecord, tracers, uriplaylistbin, videofx, webrtc, webrtchttp. Build and Dependencies -- this section will be filled in in due course +- meson 0.62 or newer is required + +- GLib >= 2.62 is now required (but GLib >= 2.64 is strongly + recommended) + +- libnice >= 0.1.21 is now required and contains important fixes for + GStreamer’s WebRTC stack. + +- liborc >= 0.4.33 is recommended for 64-bit ARM support and 32-bit + ARM improvements + +- onnx: OnnxRT >= 1.13.1 is now required + +- openaptx: can now be built against libfreeaptx + +- opencv: allow building against any 4.x version + +- shout: libshout >= 2.4.3 is now required + +- gstreamer-vaapi’s Meson build options have been switched from a + custom combo type (yes/no/auto) to the built-in Meson feature type + (enabled/disabled/auto) -gst-build +- The GStreamer Rust plugins module gst-plugins-rs is now considered + an essential part of the GStreamer plugin offering and packagers and + distributors are strongly encouraged to package and ship those + plugins alongside the existing plugin modules. -- this section will be filled in in due course +- we now make use of Meson’s install tags feature which allows + selective installation of installl components and might be useful + for packagers. + +Monorepo build (gst-build) + +- new “orc-source” build option to allow build against a + system-installed liborc instead of forcing the use of orc as a + subproject. + +- GStreamer command line tools can now be linked to the gstreamer-full + library if it’s built Cerbero Cerbero is a meta build system used to build GStreamer plus dependencies on platforms where dependencies are not readily available, such as -Windows, Android, iOS and macOS. +Windows, Android, iOS, and macOS. General improvements -- this section will be filled in in due course +- Rust support was added for all support configurations, controlled by + the rust variant; see above for more details +- All pkgconfig files are now reliably relocatable without requiring + pkg-config --define-prefix. This also fixes statically linking with + GStreamer plugins using the corresponding pkgconfig files. +- New documentation on how to build a custom GStreamer repository + using Cerbero, please see the README +- HTTPS certificate checking is enabled for downloads on all platforms + now +- Fetching now automatically retries on error for robustness against + transient errors +- Support for building the new Qt6 plugin was added +- pkgconfig files for various recipes were fixed +- Several recipes were updated to newer versions +- New plugins: adaptivedemux2 aes codectimestamper dav1d +- New libraries: cuda webrtcnice macOS / iOS -- this section will be filled in in due course +- Added support for running Cerbero on ARM64 macOS +- GStreamer.framework and all libraries in it are now relocatable, + which means they use LC_RPATH entries to find dependencies instead + of using an absolute path. If you link to GStreamer using the + pkgconfig files, no action is necessary. However, if you use the + framework directly or link to the libraries inside the framework by + hand, then you need to pass -Wl,-rpath, to the + linker. +- Apple bitcode support was dropped, since Apple has deprecated it +- macOS installer now correctly advertises support for both x86_64 and + arm64 +- macOS framework now ships the gst-rtsp-server-1.0 library +- Various fixes were made to make static linking to gstreamer + libraries and plugins work correctly on macOS +- When statically linking to the applemedia plugin using Xcode 13, you + will need to pass -fno-objc-msgsend-selector-stubs which works + around a backwards-incompatible change in Xcode 14. This is not + required for the rest of GStreamer at present, but will be in the + future. +- macOS installer now shows the GStreamer logo correctly Windows -- this section will be filled in in due course +- MSVC is now required by default on Windows, and the Visual Studio + variant is enabled by default + - To build with MinGW, use the mingw variant +- Visual Studio props files were updated for newer Visual Studio + versions +- Visual Studio 2015 support was dropped +- MSYS2 is now supported as the base instead of MSYS. Please see the + README for more details. Some advantages include: + - Faster build times, since parallel make works + - Faster bootstrap, since some tools are provided by MSYS2 + - Other speed-ups due to using MSYS2 tools instead of MSYS +- Faster download by using powershell instead of hand-rolled Python + code +- Many recipes were ported from Autotools to Meson, speeding up the + build +- Universal Windows Platform is no longer supported, and binaries are + no longer shipped for it +- New documentation on how to force a specific Visual Studio + installation in Cerbero, please see the README +- New plugins: qsv wavpack directshow amfcodec wic win32ipc +- New libraries: d3d11 Windows MSI installer -- this section will be filled in in due course +- Universal Windows Platform prebuilt binaries are no longer available Linux -- this section will be filled in in due course +- Various fixes for RHEL/CentOS 7 support +- Added support for running on Linux ARM64 Android -- this section will be filled in in due course +- Android support now requires Android API version 21 (Lollipop) +- Support for Android Gradle plugin 7.2 Platform-specific changes and improvements Android -- this section will be filled in in due course +- Android SDK 21 is required now as minimum SDK version + +- androidmedia: Add H.265 / HEVC video encoder mapping + +- Implement JNI_OnLoad() to register static plugins etc. automatically + in case GStreamer is loaded from Java using System.loadLibrary(), + which is also useful for the gst-full deployment scenario. + +Apple macOS and iOS + +- The GLib version shipped with the GStreamer binaries does not + initialize an NSApp and does not run a NSRunLoop on the main thread + anymore. This was a custom GLib patch and caused it to behave + different from the GLib shipped by Homebrew or anybody else. + + The change was originally introduced because various macOS APIs + require a NSRunLoop to run on the main thread to function correctly + but as this change will never get merged into GLib and it was + reverted for 1.22. Applications that relied on this behaviour should + move to the new gst_macos_main() function, which also does not + require the usage of a GMainLoop. + + See e.g. gst-play.c for an example for the usage of + gst_macos_main(). + +- GStreamer.framework and all libraries in it are now relocatable, + which means they use LC_RPATH entries to find dependencies instead + of using an absolute path. If you link to GStreamer using the + pkgconfig files, no action is necessary. However, if you use the + framework directly or link to the libraries inside the framework by + hand, then you need to pass -Wl,-rpath, to the + linker. + +- avfvideosrc: Allow specifying crop coordinates during screen capture + +- vtenc, vtdec: H.265 / HEVC video encoding + decoding support -macOS and iOS +- osxaudiosrc: Support a device as both input and output -- this section will be filled in in due course + - osxaudiodeviceprovider now probes devices more than once to + determine if the device can function as both an input AND and + output device. Previously, if the device provider detected that + a device had any output capabilities, it was treated solely as + an Audio/Sink. This caused issues for devices that have both + input and output capabilities (for example, USB interfaces for + professional audio have both input and output channels). Such + devicesare now listed as both an Audio/Sink as well as an + Audio/Source. + +- osxaudio: support hidden devices on macOS + + - These are devices that will not be shown in the macOS UIs and + that cannot be retrieved without having the specific UID of the + hidden device. There are cases when you might want to have a + hidden device, for example when having a virtual speaker that + forwards the data to a virtual hidden input device from which + you can then grab the audio. The blackhole project supports + these hidden devices and this change provides a way that if the + device id is a hidden device it will use it instead of checkinf + the hardware list of devices to understand if the device is + valid. Windows -- this section will be filled in in due course +- win32ipcvideosink, win32ipcvideosrc: new shared memory videosrc/sink + elements + +- wasapi2: Add support for process loopback capture for a specified + PID (requires Windows 11/Windows Server 2022) + +- The Windows universal UWP build is currently non-functional and will + need updating after the recent GLib upgrade. It is unclear if anyone + is using these binaries, so if you are please make yourself known. + +- wicjpegdec, wicpngdec: Windows Imaging Component (WIC) based JPEG + and PNG decoder elements. + +- mfaacdec, mfmp3dec: Windows MediaFoundation AAC and MP3 decoders + +- The uninstalled development environment supports PowerShell 7 now Linux -- this section will be filled in in due course +- Improved design for DMA buffer sharing and modifier handling for + hardware-accelerated video decoders/encoders/filters and + capture/rendering on Linux and Linux-like system. + +- kmssink + + - new “fd” property which allows an application to provide their + own opened DRM device fd handle to kmssink. That way an + application can lease multiple fd’s from a DRM master to display + on different CRTC outputs at the same time with multiple kmssink + instances, for example. + - new “skip-vsync” property to achieve full framerate with legacy + emulation in drivers. + - HDR10 infoframe support + +- va plugin and gstreamer-vaapi improvements (see above) + +- waylandsink: Add “rotate-method” property and “render-rectangle” + property + +- new gtkwaylandsink element based on gtksink, but similar to + waylandsink and uses Wayland APIs directly instead of rendering with + Gtk/Cairo primitives. This approach is only compatible with Gtk3, + and like gtksink this element only supports Gtk3. Documentation improvements -- this section will be filled in in due course +- The GStreamer Rust plugins are now included and documented in the + plugin documentation. Possibly Breaking Changes -- this section will be filled in in due course -- MPEG-TS SCTE-35 API changes (FIXME: flesh out) -- gst_parse_launch() and friends now error out on non-existing - properties on top-level bins where they would silently fail and - ignore those before. +- the Opus audio RTP payloader and depayloader no longer accept the + lower case encoding-format=multiopus but instead produce and accept + only the upper case variant encoding-format=MULTIOPUS, since those + should always be upper case in GStreamer (caps fields are always + case sensitive). This should hopefully only affect applications + where RTP caps are set manually and multi-channel audio (>= 3 + channels) is used. + +- wpesrc: the URI handler protocols changed from wpe:// and web:// to + web+http://, web+https://, and web+file:// which means URIs are RFC + 3986 compliant and the source can simply strip the prefix from the + protocol. + +- The Windows screen capture element dxgiscreencapsrc has been + removed, please use d3d11screencapturesrc instead. + +- On Android the minimum supported Android API version is now version + 21 and has been increased from 16. + +- On macOS, the GLib version shipped with the GStreamer binaries will + no longer initialize an NSApp or run an NSRunLoop on the main + thread. See macOS/iOS section above for details. + +- decklink: The decklink plugin is now using the 12.2.2 version of the + SDK and will not work with drivers older than version 12. + +- On iOS Apple Bitcode support was removed from the binaries. This + feature is deprecated since XCode 14 and not used on the App Store + anymore. + +- The MP4/Matroska/WebM muxers now require the “stream-format” to be + provided as part of the AV1 caps as only the original “obu-stream” + format is supported in these containers and not the “annexb” format. Known Issues -- this section will be filled in in due course +- The Windows UWP build in Cerbero needs fixing after the recent GLib + upgrade (see above) + +- The C# bindings have not been updated to include new 1.22 API yet + (see above) + +Statistics + +- 4072 commits + +- 2224 Merge Requests + +- 716 Issues -- There are a couple of known WebRTC-related regressions/blockers: +- 200+ Contributors - - webrtc: DTLS setup with Chrome is broken - - webrtcbin: First keyframe is usually lost +- ~33% of all commits and Merge Requests were in Rust modules + +- 4747 files changed + +- 469633 lines added + +- 209842 lines deleted + +- 259791 lines added (net) Contributors -- this section will be filled in in due course +Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro, Alba +Mendez, Aleix Conchillo Flaqué, Aleksandr Slobodeniuk, Alicia Boya +García, Alireza Miryazdi, Andoni Morales Alastruey, Andrew Pritchard, +Arun Raghavan, A. Wilcox, Bastian Krause, Bastien Nocera, Benjamin +Gaignard, Bill Hofmann, Bo Elmgreen, Boyuan Zhang, Brad Hards, Branko +Subasic, Bruce Liang, Bunio FH, byran77, Camilo Celis Guzman, Carlos +Falgueras García, Carlos Rafael Giani, Célestin Marot, Christian Wick, +Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan, Colin +Kinloch, Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel +Almeida, Daniel Morin, Daniel Stone, Daniels Umanovskis, Danny Smith, +David Svensson Fors, Devin Anderson, Diogo Goncalves, Dmitry Osipenko, +Dongil Park, Doug Nazar, Edward Hervey, ekwange, Eli Schwartz, Elliot +Chen, Enrique Ocaña González, Eric Knapp, Erwann Gouesbet, Evgeny +Pavlov, Fabian Orccon, Fabrice Fontaine, Fan F He, F. Duncanh, Filip +Hanes, Florian Zwoch, François Laignel, Fuga Kato, George Kiagiadakis, +Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff, +Heiko Becker, He Junyan, Henry Hoegelow, Hiero32, Hoonhee Lee, Hosang +Lee, Hou Qi, Hugo Svirak, Ignacio Casal Quinteiro, Ignazio Pillai, Igor +V. Kovalenko, Jacek Skiba, Jakub Adam, James Cowgill, James Hilliard, +Jan Alexander Steffens (heftig), Jan Lorenz, Jan Schmidt, Jianhui Dai, +jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan +Petridis, Joseph Donofry, Jose Quaresma, Julian Bouzas, Junsoo Park, +Justin Chadwell, Khem Raj, Krystian Wojtas, László Károlyi, Linus +Svensson, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek Olejnik, Marek +Vasut, Marijn Suijten, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, +Mart Raudsepp, Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias +Clasen, Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Michael Gruner, +Michiel Konstapel, Mikhail Fludkov, Ming Qian, Mingyang Ma, Myles +Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête, Pablo Marcos +Oltra, Patricia Muscalu, Patrick Griffis, Paweł Stawicki, Peter +Stensson, Philippe Normand, Philipp Zabel, Pierre Bourré, Piotr +Brzeziński, Rabindra Harlalka, Rafael Caricio, Rafael Sobral, Rafał +Dzięgiel, Raul Tambre, Robert Mader, Robert Rosengren, Rodrigo +Bernardes, Rouven Czerwinski, Ruben Gonzalez, Sam Van Den Berge, +Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Sebastian Fricke, +Sebastian Groß, Sebastian Mueller, Sebastian Wick, Sergei Kovalev, +Seungha Yang, Seungmin Kim, sezanzeb, Sherrill Lin, Shingo Kitagawa, +Stéphane Cerveau, Talha Khan, Taruntej Kanakamalla, Thibault Saunier, +Tim Mooney, Tim-Philipp Müller, Tomasz Andrzejak, Tom Schuring, Tong Wu, +toor, Tristan Matthews, Tulio Beloqui, U. Artie Eoff, Víctor Manuel +Jáquez Leal, Vincent Cheah Beng Keat, Vivia Nikolaidou, Vivienne +Watermeier, WANG Xuerui, Wojciech Kapsa, Wonchul Lee, Wu Tong, Xabier +Rodriguez Calvar, Xavier Claessens, Yatin Mann, Yeongjin Jeong, Zebediah +Figura, Zhao Zhili, Zhiyuaniu, مهدي شينون (Mehdi Chinoune), … and many others who have contributed bug reports, translations, sent suggestions or helped testing. -Stable 1.20 branch +Stable 1.22 branch -After the 1.20.0 release there will be several 1.20.x bug-fix releases +After the 1.22.0 release there will be several 1.22.x bug-fix releases which will contain bug fixes which have been deemed suitable for a stable branch, but no new features or intrusive changes will be added to -a bug-fix release usually. The 1.20.x bug-fix releases will be made from -the git 1.20 branch, which will be a stable branch. +a bug-fix release usually. The 1.22.x bug-fix releases will be made from +the git 1.22 branch, which will be a stable branch. + +1.22.0 + +1.22.0 was originally released on 23 January 2023. + +1.22.1 + +The first 1.22 bug-fix release (1.22.1) was released on 04 March 2023. + +This release only contains bugfixes and it should be safe to update from +1.22.0. + +Highlighted bugfixes in 1.22.1 + +- audio channel-mix: allow up to 64 channels (instead of up to 63 + channels) +- avfvideosrc: Don’t wait on main thread for permissions request +- avvidenc: avoid generating inaccurate output timestamps, especially + with variable framerate streams +- AV1 video codec caps signalling improvements in various elements +- codectimestamper: Fix timestamping on sequence update +- d3d11overlaycompositor: fix texture width and height +- d3d11videosink: Fix rendering on external handle +- dashdemux2: fix seek operation taking a log time to finish for some + streams +- nvencoder: Fix B-frame encoding on Linux and min buffers in auto GPU + mode +- playbin3: fixing buffering for live pipelines +- playbin: fix potential deadlock when stopping stream with subtitles + visible +- redenc: fix setting of extension ID for twcc +- rtspsrc: improved compatibility with more broken RTSP servers +- v4l2h264dec: Fix Raspberry Pi4 will not play video in application +- vtdec: fix jittery playback of H.264 Level 4.1 movies in macOS +- vtdec: Fix non-deterministic frame output after flushing seeks +- vtenc: fix handling of interlaced ProRes on Apple M1 hardware +- vtenc: don’t advertise ARGB/RGBA64 input caps on M1 Pro/Max with + macOS <13 +- wasapi2src: Fix loopback capture on Windows 10 Anniversary Update +- tools: better handling of non-ASCII command line arguments on + Windows +- gst-libav: fix build against newer ffmpeg versions +- gst-python: Use arch-specific install dir for gi overrides +- cerbero: Fix setuptools site.py breakage in Python 3.11 +- macOS packages: Fix broken binaries on macos < 11.0 +- various bug fixes, memory leak fixes, and other stability and + reliability improvements + +gstreamer + +- buffer: fix copy meta reference debug log formatting +- bin: Don’t unlock unlocked mutex in gst_bin_remove_func() +- pad: Don’t leak user_data in gst_pad_start_task() +- aggregator: Always lock aggpad around update_time_level +- inputselector: Avoid potential deadlock when shutting down, + e.g. playbin with subtitles +- multiqueue: Handle use-interleave latency live pipelines, fixing + buffering for live pipelines in playbin3 +- GstBaseSrc: fix transfer annotation for fixate() virtual method +- GstBaseSrc, GstPushSrc: add nullable annotations to virtual methods +- tools: Make sure UTF-8 encoded command line arguments on Windows + +gst-plugins-base + +- alsasink: Fix stall when going from PLAYING to NULL (stucked at + PAUSED) with uac1 gadget +- appsrc: Don’t chain up BaseSrc::negotiate() +- audio: channel-mix: Fix channel count limit to be able to equal 64 +- gldisplay: Mark gst_gl_display_create_context() other_context + parameter as nullable +- gldisplay: Remove unused code +- gstglwindow_x11.c: Fix colormap leak +- gl/cocoa: Return a strong ref to the parent GstGLContext +- rtspconnection: Annotate RTSP message and RTSP events parameters + correctly +- sdp, typefind: Fix some annotations +- sdp: gstmikey: gst_mikey_message_to_caps: extract ROC from first + crypto session +- subparse: Properly forward segment seqnum +- uridecodebin: Set source element to READY before querying it +- uritranscodebin: Fix unref of NULL +- gst-play-1.0: Don’t force accurate seeking + +gst-plugins-good + +- adaptivedemux2: Fix buffering threshold initialization +- dashdemux2: the seek operation takes a log time to finish for some + streams +- glvideomixer: Keep a reference to the underlying pad +- qtdemux: Don’t emit GstSegment correcting start time when in MSE + mode +- qtdemux: Handle moov atom length=0 case by reading until the end +- qtdemux, qtmux: Drop av1C version 0 parsing and implement version 1 + parsing/writing +- qtmux: Fix assertion on caps update +- redenc: fix setting of extension ID for twcc +- rtspsrc: Use the correct vfunc for the push-backchannel-sample + action signal +- rtpssrcdemux: set different stream-id on each src pad +- udpsrc: GstSocketTimestampMessage only for SCM_TIMESTAMPNS +- v4l2h264dec: Fix Raspberry Pi4 will not play video in application + +gst-plugins-bad + +- aom: Include stream-format and alignment in the AV1 caps +- av1parser, h265parser: Fix some code defects +- av1parser: Don’t consider unknown metadata OBUs a bitstream error +- avfvideosrc: Don’t wait on main thread for permissions request +- ccconverter: don’t debug a potentially freed filter caps +- codectimestamper: Fix timestamping on sequence update +- codecparsers: {h264, h265}bitwriter: Remove redundant condition + checks +- codecs: decoders: fail early if no input caps have been provided for + all new decoder base classes +- closedcaption: Don’t leak caps event +- curlhttpsrc: Add curl anyauth option +- d3d11overlaycompositor: fix texture width and height +- d3d11videosink: Fix rendering on external handle +- h265parse: Always set profile on src caps +- msdkav1enc: fix the category for msdkav1enc debug +- nvcodec: improve error reporting on plugin init +- nvencoder: Fix b-frame encoding on Linux +- nvencoder: Fix min buffers parameter of allocation query in auto GPU + mode +- nvvp9dec: Fix return value +- qsvav1enc, amfav1enc: Set stream-format on caps +- vtdec: Jittery playback of H.264 Level 4.1 movies in macOS (both + x86_64 and arm64) +- vtdec: Fix DPB size calculations not taking values from SPS into + account +- vtdec: Fix not waiting for async frames when flushing +- vtenc: Disable ARGB/RGBA64 caps on M1 Pro/Max with macOS <13 +- vtenc: Fix checking for certain CPU variants when running in VMs +- vtenc: Disable HW acceleration for interlaced ProRes +- va: Avoid the array index overflow when filling 8x8 scaling list. +- va: Fix some code defects +- vah265enc: Use helper to update properties. +- vulkan: memory: Flush non coherent memory after write. +- wasapi2src: Fix loopback capture on Windows 10 Anniversary Update +- webrtcbin: small stats improvements +- win32ipcutils: Add missing include +- wpe: Logging fixes for the WebExtension + +gst-plugins-ugly + +- mpegpsdemux: Ignore DTS if PTS < DTS + +gst-libav + +- avauddec, avviddec: Free packet side data after usage +- avviddec: change + AV_CODEC_CAP_AUTO_THREADS->AV_CODEC_CAP_OTHER_THREADS to fix build + against newer ffmpeg versions +- Memory leak in ’ av_packet_add_side_data’ in + /lib/x86_64-linux-gnu/libavcodec.so reading the file + clock_odd_size_RLE_g1597902.avi +- avvidenc: Don’t take ffmpeg timestamps verbatim but only use them to + calculate DTS + +gst-rtsp-server + +- No changes + +gstreamer-vaapi + +- vaapi: Skip plugin pc file for shared plugins + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- gst-python: Use arch-specific install dir for gi overrides + +gst-editing-services + +- No changes + +gst-validate + gst-integration-testsuites + +- validate:scenario: sink refs when building +- tests: Fix known issue definition location for unit tests and how we + handle them in validate launcher +- tests: mark elements_srtp.test_play test as flaky +- Fix gstreamer-validate-1.0 dependency name +- validate-scenario: fix g-i warning in annotation +- validate: Fix gst_validate_execute_action annotation + +gst-examples + +- webrtc examples: Use webrtc.gstreamer.net +- webrtc_sendrecv.py: Various fixes + +Development build environment + +- gst-env: Handle installing python modules to dist-packages +- meson: Allow sysdeps to be forced as fallback subprojects +- meson: Switch dav1d wrap to a tarball and update to dav1d 1.1.0 + +Cerbero build tool and packaging changes in 1.22.1 + +- macos: Fix broken binaries on macos < 11.0 +- orc: Update pthread_jit_write_protect fix for macOS/iOS +- dav1d: Update to 1.1.0 +- libsrtp: update to v2.5.0 +- rustup: Update to 1.25.2 +- rust: Update to 1.67; cargo-c to 0.9.16 +- cerbero: Don’t error out if bindir already exists +- Fix setuptools site.py breakage in Python 3.11, bump + gobject-introspection, bump windows image +- cerbero: Retry if cargo update fails on macOS +- gst-plugins-rs: Build glib/gio bindings with 2.74 API support + +Contributors to 1.22.1 + +Alessandro Bono, Arun Raghavan, Bart Van Severen, Carlos Falgueras +García, Célestin Marot, David Svensson Fors, Edward Hervey, Enrique +Ocaña González, Frank Dana, Guillaume Desmottes, He Junyan, James +Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jordan Petridis, +Mathieu Duponchelle, Matthew Waters, medithe, Mengkejiergeli Ba, Nicolas +Beland, Nirbheek Chauhan, Patricia Muscalu, Pawel Stawicki, Philippe +Normand, Piotr Brzeziński, Rajneesh Soni, Robert Rosengren, Sanchayan +Maity, Sebastian Dröge, Seungha Yang, Simon Himmelbauer, Thibault +Saunier, Tim-Philipp Müller, Tristan van Berkom, U. Artie Eoff, Víctor +Manuel Jáquez Leal, Vivia Nikolaidou, Xuchen Yang, Yinhang Liu, + +… and many others who have contributed bug reports, translations, sent +suggestions or helped testing. Thank you all! + +List of merge requests and issues fixed in 1.22.1 + +- List of Merge Requests applied in 1.22.1 +- List of Issues fixed in 1.22.1 + +1.22.2 + +The second 1.22 bug-fix release (1.22.2) was released on 11 April 2023. + +This release only contains bugfixes and it should be safe to update from +1.22.x. + +Highlighted bugfixes in 1.22.2 + +- avdec_h264: fix decoder deadlocks with FFmpeg 6.0 +- rtspsrc: fix regression with URI protocols in OPTIONS requests for + RTSP over TLS +- rtspsrc: improved control url handling compatibility for broken + servers +- decklink: fix 10 bit RGB (r210) format auto detection for capture + and fix playout if video caps are configured before audio caps +- d3d11videosink: Fix tearing in case of fullscreen mode +- playbin: fix deadlock when stopping stream with subtitles visible + (even more) +- typefinding: fix regression not detecting application/dash+xml in + some corner cases +- osxvideosink: fix broken aspect ratio and frame drawing region +- decodebin3, parsebin: Improve elementary stream handling when + decoders are not present and fix hang when removing a failing stream +- urisourcebin: Propagate sticky events from parsebin, so that the + STREAM_START event with the GstStream info is always available when + pads get exposed +- v4l2: Add support for YVU420M format; mark JPEG content as parsed +- h264decoder, h265decoder: DPB bumping process and latency reporting + fixes +- Opus: Fix reading of extended channel config in MPEG-TS and fix + missing sample rate when remuxing from RTP to Matroska +- zxing: add support for building against zxing-c++ 2.0 +- cerbero: Fix packaging of Rust plugins on Android; fix modern Gentoo + distro detection +- various bug fixes, memory leak fixes, and other stability and + reliability improvements + +gstreamer + +- datetime: Return G_MAXFLOAT instead of G_MAXDOUBLE for no timezone + offset +- inputselector: Wake up streaming thread before PLAYING_TO_PAUSED + transition +- tools: fix potential crash when passing command-line options on + Windows + +gst-plugins-base + +- alsasink: Fix for being stuck in stop_streaming_threads state +- decodebin3: fix hang when removing a failing stream +- gl: wayland: cleanup on close +- parsebin: Improve elementary stream handling +- playbin: fix deadlock when stopping stream with subtitles visible + even more +- sdp: Skip source-specific caps fields when creating an SDP media + from caps +- urisourcebin: Propagate sticky events from parsebin +- urisourcebin: Activate pad before transferring sticky events +- typefinding: fix failure to recognize application/dash+xml in some + cases + +gst-plugins-good + +- osxvideosink: fix broken aspect ratio and frame drawing region +- qtdemux: Fix seek adjustment with SNAP_AFTER flag +- rtpopusdepay, matroskamux: Fix invalid rate while muxing Opus in + Matroska +- rtpmanager: twcc: Fix duplicate packet handling +- rtsp: url: fix incorrect request URI scheme for TLS transport + methods (regression) +- rtspsrc: Consider “451: Parameter Not Understood” when handling + broken control urls +- rtspsrc: fix behavior change with URI protocols in OPTIONS requests +- rtspsrc: Skip PTs with caps incompatible to the global caps +- rtpjpegdepay: fix logic error when checking if an end of image (EOI) + tag is present +- v4l2: Add support for YVU420M format +- v4l2: mark JPEG as parsed + +gst-plugins-bad + +- cea708overlay: fix HCR interpretation +- d3d11bufferpool: Fix invalid access in debug print loop +- d3d11compositor: Fix composition error on release_pad() +- d3d11converter: Fix conversion backend selection +- d3d11videosink: Fix tearing in case of fullscreen mode - + d3d11bufferpool: Fix invalid access in debug print loop +- d3d11window: fix memory leak +- decklink: fix 10 bit RGB (r210) format auto detection +- decklinkaudiosink: Fix playback when video caps is configured before + audio +- decklinkvideosrc: RGB 4:4:4 doesn’t work after GStreamer upgrade + (regression) +- decklinkvideosrc: unable to show HDMI stream that Blackmagic’s Media + Express is able to see +- debugqroverlay: fix string leak +- gtkwaylandsink: Destroy GstWlWindow when parent GtkWindow is + destroyed +- gtkwaylandsink: Fix crash when rendering after the window is closed +- ksvideo, directshow: Fix reference leaks in device providers +- h264decoder: Fix DPB bumping process +- h264decoder, h265decoder: Latency reporting related fixes +- h264parse: Validate VUI framerate +- jpegparse: reset parse state when the SOI is not the first marker +- nvencoder: Fix CQP option setting +- nvh264encoder: Fix template caps to include progressive mode as well +- openjpegdec: allow multithread decoding only in subframe mode +- tsdemux: Fix reading of extended Opus channel configuration +- vulkan: fix validation layer issues +- vulkanoverlaycompositor: fix potential use after free +- vulkanswapper: correctly handle force-aspect-ratio=false +- wasapi2: Fix potential crash on device activation failure +- webrtc: Fix segfault traversing ice transports +- webrtc: patch leak caused by early return +- zxing: add support for zxing-c++ 2.0 + +gst-plugins-ugly + +- No changes + +gst-libav + +- avdec_h264 pipeline freeze with FFmpeg6 +- avdeinterlace, avmux: fix element reference leak +- avviddec: Drop decoder stream lock when calling send_packet + +gst-rtsp-server + +- rtsp-server: fix deadlock on shutdown with non-live pipeline if + media isn’t playing/prerolled yet and eos-shutdown is enabled for + the media + +gstreamer-vaapi + +- No changes + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- No changes + +gst-editing-services + +- No changes + +gst-validate + gst-integration-testsuites + +- No changes + +gst-examples + +- No changes + +Development build environment + +- git: prevent CRLF line ending conversion for patches to fix pango + subproject patching issues on Windows + +Cerbero build tool and packaging changes in 1.22.2 + +- build: retry rust build on SIGBUS errors too +- Fix packaging of rust plugins on Android +- Modern Gentoo distro adaptation +- sbc: update to 2.0 +- speex: update to 1.2.1 + +Contributors to 1.22.2 + +Adrien De Coninck, Albert Sjölund, Alexande B, Antonio Rojas, Arun +Raghavan, Bart Van Severen, Carlo Cabrera, Colin Kinloch, Edward Hervey, +Guillaume Desmottes, Haihua Hu, He Junyan, Ilie Halip, Jordan Petridis, +Josef Kolář, Lily Foster, Mathieu Duponchelle, Matt Feury, Matthew +Waters, Maxim P. Dementyev, Michael Tretter, Nicolas Dufresne, Nirbheek +Chauhan, Piotr Brzeziński, Robert Rosengren, Rouven Czerwinski, +Sebastian Dröge, Seungha Yang, Shengqi Yu, Stéphane Cerveau, Talha Khan, +Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, Vivia +Nikolaidou, Wang Chuan, Wojciech Kapsa, + +… and many others who have contributed bug reports, translations, sent +suggestions or helped testing. Thank you all! + +List of merge requests and issues fixed in 1.22.2 + +- List of Merge Requests applied in 1.22.2 +- List of Issues fixed in 1.22.2 + +1.22.3 + +The third 1.22 bug-fix release (1.22.3) was released on 19 May 2023. + +This release only contains bugfixes and it should be safe to update from +1.22.x. + +Highlighted bugfixes in 1.22.3 + +- avdec: fix occasional video decoder deadlock on seeking with FFmpeg + 6.0 +- decodebin3: fix regression handling input streams without CAPS or + TIME segment such as e.g. udpsrc or `pushfilesrc +- bluez: a2dpsink: fix Bluetooth SIG Certification test failures +- osxvideosink: fix deadlock upon closing output window +- qtdemux: fix edit list handling regression and AV1 codec box parsing +- qtmux: fix extraction of CEA608 closed caption data from S334-1A + packets +- rtspsrc: Fix handling of * control path +- splitmux: timestamp handling improvements +- v4l2videodec: Rework dynamic resolution change handling (needed for + IMX6 mainline codec) +- videoflip: fix regression with automatically rotating video based on + tags +- d3d11: many d3d11videosink and d3d11compositor fixes +- webrtc, rtp: numerous data race fixes and stability fixes +- various bug fixes, memory leak fixes, and other stability and + reliability improvements + +gstreamer + +- tracing: Initialize tracing infrastructure even if the debug system + is not compiled in +- parse-launch: fix missing unref of looked-up child element +- gstutils: Add category and object to most logging messages + +gst-plugins-base + +- allocators: Fix fdmem unit test with recent GLib versions +- audiotestsrc: Initialize all samples in wave=ticks mode +- decodebin3: Handle input streams without CAPS or TIME segment such + as e.g. udpsrc or pushfilesrc +- decodebin3: fix regression handling streams without caps +- decodebin3: fix random hang when remove failing stream +- uridecodebin3: Ensure atomic urisourcebin state change +- glvideoflip: fix leaked caps +- glcontext_wgl: fix missing unref +- playsink: Fix volume leak + +gst-plugins-good + +- adaptivedemux2: fix critical when using an unsupported URI +- dashdemux2: mpdclient: fix divide by 0 if segment has no duration +- imagesequencesrc: Properly set default location +- multifile: error out if no filename was set +- osxvideosink: fix deadlock upon closing output window +- rtpmanager: rtpsession: data race leading to critical warnings +- rtpmanager: rtpsession: race conditions leading to critical warnings +- rtspsrc: Fix handling of * control path +- splitmuxsink: Catch invalid DTS to avoid running into problems later +- splitmuxsrc: Make PTS contiguous by preference +- qtdemux: emit no-more-pads after pruning old pads +- Revert “qtdemux: fix conditions for end of segment in reverse + playback” to fix edit list regression +- qtdemux: Fix av1C parsing +- qtmux: Fix extraction of CEA608 data from S334-1A packets +- qtwindow: unref caps in destructor +- v4l2: device provider: Fix GMainLoop leak +- v4l2: videodec: Rework dynamic resolution change handling +- v4l2: videodec: Prefer acquired caps over anything downstream +- videoflip: fix setting of method property at construction time +- videoflip 1.22.2 not rotating video when extracting frames + +gst-plugins-bad + +- a2dpsink: Fails many tests in Bluetooth SIG Certification +- avdtputil: Use int instead of int range for fixed bitpool values +- ccconverter: reintroduce frame count reset on cycle completion +- ccconverter: integer overflow & crashing +- codectimestamper: remove PC file generation from plugin’s own + meson.build +- cudamemory: Fix for semi planar YUV memory size decision +- d3d11compositor: Reconfigure resource only when output caps is + changed +- d3d11compositor: Skip zero alpha input +- d3d11convert: Fix for runtime property update +- d3d11memory: Don’t clear wrapped texture memory +- d3d11videosink: Fix for ignored initial render rectangle +- d3d11videosink: fix race condition in window unprepare +- d3d11videosink: Enhancement for initial window size decision +- d3d11videosink: Don’t clear prepared buffer on unlock_stop() +- dashdemux: mpdclient: fix divide by 0 if segment has no duration +- dtlstransport: Keep strong ref of dtls encoder/decoder +- GstPlay: avoid getting property of playbin2 if subtitle_sid is null +- GstPlay: fix critical log when using playbin3 +- h264decoder: Drop nonexisting picture silently without error +- dtmf: element classification improvements +- mfvideoenc: Allow only even resolution numbers +- sctpenc: Fix potential shutdown deadlock +- srtpdec: fix “srtp-key” check +- tests: disable dtls test if openssl is not present +- tsdemux: Set number of channels to 2 for dual mono Opus +- va: Various fixes for defects found with MSVC +- wasapi2: Allows process loopback capture on Windows 10 +- webrtcdatachannel: Bind to parent webrtcbin using a weak reference +- webrtcbin: Fix potential deadlock when closing before any data was + sent +- webrtc: Plug leaks of resolved ICE addresses +- webrtc: do not tear down data channel before data is flushed + +gst-plugins-ugly + +- mpegpsdemux: Rework gap sending + +gst-libav + +- avviddec: Temporarily unlock stream lock while flushing buffers +- Random freeze and deadlock in ffmpegviddec flush and get_buffer + while seeking + +gst-rtsp-server + +- No changes + +gstreamer-vaapi + +- No changes + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- No changes + +gst-editing-services + +- ges: base-xml-formatter: Don’t pass non-GObject pointers to + GST_DEBUG_OBJECT + +gst-validate + gst-integration-testsuites + +- No changes + +gst-examples + +- No changes + +Development build environment + +- No changes + +Cerbero build tool and packaging changes in 1.22.3 + +- glib: Ship Windows process spawning helpers +- recipes: add recipe for libltc for timecodestamper element +- Add support for RHEL9 and Rocky Linux + +Contributors to 1.22.3 + +Aleksandr Slobodeniuk, Antonio Kevo, Arun Raghavan, Carlos Rafael Giani, +Daniel Moberg, Edward Hervey, Elliot Chen, François Laignel, Guillaume +Desmottes, Haihua Hu, Jan Alexander Steffens (heftig), Jan Beich, Jan +Schmidt, Johan Sternerup, John King, Jordan Petridis, Juan Navarro, Lily +Foster, Martin Nordholts, Mathieu Duponchelle, Matthew Waters, Matthias +Fuchs, Michael Olbrich, Mihail Ivanchev, Nick Steel, Nicolas Dufresne, +Nirbheek Chauhan, Patricia Muscalu, Philippe Normand, Piotr Brzeziński, +Sanchayan Maity, Sebastian Dröge, Seungha Yang, Stéphane Cerveau, +Thibault Saunier, Tim-Philipp Müller, Xabier Rodriguez Calvar, + +… and many others who have contributed bug reports, translations, sent +suggestions or helped testing. Thank you all! + +List of merge requests and issues fixed in 1.22.3 + +- List of Merge Requests applied in 1.22.3 +- List of Issues fixed in 1.22.3 + +1.22.4 + +The fourth 1.22 bug-fix release (1.22.4) was released on 20 June 2023. + +This release only contains bugfixes and security fixes and it should be +safe to update from 1.22.x. + +Highlighted bugfixes in 1.22.4 + +- Security fixes for flacparse, dvdspu, and subparse +- d3d11videosink: Fix error on pause and play +- decklink: Correctly handle SDK strings on macOS and free strings + after usage on Linux +- filesink: Fix buffered mode writing of buffer lists and buffers with + multiple memories +- gldownload: handle passthrough without a critical +- h265parse: Fix framerate handling regression +- oggdemux: vp8 fixes +- mp4mux, qtmux, qtdemux: Opus audio mapping fixes +- pngdec: Fix wrong colours output from 16bit RGB images +- ptp clock: Work around ptpd bug in default configuration +- srtpdec: fix critical warnings on shutdown +- v4l2src: fix support for bayer format +- v4l2videoenc: support force-keyframe event in v4l2 encoder +- vtenc: apply DTS offset to ensure DTS <= PTS +- gst-python: allow more functions to be called before gst_init() +- cerbero: fix vaapi variant; add qt6 build on windows; ensure errors + on unguarded use of new APIs, require macOS 10.13 +- packages: ship codecalpha, rtponvif, dvbsubenc, switchbin, + videosignal plugins; fix pango crash on 32-bit windows +- various bug fixes, memory leak fixes, and other stability and + reliability improvements + +gstreamer + +- filesink: Fix buffered mode writing of buffer lists and buffers with + multiple memories +- basesink: Clear EOS flag on STREAM-START event +- typefindhelper: downgrade bogus error level debug log message +- ptp: Correctly parse clock ID from the commandline parameters in the + helper +- ptp: Work around bug in ptpd in default configuration + +gst-plugins-base + +- alsasink: Fix stall for transition from PAUSED to READY with USB + speakerphone. +- appsink: unref buffer in prev sample early so buffers from v4l2 can + be released properly +- basetextoverlay: Fix typo in “text-y” property description +- gldownload: handle passthrough without a critical +- glfilter: add parent meta to output buffer for input buffer +- oggdemux: vp8: Push headers downstream and detect keyframe packets +- opus: Fix potential crash when getting unexpected channel position +- streamsynchronizer: reset eos on STREAM_START +- subparse: Look for the closing > of a tag after the opening < +- video: convertframe: Add D3D11 specific conversion path +- videometa: Only validate the alignment only when it contains some + info +- video-blend: Fix linking error with C++ + +gst-plugins-good + +- flacparse: Avoid integer overflow in available data check for image + tags +- flvmux: use the correct timestamp to calculate wait times +- isomp4: Fix (E)AC-3 channel count handling +- jpegdec: fixes related to interlaced jpeg +- pngdec: Fix wrong colours output from 16bit RGB images +- qtmux, qtdemux: fix byte order for opus extension +- rtspsrc: Do not try send dropped get/set parameter +- qt5, qt6: Add more meson options and eliminate all automagic +- qt: glrenderer: don’t attempt to use QWindow from non-Qt main thread +- qml6glsink: Support building on win32 +- v4l2src: fix support for bayer format +- v4l2: Change to query only up to + V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS +- v4l2videodec: treat MPEG-1 format as MPEG-2 +- v4l2videoenc: support force keyframe event in v4l2 encoder +- tests: rtpbin_buffer_list: fix possible unaligned write/read on + 32-bit ARM + +gst-plugins-bad + +- asfmux: fix possible unaligned write on 32-bit ARM +- d3d11videosink: Fix error on pause and play +- d3dvideosink: Fix navigation event leak +- decklink: Correctly handle SDK strings on macOS and free strings + after usage on Linux +- dvdspu: Make sure enough data is allocated for the available data +- fdkaacdec: Support up to 5 rear channels +- h265parse: Fix framerate handling +- kmssink: Add STM32 LTDC and NXP i.MX8M Plus LCDIFv3 auto-detection +- sdpdemux: ensure that only one srcpad is created per stream +- srtpdec: fix critical warnings on shutdown +- testsrcbin: Remove spurious caps unref +- va: map the mbbrc to correct enum value in get_property() +- vtenc: apply DTS offset to ensure DTS <= PTS +- vtdec: time glitches on h264 playback +- waylandsink: Emit “map” signal boarder surface is ready + +gst-plugins-ugly + +- No changes + +gst-libav + +- No changes + +gst-rtsp-server + +- No changes + +gstreamer-vaapi + +- vaapidecodebin: don’t load vaapipostproc if not available + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- python: More functions can be called before gst_init() + +gst-editing-services + +- ges: launcher: Never put sinks in a GstPipeline + +gst-validate + gst-integration-testsuites + +- No changes + +gst-examples + +- No changes + +Development build environment + +- No changes + +Cerbero build tool and packaging changes in 1.22.4 + +- Ship codecalpha, rtponvif, dvbsubenc, switchbin, videosignal plugins +- pango: Fix crash on Windows 32bit build +- qml6: Add support for building the qml6 plugin on Windows and bump + meson to 1.1.1 +- vaapi: update vaapi variant/recipe for meson option changes +- packages: Put libass in the same category as assrender +- cerbero: Don’t extract if already extracted in fetch +- darwin: Ensure errors on unguarded use of new APIs, require macOS + 10.13 + +Contributors to 1.22.4 + +Andoni Morales Alastruey, Arun Raghavan, Colin Kinloch, Daniel Morin, +Edward Hervey, ekwange, Elliot Chen, François Laignel, Guillaume +Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Alexander Steffens +(heftig), Jochen Henneberg, Jordan Petridis, Kevin Song, Maksym +Khomenko, Marek Vasut, Mathieu Duponchelle, Matthew Waters, +Mengkejiergeli Ba, Michael Olbrich, Nicolas Beland, Nicolas Dufresne, +Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Sebastian Dröge, +Seungha Yang, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez +Leal, William Manley, Xavier Claessens, Yuri Fedoseev, + +… and many others who have contributed bug reports, translations, sent +suggestions or helped testing. Thank you all! -1.20.0 +List of merge requests and issues fixed in 1.22.4 -1.20.0 is scheduled to be released around October/November 2021. +- List of Merge Requests applied in 1.22.4 +- List of Issues fixed in 1.22.4 -Schedule for 1.22 +Schedule for 1.24 -Our next major feature release will be 1.22, and 1.21 will be the -unstable development version leading up to the stable 1.22 release. The -development of 1.21/1.22 will happen in the git main branch. +Our next major feature release will be 1.24, and 1.23 will be the +unstable development version leading up to the stable 1.24 release. The +development of 1.23/1.24 will happen in the git main branch of the +GStreamer mono repository. -The plan for the 1.22 development cycle is yet to be confirmed. +The plan for the 1.24 development cycle is yet to be confirmed. -1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14, -1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. +1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16, +1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. ------------------------------------------------------------------------ These release notes have been prepared by Tim-Philipp Müller with -contributions from … +contributions from Edward Hervey, Matthew Waters, Nicolas Dufresne, +Nirbheek Chauhan, Olivier Crête, Sebastian Dröge, Seungha Yang, and +Thibault Saunier. License: CC BY-SA 4.0