Projects
Essentials
gstreamer-plugins-ugly-codecs
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 28
View file
gstreamer-plugins-ugly-codecs.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Wed Mar 12 19:33:05 UTC 2025 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.26.0 + +------------------------------------------------------------------- Mon Feb 3 09:26:26 UTC 2025 - Bjørn Lie <zaitor@opensuse.org> - Update to version 1.24.12
View file
gstreamer-plugins-ugly-codecs.spec
Changed
@@ -4,10 +4,10 @@ %define _name gst-plugins-ugly %define gst_branch 1.0 -%define _version 1.24.0 +%define _version 1.26.0 Name: gstreamer-plugins-ugly-codecs -Version: 1.24.12 +Version: 1.26.0 Release: 0 Summary: Codecs/plugins for gstreamer-plugins-ugly License: LGPL-2.1-or-later
View file
_service
Changed
@@ -2,7 +2,7 @@ <service name="download_url"> <param name="host">gstreamer.freedesktop.org</param> <param name="protocol">https</param> - <param name="path">/src/gst-plugins-ugly/gst-plugins-ugly-1.24.12.tar.xz</param> + <param name="path">/src/gst-plugins-ugly/gst-plugins-ugly-1.26.0.tar.xz</param> </service> <service name="set_version" mode="buildtime"/> </services> \ No newline at end of file
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ChangeLog -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ChangeLog
Changed
@@ -1,527 +1,240 @@ -=== release 1.24.12 === +=== release 1.26.0 === -2025-01-29 20:12:29 +0000 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.24.12 - -2025-01-23 20:55:15 +1100 Brad Hards <bradh@frogmouth.net> - - * ext/x264/gstx264enc.c: - x264enc: switch to GstByteWriter - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8360> - -2025-01-16 17:16:53 +1100 Brad Hards <bradh@frogmouth.net> - - * ext/x264/gstx264enc.c: - x264enc: add missing data to AvcDecoderConfigurationRecord - This adds the data required in AVCDecoderConfigurationRecord for - higher profile (High variants) configurations - everything in the if(...) {...} part - of ISO/IEC 14496-15:2024 Section 5.3.2.1.2. (or 5.3.3.1.2 in the 2019 version). - Resolves an error flagged by ComplianceWarden when muxing this into ISOBMFF. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8360> - -2025-01-06 20:11:58 +0000 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.24.11 - -=== release 1.24.11 === - -2025-01-06 19:48:08 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-03-11 20:14:44 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: + * README.md: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.24.11 + Release 1.26.0 -2024-12-03 23:39:54 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-02-23 23:52:57 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.24.10 + Back to development after 1.25.90 -=== release 1.24.10 === +=== release 1.25.90 === -2024-12-03 23:29:07 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-02-23 23:44:10 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.24.10 + Release 1.25.90 -2024-11-03 17:37:09 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-02-23 16:56:31 +0000 Tim-Philipp Müller <tim@centricular.com> - * po/es.po: * po/hr.po: - * po/ro.po: + * po/pt_BR.po: gst-plugins-ugly: update translations - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7820> - -2024-10-30 20:40:12 +0000 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.24.9 - -=== release 1.24.9 === - -2024-10-30 20:33:30 +0000 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.24.9 - -2024-09-19 12:12:53 +0200 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.24.8 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7549> - -=== release 1.24.8 === - -2024-09-19 12:01:21 +0200 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.24.8 - -2024-08-21 12:33:28 +0100 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.24.7 -=== release 1.24.7 === - -2024-08-21 12:25:15 +0100 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.24.7 - -2024-07-29 16:48:02 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-02-09 17:47:32 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.24.6 + Back to development after 1.25.50 -=== release 1.24.6 === +=== release 1.25.50 === -2024-07-29 16:41:37 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-02-09 17:35:17 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.24.6 - -2024-07-22 09:29:52 +0200 Sebastian Gross <sgross@emlix.com> - - * gst/asfdemux/gstasfdemux.c: - asfdemux: Be more lenient towards malformed header - VLC counts METADATA as 1 even if the specification states you must not. - This leads to asfdemux failing since there are no bytes left when asfdemux - tries to extract the "last" header. - Do not fail hard in this case and try to proceed when everything else went - fine. - So at least gst-discoverer will see what's in the file. - Closes #3684 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7216> - -2024-06-20 13:02:19 +0100 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.24.5 - -=== release 1.24.5 === + Release 1.25.50 -2024-06-20 12:54:15 +0100 Tim-Philipp Müller <tim@centricular.com> +2024-06-11 17:46:11 +0200 Ruben Gonzalez <rgonzalez@fluendo.com> - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: * meson.build: - Release 1.24.5 - -2024-05-29 13:51:27 +0300 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.24.4 - -=== release 1.24.4 === - -2024-05-29 13:44:50 +0300 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.24.4 - -2024-04-30 00:36:59 +0100 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.24.3 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6772> - -=== release 1.24.3 === - -2024-04-30 00:15:23 +0100 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.24.3 - -2024-04-10 00:04:02 +0100 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.24.2 - -=== release 1.24.2 === - -2024-04-09 21:48:55 +0100 Tim-Philipp Müller <tim@centricular.com> + meson: use nls option to ENABLE_NLS + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7017> - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.24.2 - -2024-03-22 01:38:06 +0100 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development - -=== release 1.24.1 === - -2024-03-21 21:47:53 +0100 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.24.1 - -2024-03-05 13:45:27 +0000 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6264> - -=== release 1.24.0 === +2025-01-23 20:55:15 +1100 Brad Hards <bradh@frogmouth.net> -2024-03-04 23:51:42 +0000 Tim-Philipp Müller <tim@centricular.com> + * ext/x264/gstx264enc.c: + x264enc: switch to GstByteWriter + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8346> - * NEWS: - * README.md: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.24.0 +2025-01-16 17:16:53 +1100 Brad Hards <bradh@frogmouth.net> -2024-02-26 09:27:40 +0100 Edward Hervey <edward@centricular.com> + * ext/x264/gstx264enc.c: + x264enc: add missing data to AvcDecoderConfigurationRecord + This adds the data required in AVCDecoderConfigurationRecord for + higher profile (High variants) configurations - everything in the if(...) {...} part + of ISO/IEC 14496-15:2024 Section 5.3.2.1.2. (or 5.3.3.1.2 in the 2019 version). + Resolves an error flagged by ComplianceWarden when muxing this into ISOBMFF. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8308> - * README.md: - * RELEASE: - docs: Use Discourse and Matrix as prefered communication channels - Part of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6220 +2025-01-15 17:36:00 +0100 Mathieu Duponchelle <mathieu@centricular.com> -=== release 1.23.90 === + * docs/meson.build: + docs: generate hotdoc configs for libraries with our helper script + With this patch, configure time is identical no matter whether doc is + enabled or not. + The configuration files also now contain explicitly-listed sources with + no wildcards. + For the four libraries where hotdoc needs to use clang to generate the + documentation (as opposed to the rest of the libraries where hotdoc uses + the gir), the script will call pkg-config to determine the appropriate + C flags. + This means a side effect of this patch is that pkg-config files are now + generated for the gstadaptivedemux and gstopencv libraries. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312> -2024-02-23 18:20:11 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-01-17 16:51:22 +0100 Mathieu Duponchelle <mathieu@centricular.com> - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: * meson.build: - Release 1.23.90 + meson: bump minimum version to 1.4 in every subprojects + 36c01d05797ad9c7778939c54870f979bdcbba1f bumped to 1.4 for gst-devtools + and the root project, but we usually keep those in sync everywhere. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312> -2023-09-17 18:47:31 +0200 Jochen Henneberg <jh@henneberg-systemdesign.com> - - * gst/asfdemux/gstrtpasfdepay.c: - rtpasfdepay: Enabled header extension aggregation - Because this depayloader may build several output buffers within one - process run we push them all into a GstBufferList and push them out at - once to make sure that each buffer gets notified about each header - extension. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378> - -2024-02-15 16:38:53 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-01-14 15:00:43 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6126> + Back to development after 1.25.1 -=== release 1.23.2 === +=== release 1.25.1 === -2024-02-15 15:37:17 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-01-14 14:52:48 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.23.2 + Release 1.25.1 -2024-02-14 00:38:10 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-01-13 18:10:31 +0100 Mathieu Duponchelle <mathieu@centricular.com> - * po/lv.po: - gst-plugins-ugly: update translations - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6113> - -2024-02-10 19:47:24 +0000 Tim-Philipp Müller <tim@centricular.com> - - * docs/gst_plugins_cache.json: - * gst/realmedia/asmrules.c: - * gst/realmedia/asmrules.h: - * gst/realmedia/gstrdtbuffer.c: - * gst/realmedia/gstrdtbuffer.h: + * docs/meson.build: + * ext/a52dec/meson.build: + * ext/cdio/meson.build: + * ext/dvdread/meson.build: + * ext/mpeg2dec/meson.build: + * ext/sidplay/meson.build: + * ext/x264/meson.build: + * gst/asfdemux/meson.build: + * gst/dvdlpcmdec/meson.build: + * gst/dvdsub/meson.build: + * gst/meson.build: * gst/realmedia/meson.build: - * gst/realmedia/rdtdepay.c: - * gst/realmedia/rdtdepay.h: - * gst/realmedia/rdtjitterbuffer.c: - * gst/realmedia/rdtjitterbuffer.h: - * gst/realmedia/rdtmanager.c: - * gst/realmedia/rdtmanager.h: - * gst/realmedia/realhash.c: - * gst/realmedia/realhash.h: - * gst/realmedia/realmedia.c: - * gst/realmedia/rtspreal.c: - * gst/realmedia/rtspreal.h: - realmedia: remove RealServer RTSP extension, RDT handling and PNM source - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6091> - -2024-02-06 18:09:02 +0000 Tim-Philipp Müller <tim@centricular.com> - * meson.build: - Back to development - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6066> + docs: port plugins to explicit sources + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8273> -=== release 1.23.1 === - -2024-02-06 16:37:19 +0000 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.23.1 - -2024-01-28 11:15:01 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-01-10 08:58:11 +0100 Edward Hervey <edward@centricular.com> + * gst/asfdemux/gstasfdemux.c: + * gst/realmedia/rademux.c: * meson.build: - meson: bump Meson requirement to >= 1.1 for all modules - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6002> + ugly: Add more warning flags + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> -2023-11-02 00:03:28 +0900 Seungha Yang <seungha@centricular.com> +2025-01-10 09:10:00 +0100 Edward Hervey <edward@centricular.com> - * meson.build: - meson: Fix MSVC build with GST_DISABLE_GST_DEBUG - MSVC does not understand Wno-unused - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585> + * ext/mpeg2dec/gstmpeg2dec.c: + mpeg2dec: Add missing fallthrough statements + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> -2022-04-06 12:56:30 +0100 Tim-Philipp Müller <tim@centricular.com> +2024-12-18 13:18:32 -0300 Thibault Saunier <tsaunier@igalia.com> - * meson.build: - meson: Bump GLib requirement to >= 2.64 - This includes fixes to make GstBus watches non-racy. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2126> + * docs/meson.build: + doc: Handle gst_dep.get_variable('libexecdir') failure + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178> -2023-09-13 10:12:44 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> +2024-12-18 12:27:30 -0300 Thibault Saunier <tsaunier@igalia.com> - * ext/x264/meson.build: - x264: Check that minimum version is met - Since the addition of monochrome encoding support, we now depends on build 156. - No version check was happening so far. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5325> + * docs/meson.build: + doc: Allow updating the plugins cache for all modules even if hotdoc is not present + This was possible for some modules but not all, for no good reason. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178> -2023-06-08 14:21:07 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> +2021-03-05 19:00:56 +0100 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst_plugins_cache.json: + * docs/meson.build: * ext/x264/gstx264enc.c: - * tests/check/elements/x264enc.c: - x264enc: Add monochrome 8bit support - This is mapped to GStreamer GRAY8 format. This allow producing files with - the chroma_format_idc 0 (monochrome). This is only availbable to high profile. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4812> - -2023-07-07 10:08:21 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Check for integer overflow when calculation audio packet size - Fixes ZDI-CAN-21444 - https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2782 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5072> - -2023-07-07 10:08:03 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Use GST_LOG_OBJECT instead of GST_LOG - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5072> - -2023-07-07 10:00:19 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Check that enough SIPR audio data is available when copying - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5072> - -2023-07-07 09:59:20 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Check for integer overflows when calculating the size of SIPR audio buffers - Fixes ZDI-CAN-21443 - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2782 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5072> - -2023-07-07 09:59:04 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Use GST_LOG_OBJECT instead of GST_LOG - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5072> - -2023-07-05 18:46:25 -0600 Olivier Crête <olivier.crete@collabora.com> - - * scripts/gen-changelog.py: - gst-omx: Retire the whole package - The OpenMAX standard is long dead and even the Raspberry Pi OS - no longer supports it. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4976> - -2023-07-12 09:27:22 +0530 Nirbheek Chauhan <nirbheek@centricular.com> - - * tests/check/meson.build: - meson: Always use forward slashes in defines with paths - Fixes the following build failure on MSYS2: - ``` - ../subprojects/gstreamer/tests/check/elements/filesrc.c: In function 'test_seeking': - ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: error: incomplete universal character name \U - 107 | g_object_set (G_OBJECT (src), "location", TESTFILE, NULL); - | ^ - ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\A' - ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g' - ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\s' - ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g' - ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\c' - ``` - Due to: `-DTESTFILE=\"C:\\Users\\Administrator\...` - https://gitlab.freedesktop.org/nirbheek/gstreamer/-/jobs/45317733 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5018> - -2023-03-07 14:05:54 +0100 Stéphane Cerveau <scerveau@igalia.com> - - * tests/meson.build: - gstreamer-full: add full static support - Allow a project to use gstreamer-full as a static library - and link to create a binary without dependencies. - Introduce the option 'gst-full-target-type' to - select the build type, dynamic(default) or static. - In gstreamer-full/static build configuration gstreamer (gst.c) - needs the symbol gst_init_static_plugins which is defined - in gstreamer-full. - All the tests and examples are linking with gstreamer but the - symbol gst_init_static_plugins is only defined in the gstreamer-full - library. gstreamer-full can not be built first as it needs to know what plugins - will be built. - One option would be to build all the examples and tests after - gstreamer-full as the tools. - Disable tools build in subprojects too as it will be built at the end of - build process. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4128> - -2023-05-17 22:58:46 +0200 Ruben Gonzalez <rgonzalez@fluendo.com> - - * README.md: - README.md: fix current version - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4662> + * ext/x264/gstx264enc.h: + x264enc: expose nal-hrd property + It can be used to force true CBR, and will cause the encoder + to output null padding packets. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/908> -2023-05-10 08:57:40 +0200 Edward Hervey <edward@centricular.com> +2024-11-15 11:46:14 -0300 Thibault Saunier <tsaunier@igalia.com> - * ext/mpeg2dec/gstmpeg2dec.c: - mpeg2dec: Fix conflicting type declaration - It was always a GstFlowReturn - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4588> - -2023-04-28 16:06:24 +0100 Tim-Philipp Müller <tim@centricular.com> - - * REQUIREMENTS: - * docs/gst_plugins_cache.json: - * ext/amrnb/GstAmrnbEnc.prs: - * ext/amrnb/README: - * ext/amrnb/amrnb.c: - * ext/amrnb/amrnbdec.c: - * ext/amrnb/amrnbdec.h: - * ext/amrnb/amrnbenc.c: - * ext/amrnb/amrnbenc.h: - * ext/amrnb/meson.build: - * ext/amrwbdec/README: - * ext/amrwbdec/amrwb.c: - * ext/amrwbdec/amrwbdec.c: - * ext/amrwbdec/amrwbdec.h: - * ext/amrwbdec/meson.build: - * ext/meson.build: - * meson_options.txt: - * tests/check/elements/amrnbenc.c: - * tests/check/gst-plugins-ugly.supp: - * tests/check/meson.build: - amrnb, amrwbdec: move AMR-NB and AMR-WB plugins to -good - Fedora ships these libraries as part of the main distribution now, - and they are decades old anyway so don't implement any of the newer - features. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4512> + * meson.build: + meson: Bump minimum version to 1.3 + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4025 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7899> -2023-03-19 15:35:29 -0300 Thibault Saunier <tsaunier@igalia.com> +2024-11-03 17:30:40 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/meson.build: - doc: Avoid shelling out to hotdoc to generate plugins config files - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4479> + meson: bail out earlier in docs subdir if docs are disabled + The gst_dep.get_variable('libexecdir') may fail in some scenarios + (e.g. building a module alone inside an uninstalled devenv) and + it shouldn't really be reached in the first place if docs are + disabled via options. + Also to avoid confusing meson messages when cross-compiling or + doing a static build. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7818> -2023-04-11 11:50:57 -0400 Arun Raghavan <arun@asymptotic.io> +2024-11-03 17:37:09 +0000 Tim-Philipp Müller <tim@centricular.com> - * ext/x264/gstx264enc.c: - x264enc: Check more video info fields to decide whether to reconfigure encoder - The encoder is also initialised using interlace mode, colorimetry, chroma-site - and multiview mode, so let's make sure we only skip reinitialising the encoder - in set_format() if none of those have changed. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4395> + * po/es.po: + * po/hr.po: + * po/ro.po: + gst-plugins-ugly: update translations + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7819> -2023-03-17 16:32:45 +0200 Sebastian Dröge <sebastian@centricular.com> +2024-10-16 08:22:53 -0300 Eli Mallon <eli@aquareum.tv> - * tests/check/elements/x264enc.c: - plugins: Fix various trivial clang compiler warnings - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4210> + * ext/x264/gstx264enc.h: + gstx264enc: fix for static builds on windows + Fixes #3911 + Co-authored-by: L. E. Segovia <amy@centricular.com> + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7672> -2023-03-15 18:53:09 +0000 Tim-Philipp Müller <tim@centricular.com> +2024-08-09 10:41:57 +0300 Sebastian Dröge <sebastian@centricular.com> - * gst/asfdemux/gstasfdemux.c: - gst-plugins-ugly: re-indent with GNU indent 2.2.12 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4182> + * ext/x264/gstx264enc.c: + common: Stop using GQuark-based GstStructure name API + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432> -2023-01-08 17:15:12 +0000 Tim-Philipp Müller <tim@centricular.com> +2024-07-22 09:29:52 +0200 Sebastian Gross <sgross@emlix.com> - * ext/mpeg2dec/gstmpeg2dec.c: - mpeg2dec: drop use of GSlice - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695> + * gst/asfdemux/gstasfdemux.c: + asfdemux: Be more lenient towards malformed header + VLC counts METADATA as 1 even if the specification states you must not. + This leads to asfdemux failing since there are no bytes left when asfdemux + tries to extract the "last" header. + Do not fail hard in this case and try to proceed when everything else went + fine. + So at least gst-discoverer will see what's in the file. + Closes #3684 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7209> -2023-01-08 17:15:00 +0000 Tim-Philipp Müller <tim@centricular.com> +2020-04-08 10:40:42 -0400 Xavier Claessens <xavier.claessens@collabora.com> - * ext/x264/gstx264enc.c: - x264enc: drop use of GSlice - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695> + * meson.build: + * meson_options.txt: + build: Add missing common options that are yielding in subprojects + - Align `glib_debug`, `glib_assert` and `glib_checks` options with GLib, + otherwise glib subproject won't inherit their value. Previous names + and values are preserved using Meson's deprecation mechanism. + - Add `extra-checks` and `benchmarks` options in the main project so it + can be inherited in GStreamer subprojects. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1165> -2023-01-23 23:04:53 +0000 Tim-Philipp Müller <tim@centricular.com> +2024-03-05 12:58:57 +0000 Tim-Philipp Müller <tim@centricular.com> + * README.md: + * RELEASE: * meson.build: Back to development - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3775> + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6261> -=== release 1.22.0 === +=== release 1.24.0 ===
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/NEWS -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/NEWS
Changed
@@ -1,895 +1,922 @@ -GStreamer 1.24 Release Notes +GStreamer 1.26 Release Notes -GStreamer 1.24.0 was originally released on 4 March 2024. +GStreamer 1.26.0 was originally released on 11 March 2025. -The latest bug-fix release in the stable 1.24 series is 1.24.10 and was released on 06 January 2025. +See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of this document. -See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document. - -Last updated: Tuesday 06 January 2025, 19:30 UTC (log) +Last updated: Tuesday 11 March 2025, 20:00 UTC (log) ## Introduction The GStreamer team is proud to announce a new major feature release in the stable 1.x API series of your favourite cross-platform multimedia framework! -As always, this release is again packed with many new features, bug fixes and other improvements. +As always, this release is again packed with many new features, bug fixes, and other improvements. ## Highlights -- New Discourse forum and Matrix chat space -- New Analytics and Machine Learning abstractions and elements -- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer -- The va plugin is now preferred over gst-vaapi and has higher ranks -- GstMeta serialization/deserialization and other GstMeta improvements -- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data -- New unixfd plugin for efficient 1:N inter-process communication on Linux -- cudaipc source and sink for zero-copy CUDA memory sharing between processes -- New intersink and intersrc elements for 1:N pipeline decoupling within the same process -- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements -- DRM Modifier Support for dmabufs on Linux -- OpenGL, Vulkan and CUDA integration enhancements -- Vulkan H.264 and H.265 video decoders -- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders -- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink -- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams -- WHIP server source and client sink, and a WHEP source -- Precision Time Protocol (PTP) clock support for Windows and other additions -- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements -- New W3C Media Source Extensions library -- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements -- Translation support for awstranscriber -- Bayer 10/12/14/16-bit depth support -- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features -- Capture source and sink for AJA capture and playout cards -- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder -- New uvcsink element for exporting streams as UVC camera -- DirectWrite text rendering plugin for windows -- Direct3D12-based video decoding, conversion, composition, and rendering -- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support -- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc -- GStreamer C# bindings have been updated -- Rust bindings improvements and many new and improved Rust plugins -- Rust plugins now shipped in packages for all major platforms including Android and iOS +- H.266 Versatile Video Coding (VVC) codec support +- Low Complexity Enhancement Video Coding (LCEVC) support +- Closed captions: H.264/H.265 extractor/inserter, cea708overlay, cea708mux, tttocea708 and more +- New hlscmafsink, hlssink3, and hlsmultivariantsink; HLS/DASH client and dashsink improvements +- New AWS and Speechmatics transcription, translation and TTS services elements, plus translationbin +- Splitmux lazy loading and dynamic fragment addition support +- Matroska: H.266 video and rotation tag support, defined latency muxing +- MPEG-TS: support for H.266, JPEG XS, AV1, VP9 codecs and SMPTE ST-2038 and ID3 meta; mpegtslivesrc +- ISO MP4: support for H.266, Hap, Lagarith lossless codecs; raw video support; rotation tags +- SMPTE 2038 ancillary data streams support +- JPEG XS image codec support +- Analytics: New TensorMeta; N-to-N relationships; Mtd to carry segmentation masks +- ONVIF metadata extractor and conversion to/from relation metas +- New originalbuffer element that can restore buffers again after transformation steps for analytics +- Improved Python bindings for analytics API +- Lots of Vulkan integration and Vulkan Video decoder/encoder improvements +- OpenGL integration improvements, esp. in glcolorconvert, gldownload, glupload +- Qt5/Qt6 QML GL sinks now support direct DMABuf import from hardware decoders +- CUDA: New compositor, Jetson NVMM memory support, stream-ordered allocator +- NVCODEC AV1 video encoder element, and ndsdewarp +- New Direct3D12 integration support library +- New d3d12swapchainsink and d3d12deinterlace elements and D3D12 sink/source for zero-copy IPC +- Decklink HDR support (PQ + HLG) and frame scheduling enhancements +- AJA capture source clock handling and signal loss recovery improvements +- RTP and RTSP: New rtpbin sync modes, client-side MIKEY support in rtspsrc +- New Rust rtpbin2, rtprecv, rtpsend, and many new Rust RTP payloaders and depayloaders +- webrtcbin support for basic rollbacks and other improvements +- webrtcsink: support for more encoders, SDP munging, and a built-in web/signalling server +- webrtcsrc/sink: support for uncompressed audio/video and NTP & PTP clock signalling and synchronization +- rtmp2: server authentication improvements incl. Limelight CDN (llnw) authentication +- New Microsoft WebView2 based web browser source element +- The GTK3 plugin has gained support for OpenGL/WGL on Windows +- Many GTK4 paintable sink improvements +- GstPlay: id-based stream selection and message API improvements +- Real-time pipeline visualization in a browser using a new dots tracer and viewer +- New tracers for tracking memory usage, pad push timings, and buffer flow as pcap files +- VA hardware-acclerated H.266/VVC decoder, VP8 and JPEG encoders, VP9/VP8 alpha decodebins +- Video4Linux2 elements support DMA_DRM caps negotiation now +- V4L2 stateless decoders implement inter-frame resolution changes for AV1 and VP9 +- Editing services: support for reverse playback and audio channel reordering +- New QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and WebTransport +- Apple AAC audio encoder and multi-channel support for the Apple audio decoders +- cerbero: Python bindings and introspection support; improved Windows installer based on WiX5 - Lots of new plugins, features, performance improvements and bug fixes ## Major new features and changes -### Discourse forum and Matrix chat space +### H.266 Versatile Video Coding (VVC) codec support -- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat. +- The H.266 / VVC video codec is a successor to H.265 / HEVC and is standardised in ISO/IEC 23090-3. -- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well. +- A new h266parse element was added, along with parsing API, typefinding support and some codec utility functions in the + gst-plugins-base utility library. -- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to - also send announcements to the mailing list for the time being. +- A H.266 decoder base class for hardware-accelerated decoders was added and used to implement a VA-API-based + hardware-accelerated H.266 decoder. -### Playbin3, decodebin3 now stable and default +- The FFmpeg H.266 decoder is exposed now (from FFmpeg 7.0 onwards). -- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3 - and urisourcebin), are now the recommended playback components. +- H.266 / VVC muxing and demuxing support was implemented for MP4, Matroska and MPEG-TS containers. -- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries. - Application developers are strongly recommended to switch to using those components instead of the legacy playbin and - (uri)decodebin. +- A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library. -Improvements in this cycle: +### JPEG XS image codec support -- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream. +- JPEG XS is a visually lossless, low-latency, intra-only video codec for video production workflows, standardised in ISO/IEC + 21122. -- Many fixes for more complex gapless and instant-switching scenarios +- JPEG XS encoder and decoder elements based on the SVT JPEG XS library were added, including support for muxing JPEG XS into + MPEG-TS and demuxing it. Both interlaced and progressive modes are supported. -- Lower latency for live pipelines +### Low Complexity Enhancement Video Coding (LCEVC) support -- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS) +- LCEVC is a codec that provides an enhancement layer on top of another codec such as H.264 for example. It is standardised as + MPEG-5 Part 2. -- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also - partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only - do timing detection and optional seeking). +- LCEVC encoder and decoder elements based on V-Nova’s SDK libraries were added, including support in h264parse for extracting + the enhancement layer from H.264 and decoding it via a lcevch264decodebin element. -### GstMeta serialization/deserialization and other GstMeta improvements +### Closed captions improvements -- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc - plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and - GstReferenceTimestampMeta. +- New H.264 and H.265 closed captions extractor and inserter elements. -- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform - functions are not needed. + - These extractor elements don’t actually extract captions from the bitstream, but rely on parser elements to do that and + add them to buffers in form of caption metas. The problem is that streams might contain B-frames, in which case the + captions in the bitstream will not be in presentation order and extracting them requires frame-reordering in the same + way that a decoder would do. These new elements will do exactly that and allow you to extract captions in presentation + order without having to decode the stream. -- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to - the pool. + - The inserter elements do something similar and insert caption SEIs into the H.264 or H.265 bitstream, taking into + account frame ordering. -- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility. + - This is useful if one wants to extract, process and re-insert captions into an existing video bitstream without decoding + and re-encoding it (in which case the decoder and encoder would handle the caption reordering). -### New unixfd plugin for efficient 1:N inter-process communication on Linux +- cdpserviceinject: New element for injecting a CDP service descriptor into closed caption CDP packets -- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf) - from one sink to multiple source elements in other processes on Linux. +- cea708overlay: New element for overlaying CEA608 / CEA708 closed captions over video streams. -- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly - into memory that can be transfered to other processes without copying. +- The cc708overlay element has been deprecated in favour of the cea708overlay element from the Rust plugins set. -### New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data +- cea608mux gained a "force-live" property to make it always in live mode and aggregate on timeout regardless of whether any + live sources are linked upstream. -- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta. - The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard - ancillary data. See GstAncillaryMeta for details. +- cea708mux: New element that allows to mux multiple CEA708 services into a single stream. -- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or - gst_buffer_iterate_ancillary_meta(). +- cccombiner has two new properties: -- Supported by the newly added AJA sink and source elements + - "input-meta-processing" controls how input closed caption metas are processed and can be used to e.g. discard closed + captions from the input pad if the matching video buffer already has closed caption on it. -### DSD audio support + - "schedule-timeout" to support timing out captions without EOS -- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new - GstDsdInfo and GstDsdFormat API. +- tttocea708: New element for converting timed-text to CEA708 closed captions -- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and - the gst-libav plugin to enable FFmpeg-based DSD elements and functionality. +- Miscellaneous improvements and spec compliance fixes -### Analytics and Machine Learning +### Speech to Text, Translation and Speech Synthesis -- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number - of observations from a data analysis process, for example from machine learning. It also contains a matrix of the - relationship between those observations. +- awstranscriber2, awstranslate: New elements around the AWS transcription and translation services. -- Three types of metadata are already defined in the library: object detection, classification and tracking. +- polly: New element around the AWS text-to-speech polly services -- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection - and classification metadata types. +- speechmatics: New transcriber / speech-to-text and translation element -- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual - inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates - GstAnalyticsRelationMeta. +- translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions. -- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image” - type and the format is something that GStreamer knows. +### HLS DASH adaptive streaming improvements -- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with - other machine learning acceleration frameworks. +- The adaptivedemux2 client implementation gained support for file:// URIs and as such the ability to play HLS and DASH from + local files. It also no longer sends spurious flush events when it loses sync in live streams, as that is unexpected and + will be handled poorly in non-playback scenarios. Lastly, support for HTTP request retries was added via the "max-retries" + property, along with some exponential backoff logic which can be fine-tuned via properties. -### Qt5 + Qt6 QML integration improvements +- dashsink has received period duration fixes for dynamic MPDs and some memory leak fixes. -- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a - prior glcolorconvert. +- hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments. -- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support - for directly consuming BGRA and YV12 video frames without a prior glcolorconvert. +- hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants -- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink. +### splitmuxsrc, splitmuxsink: lazy loading and dynamic fragment addition -### DRM Modifier Support for dmabufs on Linux +- splitmuxsrc and splitmuxsink were originally designed to handle a small number of large file fragments, e.g. for situations + where one doesn’t want to exceed a certain file size when recording to legacy file systems. It was also designed for playing + back a static set of file fragments that have been created by an earlier recording session and no longer changes. Over time + people have found more applications and use cases for the splitmux elements and have been deploying them in different + scenarios, exposing the limits of the current implementation. -The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used -extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and -also to exchange buffers with other subsystems such as Linux Media. +- In this release, splitmuxsink and splitmuxsrc gained new abilities aimed at improving support for recordings with a large + number of files, and for adding fragments on the fly to allow playback of ongoing recordings: -In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL -integration, Wayland renderers, etc. + - You can now add fragments directly to splitmuxsrc and provide the offset and duration in the stream: -GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components, -however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant -that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”. + - Providing offset and duration means splitmuxsrc doesn’t need to scan the file to measure it and calculate it. That + makes for much faster startup. -With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated -between components. + - The new "add-fragment" signal can be used to add files to the set dynamically - allowing to be playing an ongoing + recording and adding files to the playback set as they are finished. -This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g. -drm-format=(string)NV12:0x0x0100000000000001. + - splitmuxsrc no longer keeps all files open, but instead only keeps 100 files open by default, configurable with the + "num-open-fragments" property. -See the GStreamer DMA buffers design documentation for more details. + - There is a new "num-lookahead" property on splitmuxsrc to trigger (re)opening files a certain distance ahead of the play + position. -This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected -to land in one of the next minor releases. + - splitmuxsink will report fragment offset and fragment duration via a message on the bus when closing a file. This + information can then be used to add the new fragment to a splitmuxsrc. -New API has been added for easy handling of these new caps: +### MPEG-TS container format improvements -- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with - gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info() +- The MPEG-TS muxer and demuxer gained support for -- GST_VIDEO_DMA_DRM_CAPS_MAKE + - H.266 / VVC video muxing and demuxing + - JPEG-XS video muxing and demuxing + - VP9 video muxing and demuxing (using a custom mapping) + - AV1 video muxing and demuxing (using a custom mapping, since the work-in-progress specification effort doesn’t seem to + be going anywhere anytime soon) + - SMPTE ST-2038 ancillary metadata streams (see section above) -- GST_VIDEO_FORMAT_DMA_DRM +- mpegtsmux gained support for muxing ID3 metadata into the TS stream, as well as SMPTE 302M audio. -### OpenGL integration enhancements +- It’s also possible to disable sending SCTE-35 null (heartbeat) packets now in mpegtsmux by setting the + "scte-35-null-interval" to 0. -- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some - necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API - first. +- tsparse now handles 192-byte M2TS packets -- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with - explicit modifiers. +- mpegtslivesrc: New source element that can wrap a live MPEG-TS source (e.g. SRT or UDP source) and provides a clock based on + the PCR. -- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing - filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on - GstVideoAggregator. +### Matroska container format improvements -- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless. +- H.266 / VVC video muxing and demuxing support -- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API +- matroskamux -- Add support for more video formats: + - was ported to the GstAggregator base class, ensuring defined-latency muxing in live streaming pipelines. + - gained rotation tag support - - A420 8/10/12/16-bit. - - A422 8/10/12/16-bit. - - A444 8/10/12/16-bit. - - I420 10/12 bit. - - RBGA. +- matroskademux now also supports seeks with a stop position in push mode. -- Add support for tiled video formats +### ISO MP4 container format improvements - - NV12_16L32S (Mediatek format) - - NV12_4L4 (Verisilicon Hantro format) +- can mux and demux H.266 / VVC in MP4 now -- glcolorconvert now has API for retrieving shader strings for: +- can demux Hap video now, as well as Lagarith lossless video and ISO/IEC 23003-5 raw PCM audio. - - swizzling (reordering components). - - YUV->RGB conversion. - - RGB->YUV conversion. +- qtdemux handles keyunit-only trick mode also in push mode now -- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel - ordering. +- support for ISO/IEC 23001-17 raw video in MP4 in qtdemux and isomp4mux. -- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor. +- support for rotation tags in the muxers and demuxers was improved to correctly handle per-media and per-track rotations, and + support for flips was added as well. -- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for - reducing the potential synchronisation delay when reusing OpenGL memory backed buffers. +SMPTE 2038 ancillary data streams -### Vulkan integration enhancements +- SMPTE 2038 (pdf) is a generic system to put VBI-style ancillary data into an MPEG-TS container. This could include all kinds + of metadata such as scoreboard data or game clocks, and of course also closed captions, in this case in form of a distinct + stream completely separate from any video bitstream. -- Add support for the Vulkan H.264 and H.265 decoders. +- A number of new elements in the GStreamer Rust closedcaption plugin add support for this, along with mappings for it in the + MPEG-TS muxer and demuxer. The new elements are: -- Add support for timeline semaphores. + - st2038ancdemux: splits SMPTE ST-2038 ancillary metadata (as received from tsdemux) into separate streams per DID/SDID + and line/horizontal_offset. Will add a sometimes pad with details for each ancillary stream. Also has an always source + pad that just outputs all ancillary streams for easy forwarding or remuxing, in case none of the ancillary streams need + to be modified or dropped. -- Optionally use newer Vulkan functions for format selection. + - st2038ancmux: muxes SMPTE ST-2038 ancillary metadata streams into a single stream for muxing into MPEG-TS with + mpegtsmux. Combines ancillary data on the same line if needed, as is required for MPEG-TS muxing. Can accept individual + ancillary metadata streams as inputs and/or the combined stream from st2038ancdemux. -- Add support for GPU-assisted validation. + If the video framerate is known, it can be signalled to the ancillary data muxer via the output caps by adding a + capsfilter behind it, with e.g. meta/x-st-2038,framerate=30/1. -- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell - interface is being removed from compositors. + This allows the muxer to bundle all packets belonging to the same frame (with the same timestamp), but that is not + required. In case there are multiple streams with the same DID/SDID that have an ST-2038 packet for the same frame, it + will prioritise the one from more recently created request pads over those from earlier created request pads (which + might contain a combined stream for example if that’s fed first). -### CUDA / NVCODEC integration and feature additions + - st2038anctocc: extracts closed captions (CEA-608 and/or CEA-708) from SMPTE ST-2038 ancillary metadata streams and + outputs them on the respective sometimes source pad (src_cea608 or src_cea708). The data is output as a closed caption + stream with caps closedcaption/x-cea-608,format=s334-1a or closedcaption/x-cea-708,format=cdp for further processing by + other GStreamer closed caption processing elements. + + - cctost2038anc: takes closed captions (CEA-608 and/or CEA-708) as produced by other GStreamer closed caption processing + elements and converts them into SMPTE ST-2038 ancillary data that can be fed to st2038ancmux and then to mpegtsmux for + splicing/muxing into an MPEG-TS container. The line-number and horizontal-offset properties should be set to the desired + line number and horizontal offset. -- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes +### Analytics -- New nvJPEG library based nvjpegenc JPEG encoder element +- Added a GstTensorMeta: This meta is designed to carry tensors from the inference element to the model-specific tensor + decoder. This also includes a basic GstTensor class containing a single tensor. The actual tensor data is a GstBuffer. -- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec, - nvh265dec, nvvp8dec, and nvvp9dec, respectively. +- Add N_TO_N relationship to GstAnalyticsRelationMeta: This makes it possible to describe N-to-N relationships. For example, + between classes and regions in an instance segmentation. -- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption - inserting. +- Add a new analytics Mtd to carry segmentation masks: Being part of the GstAnalyticsMeta, it can be in relationship with the + other Mtd, such as the classification and object detection bounding boxes. -- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements +- onvifmetadataextractor: New element that can extract ONVIF metadata from GstMetas into a separate stream -- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not - execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map - flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed - with the GstCudaMemory’s associated CUDA stream. +- originalbuffer: New plugin with originalbuffersave / originalbufferrestore elements that allow saving an original buffer, + modifying it for analytics, and then restoring the original buffer content while keeping any additional metadata that was + added. -### RTP stack improvements +- relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata. -- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element. - This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain - properties at the end of an RTSP media sub-pipeline. +- Improved Python bindings for a more Pythonic interface when iterating over GstRelationMeta’s mtd -- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic - timeout of sources from which no data has been received for a while. +### Vulkan integration enhancements -- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to - bring it in line with the VP8 payloader. +- Vulkan Integration Improvements: -- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new - properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be - useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access - to the network of the PTP clock provider. The two new properties are: + - Memory Management: Non-coherent memory is now invalidated when mapping for read in vkmemory. - - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the - media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media - clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s - Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is - enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock, - which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps. - There is also no start-up delay, because there’s no clock sync that needs to be established first. + - Color Space Selection: The vkswapper component now chooses the correct color space based on the format. - - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp - calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock - for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of - a clock reference meta. + - Vulkan Plugin Compatibility: Support added for cases where glslc is not available for building Vulkan plugins, along + with GLSL compiler support for glslang. -- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header - extensions. + - Fullscreen Quad Updates: Improved support for setting NULL input/output buffers and added checks for unset video info. -- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but - instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element - in lieu of a jitter buffer. + - Vulkan Buffer Pool Enhancements: Buffer pool access flags and usage configurations have been refined, offering better + performance for video decoding and encoding. -- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer. - Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets - pushed before an output buffer is produced and checks all RTP input buffers for header extensions. +- Decoder/Encoder Improvements: - - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay, - rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay, - rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay. + - H264 Decoder: Enhancements to the vkh264dec component for better support of extended profiles and interlaced content + decoding. -### WebRTC improvements + - H265 Decoder fixes: vkh265dec updated for proper handling of VPS/SPS on demand, along with fixes to PicOrderCntVal. -- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22. + - Encoder Performance: Various internal optimizations to the Vulkan encoder, including removal of redundant references and + better management of the DPB view. -- Advertise the local side of an end-of-candidates with an empty candidate string. +- Vulkan Instance and Device Management: -- Add the number of Data Channels opened and closed to webrtcbin’s statistics. + - Device Handling: Added new utility functions for managing Vulkan device instances, including + gst_vulkan_instance_create_device_with_index and gst_vulkan_ensure_element_device. -- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as - well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details. + - Device Context Management: Updates to manage Vulkan context handling more effectively within the application. -### Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support +### OpenGL integration enhancements -- hlsdemux2 now supports Low-Latency HLS (LL-HLS) +- glcolorconvert gained support for more formats and conversions: -- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage. + - Planar YUV <-> planar YUV conversions + - Converting to and from v210 in general + - v210 <-> planar YUV + - UYVY and YUY2 <-> planar YUV + - v210 <-> UYVY and YUY2 + - Support for Y444_10, Y444_16, I422_10, I422_12 pixel formats (both little endian and big endian variants) -- hlsdemux2 handles fallback variant URLs. +- gldownload can import DMABufs from a downstream pool -- hlsdemux2 is more responsive and accurate when handling seeks. +- glupload gained a DRM raw uploader -- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that - will be used. +### Qt5 + Qt6 QML integration improvements -- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek” - which allows playback to start immediately from the requested position without any previous download. +- qmlglsink, qml6glsink now support external-oes textures, which allows direct DMABuf import from hardware decoders. Both also + support NV12 as an input format now. -- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge. +- qmlglsink gained support for RGB16/BGR16 as input format -- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec - strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD. +- qmlgl6src can now use a downstream buffer pool when available -- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use - the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3. +- qmlgloverlay make the depth/stencil buffer optional, which reduces memory bandwidth on Windows. -### W3C Media Source Extensions library +### CUDA / NVCODEC integration and feature additions -- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added. +- Added AV1 video encoder nvav1enc -- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs - without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript - bindings that match the Media Source API so their existing code can integrate with this library. +- CUDA mode nvcuda{CODEC}enc encode elements are renamed to nv{CODEC}enc and old nv{CODEC}enc implementations are removed -### Closed Caption handling improvements +- Added support for CUDA Stream-Ordered allocator -- ccconverter supports converting between the two CEA-608 fields. +- Added cudacompositor element which is equivalent to the software compositor element but uses CUDA -- New cea608mux element for muxing multiple CEA-608 streams together. +- Added support for CUDA kernel precompile at plugin build time using nvcc and NVCODEC plugin can cache/reuse compiled CUDA + CUBIN/PTX -- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section - below for more details. +- cudaupload and cudadownload elements can support Jetson platform’s NVMM memory in addition to already supported desktop NVMM + memory -### Precision Time Protocol (PTP) clock improvements +- Introduced nvdswrapper plugin which uses NVIDIA DeepStream SDK APIs with gst-cuda in an integrated way: -- Many fixes and compatibility/interoperability improvements. + - nvdsdewarp: NVIDIA NVWarp360 API based dewarping element -- Better support for running on devices with multiple network interfaces. +### GStreamer Direct3D12 integration -- Allow sync to master clock on same host. +- New gst-d3d12 public library. The following elements are integrated with the gst-d3d12 library: -- PTP clock support is now also available on Windows. + - NVIDIA NVCODEC decoders and encoders can support D3D12 memory + - Intel QSV encoders can accept D3D12 memory + - All elements in dwrite plugin can support D3D12 memory -- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android, - Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is - Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed. - Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version - currently in Debian oldstable. On Windows, Rust 1.54 is needed at least. +- The d3d12 library and plugin can be built with MinGW toolchain now (in addition to MSVC) -- New ptp-helper Meson build option so PTP support can be disabled or required. +- D3D12 video decoders and d3d12videosink are promoted to have higher rank than D3D11 elements -- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP - subsystem, including TTL configuration. +- Added support for multiple mip-levels D3D12 textures: -### Bayer 10/12/14/16-bit depth support + - Newly added d3d12mipmapping element can generate D3D12 textures with multiple mip-levels -- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths + - max-mip-levels property is added to d3d12convert, d3d12videosink, and d3d12swapchainsink element, so that the elements + can generate an intermediate texture with multiple mip-levels in order to reduce downscale aliasing artifacts -- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths +- d3d12convert, d3d12videosink, and d3d12swapchainsink support the GstColorBalanceInterface to offer color balancing functions + such as hue, saturation, and brightness adjustment -- imagefreeze gained bayer support as well +- Added d3d12ipcsink and d3d12ipcsrc elements for zero-copy GPU memory sharing between processes -### MPEG-TS improvements +- d3d12upload and d3d12download support direct GPU memory copy between D3D12 and D3D12 resources -- mpegtsdemux gained support for - - segment seeking for seamless non-flushing looping, and - - synchronous KLV -- mpegtsmux now - - allows attaching PCR to non-PES streams - - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the - muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types. - - allows writing arbitrary Opus channel mapping families and up to 255 channels - - separate handling of DVB and ATSC AC3 descriptors +- Added d3d12swapchainsink element to support DirectComposition or UWP/WinUI3 SwapChainPanel based applications -## New elements and plugins +- Added d3d12deinterlace element which performs deinterlacing using a GPU vendor agnostic compute shader. -- analyticsoverlay visualises object-detection metas on a video stream. +- d3d12screencapturesrc element can capture HDR enabled desktop correctly in DDA mode (DXGI Desktop Duplication API) -- autovideoflip and autodeinterlace are two new auto elements. +### Capture and playout cards support -- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC - ancillary data. +- ajasrc: Improve clock handling, frame counting, capture timestamping, and signal loss recovery -- New cea608mux element for muxing multiple CEA-608 streams together. +- The Blackmagic Decklink plugin gained support -- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8 - frame parameters into human readable JSON data, which is useful for debugging and testing purposes. + - for HDR output and input (PQ + HLG static metadata) -- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec. + - all modes of Quad HDMI recorder -- New onnxinference element to run ONNX inference models on video buffers. + - scheduling frames before they need to be displayed in decklinkvideosink -- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element. - This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server. +### RTP and RTSP stack improvements -- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink +- rtspsrc now supports client-managed MIKEY key management. Some RTSP servers (e.g. Axis cameras) expect the client to propose + the encryption key(s) to be used for SRTP / SRTCP. This is required to allow re-keying. This mode can be enabled by enabling + the "client-managed-mikey-mode" property and comes with a number of new signals ("request-rtp-key" and "request-rtcp-key"), + action signals ("set-mikey-parameter" and "remove-key") and properties ("hard-limit" and "soft-limit"). -- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes. +- rtpbin: Add new “never” and “ntp” RTCP sync modes -- Many exciting new Rust elements, see Rust section below. + - Never is useful for some RTSP servers that report plain garbage both via RTCP SR and RTP-Info, for example. + - NTP is useful if synchronization should only ever happen based on RTCP SR or NTP-64 RTP header extensions. -- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below). + This is part of a bigger refactoring of the synchronization / offsetting code in rtpbin, which also makes it regularly emit + the sync signal even if no new synchronisation information is available, controlled by the new "min-sync-interval" property. -- New vaav1enc element for encoding video in AV1 (See VA-API section) +- rtpjitterbuffer: add RFC7273 active status to jitterbuffer stats so applications can easily check whether RFC7273 sync is + active. -- New uvcsink element for exporting streams as UVC camera +- rtph265depay: Add "wait-for-keyframe" "request-keyframe" properties and improve request keyframe logic -## New element features and additions +- rtppassthroughpay gained the ability to regenerate RTP timestamps from buffer timestamps via the new "retimestamp-mode" + property. This is useful in a relay RTSP server if one wants to do full drift compensation and ensure that the stream coming + out of gst-rtsp-server is not drifting compared to the pipeline clock and also not compared to the RTCP NTP times. -- alphacombine supports I420_10LE now for 10-bit WebM/alpha support. +- New Rust RTP payloaders and depayloaders for AC3, AMR, JPEG, KLV, MPEG-TS (MP2T), MPEG-4 (MP4A, MP4G), Opus, PCMU (uLaw), + PCMA (aLaw), VP8, VP9. -- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some - new features: +- New rtpbin2 based on separate rtprecv and rtpsend elements + +### WebRTC improvements - - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders - - B-frame support in the H.264 encoder - - Initial support of pre-analysis and pre-encoding - - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances. +- webrtcbin improvements -- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements, - as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition - to the existing “max-bytes” property. + - Make basic rollbacks work -- autovideoconvert exposes colorspace and scaler elements for well know elements + - Add "reuse-source-pads" property: When set to FALSE, if a transceiver becomes send-only or inactive then pre-existing + source pads will receive an EOS event and no further traffic even after further renegotiation. When TRUE, pads will + simply not receive any output when the negotiated transceiver state doesn’t have incoming traffic. If renegotiated + later, the pad will receive data again. -- avtp: add AVTP Raw Video Format payload and de-payload support. + - Early CNAME support (RFC5576): Have CNAME available to the jitterbuffer before the the first RTCP SR is received, for + rapid synchronization. -- cacasink’s output driver can now be selected via the “driver” property. + - New "post-rtp-aux-sender" signal to allow for placement of an object after rtpbin, before sendbin. This is useful for + objects such as congestion control elements, that don’t want to be burdened by the synchronization requirements of + rtpsession. -- camerabin: various fixes and stability improvements + - Create and associate transceivers earlier in negotiation, and other spec compliance improvements -- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would. + - Statistics generation improvements for bundled streams -- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property. +- webrtcsink improvements: -- dashdemux2 has a new “start-bitrate” property. + - Support for more encoders: nvv4l2av1enc, vpuenc_h264 (for imx8mp), nvav1enc, av1enc, rav1enc and nvh265enc. -- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec - strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD. + - The new "define-encoder-bitrates" signal allows applications to fine-tune the bitrate allocation for individual streams + in cases where there are multiple encoders. By default the bitrate is split equally between encoders. -- deinterlace: Add support for 10/12/16-bit planar YUV formats + - A generic mechanism was implemented to forward metas over the control channel. -- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware - decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer. + - Added a mechanism for SDP munging to handle server-specific quirks. -- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new - “Timestamper” element factory type and rank. + - Can expose a built-in web server and signalling server for prototyping and debugging purposes. -- New fakevideodec element (see debugging section below). +- webrtcsink and webrtcsrc enhancements: -- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is - useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation - over time. + - Support for raw payloads, i.e. uncompressed audio and video -- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because - librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2. - If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are - always strictly increasing, inside one stream and also between the audio and video streams. + - NTP & PTP clock signalling and synchronization support (RFC 7273) -- giostreamsink: Add a property to close the stream on stop(). + - Generic data channel control mechanism for sending upstream events back to the sender (webrtcsink) -- h264parse improved its AU boundary detection. +- webrtcsrc now has support for multiple producers -- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages. +## New elements and plugins -- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just - via the insertbin API. +- Many exciting new Rust elements, see Rust section below. -- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped - on Windows and macOS and will work if there’s a user-installed JACK server/library setup. +- webview2src: new Microsoft WebView2 based web browser source element -- jpegparse now has a rank so it will be autoplugged if needed. +- h264ccextractor, h264ccinserter: H.264 closed caption extractor / inserter -- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers. +- h265ccextractor, h265ccinserter: H.265 closed caption extractor / inserter -- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE +- h266parse -- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with - “freeformat” MP3s. +- lcevch264decodebin -- msdk: +- New VA elements (see below): vah266dec, vavp8enc, vajpegenc, vavp8alphadecodebin, vavp9alphadecodebin - - DRM modifier support on Linux +- svtjpegxsdec, svtjpegxsenc: SVT JPEG XS decoder/encoder - - only expose codecs and capabilities actually supported by the platform +- Many other new elements mentioned in other sections (e.g. CUDA, NVCODEC, etc.) - - msdkvpp video post-processing: +## New element features and additions - - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping - - new compute scaling mode +- audioconvert enhancements: - - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes. + - Add possibility to reorder input channels when audioconvert has unpositionned audio channels as input. It can now use + reordering configurations to automatically position those channels via the new "input-channels-reorder" and + "input-channels-reorder-mode" properties. - - Encoders: + - Better handling of setting of the mix matrix at run time - - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI - - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames - - msdkh264enc: Added BGRx format DMABuf support - - Advertise special image formats in low power mode + - handles new GstRequestMixMatrix custom upstream event -- mxfdemux gained support for FFV1 demuxing +- audiorate: Take the tolerance into account when filling gaps; better accounting of the number of samples added or dropped. -- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel - layouts. +- av1enc: Add "timebase" property to allow configuring a specific time base, in line with what exists for vp8enc and vp9enc + already. -- The oss plugin gained a device provider for audio device discovery +- av1parse can parse annexb streams now, and typefinding support has been added for annexb streams as well. -- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2 +- The GTK3 plugin has gained support for OpenGL/WGL on Windows -- Intel Quick Sync plugin improvements: +- fdsrc has a new "is-live" property to make it act like a live source and timestamp the received data with the clock running + time. - - qsvh264enc gained more encoding options - - qsvh265dec now supports GBR decoding and HEVC RExt profiles +- imagefreeze: Add support for JPEG and PNG -- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ - video codec. +- kmssink: Extended the functionality to support buffers with DRM formats along with non-linear buffers -- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the - ristsrc receive other payload types than MPEG-TS. +- pitch now supports reverse playback -- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has - been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With - the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios. +- queue can emit the notify signal on queue level changes if the "notify-levels" property has been set. -- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling. +- qroverlay: the "pixel-size" property has been removed in favour of a new "size" property with slightly different semantics, + where the size of the square is expressed in percent of the smallest of width and height. -- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new - “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property. +- rsvgdec: Negotiate resolution with downstream and scale accordingly -- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, … +- rtmp2: server authentication improvements -- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped. + - Mimic librtmp’s behaviour and support additional connection parameters for the connect packet, which are commonly used + for authentication, via the new "extra-connect-args" property. -- switchbin: many improvements, especially for caps handling and passthrough. + - Add support for Limelight CDN (llnw) authentication -- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream - tags. +- scaletempo has gained support for a “fit-down” mode: In fit-down mode only 1.0 rates are supported, and the element will fit + audio data in buffers to their advertised duration. This is useful in speech synthesis cases, where elements such as + awspolly will generate audio data from text, and assign the duration of the input text buffers to their output buffers. + Translated or synthesised audio might be longer than the original inputs, so this makes sure the audio will be sped up to + fit the original duration, so it doesn’t go out of sync. -- timeoverlay: add buffer-count and buffer-offset time modes. +- souphttpsrc: Add the notion of "retry-backoff" and retry on 503 (service unavailable) and 500 (internal server error) http + errors. -- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604. +- taginject now modifies existing tag events of the selected scope, with the new "merge-mode" property allowing finer control. -- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not - exposed directly as property. +- timecodestamper gained a new running-time source mode that converts the buffer running time into timecodes. -- videoflip: many orientation tag handling fixes and improvements +- playbin3, uridecodebin3, parsebin -- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers. + - lots of stream-collection handling and stability/reliability fixes + - error/warning/info message now include the URI (if known) and stream-id + - missing plugin messages include the stream-id -- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just - allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons). +- videocodectestsink gained support for GBR_10LE, GRAY8 and GRAY10_LE{16,32} pixel formats -- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput. +- videoflip gained support for the Y444_16LE and Y444_16BE pixel formats -- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just - output a stand-alone WebP image for each input buffer, just like before. +- videoconvertscale: -- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support. + - Handle pixel aspect ratios with large numerators or denominators + - Explicitly handle the overlaycomposition meta caps feature, so it doesn’t get dropped unnecessarily -- x264enc gained support for 8-bit monochrome video (GRAY8). +- waylandsink prefers DMABuf over system memory now -- ximagesrc gained navigation support (mouse and keyboard events). +- x264enc has a new "nal-hrd" property to make the encoder signal HRD information, which is required for Blu-ray streams, + television broadcast and a few other specialist areas. It can also be used to force true CBR, and will cause the encoder to + output null padding packets. -- y4mdec now parses extended headers to support high bit depth video. +- zbar: add support for binary mode and getting symbols as raw bytes instead of a text string. ## Plugin and library moves -- The AMR-NB and AMR-WB plugins have been moved from -ugly to -good. +- macOS: atdec was moved from the applemedia plugin in -bad to the osxaudio plugin in -good, in order to be able to share + audio-related helper methods. ## Plugin and element removals -- The entire gst-omx package and plugin has been retired. See the OMX section below for more details. - -- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin. - -- The kate subtitle plugin has been removed. +- None in this cycle ## Miscellaneous API additions -GStreamer Core +### GStreamer Core -- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured - latency of a pipeline. +- gst_meta_api_type_set_params_aggregator() allows setting an GstAllocationMetaParamsAggregator function for metas, which has + been implemented for GstVideoMeta and is used to aggregate alignment requirements of multiple tee branches. -- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic - plugins that register features at runtime. They are now able to provide information to the user why features might not be - available. This is now used in the amfcodec, nvcodec, qsv, and va plugins. +- gst_debug_print_object() and gst_debug_print_segment() have been made public API. The can be used to easily get string + representations of various types of (mini)objects in custom log handlers. -- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject - that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in - GStreamer code that needs to be portable to e.g. Windows with MSVC. +- Added gst_aggregator_push_src_event(), so subclasses don’t just push events directly onto the source pad bypassing the base + class without giving it the chance to send out any pending serialised events that should be sent out before. -- gst_clear_context(), gst_clear_promise(), gst_clear_sample() +- GstMessage has gained APIs to generically add “details” to messages: -- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions + - gst_message_set_details() + - gst_message_get_details() + - gst_message_writable_details() + - gst_message_parse_error_writable_details() + - gst_message_parse_warning_writable_details() + - gst_message_parse_info_writable_details() This is used in uridecodebin3 to add the triggering URI to any INFO, WARNING + or ERROR messages posted on the bus, and in decodebin3 to add the stream ID to any missing plugin messages posted on the + bus. -- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in - matroskademux, qtdemux, dashdemux and dashdemux2 +- gst_util_floor_log2() returns smallest integral value not bigger than log2(v). -- New utility functions to create a stream-id without a pad for elements: +- gst_util_fraction_multiply_int64() is a 64-bit variant of gst_util_fraction_multiply(). - - gst_element_decorate_stream_id() - - gst_element_decorate_stream_id_printf_valist() - - gst_element_decorate_stream_id_printf() +#### GstIdStr replaces GQuark in structure and caps APIs -- GstQueueArray gained API for sorting and sorted insertion +- GQuarks are integer identifiers for strings that are inserted into a global hash table, allowing in theory for cheap + equality comparisons. In GStreamer they have been used to represent GstStructure names and field names. The problem is that + these strings once added to the global string table can never be freed again, which can lead to ever-increasing memory usage + for processes where such name identifiers are created based on external input or on locally-created random identifiers. -- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT - which only succeeds if the result can later be fully deserialised again. +- GstIdStr is a new data structure made to replace quarks in our APIs. It can hold a short string inline, a static string, or + a reference to a heap-allocated longer string, and allows for cheap storage of short strings and cheap comparisons. It does + not involve access to a global hash table protected by a global lock, and as most strings used in GStreamer structures are + very short, it is actually more performant than quarks in many scenarios. -- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos(). - gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their - own internal queuing. +- GQuark-using APIs in GstStructure or GstCaps have been deprecated and equivalent APIs using GstIdStr have been added + instead. For more details about this change watch Sebastian’s GStreamer Conference presentation “GQuark in GStreamer + structures - what nonsense!”. -- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual - ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures - that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped. +- Most applications and plugins will have been using the plain string-based APIs which are not affected by this change. -GstDiscoverer +#### GstVecDeque -- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo +- Moved GstQueueArray as GstVecDeque into core for use in GstBus, the ringbuffer logger and in GstBufferPool, where an overly + complicated signaling mechanism using GstAtomicQueue and GstPoll was replaced with GstVecDeque and a simple mutex/cond. -GstSDP +- GstQueueArray in libgstbase was deprecated in favour of GstVecDeque. -- Add gst_sdp_message_remove_media() +- GstAtomicQueue will be deprecated once all users in GStreamer have been moved over to GstVecDeque. -Video Library +### Audio Library -DRM Modifier Support for dmabufs on Linux +- Added gst_audio_reorder_channels_with_reorder_map() which allows reordering the samples with a pre-calculated reorder map + instead of re-calculating the reorder map every time. -See section above. +- Add top-surround-left and top-surround-right channel positions -List of Video Formats for Passthrough +- GstAudioConverter now supports more numerical types for the mix matrix, namely double, int, int64, uint, and uint64 in + addition to plain floats. -New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise -all supported formats for passthrough purposes: +### Plugins Base Utils Library -- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY -- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings. +- New AV1 caps utility functions for AV1 Codec Configuration Record codec_data handling -New Video Formats +- The GstEncodingProfile (de)serialization functions are now public -- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants: +- GstEncodingProfile gained a way to specify a factory-name when specifying caps. In some cases you want to ensure that a + specific element factory is used while requiring some specific caps, but this was not possible so far. You can now do + e.g. qtmux:video/x-prores,variant=standard|factory-name=avenc_prores_ks to ensure that the avenc_prores_ks factory is used + to produce the variant of prores video stream. - - A444_12BE, A444_12LE - - A422_12BE, A422_12LE - - A420_12BE, A420_12LE - - A444_16BE, A444_16LE - - A422_16BE, A422_16LE - - A420_16BE, A420_16LE +### Tag Library -- 8-bit A422 / A444 (YUV with alpha channel) variant: +- EXIF handling now support the CAPTURING_LIGHT_SOURCE tag - - A422 - - A444 +- Vorbis tag handling gained support for the LYRICS tag -- Planar 16-bit 4:4:4 RGB formats: +### Video Library and OpenGL Library - - GBR_16BE - - GBR_16LE +- gst_video_convert_sample(), gst_video_convert_sample_async() gained support for D3D12 conversion. -- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded - with GBR color space, such as HEVC and VP9 GBR streams for example. +- GstVideoEncoder: gst_video_encoder_release_frame() and gst_video_encoder_drop_frame() have been made available as public + API. -- Two tiled Mediatek 10-bit formats: +- Navigation: gained mouse double click event support - - MT2110T - - MT2110R +- Video element QoS handling was improved so as to not overshoot the QoS earliest time by a factor of 2. This was fixed in the + video decoder, encoder, aggregator and audiovisualizer base classes, as well as in the adaptivedemux, deinterlace, + monoscope, shapewipe, and (old) videomixer elements. -- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro) +- GstVideoConverter gained fast paths for v210 to/from I420_10 / I422_10 -## Miscellaneous performance, latency and memory optimisations +- New gst_video_dma_drm_format_from_gst_format() helper function that converts a video format into a dma drm fourcc / modifier + pair, plus gst_video_dma_drm_format_to_gst_format() which will do the reverse. -- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend. +- In the same vein gst_gl_dma_buf_transform_gst_formats_to_drm_formats() and + gst_gl_dma_buf_transform_drm_formats_to_gst_formats() have been added to the GStreamer OpenGL support library. -- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs. +- GLDisplay/EGL: Add API (gst_gl_display_egl_set_foreign()) for overriding foreign-ness of the EGLDisplay in order to control + whether GStreamer should call eglTerminate() or not. -- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides - much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it - causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming. +- Additional DMA DRM format definitions/mappings: -- As always there have been plenty of performance, latency and memory optimisations all over the place. + - NV15, NV20, NV30 + - NV12_16L32S, MT2110T, MT2110R as used on Meditek SoCs + - NV12_10LE40 + - RGB15, GRAY8, GRAY16_LE, GRAY16_BE + - plus support for big endian DRM formats and DRM vendor modifiers -## Tracing framework and debugging improvements +New Raw Video Formats -- The gst-stats tool can now be passed a custom regular expression +- Packed 4:2:2 YUV with 16 bits per channel: + - Y216_LE, Y216_BE +- Packed 4:4:4:4 YUV with alpha, with 16 bits per channel: + - Y416_LE, Y416_BE +- 10-bit grayscale, packed into 16-bit words with left padding: + - GRAY10_LE16 -- gst-debug-viewer from the devtools module has seen minor improvements and fixes +### GstPlay Library -New tracers +- Add stream-id based selection of streams to better match playbin3’s API: + - Add accessors for the stream ID and selection API based on the stream ID: + - gst_play_stream_info_get_stream_id() + - gst_play_set_audio_track_id() + - gst_play_set_video_track_id() + - gst_play_set_subtitle_track_id() + - gst_play_set_track_ids() + - Deprecate the old index-based APIs: + - gst_play_stream_info_get_index() + - gst_play_set_audio_track() + - gst_play_set_video_track() + - gst_play_set_subtitle_track() + - Remove old playbin support + - Implement the track enable API based on stream selection +- Distinguish missing plugin errors and include more details (uri, and stream-id if available) in error/warning messages: + - gst_play_message_get_uri() + - gst_play_message_get_stream_id() + - GST_PLAY_ERROR_MISSING_PLUGIN + - gst_play_message_parse_error_missing_plugin() + - gst_play_message_parse_warning_missing_plugin() +- Improve play message API inconsistencies: + - Consistently name parse functions according to their message type: + - gst_play_message_parse_duration_changed() + - gst_play_message_parse_buffering() + - Deprecate the misnamed functions: + - gst_play_message_parse_duration_updated() + - gst_play_message_parse_buffering_percent() + - Add missing parse functions: + - gst_play_message_parse_uri_loaded() + - gst_play_message_parse_seek_done() +- Support disabling the selected track at startup -- None in this release. +## Miscellaneous performance, latency and memory optimisations -Debug logging system improvements +- dvdspu: use multiple minimal sized PGS overlay rectangles instead of a single large one to minimise the total blitting + surface in case of disjointed rectangles. -- Nothing major in this cycle. +- video-frame: reduce number of memcpy() calls on frame copies if possible -Fake video decoder +- video-converter: added fast path conversions between v210 and I420_10 / I422_10 -- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the - caps and then pushes out raw video frames of the expected size in RGB format. +- As always there have been plenty of performance, latency and memory optimisations all over the place. -- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides - an idea about how smooth the rendering is. +## Miscellaneous other changes and enhancements -## Tools +- netclientclock: now also emits the clock synced signal when corrupted to signal that sync has been lost. -- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer - to set the class or app-id. +- GstValue, GstStructure: can now (de)serialize string arrays (G_TYPE_STRV) -- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2 - command line argument. - -## GStreamer FFmpeg wrapper +## Tracing framework and debugging improvements -- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR). +- dot files (pipeline graph dumps) are now written to disk atomically -- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes - to have parsers and decoders separate. +- tracing: add hooks for gst_pad_send_event_unchecked() and GstMemory init/free -- Added codec mappings for AV1, MxPEG, FFVHuff video +- tracers: Simplify params handling using GstStructure and object properties and move tracers over to property-based + configuration (leaks, latency). -- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412. +- textoverlay, clockoverlay, timeoverlay: new "response-time-compensation" property that makes the element render the text or + timestamp twice: Once in the normal location and once in a different sequentially predictable location for every frame. This + is useful when measuring video latency by taking a photo with a camera of two screens showing the test video overlayed with + timeoverlay or clockoverlay. In these cases, you will often see ghosting if the display’s pixel response time is not great, + which makes it difficult to discern what the current timestamp being shown is. Rendering in a different location for each + frame makes it easy to tell what the latest timestamp is. In addition, you can also use the fade-time of the previous frame + to measure with sub-framerate accuracy when the photo was taken, not just clamped to the framerate, giving you a higher + precision latency value. -- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer. +New tracers -- The FFmpeg meson subproject wrap has been updated to v6.1 +- memory-tracer: New tracer that can track memory usage over time -- Note: see Known Issues section below for known issues with FFmpeg 6.0.0 and the latest FFmpeg 7.x release +- pad-push-timings: New tracer for tracing pad push timings -## GStreamer RTSP server +- pcap-writer: New tracer that can store the buffers flowing through a pad as PCAP file -- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for - connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain - the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by - setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but - discard it if too much time has passed and instead force a new key unit. +Dot tracer/viewer -- rtspclientsink: apply “port-range” property for RTCP port selection as well +- New dots tracer that simplifies the pipeline visualization workflow: + - Automatically configures dot file directory and cleanup + - Integrates with the pipeline-snapshotS tracer to allow dumping pipeline on demand from the gst-dots-viewer web interface + - Uses GST_DEBUG_DUMP_DOT_DIR or falls back to $XDG_CACHE_HOME/gstreamer-dots +- New gst-dots-viewer web tool for real-time pipeline visualization + - Provides interface to browse and visualize pipeline dot files + - Features on-demand pipeline snapshots via “Dump Pipelines” button + - WebSocket integration for live updates + - Uses GST_DEBUG_DUMP_DOT_DIR or falls back to $XDG_CACHE_HOME/gstreamer-dots +- Simple usage: + - gst-dots-viewer (starts server) + - GST_TRACERS=dots gst-launch-1.0 videotestsrc ! autovideosink (runs with tracer) + - View at http://localhost:3000 -## GStreamer VA-API support +Debug logging system improvements -GstVA +- Nothing major in this cycle. -- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux +## Tools -- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit - modifiers. This supports both import and export of dmabufs. +- gst-inspect-1.0 documents tracer properties now and shows element flags -- Added vaav1enc element, available in recent Intel and AMD GPUs +- gst-launch-1.0 will show error messages posted during pipeline construction -- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18 +## GStreamer FFmpeg wrapper -- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised. +- Add support for H.266/VVC decoder -- Bumped minimum libva version to 1.12 +- Add mappings for the Hap video codec, the Quite OK Image codec (QOI) and the M101 Matrox uncompressed SD video codec. -- Enhanced support for RadeonSI Mesa driver for 10bit decoding +- Don’t register elements for which we have no caps and which were non-functional as a result (showing unknown/unknown caps). -- Register elements only for allowed drivers (Intel and Mesa, for the moment) +- The S302M audio encoder now supports up to 8 channels. -GStreamer-VAAPI +- Various tag handling improvements in the avdemux wrappers, especially when there are both upstream tags and additional local + tags. -- The new GstVA elements (see above) should be preferred when possible. +- Support for 10-bit grayscale formats -- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore. +## GStreamer RTSP server -- Clean-ups and minimal fixes. +- GstRTSPOnvifMediaFactoryClass gained a ::create_backchannel_stream() vfunc. This allows subclasses to delay creation of the + backchannel to later in the sequence, which is useful in scenarios where the RTSP server acts as a relay and the supported + caps depend on the upstream camera, for example. -- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature - equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest - opportunity. +- The ONVIF backchannel example now features support for different codecs, including AAC. -## GStreamer Video4Linux2 support +## VA-API integration -- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver. +VA plugin -- v4l2src now supports 10/12/14/16-bit bayer formats. +- New VA elements: -- Stateful decoders now pass too large encoded frames over multiple buffers. + - H.266 / VVC video decoder + - VP8 video encoder + - JPEG encoder + - VP9 + VP8 alpha decodebin -- AV1 Stateless video decoder. + Remember that the availability of these elements depends on your platform and driver. -- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI +- There are a lot of improvements and bug fixes, to hightlight some of them: -## GStreamer OMX + - Improved B pyramid mode for both H264 and HEVC encoding when reference frame count exceeds 2, optimizing pyramid level + handling. + - Enabled ICQ and QVBR modes for several encoders, including H264, H265, VP9 and AV1. + - Updated rate control features by setting the quality factor parameter, while improving bitrate change handling. + - Improved VP9 encoder’s ability to avoid reopening or renegotiating encoder settings when parameters remain stable. + - Added functionality to adjust the trellis parameter in encoders. + - Optimize encoders throughput with the introduction of output delay. + - Added support for new interpolation methods for scaling and improvements for handling interlace modes. -- The gst-omx module has been removed. The OpenMAX standard is long dead and even the Raspberry Pi OS no longer supports it. - There has not been any development since 1.22 was released. Users of these elements should switch to the Video4Linux-based - video encoders and decoders which have been the standard on embedded Linux for quite some time now. +GStreamer-VAAPI is now deprecated -- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it - while planning their move to the Video4Linux API. +- gstreamer-vaapi has been deprecated and is no longer actively maintained. Users who rely on gstreamer-vaapi are encouraged + to migrate to the va plugin’s elements at the earliest opportunity. -## GStreamer Editing Services and NLE +- vaapi*enc encoders have been demoted to a rank of None, so will no longer be autoplugged in encodebin. They have also no + longer advertise dmabuf caps or unusual pixel formats on their input pad template caps. -- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of - effects. By default scaling is done in the compositor. +## GStreamer Video4Linux2 support -- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as - sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using - gesdemux). +- Implemented DMA_DRM caps negotiation -- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files - cleaner and allowing to expose the following APIs: +- Framerate negotiation improvements - - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without - requiring discovering the file when reloading a project. - - source-setup signal so user can tweak source elements during discovery +- Support for P010 and BGR10A2_LE pixel formats -- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account - that meta. +- The V4L2 stateless decoders now support inter-frame resolution changes for AV1 and VP9 -- Expose audioconvert:mix-matrix property in audio sources +- The V4L2 stateful encoders can now handle dynamic frame rates (0/1), and colorimetry negotiation was also improved. -- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX - etc..) and leverage all new features of that new element. +## GStreamer Editing Services and NLE -ges-launch +- Added support for reverse playback with a new reverse property on nlesource which is exposed child property on GESClip -- Fix setting keyframes +- Input channels reordering for flexible audio channel mapping -- Add an ignore-eos option +- Added support for transition in the ges-launch-1.0 timeline description format -- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific - media file, for example, but ensuring it is muxed using a specific format +- Added support for GstContext sharing in GESTimeline -- Ensure sink elements are inside a GstBin and never in a GstPipeline +- Added basic support for duplicated children property in GESTimelineElement -- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the - beginning of the chain while the syntax is +effect felt wrong +- validate: Add an action type to group clips ## GStreamer validate -- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example. - -- Add a vmethod to free GstValidateActionParameters to be more binding friendly. +- Added new action types: -- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state. + - start-http-server: Start a new instance of our HTTP test server + - http-requests: Send an HTTP request to a server, designed to work with our test http server -- Add support to run sub-pipelines/scenarios +- HTTP server control endpoints to allow scenarios to control the server behavior, allowing simulating server failures from + tests - - Added support to forward buffers from appsink to appsrc +- Improved the select-streams action type, adding support for selecting the same streams several times -- Add a way to set pipeline base-time, start-time and force using the system clock. +- Added support for forcing monitoring of all pipelines in validatetest files -- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving - control when writing scenarios without requiring files with the content. +- Enhanced support for expected Error messages on the bus -- Add a “select-streams” action type to test “stream aware” elements. +- Added ways to retrieve HTTP server port in .validatetest files -- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait - for a pad to get some specific caps set before executing an action. - -- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where - some of the properties are inside structures. - -- Fixed compatibility with Python 3.12. +- Added support for lldb in the gst-validate-launcher ## GStreamer Python Bindings @@ -898,2292 +925,391 @@ pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc. -- Added a GstTagList override that makes a tag list act like a dict +- The python Meson build option has been renamed to python-exe (and will yield to the monorepo build option of the same name + if set, in a monorepo build context). -- Fix build and usage in Windows +- Added an iterator for AnalyticsRelationMeta -- Various fixes for Python >= 3.12 +- Implement __eq__ for Mtd classes -- Rework libpython loading to be relocatable - -- Fix libpython dlopen on macOS +- Various build fixes and Windows-related fixes. ## GStreamer C# Bindings -- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with - that version. - -- GStreamer API added in recent GStreamer releases is now available - -- GstRtspServer bindings have been added, plus an RTSP server example +- The C# bindings have been updated for the latest GStreamer 1.26 API ## GStreamer Rust Bindings and Rust Plugins -The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year -GNOME release cycle. +The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the gtk-rs +release cycle. -The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer +The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer version starting at 1.14. gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements -and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be -backported as needed to the 0.12 brach for future 1.24.x bugfix releases. +and plugins. The GStreamer 1.26 binaries will be tracking the main branch of gst-plugins-rs for starters and then track the 0.14 +branch once that has been released (around summer 2025). After that, fixes from newer versions will be backported as needed to +the 0.14 branch for future 1.26.x bugfix releases. Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++. -### WebRTC - -- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can - support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element - factory for easier usage but it is also possible for applications to provide new signalling protocol implementations. - -- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to - the default signaller. - -- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller - implementation is currently in a merge request in GitLab. - -- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new - element around webrtcsrc will be added. - -- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer. - -- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old - whipsink element. - -- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged - into the git repository recently. - -- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams - -- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader - configuration, similar to the already existing encoder-setup signal for encoders. - -- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the - navigation event protocol supported by webrtcsink. +### New Rust elements -- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any - encoded stream parameters. +- awstranscriber2, awstranslate: New elements around the AWS transcription and translation services. -- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can - be used, for example, for the same use-cases as the WebRTC Insertable Streams API. +- cea708mux: New element that allows to mux multiple CEA708 services into a single stream. -- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc. +- cdpserviceinject: New element for injecting a CDP service descriptor into closed caption CDP packets -… and various other smaller improvements! +- cea708overlay: New element for overlaying CEA608 / CEA708 closed captions over video streams. -### RTSP +- gopbuffer: New element that can buffer a minimum duration of data delimited by discrete GOPs (Group of Picture) -- New rtspsrc2 element. Only a subset of RTSP features are implemented so far: - - RTSP 1.0 support - - TCP, UDP, UDP-Multicast lower transports - - RTCP SR, RTCP RR, RTCP-based A/V sync - - Tested for correctness in multicast cases too - - Lower transport selection and order (NEW!) - - The existing rtspsrc has a hard-coded order list for lower transports - - Many advanced features are not implemented yet, such as non-live support. See the README for the current status. +- hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments. -### GTK4 +- hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants -- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows. +- mpegtslivesrc: New source element that can wrap a live MPEG-TS source (e.g. SRT or UDP source) and provides a clock based on + the PCR. -- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set. +- onvifmetadataextractor: New element that can extract ONVIF metadata from GstMetas into a separate stream -- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows - setting a fully transparent background. +- originalbuffer: New plugin with originalbuffersave / originalbufferrestore elements that allow saving an original buffer, + modifying it for analytics, and then restoring the original buffer content while keeping any additional metadata that was + added. -- New scale-filter property for defining how to scale the frames. +- polly: New element around the AWS text-to-speech polly services -- Add Python example application to the repository. +- quinn: New plugin that contains various QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and + WebTransport. -- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the - gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature. +- relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata. -### Closed Caption +- New Rust RTP payloaders and depayloaders for AC3, AMR, JPEG, KLV, MPEG-TS (MP2T), MPEG-4 (MP4A, MP4G), Opus, PCMU (uLaw), + PCMA (aLaw), VP8, VP9. -- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation. +- New rtpbin2 based on rtprecv / rtpsend elements -- Add support for translations within transcriberbin. +- speechmatics: New transcriber / speech-to-text and translation element -- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same - time. - -- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one. - -### Other new elements - -- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy. +- New spotifylyricssrc element for grabbing lyrics from Spotify. -- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments. +- streamgrouper: New element that takes any number of streams as input and adjusts their stream-start events in such a way + that they all belong to the same stream group. -- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process. - This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust - bindings, and is also used inside webrtcsrc and webrtcsink. +- translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions. -- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source. +- tttocea708: New element for converting timed-text to CEA708 closed captions -- New isomp4mux non-fragmented MP4 muxer element. +- A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library. -### Other improvements +For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer +1.24) and 0.14.x (shipped with GStreamer 1.26). -- audiornnoise - - Attach audio level meta to output buffers. - - Add voice detection threshold property -- fmp4mux - - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH - - Add support for muxing Opus, VP8, VP9 and AV1 streams - - Add ‘offset-to-zero’ property and make media/track timescales configurable -- hlssink3 - - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest. - - Allow generating I-frame-only playlist -- ndi - - Closed Caption support in ndisrc / ndisink - - Zero-copy output support in ndisrc for raw video and audio -- spotifyaudiosrc: Support configurable bitrate - -For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer -1.22) and 0.12 (shipped with GStreamer 1.24). - -## Cerbero Rust support - -- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This - includes Android and iOS now in addition to macOS and Windows/MSVC. +Note that at the time of GStreamer 1.26.0 gst-plugins-rs 0.14 was not released yet and the git main branch was included instead +(see above). As such, the ChangeLog also did not contain the changes between the latest 0.13 release and 0.14.0. ## Build and Dependencies -- Meson >= 1.1 is now required for all modules - -- The GLib requirement has been bumped to >= 2.64 +- Meson >= 1.4 is now required for all modules -- liborc >= 0.4.38 is strongly recommended +- liborc >= 0.4.41 is strongly recommended - libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675). -- gst-libav was updated for FFmpeg API deprecations and removals +- The ASIO plugin dropped its external SDK header dependency, so it can always be built and shipped more easily. -- libwebpmux is required for the animated WebP support +- Require tinyalsa >= 1.1.0 when building the tinyalsa plugin -- The wpe plugin gained support for the WPEWebKit 2.0 API version +- The srtp plugin now requires libsrtp2, support for libsrtp1 was dropped. -- Bumped minimum libva version to 1.12 for the va plugin. +Monorepo build -- zxing: added support for the zxing-c++ 2.0 API +- The FFmpeg subproject wrap was updated to 7.1 -- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum - required Rust version for building this is 1.48, i.e. the version currently in Debian oldstable. On Windows, at least Rust - 1.54 is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP - support is available (if set to ptp-helper=enabled). cargo is not required for building. - -- gst-plugins-rs requires Rust 1.70 or newer. - -- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need - to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build - option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since - it’s still required at runtime for the soup and adaptivedemux2 plugins to function. - -- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it - still is a runtime dependency, so distros should make sure it remains a package dependency. - -Monorepo build (née gst-build) - -- There is now a top-level meson build option to enable/require webrtc - -- The FFmpeg subproject wrap was udpated to 6.1 - -- A libvpx wrap was added (for VP8/VP9 software encoding/decoding) +- Many other wrap updates gstreamer-full -- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to - create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type: - dynamic (default) or static. - -- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from - the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin. +- No major changes Development environment -- add VSCode IDE integration +- Local pre-commit checks via git hooks have been moved over to pre-commit, including the code indentation check. -- gst-env.py: Output a setting for the prompt with --only-environment +- Code indentation checking no longer relies on a locally installed copy of GNU indent (which had different outcomes depending + on the exact version installed). Instead pre-commit will automatically install the gst-indent-1.0 indentation tool through + pip, which also works on Windows and macOS. -### Cerbero +- A pre-commit hook has been added to check documentation cache updates and since tags. -Cerbero is a meta build system used to build GStreamer plus dependencies on platforms where dependencies are not readily -available, such as Windows, Android, iOS, and macOS. +- Many meson wrap updates, including to FFmpeg 7.1 -General improvements +- The uninstalled development environment should work better on macOS now, also in combination with homebrew (e.g. when + libsoup comes from homebrew). -- New plugins have been added - - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2 -- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at - plugin load time -- Several recipes were ported to meson, leading to faster builds and better MSVC support - - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing - - For more information, please see the tracker issue -- Some recipes are now outdated or unnecessary and have been removed: - - intltool, libkate -- Various recipe updated to their latest versions -- Rust toolchain updated to 1.76.0 (latest as of writing) -- Rust plugins are now stripped and debug info split out correctly, reducing their size -- Fix several spurious build issues, especially with the Rust toolchain -- CMake is picked up from the system if available -- Cerbero will no longer OOM or consume excessive resources on low-end systems -- Python recipes have been moved from setuptools to virtualenv -- Fixed support for Python 3.12+ - -macOS - -- Minimum macOS version has been increased to 10.13 (High Sierra) - - Released 5½ years ago, >95% marketshare -- Fix macOS app store validation issue caused by absolute RPATHs -- Rosetta is automatically installed if required for universal builds on Apple Silicon -- The official macOS binaries now also include static libs for the GStreamer Rust plugins - -iOS - -- Minimum iOS version has been increased to 12.0 -- The iOS binary packages now include the GStreamer Rust plugins -- tremor and ivorbisdec plugins are no longer shipped on iOS - -Windows - -- New features shipped with the official binaries: - - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC) - - plugin features: d3d11-wgc (Windows Graphics Capture Support) - - libraries: gstdxva-1.0 -- New qml6 plugin can be built on Windows with the qt6 variant enabled - - Similar to qt5, this plugin cannot be included in the official binaries -- GLib process handling helpers for Windows are now shipped -- Windows 11 SDK is now required for builds - - Visual Studio 2019 and newer ship this SDK -- MSYS is now deprecated for building Windows binaries, will be removed in the next release - - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you -- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now -- Fixed Pango crash on 32-bit Windows -- WiX packaging now works with cross-windows builds from linux - -Linux - -- Linux packages will now also include static libs for the GStreamer Rust plugins -- Add Python support for multiarch distributions -- Build fixes for various recipes on multiarch distributions -- Use arch-specific libdir correctly on multiarch distributions -- gst-omx was removed from gstreamer, and hence is no longer shipped -- Fixed Gentoo support -- Added support for RHEL 9 -- Added support for Rocky Linux -- Added support for Manjaro Linux - -Android - -- Android NDK has been updated to r25c - - Only the Clang toolchain is used from the NDK now (both target and host) - - gnustl has been completely removed -- The Android binary packages now include the GStreamer Rust plugins -- tremor and ivorbisdec plugins are no longer shipped on Android -- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors +- New python-exe Meson build option to override the target Python installation to use. This will be picked up by the + gst-python and gst-editing-sevices subprojects. ## Platform-specific changes and improvements ### Android -- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce - overhead. - -- Add support for AV1 to the androidmedia video encoder and decoder. +- The recommended mechanism to build Android apps has changed from Android.mk to CMake-in-Gradle using + FindGStreamerMobile.cmake. Android.mk support has been deprecated and will be removed in the next stable release. For more + information, see below, in the Cerbero section. +- More H.264/H.265 profiles and levels have been added to the androidmedia hardware-accelerated video encoder and decoder + elements, along with mappings for a number of additional pixel formats for P010, packed 4:2:0 variants and RGBA layouts, + which fixes problems with android decoders refusing to output raw video frames with decoders that announce support for these + common pixel formats and only allow the ‘hardware surfaces output’ path. ### Apple macOS and iOS -- osxaudio: audio clock improvements (interpolate based on system time) - -- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to - NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on - them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front - again. This change also allows osxvideosink to receive navigation events correctly. - -### Windows - -- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and - dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay. - -- PTP clock support is now also available on Windows - -- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink. - -- wasapi2 audio plugin: - - - Added an option to monitor a loopback device’s mute state - - Allows process loopback capture on Windows 10 - -- win32ipc supports zero-copy rendering now through a shared bufferpool. - -- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens - in an external process on Windows as well. - -- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path. - -- d3d11 plugin: - - - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank - - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes. - - Added HLSL shader pre-compilation (at binary build time) support in MSVC build. - - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic - sampling method. - - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in - the d3d11videosink plugin documentation. - - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly. - -- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is - feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are: - - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec, - nvcodec, qsv, and dwrite are not integrated with d3d12 yet. - - H.264 video encoding support via d3d12h264enc element. - - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK - - IPC, overlay, and deinterlace elements are not implemented in d3d12 - - Windows Graphics Capture API based screen capturing is not implemented in d3d12 - - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build. - - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK - environment or appropriate plugin feature APIs if they want these elements autoplugged. - -## Documentation improvements - -- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability - issues. - -## Possibly Breaking Changes - -- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would - return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro - version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version - checks which have been fixed some time ago. - -- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what - GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every - output frame based on the output time because they may change even though the input frame is not changing. - -- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is - still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be - output. - -- timecodestamper: The “drop-frame” property now defaults to TRUE - -- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec, - nvvp8dec and nvvp9dec, respectively. - -## Known Issues - -- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least - avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected. - -- gst-libav < 1.24.6 didn’t build against the latest FFmpeg 7.0 release. This has been worked on and tracked in this “libav: - Fix compatibility with ffmpeg 7” Merge Request. - -## Statistics - -- 4643 commits - -- 2405 Merge Requests - -- 850 Issues - -- 290+ Contributors - -- ~25% of all commits and Merge Requests were in Rust modules - -- 4747 files changed - -- 469633 lines added - -- 209842 lines deleted - -- 259791 lines added (net) - -## Contributors - -Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro -Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen, -Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart -Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos -Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris -Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian -Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan -Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev -Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña -González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François -Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar, -hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song, -Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub -Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson -Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan -Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan -Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh -Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng, -Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman, -Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart -Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev, -medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel -Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan, -Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter -Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał -Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert -Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity, -Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov, -Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan -Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider, -Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia -Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan, -Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, … - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -Stable 1.24 branch - -After the 1.24.0 release there will be several 1.24.x bug-fix releases which will contain bug fixes which have been deemed -suitable for a stable branch, but no new features or intrusive changes will be added to a bug-fix release usually. The 1.24.x -bug-fix releases will be made from the git 1.24 branch, which will be a stable branch. - -1.24.0 - -GStreamer 1.24.0 was released on 4 March 2024. - -1.24.1 - -The first 1.24 bug-fix release (1.24.1) was released on 21 March 2024. - -This release only contains bugfixes and it should be safe to update from 1.24.0. - -Highlighted bugfixes in 1.24.1 - -- Fix instant-EOS regression in audio sinks in some cases when volume is 0 -- rtspsrc: server compatibility improvements and ONVIF trick mode fixes -- rtsp-server: fix issues if RTSP media was set to be both shared and reusable -- (uri)decodebin3 and playbin3 fixes -- adaptivdemux2/hlsdemux2: Fix issues with failure updating playlists -- mpeg123 audio decoder fixes -- v4l2codecs: DMA_DRM caps support for decoders -- va: various AV1 / H.264 / H.265 video encoder fixes -- vtdec: fix potential deadlock regression with ProRes playback -- gst-libav: fixes for video decoder frame handling, interlaced mode detection -- avenc_aac: support for 7.1 and 16 channel modes -- glimagesink: Fix the sink not always respecting preferred size on macOS -- gtk4paintablesink: Fix scaling of texture position -- webrtc: Allow resolution and framerate changes, and many other improvements -- webrtc: Add new LiveKit source element -- Fix usability of binary packages on arm64 iOS -- various bug fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- registry, ptp: Canonicalize the library path returned by dladdr -- segment: Don’t use g_return_val_if_fail() in gst_segment_to_running_time_full() -- uri: Sort uri protocol sources/sinks by feature name to break a feature rank tie -- ptp: Initialize expected DELAY_REQ seqnum to an invalid value -- ptp: Don’t install test executable -- gst-inspect: fix –exists for plugins with versions other than GStreamer’s version, like the Rust plugins -- identity: Don’t refuse seeks unless single-segment=true - -gst-plugins-base - -- audiobasesink: Don’t wait on gap events -- audioencoder: Avoid using temporarily mapped memory as base for input buffers -- decodebin3: Be more specific when sending missing plugin messages -- decodebin3: Fix re-usability issues -- decodebin3: Provide clear error message if no decoders present -- playbin3: Remove un-needed URI NULL check -- uridecodebin3: Don’t hold lock when posting messages or signals -- uridecodebin3: Handle potential double redirection errors -- glimagesink: Fix the sink not always respecting preferred size on macOS -- glupload: Do not propose allocators with sysmem, fixes warning when playing VP9 with alpha -- shmallocator: fix build on Illumos -- meson: Fix the condition to skip theoradec test - -gst-plugins-good - -- adaptivdemux/hlsdemux2: Fix issues with failure updating playlists -- mpg123audiodec: Correctly handle the case of clipping all decoded samples -- mpg123audiodec: gst_audio_decoder_allocate_output_buffer: assertion ‘size > 0’ failed -- qt: Fix description in meson build options -- qtdemux: Do not set channel-mask to zero -- rtspsrc: remove ‘deprecated’ flag from the ‘push-backchannel-sample’ signal -- rtspsrc: Consider 503 Service Not Available when handling broken control urls -- rtspsrc, rtponviftimestamp: ONVIF mode fixes -- rtspsrc: Don’t invoke close when stopping if we’ve started cleanup, fixing potential crash on shutdown -- rtpgstpay: Delay pushing of event packets until the next buffer - -gst-plugins-bad - -- asio: Fix {input,output}-channels property handling -- cuda,d3d11,d3d12bufferpool: Disable preallocation -- d3d11device: Fix adapter LUID comparison in wrapped device mode -- d3d12device: Fix IDXGIFactory2 leak -- d3d12: Fix SDK debug layer activation -- dvbsubenc: Fix bottom field size calculation -- dvdspu: avoid null dereference -- GstPlay: Fix a critical warning in error callback -- v4l2codecs: decoders: Add DMA_DRM caps support -- vaav1enc: Init the output_frame_num when resetting gf group -- vah264enc, vah265enc, vaav1enc: fix potential crash on devices without rate control -- vah265enc: checking surface alignment -- videoparsers: Don’t verbosely warn about CEA_708_PROCESS_EM_DATA_FLAG not being set -- vtdec: Fix a deadlock during ProRes playback, handle non-linked gracefully - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- gtk4paintablesink: Fix scaling of texture position -- janusvrwebrtcsink: Handle 64 bit numerical room ids -- janusvrwebrtcsink: Don’t include deprecated audio/video fields in publish messages -- janusvrwebrtcsink: Handle various other messages to avoid printing errors -- livekitwebrtc: Fix shutdown behaviour -- rtpgccbwe: Don’t forward buffer lists with buffers from different SSRCs to avoid breaking assumptions in rtpsession -- sccparse: Ignore invalid timecodes during seeking -- webrtcsink: Don’t try parsing audio caps as video caps -- webrtc: Allow resolution and framerate changes -- webrtcsrc: Make producer-peer-id optional -- livekitwebrtcsrc: Add new LiveKit source element -- regex: Add support for configuring regex behaviour -- spotifyaudiosrc: Document how to use with non-Facebook accounts -- webrtcsrc: Add do-retransmission property - -gst-libav - -- avcodecmap: Increase max AAC channels to 16 -- avviddec: Fix how we get back the codec frame -- avviddec: Fix interlaced mode detection -- avviddec: Double check if AV_CODEC_FLAG_COPY_OPAQUE port is safe for our scenario - -gst-rtsp-server - -- media: gst_rtsp_media_set_reusable() and gst_rtsp_media_set_shared() have become incompatible -- rtsp-stream: clear sockets when leaving bin - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-omx - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- ges: Fix critical warning - -gst-validate + gst-integration-testsuites - -- No changes - -gst-examples - -- No changes - -Development build environment - -- No changes - -Cerbero build tool and packaging changes in 1.24.1 - -- gstreamer: Enable ptp helper explicitly -- gst-plugins-bad: Package new insertbin plugin -- gst-plugins-rs: Adjust parallel architecture build blocks -- libnice: update to 0.1.22 -- pixman: Bump to 0.43.4 -- orc: disable JIT code generation on arm64 on iOS again, fixing crashes - -Contributors to 1.24.1 - -Alexander Slobodeniuk, Antonio Larrosa, Edward Hervey, Elizabeth Figura, François Laignel, Guillaume Desmottes, He Junyan, Jan -Schmidt, Jordan Yelloz, L. E. Segovia, Mark Nauwelaerts, Mathieu Duponchelle, Michael Tretter, Mikhail Rudenko, Nicolas -Dufresne, Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Robert Mader, Ruijing Dong, Sebastian Dröge, Seungha Yang, -Thomas Goodwin, Thomas Klausner, Tim-Philipp Müller, Xi Ruoyao, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.24.1 - -- List of Merge Requests applied in 1.24.1 -- List of Issues fixed in 1.24.1 - -1.24.2 - -The second 1.24 bug-fix release (1.24.2) was released on 9 April 2024. - -This release only contains bugfixes and it should be safe to update from 1.24.x. - -Highlighted bugfixes in 1.24.2 - -- H.264 parsing regression fixes -- WavPack typefinding improvements -- Video4linux fixes and improvements -- Android build and runtime fixes -- macOS OpenGL memory leak and robustness fixes -- Qt/QML video sink fixes -- Package new analytics and mse libraries in binary packages -- Windows MSVC binary packages: fix libvpx avx/avx2/avx512 instruction set detection -- various bug fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- clock: Block futex_time64 usage on Android API level < 30 -- basesrc: Clear submitted buffer lists consistently with buffers -- ptpclock: fix double free of domain data during deinit -- clocksync: Proxy allocation queries -- inputselector: fix possible clock leak on shutdown -- typefind: Handle WavPack block sizes > 131072 - -gst-plugins-base - -- glcolorconvert: Ensure glcolorconvert does not miss supported RGB formats -- gl/macos: a couple of race/reference count fixes -- pbutils: descriptions: Don’t warn on MPEG-1 audio caps without layer field -- encodebin: Add the parser before timestamper to tosync list -- videorate: Reset last_ts when a new segment is received - -gst-plugins-good - -- qml6glsink: fix destruction of underlying texture -- qt/qt6: Fixup for dummy textures -- rtpjitterbuffer: Don’t use estimated_dts to do default skew adjustment -- rtpjitterbuffer: Use an extended RTP timestamp for the clock-base -- rtpmp4adepay: Set duration on outgoing buffers -- tests: rtpred: fix out-of-bound writes -- v4l2: allocator: Fix unref log/trace on memory release -- v4l2: Also set max_width/max_width if enum framesize fail -- v4l2: enforce a pixel aspect ratio of 1/1 if no data are available -- v4l2: fix error in calculating padding bottom for tile format -- v4l2src: need maintain the caps order in caps compare when fixate -- vpxenc: Include vpx error details in errors and warnings - -gst-plugins-bad - -- h264parse: element hangs with some video streams (regression) -- h264parse: Revert “AU boundary detection changes” -- alphadecodebin: Explicitly pass 64 bit integers as such through varargs -- atdec: Set a channel mask for channel counts greater than 2 -- ccconverter: Fix caps leak and remove unnecessary code -- d3d11videosink: disconnect signals before releasing the window -- d3d11: meson: Add support for MinGW DirectXMath package and update directxmath wrap to 3.1.9 -- d3d11: meson: Disable library build if DirectXMath header was not found -- dwrite: Fix crash on device update -- GstPlay: Update video_snapshot to support playbin3 -- jpegparse: avi1 tag can be progressive -- jpegparse: turn some bus warnings into object ones -- qsvdecoder: Release too old frames -- ristsrc: Only free caps if needed -- va: av1enc: Correct the reference number and improve the reference setting -- va: {vp9, av1}enc: Avoid reopen encoder or renegotiate -- videoparsers: Demote CC warning message -- vkbufferpool: correct usage flags type -- vkh26xdec: a couple decoding fixes -- vtdec: Fix caps criticals during negotiation -- wpe: avoid crash with G_DEBUG=fatal_criticals and static build -- Sink missing floating references - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- aws: use fixed BehaviorVersion -- aws: improve error message logs -- fmp4: Update to dash-mpd 0.16 -- fmp4mux: Require gstreamer-pbutils 1.20 for the examples -- onvifmetadataparse: Reset state in PAUSED->READY after pad deactivation, fixing occasional deadlock on shutdown -- reqwest: Update to reqwest 0.12 -- webrtcsink: set perfect-timestamp=true on audio encoders -- webrtcsink: improve panic message on unexpected caps during discovery -- webrtchttp: Update to reqwest 0.12 -- webrtc: fix inconsistencies in documentation of object names -- Fix clippy warnings after upgrade to Rust 1.77 - -gst-libav - -- avviddec: Fix AVPacket leak - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-omx - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- ges: frame-composition-meta: Stop using keyword ‘operator’ for field in C++ - -gst-validate + gst-integration-testsuites - -- No changes - -gst-examples - -- webrtc examples: set perfect-timestamp=true on opusenc for better Chrome interoperability - -Development build environment - -- flac: Add subproject wrap and allow falling back to it in the flac plugin -- libnice: bump subproject wrap to v0.1.22 (needed for ICE consent freshness support in gstwebrtc) - -Cerbero build tool and packaging changes in 1.24.2 - -- glib: Block futex_time64 usage on Android API level < 30 -- libvpx: Fix build with Python 3.8 -- libvpx: Fix errors with avx* instruction set detection for x86* builds and MSVC -- openjpeg: Update to 2.5.2 -- directxmath: Update to 3.1.9 -- gst-plugins-rs: Fix superstripping for ELF breaking all plugins -- Rust-based plugin initialization hangs on Android with GStreamer 1.24.0 - -Contributors to 1.24.2 - -Alexander Slobodeniuk, Arnaud Vrac, Chao Guo, Chris Spencer, Daniel Morin, Edward Hervey, Elizabeth Figura, Elliot Chen, eri, -François Laignel, Guillaume Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Schmidt, Jochen Henneberg, L. E. Segovia, Martin -Nordholts, Matthew Waters, Nicolas Dufresne, Philippe Normand, Philipp Zabel, Piotr Brzeziński, Robert Guziolowski, Robert -Mader, Ruben Gonzalez, Sebastian Dröge, Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim Blechmann, Tim-Philipp Müller, -Víctor Manuel Jáquez Leal, Wojciech Kapsa, Xavier Claessens, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.24.2 - -- List of Merge Requests applied in 1.24.2 -- List of Issues fixed in 1.24.2 - -1.24.3 - -The third 1.24 bug-fix release (1.24.3) was released on 30 April 2024. - -This release only contains bugfixes and it should be safe to update from 1.24.x. - -Highlighted bugfixes in 1.24.3 - -- EXIF image tag parsing security fixes -- Subtitle handling improvements in parsebin -- Fix issues with HLS streams that contain VTT subtitles -- Qt6 QML sink re-render and re-sizing fixes -- unixfd ipc plugin timestamp and segment handling fixes -- vah264enc, vah265enc: Do not touch the PTS of the output frame -- vah264dec and vapostproc fixes and improvements -- v4l2: multiple fixes and improvements, incl. for mediatek JPEG decoder and v4l2 loopback -- v4l2: fix hang after seek with some v4l2 decoders -- Wayland sink fixes -- ximagesink: fix regression on RPi/aarch64 -- fmp4mux, mp4mux gained FLAC audio support -- D3D11, D3D12: reliablity improvements and memory leak fixes -- Media Foundation device provider fixes -- GTK4 paintable sink improvements including support for directly importing dmabufs with GTK 4.14 -- WebRTC sink/source fixes and improvements -- AWS s3sink, s3src, s3hlssink now support path-style addressing -- MPEG-TS demuxer fixes -- Python bindings fixes -- various bug fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- ptp: Silence Rust compiler warning about some unused trait methods - -gst-plugins-base - -- EXIF image tag parsing security fixes -- glcolorconvert: remove some dead code -- parsebin: Ensure non-time subtitle streams get “parsed” -- playbin3: Handle combiner update in case of errors -- ximagesink: initialize mask for XISelectEvents - -gst-plugins-good - -- adaptivedemux2: Playback hangs with VTT fragments -- adaptivedemux2: Avoid double usage of parsebin -- pulsedeviceprovider: Add compare_device_type_name function and missing lock -- qml6glsink: Notify that the returned QSGNode node has changes -- qml6glsink: video content resizes to new item size -- qtdemux: fix wrong full_range offset when parsing colr box -- soup: fix thread name -- v4l2: add multiplane y42b (yuv422m) support (for mediatek v4l2 jpeg decoder) -- v4l2: bufferpool: Drop writable check on output pool process -- v4l2: bufferpool: Ensure freshly created buffers are not marked as queued, fixing issues with v4l2sink on a v4l2loopback - device -- v4l2: bufferpool: queue back the buffer flagged LAST but empty, fixes hangs after seek with some decoders -- v4l2: silence valgrind warning -- vpx: Include vpx error details in errors and warnings - -gst-plugins-bad - -- d3d11device: protect device_lock vs device_new -- d3d11decoder, d3d12decoder: Fix potential use after free -- d3d11videosink: Fix rendering on keyed mutex enabled handle -- d3d12decoder: Fix d3d12 resource copy -- d3d12encoder: Fix buffer pool leak -- d3d12videosink: HWND event handling related fixes -- d3d12vp9dec: Fix Intel GPU crash occurred when decoding VP9 SVC -- dvbsubenc: fixed some memory leaks and a crash -- GstPlay: fix read duration failure issue for some type rtsp streams which have valid duration -- mediafoundation: Fix device enumeration -- mediafoundation: Fix infinite loop in device provider -- tests: fix possible libscpp build failure in gst-plugins-bad -- tsdemux, tsparse: Fix Program equality check -- tsdemux: Disable smart program update -- unixfdsink: Take segment into account when converting timestamps -- va: videoformat: use video library to get DRM fourcc -- va: radeonsi: DRM RGB formats doesn’t look correctly mapped to VA formats -- vah264enc, vah265enc: Do not touch the PTS of output frame -- vaav1enc: Change the alignment of output to “tu” -- vaallocator: disable derived all together for Mesa <23.3 -- waylandsink: free staged buffer when do gst_wl_window_finalize -- wlwindow: clear configure mutex and cond when finalize -- waylandsink: config buffer pool with query size when propose_allocation -- v4l2codecs: Don’t unref allocation query caps - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -Fixed: - -- hrtfrender: Use a bitmask instead of an int in the caps for the channel-mask -- rtpgccbwe: Don’t log an error when pushing a buffer list fails while stopping -- webrtcsink: Don’t panic in bitrate handling with unsupported encoders -- webrtcsink: Don’t panic if unsupported input caps are used -- webrtcsrc: Allow a None producer-id in request-encoded-filter signal - -Added: - -- aws: New property to support path-style addressing -- fmp4mux / mp4mux: Support FLAC inside (f)MP4 -- gtk4: Support directly importing dmabufs with GTK 4.14 -- gtk4: Add force-aspect-ratio property similar to other video sinks - -gst-libav - -- libav: guard some recently dropped APIs - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-omx - -- No changes - -gst-python - -- Fix Python library name fetching and library searching on Windows -- Don’t link to python for the gi overrides module - -gst-editing-services - -- ges-launcher: Fix for forcing container profiles - -gst-devtools, gst-validate + gst-integration-testsuites - -- debug-viewer: Fix plugin loading machinery -- validate/flvdemux: Stop spamming audio/video on test - -gst-examples - -- No changes - -Development build environment - -- No changes - -Cerbero build tool and packaging changes in 1.24.3 - -- No changes - -Contributors to 1.24.3 - -Alexander Slobodeniuk, Edward Hervey, Elliot Chen, F. Duncanh, François Laignel, Haihua Hu, He Junyan, Hou Qi, Jan Schmidt, -Jimmy Ohn, Maksym Khomenko, Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan, Philippe Normand, Philipp Zabel, Qian Hu (胡骞), -Sanchayan Maity, Sebastian Dröge, Seungha Yang, Simonas Kazlauskas, Taruntej Kanakamalla, Tim Blechmann, Tim-Philipp Müller, U. -Artie Eoff, Víctor Manuel Jáquez Leal, William Wedler, Xavier Claessens, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.24.3 - -- List of Merge Requests applied in 1.24.3 -- List of Issues fixed in 1.24.3 - -1.24.4 +- atenc: added an Apple AAC audio encoder -The fourth 1.24 bug-fix release (1.24.4) was released on 29 May 2024. +- atdec can now decode audio with more than two channels -This release only contains bugfixes and it should be safe to update from 1.24.x. +- vtenc has received various bug fixes as well as a number of new features: -Highlighted bugfixes in 1.24.4 + - Support for HEVC with alpha encoding via the new vtenc_h265a element + - additional rate control options for constant bitrate encoding (only supported on macOS 13.0+ and iOS 16.0+ on Apple + Silicon), setting data rate limits, and emulating CBR mode via data rate limits where CBR is not supported. + - HLG color transfer support + - new "max-frame-delay" property (for ProRes) -- audioconvert: support more than 64 audio channels -- avvidec: fix dropped frames when doing multi-threaded decoding of I-frame codecs such as DV Video -- mpegtsmux: Correctly time out in live pipelines, esp. for sparse streams like KLV and DVB subtitles -- vtdec deadlock fixes on shutdown and format/resolution changes (as might happen with e.g. HLS/DASH) -- fmp4mux, isomp4mux: Add support for adding AV1 header OBUs into the MP4 headers, and add language from tags -- gtk4paintablesink improvements: fullscreen mode and gst-play-1.0 support -- webrtcsink: add support for insecure TLS and improve error handling and VP9 handling -- v4l2codecs: decoder: Reorder caps to prefer DMA_DRM ones, fixes issues with playbin3 -- vah264enc, vah265enc: timestamp handling fixes; generate IDR frames on force-keyunit-requests, not I frames -- Visualizer plugins fixes -- Avoid using private APIs on iOS -- Various bug fixes, memory leak fixes, and other stability and reliability improvements +- Better macOS support for gst-validate tools which now use gst_macos_main() and support lldb -gstreamer +- The osxaudio device provider exposes more properties including a unique id -- clock: Fix 32 bit assertions in GST_TIME_TO_TIMEVAL and GST_TIME_TO_TIMESPEC -- systemclock: fix usage of __STDC_NO_ATOMICS__ -- filesrc: Don’t abort on _get_osfhandle() on Windows -- tests: Avoid using “bool” for the variable name -- Various Solaris / Illumos fixes -- parse: Don’t assume that child proxy child objects are GstObjects +- osxaudio will automatically set up AVAudioSession on iOS and always expose the maximum number of channels a device supports + with an unpositioned layout. -gst-plugins-base +- The monorepo development environment should work better on macOS now -- audioconvert: Support converting >64 channels -- decodebin3: Fix caps and stream leaks -- playbin(3), streamsynchronizer: Fix deadlock when streams have been flushed before others start -- videotestsrc: fix race condition when clearing cached buffer -- Fix visualization plugins -- GstDiscoverer hangs when processing media file containing mebx on MacOS -- glmixer: Add GL_SYNC_META option to buffer pool -- typefinding: Fix ID_ODD_SIZE handling regression in WavPack typefinder +- CMake apps that build macOS and iOS apps can consume GStreamer more easily now, using FindGStreamer.cmake or + FindGStreamerMobile.cmake respectively. -gst-plugins-good +- In the near future, CMake in Xcode will be the preferred way of building the iOS tutorials. See below, in the Cerbero + section. -- osxaudio: Avoid using private APIs on iOS -- qtdemux: unit test fixes for 32-bit platforms - -gst-plugins-bad - -- cudamemory: Fix offset of subsampled planar formats -- d3d11: Revert “d3d11device: protect device_lock vs device_new -- d3dshader: Fix gamma and primaries conversion pixel shader -- dtlsconnection: Fix overflow in timeout calculation on systems with 32 bit time_t -- GstPlay: Initialize debug category and error quark in class_init -- kmssink: Do not close the DRM prime handle twice -- mpegtsmux: Correctly time out and mux anyway in live pipelines -- nvcodec: Accept progressive-high profiles for h264 -- nvencoder: Fix maximum QP value setting -- qsvh264dec, qsvh265dec: Fix nalu leaks -- v4l2codecs: decoder: Reorder caps to prefer DMA_DRM ones -- vah264enc, vah265enc: Let FORCE_KEYFRAME be IDR frame rather than just I frame -- vah264enc, vah265enc: Set DTS offset before PTS -- vkh26xdec: Fix stop memory leak -- vtdec: Fix deadlock when negotiating format change -- vtdec: Fix PAUSED->READY deadlock when output loop is running -- wayland: Use wl_display_create_queue_with_name -- webrtc: request-aux-sender, only sink floating refs -- webrtcbin: Allow session level setup attribute in SDP - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- fmp4mux, isomp4mux: Add support for adding AV1 header OBUs into the MP4 headers -- fmp4mux, isomp4mux: Add language from tags -- gtk4paintablesink: Also create own window for gst-play-1.0 -- gtk4paintablesink: Add GST_GTK4_WINDOW_FULLSCREEN environment variable to fullscreen window for testing with - e.g. gst-launch-1.0 -- gtk4: Fix plugin description and update python examples -- rtpgccbwe: Log effective bitrate in more places, and log delay and loss target bitrates separately -- webrtcsink: Improve error when no encoder was found or RTP plugins were missing -- webrtcsink: Add VP9 parser after the encoder for VP9 too -- webrtc: Add support for insecure TLS connections - -gst-libav - -- avvidec: Fix dropping wrong “ghost” frames - fixing multi-threaded decoding of I-frame codecs such as DV Video - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-omx - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- ges-pipeline: Configure encodebin before linking - -gst-devtools, gst-validate + gst-integration-testsuites - -- No changes - -gst-examples - -- No changes - -Development build environment - -- No changes - -Cerbero build tool and packaging changes in 1.24.4 - -- Add Fedora 40 support -- srt: bump version to 1.5.3 -- pango: Fix leaks on Windows (textoverlay plugins) -- windows runtime installer has empty qt6 msm -- WiX: assorted fixes - -Contributors to 1.24.4 - -Alexander Slobodeniuk, Bill Nottingham, Brad Reitmeyer, Chris Del Guercio, Daniel Stone, Edward Hervey, Emil Pettersson, He -Junyan, Jordan Petridis, Joshua Breeden, L. E. Segovia, Martin Nordholts, Mathieu Duponchelle, Matthew Waters, Nirbheek Chauhan, -Philippe Normand, Piotr Brzeziński, Rafael Carício, Robert Ayrapetyan, Robert Mader, Sebastian Dröge, Seungha Yang, Shengqi Yu, -Stéphane Cerveau, Tim-Philipp Müller, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.24.4 - -- List of Merge Requests applied in 1.24.4 -- List of Issues fixed in 1.24.4 - -1.24.5 - -The fifth 1.24 bug-fix release (1.24.5) was released on 20 June 2024. - -This release only contains bugfixes and it should be safe to update from 1.24.x. - -Highlighted bugfixes in 1.24.5 - -- webrtcsink: Support for AV1 via nvav1enc, av1enc or rav1enc encoders -- AV1 RTP payloader/depayloader fixes to work correctly with Chrome and Pion WebRTC -- av1parse, av1dec error handling/robustness improvements -- av1enc: Handle force-keyunit events properly for WebRTC -- decodebin3: selection and collection handling improvements -- hlsdemux2: Various fixes for discontinuities, variant switching, playlist updates -- qml6glsink: fix RGB format support -- rtspsrc: more control URL handling fixes -- v4l2src: Interpret V4L2 report of sync loss as video signal loss -- d3d12 encoder, memory and videosink fixes -- vtdec: more robust error handling, fix regression -- ndi: support for NDI SDK v6 -- Various bug fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- promise: Don’t use g_return_* for internal checks -- debug: Add missing gst_debug_log_id_literal() dummy with gst_debug=false -- ptp-helper: Add GNU/Hurd support - -gst-plugins-base - -- uridecodebin3: Don’t hold PLAY_ITEMS lock when activating them -- decodebin3: Always ensure we end up with parsebin or identity -- decodebin3: Properly support changing input collections -- decodebin3: Avoid usage of parsebin even more -- decodebin3: Fix dealing with input without caps -- video-info: Don’t crash in gst_video_info_is_equal() if one videoinfo is zero-initialized - -gst-plugins-good - -- flacparse: fix buffer overflow -- hlsdemux2: Various fixes for discontinuities, variant switching, playlist updates -- qml6glsink: fix RGB format support -- rtpdtmfdepay: fix caps negotiation with audioconvert -- rtpdtmfsrc: fix leak when shutting down mid-event -- rtspsrc: fix invalid seqnum assertions -- rtspsrc: Various control URL handling fixes -- v4l2src: Interpret V4L2 report of sync loss as video signal loss - -gst-plugins-bad - -- av1parse: Do not return error when expectedFrameId mismatch -- av1dec: Don’t treat decoding errors as fatal and print more error details -- av1enc: Handle force-keyunit events properly by requesting keyframes -- codectimestamper: never set DTS to NONE -- d3d12encoder: Do not print error log for not-supported feature -- d3d12memory: Fix staging buffer alignment -- d3d12videosink: Disconnect window signal handler on dispose as intended -- dtlssrtpenc: Don’t crash if no pad name is provided when requesting a new pad -- glcolorconvert: update existing sync meta if outbuf has one -- pcapparse: Parsing code assumes unaligned memory accesses are OK -- pcapparse: Avoid unaligned memory access -- tsdemux: Fix maximum PCR/DTS values -- vtdec: Improve error handling in edge cases -- vtdec, qtdemux: regression in 1.24.3 - internal data stream error -- uvcgadget: Use g_path_get_basename instead of libc basename - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- gtk4: update flatpak integration code -- ndi: Add support for loading NDI SDK v6 -- reqwesthttpsrc: Fix race condition when unlocking -- rtp: Don’t restrict payload types for payloaders -- rtp: av1pay: Correctly use N flag for marking keyframes -- rtp: av1depay: Parse internal size fields of OBUs and handle them -- webrtcsink: Refactor value retrieval to avoid lock poisoning -- webrtcsink: Add support for AV1 -- webrtc: Update to async-tungstenite 0.26 -- Fix various new clippy 1.79 warnings -- meson: Fix various issues in dependency management, feature detection, some regressions, and add logging - -gst-libav - -- No changes - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-omx - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- No changes - -gst-devtools, gst-validate + gst-integration-testsuites - -- No changes - -gst-examples - -- No changes - -Development build environment - -- No changes - -Cerbero build tool and packaging changes in 1.24.5 - -- osxrelocator: Fix RPATHs in deeply nested libraries - -Contributors to 1.24.5 - -Angelo Verlain, Chris Del Guercio, Corentin Damman, Edward Hervey, Francisco Javier Velázquez-García, He Junyan, Jakub Adam, -Jakub Vaněk, Khem Raj, L. E. Segovia, Martin Nordholts, Mathieu Duponchelle, Nirbheek Chauhan, Piotr Brzeziński, Samuel -Thibault, Sebastian Dröge, Sergey Krivohatskiy, Seungha Yang, Tim-Philipp Müller, Zach van Rijn, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.24.5 - -- List of Merge Requests applied in 1.24.5 -- List of Issues fixed in 1.24.5 - -1.24.6 - -The sixth 1.24 bug-fix release (1.24.6) was released on 29 July 2024. - -This release only contains bugfixes and it should be safe to update from 1.24.x. - -Highlighted bugfixes in 1.24.6 - -- Fix compatibility with FFmpeg 7.0 -- qmlglsink: Fix failure to display content on recent Android devices -- adaptivedemux: Fix handling of closed caption streams -- cuda: Fix runtime compiler loading with old CUDA tookit -- decodebin3 stream selection handling fixes -- d3d11compositor, d3d12compositor: Fix transparent background mode with YUV output -- d3d12converter: Make gamma remap work as intended -- h264decoder: Update output frame duration for interlaced video when second field frame is discarded -- macOS audio device provider now listens to audio devices being added/removed at runtime -- Rust plugins: audioloudnorm, s3hlssink, gtk4paintablesink, livesync and webrtcsink fixes -- videoaggregator: preserve features in non-alpha caps for subclasses with non-system memory sink caps -- vtenc: Fix redistribute latency spam -- v4l2: fixes for complex video formats -- va: Fix strides when importing DMABUFs, dmabuf handle leaks, and blocklist unmaintained Intel i965 driver for encoding -- waylandsink: Fix surface cropping for rotated streams -- webrtcdsp: Enable multi_channel processing to fix handling of stereo streams -- Various bug fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- downloadbuffer: fix push mode -- queue: queue2: multiqueue: Don’t work with segment.position if buffers have no timestamps -- gst-inspect-1.0: Fix leak of plugin/feature - -gst-plugins-base - -- decodebin3: Fix detection of selection done -- glvideomixer: Fix critical when setting start-time-selection -- parsebin: accept-caps handling for elements with unusual sink pad names -- subparse: Don’t use jit for regular expressions when running in valgrind -- subparse: put valgrind header availability define into config.h for subparse -- videoaggregator: preserve features in non-alpha caps -- videoscale: correct classification error -- meson: Fix invalid include flag in uninstalled gl pc file -- Fix various memory leaks - -gst-plugins-good - -- adaptivedemux: Fix handling closed caption streams -- qml/glsink: also support GLES2 needing shader ‘precision’ directives -- v4l2object: use v4l2 reported width for padded_width when complex video formats -- v4l2: meson: fix SIZEOF_OFF_T when cross-compiling with Meson >= 1.3.0 - -gst-plugins-bad - -- svtav1enc: Fix segfault when flushing -- avfdeviceprovider: Fix debug category initialization -- osxaudiodeviceprovider: Listen for audio devices being added/removed -- avtp: Fixed Linux/Alpine 3.20 build -- cuda: Fix runtime compiler loading with old CUDA tookit -- d3d11compositor, d3d12compositor: Fix transparent background mode with YUV output -- d3d11converter: Fix runtime compiled shader code -- d3d12converter: Make gamma remap work as intended -- h264decoder: Update output frame duration when second field frame is discarded -- isac: Work around upstream having no shared library support for MSVC -- lc3: remove bitstream comparison in the tests -- qroverlay: redraw overlay when caps changes -- qsv: Fix critical warnings -- rtmp2: guard against calling gst_amf_node_get_type() with NULL -- srtsrc: fix case fallthrough of authentication param -- va: Blocklist unmaintained i965 driver for encoding -- va: Fix strides when importing DMABUFs -- va: Fix dmabuf handle leaks -- vadisplay: fix minor version check -- vkh265dec: Fix H.264 ref in logs -- vulkan: fix wrong stages or access in barriers -- vtenc: Fix redistribute latency spam -- waylandsink: Fix surface cropping for rotated streams -- webrtcdsp: Enable multi_channel processing - -gst-plugins-ugly - -- asfdemux: Be more lenient towards malformed header, fixes playback of files written by VLC - -GStreamer Rust plugins - -- audioloudnorm: Fix limiter buffer index wraparound off-by-one for the last buffer -- aws: s3hlssink: Do not call abort before finishing uploads -- gtk4paintablesink: Support RGBx formats in SW paths -- gtk4paintablesink: default to force-aspect-ratio=false for Paintable -- livesync: Use the actual output buffer duration of gap filler buffers -- livesync: Allow queueing up to latency buffers, also sync on the first buffer and add sync property -- webrtcsink: fix property types for rav1enc AV1 encoder - -gst-libav - -- Fix compatibility with ffmpeg 7 -- avauddec: Fix crash on stop() -- avmux: Fix crash when muxer doesn’t get codecid - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-omx - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- ges: Various leak fixes - -gst-devtools, gst-validate + gst-integration-testsuites - -- validate: Remove G_REGEX_OPTIMIZE usage, helps avoid valgrind issues - -gst-examples - -- No changes - -Development build environment - -- libgudev wrap: add fallback uri -- liblc3 wrap: update to v1.1.1 - -Cerbero build tool and packaging changes in 1.24.6 - -- meson: Backport fix for Glib including a GCC-only flag in the pkg-config file -- libsoup: Workaround build error with GCC 14 -- libltc: Fix Windows build -- webrtc-audio-processing: Fix MinGW build -- libvpx: Also build a shared lib on macOS -- glib: Fix Windows build -- osxrelocator: Fix framework entrypoints being unable to load dylibs -- gobject-introspection, recipe: Fix more fallout from the Meson dylib ID fixes -- cargo-c.recipe: Ensure that we can change the id and rpath - -Contributors to 1.24.6 - -Chris Spoelstra, Edward Hervey, François Laignel, Guillaume Desmottes, Jakub Adam, Jan Schmidt, Jordan Petridis, L. E. Segovia, -Loïc Yhuel, Matthew Waters, Nirbheek Chauhan, Piotr Brzeziński, Robert Mader, Ruben Gonzalez, Sanchayan Maity, Sebastian Dröge, -Sebastian Gross, Seungha Yang, Shengqi Yu, Taruntej Kanakamalla, Tim-Philipp Müller, tomaszmi, Víctor Manuel Jáquez Leal, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.24.6 - -- List of Merge Requests applied in 1.24.6 -- List of Issues fixed in 1.24.6 - -1.24.7 - -The seventh 1.24 bug-fix release (1.24.7) was released on 21 August 2024. - -This release only contains bugfixes and it should be safe to update from 1.24.x. - -Highlighted bugfixes in 1.24.7 - -- Fix APE and Musepack audio file and GIF playback with FFmpeg 7.0 -- playbin3: Fix potential deadlock with multiple playbin3s with glimagesink used in parallel -- qt6: various qmlgl6src and qmlgl6sink fixes and improvements -- rtspsrc: expose property to force usage of non-compliant setup URLs for RTSP servers where the automatic fallback doesn’t - work -- urisourcebin: gapless playback and program switching fixes -- v4l2: various fixes -- va: Fix potential deadlock with multiple va elements used in parallel -- meson: option to disable gst-full for static-library build configurations that do not need this -- cerbero: libvpx updated to 1.14.1; map 2022Server to Windows11; disable rust variant on Linux if binutils is too old -- Various bug fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- bin: Don’t keep the object lock while setting a GstContext when handling NEED_CONTEXT -- core: Log pad name, not just the pointer - -gst-plugins-base - -- pbutils: descriptions: use subsampling factor to get YUV subsampling -- rtspconnection: Handle invalid argument properly -- urisourcebin: Actually drop EOS on old-school pad switch -- urisourcebin: Don’t hold lock when emitting about-to-finish -- gst-launch deadlock with two playbin3s -- xvimagesink: Fix crash in pool on error - -gst-plugins-good - -- qmlgl6src: Fix crash when use-default-fbo is not set -- qt6glwindow: Fallback to GL_RGB on CopyTexImage2D error, fixing usage with eglfs backend -- qt6glwindow: Only use GL_READ_FRAMEBUFFER when we do blits -- qt6: glwindow: Don’t leak previously rendered buffer -- rtspsrc: expose property for forcing usage of non-compliant URLs -- v4l2object: fix ARIB_STD_B67 colorimetry unmatch issue -- v4l2: Fix colorimetry mismatch for encoded format with RGB color-matrix - -gst-plugins-bad - -- aom: av1enc: restrict allowed input width and height -- h264parse: bypass check for length_size_minus_one -- h265parse: Reject FD received before SPS -- msdk: replace strcmp with g_strcmp0 -- msdkvc1dec crashes (segfault) -- rsvgoverlay: add debug category -- va: don’t use GST_ELEMENT_WARNING in set_context() vmethod to fix potential deadlock -- va: deadlock when playing two videos at once -- webrtc: Add missing G_BEGIN/END_DECLS in header for C++ -- wpe: initialize threading.ready before reading it - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- gtk4: Move the dmabuf cfg to the correct bracket level - -gst-libav - -- avdemux: Fix deadlock with FFmpeg 7.x when serialized events are received from upstream while opening, such as e.g. APE - files with tags -- libav: return EOF when stream is out of data -- avdemux: Never return 0 from read function, which would lead to infinite loops - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- vaapi: Fix sps_max_dec_pic_buffering_minus1 value in h265 decoder - -gstreamer-sharp - -- No changes - -gst-omx - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- nlecomposition: Don’t leak QoS events - -gst-devtools, gst-validate + gst-integration-testsuites - -- validate: Fix copying of action name - -gst-examples - -- No changes - -Development build environment - -- Add a meson option to disable gst-full for static-library build configurations that do not need this - -Cerbero build tool and packaging changes in 1.24.7 - -- Disable rust variant on Linux if binutils is too old -- Added 2022Server to the Windows platform distro map as Windows11 -- libvpx: Update to 1.14.1 - -Contributors to 1.24.7 - -David Rosca, Edward Hervey, Guillaume Desmottes, Hou Qi, Jan Schmidt, Jesper Jensen, Jordan Petridis, Jordan Yelloz, L. E. -Segovia, Lyra McMillan, Mathieu Duponchelle, Max Romanov, Nicolas Dufresne, Nirbheek Chauhan, Qian Hu (胡骞), Sebastian Dröge, -Tim-Philipp Müller, Víctor Manuel Jáquez Leal, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.24.7 - -- List of Merge Requests applied in 1.24.7 -- List of Issues fixed in 1.24.7 - -1.24.8 - -The eigth 1.24 bug-fix release (1.24.8) was released on 19 September 2024. - -This release only contains bugfixes and it should be safe to update from 1.24.x. - -Highlighted bugfixes in 1.24.8 - -- decodebin3: collection handling fixes -- encodebin: Fix pad removal (and smart rendering in gst-editing-services) -- glimagesink: Fix cannot resize viewport when video size changed in caps -- matroskamux, webmmux: fix firefox compatibility issue with Opus audio streams -- mpegtsmux: Wait for data on all pads before deciding on a best pad unless timing out -- splitmuxsink: Override LATENCY query to pretend to downstream that we’re not live -- video: QoS event handling improvements -- voamrwbenc: fix list of bitrates -- vtenc: Restart encoding session when certain errors are detected -- wayland: Fix ABI break in WL context type name -- webrtcbin: Prevent crash when attempting to set answer on invalid SDP -- cerbero: ship vp8/vp9 software encoders again, which went missing in 1.24.7; ship transcode plugin -- Various bug fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- clock: Fix unchecked overflows in linear regression code -- meta: Add missing include of gststructure.h -- pad: Check data NULL-ness when probes are stopped -- aggregator: Immediately return NONE from simple_get_next_time() on non-TIME segments - -gst-plugins-base - -- decodebin3: Fix collection identity check -- encodebin: Fix pad removal -- glimagesink: Fix cannot resize viewport when video size changed in caps -- video: Don’t overshoot QoS earliest time by a factor of 2 -- meson: gst-play: link to libm - -gst-plugins-good - -- jackaudiosrc: actually use the queried ports from JACK -- matroskamux: Include end padding in the block duration for Opus streams, fixing firefox compatibility -- osxaudio: Avoid dangling pointer on shutdown -- splitmuxsink: Override LATENCY query to pretend to downstream that we’re not live -- v4l2bufferpool: actually queue back the empty buffer flagged LAST -- v4l2videoenc: unref buffer pool after usage properly -- v4l2: encoder: Add dynamic framerate support - -gst-plugins-bad - -- GstPlay: Name the different bus -- GstPlay: check whether stream is seekable before seeking when state change -- GstPlayer: Check GstPlayerSignalDispatcher type -- mpegtsmux: Wait for data on all pads before deciding on a best pad unless timing out -- mpegtsmux: Fix refcounting issue when selecting the best pad -- uvcsink: fix caps event handling -- v4l2codecs: h265: Minimize memory allocation -- voamrwbenc: fix list of bitrates -- vtenc: Restart encoding session when certain errors are detected -- wayland: Fix ABI break in WL context type name -- webrtcbin: Prevent crash when attempting to set answer on invalid SDP -- wpe: fix gst-launch example - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- No changes - -gst-libav - -- No changes - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-omx - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- discoverer-manager: Fix race leading to assertion when stopping -- structured-interface: Fix memory leak of invalid fields GList - -gst-devtools, gst-validate + gst-integration-testsuites - -- pad-monitor: Fix remaining pad function data handling -- pad-monitor: Fix pad function data properly - -gst-examples - -- No changes - -Development build environment - -- meson: Update openjpeg wrap to 2.5.2, fixes a warning - -Cerbero build tool and packaging changes in 1.24.8 - -- No vp8 / vp9 encoders packaged (regression) -- libvpx: Fix codec detection to fix vp8enc/vp9enc elements not being shipped -- gst-plugins-bad: Add missing transcode plugin - -Contributors to 1.24.8 - -Andoni Morales Alastruey, Arun Raghavan, Benjamin Gaignard, Carlos Bentzen, Chao Guo, Edward Hervey, Francis Quiers, Guillaume -Desmottes, Hou Qi, Jan Schmidt,, L. E. Segovia, Michael Tretter, Nicolas Dufresne, Nirbheek Chauhan, Peter Kjellerstedt, -Philippe Normand, Piotr Brzeziński, Randy Li (ayaka), Sebastian Dröge, Thibault Saunier, Tim-Philipp Müller, Wim Taymans, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.24.8 - -- List of Merge Requests applied in 1.24.8 -- List of Issues fixed in 1.24.8 - -1.24.9 - -The ninth 1.24 bug-fix release (1.24.9) was released on 30 October 2024. - -This release only contains bugfixes and a security fix and it should be safe to update from 1.24.x. - -Highlighted bugfixes in 1.24.9 - -- gst-rtsp-server security fix -- GstAggregator start time selection and latency query fixes for force-live mode -- audioconvert: fix dynamic handling of mix matrix, and accept custom upstream event for setting one -- encodebin: fix parser selection for encoders that support multiple codecs -- flvmux improvments for pipelines where timestamps don’t start at 0 -- glcontext: egl: Unrestrict the support base DRM formats -- kms: Add IMX-DCSS auto-detection in sink and fix stride with planar formats in allocator -- macOS main application event loop fixes -- mpegtsdemux: Handle PTS/DTS wraparound with ignore-pcr=true -- playbin3, decodebin3, parsebin, urisourcebin: fix races, and improve stability and stream-collection handling -- rtpmanager: fix early RTCP SR generation for sparse streams like metadata -- qml6glsrc: Reduce capture delay -- qtdemux: fix parsing of rotation matrix with 180 degree rotation -- rtpav1depay: added wait-for-keyframe and request-keyframe properties -- srt: make work with newer libsrt versions and don’t re-connect on authentication failure -- v4l2 fixes and improvement -- webrtcsink, webrtcbin and whepsrc fixes -- cerbero: fix Python 3.13 compatibility, g-i with newer setuptools, bootstrap on Arch Linux; iOS build fixes -- Ship qroverlay plugin in binary packages - Various bug fixes, memory leak fixes, and other stability and reliability - improvements -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- aggregator: fix start time selection first with force-live -- aggregator: fix live query when force-live is TRUE -- parse-launch: Make sure children are bins before recursing in -- macos: Fix race conditions in cocoa/application main event loop -- multiqueue: Do not unref the query we get in pad->query - -gst-plugins-base - -- audioconvert: fix dynamic handling of mix matrix, accept custom upstream event for setting one -- playback: Fix a variety of decodebin3/parsebin/urisourcebin races -- playbin3: prevent crashing trying to play a corrupted mp4 file (WARNING : HIGH PITCHED CORRUPTED SOUND) -- urisourcebin: Ensure all stream-start are handled -- urisourcebin: Allow more cases for posting stream-collection -- decodebin3: Make update/posting of collection messages atomic -- decodebin3: send selected stream message as long as not all the tracks can’t select decoders -- urisourcebin/parsebin: Improve collection creation and handling -- encodebasebin: Miscellaneous fixes -- allocators: drmdumb: Fix bpp value for P010 -- gldownload: use gst_gl_sync_meta_wait_cpu() -- Revert “meson: Fix invalid include flag in uninstalled gl pc file” -- gl: Fix configure error when libdrm is a subproject -- glcontext: egl: Unrestrict the support base DRM formats -- exiftag: Check the result of gst_date_time_new_local_time(), fixes criticals with malformed EXIF tags - -gst-plugins-good - -- flvmux: Use first running time on the initial header instead of 0 -- rtpmanager: skip RTPSources which are not ready in the RTCP generation -- rtppassthroughpay: Fix reading clock-rate and payload type from caps -- qml6glsrc: Reduce capture delay -- qtdemux: fix parsing of matrix with 180 rotation -- qtdemux: Check fourcc of a second CEA608 atom instead of assuming it’s cdt2 -- qtdemux: Skip zero-sized boxes instead of stopping to look at further boxes -- twcc: Handle wrapping of reference time -- v4l2object: append non colorimetry structure to probed caps -- v4l2: Various fixes and improvement - -gst-plugins-bad - -- avfdeviceprovider: Fix leak from the GstCaps -- codecparsers: add debug categories to bitwriters -- codectimestamper: Fix gint wraparound in pts_compare_func -- dvxa: Explicitly use cpp_std=c++11 -- GstPlay: message parsing and documentation improvements -- h26xbitwriter: false have_space if aligning fails on aud -- kmsallocator: fix stride with planar formats -- kmssink: Add IMX-DCSS auto-detection -- mpegtsdemux: Handle PTS/DTS wraparound with ignore-pcr=true -- rtmp2sink: Initialize base_ts / last_ts with the actual first observed timestamp -- scenechange: fix memory leak -- srtsink: Register SRT listen callback before binding socket -- srt: Don’t attempt to reconnect on authentication failures -- tests: va: fix vapostproc test for DMABuf -- tests: lc3: Allocate the same size for the buffer and the data -- va: Fix libdrm include, plus meson and wrap changes -- vaav1enc: Do not enable palette mode by default -- vp8decoder: Fix resolution change handling -- vtdec: add support for level 6 6.1 and 6.2 -- wayland: Add NV15 support -- webrtcbin: Clean up bin elements when datachannel is removed - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- Build: turn lto off for dev profile for faster dev builds -- fmp4 hls_live example: Don’t set header-update-mode=update, no need to update the header in live mode -- gtk4paintablesink: Don’t check for a GL context when filtering dmabuf caps -- livesync: Log latency query results when handling latency query too -- onvifmetadatapay: Set output caps earlier, so upstream can send gap events earlier -- rtpav1depay: Add wait-for-keyframe and request-keyframe properties -- spotify: tweak dependencies -- transcriberbin: fix panic during gst-inspect-1.0 -u -- webrtcsink: fix segment format mismatch with remote offer -- webrtcsink: fix assertions when finalizing -- webrtcsink: Fix typo in “turn-servers” property description -- whepsrc: Fix incorrect default caps - -gst-libav - -- avviddec: Unlock video decoder stream lock temporarily while finishing frames - -gst-rtsp-server - -- rtsp-server: Remove pointless assertions that can happen if client provides invalid rates (security fix) - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-omx - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- ges: Fix name of GESFrameCompositionMeta API type (which caused gobject-introspection failures at build time) - -gst-devtools, gst-validate + gst-integration-testsuites - -- validate: Ignore flaky dash playbin3 issue -- validate: Blacklist more netsim tests - -gst-examples - -- No changes - -Development build environment - -- No changes - -Cerbero build tool and packaging changes in 1.24.9 - -- Fix Python 3.13 compatibility -- gobject-introspection: Import patch to build against newer setuptools -- Switch from wget to curl on Fedora 40 and newer -- bootstrap: Add missing dependencies on Arch Linux -- harfbuzz: Add CXXFLAGS to fix broken build on iOS -- openssl.recipe: Stop using non-existent domain in primary tarball url -- gst-plugins-bad: ship qroverlay plugin - -Contributors to 1.24.9 - -Andoni Morales Alastruey, Arun Raghavan, Benjamin Gaignard, Corentin Damman, Dave Lucia, Edward Hervey, Elliot Chen, eri, -Francisco Javier Velázquez-García, Guillaume Desmottes, He Junyan, Hugues Fruchet, Jakub Adam, James Cowgill, Jan Alexander -Steffens (heftig), Jan Schmidt, Johan Sternerup, Jordan Petridis, L. E. Segovia, Mathieu Duponchelle, Nick Steel, Nicolas -Dufresne, Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Peter Stensson, Philippe Normand, Piotr Brzeziński, Sanchayan Maity, -Sebastian Dröge, Shengqi Yu, Stéphane Cerveau, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, -Weijian Pan, Xavier Claessens, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.24.9 - -- List of Merge Requests applied in 1.24.9 -- List of Issues fixed in 1.24.9 - -1.24.10 - -The tenth 1.24 bug-fix release (1.24.10) was released on 03 December 2024. - -This release only contains bugfixes and security fixes. It should be safe to update from 1.24.x and we would recommend you -update at your earliest convenience. - -Highlighted bugfixes in 1.24.10 - -- More than 40 security fixes across a wide range of elements following an audit by the GitHub Security Lab, including the - MP4, Matroska, Ogg and WAV demuxers, subtitle parsers, image decoders, audio decoders and the id3v2 tag parser. -- avviddec: Fix regression that could trigger assertions about width/height mismatches -- appsink and appsrc fixes -- closed caption handling fixes -- decodebin3 and urisourcebin fixes -- glupload: dmabuf: Fix emulated tiled import -- level: fix LevelMeta values outside of the stated range -- mpegtsmux, flvmux: fix potential busy looping with high cpu usage in live mode -- pipeline dot file graph generation improvements -- qt(6): fix criticals with multiple qml(6)gl{src,sink} -- rtspsrc: Optionally timestamp RTP packets with their receive times in TCP/HTTP mode to enable clock drift handling -- splitmuxsrc: reduce number of file descriptors used -- systemclock: locking order fixes -- v4l2: fix possible v4l2videodec deadlock on shutdown; 8-bit bayer format fixes -- x265: Fix build with libx265 version >= 4.1 after masteringDisplayColorVolume API change -- macOS: fix rendering artifacts in retina displays, plus ptp clock fixes -- cargo: Default to thin lto for the release profile (for faster builds with lower memory requirements) -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements -- Translation updates - -gstreamer - -- allocator: Avoid integer overflow when allocating sysmem and avoid integer overflow in qtdemux theora extension parsing -- deviceprovider: fix leaking hidden providers -- gstreamer: prefix debug dot node names to prevent splitting -- pad: Never push sticky events in response to a FLUSH_STOP -- systemclock: Fix lock order violation and some cleanup -- utils: improve gst_util_ceil_log2() -- ptp: use ip_mreq instead of ip_mreqn for macos -- tracers: unlock leaks tracer if already tracking - -gst-plugins-base - -- appsink: fix timeout logic for gst_app_sink_try_pull_sample() -- appsrc: Fix use-after-free when making buffer / buffer-lists writable -- audiostreamalign: Don’t report disconts for every buffer if alignment-threshold is too small -- decodebin3: Unify collection switching checks -- discoverer: Don’t print channel layout for more than 64 channels -- discoverer: Make sure the missing elements details array is NULL-terminated in a thread-safe way -- discoverer: fix segfault in race condition adding a new uri -- id3v2: Don’t try parsing extended header if not enough data is available -- glupload: dmabuf: Fix emulated tiled import -- gl: cocoa: fix rendering artifacts in retina displays -- gl: meson: Don’t use libdrm_dep in cc.has_header() -- oggstream: fix invalid ogg_packet->packet accesses, address invalid writes CVE -- opusdec: Set at most 64 channels to NONE position -- playbin: Fix caps leak in get_n_common_capsfeatures() -- playbin3: ERROR when setting new HLS URI with instant-uri=true -- sdp: Add debug categories for message and mikey modules -- ssaparse: Search for closing brace after opening brace -- splitmuxsrc: Convert part reader to a bin with a non-async bus -- subparse: Check for NULL return of strchr() when parsing LRC subtitles -- streamsynchronizer: Only send GAP events out of source pads -- urisourcebin: Also use event probe for HLS use-cases -- video-converter: Set TIME segment format on appsrc -- vorbisdec: Set at most 64 channels to NONE position -- Translation for gst-plugins-base 1.24.0 not sync-ed with Translation Project -- Update translations - -gst-plugins-good - -- avisubtitle: Fix size checks and avoid overflows when checking sizes -- flvmux: Don’t time out in live mode if no timestamped next buffer is available -- gdkpixbufdec: Check if initializing the video info actually succeeded -- jpegdec: Directly error out on negotiation failures -- level: Fix integer overflow when filling LevelMeta -- level: produces level value outside of Stated Range -- matroskademux: header parsing fixes -- qtdemux: header and sample table parsing fixes -- qtdemux: avoid integer overflow in theora extension parsing -- qt(6)/material: ensure that we always update the context in setBuffer() -- rtspsrc: Optionally timestamp RTP packets with their receive times in TCP/HTTP mode -- rtp: Fix precision loss in gst_rtcp_ntp_to_unix() -- rtpfunnel: Ensure segment events are forwarded after flushs -- rtpmanager: don’t map READWRITE in twcc header ext -- rtph264depay, rtph265depay: Fix various OOB reads / NULL pointer dereferences in parameter-set string handling -- shout2send: Unref event at the end of the event function -- udpsrc: protect cancellable from unlock/unlock_stop race -- v4l2object: Fixed incorrect maximum value for int range -- v4l2object: Remove little endian marker on 8 bit bayer format names -- v4l2videodec: fix freeze race condition -- wavparse: Fix various (missing) size checks and other parsing problems - -gst-plugins-bad - -- ccconverter: Don’t override in_fps_entry when trying to take output -- ccutils fixes -- kmssink: Add mediatek auto-detection -- mpegtsmux: Don’t time out in live mode if no timestamped next buffer is available (fixes busy loop with high cpu usage) -- mpegvideoparse: do not set delta unit flag on unknown frame type -- mxfmux: Fix off-by-one in the month when generating a timestamp for now -- timecodestamper: Don’t fail the latency query in LTC mode if we have no framerate -- webrtc: don’t crash on invalid bundle id -- x265: Allow building with x265-4.1 (after masteringDisplayColorVolume API change) -- meson: Don’t unconditionally invoke the libsoup subproject for tests - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- cargo: Default to thin lto for the release profile (for faster builds with lower memory requirements) - -gst-libav - -- avcodecmap: Use avcodec_get_supported_config() instead of struct fields -- libav: viddec: provide details if meta has the wrong resolution -- avviddec: Unlock video decoder stream lock temporarily while finishing frames - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-omx - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- No changes - -gst-devtools, gst-validate + gst-integration-testsuites - -- validate: Fix leaks in ssim components - -gst-examples - -- No changes - -Development build environment - -- meson: Fix failing libva wrap file build - -Cerbero build tool and packaging changes in 1.24.10 - -- shell: fix TemporaryDirectory error with the with statement when ZSH -- ci: update macos CI to 15 Sequoia - -Contributors to 1.24.10 - -Albert Sjolund, Alicia Boya García, Andoni Morales Alastruey, Antonio Morales, Edward Hervey, Guillaume Desmottes, Jan Alexander -Steffens (heftig), Jan Schmidt, Jonas Rebmann, Jordan Petridis, Mathieu Duponchelle, Matthew Waters, Nicolas Dufresne, Nirbheek -Chauhan, Pablo Sun, Philippe Normand, Robert Rosengren, Ruben Gonzalez, Sebastian Dröge, Seungmin Kim, Stefan Riedmüller, -Stéphane Cerveau, Taruntej Kanakamalla, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, Tomáš Polomský, Wilhelm Bartel, Xi -Ruoyao, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.24.10 - -- List of Merge Requests applied in 1.24.10 -- List of Issues fixed in 1.24.10 - -1.24.11 - -The eleventh 1.24 bug-fix release (1.24.11) was released on 06 January 2025. - -This release only contains bugfixes and it should be safe to update from 1.24.x. - -Highlighted bugfixes in 1.24.11 - -- playback: Fix SSA/ASS subtitles with embedded fonts -- decklink: add missing video modes and fix 8K video modes -- matroskamux: spec compliance fixes for audio-only files -- onnx: disable onnxruntime telemetry -- qtdemux: Fix base offset update when doing segment seeks -- srtpdec: Fix a use-after-free issue -- (uri)decodebin3: Fix stream change scenarios, possible deadlock on shutdown -- video: fix missing alpha flag in AV12 format description -- avcodecmap: Add some more channel position mappings -- cerbero bootstrap fixes for Windows 11 -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- No changes - -gst-plugins-base - -- appsrc: Decrease log level for item drop -- gl: raise WARNING instead of ERROR when no connector is connected -- decodebin3: Free main input even if it is not part of the list of inputs -- urisourcebin: Avoid deadlock on shutdown -- urisourcebin: Only rewrite stream-start event once -- urisourcebin/(uri)decodebin3: Fix stream change scenarios -- urisourcebin: Reference counting leak -- playbin3: leak detected with A/V playback and window closed -- videodecoder: Gracefully handle missing data without prior input segment -- videodecoder: set decode only flag by decode only buffer -- video: fix AV12 format lacking the GST_VIDEO_FORMAT_FLAG_ALPHA flag. -- Fix SSA/ASS subtitles with embedded fonts - -gst-plugins-good - -- matroskamux: Fix audio-only stream conditions and consider audio buffers as keyframes when writing out simpleblocks -- qtdemux: fix accumulated base offset in segment seeks -- rtppassthroughpay: ensure buffer is writable before mapping writable -- rtpsession: Fix twcc stats structure leak -- v4l2: object: Add P010 format -- v4l2videodec: release decode only frame in input list - -gst-plugins-bad - -- decklink: add missing video modes, fix 8K video modes -- onnx: disable onnxruntime telemetry -- srtpdec: fix build when libsrtp1 is being used -- srtpdec: Fix a use-after-free buffer issue -- va: display: Optimize out some property indirection -- vp9parse/av1parse: Add video codec tag to the tag list -- webrtc: Simplify fmtp handling in codec stats -- webrtcbin: Fix potential deadlock on bin elements cleanup -- zxing: Replace deprecated DecodeHints with ReaderOptions -- meson: Also disable drm on GNU/Hurd - -gst-plugins-ugly +### Windows -- No changes +- webview2src: new Microsoft WebView2 based web browser source element -GStreamer Rust plugins +- The mediafoundation plugin can also be built with MinGW now. -- No changes +- The GTK3 plugin has gained support for OpenGL/WGL on Windows -gst-libav +- qsv: Add support for d3d12 interop in encoder, via D3D11 textures -- avcodecmap: Add some more channel position mappings +### Cerbero -gst-rtsp-server +Cerbero is a meta build system used to build GStreamer plus dependencies on platforms where dependencies are not readily +available, such as Windows, Android, iOS, and macOS. -- No changes +General improvements -gstreamer-vaapi +- New features: -- meson: Re-added required: lines accidentally removed + - Python bindings support has been re-introduced and now supports Linux, Windows (MSVC) and macOS. Simply downloading the + official binaries and setting PYTHONPATH to the appropriate directory is sufficient. -gstreamer-sharp + - This should make it easier for macOS and Windows users to use Python libraries, frameworks, and projects that use + GStreamer such as Pitivi and gst-python-ml. -- No changes + - Introspection support has been re-introduced on Linux, Windows (MSVC), and macOS. -gst-omx + - New variants assert and checks to disable GLib assertions and runtime checks for performance reasons. Please note that + these are not recommended because they have significant behavioural side-effects, make debugging harder, and should only + be enabled when targeting extremely resource-constrained platforms. -- No changes +- API/ABI changes: -gst-python + - Libsoup has been upgraded from 2.74 to 3.6, which is an API and ABI breaking change. The soup and adaptivedemux2 plugins + are unchanged, but your applications may need updating since libsoup-2.4 and libsoup-3.0 cannot co-exist in the same + process. -- No changes + - OpenSSL has been updated from 1.1.1 to 3.4, which is an ABI and API breaking change. Plugins are unchanged, but your + applications may need updating. -gst-editing-services +- Plugins added: -- ges: Fix some reference counting and error handling -- ges-meta-container: Fix the GET_INTERFACE macro + - The svt-av1 plugin is now shipped in the binary releases for all platforms. -gst-devtools, gst-validate + gst-integration-testsuites + - The svt-jpeg-xs plugin is now shipped in the binary releases for all platforms. -- No changes + - The x265 plugin is now shipped in the binary releases for all platforms. -gst-examples + - All gst-plugins-rs elements are now shipped in the binary releases for all platforms, except those that have C/C++ + system-deps like GTK4. For a full list, see the Rust section above. -- No changes +- Plugins changed: -Development build environment + - The rsvg plugin now uses librsvg written in Rust. The only side-effects of this should be better SVG rendering and + slightly larger plugin size. -- No changes + - The webrtc Rust plugin now also supports aws and livekit integrations . -Cerbero build tool and packaging changes in 1.24.11 +- Plugins removed: -- Fix bootstrap on Windows 11: Install WMIC when missing + - webrtc-audio-processing has been updated to 2.0, which means the isac plugin is no longer shipped. -Contributors to 1.24.11 +- Development improvements: -Armin Begovic, Benjamin Gräf, Cheung Yik Pang, Christian Meissl, Daniel Morin, Dean Zhang (张安迪), Edward Hervey, Emil -Ljungdahl, Francisco Javier Velázquez-García, Guillaume Desmottes, Jan Alexander Steffens (heftig), L. E. Segovia, Matthew -Waters, Max Romanov, Nicolas Dufresne, Philippe Normand, Robert Mader, Samuel Thibault, Sebastian Dröge, Stéphane Cerveau, -Thibault Saunier, Tim-Philipp Müller, + - Support for the shell command has been added to cross-macos-universal, since the prefix is executable despite being a + cross-compile target -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! + - More recipes have been ported away from Autotools to Meson and CMake, speeding up the build and increasing platform + support. -List of merge requests and issues fixed in 1.24.11 +#### macOS -- List of Merge Requests applied in 1.24.11 -- List of Issues fixed in 1.24.11 +- Python bindings support on macOS only supports using the Xcode-provided Python 3 -1.24.12 +- MoltenVK support in the applemedia plugin now also works on arm64 when doing a cross-universal build. -The twelfth 1.24 bug-fix release (1.24.12) was released on 29 January 2025. +#### iOS -This release only contains bugfixes and it should be safe to update from 1.24.x. +- CMake inside Xcode will soon be the recommended way to consume GStreamer when building iOS apps, similar to Android apps. -Highlighted bugfixes in 1.24.12 + - FindGStreamerMobile.cmake is the recommended way to consume GStreamer now -- d3d12: Fix shaders failing to compile with newer dxc versions -- decklinkvideosink: Fix handling of caps framerate in auto mode; also a decklinkaudiosink fix -- devicemonitor: Fix potential crash macOS when a device is unplugged -- gst-libav: Fix crash in audio encoders like avenc_ac3 if input data has insufficient alignment -- gst-libav: Fix build against FFmpeg 4.2 as in Ubuntu 20.04 -- gst-editing-services: Fix Python library name fetching on Windows -- netclientclock: Don’t store failed internal clocks in the cache, so applications can re-try later -- oggdemux: Seeking and duration handling fixes -- osxaudiosrc: Fixes for failing init/no output on recent iOS versions -- qtdemux: Use mvhd transform matrix and support for flipping -- rtpvp9pay: Fix profile parsing -- splitmuxsrc: Fix use with decodebin3 which would occasionally fail with an assertion when seeking -- tsdemux: Fix backwards PTS wraparound detection with ignore-pcr=true -- video-overlay-composition: Declare the video/size/orientation tags for the meta and implement scale transformations -- vtdec: Fix seeks occasionally hanging on macOS due to a race condition when draining -- webrtc: Fix duplicate payload types with RTX and multiple video codecs -- win32-pluginloader: Make sure not to create any windows when inspecting plugins -- wpe: Various fixes for re-negotiation, latency reporting, progress messages on startup -- x264enc: Add missing data to AvcDecoderConfigurationRecord in codec_data for high profile variants -- cerbero: Support using ccache with cmake if enabled -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements + - Tutorials and examples still use Xcode project files, but CMake support will be the active focus going forward -gstreamer +#### Windows -- device: Fix racy nullptr deref on macOS when a device is unplugged -- iterator: Added error handling to filtered iterators -- netclientclock: Don’t ever store failed internal clocks in the cache -- netclock-replay: use gst_c_args when building, fixing build failure on Solaris -- pluginloader-win32: create no window -- pluginloader-win32: fix use after free in find_helper_bin_location -- sparsefile: ensure error is set when read_buffer() returns 0 -- basetransform: fix incorrect logging inside gst_base_transform_query_caps +- The minimum supported OS version is now Windows 10. -gst-plugins-base + - GStreamer itself can still be built for an older Windows, so if your project is majorly impacted by this, please open an + issue with details. -- oggdemux: fixes seeking in some cases by not overwriting a valid duration with CLOCK_TIME_NONE -- video-overlay-composition: Declare the video/size/orientation tags for the meta & implement scale transformation -- Various fixes found from adding extra warning flags +- The Windows MSI installers are now based on WiX v5, with several improvements including a much faster MSI creation process, + improved naming in Add/Remove Programs, and more. -gst-plugins-good + - Windows installer packages: Starting with 1.26, due to security reasons, the default installation directory has changed + from C:\gstreamer to the Program Files folder, e.g. C:\Program Files (x86)\gstreamer for the 32-bit package on 64-bit + Windows. If you upgrade from 1.24 or older versions, the 1.26 installers will NOT keep using the existing folder. + Nevertheless if you were using C:\gstreamer we strongly recommend you double-check the install location. -- osxaudiosrc: Fixes for failing init/no output on recent iOS versions -- qtdemux: Use mvhd transform matrix and support for flipping -- qtmux: fix critical warnings on negotiation error -- rtpvp9pay: fix profile parsing -- splitmuxsrc: Ensure only a single stream-start event is pushed -- splitmuxsrc: decodebin3 Fails with assertion in mq_slot_handle_stream_start when seeking -- Various fixes found from adding extra warning flags + - Note for MSI packagers: Starting with 1.26, the installers were ported to WiX 5.0. As part of this, the property for + setting the installation directory has been changed to INSTALLDIR, and it now requires a full path to the desired + directory, e.g. C:\gstreamer instead of C:\. -gst-plugins-bad + - Cross-MinGW build no longer supports the creation of MSIs. Please use tarballs. -- decklinkvideosink: Fix handling of caps framerate in auto mode -- decklinkaudiosink: Don’t crash if started without corresponding video sink -- d3d12: Fix shaders failing to compile with newer dxc versions -- tsdemux: Fix backwards PTS wraparound detection with ignore-pcr=true -- vtdec: fix seeks hangs due to a race condition draining -- vtdec: seeks freeze the pipeline -- wayland: Print table split when DMABuf format changes -- webrtc: fix duplicate payload types with RTX and multiple video codecs -- wpevideosrc: Clear cached SHM buffers after caps re-negotiation -- wpe: Report latency and start-up progress messages -- wpe: remove glFlush() when filling buffer -- Fix build with gtk3 but not wayland -- Various fixes found from adding extra warning flags +- MinGW: -gst-plugins-ugly + - MinGW toolchain has been updated from GCC 8.2 → 14.2 and MinGW 6.0 → 12.0 -- x264enc: add missing data to AvcDecoderConfigurationRecord, and switch to GstByteWriter + - The mediafoundation plugin is also shipped in the MinGW packages now. -GStreamer Rust plugins + - The d3d12 plugin is also shipped in the MinGW packages now. -- No changes + - Rust support has been enabled on MinGW 64-bit. Rust support cannot work on 32-bit MinGW due to differences in exception + handling between our 32-bit MinGW toolchain and that used by the Rust project -gst-libav +- The asio plugin is shipped now, since it no longer has a build-time dependency on the ASIO SDK. -- avaudenc: fix crash in avenc_ac3 if input buffers are insufficiently aligned -- avcodecmap: Only use new channel positions when compiling against new enough ffmpeg -- gst-libav: 1.24.11: Fails to build with minimum supported ffmpeg version +- The new plugin webview2 is shipped with MSVC. It requires the relevant component shipped with Windows. -gst-rtsp-server +#### Linux -- No changes +- Preliminary support for Alma Linux has been added. -gstreamer-vaapi +- RHEL distro support has been improved. -- No changes +- Cerbero CI now tests the build on Ubuntu 24.04 LTS. -gstreamer-sharp +- curl is used for downloading sources on Fedora instead of wget, since they have moved to wget2 despite show-stopper + regressions such as returning a success error code on download failure. -- No changes +#### Android -gst-omx +- CMake inside Gradle is now the recommended way to consume GStreamer when building Android apps -- No changes + - FindGStreamerMobile.cmake is the recommended way to consume GStreamer now -gst-python + - 1.26 will support both CMake and Make inside Gradle, but the Make support will likely be removed in 1.28 -- No changes + - Documentation updates are still a work-in-progress, help is appreciated -gst-editing-services +- Android tutorials and examples are now built with gradle + cmake instead of gradle + make on the CI -- ges: Fix Python library name fetching on Windows +## Documentation improvements -gst-devtools, gst-validate + gst-integration-testsuites +- Tracer objects information is now included in the documentation -- No changes +## Possibly Breaking Changes -gst-examples +- qroverlay: the "pixel-size" property has been removed in favour of a new "size" property with slightly different semantics, + where the size of the square is expressed in percent of the smallest of width and height. -- No changes +- svtav1enc: The SVT-AV1 3.0.0 API exposes a different mechanism to configure the level of parallelism when encoding, which + has been exposed as a new "level-of-parallelism" property. The old "logical-processors" property is no longer functional if + the plugin has been compiled against the new API, which might affect encoder performance if application code setting it is + not updated. -Development build environment +- udpsrc: now disables allocated port reuse for unicast to avoid unexpected side-effects of SO_REUSEADDR where the kernel + allocates the same listening port for multiple udpsrc. -- No changes +- uridecodebin3 remove non-functional "source" property that doesn’t make sense and always returned NULL anyway. -Cerbero build tool and packaging changes in 1.24.12 +## Known Issues -- cmake: Support using ccache if enabled +- GstBuffer now uses C11 atomics for 64 bit atomic operations if available, which may require linking to libatomic on some + systems, but this is not done automatically yet, see issue #4177. -Contributors to 1.24.12 +Contributors -Adrian Perez de Castro, Alan Coopersmith, Alexander Slobodeniuk, Andoni Morales Alastruey, Andrew Yooeun Chun, Brad Hards, -Carlos Bentzen, Colin Kinloch, Edward Hervey, François Laignel, Guillaume Desmottes, Jochen Henneberg, Jordan Yelloz, L. E. -Segovia, Monty C, Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Rares Branici, Samuel Thibault, Sebastian Dröge, Silvio -Lazzeretti, Tim-Philipp Müller, Tomas Granath, Will Miller, +Aaron Boxer, Adrian Perez de Castro, Adrien De Coninck, Alan Coopersmith, Albert Sjolund, Alexander Slobodeniuk, Alex Ashley, +Alicia Boya García, Andoni Morales Alastruey, Andreas Wittmann, Andrew Yooeun Chun, Angelo Verlain, Aniket Hande, Antonio +Larrosa, Antonio Morales, Armin Begovic, Arnaud Vrac, Artem Martus, Arun Raghavan, Benjamin Gaignard, Benjamin Gräf, Bill +Nottingham, Brad Hards, Brad Reitmeyer, Branko Subasic, Carlo Caione, Carlos Bentzen, Carlos Falgueras García, cdelguercio, Chao +Guo, Cheah, Cheung Yik Pang, chitao1234, Chris Bainbridge, Chris Spencer, Chris Spoelstra, Christian Meissl, Christopher Degawa, +Chun-wei Fan, Colin Kinloch, Corentin Damman, Daniel Morin, Daniel Pendse, Daniel Stone, Dan Yeaw, Dave Lucia, David Rosca, Dean +Zhang (张安迪), Denis Yuji Shimizu, Detlev Casanova, Devon Sookhoo, Diego Nieto, Dongyun Seo, dukesook, Edward Hervey, eipachte, +Eli Mallon, Elizabeth Figura, Elliot Chen, Emil Ljungdahl, Emil Pettersson, eri, F. Duncanh, Fotis Xenakis, Francisco Javier +Velázquez-García, Francis Quiers, François Laignel, George Hazan, Glyn Davies, Guillaume Desmottes, Guillermo E. Martinez, +Haihua Hu, Håvard Graff, He Junyan, Hosang Lee, Hou Qi, Hugues Fruchet, Hyunwoo, iodar, jadarve, Jakub Adam, Jakub Vaněk, James +Cowgill, James Oliver, Jan Alexander Steffens (heftig), Jan Schmidt, Jeffery Wilson, Jendrik Weise, Jerome Colle, Jesper Jensen, +Jimmy Ohn, Jochen Henneberg, Johan Sternerup, Jonas K Danielsson, Jonas Rebmann, Jordan Petridis, Jordan Petridіs, Jordan +Yelloz, Jorge Zapata, Joshua Breeden, Julian Bouzas, Jurijs Satcs, Kévin Commaille, Kevin Wang, Khem Raj, kingosticks, Leonardo +Salvatore, L. E. Segovia, Liam, Lim, Loïc Le Page, Loïc Yhuel, Lyra McMillan, Maksym Khomenko, Marc-André Lureau, Marek Olejnik, +Marek Vasut, Marianna Smidth Buschle, Marijn Suijten, Mark-André Schadow, Mark Nauwelaerts, Markus Ebner, Martin Nordholts, Mart +Raudsepp, Mathieu Duponchelle, Matthew Waters, Maxim P. DEMENTYEV, Max Romanov, Mengkejiergeli Ba, Michael Grzeschik, Michael +Olbrich, Michael Scherle, Michael Tretter, Michiel Westerbeek, Mikhail Rudenko, Nacho Garcia, Nick Steel, Nicolas Dufresne, +Niklas Jang, Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Oskar Fiedot, Pablo García, Pablo Sun, Patricia Muscalu, Paweł +Kotiuk, Peter Kjellerstedt, Peter Stensson, pgarciasancho, Philippe Normand, Philipp Zabel, Piotr Brzeziński, Qian Hu (胡骞), +Rafael Caricio, Randy Li (ayaka), Rares Branici, Ray Tiley, Robert Ayrapetyan, Robert Guziolowski, Robert Mader, Roberto Viola, +Robert Rosengren, RSWilli,Ruben González, Ruijing Dong, Sachin Gadag, Sam James, Samuel Thibault, Sanchayan Maity, Scott Moreau, +Sebastian Dröge, Sebastian Gross, Sebastien Cote, Sergey Krivohatskiy, Sergey Radionov, Seungha Yang, Seungmin Kim, Shengqi Yu, +Sid Sethupathi, Silvio Lazzeretti, Simonas Kazlauskas, Stefan Riedmüller, Stéphane Cerveau, Tamas Levai, Taruntej Kanakamalla, +Théo Maillart, Thibault Saunier, Thomas Goodwin, Thomas Klausner, Tihran Katolikian, Tim Blechmann, Tim-Philipp Müller, Tjitte +de Wert, Tomas Granath, Tomáš Polomský, tomaszmi, Tom Schuring, U. Artie Eoff, valadaptive, Víctor Manuel Jáquez Leal, Vivia +Nikolaidou, W. Bartel, Weijian Pan, William Wedler, Will Miller, Wim Taymans, Wojciech Kapsa, Xavier Claessens, Xi Ruoyao, +Xizhen, Yaakov Selkowitz, Yacine Bandou, Zach van Rijn, Zeno Endemann, Zhao, Zhong Hongcheng, … and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! -List of merge requests and issues fixed in 1.24.12 +Stable 1.26 branch -- List of Merge Requests applied in 1.24.12 -- List of Issues fixed in 1.24.12 +After the 1.26.0 release there will be several 1.26.x bug-fix releases which will contain bug fixes which have been deemed +suitable for a stable branch, but no new features or intrusive changes will be added to a bug-fix release usually. The 1.26.x +bug-fix releases will be made from the git 1.26 branch, which is a stable release series branch. -Schedule for 1.26 +Schedule for 1.28 -Our next major feature release will be 1.26, and 1.25 will be the unstable development version leading up to the stable 1.26 -release. The development of 1.25/1.25 will happen in the git main branch of the GStreamer mono repository. +Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28 +release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository. -The schedule for 1.26 is yet to be decided. +The schedule for 1.28 is yet to be decided. -1.26 will be backwards-compatible to the stable 1.24, 1.22, 1.20, 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 +1.28 will be backwards-compatible to the stable 1.26, 1.24, 1.22, 1.20, 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. -------------------------------------------------------------------------------------------------------------------------------- -These release notes have been prepared by Tim-Philipp Müller with contributions from Edward Hervey, Matthew Waters, Nicolas -Dufresne, Nirbheek Chauhan, Olivier Crête, Sebastian Dröge, Seungha Yang, Thibault Saunier, and Víctor Manuel Jáquez Leal. +These release notes have been prepared by Tim-Philipp Müller with contributions from Arun Raghavan, Daniel Morin, Nirbheek +Chauhan, Olivier Crête, Philippe Normand, Sebastian Dröge, Seungha Yang, Thibault Saunier, and Víctor Manuel Jáquez Leal. License: CC BY-SA 4.0
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/README.md -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/README.md
Changed
@@ -1,4 +1,4 @@ -GStreamer 1.24.x stable series +GStreamer 1.26.x stable series WHAT IT IS ----------
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/RELEASE -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-ugly 1.24.12. +This is GStreamer gst-plugins-ugly 1.26.0. The GStreamer team is thrilled to announce a new major feature release of your favourite cross-platform multimedia framework! @@ -6,12 +6,12 @@ As always, this release is again packed with new features, bug fixes and other improvements. -The 1.24 release series adds new features on top of the 1.22 series and is +The 1.26 release series adds new features on top of the 1.24 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.24/ + https://gstreamer.freedesktop.org/releases/1.26/ Binaries for Android, iOS, Mac OS X and Windows will usually be provided shortly after the release.
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/docs/gst_plugins_cache.json -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/docs/gst_plugins_cache.json
Changed
@@ -1014,6 +1014,18 @@ "type": "gchararray", "writable": true }, + "nal-hrd": { + "blurb": "Signal Hypothetical Reference Decoder information", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "none (0)", + "mutable": "null", + "readable": true, + "type": "GstX264EncNalHrd", + "writable": true + }, "noise-reduction": { "blurb": "Noise reduction strength", "conditionally-available": false, @@ -1399,6 +1411,26 @@ } }, + "GstX264EncNalHrd": { + "kind": "enum", + "values": + { + "desc": "None", + "name": "none", + "value": "0" + }, + { + "desc": "Variable bitrate", + "name": "vbr", + "value": "1" + }, + { + "desc": "Constant bitrate", + "name": "cbr", + "value": "2" + } + + }, "GstX264EncPass": { "kind": "enum", "values":
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/docs/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/docs/meson.build
Changed
@@ -18,13 +18,13 @@ subdir_done() endif -required_hotdoc_extensions = 'gst-extension' plugins_cache = join_paths(meson.current_source_dir(), 'gst_plugins_cache.json') if gst_dep.type_name() == 'internal' gst_proj = subproject('gstreamer') plugins_cache_generator = gst_proj.get_variable('plugins_cache_generator') else - plugins_cache_generator = find_program(join_paths(gst_dep.get_variable('libexecdir'), 'gstreamer-' + api_version, 'gst-plugins-doc-cache-generator'), + plugins_cache_generator = find_program('gst-plugins-doc-cache-generator', + dirs: join_paths(gst_dep.get_variable('libexecdir', default_value: ''), 'gstreamer-' + api_version), required: false) endif @@ -41,35 +41,10 @@ warning('GStreamer plugin inspector for documentation not found, can\'t update the cache') endif -hotdoc_p = find_program('hotdoc', required: get_option('doc')) -if not hotdoc_p.found() - message('Hotdoc not found, not building the documentation') - subdir_done() -endif - -hotdoc_req = '>= 0.11.0' -hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout() -if not hotdoc_version.version_compare(hotdoc_req) - if get_option('doc').enabled() - error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version)) - else - message('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version)) - subdir_done() - endif +if get_option('doc').disabled() + subdir_done() endif -hotdoc = import('hotdoc') -foreach extension: required_hotdoc_extensions - if not hotdoc.has_extensions(extension) - if get_option('doc').enabled() - error('Documentation enabled but @0@ missing'.format(extension)) - endif - - message('@0@ extension not found, not building documentation'.format(extension)) - subdir_done() - endif -endforeach - build_hotdoc = true docconf = configuration_data() docconf.set('GST_API_VERSION', api_version) @@ -84,24 +59,28 @@ excludes += join_paths(meson.current_source_dir(), root_rel, '..', f) endforeach -libs_doc = -plugins_doc = -list_plugin_res = run_command(python3, '-c', -''' -import sys -import json - -with open("@0@") as f: - print(':'.join(json.load(f).keys()), end='') -'''.format(plugins_cache), - check: true) +doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json') + +plugin_libraries = {} + +foreach plugin: plugins + if plugin.name().startswith('gst') + plugin_name = plugin.name().substring(3) + else + plugin_name = plugin.name() + endif + + plugin_libraries += { + plugin_name: plugin.full_path() + } +endforeach + +doc_plugin_libs_file = configure_file(output: 'doc_plugin_libs.json', configuration: plugin_libraries, output_format: 'json') + cdir = meson.current_source_dir() -if host_machine.system() == 'windows' - pathsep = ';' -else - pathsep = ':' -endif -gst_plugins_doc = run_command( +plugin_hotdoc_configs = custom_target( + 'build-hotdoc-configs', + command: plugins_cache_generator, 'hotdoc-config', '--builddir', meson.current_build_dir(), @@ -109,11 +88,12 @@ '--sitemap', cdir / 'sitemap.txt', '--index', cdir / 'index.md', '--gst_index', cdir / 'index.md', - '--gst_c_sources', - root_rel / 'sys/*/*.ch', - root_rel / 'ext/*/*.ch', - root_rel / 'gst/*/*.ch', '--gst_c_source_filters', excludes, - '--gst_cache_file', plugins_cache, - check: true, -).stdout().split(pathsep) + '--gst_cache_file', '@INPUT@', + '--output', '@OUTPUT@', + '--gst_c_source_file', doc_source_file, + '--gst_plugin_libraries_file', doc_plugin_libs_file, + , + input: plugins_cache, + output: 'hotdoc-configs.json', +)
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/a52dec/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/a52dec/meson.build
Changed
@@ -3,13 +3,30 @@ Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. ''') +a52dec_sources = + 'gsta52dec.c', + + +a52dec_headers = + 'gsta52dec.h', + + +doc_sources = +foreach s: a52dec_sources + a52dec_headers + doc_sources += meson.current_source_dir() / s +endforeach + +plugin_sources += { + 'a52dec': pathsep.join(doc_sources) +} + a52_dep = cc.find_library('a52', required : get_option('a52dec')) if a52_dep.found() have_a52_h = cc.has_header_symbol('a52dec/a52.h', 'a52_init', prefix : '#include <stdint.h>') if have_a52_h a52dec = library('gsta52dec', - 'gsta52dec.c', + a52dec_sources, c_args : ugly_args, include_directories : configinc, dependencies : gstaudio_dep, orc_dep, a52_dep, @@ -18,6 +35,6 @@ ) plugins += a52dec elif a52dec_opt.enabled() - error('a52dec plugin enabled but a52.h not found') + error('a52dec plugin enabled but a52.h not found') endif endif
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/cdio/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/cdio/meson.build
Changed
@@ -3,11 +3,31 @@ Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. ''') +cdio_sources = + 'gstcdio.c', + 'gstcdiocddasrc.c', + + +cdio_headers = + 'gstcdiocddasrc.h', + 'gstcdio.h', + + +doc_sources = +foreach s: cdio_sources + cdio_headers + doc_sources += meson.current_source_dir() / s +endforeach + +plugin_sources += { + 'cdio': pathsep.join(doc_sources) +} + cdio_dep = dependency('libcdio', version : '>= 0.76', required : cdio_opt) if cdio_dep.found() + cdio = library('gstcdio', - 'gstcdio.c', 'gstcdiocddasrc.c', + cdio_sources, c_args : ugly_args, include_directories : configinc, libsinc, dependencies : gstaudio_dep, gsttag_dep, cdio_dep,
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/dvdread/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/dvdread/meson.build
Changed
@@ -3,11 +3,28 @@ Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. ''') +dvdread_sources = + 'dvdreadsrc.c', + + +dvdread_headers = + 'dvdreadsrc.h', + + +doc_sources = +foreach s: dvdread_sources + dvdread_headers + doc_sources += meson.current_source_dir() / s +endforeach + +plugin_sources += { + 'dvdread': pathsep.join(doc_sources) +} + dvdread_dep = dependency('dvdread', version : '>= 0.5.0', required : dvdread_opt) if dvdread_dep.found() dvdread = library('gstdvdread', - 'dvdreadsrc.c', + dvdread_sources, c_args : ugly_args, include_directories : configinc, libsinc, dependencies : gstbase_dep, gmodule_dep, dvdread_dep,
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/mpeg2dec/gstmpeg2dec.c -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/mpeg2dec/gstmpeg2dec.c
Changed
@@ -1120,8 +1120,10 @@ break; case STATE_INVALID_END: GST_DEBUG_OBJECT (mpeg2dec, "invalid end"); + /* FALLTHROUGH */ case STATE_END: GST_DEBUG_OBJECT (mpeg2dec, "end"); + /* FALLTHROUGH */ case STATE_SLICE: GST_DEBUG_OBJECT (mpeg2dec, "display_fbuf:%p, discard_fbuf:%p", info->display_fbuf, info->discard_fbuf);
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/mpeg2dec/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/mpeg2dec/meson.build
Changed
@@ -3,11 +3,28 @@ Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. ''') +mpeg2dec_sources = + 'gstmpeg2dec.c', + + +mpeg2dec_headers = + 'gstmpeg2dec.h', + + +doc_sources = +foreach s: mpeg2dec_sources + mpeg2dec_headers + doc_sources += meson.current_source_dir() / s +endforeach + +plugin_sources += { + 'mpeg2dec': pathsep.join(doc_sources) +} + mpeg2_dep = dependency('libmpeg2', version : '>= 0.4.0', required : mpeg2dec_opt) if mpeg2_dep.found() mpeg2dec = library('gstmpeg2dec', - 'gstmpeg2dec.c', + mpeg2dec_sources, c_args : ugly_args, include_directories : configinc, dependencies : gstvideo_dep, mpeg2_dep,
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/sidplay/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/sidplay/meson.build
Changed
@@ -3,6 +3,23 @@ Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. ''') +sid_sources = + 'gstsiddec.cc', + + +sid_headers = + 'gstsiddec.h', + + +doc_sources = +foreach s: sid_sources + sid_headers + doc_sources += meson.current_source_dir() / s +endforeach + +plugin_sources += { + 'sid': pathsep.join(doc_sources) +} + if not add_languages('cpp', native: false, required: sidplay_option) subdir_done() endif @@ -28,7 +45,8 @@ subdir_done() endif -gstsid = library('gstsid', 'gstsiddec.cc', +gstsid = library('gstsid', + sid_sources, cpp_args : ugly_args, include_directories : configinc, dependencies : gstaudio_dep, sidplay_dep,
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/x264/gstx264enc.c -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/x264/gstx264enc.c
Changed
@@ -423,6 +423,7 @@ ARG_TUNE, ARG_FRAME_PACKING, ARG_INSERT_VUI, + ARG_NAL_HRD, }; #define ARG_THREADS_DEFAULT 0 /* 0 means 'auto' which is 1.5x number of CPU cores */ @@ -465,6 +466,7 @@ #define ARG_TUNE_DEFAULT 0 /* no tuning */ #define ARG_FRAME_PACKING_DEFAULT -1 /* automatic (none, or from input caps) */ #define ARG_INSERT_VUI_DEFAULT TRUE +#define ARG_NAL_HRD_DEFAULT 0 enum { @@ -505,6 +507,25 @@ return pass_type; } +#define GST_X264_ENC_NAL_HRD_TYPE (gst_x264_enc_nal_hrd_get_type()) +static GType +gst_x264_enc_nal_hrd_get_type (void) +{ + static GType nal_hrd_type = 0; + + static const GEnumValue nal_hrd_types = { + {GST_X264_ENC_NAL_HRD_NONE, "None", "none"}, + {GST_X264_ENC_NAL_HRD_VBR, "Variable bitrate", "vbr"}, + {GST_X264_ENC_NAL_HRD_CBR, "Constant bitrate", "cbr"}, + {0, NULL, NULL} + }; + + if (!nal_hrd_type) { + nal_hrd_type = g_enum_register_static ("GstX264EncNalHrd", nal_hrd_types); + } + return nal_hrd_type; +} + #define GST_X264_ENC_ME_TYPE (gst_x264_enc_me_get_type()) static GType gst_x264_enc_me_get_type (void) @@ -849,8 +870,8 @@ filter_caps = gst_caps_new_empty (); for (i = 0; i < gst_caps_get_size (supported_incaps); i++) { - GQuark q_name = - gst_structure_get_name_id (gst_caps_get_structure (supported_incaps, + const GstIdStr *name = + gst_structure_get_name_id_str (gst_caps_get_structure (supported_incaps, i)); for (j = 0; j < gst_caps_get_size (allowed); j++) { @@ -860,7 +881,7 @@ /* FIXME Find a way to reuse gst_video_encoder_proxy_getcaps so that * we do not need to copy that logic */ - s = gst_structure_new_id_empty (q_name); + s = gst_structure_new_id_str_empty (name); if ((val = gst_structure_get_value (allowed_s, "width"))) gst_structure_set_value (s, "width", val); if ((val = gst_structure_get_value (allowed_s, "height"))) @@ -1210,6 +1231,25 @@ g_string_append_printf (x264enc_defaults, ":interlaced=%d", ARG_INTERLACED_DEFAULT); + /** + * x264enc:nal-hrd: + * + * Signal Hypothetical Reference Decoder information. + * + * Required for Blu-ray streams, television broadcast and a + * few other specialist areas. + * + * It can be used for instance to force true CBR, and will cause + * the encoder to output NULL padding packets. + * + * Since: 1.26 + */ + g_object_class_install_property (gobject_class, ARG_NAL_HRD, + g_param_spec_enum ("nal-hrd", "NAL HRD", + "Signal Hypothetical Reference Decoder information", + GST_X264_ENC_NAL_HRD_TYPE, ARG_NAL_HRD_DEFAULT, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /* append deblock parameters */ g_string_append_printf (x264enc_defaults, ":deblock=0,0"); /* append weighted prediction parameter */ @@ -1244,6 +1284,7 @@ gst_type_mark_as_plugin_api (GST_X264_ENC_PSY_TUNE_TYPE, 0); gst_type_mark_as_plugin_api (GST_X264_ENC_SPEED_PRESET_TYPE, 0); gst_type_mark_as_plugin_api (GST_X264_ENC_TUNE_TYPE, 0); + gst_type_mark_as_plugin_api (GST_X264_ENC_NAL_HRD_TYPE, 0); } /* *INDENT-OFF* */ @@ -1341,6 +1382,7 @@ encoder->tune = ARG_TUNE_DEFAULT; encoder->frame_packing = ARG_FRAME_PACKING_DEFAULT; encoder->insert_vui = ARG_INSERT_VUI_DEFAULT; + encoder->nal_hrd = ARG_NAL_HRD_DEFAULT; encoder->bitrate_manager = gst_encoder_bitrate_profile_manager_new (ARG_BITRATE_DEFAULT); @@ -1916,6 +1958,8 @@ GST_OBJECT_UNLOCK (encoder); + encoder->x264param.i_nal_hrd = encoder->nal_hrd; + encoder->x264enc = encoder->vtable->x264_encoder_open (&encoder->x264param); if (!encoder->x264enc) { GST_ELEMENT_ERROR (encoder, STREAM, ENCODE, @@ -3032,6 +3076,9 @@ case ARG_INSERT_VUI: encoder->insert_vui = g_value_get_boolean (value); break; + case ARG_NAL_HRD: + encoder->nal_hrd = g_value_get_enum (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -3176,6 +3223,9 @@ case ARG_INSERT_VUI: g_value_set_boolean (value, encoder->insert_vui); break; + case ARG_NAL_HRD: + g_value_set_enum (value, encoder->nal_hrd); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break;
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/x264/gstx264enc.h -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/x264/gstx264enc.h
Changed
@@ -35,7 +35,7 @@ * compiler is unable to correctly do the pointer indirection for us, which * leads to a segfault when you try to dereference any const values provided * by x264.dll. See: https://bugzilla.gnome.org/show_bug.cgi?id=779249 */ -#if defined(_WIN32) && !defined(X264_API_IMPORTS) +#if defined(_WIN32) && !defined(X264_API_IMPORTS) && !defined(GST_STATIC_COMPILATION) # define X264_API_IMPORTS #endif #include <x264.h> @@ -113,6 +113,7 @@ GString *option_string; /* used by set prop */ gint frame_packing; gboolean insert_vui; + gint nal_hrd; /* input description */ GstVideoCodecState *input_state; @@ -136,6 +137,24 @@ GstVideoEncoderClass parent_class; }; +/** + * GstX264EncNalHrd: + * @GST_X264_ENC_NAL_HRD_NONE: Specify no HRD information + * @GST_X264_ENC_NAL_HRD_VBR: Specify HRD information + * @GST_X264_ENC_NAL_HRD_CBR: Specify HRD information and pack the bitstream + * + * Signal HRD information. Required for Blu-ray streams, + * television broadcast and a few other specialist areas. + * + * Since: 1.26 + */ +typedef enum +{ + GST_X264_ENC_NAL_HRD_NONE = 0, + GST_X264_ENC_NAL_HRD_VBR = 1, + GST_X264_ENC_NAL_HRD_CBR = 2, +} GstX264EncNalHrd; + GType gst_x264_enc_get_type (void); GST_ELEMENT_REGISTER_DECLARE (x264enc);
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/x264/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/x264/meson.build
Changed
@@ -8,6 +8,20 @@ 'gstencoderbitrateprofilemanager.c', +x264_headers = + 'gstx264enc.h', + 'gstencoderbitrateprofilemanager.h', + + +doc_sources = +foreach s: x264_sources + x264_headers + doc_sources += meson.current_source_dir() / s +endforeach + +plugin_sources += { + 'x264': pathsep.join(doc_sources) +} + x264_dep = dependency('x264', version : '>=0.156', required : x264_opt, fallback: 'x264', 'libx264_dep')
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst-plugins-ugly.doap -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst-plugins-ugly.doap
Changed
@@ -35,121 +35,41 @@ <release> <Version> - <revision>1.24.12</revision> - <branch>1.24</branch> - <name></name> - <created>2025-01-29</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.12.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.24.11</revision> - <branch>1.24</branch> - <name></name> - <created>2025-01-06</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.11.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.24.10</revision> - <branch>1.24</branch> - <name></name> - <created>2024-12-03</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.10.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.24.9</revision> - <branch>1.24</branch> - <name></name> - <created>2024-10-30</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.9.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.24.8</revision> - <branch>1.24</branch> - <name></name> - <created>2024-09-19</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.8.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.24.7</revision> - <branch>1.24</branch> - <name></name> - <created>2024-08-21</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.7.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.24.6</revision> - <branch>1.24</branch> - <name></name> - <created>2024-07-29</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.6.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.24.5</revision> - <branch>1.24</branch> - <name></name> - <created>2024-06-20</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.5.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.24.4</revision> - <branch>1.24</branch> + <revision>1.26.0</revision> + <branch>main</branch> <name></name> - <created>2024-05-29</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.4.tar.xz" /> + <created>2025-03-11</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.0.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.24.3</revision> - <branch>1.24</branch> + <revision>1.25.90</revision> + <branch>main</branch> <name></name> - <created>2024-04-30</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.3.tar.xz" /> + <created>2025-02-23</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.25.90.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.24.2</revision> - <branch>1.24</branch> + <revision>1.25.50</revision> + <branch>main</branch> <name></name> - <created>2024-04-09</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.2.tar.xz" /> + <created>2025-02-09</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.25.50.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.24.1</revision> - <branch>1.24</branch> + <revision>1.25.1</revision> + <branch>main</branch> <name></name> - <created>2024-03-21</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.1.tar.xz" /> + <created>2025-01-14</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.25.1.tar.xz" /> </Version> </release>
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/asfdemux/gstasfdemux.c -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/asfdemux/gstasfdemux.c
Changed
@@ -2304,15 +2304,15 @@ GST_INFO_OBJECT (demux, "Chained asf starting"); /* cleanup and get ready for a chained asf */ gst_asf_demux_reset (demux, TRUE); - /* fall through */ } } + /* FALLTHROUGH */ case GST_ASF_DEMUX_STATE_HEADER:{ ret = gst_asf_demux_chain_headers (demux); if (demux->state != GST_ASF_DEMUX_STATE_DATA) break; - /* otherwise fall through */ } + /* FALLTHROUGH */ case GST_ASF_DEMUX_STATE_DATA: { guint64 data_size;
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/asfdemux/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/asfdemux/meson.build
Changed
@@ -8,6 +8,28 @@ 'gstrtspwms.c', +asf_headers = + 'gstasfelements.h', + 'gstasfdemux.h', + 'asfheaders.h', + 'gstrtpasfdepay.h', + 'gstrtspwms.h', + 'asfpacket.h', + + +doc_sources = +foreach s: asf_sources + asf_headers + doc_sources += meson.current_source_dir() / s +endforeach + +plugin_sources += { + 'asf': pathsep.join(doc_sources) +} + +if get_option('asfdemux').disabled() + subdir_done() +endif + gstasf = library('gstasf', asf_sources, c_args : ugly_args,
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/dvdlpcmdec/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/dvdlpcmdec/meson.build
Changed
@@ -2,6 +2,23 @@ 'gstdvdlpcmdec.c' +dvdpl_headers = + 'gstdvdlpcmdec.h', + + +doc_sources = +foreach s: dvdpl_sources + dvdpl_headers + doc_sources += meson.current_source_dir() / s +endforeach + +plugin_sources += { + 'dvdlpcmdec': pathsep.join(doc_sources) +} + +if get_option('dvdlpcmdec').disabled() + subdir_done() +endif + gstdvdlpcmdec = library('gstdvdlpcmdec', dvdpl_sources, c_args : ugly_args,
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/dvdsub/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/dvdsub/meson.build
Changed
@@ -3,6 +3,24 @@ 'gstdvdsubparse.c', +dvdsub_headers = + 'gstdvdsubdec.h', + 'gstdvdsubparse.h', + + +doc_sources = +foreach s: dvdsub_sources + dvdsub_headers + doc_sources += meson.current_source_dir() / s +endforeach + +plugin_sources += { + 'dvdsub': pathsep.join(doc_sources) +} + +if get_option('dvdsub').disabled() + subdir_done() +endif + gstdvdsub = library('gstdvdsub', dvdsub_sources, c_args : ugly_args,
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/meson.build
Changed
@@ -1,5 +1,3 @@ foreach plugin : 'asfdemux', 'dvdlpcmdec', 'dvdsub', 'realmedia' - if not get_option(plugin).disabled() - subdir(plugin) - endif + subdir(plugin) endforeach
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/realmedia/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/realmedia/meson.build
Changed
@@ -5,6 +5,26 @@ 'realmedia.c' +real_headers = + 'rmdemux.h', + 'rademux.h', + 'rmutils.h', + 'pnmsrc.h', + + +doc_sources = +foreach s: real_sources + real_headers + doc_sources += meson.current_source_dir() / s +endforeach + +plugin_sources += { + 'realmedia': pathsep.join(doc_sources) +} + +if get_option('realmedia').disabled() + subdir_done() +endif + gstrmdemux = library('gstrealmedia', real_sources, c_args : ugly_args,
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/realmedia/rademux.c -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/realmedia/rademux.c
Changed
@@ -595,14 +595,14 @@ ret = gst_real_audio_demux_parse_marker (demux); if (ret != GST_FLOW_OK || demux->state != REAL_AUDIO_DEMUX_STATE_HEADER) break; - /* otherwise fall through */ } + /* FALLTHROUGH */ case REAL_AUDIO_DEMUX_STATE_HEADER:{ ret = gst_real_audio_demux_parse_header (demux); if (ret != GST_FLOW_OK || demux->state != REAL_AUDIO_DEMUX_STATE_DATA) break; - /* otherwise fall through */ } + /* FALLTHROUGH */ case REAL_AUDIO_DEMUX_STATE_DATA:{ ret = gst_real_audio_demux_parse_data (demux); break;
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/meson.build
Changed
@@ -1,6 +1,6 @@ project('gst-plugins-ugly', 'c', - version : '1.24.12', - meson_version : '>= 1.1', + version : '1.26.0', + meson_version : '>= 1.4', default_options : 'warning_level=1', 'buildtype=debugoptimized' ) @@ -32,6 +32,7 @@ static_build = get_option('default_library') == 'static' plugins_install_dir = join_paths(get_option('libdir'), 'gstreamer-1.0') plugins = +plugin_sources = {} cc = meson.get_compiler('c') if have_cxx @@ -97,7 +98,6 @@ endif cdata = configuration_data() -cdata.set('ENABLE_NLS', 1) check_headers = 'HAVE_DLFCN_H', 'dlfcn.h', @@ -244,19 +244,22 @@ endif warning_flags = - '-Wmissing-declarations', - '-Wredundant-decls', - '-Wwrite-strings', + '-Waddress', + '-Waggregate-return', '-Wformat', '-Wformat-nonliteral', '-Wformat-security', + '-Wimplicit-fallthrough=3', '-Winit-self', + '-Wmissing-declarations', '-Wmissing-include-dirs', - '-Waddress', '-Wno-multichar', - '-Wvla', '-Wpointer-arith', - '-Waggregate-return', + '-Wredundant-decls', + '-Wshift-negative-value', + '-Wtype-limits', + '-Wvla', + '-Wwrite-strings', '-fno-strict-aliasing', # Symbol visibility '-fvisibility=hidden', @@ -289,20 +292,20 @@ add_project_arguments('-DG_DISABLE_DEPRECATED', language: 'c') endif -cast_checks = get_option('gobject-cast-checks') -if cast_checks.disabled() or (cast_checks.auto() and not gst_version_is_dev) +# Same logic as in GLib. +glib_debug = get_option('glib_debug') +if glib_debug.disabled() or ( + glib_debug.auto() and (not get_option('debug') or get_option('optimization') not in '0', 'g' )) message('Disabling GLib cast checks') add_project_arguments('-DG_DISABLE_CAST_CHECKS', language: 'c') endif -glib_asserts = get_option('glib-asserts') -if glib_asserts.disabled() or (glib_asserts.auto() and not gst_version_is_dev) +if not get_option('glib_assert') message('Disabling GLib asserts') add_project_arguments('-DG_DISABLE_ASSERT', language: 'c') endif -glib_checks = get_option('glib-checks') -if glib_checks.disabled() or (glib_checks.auto() and not gst_version_is_dev) +if not get_option('glib_checks') message('Disabling GLib checks') add_project_arguments('-DG_DISABLE_CHECKS', language: 'c') endif @@ -320,12 +323,19 @@ python3 = import('python').find_installation() +if host_machine.system() == 'windows' + pathsep = ';' +else + pathsep = ':' +endif + subdir('gst') subdir('ext') subdir('tests') # xgettext is optional (on Windows for instance) if find_program('xgettext', required : get_option('nls')).found() + cdata.set('ENABLE_NLS', 1) subdir('po') endif subdir('docs') @@ -342,7 +352,7 @@ configure_file(output : 'config.h', configuration : cdata) -meson.add_dist_script('scripts/gen-changelog.py', meson.project_name(), '1.22.0', meson.project_version()) +meson.add_dist_script('scripts/gen-changelog.py', meson.project_name(), '1.24.0', meson.project_version()) plugin_names = gst_plugins =
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/meson_options.txt -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/meson_options.txt
Changed
@@ -24,12 +24,6 @@ description : 'Enable native language support (translations)') option('orc', type : 'feature', value : 'auto', yield : true) option('tests', type : 'feature', value : 'auto', yield : true) -option('gobject-cast-checks', type : 'feature', value : 'auto', yield : true, - description: 'Enable run-time GObject cast checks (auto = enabled for development, disabled for stable releases)') -option('glib-asserts', type : 'feature', value : 'enabled', yield : true, - description: 'Enable GLib assertion (auto = enabled for development, disabled for stable releases)') -option('glib-checks', type : 'feature', value : 'enabled', yield : true, - description: 'Enable GLib checks such as API guards (auto = enabled for development, disabled for stable releases)') # Common options option('package-name', type : 'string', yield : true, @@ -38,3 +32,21 @@ description : 'package origin URL to use in plugins') option('doc', type : 'feature', value : 'auto', yield: true, description: 'Enable documentation.') +option('glib_debug', type : 'feature', value : 'auto', yield : true, description : 'Enable GLib debug infrastructure (see docs/macros.txt)') +option('glib_assert', type : 'boolean', value : true, yield : true, description : 'Enable GLib assertion (see docs/macros.txt)', + deprecated: {'enabled' : 'true', 'disabled' : 'false', 'auto' : 'false'}, +) +option('glib_checks', type : 'boolean', value : true, yield : true, description : 'Enable GLib checks such as API guards (see docs/macros.txt)', + deprecated: {'enabled' : 'true', 'disabled' : 'false', 'auto' : 'false'}, +) + +# Deprecated, kept for backward compat +option('gobject-cast-checks', type : 'feature', value : 'auto', yield : true, + description: 'Enable run-time GObject cast checks (auto = enabled for development, disabled for stable releases)', + deprecated: 'glib_debug') +option('glib-asserts', type : 'feature', value : 'enabled', yield : true, + description: 'Enable GLib assertion (auto = enabled for development, disabled for stable releases)', + deprecated: 'glib_assert') +option('glib-checks', type : 'feature', value : 'enabled', yield : true, + description: 'Enable GLib checks such as API guards (auto = enabled for development, disabled for stable releases)', + deprecated: 'glib_checks')
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/po/gst-plugins-ugly-1.0.pot -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/po/gst-plugins-ugly-1.0.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.24.12\n" +"Project-Id-Version: gst-plugins-ugly-1.26.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-29 20:13+0000\n" +"POT-Creation-Date: 2025-03-11 20:15+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/po/gst-plugins-ugly.pot -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/po/gst-plugins-ugly.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.24.12\n" +"Project-Id-Version: gst-plugins-ugly-1.26.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-29 20:13+0000\n" +"POT-Creation-Date: 2025-03-11 20:15+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/po/hr.po -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/po/hr.po
Changed
@@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gst-plugins-ugly-1.24.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-03 17:37+0000\n" +"POT-Creation-Date: 2025-02-23 16:56+0000\n" "PO-Revision-Date: 2024-03-08 10:46-0800\n" "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n" "Language-Team: Croatian <lokalizacija@linux.hr>\n" @@ -75,7 +75,7 @@ #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s." #~ msgstr "" -#~ "Tražena brzina (bitrate) %d kbit/s za svojstvo „%s“ nije dopuštena. " +#~ "Tražena brzina (bitrate) %d kbit/s za svojstvo „%s” nije dopuštena. " #~ "Brzina (bitrate) je promijenjena u %d kbit/s." #~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
View file
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/po/pt_BR.po -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/po/pt_BR.po
Changed
@@ -8,11 +8,11 @@ msgstr "" "Project-Id-Version: gst-plugins-ugly-1.19.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 01:02+0100\n" +"POT-Creation-Date: 2025-02-23 16:56+0000\n" "PO-Revision-Date: 2021-09-26 12:38-0300\n" "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n" -"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge." -"net>\n" +"Language-Team: Brazilian Portuguese <ldpbr-" +"translation@lists.sourceforge.net>\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n"
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.