Release 1.20.0

This commit is contained in:
Tim-Philipp Müller 2022-02-03 19:53:25 +00:00
parent 463bafdd23
commit f0b045a69b
77 changed files with 2225 additions and 1122 deletions

View file

@ -1,5 +1,5 @@
project('gstreamer-full', 'c', project('gstreamer-full', 'c',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : ['buildtype=debugoptimized', default_options : ['buildtype=debugoptimized',
# Needed due to https://github.com/mesonbuild/meson/issues/1889, # Needed due to https://github.com/mesonbuild/meson/issues/1889,

View file

@ -1,3 +1,18 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gst-devtools.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
=== release 1.19.90 === === release 1.19.90 ===
2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com> 2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com>

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,13 +1,15 @@
This is GStreamer gst-devtools 1.19.90. This is GStreamer gst-devtools 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -53,6 +53,16 @@
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gst-devtools', 'c', project('gst-devtools', 'c',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'c_std=gnu99', 'c_std=gnu99',

View file

@ -1,5 +1,5 @@
project('GStreamer manuals and tutorials', 'c', project('GStreamer manuals and tutorials', 'c',
version: '1.19.90', version: '1.20.0',
meson_version : '>= 0.59') meson_version : '>= 0.59')
hotdoc_p = find_program('hotdoc') hotdoc_p = find_program('hotdoc')

File diff suppressed because it is too large Load diff

View file

@ -1 +1 @@
1.19 1.20

View file

@ -1,3 +1,18 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gst-editing-services.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
=== release 1.19.90 === === release 1.19.90 ===
2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com> 2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com>

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,13 +1,15 @@
This is GStreamer gst-editing-services 1.19.90. This is GStreamer gst-editing-services 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -30,6 +30,16 @@ GStreamer library for creating audio and video editors
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-editing-services/gst-editing-services-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gst-editing-services', 'c', project('gst-editing-services', 'c',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ]) 'buildtype=debugoptimized' ])

View file

@ -1,4 +1,4 @@
project('gst-examples', 'c', version : '1.19.90', license : 'LGPL') project('gst-examples', 'c', version : '1.20.0', license : 'LGPL')
cc = meson.get_compiler('c') cc = meson.get_compiler('c')
m_dep = cc.find_library('m', required : false) m_dep = cc.find_library('m', required : false)

View file

@ -1 +1 @@
project('gst-integration-testsuites', [], version: '1.19.90', meson_version : '>= 0.59', license: 'LGPL') project('gst-integration-testsuites', [], version: '1.20.0', meson_version : '>= 0.59', license: 'LGPL')

View file

@ -1,3 +1,18 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gst-libav.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
2022-01-28 19:58:55 +0100 Mathieu Duponchelle <mathieu@centricular.com> 2022-01-28 19:58:55 +0100 Mathieu Duponchelle <mathieu@centricular.com>
* docs/gst_plugins_cache.json: * docs/gst_plugins_cache.json:

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,13 +1,15 @@
This is GStreamer gst-libav 1.19.90. This is GStreamer gst-libav 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -32,6 +32,16 @@ colorspace conversion elements.
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gst-libav', 'c', 'cpp', project('gst-libav', 'c', 'cpp',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ]) 'buildtype=debugoptimized' ])

View file

@ -1,3 +1,18 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gst-omx.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
=== release 1.19.90 === === release 1.19.90 ===
2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com> 2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com>

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,13 +1,15 @@
This is GStreamer gst-omx 1.19.90. This is GStreamer gst-omx 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -31,6 +31,16 @@ a basic collection of elements
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gst-omx', 'c', project('gst-omx', 'c',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ]) 'buildtype=debugoptimized' ])

View file

@ -1,3 +1,19 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* README:
* RELEASE:
* gst-plugins-bad.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
2022-02-02 09:58:15 +0100 Stéphane Cerveau <scerveau@collabora.com> 2022-02-02 09:58:15 +0100 Stéphane Cerveau <scerveau@collabora.com>
* ext/dash/gstdashsink.c: * ext/dash/gstdashsink.c:

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,4 +1,4 @@
GStreamer 1.19.x development series GStreamer 1.20.x stable series
WHAT IT IS WHAT IT IS
---------- ----------

View file

@ -1,13 +1,15 @@
This is GStreamer gst-plugins-bad 1.19.90. This is GStreamer gst-plugins-bad 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -33,6 +33,16 @@ real live maintainer, or some actual wide use.
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gst-plugins-bad', 'c', 'cpp', project('gst-plugins-bad', 'c', 'cpp',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ]) 'buildtype=debugoptimized' ])

View file

@ -1,3 +1,19 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* README:
* RELEASE:
* gst-plugins-base.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
2022-02-03 18:18:03 +0000 Tim-Philipp Müller <tim@centricular.com> 2022-02-03 18:18:03 +0000 Tim-Philipp Müller <tim@centricular.com>
* gst-libs/gst/video/meson.build: * gst-libs/gst/video/meson.build:

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,4 +1,4 @@
GStreamer 1.19.x development series GStreamer 1.20.x stable series
WHAT IT IS WHAT IT IS
---------- ----------

View file

@ -1,13 +1,15 @@
This is GStreamer gst-plugins-base 1.19.90. This is GStreamer gst-plugins-base 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -34,6 +34,16 @@ A wide range of video and audio decoders, encoders, and filters are included.
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gst-plugins-base', 'c', project('gst-plugins-base', 'c',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ]) 'buildtype=debugoptimized' ])

View file

@ -1,3 +1,20 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* README:
* RELEASE:
* docs/gst_plugins_cache.json:
* gst-plugins-good.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
2022-02-01 05:07:04 +0530 Nirbheek Chauhan <nirbheek@centricular.com> 2022-02-01 05:07:04 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* docs/meson.build: * docs/meson.build:

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,4 +1,4 @@
GStreamer 1.19.x development series GStreamer 1.20.x stable series
WHAT IT IS WHAT IT IS
---------- ----------

View file

@ -1,13 +1,15 @@
This is GStreamer gst-plugins-good 1.19.90. This is GStreamer gst-plugins-good 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -6607,7 +6607,7 @@
"construct": false, "construct": false,
"construct-only": false, "construct-only": false,
"controllable": false, "controllable": false,
"default": "GStreamer 1.19.90 FLV muxer", "default": "GStreamer 1.20.0 FLV muxer",
"mutable": "null", "mutable": "null",
"readable": true, "readable": true,
"type": "gchararray", "type": "gchararray",
@ -6619,7 +6619,7 @@
"construct": false, "construct": false,
"construct-only": false, "construct-only": false,
"controllable": false, "controllable": false,
"default": "GStreamer 1.19.90 FLV muxer", "default": "GStreamer 1.20.0 FLV muxer",
"mutable": "null", "mutable": "null",
"readable": true, "readable": true,
"type": "gchararray", "type": "gchararray",
@ -20478,7 +20478,7 @@
"construct": false, "construct": false,
"construct-only": false, "construct-only": false,
"controllable": false, "controllable": false,
"default": "GStreamer/1.19.90", "default": "GStreamer/1.20.0",
"mutable": "null", "mutable": "null",
"readable": true, "readable": true,
"type": "gchararray", "type": "gchararray",
@ -22435,7 +22435,7 @@
"construct": false, "construct": false,
"construct-only": false, "construct-only": false,
"controllable": false, "controllable": false,
"default": "GStreamer souphttpsrc 1.19.90 ", "default": "GStreamer souphttpsrc 1.20.0 ",
"mutable": "null", "mutable": "null",
"readable": true, "readable": true,
"type": "gchararray", "type": "gchararray",

View file

@ -32,6 +32,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library).
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gst-plugins-good', 'c', project('gst-plugins-good', 'c',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ]) 'buildtype=debugoptimized' ])

View file

@ -1,3 +1,19 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* README:
* RELEASE:
* gst-plugins-ugly.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
=== release 1.19.90 === === release 1.19.90 ===
2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com> 2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com>

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,4 +1,4 @@
GStreamer 1.19.x development series GStreamer 1.20.x stable series
WHAT IT IS WHAT IT IS
---------- ----------

View file

@ -1,13 +1,15 @@
This is GStreamer gst-plugins-ugly 1.19.90. This is GStreamer gst-plugins-ugly 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -33,6 +33,16 @@ might be widely known to present patent problems.
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gst-plugins-ugly', 'c', project('gst-plugins-ugly', 'c',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ]) 'buildtype=debugoptimized' ])

View file

@ -1,3 +1,18 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gst-python.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
=== release 1.19.90 === === release 1.19.90 ===
2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com> 2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com>

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,13 +1,15 @@
This is GStreamer gst-python 1.19.90. This is GStreamer gst-python 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -30,6 +30,16 @@ GStreamer Python Bindings is a set of overrides and Gst fundamental types handli
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-python/gst-python-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gst-python', 'c', 'cpp', project('gst-python', 'c', 'cpp',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'c_std=gnu99', 'c_std=gnu99',

View file

@ -1,3 +1,19 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* docs/gst_plugins_cache.json:
* gst-rtsp-server.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
=== release 1.19.90 === === release 1.19.90 ===
2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com> 2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com>

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,13 +1,15 @@
This is GStreamer gst-rtsp-server 1.19.90. This is GStreamer gst-rtsp-server 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -321,7 +321,7 @@
"construct": false, "construct": false,
"construct-only": false, "construct-only": false,
"controllable": false, "controllable": false,
"default": "GStreamer/1.19.90", "default": "GStreamer/1.20.0",
"mutable": "null", "mutable": "null",
"readable": true, "readable": true,
"type": "gchararray", "type": "gchararray",

View file

@ -30,6 +30,16 @@ RTSP server library based on GStreamer
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gst-rtsp-server', 'c', project('gst-rtsp-server', 'c',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : ['warning_level=1', 'buildtype=debugoptimized']) default_options : ['warning_level=1', 'buildtype=debugoptimized'])

View file

@ -1,4 +1,4 @@
project('gstreamer-sharp', ['cs', 'c'], version: '1.19.90', project('gstreamer-sharp', ['cs', 'c'], version: '1.20.0',
meson_version : '>= 0.59', license: 'LGPL') meson_version : '>= 0.59', license: 'LGPL')
if host_machine.system() == 'osx' if host_machine.system() == 'osx'

View file

@ -17,8 +17,8 @@ namespace Gst.PbUtils {
public const string ENCODING_CATEGORY_ONLINE_SERVICE = @"online-service"; public const string ENCODING_CATEGORY_ONLINE_SERVICE = @"online-service";
public const string ENCODING_CATEGORY_STORAGE_EDITING = @"storage-editing"; public const string ENCODING_CATEGORY_STORAGE_EDITING = @"storage-editing";
public const int PLUGINS_BASE_VERSION_MAJOR = 1; public const int PLUGINS_BASE_VERSION_MAJOR = 1;
public const int PLUGINS_BASE_VERSION_MICRO = 90; public const int PLUGINS_BASE_VERSION_MICRO = 0;
public const int PLUGINS_BASE_VERSION_MINOR = 19; public const int PLUGINS_BASE_VERSION_MINOR = 20;
public const int PLUGINS_BASE_VERSION_NANO = 0; public const int PLUGINS_BASE_VERSION_NANO = 0;
#endregion #endregion
} }

View file

@ -170,8 +170,8 @@ namespace Gst {
public const int VALUE_LESS_THAN = -1; public const int VALUE_LESS_THAN = -1;
public const int VALUE_UNORDERED = 2; public const int VALUE_UNORDERED = 2;
public const int VERSION_MAJOR = 1; public const int VERSION_MAJOR = 1;
public const int VERSION_MICRO = 90; public const int VERSION_MICRO = 0;
public const int VERSION_MINOR = 19; public const int VERSION_MINOR = 20;
public const int VERSION_NANO = 0; public const int VERSION_NANO = 0;
#endregion #endregion
} }

View file

@ -12127,10 +12127,10 @@
<constant value="1" ctype="gint" gtype="gint" name="VALUE_GREATER_THAN" /> <constant value="1" ctype="gint" gtype="gint" name="VALUE_GREATER_THAN" />
<constant value="-1" ctype="gint" gtype="gint" name="VALUE_LESS_THAN" /> <constant value="-1" ctype="gint" gtype="gint" name="VALUE_LESS_THAN" />
<constant value="2" ctype="gint" gtype="gint" name="VALUE_UNORDERED" /> <constant value="2" ctype="gint" gtype="gint" name="VALUE_UNORDERED" />
<constant value="1" ctype="gint" gtype="gint" name="VERSION_MAJOR" /> <constant value="1" ctype="gint" gtype="gint" name="VERSION_MAJOR" />
<constant value="90" ctype="gint" gtype="gint" name="VERSION_MICRO" /> <constant value="0" ctype="gint" gtype="gint" name="VERSION_MICRO" />
<constant value="19" ctype="gint" gtype="gint" name="VERSION_MINOR" /> <constant value="20" ctype="gint" gtype="gint" name="VERSION_MINOR" />
<constant value="0" ctype="gint" gtype="gint" name="VERSION_NANO" /> <constant value="0" ctype="gint" gtype="gint" name="VERSION_NANO" />
</object> </object>
<class name="Parse" cname="GstParse" disable_void_ctor="1"> <class name="Parse" cname="GstParse" disable_void_ctor="1">
<method name="ParseBinFromDescription" cname="gst_parse_bin_from_description" shared="true"> <method name="ParseBinFromDescription" cname="gst_parse_bin_from_description" shared="true">
@ -21582,10 +21582,10 @@
<constant value="file-extension" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_FILE_EXTENSION" /> <constant value="file-extension" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_FILE_EXTENSION" />
<constant value="online-service" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_ONLINE_SERVICE" /> <constant value="online-service" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_ONLINE_SERVICE" />
<constant value="storage-editing" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_STORAGE_EDITING" /> <constant value="storage-editing" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_STORAGE_EDITING" />
<constant value="1" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MAJOR" /> <constant value="1" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MAJOR" />
<constant value="90" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MICRO" /> <constant value="0" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MICRO" />
<constant value="19" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MINOR" /> <constant value="20" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_MINOR" />
<constant value="0" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_NANO" /> <constant value="0" ctype="gint" gtype="gint" name="PLUGINS_BASE_VERSION_NANO" />
</object> </object>
</namespace> </namespace>
<namespace name="Gst.Rtp" library="gstrtp-1.0-0.dll"> <namespace name="Gst.Rtp" library="gstrtp-1.0-0.dll">

View file

@ -1,3 +1,18 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gstreamer-vaapi.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
2022-01-30 09:38:48 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> 2022-01-30 09:38:48 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
* gst/vaapi/gstvaapipluginutil.c: * gst/vaapi/gstvaapipluginutil.c:

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,13 +1,15 @@
This is GStreamer gstreamer-vaapi 1.19.90. This is GStreamer gstreamer-vaapi 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -25,6 +25,16 @@
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer-vaapi/gstreamer-vaapi-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gstreamer-vaapi', 'c', project('gstreamer-vaapi', 'c',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ]) 'buildtype=debugoptimized' ])

View file

@ -1,3 +1,19 @@
=== release 1.20.0 ===
2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* README:
* RELEASE:
* gstreamer.doap:
* meson.build:
Release 1.20.0
2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
Update ChangeLogs for 1.20.0
2022-02-02 18:06:49 +1100 Matthew Waters <matthew@centricular.com> 2022-02-02 18:06:49 +1100 Matthew Waters <matthew@centricular.com>
* gst/gst.c: * gst/gst.c:

View file

@ -1,19 +1,11 @@
GStreamer 1.20 Release Notes GStreamer 1.20 Release Notes
GStreamer 1.20 has not been released yet. It is scheduled for release in GStreamer 1.20.0 was released on 3 February 2022.
late January / early February 2022.
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.90 is the first release candidate in that series (1.20rc1).
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.20/ for the latest
version of this document. version of this document.
Last updated: Wednesday 26 January 2022, 01:00 UTC (log) Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
Introduction Introduction
@ -36,16 +28,16 @@ Highlights
- RTP header extensions: unified support in RTP depayloader and - RTP header extensions: unified support in RTP depayloader and
payloader base classes payloader base classes
- SMPTE 2022-1 2-D Forward Error Correction support - SMPTE 2022-1 2-D Forward Error Correction support
- Smart encoding (passthrough) support for VP8, VP9, H.265 in - Smart encoding (pass through) support for VP8, VP9, H.265 in
encodebin and transcodebin encodebin and transcodebin
- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
support experimental) support experimental)
- Video decoder subframe support - Video decoder subframe support
- Video decoder automatic packet-loss, data corruption, and keyframe - Video decoder automatic packet-loss, data corruption, and keyframe
request handling for RTP / WebRTC / RTSP request handling for RTP / WebRTC / RTSP
- MP4 and Matroska muxers now support profile/level/resolution changes - mp4 and Matroska muxers now support profile/level/resolution changes
for H264/H265 input streams (i.e. codec data changing on the fly) for H.264/H.265 input streams (i.e. codec data changing on the fly)
- MP4 muxing mode that initially creates a fragmented mp4 which is - mp4 muxing mode that initially creates a fragmented mp4 which is
converted to a regular mp4 on EOS converted to a regular mp4 on EOS
- Audio support for the WebKit Port for Embedded (WPE) web page source - Audio support for the WebKit Port for Embedded (WPE) web page source
element element
@ -54,7 +46,7 @@ Highlights
- NVIDIA memory:NVMM support for OpenGL glupload and gldownload - NVIDIA memory:NVMM support for OpenGL glupload and gldownload
elements elements
- Many WebRTC improvements - Many WebRTC improvements
- The new VA-API plugin implemention fleshed out with more decoders - The new VA-API plugin implementation fleshed out with more decoders
and new postproc elements and new postproc elements
- AppSink API to retrieve events in addition to buffers and buffer - AppSink API to retrieve events in addition to buffers and buffer
lists lists
@ -64,8 +56,8 @@ Highlights
- Updated Rust bindings and many new Rust plugins - Updated Rust bindings and many new Rust plugins
- Improved support for custom minimal GStreamer builds - Improved support for custom minimal GStreamer builds
- Support build against FFmpeg 5.0 - Support build against FFmpeg 5.0
- Linux Stateless CODEC support gained MPEG2 and VP9 - Linux Stateless CODEC support gained MPEG-2 and VP9
- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support - Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
- Lots of new plugins, features, performance improvements and bug - Lots of new plugins, features, performance improvements and bug
fixes fixes
@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in
freedesktop.org GitLab. freedesktop.org GitLab.
In addition to these separate git repositories there was a gst-build In addition to these separate git repositories there was a gst-build
module that would use the Meson build systemss subproject feature to module that would use the Meson build systems subproject feature to
download each individual module and then build everything in one go. It download each individual module and then build everything in one go. It
would also provide an uninstalled development environment that made it would also provide an uninstalled development environment that made it
easy to work on GStreamer and use or test versions other than the easy to work on GStreamer and use or test versions other than the
@ -163,7 +155,7 @@ WebM alpha decoding
- vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
the regular vp8dec and vp9dec software decoders to decode the regular vp8dec and vp9dec software decoders to decode
regular and alpha streams and combine them again. To decodebin regular and alpha streams and combine them again. To decodebin
these look like regular decoders which ju these look like regular decoders.
- The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
decode both alpha and non-alpha stream with a single decoder decode both alpha and non-alpha stream with a single decoder
instance instance
@ -257,7 +249,7 @@ AppSink and AppSrc improvements
or buffer list, whatever is next in the queue. or buffer list, whatever is next in the queue.
EOS events will be filtered and will not be returned. EOS handling EOS events will be filtered and will not be returned. EOS handling
can be done the ususal way, same as with _pull_sample(). can be done the usual way, same as with _pull_sample().
- appsrc: allow configuration of internal queue limits in time and - appsrc: allow configuration of internal queue limits in time and
buffers and add leaky mode. buffers and add leaky mode.
@ -312,8 +304,8 @@ Convenience API for custom GstMetas
for most scenarios is negligible however. This new API is useful for for most scenarios is negligible however. This new API is useful for
experimentation or proprietary metas, but also has some limitations: experimentation or proprietary metas, but also has some limitations:
it can only be used if theres a single producer of these metas; it can only be used if theres a single producer of these metas;
its not allowed to register the same custom meta multiple times or registering the same custom meta multiple times or from multiple
from multiple places. places is not allowed.
Additional Element Properties on Encoding Profiles Additional Element Properties on Encoding Profiles
@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds
facilitate minimal custom GStreamer builds. facilitate minimal custom GStreamer builds.
- A number of new macros have been added to declare and create - A number of new macros have been added to declare and create
per-element and per-pluginfeature register functions in all plugins, per-element and per-plugin feature register functions in all
and then call those from the per-plugin plugin_init functions: plugins, and then call those from the per-plugin plugin_init
functions:
- GST_ELEMENT_REGISTER_DEFINE, - GST_ELEMENT_REGISTER_DEFINE,
GST_DEVICE_PROVIDER_REGISTER_DEFINE, GST_DEVICE_PROVIDER_REGISTER_DEFINE,
@ -432,13 +425,13 @@ Improved support for custom minimal GStreamer builds
function defined by the REGISTER_DEFINE macro function defined by the REGISTER_DEFINE macro
- and various variants for advanced use cases. - and various variants for advanced use cases.
- This means that applications can call the per-element and - This means that applications can call the per-element and per-plugin
per-pluginfeature registration functions for only the elements they feature registration functions for only the elements they need
need instead of registering plugins as a whole with all kinds of instead of registering plugins as a whole with all kinds of elements
elements that may not be required (e.g. encoder and decoder instead that may not be required (e.g. encoder and decoder instead of just
of just decoder). In case of static linking all unused functions and decoder). In case of static linking all unused functions and their
their dependencies would be removed in this case by the linker, dependencies would be removed in this case by the linker, which
which helps minimise binary size for custom builds. helps minimise binary size for custom builds.
- gst_init() will automatically call a gst_init_static_plugins() - gst_init() will automatically call a gst_init_static_plugins()
function if one exists. function if one exists.
@ -477,8 +470,8 @@ New elements
- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
- qroverlay, debugqroverlay: new elements that allows overlaying data - qroverlay, debugqroverlay: new elements that allow overlaying data
on top of video in form of a QR code on top of video in the form of a QR code
- cvtracker: new OpenCV-based tracker element - cvtracker: new OpenCV-based tracker element
@ -535,9 +528,9 @@ New elements
closed captions stream closed captions stream
- cea608tojson: Converts CEA-608 Closed Captions to a JSON - cea608tojson: Converts CEA-608 Closed Captions to a JSON
representation representation
- cmafmux: CMAF fragmented MP4 muxer - cmafmux: CMAF fragmented mp4 muxer
- dashmp4mux: DASH fragmented MP4 muxer - dashmp4mux: DASH fragmented mp4 muxer
- isofmp4mux: ISO fragmented MP4 muxer - isofmp4mux: ISO fragmented mp4 muxer
- ebur128level: EBU R128 Loudness Level Measurement - ebur128level: EBU R128 Loudness Level Measurement
- ffv1dec: FFV1 video decoder - ffv1dec: FFV1 video decoder
- gtk4paintablesink: GTK4 video sink, which provides a - gtk4paintablesink: GTK4 video sink, which provides a
@ -577,7 +570,7 @@ New elements
- New hardware accelerated elements for Linux: - New hardware accelerated elements for Linux:
- v4l2slmpeg2dec: Support for Linux Stateless MPEG2 decoders - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
- v4l2slvp9dec: Support for Linux Stateless VP9 decoders - v4l2slvp9dec: Support for Linux Stateless VP9 decoders
- v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
layer decoding layer decoding
@ -630,7 +623,7 @@ New element features and additions
rewriting input captions, for example when the input is CDP then rewriting input captions, for example when the input is CDP then
sequence counters are rewritten, time codes are dropped and sequence counters are rewritten, time codes are dropped and
potentially re-injected if the input video frame had a time code potentially re-injected if the input video frame had a time code
meta. This can also lead to the input drifting from synchronization, meta. This can also lead to the input drifting from synchronisation,
when there isnt enough padding in the input stream to catch up. In when there isnt enough padding in the input stream to catch up. In
that case the element will start dropping old caption buffers once that case the element will start dropping old caption buffers once
the number of buffers in its internal queue reaches a certain limit the number of buffers in its internal queue reaches a certain limit
@ -640,7 +633,7 @@ New element features and additions
- ccconverter: new "cdp-mode" property to specify which sections to - ccconverter: new "cdp-mode" property to specify which sections to
include in CDP packets (timecode, CC data, service info). Various include in CDP packets (timecode, CC data, service info). Various
software, including ffmpegs Decklink support, fails parsing CDP software, including FFmpegs Decklink support, fails parsing CDP
packets that contain anything but CC data in the CDP packets. packets that contain anything but CC data in the CDP packets.
- clocksync: new "sync-to-first" property for automatic timestamp - clocksync: new "sync-to-first" property for automatic timestamp
@ -677,7 +670,7 @@ New element features and additions
alpha (also glvideomixer and other GstVideoAggregator alpha (also glvideomixer and other GstVideoAggregator
subclasses) subclasses)
- dashsink: add h265 codec support and signals for allowing custom - dashsink: add H.265 codec support and signals for allowing custom
playlist/fragment output playlist/fragment output
- decodebin3: - decodebin3:
@ -702,7 +695,7 @@ New element features and additions
- add “smart encoding” support for H.265, VP8 and VP9 (i.e. only - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
re-encode where needed and otherwise pass through encoded video re-encode where needed and otherwise pass through encoded video
as-is). as-is).
- H264/H265 smart encoding improvements: respect user-specified - H.264/H.265 smart encoding improvements: respect user-specified
stream-format, but if not specified default to avc3/hvc1 with stream-format, but if not specified default to avc3/hvc1 with
in-band SPS/PPS/VPS signalling for more flexibility. in-band SPS/PPS/VPS signalling for more flexibility.
- new encodebin2 element with dynamic/sometimes source pads in - new encodebin2 element with dynamic/sometimes source pads in
@ -759,7 +752,7 @@ New element features and additions
- matroskademux, matroskamux: Add support for ffv1, a lossless - matroskademux, matroskamux: Add support for ffv1, a lossless
intra-frame video coding format. intra-frame video coding format.
- matroskamux: accept in-band SPS/PPS/VPS for H264 and H265 - matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e. stream-format avc3 and hev1) which allows on-the-fly (i.e. stream-format avc3 and hev1) which allows on-the-fly
profile/level/resolution changes. profile/level/resolution changes.
@ -770,9 +763,9 @@ New element features and additions
- rtpsrc: add "caps" property to allow explicit setting of the caps - rtpsrc: add "caps" property to allow explicit setting of the caps
where needed where needed
- mpegts: support SCTE-35 passthrough via new "send-scte35-events" - mpegts: support SCTE-35 pass-through via new "send-scte35-events"
property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
(eg ad placement opportunities) are forwarded as events donwstream (e.g. ad placement opportunities) are forwarded as events downstream
where they can be picked up again by mpegtsmux. This required a where they can be picked up again by mpegtsmux. This required a
semantic change in the SCTE-35 section API: timestamps are now in semantic change in the SCTE-35 section API: timestamps are now in
running time instead of muxer pts. running time instead of muxer pts.
@ -782,7 +775,7 @@ New element features and additions
- mpegtsmux: - mpegtsmux:
- More conformance improvements to make MPEG-TS analyzers happy: - More conformance improvements to make MPEG-TS analysers happy:
- PCR timing accuracy: Improvements to the way mpegtsmux - PCR timing accuracy: Improvements to the way mpegtsmux
outputs PCR observations in CBR mode, so that a PCR outputs PCR observations in CBR mode, so that a PCR
observation is always inserted when needed, so that we never observation is always inserted when needed, so that we never
@ -809,11 +802,11 @@ New element features and additions
- support H.264 avc3 and H.265 hvc1 stream formats as input where - support H.264 avc3 and H.265 hvc1 stream formats as input where
the codec data is signalled in-band inside the bitstream instead the codec data is signalled in-band inside the bitstream instead
of caps/file headers. of caps/file headers.
- support profile/level/resolution changes for H264/H265 input - support profile/level/resolution changes for H.264/H.265 input
streams (i.e. codec data changing on the fly). Each codec_data streams (i.e. codec data changing on the fly). Each codec_data
is put into its own SampleTableEntry inside the stsd, unless the is put into its own SampleTableEntry inside the stsd, unless the
input is in avc3 stream format in which case its written input is in avc3 stream format in which case its written
in-band an not in the headers. in-band and not in the headers.
- multifilesink: new ""min-keyframe-distance"" property to make - multifilesink: new ""min-keyframe-distance"" property to make
minimum distance between keyframes in next-file=key-frame mode minimum distance between keyframes in next-file=key-frame mode
@ -867,7 +860,9 @@ New element features and additions
work, the soup plugin now tries to determine the libsoup version work, the soup plugin now tries to determine the libsoup version
used by the application (and its other dependencies) at runtime on used by the application (and its other dependencies) at runtime on
systems where GStreamer is linked dynamically. libsoup3 support is systems where GStreamer is linked dynamically. libsoup3 support is
still considered somewhat experimental at this point. still considered somewhat experimental at this point. Distro
packagers please take note of the souphttpsrc plugin dependency
changes mentioned in the build and dependencies section below.
- srtsrc, srtsink: add signals for the application to accept/reject - srtsrc, srtsink: add signals for the application to accept/reject
incoming connections incoming connections
@ -1045,7 +1040,7 @@ Core
- GstSharedTaskPool: new “shared” task pool subclass with slightly - GstSharedTaskPool: new “shared” task pool subclass with slightly
different default behaviour than the existing GstTaskPool which different default behaviour than the existing GstTaskPool which
would create unlimited number of threads for new tasks. The shared would create unlimited number of threads for new tasks. The shared
taskpool creates up to N threads (default: 1) and then distributes task pool creates up to N threads (default: 1) and then distributes
pending tasks to those threads round-robin style, and blocks if no pending tasks to those threads round-robin style, and blocks if no
thread is available. It is possible to join tasks. This can be used thread is available. It is possible to join tasks. This can be used
by plugins to implement simple multi-threaded processing and is used by plugins to implement simple multi-threaded processing and is used
@ -1078,20 +1073,20 @@ Plugins Base Utils library
extension for given caps. extension for given caps.
- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
flags, and level from H264 AvcC codec_data. The format of H264 AVCC flags, and level from H.264 AvcC codec_data. The format of H.264
extradata/sequence_header is documented in the ITU-T H.264 AVCC extradata/sequence_header is documented in the ITU-T H.264
specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2. section 5.3.3.1.2.
- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
compatible MIME codec string codec. Useful for providing the codecs compatible MIME codec string codec. Useful for providing the codecs
field inside the Content-Type HTTP header for containerized formats, field inside the Content-Type HTTP header for container formats,
such as mp4 or matroska. such as mp4 or Matroska.
GStreamer OpenGL integration library and plugins GStreamer OpenGL integration library and plugins
- glcolorconvert: added suppport for converting the video formats - glcolorconvert: added support for converting the video formats A420,
A420, AV12, BGR, BGRA, RGBP and BGRP. AV12, BGR, BGRA, RGBP and BGRP.
- Added support to GstGLBuffer for persistent buffer mappings where a - Added support to GstGLBuffer for persistent buffer mappings where a
Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
@ -1246,15 +1241,15 @@ GstCodecs and Video Parsers
- Support for render delays to improve throughput across all CODECs - Support for render delays to improve throughput across all CODECs
(used with NVDEC and V4L2). (used with NVDEC and V4L2).
- lots of improvements to parsers and the codec parsing decoder base - lots of improvements to parsers and the codec parsing decoder base
classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
hardware-accelerate decoder APIs. hardware-accelerated decoder APIs.
Bindings support Bindings support
- gst_allocation_params_new() allocates a GstAllocationParams struct - gst_allocation_params_new() allocates a GstAllocationParams struct
on the heap. This should only be used by bindings (and freed via on the heap. This should only be used by bindings (and freed via
gst_allocation_params_free() then). In C code you would allocate gst_allocation_params_free() afterwards). In C code you would
this on the stack and only init it in place. allocate this on the stack and only init it in place.
- gst_debug_log_literal() can be used to log a string to the debug log - gst_debug_log_literal() can be used to log a string to the debug log
without going through any printf format expansion and associated without going through any printf format expansion and associated
@ -1370,12 +1365,12 @@ Miscellaneous other changes and enhancements
resets (e.g. because device power cycles), by emitting the “synced” resets (e.g. because device power cycles), by emitting the “synced”
signal with synced=FALSE parameter, so applications can take action. signal with synced=FALSE parameter, so applications can take action.
- gst_value_deserialize_with_pspec() allows deserialization with a - gst_value_deserialize_with_pspec() allows deserialisation with a
hint for what the target GType should be. This allows for example hint for what the target GType should be. This allows for example
passing arrays of flags through the command line or passing arrays of flags through the command line or
gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
- Its now allowed to create an empty GstVideoOverlayComposition - Its now possible to create an empty GstVideoOverlayComposition
without any rectangles by passing a NULL rectangle to without any rectangles by passing a NULL rectangle to
gst_video_overlay_composition_new(). This is useful for bindings and gst_video_overlay_composition_new(). This is useful for bindings and
simplifies application code in some places. simplifies application code in some places.
@ -1384,9 +1379,9 @@ Tracing framework, debugging and testing improvements
- New factories tracer to list loaded elements (and other plugin - New factories tracer to list loaded elements (and other plugin
features). This can be useful to collect a list of elements needed features). This can be useful to collect a list of elements needed
for an application, which then in turn can be used to create a for an application, which in turn can be used to create a tailored
tailored minimal GStreamer build that contains just the elements minimal GStreamer build that contains just the elements needed and
needed and nothing else. nothing else.
- New plugin-feature-loaded tracing hook for use by tracers like the - New plugin-feature-loaded tracing hook for use by tracers like the
new factories tracer new factories tracer
@ -1456,8 +1451,8 @@ GStreamer RTSP server
- GstRTSPMediaFactory gained API to disable RTCP - GstRTSPMediaFactory gained API to disable RTCP
(gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
Previously RTCP was always allowed for all RTSP medias. With this Previously RTCP was always allowed for all RTSP medias. With this
change it is possible to disable RTCP completely, no matter if the change it is possible to disable RTCP completely, irrespective of
client wants to do RTCP or not. whether the client wants to do RTCP or not.
- Make a mount point of / work correctly. While not allowed by the - Make a mount point of / work correctly. While not allowed by the
RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
@ -1483,12 +1478,12 @@ GStreamer VAAPI
- new AV1 decoder element (vaapiav1dec) - new AV1 decoder element (vaapiav1dec)
- H264 decoder: handle stereoscopic 3D video with frame packing - H.264 decoder: handle stereoscopic 3D video with frame packing
arrangement SEI messages arrangement SEI messages
- H265 encoder: added Screen Content Coding extensions support - H.265 encoder: added Screen Content Coding extensions support
- H265 decoder: gained MAIN_444_12 profile support (decoded to - H.265 decoder: gained MAIN_444_12 profile support (decoded to
Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
- vaapipostproc: gained BT2020 color standard support - vaapipostproc: gained BT2020 color standard support
@ -1557,7 +1552,7 @@ GStreamer Python Bindings
GStreamer C# Bindings GStreamer C# Bindings
- Fix GstDebugGraphDetails enum - Fix GstDebugGraphDetails enum
- Updated to latests GtkSharp - Updated to latest GtkSharp
- Updated to include GStreamer 1.20 API - Updated to include GStreamer 1.20 API
GStreamer Rust Bindings and Rust Plugins GStreamer Rust Bindings and Rust Plugins
@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins
Build and Dependencies Build and Dependencies
- Meson 0.59 or newer is required to build GStreamer now. - Meson 0.59 or newer is now required to build GStreamer.
- The GLib requirement has been bumped to GLib 2.56 or newer (from - The GLib requirement has been bumped to GLib 2.56 or newer (from
March 2018). March 2018).
- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
- The souphttpsrc plugin is no longer linked against libsoup but
instead tries to pick up either libsoup2 or libsoup3 dynamically at
runtime. Distro packagers please ensure to add a dependency on one
of the libsoup runtimes to the gst-plugins-good package so that
there is actually a libsoup for the plugin to find!
Explicit opt-in required for build of certain plugins with (A)GPL dependencies Explicit opt-in required for build of certain plugins with (A)GPL dependencies
Some plugins have GPL- or AGPL-licensed dependencies and those plugins Some plugins have GPL- or AGPL-licensed dependencies and those plugins
@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements
- XCode 12 support - XCode 12 support
- macOS OS release support is now future-proof, similar to iOS - macOS OS release support is now future-proof, similar to iOS
- macOS Apple Silicon (ARM64) cross-compile support has been added - macOS Apple Silicon (ARM64) cross-compile support has been added,
- macOS Apple Silicon (ARM64) native support is currently experimental including Universal binaries. There is a known bug regarding this on
ARM64.
- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
experimental and is known to have bugs
Windows specific Cerbero improvements Windows specific Cerbero improvements
@ -1648,6 +1652,13 @@ macOS and iOS
- applemedia: add ProRes support to vtenc and vtdec - applemedia: add ProRes support to vtenc and vtdec
- The GStreamer.framework location is now relocatable and is not
required to be /Library/Frameworks/
- Cerbero now supports cross-compiling to macOS running on Apple
Silicon (ARM64), and Universal binaries are now available that can
be used on both X86_64 and ARM64 macOS.
Windows Windows
- On Windows the high-resolution clock is enabled now in the - On Windows the high-resolution clock is enabled now in the
@ -1679,7 +1690,7 @@ Windows
GstDeviceProvider implementation to enumerate/select target monitors GstDeviceProvider implementation to enumerate/select target monitors
for capture. for capture.
- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs - Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
(d3d11av1dec, d3d11mpeg2dec) (d3d11av1dec, d3d11mpeg2dec)
- VP9 decoding got more reliable and stable thanks to a newly written - VP9 decoding got more reliable and stable thanks to a newly written
@ -1863,7 +1874,7 @@ the git 1.20 branch, which will be a stable branch.
1.20.0 1.20.0
1.20.0 is scheduled to be released around early February 2022. 1.20.0 was released on 3 February 2022.
Schedule for 1.22 Schedule for 1.22

View file

@ -1,4 +1,4 @@
GStreamer 1.19.x development series GStreamer 1.20.x stable series
WHAT IT IS WHAT IT IS
---------- ----------

View file

@ -1,13 +1,15 @@
This is GStreamer core 1.19.90. This is GStreamer core 1.20.0.
GStreamer 1.19 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.20. of your favourite cross-platform multimedia framework!
The 1.19 development series adds new features on top of the 1.18 series and is As always, this release is again packed with new features, bug fixes and
part of the API and ABI-stable 1.x release series of the GStreamer multimedia other improvements.
framework.
Full release notes will one day be found at: The 1.20 release series adds new features on top of the 1.18 series and is
part of the API and ABI-stable 1.x release series.
Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.20/ https://gstreamer.freedesktop.org/releases/1.20/
@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/ directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at The git repository and details how to clone it can be found at
https://gitlab.freedesktop.org/gstreamer/ https://gitlab.freedesktop.org/gstreamer/gstreamer/
==== Homepage ==== ==== Homepage ====
@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ==== ==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org We track bugs and feature requests in GitLab:
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
Please submit patches via GitLab as well, in form of Merge Requests. See Please submit patches via GitLab as well, in form of Merge Requests. See
@ -81,11 +82,14 @@ gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the OFTC IRC network. There is also a #gstreamer IRC channel on the OFTC IRC network.
Please do not submit support requests in GitLab, we only use it
for bug tracking and merge requests review.
==== Developers ==== ==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org: The GStreamer source code repository can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer https://gitlab.freedesktop.org/gstreamer/gstreamer/
and can also be cloned from there and this is also where you can submit and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests. Merge Requests or file issues for bugs or feature requests.

View file

@ -38,6 +38,16 @@ hierarchy, and a set of media-agnostic core elements.
</GitRepository> </GitRepository>
</repository> </repository>
<release>
<Version>
<revision>1.20.0</revision>
<branch>main</branch>
<name></name>
<created>2022-02-03</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.20.0.tar.xz" />
</Version>
</release>
<release> <release>
<Version> <Version>
<revision>1.19.90</revision> <revision>1.19.90</revision>

View file

@ -1,5 +1,5 @@
project('gstreamer', 'c', project('gstreamer', 'c',
version : '1.19.90', version : '1.20.0',
meson_version : '>= 0.59', meson_version : '>= 0.59',
default_options : [ 'warning_level=1', default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ]) 'buildtype=debugoptimized' ])