GStreamer 1.20.0 multimedia framework available

After a year and a half of development, GStreamer 1.20 was released, a cross-platform set of components written in C for creating a wide range of multimedia applications, from media players and audio / video file converters, to VoIP applications and streaming systems. The GStreamer code is distributed under the LGPLv2.1 license. Updates to gst-plugins-base 1.20, gst-plugins-good 1.20, gst-plugins-bad 1.20, gst-plugins-ugly 1.20, as well as gst-libav 1.20 wrapping and gst-rtsp-server 20 streaming server are available at the same time. At the API and ABI level, the new release is backward compatible with the 1.0 branch. Binary builds will soon be prepared for Android, iOS, macOS and Windows (on Linux it is recommended to use packages from the distribution).

Key improvements in GStreamer 1.20:

  • Development on GitLab has been switched to using a single repository common to all modules.
  • A new high-level GstPlay library has been added that replaces the GstPlayer API and offers similar functionality for playing content, except that it uses a message bus to notify applications instead of GObject signals.
  • Added support for decoding WebM transparency information, which allows you to play VP8/VP9 videos with transparent areas.
  • Added support for setting additional application-specific properties in encoding profiles.
  • Compositor supports video conversion and mixing in multi-threaded mode.
  • Support for working with additional RTP headers (RTP Header Extensions) has been unified in the depayloader and payloader classes.
  • Added support for the SMPTE 2022-1 2-D (Forward Error Correction) mechanism.
  • encodebin and transcodebin for VP8, VP9 and H.265 codecs implement smart encoding mode ("smart encoding"), in which transcoding is performed only when necessary, and the rest of the time, the existing stream is forwarded.
  • Made souphttpsrc plugin compatible with libsoup2 and libsoup3.
  • Added the ability to decode input data at the level of intermediate frames (sub-frame), which allows you to start decoding without waiting for a full frame. This optimization is supported by the OpenJPEG JPEG 2000, FFmpeg H.264 and OpenMAX H.264/H.265 decoders.
  • Video decoding for RTP, WebRTC, and RTSP protocols provides automatic handling of packet loss, data corruption, and key frame requests.
  • Support for changing codec data on the fly has been added to the mp4 and Matroska media container packers, which allows you to change the profile, level and resolution for H.264/H.265 input streams.
  • Added mode for creating fragmented mp4 media containers.
  • Audio support has been added to the WPE-based (WebKit Port for Embedded) port.
  • Added the ability to use CUDA for color space conversion, element scaling and element loading.
  • Support for NVMM (NVIDIA Memory Module) memory has been added for the OpenGL glupload and gldownload elements.
  • Improved WebRTC support.
  • A new plugin for VA-API (Video Acceleration API) is proposed, which supports more decoders and post-processing elements.
  • Added event support to the AppSink API in addition to buffers and buffer lists.
  • Additional settings for internal queues have been added to AppSrc.
  • Updated Rust bindings and added 26 new plugins written in Rust (gst-plugins-rs).
  • Added aesdec and aesenc elements for encryption and decryption using the AES algorithm.
  • Added fakeaudiosink and videocodectestsink elements for testing and debugging.
  • Improved tools for creating minimalistic builds of GStreamer.
  • Added ability to build with FFmpeg 5.0.
  • For Linux, versions of the MPEG-2 and VP9 codecs are implemented that work without saving state (Stateless).
  • For Windows, the Direct3D11/DXVA-based decoder has added support for AV1 and MPEG-2.

Source: opennet.ru

Add a comment