diff --git a/meson.build b/meson.build index 174e71695f..45ff5e26c5 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gstreamer-full', 'c', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : ['buildtype=debugoptimized', # Needed due to https://github.com/mesonbuild/meson/issues/1889, diff --git a/subprojects/gst-devtools/ChangeLog b/subprojects/gst-devtools/ChangeLog index a0981ecf2e..1f39b5da86 100644 --- a/subprojects/gst-devtools/ChangeLog +++ b/subprojects/gst-devtools/ChangeLog @@ -1,3 +1,18 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * NEWS: + * RELEASE: + * gst-devtools.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + === release 1.19.90 === 2022-01-28 14:28:35 +0000 Tim-Philipp Müller diff --git a/subprojects/gst-devtools/NEWS b/subprojects/gst-devtools/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gst-devtools/NEWS +++ b/subprojects/gst-devtools/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gst-devtools/RELEASE b/subprojects/gst-devtools/RELEASE index 0ea325b2ef..3aa4be6eea 100644 --- a/subprojects/gst-devtools/RELEASE +++ b/subprojects/gst-devtools/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gst-devtools/gst-devtools.doap b/subprojects/gst-devtools/gst-devtools.doap index 77a35da09a..c0757b3366 100644 --- a/subprojects/gst-devtools/gst-devtools.doap +++ b/subprojects/gst-devtools/gst-devtools.doap @@ -53,6 +53,16 @@ + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gst-devtools/meson.build b/subprojects/gst-devtools/meson.build index 3146fa30e3..e40b188063 100644 --- a/subprojects/gst-devtools/meson.build +++ b/subprojects/gst-devtools/meson.build @@ -1,5 +1,5 @@ project('gst-devtools', 'c', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'c_std=gnu99', diff --git a/subprojects/gst-docs/meson.build b/subprojects/gst-docs/meson.build index 8e0584a2e5..e8fcd6fcef 100644 --- a/subprojects/gst-docs/meson.build +++ b/subprojects/gst-docs/meson.build @@ -1,5 +1,5 @@ project('GStreamer manuals and tutorials', 'c', - version: '1.19.90', + version: '1.20.0', meson_version : '>= 0.59') hotdoc_p = find_program('hotdoc') diff --git a/subprojects/gst-docs/symbols/symbol_index.json b/subprojects/gst-docs/symbols/symbol_index.json index 1de2e7690b..02270e3ebb 100644 --- a/subprojects/gst-docs/symbols/symbol_index.json +++ b/subprojects/gst-docs/symbols/symbol_index.json @@ -307,10 +307,12 @@ "GESMarker", "GESMarker:position", "GESMarkerClass.parent_class", + "GESMarkerFlags", "GESMarkerList", "GESMarkerList::marker-added", "GESMarkerList::marker-moved", "GESMarkerList::marker-removed", + "GESMarkerList:flags", "GESMarkerListClass.parent_class", "GESMetaContainer", "GESMetaContainer::notify-meta", @@ -630,6 +632,8 @@ "GES_EXTRACTABLE_GET_INTERFACE", "GES_FRAME_NUMBER_IS_VALID", "GES_FRAME_NUMBER_NONE", + "GES_MARKER_FLAG_NONE", + "GES_MARKER_FLAG_SNAPPABLE", "GES_META_CONTAINER_GET_INTERFACE", "GES_META_DESCRIPTION", "GES_META_FLAG_TYPE", @@ -2031,6 +2035,13 @@ "GST_H264_CT_TYPE_PROGRESSIVE", "GST_H264_CT_TYPE_UNKNOWN", "GST_H264_DECODER_CAST", + "GST_H264_DECODER_COMPLIANCE_AUTO", + "GST_H264_DECODER_COMPLIANCE_FLEXIBLE", + "GST_H264_DECODER_COMPLIANCE_NORMAL", + "GST_H264_DECODER_COMPLIANCE_STRICT", + "GST_H264_DPB_BUMP_LOW_LATENCY", + "GST_H264_DPB_BUMP_NORMAL_LATENCY", + "GST_H264_DPB_BUMP_VERY_LOW_LATENCY", "GST_H264_DPB_MAX_SIZE", "GST_H264_FRAME_PACKING_CHECKERBOARD_INTERLEAVING", "GST_H264_FRAME_PACKING_COLUMN_INTERLEAVING", @@ -2337,6 +2348,7 @@ "GST_JPEG2000_SAMPLING_RGB", "GST_JPEG2000_SAMPLING_RGBA", "GST_JPEG2000_SAMPLING_YBR410", + "GST_JPEG2000_SAMPLING_YBR411", "GST_JPEG2000_SAMPLING_YBR420", "GST_JPEG2000_SAMPLING_YBR422", "GST_JPEG2000_SAMPLING_YBR444", @@ -3496,6 +3508,13 @@ "GST_PARSE_FLAG_NONE", "GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS", "GST_PARSE_FLAG_PLACE_IN_BIN", + "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_AUDIO", + "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_CONTAINER", + "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_GENERIC", + "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_IMAGE", + "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_SUBTITLE", + "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_TAG", + "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_VIDEO", "GST_PHYS_MEMORY_ALLOCATOR_CAST", "GST_PHYS_MEMORY_ALLOCATOR_GET_INTERFACE", "GST_PIPELINE_CAST", @@ -3701,15 +3720,22 @@ "GST_RTCP_RTPFB_TYPE_TMMBN", "GST_RTCP_RTPFB_TYPE_TMMBR", "GST_RTCP_RTPFB_TYPE_TWCC", + "GST_RTCP_SDES_APSI", + "GST_RTCP_SDES_CCID", "GST_RTCP_SDES_CNAME", "GST_RTCP_SDES_EMAIL", "GST_RTCP_SDES_END", + "GST_RTCP_SDES_H323_CADDR", "GST_RTCP_SDES_INVALID", "GST_RTCP_SDES_LOC", + "GST_RTCP_SDES_MID", "GST_RTCP_SDES_NAME", "GST_RTCP_SDES_NOTE", "GST_RTCP_SDES_PHONE", "GST_RTCP_SDES_PRIV", + "GST_RTCP_SDES_REPAIRED_RTP_STREAM_ID", + "GST_RTCP_SDES_RGRP", + "GST_RTCP_SDES_RTP_STREAM_ID", "GST_RTCP_SDES_TOOL", "GST_RTCP_TYPE_APP", "GST_RTCP_TYPE_BYE", @@ -3753,6 +3779,11 @@ "GST_RTP_HDREXT_NTP_64", "GST_RTP_HDREXT_NTP_64_SIZE", "GST_RTP_HEADER_EXTENSION_CAST", + "GST_RTP_HEADER_EXTENSION_DIRECTION_INACTIVE", + "GST_RTP_HEADER_EXTENSION_DIRECTION_INHERITED", + "GST_RTP_HEADER_EXTENSION_DIRECTION_RECVONLY", + "GST_RTP_HEADER_EXTENSION_DIRECTION_SENDONLY", + "GST_RTP_HEADER_EXTENSION_DIRECTION_SENDRECV", "GST_RTP_HEADER_EXTENSION_ONE_BYTE", "GST_RTP_HEADER_EXTENSION_TWO_BYTE", "GST_RTP_HEADER_EXTENSION_URI_METADATA_KEY", @@ -4546,6 +4577,7 @@ "GST_TRACER_PAD_QUERY_PRE", "GST_TRACER_PAD_UNLINK_POST", "GST_TRACER_PAD_UNLINK_PRE", + "GST_TRACER_PLUGIN_FEATURE_LOADED", "GST_TRACER_QUARK", "GST_TRACER_RECORD_CAST", "GST_TRACER_TS", @@ -5234,8 +5266,12 @@ "GST_VIDEO_FORMAT_A444_10BE", "GST_VIDEO_FORMAT_A444_10LE", "GST_VIDEO_FORMAT_ABGR", + "GST_VIDEO_FORMAT_ABGR64_BE", + "GST_VIDEO_FORMAT_ABGR64_LE", "GST_VIDEO_FORMAT_ARGB", "GST_VIDEO_FORMAT_ARGB64", + "GST_VIDEO_FORMAT_ARGB64_BE", + "GST_VIDEO_FORMAT_ARGB64_LE", "GST_VIDEO_FORMAT_AV12", "GST_VIDEO_FORMAT_AYUV", "GST_VIDEO_FORMAT_AYUV64", @@ -5244,6 +5280,8 @@ "GST_VIDEO_FORMAT_BGR15", "GST_VIDEO_FORMAT_BGR16", "GST_VIDEO_FORMAT_BGRA", + "GST_VIDEO_FORMAT_BGRA64_BE", + "GST_VIDEO_FORMAT_BGRA64_LE", "GST_VIDEO_FORMAT_BGRP", "GST_VIDEO_FORMAT_BGRx", "GST_VIDEO_FORMAT_ENCODED", @@ -5333,6 +5371,8 @@ "GST_VIDEO_FORMAT_RGB16", "GST_VIDEO_FORMAT_RGB8P", "GST_VIDEO_FORMAT_RGBA", + "GST_VIDEO_FORMAT_RGBA64_BE", + "GST_VIDEO_FORMAT_RGBA64_LE", "GST_VIDEO_FORMAT_RGBP", "GST_VIDEO_FORMAT_RGBx", "GST_VIDEO_FORMAT_UNKNOWN", @@ -5613,6 +5653,9 @@ "GST_VP9_BIT_DEPTH_10", "GST_VP9_BIT_DEPTH_12", "GST_VP9_BIT_DEPTH_8", + "GST_VP9_BLOCK_SIZE_GROUPS", + "GST_VP9_CLASS0_SIZE", + "GST_VP9_COMP_MODE_CONTEXTS", "GST_VP9_CR_FULL", "GST_VP9_CR_LIMITED", "GST_VP9_CS_BT_2020", @@ -5629,11 +5672,22 @@ "GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP", "GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH", "GST_VP9_INTERPOLATION_FILTER_SWITCHABLE", + "GST_VP9_INTERP_FILTER_CONTEXTS", "GST_VP9_INTER_FRAME", + "GST_VP9_INTER_MODES", + "GST_VP9_INTER_MODE_CONTEXTS", + "GST_VP9_INTRA_MODES", + "GST_VP9_IS_INTER_CONTEXTS", "GST_VP9_KEY_FRAME", + "GST_VP9_MV_CLASSES", + "GST_VP9_MV_FR_SIZE", + "GST_VP9_MV_JOINTS", + "GST_VP9_MV_OFFSET_BITS", "GST_VP9_PARSER_BROKEN_DATA", "GST_VP9_PARSER_ERROR", "GST_VP9_PARSER_OK", + "GST_VP9_PARTITION_CONTEXTS", + "GST_VP9_PARTITION_TYPES", "GST_VP9_PICTURE", "GST_VP9_PICTURE_CAST", "GST_VP9_PROFILE_0", @@ -5641,6 +5695,10 @@ "GST_VP9_PROFILE_2", "GST_VP9_PROFILE_3", "GST_VP9_PROFILE_UNDEFINED", + "GST_VP9_REFERENCE_MODE_COMPOUND_REFERENCE", + "GST_VP9_REFERENCE_MODE_SELECT", + "GST_VP9_REFERENCE_MODE_SINGLE_REFERENCE", + "GST_VP9_REF_CONTEXTS", "GST_VP9_REF_FRAME_ALTREF", "GST_VP9_REF_FRAME_GOLDEN", "GST_VP9_REF_FRAME_INTRA", @@ -5651,6 +5709,20 @@ "GST_VP9_SEG_LVL_MAX", "GST_VP9_SEG_LVL_REF_FRAME", "GST_VP9_SEG_SEG_LVL_SKIP", + "GST_VP9_SKIP_CONTEXTS", + "GST_VP9_SWITCHABLE_FILTERS", + "GST_VP9_TX_16x16", + "GST_VP9_TX_32x32", + "GST_VP9_TX_4x4", + "GST_VP9_TX_8x8", + "GST_VP9_TX_MODES", + "GST_VP9_TX_MODE_ALLOW_16x16", + "GST_VP9_TX_MODE_ALLOW_32x32", + "GST_VP9_TX_MODE_ALLOW_8x8", + "GST_VP9_TX_MODE_ONLY_4x4", + "GST_VP9_TX_MODE_SELECT", + "GST_VP9_TX_SIZES", + "GST_VP9_TX_SIZE_CONTEXTS", "GST_VULKAN_BARRIER_FLAG_NONE", "GST_VULKAN_BARRIER_NONE", "GST_VULKAN_BARRIER_TYPE_BUFFER", @@ -5744,6 +5816,16 @@ "GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTING", "GST_WEBRTC_DTLS_TRANSPORT_STATE_FAILED", "GST_WEBRTC_DTLS_TRANSPORT_STATE_NEW", + "GST_WEBRTC_ERROR", + "GST_WEBRTC_ERROR_DATA_CHANNEL_FAILURE", + "GST_WEBRTC_ERROR_DTLS_FAILURE", + "GST_WEBRTC_ERROR_ENCODER_ERROR", + "GST_WEBRTC_ERROR_FINGERPRINT_FAILURE", + "GST_WEBRTC_ERROR_HARDWARE_ENCODER_NOT_AVAILABLE", + "GST_WEBRTC_ERROR_INTERNAL_FAILURE", + "GST_WEBRTC_ERROR_INVALID_STATE", + "GST_WEBRTC_ERROR_SCTP_FAILURE", + "GST_WEBRTC_ERROR_SDP_SYNTAX_ERROR", "GST_WEBRTC_FEC_TYPE_NONE", "GST_WEBRTC_FEC_TYPE_ULP_RED", "GST_WEBRTC_ICE_COMPONENT_RTCP", @@ -6060,23 +6142,23 @@ "GstAV1WarpModelType", "GstAVFAssetSrc!audio", "GstAVFAssetSrc!video", + "GstAVFVideoSourceDeviceType", + "GstAVFVideoSourceDeviceType::default", + "GstAVFVideoSourceDeviceType::dual", + "GstAVFVideoSourceDeviceType::telephoto", + "GstAVFVideoSourceDeviceType::wide-angle", + "GstAVFVideoSourceOrientation", + "GstAVFVideoSourceOrientation::default", + "GstAVFVideoSourceOrientation::landscape-left", + "GstAVFVideoSourceOrientation::landscape-right", + "GstAVFVideoSourceOrientation::portrait", + "GstAVFVideoSourceOrientation::portrat-upside-down", + "GstAVFVideoSourcePosition", + "GstAVFVideoSourcePosition::back", + "GstAVFVideoSourcePosition::default", + "GstAVFVideoSourcePosition::front", "GstAVFVideoSrc!src", "GstAVSampleVideoSink!sink", - "GstAVFVideoSourceOrientation", - "GstAVFVideoSourceDeviceType::default", - "GstAVFVideoSourceDeviceType::wide-angle", - "GstAVFVideoSourceDeviceType::dual", - "GstAVFVideoSourceOrientation::portrat-upside-down", - "GstAVFVideoSourceOrientation::landscape-left", - "GstAVFVideoSourceOrientation::default", - "GstAVFVideoSourcePosition", - "GstAVFVideoSourceOrientation::landscape-right", - "GstAVFVideoSourcePosition::front", - "GstAVFVideoSourceDeviceType", - "GstAVFVideoSourcePosition::back", - "GstAVFVideoSourceDeviceType::telephoto", - "GstAVFVideoSourcePosition::default", - "GstAVFVideoSourceOrientation::portrait", "GstAacParse", "GstAacParse!sink", "GstAacParse!src", @@ -6097,6 +6179,13 @@ "GstAdder!sink_%u", "GstAdder!src", "GstAdder:caps", + "GstAesCipher", + "GstAesCipher::aes-128-cbc", + "GstAesCipher::aes-256-cbc", + "GstAesDec!sink", + "GstAesDec!src", + "GstAesEnc!sink", + "GstAesEnc!src", "GstAggregator", "GstAggregator.parent", "GstAggregator.srcpad", @@ -6275,8 +6364,10 @@ "GstAppSink::eos", "GstAppSink::new-preroll", "GstAppSink::new-sample", + "GstAppSink::new-serialized-event", "GstAppSink::pull-preroll", "GstAppSink::pull-sample", + "GstAppSink::try-pull-object", "GstAppSink::try-pull-preroll", "GstAppSink::try-pull-sample", "GstAppSink:buffer-list", @@ -6300,6 +6391,7 @@ "GstAppSinkClass::new_sample", "GstAppSinkClass::pull_preroll", "GstAppSinkClass::pull_sample", + "GstAppSinkClass::try_pull_object", "GstAppSinkClass::try_pull_preroll", "GstAppSinkClass::try_pull_sample", "GstAppSrc", @@ -6383,6 +6475,7 @@ "GstAudioAggregator.parent", "GstAudioAggregator:alignment-threshold", "GstAudioAggregator:discont-wait", + "GstAudioAggregator:ignore-inactive-pads", "GstAudioAggregator:output-buffer-duration", "GstAudioAggregator:output-buffer-duration-fraction", "GstAudioAggregatorClass.aggregate_one_buffer", @@ -6396,6 +6489,7 @@ "GstAudioAggregatorPad", "GstAudioAggregatorPad.info", "GstAudioAggregatorPad.parent", + "GstAudioAggregatorPad:qos-messages", "GstAudioAggregatorPadClass.convert_buffer", "GstAudioAggregatorPadClass.parent_class", "GstAudioAggregatorPadClass.update_conversion_info", @@ -7652,6 +7746,8 @@ "GstCCExtractor!sink", "GstCCExtractor!src", "GstCCExtractor:remove-caption-meta", + "GstCVTracker!sink", + "GstCVTracker!src", "GstCairoOverlay", "GstCairoOverlay!sink", "GstCairoOverlay!src", @@ -7992,9 +8088,13 @@ "GstCompositorPad:alpha", "GstCompositorPad:height", "GstCompositorPad:operator", + "GstCompositorPad:sizing-policy", "GstCompositorPad:width", "GstCompositorPad:xpos", "GstCompositorPad:ypos", + "GstCompositorSizingPolicy", + "GstCompositorSizingPolicy::keep-aspect-ratio", + "GstCompositorSizingPolicy::none", "GstConcat", "GstConcat!sink_%u", "GstConcat!src", @@ -8039,6 +8139,17 @@ "GstCpuReport!sink", "GstCpuReport!src", "GstCtType", + "GstCudaBaseFilter", + "GstCudaBaseTransform", + "GstCudaBaseTransform:cuda-device-id", + "GstCudaConvert!sink", + "GstCudaConvert!src", + "GstCudaDownload!sink", + "GstCudaDownload!src", + "GstCudaScale!sink", + "GstCudaScale!src", + "GstCudaUpload!sink", + "GstCudaUpload!src", "GstCurlBaseSink", "GstCurlBaseSink:file-name", "GstCurlBaseSink:location", @@ -8203,11 +8314,85 @@ "GstCvSobel:mask", "GstCvSobel:x-order", "GstCvSobel:y-order", + "GstD3D11AV1Dec!sink", + "GstD3D11AV1Dec!src", "GstD3D11BaseConvert", "GstD3D11BaseFilter", "GstD3D11BaseFilter:adapter", "GstD3D11ColorConvert!sink", "GstD3D11ColorConvert!src", + "GstD3D11Compositor!sink_%u", + "GstD3D11Compositor!src", + "GstD3D11CompositorBackground", + "GstD3D11CompositorBackground::black", + "GstD3D11CompositorBackground::checker", + "GstD3D11CompositorBackground::transparent", + "GstD3D11CompositorBackground::white", + "GstD3D11CompositorBin!sink_%u", + "GstD3D11CompositorBin!src", + "GstD3D11CompositorBinInput", + "GstD3D11CompositorBinInput:alpha", + "GstD3D11CompositorBinInput:blend-dest-alpha", + "GstD3D11CompositorBinInput:blend-dest-rgb", + "GstD3D11CompositorBinInput:blend-factor-alpha", + "GstD3D11CompositorBinInput:blend-factor-blue", + "GstD3D11CompositorBinInput:blend-factor-green", + "GstD3D11CompositorBinInput:blend-factor-red", + "GstD3D11CompositorBinInput:blend-op-alpha", + "GstD3D11CompositorBinInput:blend-op-rgb", + "GstD3D11CompositorBinInput:blend-src-alpha", + "GstD3D11CompositorBinInput:blend-src-rgb", + "GstD3D11CompositorBinInput:height", + "GstD3D11CompositorBinInput:max-last-buffer-repeat", + "GstD3D11CompositorBinInput:repeat-after-eos", + "GstD3D11CompositorBinInput:sizing-policy", + "GstD3D11CompositorBinInput:width", + "GstD3D11CompositorBinInput:xpos", + "GstD3D11CompositorBinInput:ypos", + "GstD3D11CompositorBinInput:zorder", + "GstD3D11CompositorBinPad", + "GstD3D11CompositorBinPad::buffer-consumed", + "GstD3D11CompositorBinPad:emit-signals", + "GstD3D11CompositorBlend", + "GstD3D11CompositorBlend::blend-factor", + "GstD3D11CompositorBlend::dest-alpha", + "GstD3D11CompositorBlend::dest-color", + "GstD3D11CompositorBlend::inv-blend-factor", + "GstD3D11CompositorBlend::inv-dest-alpha", + "GstD3D11CompositorBlend::inv-dest-color", + "GstD3D11CompositorBlend::inv-src-alpha", + "GstD3D11CompositorBlend::inv-src-color", + "GstD3D11CompositorBlend::one", + "GstD3D11CompositorBlend::src-alpha", + "GstD3D11CompositorBlend::src-alpha-sat", + "GstD3D11CompositorBlend::src-color", + "GstD3D11CompositorBlend::zero", + "GstD3D11CompositorBlendOperation", + "GstD3D11CompositorBlendOperation::add", + "GstD3D11CompositorBlendOperation::max", + "GstD3D11CompositorBlendOperation::min", + "GstD3D11CompositorBlendOperation::rev-subtract", + "GstD3D11CompositorBlendOperation::subtract", + "GstD3D11CompositorPad", + "GstD3D11CompositorPad:alpha", + "GstD3D11CompositorPad:blend-dest-alpha", + "GstD3D11CompositorPad:blend-dest-rgb", + "GstD3D11CompositorPad:blend-factor-alpha", + "GstD3D11CompositorPad:blend-factor-blue", + "GstD3D11CompositorPad:blend-factor-green", + "GstD3D11CompositorPad:blend-factor-red", + "GstD3D11CompositorPad:blend-op-alpha", + "GstD3D11CompositorPad:blend-op-rgb", + "GstD3D11CompositorPad:blend-src-alpha", + "GstD3D11CompositorPad:blend-src-rgb", + "GstD3D11CompositorPad:height", + "GstD3D11CompositorPad:sizing-policy", + "GstD3D11CompositorPad:width", + "GstD3D11CompositorPad:xpos", + "GstD3D11CompositorPad:ypos", + "GstD3D11CompositorSizingPolicy", + "GstD3D11CompositorSizingPolicy::keep-aspect-ratio", + "GstD3D11CompositorSizingPolicy::none", "GstD3D11Convert", "GstD3D11Convert!sink", "GstD3D11Convert!src", @@ -8238,6 +8423,7 @@ "GstD3D11Mpeg2Dec!src", "GstD3D11Scale!sink", "GstD3D11Scale!src", + "GstD3D11ScreenCaptureSrc!src", "GstD3D11Upload", "GstD3D11Upload!sink", "GstD3D11Upload!src", @@ -10132,6 +10318,7 @@ "GstGLWindow::key-event", "GstGLWindow::mouse-event", "GstGLWindow::scroll-event", + "GstGLWindow::window-handle-changed", "GstGLWindowCB", "GstGLWindowClass.close", "GstGLWindowClass.controls_viewport", @@ -10258,6 +10445,7 @@ "GstGtkBaseSink:force-aspect-ratio", "GstGtkBaseSink:ignore-alpha", "GstGtkBaseSink:pixel-aspect-ratio", + "GstGtkBaseSink:video-aspect-ratio-override", "GstGtkBaseSink:widget", "GstGtkGLSink", "GstGtkGLSink!sink", @@ -10271,6 +10459,7 @@ "GstH264ContentLightLevel", "GstH264DecRefPicMarking", "GstH264Decoder", + "GstH264Decoder:compliance", "GstH264DecoderClass.decode_slice", "GstH264DecoderClass.end_picture", "GstH264DecoderClass.new_picture", @@ -10286,7 +10475,9 @@ "GstH264DecoderClass::new_sequence", "GstH264DecoderClass::output_picture", "GstH264DecoderClass::start_picture", + "GstH264DecoderCompliance", "GstH264Dpb", + "GstH264DpbBumpMode", "GstH264FramePacking", "GstH264FramePackingType", "GstH264HRDParams", @@ -10725,6 +10916,7 @@ "GstJackConnect", "GstJackConnect::auto", "GstJackConnect::auto-forced", + "GstJackConnect::explicit", "GstJackConnect::none", "GstJackTransport", "GstJackTransport::master", @@ -11226,6 +11418,7 @@ "GstMpeg2DecoderClass.parent_class", "GstMpeg2DecoderClass::decode_slice", "GstMpeg2DecoderClass::end_picture", + "GstMpeg2DecoderClass::get_preferred_output_delay", "GstMpeg2DecoderClass::new_field_picture", "GstMpeg2DecoderClass::new_picture", "GstMpeg2DecoderClass::new_sequence", @@ -11643,6 +11836,8 @@ "GstMpegtsSCTESIT.descriptors", "GstMpegtsSCTESIT.encrypted_packet", "GstMpegtsSCTESIT.encryption_algorithm", + "GstMpegtsSCTESIT.fully_parsed", + "GstMpegtsSCTESIT.is_running_time", "GstMpegtsSCTESIT.pts_adjustment", "GstMpegtsSCTESIT.splice_command_length", "GstMpegtsSCTESIT.splice_command_type", @@ -11651,12 +11846,18 @@ "GstMpegtsSCTESIT.splices", "GstMpegtsSCTESIT.tier", "GstMpegtsSCTESpliceCommandType", + "GstMpegtsSCTESpliceComponent", + "GstMpegtsSCTESpliceComponent.splice_time", + "GstMpegtsSCTESpliceComponent.splice_time_specified", + "GstMpegtsSCTESpliceComponent.tag", + "GstMpegtsSCTESpliceComponent.utc_splice_time", "GstMpegtsSCTESpliceDescriptor", "GstMpegtsSCTESpliceEvent", "GstMpegtsSCTESpliceEvent.avail_num", "GstMpegtsSCTESpliceEvent.avails_expected", "GstMpegtsSCTESpliceEvent.break_duration", "GstMpegtsSCTESpliceEvent.break_duration_auto_return", + "GstMpegtsSCTESpliceEvent.components", "GstMpegtsSCTESpliceEvent.duration_flag", "GstMpegtsSCTESpliceEvent.insert_event", "GstMpegtsSCTESpliceEvent.out_of_network_indicator", @@ -11667,6 +11868,7 @@ "GstMpegtsSCTESpliceEvent.splice_event_id", "GstMpegtsSCTESpliceEvent.splice_immediate_flag", "GstMpegtsSCTESpliceEvent.unique_program_id", + "GstMpegtsSCTESpliceEvent.utc_splice_time", "GstMpegtsSDT", "GstMpegtsSDT.actual_ts", "GstMpegtsSDT.original_network_id", @@ -11785,6 +11987,144 @@ "GstMplexFormat::vcd", "GstMplexFormat::vcd-nsr", "GstMplexFormat::vcd-still", + "GstMsdkAV1Dec!sink", + "GstMsdkAV1Dec!src", + "GstMsdkDec", + "GstMsdkDec:async-depth", + "GstMsdkDec:hardware", + "GstMsdkDecOutputOrder", + "GstMsdkDecOutputOrder::decoded", + "GstMsdkDecOutputOrder::display", + "GstMsdkEnc", + "GstMsdkEnc:accuracy", + "GstMsdkEnc:async-depth", + "GstMsdkEnc:b-adapt", + "GstMsdkEnc:b-frames", + "GstMsdkEnc:bitrate", + "GstMsdkEnc:convergence", + "GstMsdkEnc:ext-coding-props", + "GstMsdkEnc:gop-size", + "GstMsdkEnc:hardware", + "GstMsdkEnc:i-adapt", + "GstMsdkEnc:i-frames", + "GstMsdkEnc:max-frame-size", + "GstMsdkEnc:max-vbv-bitrate", + "GstMsdkEnc:mbbrc", + "GstMsdkEnc:num-slices", + "GstMsdkEnc:qpb", + "GstMsdkEnc:qpi", + "GstMsdkEnc:qpp", + "GstMsdkEnc:rate-control", + "GstMsdkEnc:rc-lookahead", + "GstMsdkEnc:ref-frames", + "GstMsdkEnc:target-usage", + "GstMsdkEncAdaptiveB", + "GstMsdkEncAdaptiveB::auto", + "GstMsdkEncAdaptiveB::off", + "GstMsdkEncAdaptiveB::on", + "GstMsdkEncAdaptiveI", + "GstMsdkEncAdaptiveI::auto", + "GstMsdkEncAdaptiveI::off", + "GstMsdkEncAdaptiveI::on", + "GstMsdkEncIntraRefreshType", + "GstMsdkEncIntraRefreshType::horizontal", + "GstMsdkEncIntraRefreshType::no", + "GstMsdkEncIntraRefreshType::slice", + "GstMsdkEncIntraRefreshType::vertical", + "GstMsdkEncMbBitrateControl", + "GstMsdkEncMbBitrateControl::auto", + "GstMsdkEncMbBitrateControl::off", + "GstMsdkEncMbBitrateControl::on", + "GstMsdkEncRCLookAheadDownsampling", + "GstMsdkEncRCLookAheadDownsampling::2x", + "GstMsdkEncRCLookAheadDownsampling::4x", + "GstMsdkEncRCLookAheadDownsampling::default", + "GstMsdkEncRCLookAheadDownsampling::off", + "GstMsdkEncRateControl", + "GstMsdkEncRateControl::avbr", + "GstMsdkEncRateControl::cbr", + "GstMsdkEncRateControl::cqp", + "GstMsdkEncRateControl::icq", + "GstMsdkEncRateControl::la_hrd", + "GstMsdkEncRateControl::la_icq", + "GstMsdkEncRateControl::la_vbr", + "GstMsdkEncRateControl::qvbr", + "GstMsdkEncRateControl::vbr", + "GstMsdkEncRateControl::vcm", + "GstMsdkEncTransformSkip", + "GstMsdkEncTransformSkip::auto", + "GstMsdkEncTransformSkip::off", + "GstMsdkEncTransformSkip::on", + "GstMsdkEncTrellisQuantization", + "GstMsdkEncTrellisQuantization::None", + "GstMsdkEncTrellisQuantization::b", + "GstMsdkEncTrellisQuantization::i", + "GstMsdkEncTrellisQuantization::p", + "GstMsdkEncTuneMode", + "GstMsdkEncTuneMode::auto", + "GstMsdkEncTuneMode::low-power", + "GstMsdkEncTuneMode::none", + "GstMsdkH264Dec!sink", + "GstMsdkH264Dec!src", + "GstMsdkH264Enc!sink", + "GstMsdkH264Enc!src", + "GstMsdkH264EncFramePacking", + "GstMsdkH264EncFramePacking::none", + "GstMsdkH264EncFramePacking::side-by-side", + "GstMsdkH264EncFramePacking::top-bottom", + "GstMsdkH265Dec!sink", + "GstMsdkH265Dec!src", + "GstMsdkH265Enc!sink", + "GstMsdkH265Enc!src", + "GstMsdkMJPEGDec!sink", + "GstMsdkMJPEGDec!src", + "GstMsdkMJPEGEnc!sink", + "GstMsdkMJPEGEnc!src", + "GstMsdkMPEG2Dec!sink", + "GstMsdkMPEG2Dec!src", + "GstMsdkMPEG2Enc!sink", + "GstMsdkMPEG2Enc!src", + "GstMsdkVC1Dec!sink", + "GstMsdkVC1Dec!src", + "GstMsdkVP8Dec!sink", + "GstMsdkVP8Dec!src", + "GstMsdkVP9Dec!sink", + "GstMsdkVP9Dec!src", + "GstMsdkVP9Enc!sink", + "GstMsdkVP9Enc!src", + "GstMsdkVPP!sink", + "GstMsdkVPP!src", + "GstMsdkVPPDeinterlaceMethod", + "GstMsdkVPPDeinterlaceMethod::advanced", + "GstMsdkVPPDeinterlaceMethod::advanced-no-ref ", + "GstMsdkVPPDeinterlaceMethod::advanced-scd ", + "GstMsdkVPPDeinterlaceMethod::bob", + "GstMsdkVPPDeinterlaceMethod::field-weave", + "GstMsdkVPPDeinterlaceMethod::none", + "GstMsdkVPPDeinterlaceMode", + "GstMsdkVPPDeinterlaceMode::auto", + "GstMsdkVPPDeinterlaceMode::disabled", + "GstMsdkVPPDeinterlaceMode::interlaced", + "GstMsdkVPPFrcAlgorithm", + "GstMsdkVPPFrcAlgorithm::distribute-ts", + "GstMsdkVPPFrcAlgorithm::interpolate", + "GstMsdkVPPFrcAlgorithm::interpolate-distribute-ts", + "GstMsdkVPPFrcAlgorithm::interpolate-preserve-ts", + "GstMsdkVPPFrcAlgorithm::none", + "GstMsdkVPPFrcAlgorithm::preserve-ts", + "GstMsdkVPPMirroring", + "GstMsdkVPPMirroring::disable", + "GstMsdkVPPMirroring::horizontal", + "GstMsdkVPPMirroring::vertical", + "GstMsdkVPPRotation", + "GstMsdkVPPRotation::0", + "GstMsdkVPPRotation::180", + "GstMsdkVPPRotation::270", + "GstMsdkVPPRotation::90", + "GstMsdkVPPScalingMode", + "GstMsdkVPPScalingMode::disable", + "GstMsdkVPPScalingMode::lowpower", + "GstMsdkVPPScalingMode::quality", "GstMssDemux", "GstMssDemux!audio_%02u", "GstMssDemux!sink", @@ -12121,6 +12461,7 @@ "GstNvBaseEnc:strict-gop", "GstNvBaseEnc:zerolatency", "GstNvDec", + "GstNvDec:max-display-delay", "GstNvDevice0H264Enc", "GstNvDevice0H265Enc", "GstNvH264Dec", @@ -12169,6 +12510,13 @@ "GstNvRCMode::vbr", "GstNvRCMode::vbr-hq", "GstNvRCMode::vbr-minqp", + "GstNvVP8StatelessDec!sink", + "GstNvVP8StatelessDec!src", + "GstNvVP9StatelessDec!sink", + "GstNvVP9StatelessDec!src", + "GstNvVp8Dec", + "GstNvVp9Dec", + "GstOSXVideoSink!sink", "GstObject", "GstObject.flags", "GstObject.lock", @@ -12229,6 +12577,14 @@ "GstOpenALSink:user-context", "GstOpenALSink:user-device", "GstOpenALSink:user-source", + "GstOpenCVTrackerAlgorithm", + "GstOpenCVTrackerAlgorithm::Boosting", + "GstOpenCVTrackerAlgorithm::CSRT", + "GstOpenCVTrackerAlgorithm::KCF", + "GstOpenCVTrackerAlgorithm::MIL", + "GstOpenCVTrackerAlgorithm::MOSSE", + "GstOpenCVTrackerAlgorithm::MedianFlow", + "GstOpenCVTrackerAlgorithm::TLD", "GstOpenEXRDec", "GstOpenEXRDec!sink", "GstOpenEXRDec!src", @@ -12402,7 +12758,6 @@ "GstOsxAudioElement", "GstOsxAudioSink!sink", "GstOsxAudioSrc!src", - "GstOSXVideoSink!sink", "GstOutputSelector", "GstOutputSelector!sink", "GstOutputSelector!src_%u", @@ -12522,6 +12877,7 @@ "GstParseContext", "GstParseError", "GstParseFlags", + "GstPbUtilsCapsDescriptionFlags", "GstPcapParse", "GstPcapParse!sink", "GstPcapParse!src", @@ -13250,6 +13606,7 @@ "GstRTPHeaderExtensionClass::set_non_rtp_sink_caps", "GstRTPHeaderExtensionClass::update_non_rtp_src_caps", "GstRTPHeaderExtensionClass::write", + "GstRTPHeaderExtensionDirection", "GstRTPHeaderExtensionFlags", "GstRTPILBCPay", "GstRTPILBCPay!sink", @@ -16159,6 +16516,15 @@ "GstVP9RTPPayMode::15-bit", "GstVP9RTPPayMode::7-bit", "GstVP9RTPPayMode::none", + "GstVPXAQ", + "GstVPXAQ::complexity", + "GstVPXAQ::cyclic-refresh", + "GstVPXAQ::equator360", + "GstVPXAQ::lookahead", + "GstVPXAQ::off", + "GstVPXAQ::perceptual", + "GstVPXAQ::psnr", + "GstVPXAQ::variance", "GstVPXDec", "GstVPXDec:deblocking-level", "GstVPXDec:noise-level", @@ -16245,6 +16611,13 @@ "GstVPXEncTuning", "GstVPXEncTuning::psnr", "GstVPXEncTuning::ssim", + "GstVaBaseTransform", + "GstVaDeinterlace!sink", + "GstVaDeinterlace!src", + "GstVaDeinterlaceMethods", + "GstVaDeinterlaceMethods::adaptive", + "GstVaDeinterlaceMethods::bob", + "GstVaDeinterlaceMethods::compensated", "GstVaH264Dec!sink", "GstVaH264Dec!src", "GstVaH265Dec!sink", @@ -16860,7 +17233,10 @@ "GstVideoCodecState.allocation_caps", "GstVideoCodecState.caps", "GstVideoCodecState.codec_data", + "GstVideoCodecState.content_light_level", "GstVideoCodecState.info", + "GstVideoCodecState.mastering_display_info", + "GstVideoCodecTestSink!sink", "GstVideoColorMatrix", "GstVideoColorPrimaries", "GstVideoColorPrimariesInfo", @@ -16911,6 +17287,8 @@ "GstVideoCropMeta.x", "GstVideoCropMeta.y", "GstVideoDecoder", + "GstVideoDecoder:automatic-request-sync-point-flags", + "GstVideoDecoder:automatic-request-sync-points", "GstVideoDecoder:discard-corrupted-frames", "GstVideoDecoder:max-errors", "GstVideoDecoder:min-force-key-unit-interval", @@ -16942,6 +17320,7 @@ "GstVideoDecoderClass::flush", "GstVideoDecoderClass::getcaps", "GstVideoDecoderClass::handle_frame", + "GstVideoDecoderClass::handle_missing_data", "GstVideoDecoderClass::negotiate", "GstVideoDecoderClass::open", "GstVideoDecoderClass::parse", @@ -17167,6 +17546,7 @@ "GstVideoOrientationInterface::set_hflip", "GstVideoOrientationInterface::set_vcenter", "GstVideoOrientationInterface::set_vflip", + "GstVideoOrientationMethod", "GstVideoOverlay", "GstVideoOverlayComposition", "GstVideoOverlayCompositionMeta", @@ -17325,6 +17705,7 @@ "GstVideoTestSrcPattern::pinwheel", "GstVideoTestSrcPattern::red", "GstVideoTestSrcPattern::smpte", + "GstVideoTestSrcPattern::smpte-rp-219", "GstVideoTestSrcPattern::smpte100", "GstVideoTestSrcPattern::smpte75", "GstVideoTestSrcPattern::snow", @@ -17504,10 +17885,12 @@ "GstVp9DecoderClass::decode_picture", "GstVp9DecoderClass::duplicate_picture", "GstVp9DecoderClass::end_picture", + "GstVp9DecoderClass::get_preferred_output_delay", "GstVp9DecoderClass::new_picture", "GstVp9DecoderClass::new_sequence", "GstVp9DecoderClass::output_picture", "GstVp9DecoderClass::start_picture", + "GstVp9DeltaProbabilities", "GstVp9Dpb", "GstVp9Dpb.pic_list", "GstVp9FrameHdr", @@ -17516,6 +17899,7 @@ "GstVp9FrameHeader.bit_depth", "GstVp9FrameHeader.color_range", "GstVp9FrameHeader.color_space", + "GstVp9FrameHeader.delta_probabilities", "GstVp9FrameHeader.error_resilient_mode", "GstVp9FrameHeader.frame_context_idx", "GstVp9FrameHeader.frame_header_length_in_bytes", @@ -17532,6 +17916,7 @@ "GstVp9FrameHeader.quantization_params", "GstVp9FrameHeader.ref_frame_idx", "GstVp9FrameHeader.ref_frame_sign_bias", + "GstVp9FrameHeader.reference_mode", "GstVp9FrameHeader.refresh_frame_context", "GstVp9FrameHeader.refresh_frame_flags", "GstVp9FrameHeader.render_and_frame_size_different", @@ -17545,6 +17930,7 @@ "GstVp9FrameHeader.subsampling_y", "GstVp9FrameHeader.tile_cols_log2", "GstVp9FrameHeader.tile_rows_log2", + "GstVp9FrameHeader.tx_mode", "GstVp9FrameHeader.width", "GstVp9FrameType", "GstVp9InterpolationFilter", @@ -17558,6 +17944,7 @@ "GstVp9LoopFilterParams.loop_filter_sharpness", "GstVp9LoopFilterParams.update_mode_delta", "GstVp9LoopFilterParams.update_ref_delta", + "GstVp9MvDeltaProbs", "GstVp9Parse!sink", "GstVp9Parse!src", "GstVp9Parser", @@ -17580,6 +17967,7 @@ "GstVp9QuantizationParams.delta_q_uv_dc", "GstVp9QuantizationParams.delta_q_y_dc", "GstVp9RefFrameType", + "GstVp9ReferenceMode", "GstVp9Segmentation", "GstVp9SegmentationInfo", "GstVp9SegmentationInfoData", @@ -17596,6 +17984,8 @@ "GstVp9StatefulParser", "GstVp9StatefulParser.reference", "GstVp9SuperframeInfo", + "GstVp9TxMode", + "GstVp9TxSize", "GstVtdec!sink", "GstVtdec!src", "GstVtdecHw!sink", @@ -18101,6 +18491,7 @@ "GstWebRTCDataChannelClass::send_data", "GstWebRTCDataChannelClass::send_string", "GstWebRTCDataChannelState", + "GstWebRTCError", "GstWebRTCFECType", "GstWebRTCICE", "GstWebRTCICE::add-local-ip-address", @@ -18182,6 +18573,11 @@ "GstWebRTCRTPTransceiverClass._padding", "GstWebRTCRTPTransceiverClass.parent_class", "GstWebRTCRTPTransceiverDirection", + "GstWebRTCSCTPTransport", + "GstWebRTCSCTPTransport:max-channels", + "GstWebRTCSCTPTransport:max-message-size", + "GstWebRTCSCTPTransport:state", + "GstWebRTCSCTPTransport:transport", "GstWebRTCSCTPTransportState", "GstWebRTCSDPType", "GstWebRTCSessionDescription", @@ -18578,6 +18974,7 @@ "RTPSession:sdes", "RTPSession:sources", "RTPSession:stats", + "RTPSession:twcc-feedback-interval", "RTPSource", "RTPSource:disable-rtcp", "RTPSource:is-csrc", @@ -20599,6 +20996,18 @@ "adpcmenc", "adpcmenc:blockalign", "adpcmenc:layout", + "aesdec", + "aesdec:cipher", + "aesdec:iv", + "aesdec:key", + "aesdec:per-buffer-padding", + "aesdec:serialize-iv", + "aesenc", + "aesenc:cipher", + "aesenc:iv", + "aesenc:key", + "aesenc:per-buffer-padding", + "aesenc:serialize-iv", "agingtv", "agingtv:color-aging", "agingtv:dusts", @@ -20687,8 +21096,10 @@ "appsink::eos", "appsink::new-preroll", "appsink::new-sample", + "appsink::new-serialized-event", "appsink::pull-preroll", "appsink::pull-sample", + "appsink::try-pull-object", "appsink::try-pull-preroll", "appsink::try-pull-sample", "appsink:buffer-list", @@ -20819,6 +21230,7 @@ "audiolatency:average-latency", "audiolatency:last-latency", "audiolatency:print-latency", + "audiolatency:samplesperbuffer", "audiomixer", "audiomixmatrix", "audiomixmatrix:channel-mask", @@ -26929,6 +27341,7 @@ "avenc_h264_omx:debug", "avenc_h264_omx:dia-size", "avenc_h264_omx:dump-separator", + "avenc_h264_omx:err-detect", "avenc_h264_omx:export-side-data", "avenc_h264_omx:field-order", "avenc_h264_omx:flags", @@ -28108,6 +28521,7 @@ "avenc_mpeg4_omx:debug", "avenc_mpeg4_omx:dia-size", "avenc_mpeg4_omx:dump-separator", + "avenc_mpeg4_omx:err-detect", "avenc_mpeg4_omx:export-side-data", "avenc_mpeg4_omx:field-order", "avenc_mpeg4_omx:flags", @@ -31873,9 +32287,6 @@ "avfvideosrc:fps", "avfvideosrc:orientation", "avfvideosrc:position", - "avsamplebufferlayersink", - "avsamplebufferlayersink:force-aspect-ratio", - "avsamplebufferlayersink:layer", "avidemux", "avimux", "avimux:bigfile", @@ -32547,12 +32958,18 @@ "compare:upper", "compositor", "compositor:background", + "compositor:ignore-inactive-pads", + "compositor:max-threads", "compositor:zero-size-is-unscaled", "concat", "concat:active-pad", "concat:adjust-base", "count", "cpureport", + "cudaconvert", + "cudadownload", + "cudascale", + "cudaupload", "curlfilesink", "curlfilesink:create-dirs", "curlftpsink", @@ -32659,8 +33076,32 @@ "cvsobel:mask", "cvsobel:x-order", "cvsobel:y-order", + "cvtracker", + "cvtracker:algorithm", + "cvtracker:draw-rect", + "cvtracker:object-initial-height", + "cvtracker:object-initial-width", + "cvtracker:object-initial-x", + "cvtracker:object-initial-y", + "d3d11av1dec", + "d3d11av1dec:adapter-luid", + "d3d11av1dec:device-id", + "d3d11av1dec:vendor-id", "d3d11colorconvert", + "d3d11compositor", + "d3d11compositor:adapter", + "d3d11compositor:background", + "d3d11compositor:emit-signals", + "d3d11compositor:latency", + "d3d11compositor:min-upstream-latency", + "d3d11compositor:mixer", + "d3d11compositor:start-time", + "d3d11compositor:start-time-selection", + "d3d11compositorelement", + "d3d11compositorelement:adapter", + "d3d11compositorelement:background", "d3d11convert", + "d3d11convert:add-borders", "d3d11deinterlace", "d3d11deinterlace:adapter", "d3d11deinterlace:device-id", @@ -32679,15 +33120,23 @@ "d3d11desktopdupsrc:show-cursor", "d3d11download", "d3d11h264dec", + "d3d11h264dec:adapter-luid", "d3d11h264dec:device-id", "d3d11h264dec:vendor-id", "d3d11h265dec", + "d3d11h265dec:adapter-luid", "d3d11h265dec:device-id", "d3d11h265dec:vendor-id", "d3d11mpeg2dec", + "d3d11mpeg2dec:adapter-luid", "d3d11mpeg2dec:device-id", "d3d11mpeg2dec:vendor-id", "d3d11scale", + "d3d11scale:add-borders", + "d3d11screencapturesrc", + "d3d11screencapturesrc:monitor-handle", + "d3d11screencapturesrc:monitor-index", + "d3d11screencapturesrc:show-cursor", "d3d11upload", "d3d11videosink", "d3d11videosink::begin-draw", @@ -32719,9 +33168,11 @@ "d3d11videosinkelement:fullscreen", "d3d11videosinkelement:fullscreen-toggle-mode", "d3d11vp8dec", + "d3d11vp8dec:adapter-luid", "d3d11vp8dec:device-id", "d3d11vp8dec:vendor-id", "d3d11vp9dec", + "d3d11vp9dec:adapter-luid", "d3d11vp9dec:device-id", "d3d11vp9dec:vendor-id", "d3dvideosink", @@ -32738,6 +33189,8 @@ "dashdemux:max-video-width", "dashdemux:presentation-delay", "dashsink", + "dashsink::get-fragment-stream", + "dashsink::get-playlist-stream", "dashsink:dynamic", "dashsink:min-buffer-time", "dashsink:minimum-update-period", @@ -34394,8 +34847,8 @@ "element-oss4src", "element-osssink", "element-osssrc", - "element-osxaudiosrc", "element-osxaudiosink", + "element-osxaudiosrc", "element-osxvideosink", "element-output-selector", "element-overlaycomposition", @@ -34722,16 +35175,16 @@ "element-vp8enc", "element-vp9dec", "element-vp9enc", + "element-vtdec", + "element-vtdec_hw", + "element-vtenc_h264", + "element-vtenc_h264_hw", "element-vulkancolorconvert", "element-vulkandownload", "element-vulkanimageidentity", "element-vulkansink", "element-vulkanupload", "element-vulkanviewconvert", - "element-vtdec", - "element-vtdec_hw", - "element-vtenc_h264", - "element-vtenc_h264_hw", "element-warptv", "element-wasapi2sink", "element-wasapi2src", @@ -36271,6 +36724,7 @@ "ges_timeline_element_set_start", "ges_timeline_element_set_timeline", "ges_timeline_element_trim", + "ges_timeline_freeze_commit", "ges_timeline_get_auto_transition", "ges_timeline_get_duration", "ges_timeline_get_element", @@ -36296,6 +36750,7 @@ "ges_timeline_save_to_uri", "ges_timeline_set_auto_transition", "ges_timeline_set_snapping_distance", + "ges_timeline_thaw_commit", "ges_title_clip_get_background_color", "ges_title_clip_get_font_desc", "ges_title_clip_get_halignment", @@ -36722,15 +37177,18 @@ "gst_aggregator_finish_buffer_list", "gst_aggregator_get_allocator", "gst_aggregator_get_buffer_pool", + "gst_aggregator_get_ignore_inactive_pads", "gst_aggregator_get_latency", "gst_aggregator_negotiate", "gst_aggregator_pad_drop_buffer", "gst_aggregator_pad_has_buffer", "gst_aggregator_pad_is_eos", + "gst_aggregator_pad_is_inactive", "gst_aggregator_pad_peek_buffer", "gst_aggregator_pad_pop_buffer", "gst_aggregator_peek_next_sample", "gst_aggregator_selected_samples", + "gst_aggregator_set_ignore_inactive_pads", "gst_aggregator_set_latency", "gst_aggregator_set_src_caps", "gst_aggregator_simple_get_next_time", @@ -36751,6 +37209,7 @@ "gst_app_sink_get_max_buffers", "gst_app_sink_get_wait_on_eos", "gst_app_sink_is_eos", + "gst_app_sink_pull_object", "gst_app_sink_pull_preroll", "gst_app_sink_pull_sample", "gst_app_sink_set_buffer_list_support", @@ -36760,6 +37219,7 @@ "gst_app_sink_set_emit_signals", "gst_app_sink_set_max_buffers", "gst_app_sink_set_wait_on_eos", + "gst_app_sink_try_pull_object", "gst_app_sink_try_pull_preroll", "gst_app_sink_try_pull_sample", "gst_app_src_end_of_stream", @@ -36938,6 +37398,7 @@ "gst_audio_info_init", "gst_audio_info_is_equal", "gst_audio_info_new", + "gst_audio_info_new_from_caps", "gst_audio_info_set_format", "gst_audio_info_to_caps", "gst_audio_level_meta_api_get_type", @@ -37652,10 +38113,12 @@ "gst_codec_utils_aac_get_profile", "gst_codec_utils_aac_get_sample_rate", "gst_codec_utils_aac_get_sample_rate_from_index", + "gst_codec_utils_caps_get_mime_codec", "gst_codec_utils_h264_caps_set_level_and_profile", "gst_codec_utils_h264_get_level", "gst_codec_utils_h264_get_level_idc", "gst_codec_utils_h264_get_profile", + "gst_codec_utils_h264_get_profile_flags_level", "gst_codec_utils_h265_caps_set_level_tier_and_profile", "gst_codec_utils_h265_get_level", "gst_codec_utils_h265_get_level_idc", @@ -37802,6 +38265,7 @@ "gst_debug_log", "gst_debug_log_default", "gst_debug_log_get_line", + "gst_debug_log_literal", "gst_debug_log_valist", "gst_debug_message_get", "gst_debug_print_stack_trace", @@ -37875,6 +38339,7 @@ "gst_discoverer_audio_info_get_max_bitrate", "gst_discoverer_audio_info_get_sample_rate", "gst_discoverer_container_info_get_streams", + "gst_discoverer_container_info_get_tags", "gst_discoverer_discover_uri", "gst_discoverer_discover_uri_async", "gst_discoverer_info_copy", @@ -37906,6 +38371,7 @@ "gst_discoverer_stream_info_get_next", "gst_discoverer_stream_info_get_previous", "gst_discoverer_stream_info_get_stream_id", + "gst_discoverer_stream_info_get_stream_number", "gst_discoverer_stream_info_get_stream_type_nick", "gst_discoverer_stream_info_get_tags", "gst_discoverer_stream_info_get_toc", @@ -37962,6 +38428,9 @@ "gst_element_factory_can_src_all_caps", "gst_element_factory_can_src_any_caps", "gst_element_factory_create", + "gst_element_factory_create_full", + "gst_element_factory_create_valist", + "gst_element_factory_create_with_properties", "gst_element_factory_find", "gst_element_factory_get_author", "gst_element_factory_get_description", @@ -37973,6 +38442,7 @@ "gst_element_factory_get_metadata", "gst_element_factory_get_metadata_keys", "gst_element_factory_get_num_pad_templates", + "gst_element_factory_get_skip_documentation", "gst_element_factory_get_static_pad_templates", "gst_element_factory_get_uri_protocols", "gst_element_factory_get_uri_type", @@ -37981,6 +38451,9 @@ "gst_element_factory_list_get_elements", "gst_element_factory_list_is_type", "gst_element_factory_make", + "gst_element_factory_make_full", + "gst_element_factory_make_valist", + "gst_element_factory_make_with_properties", "gst_element_foreach_pad", "gst_element_foreach_sink_pad", "gst_element_foreach_src_pad", @@ -38046,6 +38519,7 @@ "gst_element_state_change_return_get_name", "gst_element_state_get_name", "gst_element_sync_state_with_parent", + "gst_element_type_set_skip_documentation", "gst_element_unlink", "gst_element_unlink_many", "gst_element_unlink_pads", @@ -38126,6 +38600,7 @@ "gst_event_new_instant_rate_change", "gst_event_new_instant_rate_sync_time", "gst_event_new_latency", + "gst_event_new_mpegts_section", "gst_event_new_navigation", "gst_event_new_protection", "gst_event_new_qos", @@ -38340,6 +38815,7 @@ "gst_gl_framebuffer_get_id", "gst_gl_framebuffer_new", "gst_gl_framebuffer_new_with_default_depth", + "gst_gl_get_affine_transformation_meta_as_ndc", "gst_gl_get_plane_data_size", "gst_gl_get_plane_start", "gst_gl_handle_context_query", @@ -38365,6 +38841,7 @@ "gst_gl_memory_read_pixels", "gst_gl_memory_setup_buffer", "gst_gl_memory_texsubimage", + "gst_gl_multiply_matrix4", "gst_gl_overlay_compositor_add_caps", "gst_gl_overlay_compositor_draw_overlays", "gst_gl_overlay_compositor_free_overlays", @@ -38392,6 +38869,7 @@ "gst_gl_renderbuffer_get_id", "gst_gl_renderbuffer_get_width", "gst_gl_renderbuffer_init_once", + "gst_gl_set_affine_transformation_meta_from_ndc", "gst_gl_shader_attach", "gst_gl_shader_attach_unlocked", "gst_gl_shader_bind_attribute_location", @@ -38549,6 +39027,7 @@ "gst_h264_dpb_get_pictures_short_term_ref", "gst_h264_dpb_get_short_ref_by_pic_num", "gst_h264_dpb_get_size", + "gst_h264_dpb_has_empty_frame_buffer", "gst_h264_dpb_is_full", "gst_h264_dpb_mark_all_non_ref", "gst_h264_dpb_needs_bump", @@ -38557,8 +39036,10 @@ "gst_h264_dpb_num_ref_pictures", "gst_h264_dpb_perform_memory_management_control_operation", "gst_h264_dpb_set_interlaced", + "gst_h264_dpb_set_last_output", "gst_h264_dpb_set_max_num_frames", "gst_h264_dpb_set_max_num_pics", + "gst_h264_dpb_set_max_num_reorder_frames", "gst_h264_nal_parser_free", "gst_h264_nal_parser_new", "gst_h264_parse_pps", @@ -39135,6 +39616,7 @@ "gst_mpegts_scte_cancel_new", "gst_mpegts_scte_null_new", "gst_mpegts_scte_sit_new", + "gst_mpegts_scte_splice_component_new", "gst_mpegts_scte_splice_event_new", "gst_mpegts_scte_splice_in_new", "gst_mpegts_scte_splice_out_new", @@ -39384,10 +39866,12 @@ "gst_parse_launchv", "gst_parse_launchv_full", "gst_pb_utils_add_codec_description_to_tag_list", + "gst_pb_utils_get_caps_description_flags", "gst_pb_utils_get_codec_description", "gst_pb_utils_get_decoder_description", "gst_pb_utils_get_element_description", "gst_pb_utils_get_encoder_description", + "gst_pb_utils_get_file_extension_from_caps", "gst_pb_utils_get_sink_description", "gst_pb_utils_get_source_description", "gst_pb_utils_init", @@ -40049,6 +40533,7 @@ "gst_rtp_buffer_new_copy_data", "gst_rtp_buffer_new_take_data", "gst_rtp_buffer_pad_to", + "gst_rtp_buffer_remove_extension_data", "gst_rtp_buffer_set_csrc", "gst_rtp_buffer_set_extension", "gst_rtp_buffer_set_extension_data", @@ -40068,6 +40553,7 @@ "gst_rtp_hdrext_set_ntp_64", "gst_rtp_header_extension_class_set_uri", "gst_rtp_header_extension_create_from_uri", + "gst_rtp_header_extension_get_direction", "gst_rtp_header_extension_get_id", "gst_rtp_header_extension_get_max_size", "gst_rtp_header_extension_get_sdp_caps_field_name", @@ -40077,7 +40563,9 @@ "gst_rtp_header_extension_set_attributes_from_caps", "gst_rtp_header_extension_set_attributes_from_caps_simple_sdp", "gst_rtp_header_extension_set_caps_from_attributes", + "gst_rtp_header_extension_set_caps_from_attributes_helper", "gst_rtp_header_extension_set_caps_from_attributes_simple_sdp", + "gst_rtp_header_extension_set_direction", "gst_rtp_header_extension_set_id", "gst_rtp_header_extension_set_non_rtp_sink_caps", "gst_rtp_header_extension_set_wants_update_non_rtp_src_caps", @@ -40156,6 +40644,7 @@ "gst_rtsp_connection_do_tunnel", "gst_rtsp_connection_flush", "gst_rtsp_connection_free", + "gst_rtsp_connection_get_ignore_x_server_reply", "gst_rtsp_connection_get_ip", "gst_rtsp_connection_get_read_socket", "gst_rtsp_connection_get_remember_session_id", @@ -40185,6 +40674,7 @@ "gst_rtsp_connection_set_auth_param", "gst_rtsp_connection_set_content_length_limit", "gst_rtsp_connection_set_http_mode", + "gst_rtsp_connection_set_ignore_x_server_reply", "gst_rtsp_connection_set_ip", "gst_rtsp_connection_set_proxy", "gst_rtsp_connection_set_qos_dscp", @@ -40442,6 +40932,7 @@ "gst_rtsp_server_set_thread_pool", "gst_rtsp_server_transfer_connection", "gst_rtsp_session_allow_expire", + "gst_rtsp_session_dup_media", "gst_rtsp_session_filter", "gst_rtsp_session_get_header", "gst_rtsp_session_get_media", @@ -40586,6 +41077,7 @@ "gst_rtsp_stream_transport_set_transport", "gst_rtsp_stream_transport_set_url", "gst_rtsp_stream_unblock_linked", + "gst_rtsp_stream_unblock_rtcp", "gst_rtsp_stream_update_crypto", "gst_rtsp_stream_verify_mcast_ttl", "gst_rtsp_strresult", @@ -41530,6 +42022,7 @@ "gst_video_caption_meta_get_info", "gst_video_caption_type_from_caps", "gst_video_caption_type_to_caps", + "gst_video_center_rect", "gst_video_chroma_from_string", "gst_video_chroma_resample", "gst_video_chroma_resample_free", @@ -41583,12 +42076,15 @@ "gst_video_decoder_allocate_output_frame", "gst_video_decoder_allocate_output_frame_with_params", "gst_video_decoder_drop_frame", + "gst_video_decoder_drop_subframe", "gst_video_decoder_finish_frame", + "gst_video_decoder_finish_subframe", "gst_video_decoder_get_allocator", "gst_video_decoder_get_buffer_pool", "gst_video_decoder_get_estimate_rate", "gst_video_decoder_get_frame", "gst_video_decoder_get_frames", + "gst_video_decoder_get_input_subframe_index", "gst_video_decoder_get_latency", "gst_video_decoder_get_max_decode_time", "gst_video_decoder_get_max_errors", @@ -41598,8 +42094,11 @@ "gst_video_decoder_get_output_state", "gst_video_decoder_get_packetized", "gst_video_decoder_get_pending_frame_size", + "gst_video_decoder_get_processed_subframe_index", "gst_video_decoder_get_qos_proportion", + "gst_video_decoder_get_subframe_mode", "gst_video_decoder_have_frame", + "gst_video_decoder_have_last_subframe", "gst_video_decoder_merge_tags", "gst_video_decoder_negotiate", "gst_video_decoder_proxy_getcaps", @@ -41613,6 +42112,7 @@ "gst_video_decoder_set_needs_sync_point", "gst_video_decoder_set_output_state", "gst_video_decoder_set_packetized", + "gst_video_decoder_set_subframe_mode", "gst_video_decoder_set_use_default_pad_acceptcaps", "gst_video_dither_free", "gst_video_dither_line", @@ -41675,6 +42175,7 @@ "gst_video_info_init", "gst_video_info_is_equal", "gst_video_info_new", + "gst_video_info_new_from_caps", "gst_video_info_set_format", "gst_video_info_set_interlaced_format", "gst_video_info_to_caps", @@ -41705,6 +42206,7 @@ "gst_video_multiview_mode_from_caps_string", "gst_video_multiview_mode_to_caps_string", "gst_video_multiview_video_info_change_mode", + "gst_video_orientation_from_tag", "gst_video_orientation_get_hcenter", "gst_video_orientation_get_hflip", "gst_video_orientation_get_vcenter", @@ -41822,6 +42324,7 @@ "gst_vp8_token_update_probs_init", "gst_vp9_ac_quant", "gst_vp9_dc_quant", + "gst_vp9_decoder_set_non_keyframe_format_change_support", "gst_vp9_dpb_add", "gst_vp9_dpb_clear", "gst_vp9_dpb_free", @@ -41839,7 +42342,9 @@ "gst_vp9_seg_feature_active", "gst_vp9_stateful_parser_free", "gst_vp9_stateful_parser_new", + "gst_vp9_stateful_parser_parse_compressed_frame_header", "gst_vp9_stateful_parser_parse_frame_header", + "gst_vp9_stateful_parser_parse_uncompressed_frame_header", "gst_vulkan_buffer_memory_alloc", "gst_vulkan_buffer_memory_init_once", "gst_vulkan_buffer_memory_wrapped", @@ -42025,6 +42530,7 @@ "gst_webrtc_data_channel_send_string", "gst_webrtc_dtls_transport_new", "gst_webrtc_dtls_transport_set_transport", + "gst_webrtc_error_quark", "gst_webrtc_ice_transport_connection_state_change", "gst_webrtc_ice_transport_gathering_state_change", "gst_webrtc_ice_transport_new_candidate", @@ -42041,6 +42547,7 @@ "gst_webrtc_session_description_free", "gst_webrtc_session_description_new", "gtkglsink", + "gtkglsink:rotate-method", "gtksink", "h-263-encoder-cmp-func", "h-263-encoder-cmp-func::bit", @@ -42282,6 +42789,8 @@ "jackaudiosink:client", "jackaudiosink:client-name", "jackaudiosink:connect", + "jackaudiosink:low-latency", + "jackaudiosink:port-names", "jackaudiosink:port-pattern", "jackaudiosink:server", "jackaudiosink:transport", @@ -42289,6 +42798,8 @@ "jackaudiosrc:client", "jackaudiosrc:client-name", "jackaudiosrc:connect", + "jackaudiosrc:low-latency", + "jackaudiosrc:port-names", "jackaudiosrc:port-pattern", "jackaudiosrc:server", "jackaudiosrc:transport", @@ -62321,6 +62832,7 @@ "matroskademux:max-backtrack-distance", "matroskademux:max-gap-time", "matroskamux", + "matroskamux:cluster-timestamp-offset", "matroskamux:creation-time", "matroskamux:max-cluster-duration", "matroskamux:min-cluster-duration", @@ -62334,9 +62846,11 @@ "mfaacenc", "mfaacenc:bitrate", "mfh264enc", + "mfh264enc:adapter-luid", "mfh264enc:bframes", "mfh264enc:bitrate", "mfh264enc:cabac", + "mfh264enc:d3d11-aware", "mfh264enc:gop-size", "mfh264enc:low-latency", "mfh264enc:max-bitrate", @@ -62349,8 +62863,10 @@ "mfh264enc:ref", "mfh264enc:vbv-buffer-size", "mfh265enc", + "mfh265enc:adapter-luid", "mfh265enc:bframes", "mfh265enc:bitrate", + "mfh265enc:d3d11-aware", "mfh265enc:gop-size", "mfh265enc:low-latency", "mfh265enc:max-bitrate", @@ -62369,7 +62885,9 @@ "mfvideosrc:device-path", "mfvideosrc:dispatcher", "mfvp9enc", + "mfvp9enc:adapter-luid", "mfvp9enc:bitrate", + "mfvp9enc:d3d11-aware", "mfvp9enc:gop-size", "mfvp9enc:low-latency", "mfvp9enc:max-bitrate", @@ -62612,6 +63130,72 @@ "mplex:sector-size", "mplex:system-headers", "mplex:vbr", + "msdkav1dec", + "msdkh264dec", + "msdkh264dec:output-order", + "msdkh264enc", + "msdkh264enc:b-pyramid", + "msdkh264enc:cabac", + "msdkh264enc:dblk-idc", + "msdkh264enc:frame-packing", + "msdkh264enc:intra-refresh-type", + "msdkh264enc:low-power", + "msdkh264enc:max-qp", + "msdkh264enc:max-slice-size", + "msdkh264enc:min-qp", + "msdkh264enc:p-pyramid", + "msdkh264enc:rc-lookahead-ds", + "msdkh264enc:trellis", + "msdkh264enc:tune", + "msdkh265dec", + "msdkh265dec:output-order", + "msdkh265enc", + "msdkh265enc:b-pyramid", + "msdkh265enc:dblk-idc", + "msdkh265enc:intra-refresh-type", + "msdkh265enc:low-power", + "msdkh265enc:max-qp", + "msdkh265enc:max-slice-size", + "msdkh265enc:min-qp", + "msdkh265enc:num-tile-cols", + "msdkh265enc:num-tile-rows", + "msdkh265enc:p-pyramid", + "msdkh265enc:transform-skip", + "msdkh265enc:tune", + "msdkmjpegdec", + "msdkmjpegenc", + "msdkmjpegenc:quality", + "msdkmpeg2dec", + "msdkmpeg2dec:output-order", + "msdkmpeg2enc", + "msdkvc1dec", + "msdkvc1dec:output-order", + "msdkvp8dec", + "msdkvp8dec:output-order", + "msdkvp9dec", + "msdkvp9dec:output-order", + "msdkvp9enc", + "msdkvpp", + "msdkvpp:async-depth", + "msdkvpp:brightness", + "msdkvpp:contrast", + "msdkvpp:crop-bottom", + "msdkvpp:crop-left", + "msdkvpp:crop-right", + "msdkvpp:crop-top", + "msdkvpp:deinterlace-method", + "msdkvpp:deinterlace-mode", + "msdkvpp:denoise", + "msdkvpp:detail", + "msdkvpp:force-aspect-ratio", + "msdkvpp:frc-algorithm", + "msdkvpp:hardware", + "msdkvpp:hue", + "msdkvpp:mirroring", + "msdkvpp:rotation", + "msdkvpp:saturation", + "msdkvpp:scaling-mode", + "msdkvpp:video-direction", "msmpeg4v2-encoder-cmp-func", "msmpeg4v2-encoder-cmp-func::bit", "msmpeg4v2-encoder-cmp-func::chroma", @@ -62691,6 +63275,7 @@ "multifilesink:max-file-duration", "multifilesink:max-file-size", "multifilesink:max-files", + "multifilesink:min-keyframe-distance", "multifilesink:next-file", "multifilesink:post-messages", "multifilesrc", @@ -62796,6 +63381,7 @@ "netsim:min-delay", "nlecomposition", "nlecomposition::commited", + "nlecomposition:drop-tags", "nlecomposition:id", "nleoperation", "nleoperation::input-priority-changed", @@ -62842,9 +63428,11 @@ "nvvp8dec", "nvvp8dec!sink", "nvvp8dec!src", + "nvvp8sldec", "nvvp9dec", "nvvp9dec!sink", "nvvp9dec!src", + "nvvp9sldec", "oggaviparse", "oggdemux", "oggmux", @@ -62897,11 +63485,13 @@ "openh264enc:slice-mode", "openh264enc:usage-type", "openjpegdec", + "openjpegdec:max-slice-threads", "openjpegdec:max-threads", "openjpegenc", "openjpegenc:num-layers", "openjpegenc:num-resolutions", "openjpegenc:num-stripes", + "openjpegenc:num-threads", "openjpegenc:progression-order", "openjpegenc:tile-height", "openjpegenc:tile-offset-x", @@ -62964,8 +63554,8 @@ "osxaudiosrc", "osxaudiosrc:device", "osxvideosink", - "osxvideosink:force-aspect-ratio", "osxvideosink:embed", + "osxvideosink:force-aspect-ratio", "output-selector", "output-selector:active-pad", "output-selector:pad-negotiation-mode", @@ -63113,6 +63703,7 @@ "plugin-adder", "plugin-adpcmdec", "plugin-adpcmenc", + "plugin-aes", "plugin-aiff", "plugin-alaw", "plugin-alpha", @@ -63254,6 +63845,7 @@ "plugin-mpegtsmux", "plugin-mpg123", "plugin-mplex", + "plugin-msdk", "plugin-mulaw", "plugin-multifile", "plugin-multipart", @@ -63807,6 +64399,7 @@ "rtpbin::request-aux-receiver", "rtpbin::request-aux-sender", "rtpbin::request-fec-decoder", + "rtpbin::request-fec-decoder-full", "rtpbin::request-fec-encoder", "rtpbin::request-jitterbuffer", "rtpbin::request-pt-map", @@ -63908,6 +64501,7 @@ "rtph265pay:config-interval", "rtphdrextclientaudiolevel", "rtphdrextclientaudiolevel:vad", + "rtphdrextcolorspace", "rtphdrexttwcc", "rtphdrexttwcc:n-streams", "rtpilbcdepay", @@ -64000,6 +64594,7 @@ "rtpqcelpdepay", "rtpqdm2depay", "rtpreddec", + "rtpreddec:payloads", "rtpreddec:pt", "rtpreddec:received", "rtpredenc", @@ -64186,6 +64781,7 @@ "rtspsrc:do-rtcp", "rtspsrc:do-rtsp-keep-alive", "rtspsrc:drop-on-latency", + "rtspsrc:ignore-x-server-reply", "rtspsrc:is-live", "rtspsrc:latency", "rtspsrc:location", @@ -64794,6 +65390,7 @@ "tsdemux:emit-stats", "tsdemux:latency", "tsdemux:program-number", + "tsdemux:send-scte35-events", "tsparse", "tsparse:alignment", "tsparse:pcr-pid", @@ -65106,6 +65703,8 @@ "vaapisink:signal-handoffs", "vaapisink:view-id", "vaapivc1dec", + "vadeinterlace", + "vadeinterlace:method", "vah264dec", "vah265dec", "value", @@ -65114,6 +65713,7 @@ "valve:drop-mode", "vampeg2dec", "vapostproc", + "vapostproc:disable-passthrough", "vavp8dec", "vavp9dec", "vc1parse", @@ -65136,6 +65736,8 @@ "videobox:left", "videobox:right", "videobox:top", + "videocodectestsink", + "videocodectestsink:location", "videoconvert", "videoconvert:alpha-mode", "videoconvert:alpha-value", @@ -65255,6 +65857,8 @@ "vp9alphadecodebin", "vp9dec", "vp9enc", + "vp9enc:aq-mode", + "vp9enc:frame-parallel-decoding", "vp9enc:row-mt", "vp9enc:tile-columns", "vp9enc:tile-rows", @@ -65279,6 +65883,16 @@ "vtenc_h264_hw:max-keyframe-interval-duration", "vtenc_h264_hw:quality", "vtenc_h264_hw:realtime", + "vtenc_prores", + "vtenc_prores!sink", + "vtenc_prores!src", + "vtenc_prores:allow-frame-reordering", + "vtenc_prores:bitrate", + "vtenc_prores:max-keyframe-interval", + "vtenc_prores:max-keyframe-interval-duration", + "vtenc_prores:preserve-alpha", + "vtenc_prores:quality", + "vtenc_prores:realtime", "vulkancolorconvert", "vulkandownload", "vulkanimageidentity", @@ -65303,6 +65917,7 @@ "wasapi2src", "wasapi2src:device", "wasapi2src:dispatcher", + "wasapi2src:loopback", "wasapi2src:low-latency", "wasapi2src:mute", "wasapi2src:volume", @@ -65383,6 +65998,7 @@ "webrtcbin:pending-local-description", "webrtcbin:pending-remote-description", "webrtcbin:remote-description", + "webrtcbin:sctp-transport", "webrtcbin:signaling-state", "webrtcbin:stun-server", "webrtcbin:turn-server", @@ -65583,4 +66199,4 @@ "zbar:message", "zebrastripe", "zebrastripe:threshold" -] +] \ No newline at end of file diff --git a/subprojects/gst-docs/symbols/symbols_version.txt b/subprojects/gst-docs/symbols/symbols_version.txt index 8068c6e177..0fdd2359fd 100644 --- a/subprojects/gst-docs/symbols/symbols_version.txt +++ b/subprojects/gst-docs/symbols/symbols_version.txt @@ -1 +1 @@ -1.19 \ No newline at end of file +1.20 \ No newline at end of file diff --git a/subprojects/gst-editing-services/ChangeLog b/subprojects/gst-editing-services/ChangeLog index 1eb505b46a..e96a1aca41 100644 --- a/subprojects/gst-editing-services/ChangeLog +++ b/subprojects/gst-editing-services/ChangeLog @@ -1,3 +1,18 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * NEWS: + * RELEASE: + * gst-editing-services.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + === release 1.19.90 === 2022-01-28 14:28:35 +0000 Tim-Philipp Müller diff --git a/subprojects/gst-editing-services/NEWS b/subprojects/gst-editing-services/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gst-editing-services/NEWS +++ b/subprojects/gst-editing-services/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gst-editing-services/RELEASE b/subprojects/gst-editing-services/RELEASE index 159e440e24..e97030460a 100644 --- a/subprojects/gst-editing-services/RELEASE +++ b/subprojects/gst-editing-services/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gst-editing-services/gst-editing-services.doap b/subprojects/gst-editing-services/gst-editing-services.doap index d92ca09b92..077c182b9e 100644 --- a/subprojects/gst-editing-services/gst-editing-services.doap +++ b/subprojects/gst-editing-services/gst-editing-services.doap @@ -30,6 +30,16 @@ GStreamer library for creating audio and video editors + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gst-editing-services/meson.build b/subprojects/gst-editing-services/meson.build index 36b5a73506..8e62442228 100644 --- a/subprojects/gst-editing-services/meson.build +++ b/subprojects/gst-editing-services/meson.build @@ -1,5 +1,5 @@ project('gst-editing-services', 'c', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff --git a/subprojects/gst-examples/meson.build b/subprojects/gst-examples/meson.build index ed6f3475fb..25508345c6 100644 --- a/subprojects/gst-examples/meson.build +++ b/subprojects/gst-examples/meson.build @@ -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') m_dep = cc.find_library('m', required : false) diff --git a/subprojects/gst-integration-testsuites/meson.build b/subprojects/gst-integration-testsuites/meson.build index e20e21ee1d..5bd1b921d6 100644 --- a/subprojects/gst-integration-testsuites/meson.build +++ b/subprojects/gst-integration-testsuites/meson.build @@ -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') diff --git a/subprojects/gst-libav/ChangeLog b/subprojects/gst-libav/ChangeLog index ed707bdfaf..75f50d3161 100644 --- a/subprojects/gst-libav/ChangeLog +++ b/subprojects/gst-libav/ChangeLog @@ -1,3 +1,18 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * NEWS: + * RELEASE: + * gst-libav.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + 2022-01-28 19:58:55 +0100 Mathieu Duponchelle * docs/gst_plugins_cache.json: diff --git a/subprojects/gst-libav/NEWS b/subprojects/gst-libav/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gst-libav/NEWS +++ b/subprojects/gst-libav/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gst-libav/RELEASE b/subprojects/gst-libav/RELEASE index 0349d12b7d..dc40f3cc5f 100644 --- a/subprojects/gst-libav/RELEASE +++ b/subprojects/gst-libav/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gst-libav/gst-libav.doap b/subprojects/gst-libav/gst-libav.doap index 2bd3df03a2..50f7d81797 100644 --- a/subprojects/gst-libav/gst-libav.doap +++ b/subprojects/gst-libav/gst-libav.doap @@ -32,6 +32,16 @@ colorspace conversion elements. + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gst-libav/meson.build b/subprojects/gst-libav/meson.build index 0d6b77d43e..b281b6377e 100644 --- a/subprojects/gst-libav/meson.build +++ b/subprojects/gst-libav/meson.build @@ -1,5 +1,5 @@ project('gst-libav', 'c', 'cpp', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff --git a/subprojects/gst-omx/ChangeLog b/subprojects/gst-omx/ChangeLog index 9d70662316..d3f9e5aaa5 100644 --- a/subprojects/gst-omx/ChangeLog +++ b/subprojects/gst-omx/ChangeLog @@ -1,3 +1,18 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * NEWS: + * RELEASE: + * gst-omx.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + === release 1.19.90 === 2022-01-28 14:28:35 +0000 Tim-Philipp Müller diff --git a/subprojects/gst-omx/NEWS b/subprojects/gst-omx/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gst-omx/NEWS +++ b/subprojects/gst-omx/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gst-omx/RELEASE b/subprojects/gst-omx/RELEASE index b5aa9980f7..3d51f2e647 100644 --- a/subprojects/gst-omx/RELEASE +++ b/subprojects/gst-omx/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gst-omx/gst-omx.doap b/subprojects/gst-omx/gst-omx.doap index e11d11723c..960398364f 100644 --- a/subprojects/gst-omx/gst-omx.doap +++ b/subprojects/gst-omx/gst-omx.doap @@ -31,6 +31,16 @@ a basic collection of elements + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gst-omx/meson.build b/subprojects/gst-omx/meson.build index 2fd4f5df6c..bd791060fc 100644 --- a/subprojects/gst-omx/meson.build +++ b/subprojects/gst-omx/meson.build @@ -1,5 +1,5 @@ project('gst-omx', 'c', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff --git a/subprojects/gst-plugins-bad/ChangeLog b/subprojects/gst-plugins-bad/ChangeLog index 6a93bec96a..f2b3ccd3ef 100644 --- a/subprojects/gst-plugins-bad/ChangeLog +++ b/subprojects/gst-plugins-bad/ChangeLog @@ -1,3 +1,19 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * NEWS: + * README: + * RELEASE: + * gst-plugins-bad.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + 2022-02-02 09:58:15 +0100 Stéphane Cerveau * ext/dash/gstdashsink.c: diff --git a/subprojects/gst-plugins-bad/NEWS b/subprojects/gst-plugins-bad/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gst-plugins-bad/NEWS +++ b/subprojects/gst-plugins-bad/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gst-plugins-bad/README b/subprojects/gst-plugins-bad/README index 17e60d01d7..1e442e6bc0 100644 --- a/subprojects/gst-plugins-bad/README +++ b/subprojects/gst-plugins-bad/README @@ -1,4 +1,4 @@ -GStreamer 1.19.x development series +GStreamer 1.20.x stable series WHAT IT IS ---------- diff --git a/subprojects/gst-plugins-bad/RELEASE b/subprojects/gst-plugins-bad/RELEASE index a22cdf4adc..2244892111 100644 --- a/subprojects/gst-plugins-bad/RELEASE +++ b/subprojects/gst-plugins-bad/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gst-plugins-bad/gst-plugins-bad.doap b/subprojects/gst-plugins-bad/gst-plugins-bad.doap index 3c65c70e96..3ce24dd544 100644 --- a/subprojects/gst-plugins-bad/gst-plugins-bad.doap +++ b/subprojects/gst-plugins-bad/gst-plugins-bad.doap @@ -33,6 +33,16 @@ real live maintainer, or some actual wide use. + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gst-plugins-bad/meson.build b/subprojects/gst-plugins-bad/meson.build index d79cb64bcf..37e1a1507c 100644 --- a/subprojects/gst-plugins-bad/meson.build +++ b/subprojects/gst-plugins-bad/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff --git a/subprojects/gst-plugins-base/ChangeLog b/subprojects/gst-plugins-base/ChangeLog index 66cf2cbef5..25fdf7fe73 100644 --- a/subprojects/gst-plugins-base/ChangeLog +++ b/subprojects/gst-plugins-base/ChangeLog @@ -1,3 +1,19 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * NEWS: + * README: + * RELEASE: + * gst-plugins-base.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + 2022-02-03 18:18:03 +0000 Tim-Philipp Müller * gst-libs/gst/video/meson.build: diff --git a/subprojects/gst-plugins-base/NEWS b/subprojects/gst-plugins-base/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gst-plugins-base/NEWS +++ b/subprojects/gst-plugins-base/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gst-plugins-base/README b/subprojects/gst-plugins-base/README index 17e60d01d7..1e442e6bc0 100644 --- a/subprojects/gst-plugins-base/README +++ b/subprojects/gst-plugins-base/README @@ -1,4 +1,4 @@ -GStreamer 1.19.x development series +GStreamer 1.20.x stable series WHAT IT IS ---------- diff --git a/subprojects/gst-plugins-base/RELEASE b/subprojects/gst-plugins-base/RELEASE index 2128ca5951..7772ac9f11 100644 --- a/subprojects/gst-plugins-base/RELEASE +++ b/subprojects/gst-plugins-base/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gst-plugins-base/gst-plugins-base.doap b/subprojects/gst-plugins-base/gst-plugins-base.doap index 6fcb9be8ce..38991a5900 100644 --- a/subprojects/gst-plugins-base/gst-plugins-base.doap +++ b/subprojects/gst-plugins-base/gst-plugins-base.doap @@ -34,6 +34,16 @@ A wide range of video and audio decoders, encoders, and filters are included. + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gst-plugins-base/meson.build b/subprojects/gst-plugins-base/meson.build index fc7746c4b7..5ad1ab3add 100644 --- a/subprojects/gst-plugins-base/meson.build +++ b/subprojects/gst-plugins-base/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-base', 'c', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff --git a/subprojects/gst-plugins-good/ChangeLog b/subprojects/gst-plugins-good/ChangeLog index 9ea6aab2ab..5db352d7e8 100644 --- a/subprojects/gst-plugins-good/ChangeLog +++ b/subprojects/gst-plugins-good/ChangeLog @@ -1,3 +1,20 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * 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 + + * ChangeLog: + Update ChangeLogs for 1.20.0 + 2022-02-01 05:07:04 +0530 Nirbheek Chauhan * docs/meson.build: diff --git a/subprojects/gst-plugins-good/NEWS b/subprojects/gst-plugins-good/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gst-plugins-good/NEWS +++ b/subprojects/gst-plugins-good/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gst-plugins-good/README b/subprojects/gst-plugins-good/README index 17e60d01d7..1e442e6bc0 100644 --- a/subprojects/gst-plugins-good/README +++ b/subprojects/gst-plugins-good/README @@ -1,4 +1,4 @@ -GStreamer 1.19.x development series +GStreamer 1.20.x stable series WHAT IT IS ---------- diff --git a/subprojects/gst-plugins-good/RELEASE b/subprojects/gst-plugins-good/RELEASE index 796bde464e..e038f04146 100644 --- a/subprojects/gst-plugins-good/RELEASE +++ b/subprojects/gst-plugins-good/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gst-plugins-good/docs/gst_plugins_cache.json b/subprojects/gst-plugins-good/docs/gst_plugins_cache.json index e64ec9bd60..098c7c62a2 100644 --- a/subprojects/gst-plugins-good/docs/gst_plugins_cache.json +++ b/subprojects/gst-plugins-good/docs/gst_plugins_cache.json @@ -6607,7 +6607,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.19.90 FLV muxer", + "default": "GStreamer 1.20.0 FLV muxer", "mutable": "null", "readable": true, "type": "gchararray", @@ -6619,7 +6619,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.19.90 FLV muxer", + "default": "GStreamer 1.20.0 FLV muxer", "mutable": "null", "readable": true, "type": "gchararray", @@ -20478,7 +20478,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer/1.19.90", + "default": "GStreamer/1.20.0", "mutable": "null", "readable": true, "type": "gchararray", @@ -22435,7 +22435,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer souphttpsrc 1.19.90 ", + "default": "GStreamer souphttpsrc 1.20.0 ", "mutable": "null", "readable": true, "type": "gchararray", diff --git a/subprojects/gst-plugins-good/gst-plugins-good.doap b/subprojects/gst-plugins-good/gst-plugins-good.doap index a807027350..232c33c74d 100644 --- a/subprojects/gst-plugins-good/gst-plugins-good.doap +++ b/subprojects/gst-plugins-good/gst-plugins-good.doap @@ -32,6 +32,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library). + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gst-plugins-good/meson.build b/subprojects/gst-plugins-good/meson.build index 13b8f10a4f..c1a5ef16ef 100644 --- a/subprojects/gst-plugins-good/meson.build +++ b/subprojects/gst-plugins-good/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-good', 'c', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff --git a/subprojects/gst-plugins-ugly/ChangeLog b/subprojects/gst-plugins-ugly/ChangeLog index 337603ac4b..acaeb60e92 100644 --- a/subprojects/gst-plugins-ugly/ChangeLog +++ b/subprojects/gst-plugins-ugly/ChangeLog @@ -1,3 +1,19 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * NEWS: + * README: + * RELEASE: + * gst-plugins-ugly.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + === release 1.19.90 === 2022-01-28 14:28:35 +0000 Tim-Philipp Müller diff --git a/subprojects/gst-plugins-ugly/NEWS b/subprojects/gst-plugins-ugly/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gst-plugins-ugly/NEWS +++ b/subprojects/gst-plugins-ugly/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gst-plugins-ugly/README b/subprojects/gst-plugins-ugly/README index 17e60d01d7..1e442e6bc0 100644 --- a/subprojects/gst-plugins-ugly/README +++ b/subprojects/gst-plugins-ugly/README @@ -1,4 +1,4 @@ -GStreamer 1.19.x development series +GStreamer 1.20.x stable series WHAT IT IS ---------- diff --git a/subprojects/gst-plugins-ugly/RELEASE b/subprojects/gst-plugins-ugly/RELEASE index 4d0a301fee..e44e809979 100644 --- a/subprojects/gst-plugins-ugly/RELEASE +++ b/subprojects/gst-plugins-ugly/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gst-plugins-ugly/gst-plugins-ugly.doap b/subprojects/gst-plugins-ugly/gst-plugins-ugly.doap index 68dba52806..2aa374b178 100644 --- a/subprojects/gst-plugins-ugly/gst-plugins-ugly.doap +++ b/subprojects/gst-plugins-ugly/gst-plugins-ugly.doap @@ -33,6 +33,16 @@ might be widely known to present patent problems. + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gst-plugins-ugly/meson.build b/subprojects/gst-plugins-ugly/meson.build index 2b812c0133..27be125c4f 100644 --- a/subprojects/gst-plugins-ugly/meson.build +++ b/subprojects/gst-plugins-ugly/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-ugly', 'c', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff --git a/subprojects/gst-python/ChangeLog b/subprojects/gst-python/ChangeLog index 31b9b95051..47648ab63d 100644 --- a/subprojects/gst-python/ChangeLog +++ b/subprojects/gst-python/ChangeLog @@ -1,3 +1,18 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * NEWS: + * RELEASE: + * gst-python.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + === release 1.19.90 === 2022-01-28 14:28:35 +0000 Tim-Philipp Müller diff --git a/subprojects/gst-python/NEWS b/subprojects/gst-python/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gst-python/NEWS +++ b/subprojects/gst-python/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gst-python/RELEASE b/subprojects/gst-python/RELEASE index 1d90472811..5bb5fdd19f 100644 --- a/subprojects/gst-python/RELEASE +++ b/subprojects/gst-python/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gst-python/gst-python.doap b/subprojects/gst-python/gst-python.doap index 39cdcbb3d8..95c22b0138 100644 --- a/subprojects/gst-python/gst-python.doap +++ b/subprojects/gst-python/gst-python.doap @@ -30,6 +30,16 @@ GStreamer Python Bindings is a set of overrides and Gst fundamental types handli + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gst-python/meson.build b/subprojects/gst-python/meson.build index c197664dec..acc3502e3d 100644 --- a/subprojects/gst-python/meson.build +++ b/subprojects/gst-python/meson.build @@ -1,5 +1,5 @@ project('gst-python', 'c', 'cpp', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'c_std=gnu99', diff --git a/subprojects/gst-rtsp-server/ChangeLog b/subprojects/gst-rtsp-server/ChangeLog index a63bbc599d..df039f6d6d 100644 --- a/subprojects/gst-rtsp-server/ChangeLog +++ b/subprojects/gst-rtsp-server/ChangeLog @@ -1,3 +1,19 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * 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 + + * ChangeLog: + Update ChangeLogs for 1.20.0 + === release 1.19.90 === 2022-01-28 14:28:35 +0000 Tim-Philipp Müller diff --git a/subprojects/gst-rtsp-server/NEWS b/subprojects/gst-rtsp-server/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gst-rtsp-server/NEWS +++ b/subprojects/gst-rtsp-server/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gst-rtsp-server/RELEASE b/subprojects/gst-rtsp-server/RELEASE index b7f80bf179..72467c730a 100644 --- a/subprojects/gst-rtsp-server/RELEASE +++ b/subprojects/gst-rtsp-server/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gst-rtsp-server/docs/gst_plugins_cache.json b/subprojects/gst-rtsp-server/docs/gst_plugins_cache.json index 509ca4e683..e9367b4656 100644 --- a/subprojects/gst-rtsp-server/docs/gst_plugins_cache.json +++ b/subprojects/gst-rtsp-server/docs/gst_plugins_cache.json @@ -321,7 +321,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer/1.19.90", + "default": "GStreamer/1.20.0", "mutable": "null", "readable": true, "type": "gchararray", diff --git a/subprojects/gst-rtsp-server/gst-rtsp-server.doap b/subprojects/gst-rtsp-server/gst-rtsp-server.doap index 7a097e0563..cac5f62977 100644 --- a/subprojects/gst-rtsp-server/gst-rtsp-server.doap +++ b/subprojects/gst-rtsp-server/gst-rtsp-server.doap @@ -30,6 +30,16 @@ RTSP server library based on GStreamer + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gst-rtsp-server/meson.build b/subprojects/gst-rtsp-server/meson.build index 834f20d1f2..35953af72c 100644 --- a/subprojects/gst-rtsp-server/meson.build +++ b/subprojects/gst-rtsp-server/meson.build @@ -1,5 +1,5 @@ project('gst-rtsp-server', 'c', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : ['warning_level=1', 'buildtype=debugoptimized']) diff --git a/subprojects/gstreamer-sharp/meson.build b/subprojects/gstreamer-sharp/meson.build index b48ea71548..9fbd996104 100644 --- a/subprojects/gstreamer-sharp/meson.build +++ b/subprojects/gstreamer-sharp/meson.build @@ -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') if host_machine.system() == 'osx' diff --git a/subprojects/gstreamer-sharp/sources/generated/Gst.PbUtils/Constants.cs b/subprojects/gstreamer-sharp/sources/generated/Gst.PbUtils/Constants.cs index 0fe1bf7176..4f344e868b 100644 --- a/subprojects/gstreamer-sharp/sources/generated/Gst.PbUtils/Constants.cs +++ b/subprojects/gstreamer-sharp/sources/generated/Gst.PbUtils/Constants.cs @@ -17,8 +17,8 @@ namespace Gst.PbUtils { public const string ENCODING_CATEGORY_ONLINE_SERVICE = @"online-service"; public const string ENCODING_CATEGORY_STORAGE_EDITING = @"storage-editing"; public const int PLUGINS_BASE_VERSION_MAJOR = 1; - public const int PLUGINS_BASE_VERSION_MICRO = 90; - public const int PLUGINS_BASE_VERSION_MINOR = 19; + public const int PLUGINS_BASE_VERSION_MICRO = 0; + public const int PLUGINS_BASE_VERSION_MINOR = 20; public const int PLUGINS_BASE_VERSION_NANO = 0; #endregion } diff --git a/subprojects/gstreamer-sharp/sources/generated/Gst/Constants.cs b/subprojects/gstreamer-sharp/sources/generated/Gst/Constants.cs index b63105a303..48171a69fd 100644 --- a/subprojects/gstreamer-sharp/sources/generated/Gst/Constants.cs +++ b/subprojects/gstreamer-sharp/sources/generated/Gst/Constants.cs @@ -170,8 +170,8 @@ namespace Gst { public const int VALUE_LESS_THAN = -1; public const int VALUE_UNORDERED = 2; public const int VERSION_MAJOR = 1; - public const int VERSION_MICRO = 90; - public const int VERSION_MINOR = 19; + public const int VERSION_MICRO = 0; + public const int VERSION_MINOR = 20; public const int VERSION_NANO = 0; #endregion } diff --git a/subprojects/gstreamer-sharp/sources/generated/gstreamer-sharp-api.xml b/subprojects/gstreamer-sharp/sources/generated/gstreamer-sharp-api.xml index 3e879bba1d..85dd67c0ac 100644 --- a/subprojects/gstreamer-sharp/sources/generated/gstreamer-sharp-api.xml +++ b/subprojects/gstreamer-sharp/sources/generated/gstreamer-sharp-api.xml @@ -12127,10 +12127,10 @@ - - - - + + + + @@ -21582,10 +21582,10 @@ - - - - + + + + diff --git a/subprojects/gstreamer-vaapi/ChangeLog b/subprojects/gstreamer-vaapi/ChangeLog index 390e377df1..25f336e04f 100644 --- a/subprojects/gstreamer-vaapi/ChangeLog +++ b/subprojects/gstreamer-vaapi/ChangeLog @@ -1,3 +1,18 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * NEWS: + * RELEASE: + * gstreamer-vaapi.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + 2022-01-30 09:38:48 +0100 Víctor Manuel Jáquez Leal * gst/vaapi/gstvaapipluginutil.c: diff --git a/subprojects/gstreamer-vaapi/NEWS b/subprojects/gstreamer-vaapi/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gstreamer-vaapi/NEWS +++ b/subprojects/gstreamer-vaapi/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gstreamer-vaapi/RELEASE b/subprojects/gstreamer-vaapi/RELEASE index ad28e846d8..24c0ab1134 100644 --- a/subprojects/gstreamer-vaapi/RELEASE +++ b/subprojects/gstreamer-vaapi/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gstreamer-vaapi/gstreamer-vaapi.doap b/subprojects/gstreamer-vaapi/gstreamer-vaapi.doap index 69de91328b..0cbaa83f29 100644 --- a/subprojects/gstreamer-vaapi/gstreamer-vaapi.doap +++ b/subprojects/gstreamer-vaapi/gstreamer-vaapi.doap @@ -25,6 +25,16 @@ + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gstreamer-vaapi/meson.build b/subprojects/gstreamer-vaapi/meson.build index d16caec8d7..2141fe0318 100644 --- a/subprojects/gstreamer-vaapi/meson.build +++ b/subprojects/gstreamer-vaapi/meson.build @@ -1,5 +1,5 @@ project('gstreamer-vaapi', 'c', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff --git a/subprojects/gstreamer/ChangeLog b/subprojects/gstreamer/ChangeLog index d95bda4161..da6d04bd92 100644 --- a/subprojects/gstreamer/ChangeLog +++ b/subprojects/gstreamer/ChangeLog @@ -1,3 +1,19 @@ +=== release 1.20.0 === + +2022-02-03 19:53:25 +0000 Tim-Philipp Müller + + * NEWS: + * README: + * RELEASE: + * gstreamer.doap: + * meson.build: + Release 1.20.0 + +2022-02-03 19:53:18 +0000 Tim-Philipp Müller + + * ChangeLog: + Update ChangeLogs for 1.20.0 + 2022-02-02 18:06:49 +1100 Matthew Waters * gst/gst.c: diff --git a/subprojects/gstreamer/NEWS b/subprojects/gstreamer/NEWS index 1a512c1848..eb637c9ed8 100644 --- a/subprojects/gstreamer/NEWS +++ b/subprojects/gstreamer/NEWS @@ -1,19 +1,11 @@ GStreamer 1.20 Release Notes -GStreamer 1.20 has not been released yet. It is scheduled for release in -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. +GStreamer 1.20.0 was released on 3 February 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest 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 @@ -36,16 +28,16 @@ Highlights - RTP header extensions: unified support in RTP depayloader and payloader base classes - 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 - Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental) - Video decoder subframe support - Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP -- MP4 and Matroska muxers now support profile/level/resolution changes - for H264/H265 input streams (i.e. codec data changing on the fly) -- MP4 muxing mode that initially creates a fragmented mp4 which is +- mp4 and Matroska muxers now support profile/level/resolution changes + 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 converted to a regular mp4 on EOS - Audio support for the WebKit Port for Embedded (WPE) web page source element @@ -54,7 +46,7 @@ Highlights - NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements - 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 - AppSink API to retrieve events in addition to buffers and buffer lists @@ -64,8 +56,8 @@ Highlights - Updated Rust bindings and many new Rust plugins - Improved support for custom minimal GStreamer builds - Support build against FFmpeg 5.0 -- Linux Stateless CODEC support gained MPEG2 and VP9 -- Windows Direct3D11/DXVA decoder gained AV1 and MPEG2 support +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support - Lots of new plugins, features, performance improvements and bug fixes @@ -87,7 +79,7 @@ and which have so far been developed in separate git repositories in freedesktop.org GitLab. In addition to these separate git repositories there was a gst-build -module that would use the Meson build systems’s subproject feature to +module that would use the Meson build system’s subproject feature to download each individual module and then build everything in one go. It would also provide an uninstalled development environment that made it 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 the regular vp8dec and vp9dec software decoders to decode 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 decode both alpha and non-alpha stream with a single decoder instance @@ -257,7 +249,7 @@ AppSink and AppSrc improvements or buffer list, whatever is next in the queue. 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 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 experimentation or proprietary metas, but also has some limitations: it can only be used if there’s a single producer of these metas; - it’s not allowed to register the same custom meta multiple times or - from multiple places. + registering the same custom meta multiple times or from multiple + places is not allowed. Additional Element Properties on Encoding Profiles @@ -414,8 +406,9 @@ Improved support for custom minimal GStreamer builds facilitate minimal custom GStreamer builds. - A number of new macros have been added to declare and create - per-element and per-pluginfeature register functions in all plugins, - and then call those from the per-plugin plugin_init functions: + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: - GST_ELEMENT_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 - and various variants for advanced use cases. -- This means that applications can call the per-element and - per-pluginfeature registration functions for only the elements they - need instead of registering plugins as a whole with all kinds of - elements that may not be required (e.g. encoder and decoder instead - of just decoder). In case of static linking all unused functions and - their dependencies would be removed in this case by the linker, - which helps minimise binary size for custom builds. +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. - gst_init() will automatically call a gst_init_static_plugins() function if one exists. @@ -477,8 +470,8 @@ New elements - openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) -- qroverlay, debugqroverlay: new elements that allows overlaying data - on top of video in form of a QR code +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code - cvtracker: new OpenCV-based tracker element @@ -535,9 +528,9 @@ New elements closed captions stream - cea608tojson: Converts CEA-608 Closed Captions to a JSON representation - - cmafmux: CMAF fragmented MP4 muxer - - dashmp4mux: DASH fragmented MP4 muxer - - isofmp4mux: ISO fragmented MP4 muxer + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer - ebur128level: EBU R128 Loudness Level Measurement - ffv1dec: FFV1 video decoder - gtk4paintablesink: GTK4 video sink, which provides a @@ -577,7 +570,7 @@ New elements - 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 - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha layer decoding @@ -630,7 +623,7 @@ New element features and additions rewriting input captions, for example when the input is CDP then sequence counters are rewritten, time codes are dropped and 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 isn’t enough padding in the input stream to catch up. In that case the element will start dropping old caption buffers once 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 include in CDP packets (timecode, CC data, service info). Various - software, including ffmpeg’s Decklink support, fails parsing CDP + software, including FFmpeg’s Decklink support, fails parsing CDP packets that contain anything but CC data in the CDP packets. - clocksync: new "sync-to-first" property for automatic timestamp @@ -677,7 +670,7 @@ New element features and additions alpha (also glvideomixer and other GstVideoAggregator 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 - decodebin3: @@ -702,7 +695,7 @@ New element features and additions - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only re-encode where needed and otherwise pass through encoded video 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 in-band SPS/PPS/VPS signalling for more flexibility. - 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 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 profile/level/resolution changes. @@ -770,9 +763,9 @@ New element features and additions - rtpsrc: add "caps" property to allow explicit setting of the caps 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 - (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 semantic change in the SCTE-35 section API: timestamps are now in running time instead of muxer pts. @@ -782,7 +775,7 @@ New element features and additions - 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 outputs PCR observations in CBR mode, so that a PCR 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 the codec data is signalled in-band inside the bitstream instead 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 is put into its own SampleTableEntry inside the stsd, unless the input is in avc3 stream format in which case it’s written - in-band an not in the headers. + in-band and not in the headers. - multifilesink: new ""min-keyframe-distance"" property to make 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 used by the application (and its other dependencies) at runtime on 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 incoming connections @@ -1045,7 +1040,7 @@ Core - GstSharedTaskPool: new “shared” task pool subclass with slightly different default behaviour than the existing GstTaskPool which 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 thread is available. It is possible to join tasks. This can be used by plugins to implement simple multi-threaded processing and is used @@ -1078,20 +1073,20 @@ Plugins Base Utils library extension for given caps. - gst_codec_utils_h264_get_profile_flags_level(): Parses profile, - flags, and level from H264 AvcC codec_data. The format of H264 AVCC - extradata/sequence_header is documented in the ITU-T H.264 + flags, and level from H.264 AvcC codec_data. The format of 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 section 5.3.3.1.2. - gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 compatible MIME codec string codec. Useful for providing the codecs - field inside the Content-Type HTTP header for containerized formats, - such as mp4 or matroska. + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. GStreamer OpenGL integration library and plugins -- glcolorconvert: added suppport for converting the video formats - A420, AV12, BGR, BGRA, RGBP and BGRP. +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. - Added support to GstGLBuffer for persistent buffer mappings where a 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 (used with NVDEC and V4L2). - lots of improvements to parsers and the codec parsing decoder base - classes (H264, H265, VP8, VP9, AV1, MPEG-2) used for various - hardware-accelerate decoder APIs. + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. Bindings support - gst_allocation_params_new() allocates a GstAllocationParams struct on the heap. This should only be used by bindings (and freed via - gst_allocation_params_free() then). In C code you would allocate - this on the stack and only init it in place. + gst_allocation_params_free() afterwards). In C code you would + 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 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” 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 passing arrays of flags through the command line or gst_util_set_object_arg(), eg: foo="". -- It’s now allowed to create an empty GstVideoOverlayComposition +- It’s now possible to create an empty GstVideoOverlayComposition without any rectangles by passing a NULL rectangle to gst_video_overlay_composition_new(). This is useful for bindings and 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 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 - tailored minimal GStreamer build that contains just the elements - needed and nothing else. + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. - New plugin-feature-loaded tracing hook for use by tracers like the new factories tracer @@ -1456,8 +1451,8 @@ GStreamer RTSP server - GstRTSPMediaFactory gained API to disable RTCP (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). Previously RTCP was always allowed for all RTSP medias. With this - change it is possible to disable RTCP completely, no matter if the - client wants to do RTCP or not. + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. - 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 @@ -1483,12 +1478,12 @@ GStreamer VAAPI - 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 -- 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) - vaapipostproc: gained BT2020 color standard support @@ -1557,7 +1552,7 @@ GStreamer Python Bindings GStreamer C# Bindings - Fix GstDebugGraphDetails enum -- Updated to latests GtkSharp +- Updated to latest GtkSharp - Updated to include GStreamer 1.20 API GStreamer Rust Bindings and Rust Plugins @@ -1574,13 +1569,19 @@ GStreamer Rust Bindings and Rust Plugins 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 March 2018). - 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 Some plugins have GPL- or AGPL-licensed dependencies and those plugins @@ -1610,8 +1611,11 @@ macOS / iOS specific Cerbero improvements - XCode 12 support - 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) native support is currently experimental +- macOS Apple Silicon (ARM64) cross-compile support has been added, + 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 @@ -1648,6 +1652,13 @@ macOS and iOS - 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 - On Windows the high-resolution clock is enabled now in the @@ -1679,7 +1690,7 @@ Windows GstDeviceProvider implementation to enumerate/select target monitors for capture. -- Direct3D11/DXVA decoder now supports AV1 and MPEG2 codecs +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs (d3d11av1dec, d3d11mpeg2dec) - 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 is scheduled to be released around early February 2022. +1.20.0 was released on 3 February 2022. Schedule for 1.22 diff --git a/subprojects/gstreamer/README b/subprojects/gstreamer/README index 17e60d01d7..1e442e6bc0 100644 --- a/subprojects/gstreamer/README +++ b/subprojects/gstreamer/README @@ -1,4 +1,4 @@ -GStreamer 1.19.x development series +GStreamer 1.20.x stable series WHAT IT IS ---------- diff --git a/subprojects/gstreamer/RELEASE b/subprojects/gstreamer/RELEASE index a0910fddd8..d358469144 100644 --- a/subprojects/gstreamer/RELEASE +++ b/subprojects/gstreamer/RELEASE @@ -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 -stable version which will be 1.20. +The GStreamer team is thrilled to announce a new major feature release +of your favourite cross-platform multimedia framework! -The 1.19 development series adds new features on top of the 1.18 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +As always, this release is again packed with new features, bug fixes and +other improvements. -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/ @@ -57,7 +59,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ 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 ==== @@ -65,10 +67,9 @@ The project's website is https://gstreamer.freedesktop.org/ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ 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. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== 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 Merge Requests or file issues for bugs or feature requests. diff --git a/subprojects/gstreamer/gstreamer.doap b/subprojects/gstreamer/gstreamer.doap index 5807c216b7..0129e652b9 100644 --- a/subprojects/gstreamer/gstreamer.doap +++ b/subprojects/gstreamer/gstreamer.doap @@ -38,6 +38,16 @@ hierarchy, and a set of media-agnostic core elements. + + + 1.20.0 + main + + 2022-02-03 + + + + 1.19.90 diff --git a/subprojects/gstreamer/meson.build b/subprojects/gstreamer/meson.build index b0c5c7d4df..bc0633aba2 100644 --- a/subprojects/gstreamer/meson.build +++ b/subprojects/gstreamer/meson.build @@ -1,5 +1,5 @@ project('gstreamer', 'c', - version : '1.19.90', + version : '1.20.0', meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ])