Projects
home:zaitor:branches: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 2
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.26.0 +%define _version 1.28.0 Name: gstreamer-plugins-ugly-codecs -Version: 1.26.10 +Version: 1.28.0 Release: 0 Summary: Codecs/plugins for gstreamer-plugins-ugly License: LGPL-2.1-or-later
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/AUTHORS
Deleted
@@ -1,21 +0,0 @@ -Erik Walthinsen <omega@temple-baptist.com> -Matt Howell <mhowell@users.sourceforge.net> -Brent Bradburn <bbradburn@users.sourceforge.net> -Wim Taymans <wim.taymans@chello.be> -Richard Boulton <richard@tartarus.org> -Zaheer Abbas Merali <zaheerabbas at merali dot org> -David I. Lehn <dlehn@users.sourceforge.net> -Chris Emerson <chris@tartarus.org> -Jens Thiele <karme@unforgettable.com> -Thomas Nyberg <thomas@codefactory.se> -Bastien Nocera <hadess@hadess.net> -Christian Fredrik Kalager Schaller <Uraeus@linuxrising.org> -Thomas Vander Stichele <thomas@apestaart.org> -Andy Wingo <wingo@pobox.com> -Cameron Hutchison <camh@xdna.net> -David Schleef <ds@schleef.org> -Benjamin Otte <in7y118@public.uni-hamburg.de> -Ronald Bultje <rbultje@ronald.bitfreak.net> -Julien MOUTTE <julien@moutte.net> -Jan Schmidt <thaytan@mad.scientist.com> -Arwed v. Merkatz <v.merkatz@gmx.net>
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/REQUIREMENTS
Deleted
@@ -1,46 +0,0 @@ -GStreamer uses a *large* array of tools and libraries, most of which are -optional. We have attempted to make sure that any code that depends on -optional libraries doesn't get built unless you have those libraries. If -you find this not to be the case, please, let us know by filing a bug -report at http://bugzilla.gnome.org/. - - -Required tools: -=============== - -An extra set of tools is required if you wish to build GStreamer out of -git (using autogen.sh): - -autoconf 2.52 or better -automake 1.5 -gettext 0.11.5 -libtool v1.4 or better -pkgconfig 0.9.0 or better (http://www.freedesktop.org/software/pkgconfig/) - -Required libraries: -=================== - -The core GStreamer libraries. See the gstreamer/ module in GStreamer cvs, or -the version that corresponds to this plugin release. - -Optional libraries: -=================== - -This file lists supporting libraries for which gst-plugins contains plugins, -as well as their minimum version. You can find the corresponding plugins in -ext/(library) - -a52dec (for the a52dec AC-3 decoder) - http://liba52.sourceforge.net/ -libdvdread (for the dvdreadsrc) - http://www.dtek.chalmers.se/groups/dvd/ - (optional: libcss for encrypted DVDs) -mpeg2dec (for mpeg2 related plugins and dvd playback) - http://libmpeg2.sourceforge.net/ -liborc (for the liborc optimization library) - http://code.entropywave.com/download/orc/ -cdio (for the cdio CDDA CD audio source) - http://savannah.gnu.org/projects/libcdio/ -x264 (for the x264enc H.264 encoder) - http://www.videolan.org/developers/x264.html -sidplay FIXME
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/docs/random
Deleted
-(directory)
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/docs/random/LICENSE
Deleted
@@ -1,18 +0,0 @@ -/* GStreamer - * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301, USA. - */
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/docs/random/PORTED_09
Deleted
@@ -1,17 +0,0 @@ -When porting a plugin start with 0.8 CVS head, not the old code in this module. There are many bugfixes which have gone into 0.8 which you want to keep. - -List of ported plugins (update when you commit a ported plugin): -effectv (wim) -mad (wim) -videofilter (wim) -aalib (wim) -libcaca (zeeshan) -law (wim) -shout2 (zaheer) - not fully tested -esdsink (arwed) - -osssink is partially done in the threaded branch (wim) - -- Remember that some plugins are already ported and now in the gst-plugins-base module. - -When you have ported a plugin remember to copy the relevant parts from configure.ac.orig into configure.ac and re-enable it in the Makefile.am files.
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/meson_options.txt
Deleted
@@ -1,52 +0,0 @@ -option('x264_libraries', type : 'string', value : '', - description : 'Colon separated list of additional x264 library paths, e.g. for 10-bit version') - -# Feature options for plugins without external deps -option('asfdemux', type : 'feature', value : 'auto') -option('dvdlpcmdec', type : 'feature', value : 'auto') -option('dvdsub', type : 'feature', value : 'auto') -option('realmedia', type : 'feature', value : 'auto') - -# Feature options for plugins that need external deps -option('a52dec', type : 'feature', value : 'auto', description : 'Dolby Digital (AC-3) audio decoder plugin based on liba52 (GPL - only built if gpl option is also enabled!)') -option('cdio', type : 'feature', value : 'auto', description : 'CD audio source plugin based on libcdio (GPL - only built if gpl option is also enabled!)') -option('dvdread', type : 'feature', value : 'auto', description : 'DVD video source plugin based on libdvdread (GPL - only built if gpl option is also enabled!)') -option('mpeg2dec', type : 'feature', value : 'auto', description : 'MPEG 2 video decoder plugin based on libmpeg2 (GPL - only built if gpl option is also enabled!)') -option('sidplay', type : 'feature', value : 'auto', description : 'Commodore 64 audio decoder plugin based on libsidplay (GPL - only built if gpl option is also enabled!)') -option('x264', type : 'feature', value : 'auto', description : 'H.264 video encoder plugin based on libx264 (GPL - only built if gpl option is also enabled!)') - -# License-related feature options -option('gpl', type: 'feature', value: 'disabled', yield: true, - description: 'Allow build plugins that have GPL-licensed dependencies') - -# Common feature options -option('nls', type : 'feature', value : 'auto', yield: true, - description : 'Enable native language support (translations)') -option('orc', type : 'feature', value : 'auto', yield : true) -option('tests', type : 'feature', value : 'auto', yield : true) - -# Common options -option('package-name', type : 'string', yield : true, - description : 'package name to use in plugins') -option('package-origin', type : 'string', value : 'Unknown package origin', yield: true, - 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_files:gst-plugins-ugly-1.26.10.tar.xz/ChangeLog -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/ChangeLog
Changed
@@ -1,408 +1,208 @@ -=== release 1.26.10 === +=== release 1.28.0 === -2025-12-25 15:44:26 +0100 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.26.10 - -2025-12-01 17:32:18 +0000 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.26.9 - -=== release 1.26.9 === - -2025-12-01 17:27:07 +0000 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.26.9 - -2025-11-19 14:53:43 +0900 Jaehoon Lee <jaehoon85.lee@lge.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Fix size check in data header - Modify DATA header size check to handle both version 0 and version 1. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10159> - -2025-11-10 17:30:54 +0000 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.26.8 - -=== release 1.26.8 === - -2025-11-10 17:22:05 +0000 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.26.8 - -2025-10-14 18:34:39 +0100 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.26.7 - -=== release 1.26.7 === - -2025-10-14 18:25:43 +0100 Tim-Philipp Müller <tim@centricular.com> - - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.26.7 - -2025-09-14 13:19:28 +0100 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.26.6 - -=== release 1.26.6 === - -2025-09-14 13:13:58 +0100 Tim-Philipp Müller <tim@centricular.com> +2026-01-27 17:02:33 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: + * README.md: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.26.6 + Release 1.28.0 -2025-09-01 21:02:22 +0530 Nirbheek Chauhan <nirbheek@centricular.com> - - * ext/x264/meson.build: - meson: Convert all remaining fallback: usages to provide - Only commonly-used plugin deps like pango, orc, openh264, libvpx, - libnice are enabled by default. - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1788 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9637> +2026-01-25 12:18:50 +0200 Sebastian Dröge <sebastian@centricular.com> -2025-08-07 19:15:29 +0100 Tim-Philipp Müller <tim@centricular.com> + * ext/mpeg2dec/gstmpeg2dec.c: + * ext/mpeg2dec/meson.build: + * tests/check/elements/mpeg2dec.c: + * tests/check/meson.build: + mpeg2dec: Deprecate element and plugin + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4868 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10597> - * meson.build: - Back to development after 1.26.5 +2026-01-25 17:18:18 +0000 Tim-Philipp Müller <tim@centricular.com> -=== release 1.26.5 === + * po/LINGUAS: + * po/ar.po: + * po/hr.po: + * po/ro.po: + gst-plugins-ugly: update translations + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10598> -2025-08-07 19:06:46 +0100 Tim-Philipp Müller <tim@centricular.com> +2026-01-18 17:09:10 +0530 Nirbheek Chauhan <nirbheek@centricular.com> - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.26.5 + * meson.options: + meson: Don't disable orc support when orcc is not available + This was breaking usage of orc when cross-compiling with no orcc + available in PATH. We can use the orc-dist.{c,h} files in that case as + long as the orc library itself is available. Using the subproject, for + example. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10553> -2025-07-16 15:33:19 +0200 Tim-Philipp Müller <tim@centricular.com> +2026-01-05 20:20:51 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.26.4 + Back to development after 1.27.90 -=== release 1.26.4 === +=== release 1.27.90 === -2025-07-16 15:26:21 +0200 Tim-Philipp Müller <tim@centricular.com> +2026-01-05 20:15:10 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.26.4 + Release 1.27.90 -2025-06-26 21:29:34 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-12-09 19:13:20 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.26.3 + Back to development after 1.27.50 -=== release 1.26.3 === +=== release 1.27.50 === -2025-06-26 21:25:24 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-12-09 19:08:48 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.26.3 - -2025-05-30 00:03:12 +0100 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.26.2 - -=== release 1.26.2 === + Release 1.27.50 -2025-05-29 23:56:43 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-11-19 14:53:43 +0900 Jaehoon Lee <jaehoon85.lee@lge.com> - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.26.2 + * gst/realmedia/rmdemux.c: + rmdemux: Fix size check in data header + Modify DATA header size check to handle both version 0 and version 1. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10130> -2025-04-24 20:26:57 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-11-07 19:29:24 -0300 L. E. Segovia <amy@centricular.com> - * meson.build: - Back to development after 1.26.1 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8890> - -=== release 1.26.1 === + * ext/a52dec/gsta52dec.c: + * ext/a52dec/meson.build: + gst: implement Orc-less cpuid routine for selecting asm routines + This commit removes the use of Orc's default target machinery as a way + to do CPUID detection on x86 and Arm. Instead I port xsimd's CPU + detection routine to C, cleaning up the instruction sets we don't use, + and also adding support for GCC/Clang's cpuid and xgetbv builtins. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10004> -2025-04-24 20:20:14 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-10-05 14:59:48 -0400 Doug Nazar <nazard@nazar.ca> - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.26.1 + * ext/a52dec/gsta52dec.c: + gst: mark items that are unused when checks or asserts are disabled + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9795> -2025-03-11 20:23:16 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-09-07 20:39:44 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.26.0 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8618> + Back to development after 1.27.2 -=== release 1.26.0 === +=== release 1.27.2 === -2025-03-11 20:14:44 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-09-07 20:34:55 +0100 Tim-Philipp Müller <tim@centricular.com> * NEWS: - * README.md: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.26.0 + Release 1.27.2 -2025-02-23 23:52:57 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-09-01 21:02:22 +0530 Nirbheek Chauhan <nirbheek@centricular.com> - * meson.build: - Back to development after 1.25.90 + * ext/x264/meson.build: + meson: Convert all remaining fallback: usages to provide + Only commonly-used plugin deps like pango, orc, openh264, libvpx, + libnice are enabled by default. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1788 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9626> -=== release 1.25.90 === +2025-07-31 17:55:29 -0400 Olivier Crête <olivier.crete@collabora.com> -2025-02-23 23:44:10 +0000 Tim-Philipp Müller <tim@centricular.com> + * docs/random/PORTED_09: + random: Remove historical doc + This is about porting which happened over 20 years ago. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476> - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.25.90 +2025-07-31 17:54:32 -0400 Olivier Crête <olivier.crete@collabora.com> -2025-02-23 16:56:31 +0000 Tim-Philipp Müller <tim@centricular.com> - - * po/hr.po: - * po/pt_BR.po: - gst-plugins-ugly: update translations + * docs/random/LICENSE: + random: Remove historical LICENSE header + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476> -2025-02-09 17:47:32 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-07-31 17:50:33 -0400 Olivier Crête <olivier.crete@collabora.com> - * meson.build: - Back to development after 1.25.50 + * AUTHORS: + AUTHORS: Remove outdated files + They only contained historical contributors, the modern version is + to look at the git logs. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476> -=== release 1.25.50 === +2025-07-31 17:44:21 -0400 Olivier Crête <olivier.crete@collabora.com> -2025-02-09 17:35:17 +0000 Tim-Philipp Müller <tim@centricular.com> + * MAINTAINERS: + MAINTAINERS: Update to reflect current maintainership + Instead of listing everyone, just point to GitLab + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476> - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.25.50 +2025-07-31 17:39:44 -0400 Olivier Crête <olivier.crete@collabora.com> -2024-06-11 17:46:11 +0200 Ruben Gonzalez <rgonzalez@fluendo.com> + * REQUIREMENTS: + REQUIREMENTS: Remove outdated doc + They contained information which was completely outdated. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476> - * meson.build: - meson: use nls option to ENABLE_NLS - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7017> - -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/8346> - -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/8308> - -2025-01-15 17:36:00 +0100 Mathieu Duponchelle <mathieu@centricular.com> - - * 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> - -2025-01-17 16:51:22 +0100 Mathieu Duponchelle <mathieu@centricular.com> +2025-07-24 20:20:39 +0100 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: - 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> + meson: Pass sysprof=disabled to glib + sysprof cannot be built on Windows, and this causes the build to fail + on Windows. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9438> -2025-01-14 15:00:43 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-07-08 20:00:07 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.25.1 + Back to development after 1.27.1 -=== release 1.25.1 === +=== release 1.27.1 === -2025-01-14 14:52:48 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-07-08 19:55:15 +0100 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.25.1 + Release 1.27.1 -2025-01-13 18:10:31 +0100 Mathieu Duponchelle <mathieu@centricular.com> +2025-06-10 14:41:22 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> - * 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: - * meson.build: - docs: port plugins to explicit sources - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8273> + * scripts/gen-changelog.py: + gstreamer-vaapi: remove subproject + It's almost superseded by va plugin in gst-plugins-bad. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9200> -2025-01-10 08:58:11 +0100 Edward Hervey <edward@centricular.com> +2025-03-15 20:56:17 +0100 Tim-Philipp Müller <tim@centricular.com> - * gst/asfdemux/gstasfdemux.c: - * gst/realmedia/rademux.c: - * meson.build: - ugly: Add more warning flags - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> + * meson.options: + meson: rename meson_options.txt to meson.options + Which is supported since Meson 1.1: + https://mesonbuild.com/Release-notes-for-1-1-0.html#support-for-reading-options-from-mesonoptions + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8651> -2025-01-10 09:10:00 +0100 Edward Hervey <edward@centricular.com> +2025-03-10 13:14:07 -0300 Thibault Saunier <tsaunier@igalia.com> * ext/mpeg2dec/gstmpeg2dec.c: - mpeg2dec: Add missing fallthrough statements - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> - -2024-12-18 13:18:32 -0300 Thibault Saunier <tsaunier@igalia.com> - - * docs/meson.build: - doc: Handle gst_dep.get_variable('libexecdir') failure - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178> - -2024-12-18 12:27:30 -0300 Thibault Saunier <tsaunier@igalia.com> - - * 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> - -2021-03-05 19:00:56 +0100 Mathieu Duponchelle <mathieu@centricular.com> - - * docs/gst_plugins_cache.json: - * docs/meson.build: - * ext/x264/gstx264enc.c: - * 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> - -2024-11-15 11:46:14 -0300 Thibault Saunier <tsaunier@igalia.com> - - * 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> + video: Give better names to buffer pools + Making debugging simpler + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8617> -2024-11-03 17:30:40 +0000 Tim-Philipp Müller <tim@centricular.com> - - * docs/meson.build: - 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> - -2024-11-03 17:37:09 +0000 Tim-Philipp Müller <tim@centricular.com> - - * 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> - -2024-10-16 08:22:53 -0300 Eli Mallon <eli@aquareum.tv> - - * 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> - -2024-08-09 10:41:57 +0300 Sebastian Dröge <sebastian@centricular.com> - - * ext/x264/gstx264enc.c: - common: Stop using GQuark-based GstStructure name API - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432> - -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/7209> - -2020-04-08 10:40:42 -0400 Xavier Claessens <xavier.claessens@collabora.com> - - * 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> - -2024-03-05 12:58:57 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-03-12 13:59:45 +0100 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/6261> + Back to development in main branch after 1.26.0 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8621> -=== release 1.24.0 === +=== release 1.26.0 ===
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/MAINTAINERS -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/MAINTAINERS
Changed
@@ -1,11 +1,8 @@ GStreamer is currently maintained by the consensus of a number -of people, including, but not limited to: +of people. The current list of maintainers is the developers, maintainers +and owners in the GitLab GStreamer project at: - Jan Schmidt <thaytan@noraisin.net> - Wim Taymans <wim.taymans@gmail.com> - David Schleef <ds@schleef.org> - Tim-Philipp Müller <tim centricular net> - Sebastian Dröge <slomo@coaxion.net> +https://gitlab.freedesktop.org/groups/gstreamer/-/group_members Maintainer-related issues should be addressed to:
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/NEWS -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/NEWS
Changed
@@ -1,12 +1,10 @@ -GStreamer 1.26 Release Notes +GStreamer 1.28 Release Notes -GStreamer 1.26.0 was originally released on 11 March 2025. +GStreamer 1.28.0 was originally released on 27 January 2026. -The latest bug-fix release in the stable 1.26 series is 1.26.10 and was released on 25 December 2025 +See https://gstreamer.freedesktop.org/releases/1.28/ for the latest version of this document. -See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of this document. - -Last updated: Thursday 25 December 2025, 15:00 UTC (log) +Last updated: Tuesday 27 January 2026, 17:00 UTC (log) ## Introduction @@ -17,908 +15,740 @@ ## Highlights -- 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 nvdsdewarp -- 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 +- AMD HIP plugin and integration helper library +- Vulkan Video AV1 and VP9 decoding, H.264 encoding, and 10-bit support for H.265 decoder +- waylandsink: Parse and set the HDR10 metadata and other color management improvements +- Audio source separation element based on demucs in Rust +- Analytics combiner and splitter elements plus batch meta to batch buffers from one or more streams +- LiteRT inference element; move modelinfo to analytics lib; add script to help with modelinfo generation and upgrade +- Add general classifier tensor-decoder, facedetector, and more analytics convenience API +- New tensordecodebin element to auto-plug compatible tensor decoders based on their caps and many other additions and + improvements +- Add a burn-based YOLOX inference element and a YOLOX tensor decoder in Rust +- applemedia: VideoToolbox VP9 and AV1 hardware-accelerated decoding support, and 10-bit HEVC encoding +- Add new GIF decoder element in Rust with looping support +- input-selector: implements a two-phase sinkpad switch now to avoid races when switching input pads +- The inter wormhole sink and source elements gained a way to forward upstream events to the producer as well as new + fine-tuning properties +- webrtcsink: add renegotiation support and support for va hardware encoders +- webrtc WHEP client and server signaller +- New ST-2038 ancillary data combiner and extractor elements +- fallbacksrc gained support for encoded streams +- flv: enhanced rtmp H.265 video support, and support for multitrack audio +- glupload: Implement udmabuf uploader to share buffers between software decoders/sources and GPUs, display engines (wayland), + and other dma devices +- video: Add crop, scale, rotate, flip, shear and more GstMeta transformation +- New task pool GstContext to share a thread pool amongst elements for better resource management and performance, especially + for video conversion and compositing +- New Deepgram speech-to-text transcription plugin and many other translation and transcription improvements +- Speech synthesizers: expose new “compress” overflow mode that can speed up audio while preserving pitch +- ElevenLabs voice cloning element and support for Speechmatics speaker identification API +- textaccumulate: new element for speech synthesis or translation preprocessing +- New vmaf element to calculate perceptual video quality assessment scores using Netflix’s VMAF framework +- decodebin3: expose KLV, ID3 PES and ST-2038 ancillary data streams with new metadata GstStream type +- New MPEG-H audio decoding plugin plus MP4 demuxing support +- LCEVC: Add autoplugging decoding support for LCEVC H265 and H266 video streams and LCEVC H.265 and H.266 encoders +- RTP “robust MPEG audio”, raw audio (L8, L16, L24), and SMPTE ST291 ancillary metadata payloaders/depayloaders in Rust +- Add a Rust-based icecastsink element with AAC support +- The Windows IPC plugin gained support for passing generic data in addition to raw audio/video, and various properties +- New D3D12 interlace and overlay compositor elements, plus many other D3D12 improvements +- Blackmagic Decklink elements gained support for capturing and outputting all types of VANC via GstAncillaryMeta +- GstLogContext API to reduce log spam in several components and GST_DEBUG_ONCE (etc) convenience macros to log things only + once +- hlssink3, hlscmafsink: Support the use of a single media file, plus I-frame only playlist support +- Webkit: New wpe2 plugin making use of the “WPE Platform API” +- MPEG-TS demuxer can now disable skew corrections +- New Qt6 QML render source element +- qml6gloverlay: support directly passing a QQuickItem for QML the render tree +- unifxfdsink: Add a property to allow copying to make sink usable with more upstream elements +- dots-viewer: Improve dot file generation and interactivity +- Python bindings: more syntactic sugar, analytics API improvements and type annotations +- cerbero: add support for Python wheel packaging, Windows ARM64, new iOS xcframework, Gtk4 on macOS and Windows, and more + plugins +- Smaller binary sizes of Rust plugins in Windows and Android binary packages +- Peel: New C++ bindings for GStreamer - Lots of new plugins, features, performance improvements and bug fixes +- Countless bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements ## Major new features and changes -### H.266 Versatile Video Coding (VVC) codec support - -- The H.266 / VVC video codec is a successor to H.265 / HEVC and is standardised in ISO/IEC 23090-3. - -- A new h266parse element was added, along with parsing API, typefinding support and some codec utility functions in the - gst-plugins-base utility library. +### AMD HIP plugin and integration library -- 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. +- HIP (formerly known as Heterogeneous-computing Interface for Portability) is AMD’s GPU programming API that enables + portable, CUDA-like development across both AMD and NVIDIA platforms: -- The FFmpeg H.266 decoder is exposed now (from FFmpeg 7.0 onwards). + - On AMD GPUs, HIP runs natively via the ROCm stack. + - On NVIDIA GPUs, HIP operates as a thin translation layer over the CUDA runtime and driver APIs. -- H.266 / VVC muxing and demuxing support was implemented for MP4, Matroska and MPEG-TS containers. + This allows developers to maintain a single codebase that can target multiple GPU vendors with minimal effort. -- A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library. +- The new HIP plugin provides the following elements: -### JPEG XS image codec support + - hipcompositor: a HIP-based video mixer/compositor + - hipconvert: Converts video from one colorspace to another using HIP + - hipconvertscale: Resizes video and allow color conversion using HIP + - hipscale: Resize video using HIP + - hipdownload: Downloads HIP device memory into system memory + - hipupload: Uploads system memory into HIP device memory -- JPEG XS is a visually lossless, low-latency, intra-only video codec for video production workflows, standardised in ISO/IEC - 21122. +- The GStreamer HIP integration helper library provides HIP integration functionality to applications and other HIP users. -- 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. +- Watch the Bringing AMD HIP into GStreamer talk from last year’s GStreamer Conference for more details or read Seungha’s + devlog post on the subject. -### Low Complexity Enhancement Video Coding (LCEVC) support +### Low Complexity Enhancement Video Coding (LCEVC) support for H.265 and H.266 - 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. -- 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. +- LCEVC H.265 and H.266 encoder and decoder elements based on V-Nova’s SDK libraries were added in this cycle -### Closed captions improvements +- Autoplugging support for LCEVC H265 and H266 video streams, so these can be decoded automatically in a decodebin3 or + playbin3 scenario. -- New H.264 and H.265 closed captions extractor and inserter elements. +### Closed captions and text handling improvements - - 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. +- cea708overlay: suport non-relative positioning for streams with CCs that do not have relative positions. Instead of + displaying them at the top, they are positioned relatively. - - The inserter elements do something similar and insert caption SEIs into the H.264 or H.265 bitstream, taking into - account frame ordering. +- cea708mux: expose “discarded-services” property on sink pads. This can be useful when muxing in an original caption stream + with a newly-created one (e.g. transcription / translation), in which case one might wish to discard select services from + the original stream in order to avoid garbled captions. - - 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). +- sccparse: Better handling of streams with more byte tuples in the SCC field. -- cdpserviceinject: New element for injecting a CDP service descriptor into closed caption CDP packets +- tttocea608: expose “speaker-prefix” property -- cea708overlay: New element for overlaying CEA608 / CEA708 closed captions over video streams. - -- The cc708overlay element has been deprecated in favour of the cea708overlay element from the Rust plugins set. - -- 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. +- Miscellaneous improvements and spec compliance fixes -- cea708mux: New element that allows to mux multiple CEA708 services into a single stream. +- Also see SMPTE ST-2038 metadata section below. -- cccombiner has two new properties: +### Speech to Text, Translation and Speech Synthesis - - "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. +- New audio source separation element based on demucs in Rust. This is useful to separate speech from background audio before + running speech to text transcription, but could also be used to separate vocals from music for karaoke. - - "schedule-timeout" to support timing out captions without EOS +- New Deepgram speech-to-text transcription plugin in Rust. -- tttocea708: New element for converting timed-text to CEA708 closed captions +- The Speechmatics transcriber has seen a major refactoring for better timings, gap and discontinuity handling and has gained + support for the new Speechmatics speaker identification API as well as a new property to mask profanities. -- Miscellaneous improvements and spec compliance fixes +- New ElevenLabs voice cloning element. The new element can operate in two modes: -### Speech to Text, Translation and Speech Synthesis + - In single speaker mode, the element will directly clone a single voice from its input, without storing any samples. + - Otherwise, the element will store a backlog of samples, and wait to receive certain events from a transcriber on its + source pad before draining them to create potentially multiple voices. -- awstranscriber2, awstranslate: New elements around the AWS transcription and translation services. +- New “compress” overflow mode for speech synthesizers that can speed up the audio while preserving pitch. This may be needed + to keep or regain audio/video synchronisation if translated speech output has been consistently longer in duration than the + original and there hasn’t been a sufficient amount of silence that could be filled in to make up the difference. -- polly: New element around the AWS text-to-speech polly services +- awstranslate: new “brevity-on” property for turning brevity on. -- speechmatics: New transcriber / speech-to-text and translation element +- The awstranscriber2 has been refactored to match the speechmatics transcriber design and gained a “show-speaker-label” + property that defines whether to partition speakers in the transcription output. -- translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions. +- New textaccumulate element for speech synthesis or translation preprocessing that can be used to accumulate words and + punctuation into complete sentences (or sentence fragments) for synthesis and / or translation by further elements + downstream. ### HLS DASH adaptive streaming improvements -- 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. - -- dashsink has received period duration fixes for dynamic MPDs and some memory leak fixes. - -- hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments. +- Reverse playback, seeking and stream selection fixes in the HLS/DASH clients. -- hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants +- hlscmafsink can generate I-frame only playlists now -### splitmuxsrc, splitmuxsink: lazy loading and dynamic fragment addition +- Both hlssink3 and hlscmafsink gained support for use of a single media file, in which case the media playlist will use byte + range tags for each chunk whilst always referencing the same single media file. This can be useful for VOD use cases. -- 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. +### decodebin3 and playbin3 improvements -- 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: +- decodebin3 now has a separate pad template for metadata streams and considers KLV, ID3 PES streams and ST-2038 ancillary + streams as raw formats for meta streams. This comes also with a new dedicated GST_STREAM_TYPE_METADATA stream type in the + stream collection. - - You can now add fragments directly to splitmuxsrc and provide the offset and duration in the stream: +### Enhanced RTMP and multitrack audio/video support in FLV - - 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. +- The FLV container used for RTMP streaming is fairly old and limited in terms of features: It only supports one audio and one + video track, and also only a very limited number of audio and video codecs, most of which are by now quite long in the + tooth. - - 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. +- The Enhanced RTMP (V2) specification seeks to remedy this and adds support for modern video codecs such H.265 and AV1 as + well as support for more than one audio and video track inside the container. - - splitmuxsrc no longer keeps all files open, but instead only keeps 100 files open by default, configurable with the - "num-open-fragments" property. +- Both H.265 video and multiple audio/video tracks are now supported for FLV in GStreamer. - - There is a new "num-lookahead" property on splitmuxsrc to trigger (re)opening files a certain distance ahead of the play - position. - - - 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. +- Support for this comes in form of a new eflvmux muxer element, which is needed to accommodate both the need of backwards + compatibility in the existing FLV muxer and the requirements of the new format. See Tarun’s blog post for more details. ### MPEG-TS container format improvements -- The MPEG-TS muxer and demuxer gained support for - - - 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) - -- mpegtsmux gained support for muxing ID3 metadata into the TS stream, as well as SMPTE 302M audio. +- The MPEG-TS demuxer gained a “skew-corrections” property that allows disabling of skew corrections, which are done by + default for live inputs to make sure downstream consumes data at the same rate as it comes in if the local clock and the + sender clock drift apart (as they usually do). Disabling skew corrections is useful if the input stream has already been + clock-corrected (for example with mpegtslivesrc) or where the output doesn’t require synchronisation against a clock, + e.g. when it’s re-encoded and/or remuxed and written to file (incl. HLS/DASH output) where it’s desirable to maintain the + original timestamps and frame spacings. + + It is also useful for cases where we want to refer to the PCR stream to figure out global positioning, gap detection and + wrapover correction. + +- tsdemux now also supports demuxing of ID3 tags in MPEG-TS as specified in the Apple Timed Metadata for HTTP Live Streaming + specification. These timed ID3 tags have a media type of meta/x-id3 which is different from the one used to tag audio files, + and an id3metaparse element is needed to properly frame the PES data coming out of the demuxer. -- It’s also possible to disable sending SCTE-35 null (heartbeat) packets now in mpegtsmux by setting the - "scte-35-null-interval" to 0. - -- tsparse now handles 192-byte M2TS packets - -- 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. +- The MPEG-TS muxer now also reads prog-mapPMT_ORDER_<PID> for PMT order key in addition to prog-mapPMT_%d, which fixes a + wart in the API and provides an unambiguous way to specify ordering keys. ### Matroska container format improvements -- H.266 / VVC video muxing and demuxing support - -- matroskamux - - - was ported to the GstAggregator base class, ensuring defined-latency muxing in live streaming pipelines. - - gained rotation tag support - -- matroskademux now also supports seeks with a stop position in push mode. +- matroskademux now supports relative position cues in the seek table and also had its maximum block size restrictions updated + so that it can support uncompressed video frames also in 4k UHD resolution and higher bit depths. ### ISO MP4 container format improvements -- can mux and demux H.266 / VVC in MP4 now - -- can demux Hap video now, as well as Lagarith lossless video and ISO/IEC 23003-5 raw PCM audio. +- mp4mux now supports E-AC3 muxing -- qtdemux handles keyunit-only trick mode also in push mode now +- qtdemux, the MP4 demuxer, has seen countless fixes for various advanced use cases (with lots more in the pipeline for + 1.28.1). -- support for ISO/IEC 23001-17 raw video in MP4 in qtdemux and isomp4mux. +- The isomp4mux from the Rust plugins set now support caps changes and has also gained support for raw audio as per ISO/IEC + 23003-5. Plus improved brand selection. -- 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. +- The isomp4mux, isofmp4mux and related elements were merged into a single isobmff plugin, which allows sharing more code. As + part of this, codec support was consolidated between the two. -SMPTE 2038 ancillary data streams +### MXF container format improvements -- 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. +- The MXF muxer and demuxer gained support for non-closed-caption VANC ancillary metdata: -- 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: + - Extends mxfdemux with support for outputting VANC (ST436M) essence tracks as ST2038 streams instead of extracting closed + captions internally. - - 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. + - Extends mxfmux with support for consuming ST2038 streams for outputting VANC (ST436M) essence tracks instead of only + supporting closed captions. - - 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. +To support ST2038 instead of the earlier closed captions, we introduce a breaking change to the caps handling on the pad. This +was deemed the cleanest way and should hopefully not cause too much breakage in the real world, as it is likely not something +that was used much in practice in this form. The st2038anctocc element can be used to convert a ST2038 stream to plain closed +captions. - 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. +We also now support both 8 and 10-bit VANC data when reading from MXF. - 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). +### MPEG-H audio support - - 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. +- New MPEG-H audio decoding plugin based on the Fraunhofer MPEG-H decoder implementation plus MP4 demuxing support - - 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. - -### Analytics +SMPTE 2038 ancillary data stream handling improvements -- 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. +- New ST-2038 ancillary data combiner and extractor elements in the rsclosedcaption Rust plugin that extract ST-3028 metadata + streams from GstAncillaryMetas on video frames or converts ST-2038 metadata streams to GstAncillaryMeta and combines it with + a given video stream. -- 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. +- The MXF demuxer and muxer gained support for muxing and demuxing generic ancillary metadata in ST-2038 format (see below). -- 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. +- decodebin3 now treats ST-2038 metadata streams as a “raw metadata format” and exposes those streams as + GST_STREAM_TYPE_METADATA. -- onvifmetadataextractor: New element that can extract ONVIF metadata from GstMetas into a separate 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. +### Analytics -- relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata. +This release introduces a major improvement in how analytics pipelines are built, moving away from manual configuration toward a +fully negotiated analytics pipeline. -- Improved Python bindings for a more Pythonic interface when iterating over GstRelationMeta’s mtd +- Robust Tensor Negotiation & Smart Selection: All inference and tensor decoder elements adopt the tensor capability + negotiation mechanism. This provides informative error handling by validating the pipeline during the setup phase and + providing descriptive error messages for configuration mismatches before processing begins. Complementing this, the new + tensordecodebin acts as an intelligent proxy that abstracts decoder selection by auto-plugging the correct tensor decoder. + This simplifies the use of existing tensor decoders and allows new tensor decoders to be utilized instantly without + requiring changes to pipeline definitions. -### Vulkan integration enhancements +- Simplified Model Integration with modelinfo: The modelinfo library, configuration files, and the modelinfo-generator.py + script work together to make using any ML model inside a GStreamer pipeline very simple. The new utility script helps you + quickly generate or upgrade metadata files for existing models. Combined with tensor negotiation and tensordecodebin, these + tools facilitate the seamless utilization of new models within the analytics chain. -- Vulkan Integration Improvements: +- analyticsoverlay: New “expire-overlay” property added to objectdetectionoverlay and can also show tracking-id; New + ‘segmentationoverlay’ to visualize segmented regions. - - Memory Management: Non-coherent memory is now invalidated when mapping for read in vkmemory. +- Add LiteRT inference element - - Color Space Selection: The vkswapper component now chooses the correct color space based on the format. +- Analytics: add general classifier tensor-decoder, facedetector, YOLOv8 (detection), YOLOv8segmentation tensor decoders and + more convenience API. - - Vulkan Plugin Compatibility: Support added for cases where glslc is not available for building Vulkan plugins, along - with GLSL compiler support for glslang. +- onnx: Add Verisilicon provider support - - Fullscreen Quad Updates: Improved support for setting NULL input/output buffers and added checks for unset video info. +- New IoU based tracker - - Vulkan Buffer Pool Enhancements: Buffer pool access flags and usage configurations have been refined, offering better - performance for video decoding and encoding. +- Add GstAnalyticsBatchMeta representing a batch of buffers from one or more streams together with the relevant events to be + able to interpret the buffers and to be able to reconstruct the original streams. -- Decoder/Encoder Improvements: +- New analyticscombiner and analyticssplitter elements in the Rust plugin set which batch buffers from one or more streams + into a single stream via the new GstAnalyticsBatchMeta and allow splitting that single stream into the individual ones again + later. - - H264 Decoder: Enhancements to the vkh264dec component for better support of extended profiles and interlaced content - decoding. +- Add a burn-based YOLOX inference element and a YOLOX tensor decoder in Rust. - - H265 Decoder fixes: vkh265dec updated for proper handling of VPS/SPS on demand, along with fixes to PicOrderCntVal. +### Vulkan integration enhancements - - Encoder Performance: Various internal optimizations to the Vulkan encoder, including removal of redundant references and - better management of the DPB view. +- The Vulkan Video encoders and decoders now dynamically generate their pad template caps at runtime instead of hardcoding + them, so they more accurately reflect the actual capabilities of the hardware and drivers. -- Vulkan Instance and Device Management: +- New Vulkan AV1 and VP9 video decoding support - - 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. +- New Vulkan H.264 encoding support - - Device Context Management: Updates to manage Vulkan context handling more effectively within the application. +- The Vulkan H.265 decoder now also supports 10-bit depth ### OpenGL integration enhancements -- glcolorconvert gained support for more formats and conversions: - - - 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) +- Implement keyboard, mouse, and scroll wheel navigation event handling for the OpenGL Cocoa backend. -- gldownload can import DMABufs from a downstream pool +- Added support for the NV24 and Y444_12 pixel formats. The latter is used by certain HEVC decoders for 12-bit non-subsampled + profiles. -- glupload gained a DRM raw uploader +### udmabuf allocator with glupload support -### Qt5 + Qt6 QML integration improvements +- Implement a udmabuf-based memory allocator for user-space mappable dmabufs. -- qmlglsink, qml6glsink now support external-oes textures, which allows direct DMABuf import from hardware decoders. Both also - support NV12 as an input format now. - -- qmlglsink gained support for RGB16/BGR16 as input format - -- qmlgl6src can now use a downstream buffer pool when available - -- qmlgloverlay make the depth/stencil buffer optional, which reduces memory bandwidth on Windows. - -### CUDA / NVCODEC integration and feature additions +- glupload: add udmabuf uploader to share buffers between software decoders/sources and GPUs, display engines (wayland), and + other dma devices. This can help reduce memory copies and can massively improve performance in video players like Showtime + or Totem for software-decoded video such as AV1 with dav1ddec. -- Added AV1 video encoder nvav1enc +- gtk4paintablesink: Similar to glupload, this now proposes the udmabuf memory allocator to upstream which can reduce memory + copies and improve performance with certain software decoders. -- CUDA mode nvcuda{CODEC}enc encode elements are renamed to nv{CODEC}enc and old nv{CODEC}enc implementations are removed +### Wayland integration -- Added support for CUDA Stream-Ordered allocator +- Added basic colorimetry support -- Added cudacompositor element which is equivalent to the software compositor element but uses CUDA +- waylandsink: -- Added support for CUDA kernel precompile at plugin build time using nvcc and NVCODEC plugin can cache/reuse compiled CUDA - CUBIN/PTX + - Parse and set the HDR10 metadata and other color management improvements -- cudaupload and cudadownload elements can support Jetson platform’s NVMM memory in addition to already supported desktop NVMM - memory + - udmabuf support (see above) -- Introduced nvdswrapper plugin which uses NVIDIA DeepStream SDK APIs with gst-cuda in an integrated way: + - video crop meta support - - nvdsdewarp: NVIDIA NVWarp360 API based dewarping element + - New “fullscreen-output” and “force-aspect-ratio” properties -### GStreamer Direct3D12 integration - -- New gst-d3d12 public library. The following elements are integrated with the gst-d3d12 library: - - - 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 d3d12 library and plugin can be built with MinGW toolchain now (in addition to MSVC) +### Qt5 + Qt6 QML integration improvements -- D3D12 video decoders and d3d12videosink are promoted to have higher rank than D3D11 elements +- New Qt6 QML qml6 render source element -- Added support for multiple mip-levels D3D12 textures: +- qml6gloverlay: support directly passing a QQuickItem for QML the render tree - - Newly added d3d12mipmapping element can generate D3D12 textures with multiple mip-levels +### GTK4 integration improvements - - 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 +- gtk4paintablesink: Added YCbCr memory texture formats and improve color-state fallbacks. The sink will also propose a + udmabuf buffer pool and allocator now if upstream asks for sysmem, which would allow direct imports of the memory by + GL/Vulkan or the compositor. Plus many other improvements which have also been backported into the 0.14 branch. -- d3d12convert, d3d12videosink, and d3d12swapchainsink support the GstColorBalanceInterface to offer color balancing functions - such as hue, saturation, and brightness adjustment +### CUDA / NVCODEC integration and feature additions -- Added d3d12ipcsink and d3d12ipcsrc elements for zero-copy GPU memory sharing between processes +- cudacompositor, cudaconvert and its variants gained crop meta support -- d3d12upload and d3d12download support direct GPU memory copy between D3D12 and D3D12 resources +- nvencoder: interlaced video handling improvements and “emit-frame-stats” property which if enabled makes the encoder emit + the “frame-stats” signal for each encoded frame, allowing applications to monitor things like the average QP per frame. -- Added d3d12swapchainsink element to support DirectComposition or UWP/WinUI3 SwapChainPanel based applications +- nvjpegenc: Add an autogpu mode element (nvautogpunvenc) similar to nvautogpu{h264,h265,av1}enc. -- Added d3d12deinterlace element which performs deinterlacing using a GPU vendor agnostic compute shader. +- nvh264enc, nvh265enc gained a new “num-slices” property which is conditionally available based on device support for dynamic + slice mode -- d3d12screencapturesrc element can capture HDR enabled desktop correctly in DDA mode (DXGI Desktop Duplication API) +- nvdsdewarp: performance improvements and support for output resizing support, along with a new “add-borders” property. ### Capture and playout cards support -- ajasrc: Improve clock handling, frame counting, capture timestamping, and signal loss recovery - -- The Blackmagic Decklink plugin gained support - - - for HDR output and input (PQ + HLG static metadata) - - - all modes of Quad HDMI recorder - - - scheduling frames before they need to be displayed in decklinkvideosink +- Blackmagic Decklink elements gained support for capturing and outputting all types of VANC via GstAncillaryMeta ### RTP and RTSP stack improvements -- 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"). - -- rtpbin: Add new “never” and “ntp” RTCP sync modes +- rtspsrc now sends RTSP keepalives also in TCP/interleaved modes. This fixes problems with some cameras that don’t see the + RTCP traffic as sufficient proof of liveness, when using TCP/HTTP tunnelled modes. - - 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 Rust RTP mparobust depayloader for “robust mp3” audio**, a more loss-tolerant RTP payload format for MP3 audio (RFC + 5219) - 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 Rust RTP L8/L16/L24 raw audio payloader and depayloader, which offer more correct timestamp handling compared to the old + payloader and depayloader and more correctly implements multichannel support. -- rtpjitterbuffer: add RFC7273 active status to jitterbuffer stats so applications can easily check whether RFC7273 sync is - active. +- New Rust RTP SMTPE ST291 ancillary data payloader and depayloader for sending or receiving ancillary data over RTP. This is + also the payload format used by ST2110-40. -- rtph265depay: Add "wait-for-keyframe" "request-keyframe" properties and improve request keyframe logic +- Various performance improvements and fixes for rtprecv / rtpsend (“rtpbin2”). -- 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. - -- 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. - -- New rtpbin2 based on separate rtprecv and rtpsend elements +- Support for “multi-time aggregation packets” (MTAP) in the H264 RTP depayloader rtph264depay. ### WebRTC improvements -- webrtcbin improvements - - - Make basic rollbacks work +- webrtcbin and GstWebRTC library improvements: - - 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. + - Add support for getting the selected ICE candidate pairs - - Early CNAME support (RFC5576): Have CNAME available to the jitterbuffer before the the first RTCP SR is received, for - rapid synchronization. + - Improve spec compliance for ICE candidate stats by filling the foundation, related-address, related-port, + username-fragment and tcp-type fields of stats. - - 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. + - improve compatibility with LiveKit - - Create and associate transceivers earlier in negotiation, and other spec compliance improvements - - - Statistics generation improvements for bundled streams +- webrtcsink and webrtcsrc enhancements: -- webrtcsink improvements: + - webrtcsink gained renegotiation support, and support for va hardware encoders - - Support for more encoders: nvv4l2av1enc, vpuenc_h264 (for imx8mp), nvav1enc, av1enc, rav1enc and nvh265enc. +- Added a WHEP client signaller and server signaller to the Rust webrtc plugin, including support for server side offers for + the WHEP client. - - 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. +- webrtc-api: Set default bundle policy to max-bundle. - - A generic mechanism was implemented to forward metas over the control channel. +- The dtls plugin now uses a ECDSA private key for the default certificate. ECDSA is widely used in browsers and SFUs, and + some servers such as the ones using BouncyCastle only accept certificates signed with ECDSA. - - Added a mechanism for SDP munging to handle server-specific quirks. +### New GStreamer C++ bindings - - Can expose a built-in web server and signalling server for prototyping and debugging purposes. +The old GStreamer C++ bindings (gstreamermm and qt-gstreamer) have been unmaintained for a long time, leaving C++ developers +only with the option to use the GStreamer C API. -- webrtcsink and webrtcsrc enhancements: +In recent years, a new approach for C++ bindings was developed by the GNOME community: peel. While initially developed for GTK, +with various GObject Introspection and API fixes included in GStreamer 1.28, this is now also usable for GStreamer. - - Support for raw payloads, i.e. uncompressed audio and video +Compared to gstreamermm this offers a much lower overhead, headers-only C++ binding that just depends on the C libraries and not +even the C++ STL, and provides a modern C++ API top of the GStreamer C API. Compared to qt-gstreamer there is no dependency on +Qt. - - NTP & PTP clock signalling and synchronization support (RFC 7273) +It’s still in active development and various MRs for improving the GStreamer development experience are not merged yet, but it’s +already usable and a great improvement over using the plain C API from C++. - - Generic data channel control mechanism for sending upstream events back to the sender (webrtcsink) - -- webrtcsrc now has support for multiple producers +Various GStreamer examples can be found in Sebastian’s GStreamer peel examples repository. ## New elements and plugins - Many exciting new Rust elements, see Rust section below. -- webview2src: new Microsoft WebView2 based web browser source element - -- h264ccextractor, h264ccinserter: H.264 closed caption extractor / inserter - -- h265ccextractor, h265ccinserter: H.265 closed caption extractor / inserter - -- h266parse - -- lcevch264decodebin +- New D3D12 interlace, overlay compositor, fish eye dewarp and uv coordinate remapping elements -- New VA elements (see below): vah266dec, vavp8enc, vajpegenc, vavp8alphadecodebin, vavp9alphadecodebin +- VMAF: New element to calculate perceptual video quality assessment scores using Netflix’s VMAF framework -- svtjpegxsdec, svtjpegxsenc: SVT JPEG XS decoder/encoder +- Webkit: New wpe2 plugin that makes use of the “WPE Platform API” with support for rendering into GL and SHM buffers and + navigation events (but not audio yet). -- Many other new elements mentioned in other sections (e.g. CUDA, NVCODEC, etc.) +- Many other new elements mentioned in other sections (e.g. CUDA, NVCODEC, D3D12, Speech, AMD HIP, Rust etc.) ## New element features and additions -- audioconvert enhancements: +- The AWS S3 sink and source elements now support S3 compatible URI schemes. - - 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. +- clocksync: new “rate” property and “resync” action signal so that clocksync can synchronise buffer running time against the + pipeline clock with a specified rate factor. This can be useful if one wants to throttle pipeline throughput such as e.g. in + a non-realtime transcoding pipeline where the pipeline’s CPU and/or hardware resource consumption needs to be limited. - - Better handling of setting of the mix matrix at run time +- fallbacksrc is able to support encoded outputs now, not just uncompressed audio/video. As part of this it supports stream + selection via the GstStream API now. - - handles new GstRequestMixMatrix custom upstream event +- h265parse now automatically inserts AUDs where needed if it outputs byte-stream format, which helps fix decoding artefacts + for multi-slice HEVC streams with some hardware decoders. -- audiorate: Take the tolerance into account when filling gaps; better accounting of the number of samples added or dropped. +- input-selector now implements a two-phase sinkpad switch to avoid races when switching input pads. Extensive tests have been + added to avoid regressions. -- av1enc: Add "timebase" property to allow configuring a specific time base, in line with what exists for vp8enc and vp9enc - already. +- The inter plugin wormhole sink and source elements for sending data between pipelines within the same application process + gained new properties to fine tune the inner elements. intersrc can now also be configured to forward upstream events to the + producer pipeline via the new “event-types” property. -- av1parse can parse annexb streams now, and typefinding support has been added for annexb streams as well. +- The quinn plugin supports sharing of the QUIC/WebTransport connection/session with an element upstream or downstream. This + is required for supporting Media over QUIC (MoQ) later, for which an MR is already pending. -- The GTK3 plugin has gained support for OpenGL/WGL on Windows +- replaygain will use EBU-R128 gain tags now if available. -- 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. +- threadshare: many improvements to the various threadshare elements, plus examples and a new benchmark program. The plugin + was also relicensed to MPL-2.0. -- imagefreeze: Add support for JPEG and PNG +- The unixfdsink element for zero-copy 1:N IPC on Linux can now also copy the input data if needed, which makes it usable with + more upstream elements. Before it would only work with elements that made use of the special memory allocator it advertised. + This (copy if needed) is enabled by default, but can be disabled by setting the new “min-memory-size” property to -1. -- kmssink: Extended the functionality to support buffers with DRM formats along with non-linear buffers + There’s also a new “num-clients” property that gets notified when the number of clients (unixfdsrc elements tapping the same + unixfdsink) changes. -- pitch now supports reverse playback +- videorate and imagefreeze now also support JPEG XS. -- queue can emit the notify signal on queue level changes if the "notify-levels" property has been set. +- videorate’s formerly defunct “new-pref” property was revived for better control which frame to prefer for output in case of + caps changes. -- 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. +## Plugin and library moves and renames -- rsvgdec: Negotiate resolution with downstream and scale accordingly +- The y4mdec plugin moved from gst-plugins-bad into gst-plugins-good and was merged with the existing y4menc there into a + single y4m plugin containing both a YUV4MPEG encoder and decoder. -- rtmp2: server authentication improvements +- The fmp4 and mp4 plugins in the Rust plugins set were merged into a single isobmff plugin. - - 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. +## Plugin and element deprecations - - Add support for Limelight CDN (llnw) authentication +- The old librtmp-based rtmpsrc and rtmpsink elements are deprecated are scheduled for removal in the next release cycle. Use + the rtmp2src and rtmp2sink elements instead (which will likely also be registered under the old names after removal of the + old rtmp plugin). -- 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. +- Deprecate the webrtchttp plugin in the Rust plugins set along with its whipsink and whepsrc elements, in favour of the + whipclientsink and whepclientsrc elements from the webrtc plugin in the Rust plugins set. -- souphttpsrc: Add the notion of "retry-backoff" and retry on 503 (service unavailable) and 500 (internal server error) http - errors. +- The libmpeg2-based mpeg2dec element is deprecated and scheduled for removal in the next release cycle, as libmpeg2 has been + unmaintained for a very long time. The libavcodec-based decoder has had a higher rank for many years already and is also + more performant. We would recommend that distros that also ship the FFmpeg-based decoder out of the box stop shipping the + mpeg2dec plugin now or reduce its rank to GST_RANK_NONE. -- taginject now modifies existing tag events of the selected scope, with the new "merge-mode" property allowing finer control. - -- timecodestamper gained a new running-time source mode that converts the buffer running time into timecodes. - -- playbin3, uridecodebin3, parsebin - - - 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 - -- videocodectestsink gained support for GBR_10LE, GRAY8 and GRAY10_LE{16,32} pixel formats - -- videoflip gained support for the Y444_16LE and Y444_16BE pixel formats +## Plugin and element removals -- videoconvertscale: +- The cc708overlay element has been removed. It is replaced by the cea708overlay element from the rsclosedcaption plugin in + the Rust plugins module. - - Handle pixel aspect ratios with large numerators or denominators - - Explicitly handle the overlaycomposition meta caps feature, so it doesn’t get dropped unnecessarily +- Drop registration of rusotos3src and rusotos3sink in the AWS plugin in the Rust plugins set. These were legacy names that + were renamed to awss3src and awss3sink in 2022, but had been kept around for a while so applications had time to move to the + new name space. -- waylandsink prefers DMABuf over system memory now +## Miscellaneous API additions -- 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. +### GStreamer Core -- zbar: add support for binary mode and getting symbols as raw bytes instead of a text string. +- gst_call_async() and gst_object_call_async() are more generic and convenient replacements for gst_element_call_async() -## Plugin and library moves +- gst_check_version() is a new convenience function to check for a minimum GStreamer core version at runtime. -- 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. +- GstClock: Add gst_clock_is_system_monotonic() utility function -## Plugin and element removals +- GstController: gst_timed_value_control_source_list_control_points() is a thread-safe method to retrieve the list of control + points, replacing gst_timed_value_control_source_get_all(). -- None in this cycle +- GstCpuId: gst_cpuid_supports_x86_avx() and friends can be used to check which SIMD instruction sets are supported on the + current machine’s CPU without relying on liborc for that. This is useful for plugins that rely on an external library that + wants to be told which SIMD code paths to use. -## Miscellaneous API additions +- gst_object_get_toplevel() can be used to get the toplevel parent of an object, e.g. the pipeline an element is in. -### GStreamer Core +- New API for tensor caps descriptions: -- 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. + - GstUniqueList is a new unordered, unique container value type for GValues similar to GstValueList but guaranteed to have + unique values. Can only be queried and manipulated via the gst_value_* API same as GstValueList and GstValueArray. -- 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_structure_get_caps() gets a GstCaps from a structure -- 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. +- More accessor functions for GstPadProbeInfo fields and the GstMapInfo data field, as well as a generic gst_map_info_clear() + which is useful for language bindings. -- GstMessage has gained APIs to generically add “details” to messages: +- New EBU-R128 variants of the replay gain tags: GST_TAG_TRACK_GAIN_R128 and GST_TAG_ALBUM_GAIN_R128 - - 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. +- GstReferenceTimestampMeta: additional information about the timestamp can be provided via the new optional info + GstStructure. This should only be used for information about the timestamp and not for information about the clock source. + This is used in an implementation of the TAI timestamp functionality described in ISO/IEC 23001-17 Amendment 1 in the Rust + MP4 muxer. -- gst_util_floor_log2() returns smallest integral value not bigger than log2(v). +- GstValue: add gst_value_hash() and support 0b / 0B prefix for bitmasks when deserialising. -- gst_util_fraction_multiply_int64() is a 64-bit variant of gst_util_fraction_multiply(). +- Add missing _take() and _steal() functions for some mini objects: -#### GstIdStr replaces GQuark in structure and caps APIs + - gst_buffer_take(), gst_buffer_steal() + - gst_buffer_list_steal() + - gst_caps_steal() + - gst_memory_take(), gst_memory_replace(), gst_memory_steal() + - gst_message_steal() + - gst_query_steal() -- 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. +- GstElement: Deprecate gst_element_state_*() API and provide gst_state_*() replacements with the right namespace -- 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. +#### GstMetaFactory to dynamically register metas -- 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!”. +- gst_meta_factory_register() allows to dynamically register metas and store them in the registry by name. This is useful in + combination with the GstMeta serialisation and deserialisation functionality introduced in GStreamer 1.24, for metas that + are not provided by GStreamer core. If an element comes across a meta name that is not registered yet with GStreamer, it can + check the registry and load the right plugin which will in turn register the meta with GStreamer. This is similar to how + flag and enum types can be stored in the registry so that if during caps deserialisation an unknown enum or flag type is + encountered, it can be loaded dynamically and registered with the type system before deserialisation continues. -- Most applications and plugins will have been using the plain string-based APIs which are not affected by this change. + The pbtypes plugin in gst-plugins-base registers GstAudioMeta and GstVideoMeta in the registry so that e.g. unixfdsrc and + other elements can make sure they get pulled in and registered with GStreamer before deserialising them. -#### GstVecDeque +### App Sink and Source Library -- 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. - -- GstQueueArray in libgstbase was deprecated in favour of GstVecDeque. - -- GstAtomicQueue will be deprecated once all users in GStreamer have been moved over to GstVecDeque. +- appsrc and appsink gained support for a more bindings-friendly “simple callbacks” API that can be used instead of GObject + signals (which have considerable overhead) or the normal callbacks API (which couldn’t be used from most bindings). ### Audio Library -- 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. - -- Add top-surround-left and top-surround-right channel positions - -- GstAudioConverter now supports more numerical types for the mix matrix, namely double, int, int64, uint, and uint64 in - addition to plain floats. +- added support for 20-bit PCM audio stored in 32-bit containers, both signed (S20_32) and unsigned (U20_32), each in + little-endian and big-endian variants. ### Plugins Base Utils Library -- New AV1 caps utility functions for AV1 Codec Configuration Record codec_data handling - -- The GstEncodingProfile (de)serialization functions are now public - -- 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. +- Many minor improvements. ### Tag Library -- EXIF handling now support the CAPTURING_LIGHT_SOURCE tag - -- Vorbis tag handling gained support for the LYRICS tag +- Vorbis comments: parse EBU R128 tags ### Video Library and OpenGL Library -- gst_video_convert_sample(), gst_video_convert_sample_async() gained support for D3D12 conversion. - -- GstVideoEncoder: gst_video_encoder_release_frame() and gst_video_encoder_drop_frame() have been made available as public - API. - -- Navigation: gained mouse double click event support - -- 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. - -- GstVideoConverter gained fast paths for v210 to/from I420_10 / I422_10 +- Add DRM equivalents for various 10/12/16 bit SW-decoders formats -- 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. - -- 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. - -- 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. - -- Additional DMA DRM format definitions/mappings: - - - 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 +- New GstVideoMetaTransformMatrix that adds crop, scale, rotate, flip, shear and more meta transformations. The current + “scaling” transformation doesn’t work if either the input buffer is cropped or if any kinds of borders are added. And it + completely falls down with more complex transformations like compositor. + +- GstVideoOverlayCompositionMeta: handling of multiple video overlay composition metas on a single buffer has been fixed in + lots of places (overlays and sinks). Many elements assumed there would only ever be a single overlay composition meta per + buffer. For that reason gst_buffer_get_video_overlay_composition_meta() has been deprecated, so that elements have to + iterate over the metas and handle multiple occurences of it. New Raw Video Formats -- 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 +- Add more 10bit RGB formats commonly used on ARM SoCs in GStreamer Video, OpenGL and Wayland, as well as in deinterlace and + gdkpixbufoverlay: + - BGR10x2_LE: packed 4:4:4 RGB (B-G-R-x), 10 bits for R/G/B channel and MSB 2 bits for padding + - RGB10x2_LE: packed 4:4:4 RGB (R-G-B-x), 10 bits for R/G/B channel and MSB 2 bits for padding +- Add 10-bit 4:2:2 NV16_10LE40 format, which is a fully-packed variant of NV16_10LE32 and also known as NV20 and is produced + by Rockchip rkvdec decoders. ### GstPlay Library -- 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 +- GstPlay: Add support for gapless looping ## Miscellaneous performance, latency and memory optimisations -- 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. +- New task pool GstContext to share a thread pool amongst elements in a pipeline for better resource management and + performance, especially for video conversion and compositing. This is currently only made use of automatically in the + GStreamer Editing Services library. + +- glupload: Implement udmabuf uploader to share buffers between software decoders/sources and GPUs, display engines (wayland), + and other dma devices (see above). + +- GstDeviceMonitor now starts device providers in a separate thread. This avoids blocking the application when + gst_device_monitor_start() is called, which avoids each app having to spawn a separate thread just to start device + monitoring. This is especially important on Windows, where device probing can take several seconds or on macOS where device + access can block on user input. A new GST_MESSAGE_DEVICE_MONITOR_STARTED is posted on the bus to signal to the application + that the device monitor has completed its async startup. -- video-frame: reduce number of memcpy() calls on frame copies if possible +- On Windows audioresample now has SIMD optimisations enabled also for the MSVC build. -- video-converter: added fast path conversions between v210 and I420_10 / I422_10 +- audiomixmatrix / audioconvert: sparse matrix LUT optimisation which uses precomputed LUTs for non-zero coefficients instead + of blindly traversing all input/output channel combinations. - As always there have been plenty of performance, latency and memory optimisations all over the place. ## Miscellaneous other changes and enhancements -- netclientclock: now also emits the clock synced signal when corrupted to signal that sync has been lost. +- The ALSA device provider now supports enumerating virtual PCM sinks -- GstValue, GstStructure: can now (de)serialize string arrays (G_TYPE_STRV) +- The ASIO device monitor can now detect dynamically added and removed devices by monitoring USB events. ## Tracing framework and debugging improvements -- dot files (pipeline graph dumps) are now written to disk atomically - -- tracing: add hooks for gst_pad_send_event_unchecked() and GstMemory init/free +- There are new hooks to track when buffers are queued or dequeued from buffer pools in the tracing system. -- tracers: Simplify params handling using GstStructure and object properties and move tracers over to property-based - configuration (leaks, latency). +- The pad-push-timings tracer gained a new “write-log” action signal -- 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. +Dot tracer/viewer -New tracers +- Enhanced dots-viewer: Major refactoring with modular JavaScript architecture, bundled dependencies (no more CDN), clickable + pipeline references for navigation between related dot files, download SVG button, and improved UI/UX with better text + handling and zoom fixes. -- memory-tracer: New tracer that can track memory usage over time +Dot file pipeline graphs -- pad-push-timings: New tracer for tracing pad push timings +- Dot file dumps of pipeline graphs now show the list of active tracers at the bottom along with the tracer configuration. -- pcap-writer: New tracer that can store the buffers flowing through a pad as PCAP file +Debug logging system improvements -Dot tracer/viewer +GstLogContext to fine-tune logging output and reduce log message spam -- 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 +- GstLogContext is a new API to control logging behavior, particularly for implementing “log once” functionality and periodic + logging. This helps avoid spamming logs with repetitive messages. This comes with a whole suite of new GST_CTX_* debug log + macros that take a context argument in addition to the usual arguments. -Debug logging system improvements +- A number of GST_{MEMDUMP,TRACE,LOG,DEBUG,INFO,WARNING,ERROR}_ONCE convenience macros for logging something only once. -- Nothing major in this cycle. +- The source code of elements and plugins has to be updated to make use of this new feature, so if there are any particular + log messages in certain elements that you feel are particularly spammy, please feel free to file an issue in GitLab so we + can see if it would make sense to use the new API there. ## Tools -- gst-inspect-1.0 documents tracer properties now and shows element flags - -- gst-launch-1.0 will show error messages posted during pipeline construction +- gst-inspect-1.0 now shows the type of each field when it prints caps and also pretty-prints tensor caps. ## GStreamer FFmpeg wrapper -- Add support for H.266/VVC decoder - -- Add mappings for the Hap video codec, the Quite OK Image codec (QOI) and the M101 Matrox uncompressed SD video codec. - -- Don’t register elements for which we have no caps and which were non-functional as a result (showing unknown/unknown caps). - -- The S302M audio encoder now supports up to 8 channels. - -- Various tag handling improvements in the avdemux wrappers, especially when there are both upstream tags and additional local - tags. - -- Support for 10-bit grayscale formats +- The avdec video decoders have seen many improvements and fixes for their buffer pool and allocation query handling. ## GStreamer RTSP server -- 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. +- rtsp-client: Add a “pre-closed” signal which provides a way for an application to be notified when a connection is closed, + before the client’s sessions are cleaned up. This is useful when a client terminates its session improperly, for example, by + sending a TCP RST. + +- rtsp-stream-transport: expose new “timed-out” property. Upon RTCP timeout, rtpsession emits a signal that we can catch and + then also expose the timed out state a property of the transport in order for users (such as rtspclientsink) to get notified + about it. -- The ONVIF backchannel example now features support for different codecs, including AAC. +- rtspclientsink now errors out on timeout. ## VA-API integration -VA plugin - -- New VA elements: - - - H.266 / VVC video decoder - - VP8 video encoder - - JPEG encoder - - VP9 + VP8 alpha decodebin - - Remember that the availability of these elements depends on your platform and driver. - -- There are a lot of improvements and bug fixes, to hightlight some of them: - - - 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. - -GStreamer-VAAPI is now deprecated +VA plugin for Hardware-Accelerated Video Encoding and Decoding on Intel/AMD -- 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. +- vaav1enc: Enable intrablock copy and palette mode. -- 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. +- Lots of other improvements and bug fixes. -## GStreamer Video4Linux2 support +GStreamer-VAAPI has been removed in favour of the va plugin -- Implemented DMA_DRM caps negotiation +- gstreamer-vaapi has been removed and is no longer updated going forward Users who relied on gstreamer-vaapi are encouraged + to migrate to the va plugin’s elements at the earliest opportunity. It should still be possible to build old versions of + gstreamer-vaapi against newer versions of GStreamer. -- Framerate negotiation improvements - -- Support for P010 and BGR10A2_LE pixel formats - -- The V4L2 stateless decoders now support inter-frame resolution changes for AV1 and VP9 +## GStreamer Editing Services and NLE -- The V4L2 stateful encoders can now handle dynamic frame rates (0/1), and colorimetry negotiation was also improved. +- Task Pool Context Support: GESPipeline now supports task pool context handling for better resource management. It + automatically creates and manages a GstSharedTaskPool with threads set to the number of processors, also allowing + applications to provide their own shared task pool via context negotiation. -## GStreamer Editing Services and NLE +- MT-Safe Controller API: New gst_timed_value_control_source_list_control_points() function provides thread-safe access to + control points, addressing use-after-free bugs in the previous API which returned references to internal structures. -- Added support for reverse playback with a new reverse property on nlesource which is exposed child property on GESClip +- OTIO Formatter Migration: The OpenTimelineIO formatter has been moved from embedded GLib resources to a standalone Python + plugin located in gst-python, simplifying the implementation and avoiding duplicated code. -- Input channels reordering for flexible audio channel mapping +- Framepositioner Z-order Enhancements: The z-order property is now controllable and exposed for manipulation, enabling + dynamic adjustment of layer stacking order during timeline editing. -- Added support for transition in the ges-launch-1.0 timeline description format +- Clip Layer Movement Detection: New ges_clip_is_moving_between_layers() API distinguishes actual layer moves from other + operations like split/ungroup, with separate flags for track element freezing and layer movement. -- Added support for GstContext sharing in GESTimeline +- GES Error Domain: Added ges_error_quark() function for proper GError domain support, enabling automatic ErrorDomain + implementation generation in language bindings. -- Added basic support for duplicated children property in GESTimelineElement +- Timeline Error Reporting: Added GError parameter to ges_base_bin_set_timeline() for proper error reporting when timeline + setup fails. -- validate: Add an action type to group clips +- Various bug fixes for memory leaks, frame position calculations with non-square pixel aspect ratios, and control binding + handling. -## GStreamer validate +GStreamer validate -- Added new action types: +- New check-last-frame-qrcode action type: New action type (from the Rust validate plugin) to validate QR code content in + video frames. Supports exact string matching for single or multiple QR codes, and JSON field validation. - - 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 +- Override Severity Levels: New overrides parameter in the meta action type allows changing issue severity levels during test + execution. Tests can now pass when encountering known issues by downgrading severity from critical to warning/issue/ignore. -- HTTP server control endpoints to allow scenarios to control the server behavior, allowing simulating server failures from - tests +- Enhanced dots-viewer (see dots-viewer section above) -- Improved the select-streams action type, adding support for selecting the same streams several times +- SSIM Validation Improvements: Changed validation to check all images before reporting errors instead of stopping at the + first error. -- Added support for forcing monitoring of all pipelines in validatetest files +- Reverse Playback Validation: Changed segment.time mismatch from critical to warning for reverse playback scenarios, + acknowledging the additional complexity demuxers face during reverse playback. -- Enhanced support for expected Error messages on the bus +- Launcher Improvements: Log files for passing tests are now removed by default to reduce storage usage (with option to keep + them), and debug log colors are now supported when redirected to files. -- Added ways to retrieve HTTP server port in .validatetest files +- Python 3.14 Compatibility: Fixed file:/// URI generation for Python 3.14 with proper RFC 8089 compliance. -- Added support for lldb in the gst-validate-launcher +- Various bug fixes for scenario handling, memory leaks, and improved backward compatibility with GLib 2.64. ## GStreamer Python Bindings @@ -927,125 +757,100 @@ 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. -- 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). +- More pythonic API for analytics -- Added an iterator for AnalyticsRelationMeta +- Type annotations have been updated in PyGObject-stubs. -- Implement __eq__ for Mtd classes +- Writability of Gst.Structure, Gst.Caps and other objects has been improved. -- Various build fixes and Windows-related fixes. + - caps.writable_structure() now returns a ContextManager inside of which the returned Gst.Structure can be modified. + - obj.make_writable() makes any MiniObject writable. + - Pad probe callbacks now has info.writable_object() and info.set_object() to modify objects inside the callback. ## GStreamer C# Bindings -- The C# bindings have been updated for the latest GStreamer 1.26 API +- The C# bindings have been updated for the latest GStreamer 1.28 APIs. ## 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 gtk-rs release cycle. -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. +The latest release of the bindings (0.24) has already been updated for the new GStreamer 1.28 APIs, and works with any GStreamer +version starting from 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.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++. - -### New Rust elements - -- awstranscriber2, awstranslate: New elements around the AWS transcription and translation services. - -- cea708mux: New element that allows to mux multiple CEA708 services into a single stream. - -- cdpserviceinject: New element for injecting a CDP service descriptor into closed caption CDP packets - -- cea708overlay: New element for overlaying CEA608 / CEA708 closed captions over video streams. +and plugins. -- gopbuffer: New element that can buffer a minimum duration of data delimited by discrete GOPs (Group of Picture) +The GStreamer 1.28 binaries will be tracking the main branch of gst-plugins-rs for starters and then track the 0.15 branch once +that has been released (around the end of February 2026). After that, fixes from newer versions will be backported as needed +into the new 0.15 branch for future 1.28.x bugfix releases. -- hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments. +Rust plugins can be used from any programming language. To applications, they look just like a plugin written in C or C++. -- hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants - -- 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. - -- onvifmetadataextractor: New element that can extract ONVIF metadata from GstMetas into a separate 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. - -- polly: New element around the AWS text-to-speech polly services +### New Rust elements -- quinn: New plugin that contains various QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and - WebTransport. +- New icecastsink element with AAC support that is similar in functionality to the existing shout2send element but also + supports AAC, which upstream libshout is not planning to support. -- relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata. +- New audio source separation element based on demucs (see above). -- 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. +- New Deepgram speech-to-text transcription plugin, ElevenLabs voice cloning element and textaccumulate element. See Speech to + Text, Translation and Speech Synthesis section above. -- New rtpbin2 based on rtprecv / rtpsend elements +- New analytics combiner and splitter elements for batch metas (see above). -- speechmatics: New transcriber / speech-to-text and translation element +- New mpa robust RTP depayloader, L8/L16/L24 raw audio payloaders and depayloaders and SMPTE ST291 ancillary data payloader + and depayloader. -- New spotifylyricssrc element for grabbing lyrics from Spotify. +- New GIF decoder element that supports looping. -- 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 ST-2038 ancillary data combiner and extractor elements (see above) -- translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions. +- Added a burn-based YOLOX inference element and a YOLOX tensor decoder -- tttocea708: New element for converting timed-text to CEA708 closed captions +- s302mparse: Add new S302M audio parser -- A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library. +- New Rust validate plugin with a check-last-frame-qrcode action. -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). +For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.14 (shipped with GStreamer +1.26) and current main (soon 0.15) branch (shipped with GStreamer 1.28). -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. +Note that at the time of GStreamer 1.28.0 gst-plugins-rs 0.15 was not released yet and the git main branch was included instead +(see above). ## Build and Dependencies - Meson >= 1.4 is now required for all modules -- 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). +- liborc >= 0.4.42 is strongly recommended -- The ASIO plugin dropped its external SDK header dependency, so it can always be built and shipped more easily. +- libnice >= 0.1.23 is now required for the WebRTC library. -- Require tinyalsa >= 1.1.0 when building the tinyalsa plugin +- The closedcaption plugin in gst-plugins-bad no longer depends on pangocairo after removal of the cc708overlay element (see + above). -- The srtp plugin now requires libsrtp2, support for libsrtp1 was dropped. +- Please also note plugin removals and deprecations. Monorepo build -- The FFmpeg subproject wrap was updated to 7.1 +- Updated wraps, incl. glib: cairo, directxmath, expat, fdk-aac, ffmpeg, flac, freetype2, gdk-pixbuf, gtest, harfbuzz, + json-glib, lame, libjpeg-turbo, libnice, libopenjp2, libpng, libsrtp2, libxml2, nghttp2, ogg, pango, pcre2, pygobject, + soundtoch, sqlite3, wayland-protocols, zlib. -- Many other wrap updates - -gstreamer-full - -- No major changes +- Added wraps: librsvg, svtjpegxs Development environment - Local pre-commit checks via git hooks have been moved over to pre-commit, including the code indentation check. - 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 + 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. - A pre-commit hook has been added to check documentation cache updates and since tags. -- Many meson wrap updates, including to FFmpeg 7.1 +- Many meson wrap updates, including to FFmpeg 7.1 (FFmpeg 8.0 is pending) - The uninstalled development environment should work better on macOS now, also in combination with homebrew (e.g. when libsoup comes from homebrew). @@ -1057,2267 +862,235 @@ ### Android -- 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. +- Overhaul hw-accelerated video codecs detection: + + - Android 10 (API 29) added support for isHardwareAccelerated() to MediaCodecInfo to detect whether a particular + MediaCodec is backed by hardware or not. We can now use that to ensure that the video hw-codec is rank PRIMARY+1 on + Android, since using a software codec for video is simply not feasible most of the time. + + - If we’re not able to detect isHardwareAccelerated(), perhaps because the Android API version is too old, we try to use + the codec name as a fallback and also rank as PRIMARY+1 the c2.android, c2.exynos and c2.amlogic audio codecs alongside + OMX.google, because they are known-good. ### Apple macOS and iOS -- atenc: added an Apple AAC audio encoder +- VP9 and AV1 hardware-accelerated video decoding support -- atdec can now decode audio with more than two channels +- Support for 10-bit HEVC encoding -- vtenc has received various bug fixes as well as a number of new features: +- Implement keyboard, mouse, and scroll wheel navigation event handling for the OpenGL Cocoa backend. - - 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) +### Windows -- Better macOS support for gst-validate tools which now use gst_macos_main() and support lldb +#### GStreamer Direct3D12 integration -- The osxaudio device provider exposes more properties including a unique id +- New elements: -- osxaudio will automatically set up AVAudioSession on iOS and always expose the maximum number of channels a device supports - with an unpositioned layout. + - d3d12interlace: A Direct3D12 based interlacing element + - d3d12overlaycompositor: A Direct3D12-based overlay composing element + - d3d12fisheyedewarp: A Direct3D12-based fisheye dewarping element + - d3d12remap: A Direct3D12-based UV coordinate remapping element -- The monorepo development environment should work better on macOS now +- Upload/download optimisations via a staging memory implementation -- CMake apps that build macOS and iOS apps can consume GStreamer more easily now, using FindGStreamer.cmake or - FindGStreamerMobile.cmake respectively. +- d3d12swapchainsink improvements: -- In the near future, CMake in Xcode will be the preferred way of building the iOS tutorials. See below, in the Cerbero - section. + - added a “last-rendered-sample” action signal to retrieve the last rendered frame + - added “uv-remap” and “redraw” action signals -### Windows +#### Windows inter process communication -- webview2src: new Microsoft WebView2 based web browser source element +- The Windows IPC plugin gained support for passing generic data in addition to raw audio/video, and various new properties. + It also serialises metas now where that is supported. -- The mediafoundation plugin can also be built with MinGW now. +#### Windows audio -- The GTK3 plugin has gained support for OpenGL/WGL on Windows +- wasapi2: add support for dynamic audio device switching, exclusive mode and format negotiation, in addition to device + provider improvements and latency enhancements. -- qsv: Add support for d3d12 interop in encoder, via D3D11 textures +- Disable all audio device providers except wasapi2 by default (by setting the others’ rank to NONE). We had too many device + providers outputting duplicate device entries, and it wasn’t clear to people what they should be using. After the recent + device switching work done on WASAPI2, there is no reason to use directsound anymore. ### Cerbero Cerbero is a meta build system used to build GStreamer plus dependencies on platforms where dependencies are not readily -available, such as Windows, Android, iOS, and macOS. +available, such as Windows, Android, iOS, and macOS. It is also used to create the GStreamer Python Wheels. General improvements - New features: - - 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. - - - 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. - - - Introspection support has been re-introduced on Linux, Windows (MSVC), and macOS. - - - 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. + - Support for generating Python wheels for macOS and Windows + - These will be uploaded to PyPI, currently blocked on PyPI + - Support for iPhone Simulator on ARM64 macOS, via the new iOS xcframework + - Inno Setup is now used for Windows installers, which also bundle the MSVC runtime + - An installer is now shipped for Windows ARM64, built using MSVC + - GTK4 is now shipped on macOS and Windows (MSVC and MinGW) + - Smaller binary sizes of Rust plugins on all platforms except macOS and iOS + - Linux builds now integrate better with system dependencies + - Debuginfo is now correctly shipped on Windows and macOS - API/ABI changes: - - 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. - - - 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. + - Android NDK r25 is now used, targeting API level 24 (Android 7.0) + - Merge modules are no longer shipped for Windows + - Windows installers are no longer MSIs + - The legacy iOS framework with iPhone ARM64 and iPhoneSimulator x86_64 binaries is now deprecated. It will be removed in + the next release. Please use the new iOS xcframework which supports iPhone ARM64 and iPhoneSimulator ARM64+x86_64. - Plugins added: - - The svt-av1 plugin is now shipped in the binary releases for all platforms. - - - The svt-jpeg-xs plugin is now shipped in the binary releases for all platforms. - - - The x265 plugin is now shipped in the binary releases for all platforms. - - - 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. + - pbtypes is now shipped on all platforms + - curl is now shipped on all platforms except iOS and Android + - lcevcdec is now shipped on all platforms except Windows ARM64 and Windows 32-bit x86 + - svtjpegxs is now shipped on Linux and Windows, only on 64-bit + - unixfd is now shipped on all platforms except Windows + - mediafoundation is now shipped additionally on MinGW + - wasapi2 is now shipped additionally on MinGW + - New Rust plugins on all platforms except Windows ARM64: + - analytics + - audioparsers + - burn + - demucs + - elevenlabs + - gopbuffer + - hlsmultivariantsink + - icecastsink + - mpegtslive + - raptorq + - speechmatics + - streamgrouper + - vvdec - Plugins changed: - - 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. - - - The webrtc Rust plugin now also supports aws and livekit integrations . - -- Plugins removed: - - - webrtc-audio-processing has been updated to 2.0, which means the isac plugin is no longer shipped. + - mp4 and fmp4 plugins have been merged into isobmff - Development improvements: - - Support for the shell command has been added to cross-macos-universal, since the prefix is executable despite being a - cross-compile target + - Debuginfo is now correctly shipped on Windows and macOS + - Support for iPhone Simulator on ARM64 macOS, via the new iOS xcframework - - More recipes have been ported away from Autotools to Meson and CMake, speeding up the build and increasing platform - support. +- Known issues: -#### macOS + - cerbero: Rust plugins fail to link with Xcode 26 on macOS + - cerbero: Rust plugins are not shipped in the Windows ARM64 installer + - cerbero: Android devices with API level >= 30 cannot play tutorials 4 or 5 – Fix aimed for 1.28.1 + - cerbero: Missing pkg-config for macOS in the Android release -- Python bindings support on macOS only supports using the Xcode-provided Python 3 - -- MoltenVK support in the applemedia plugin now also works on arm64 when doing a cross-universal build. - -#### iOS - -- CMake inside Xcode will soon be the recommended way to consume GStreamer when building iOS apps, similar to Android apps. - - - FindGStreamerMobile.cmake is the recommended way to consume GStreamer now - - - Tutorials and examples still use Xcode project files, but CMake support will be the active focus going forward - -#### Windows - -- The minimum supported OS version is now Windows 10. - - - 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. - -- 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. - - - 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. - - - 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:\. - - - Cross-MinGW build no longer supports the creation of MSIs. Please use tarballs. - -- MinGW: - - - MinGW toolchain has been updated from GCC 8.2 → 14.2 and MinGW 6.0 → 12.0 - - - The mediafoundation plugin is also shipped in the MinGW packages now. - - - The d3d12 plugin is also shipped in the MinGW packages now. - - - 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 - -- The asio plugin is shipped now, since it no longer has a build-time dependency on the ASIO SDK. - -- The new plugin webview2 is shipped with MSVC. It requires the relevant component shipped with Windows. - -#### Linux - -- Preliminary support for Alma Linux has been added. - -- RHEL distro support has been improved. - -- Cerbero CI now tests the build on Ubuntu 24.04 LTS. - -- 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. - -#### Android - -- CMake inside Gradle is now the recommended way to consume GStreamer when building Android apps - - - FindGStreamerMobile.cmake is the recommended way to consume GStreamer now - - - 1.26 will support both CMake and Make inside Gradle, but the Make support will likely be removed in 1.28 +## Documentation improvements - - Documentation updates are still a work-in-progress, help is appreciated +- Added a Windows section to “building from source” page -- Android tutorials and examples are now built with gradle + cmake instead of gradle + make on the CI +- New Python tutorials for dynamic pipelines and time handling -## Documentation improvements +- The Android tutorials were updated: provided projects were updated to Gradle 8.11 and API level 24 -- Tracer objects information is now included in the documentation +- Updates of the Machine Learning and Analytics design documentation and the GstMeta design docs ## Possibly Breaking Changes -- 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. - -- 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. - -- 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. +- The MXF muxer and demuxer used to have direct support for standalone closed caption streams (closedcaption/x-cea-708) as + ancillary data, but that was removed in favour of more generic ST 2038 ancillary metadata which is a better fit for how the + data is stored internally and also supports generic ancillary metadata. Closed captions can still be stored or extracted by + using the ST 2038 elements from the Rust plugins module. Also see the MXF section above. + +- Analytics: Previously it was guaranteed that there is only ever up to one GstTensorMeta per buffer. This is no longer true + and code working with GstTensorMeta must be able to handle multiple GstTensorMeta now (after this Merge Request, which was + apparently backported into 1.26 as well). -- uridecodebin3 remove non-functional "source" property that doesn’t make sense and always returned NULL anyway. +- The thread ID reported in debug logs is no longer prefixed with a 0x on Windows, Linux and FreeBSD platforms. This change + can potentially break log parsers. GstDebugViewer was adapted accordingly. ## Known Issues -- 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. +- There are some open issues with the Apple hardware-accelerated AV1 decoding, which we hope will be fixed in due course. + Please let us know if you run into them and can test patches. + +- Autoplugging LCEVC H.264/H.265/H.266 streams is currently disabled until an issue with decodebin3 and non-LCEVC streams has + been resolved. It is still possible to re-enable this locally by overriding the rank of lcevch26*decodebin using the + GST_PLUGIN_FEATURE_RANK environment variable. ## Statistics -- 4496 commits +- 3548 commits -- 2203 Merge requests merged +- 1765 Merge requests merged -- 794 Issues closed +- 476 Issues closed -- 215+ Contributors +- 190+ Contributors -- ~33% of all commits and Merge Requests were in Rust modules/code +- more than 35% of all commits and Merge Requests were in Rust modules/code -- 4950 files changed +- 5430 files changed -- 515252 lines added +- 395856 lines added -- 201503 lines deleted +- 249844 lines deleted -- 313749 lines added (net) +- 146012 lines added (net) Contributors -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! - -Stable 1.26 branch - -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. - -1.26.1 - -The first 1.26 bug-fix release (1.26.1) was released on 24 April 2025. - -This release only contains bugfixes and security fixes and it should be safe to update from 1.26.0. - -Highlighted bugfixes in 1.26.1 - -- awstranslate and speechmatics plugin improvements -- decodebin3 fixes and urisourcebin/playbin3 stability improvements -- Closed captions: CEA-708 generation and muxing fixes, and H.264/H.265 caption extractor fixes -- dav1d AV1 decoder: RGB support, plus colorimetry, renegotiation and buffer pool handling fixes -- Fix regression when rendering VP9 with alpha -- H.265 decoder base class and caption inserter SPS/PPS handling fixes -- hlssink3 and hlsmultivariantsink feature enhancements -- Matroska v4 support in muxer, seeking fixes in demuxer -- macOS: framerate guessing for cameras or capture devices where the OS reports silly framerates -- MP4 demuxer uncompressed video handling improvements and sample table handling fixes -- oggdemux: seeking improvements in streaming mode -- unixfdsrc: fix gst_memory_resize warnings -- Plugin loader fixes, especially for Windows -- QML6 GL source renegotiation fixes -- RTP and RTSP stability fixes -- Thread-safety improvements for the Media Source Extension (MSE) library -- v4l2videodec: fix A/V sync issues after decoding errors -- Various improvements and fixes for the fragmented and non-fragmented MP4 muxers -- Video encoder base class segment and buffer timestamp handling fixes -- Video time code support for 119.88 fps and drop-frames-related conversion fixes -- WebRTC: Retransmission entry creation fixes and better audio level header extension compatibility -- YUV4MPEG encoder improvments -- dots-viewer: make work locally without network access -- gst-python: fix compatibility with PyGObject >= 3.52.0 -- Cerbero: recipe updates, compatibility fixes for Python < 3.10; Windows Android cross-build improvements -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- Correctly handle whitespace paths when executing gst-plugin-scanner -- Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup -- cmake: Fix PKG_CONFIG_PATH formatting for Windows cross-builds -- macos: Move macos function documentation to the .h so the introspection has the information -- meson.build: test for and link against libatomic if it exists -- pluginloader-win32: Fix helper executable path under devenv -- pluginloader: fix pending_plugins Glist use-after-free issue -- unixfdsrc: Complains about resize of memory area -- tracers: dots: fix debug log - -gst-plugins-base - -- Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup -- alsadeviceprovider: Fix leak of Alsa longname -- audioaggregator: fix error added in !8416 when chaining up -- audiobasesink: Fix custom slaving driftsamples calculation and add custom audio clock slaving callback example -- decodebin3: Don’t avoid parsebin even if we have a matching decoder -- decodebin3: Doesn’t plug parsebin for AAC from tsdemux -- gl: eglimage: warn the reason of export failure -- glcolorconvert: fix YUVA<->RGBA conversions -- glcolorconvert: regression when rendering alpha vp9 -- gldownload: Unref glcontext after usage -- meson.build: test for and link against libatomic if it exists -- oggdemux: Don’t push new packets if there is a pending seek -- urisourcebin: Make parsebin activation more reliable -- urisourcebin: deadlock between parsebin and typefind -- videoencoder: Use the correct segment and buffer timestamp in the chain function -- videotimecode: Fix conversion of timecode to datetime with drop-frame timecodes and handle 119.88 fps correctly in all - places - -gst-plugins-good - -- Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup -- gst-plugins-good: Matroska mux v4 support -- matroska-demux: Prevent corrupt cluster duplication -- qml6glsrc: update buffer pool on renegotiation -- qt6: Add a missing newline in unsupported platform message -- qtdemux: Fix stsc size check in qtdemux_merge_sample_table() -- qtdemux: Next Iteration Of Uncompressed MP4 Decoder -- qtdemux: unref simple caps after use -- rtspsrc: Do not emit signal ‘no-more-pads’ too early -- rtspsrc: Don’t error out on not-linked too early -- rtpsession: Do not push events while holding SESSION_LOCK -- rtpsession: deadlock when gst_rtp_session_send_rtcp () is forwarding eos -- v4l2: drop frame for frames that cannot be decoded -- v4l2videodec: AV unsync for streams with many frames that cannot be decoded -- v4l2object: fix memory leak -- v4l2object: fix type mismatch when ioctl takes int -- y4menc: fix Y41B format -- y4menc: handle frames with GstVideoMeta - -gst-plugins-bad - -- Add missing Requires in pkg-config -- Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup -- Update docs -- aja: Use the correct location of the AJA NTV2 SDK in the docs -- alphacombine: De-couple flush-start/stop events handling -- alphadecodebin: use a multiqueue instead of a couple of queues -- avfvideosrc: Guess reasonable framerate values for some 3rd party devices -- codecalpha: name both queues -- d3d12converter: Fix cropping when automatic mipmap is enabled -- dashsink: Make sure to use a non-NULL pad name when requesting a pad from splitmuxsink -- docs: Fix GstWebRTCICE* class documentation -- h264ccextractor, h265ccextractor: Handle gap with unknown pts -- h265decoder, h265ccinserter: Fix broken SPS/PPS link -- h265parser: Fix num_long_term_pics bound check -- Segmentation fault in H265 decoder -- h266decoder: fix leak parsing SEI messages -- meson.build: test for and link against libatomic if it exists -- mse: Improved Thread Safety of API -- mse: Revert ownership transfer API change in gst_source_buffer_append_buffer() -- tensordecoders: updating element classification -- unixfd: Fix wrong memory size when offset > 0 -- uvcsink: Respond to control requests with proper error handling -- v4l2codecs: unref frame in all error paths of end_picture -- va: Skip codecs that report maximum width or height lower than minimum -- vapostproc: fix wrong video orientation after restarting the element -- vavp9enc: fix mem leaks in _vp9_decide_profile -- vkformat: fix build error -- vtenc: Avoid deadlocking when changing properties on the fly -- vulkan: fix memory leak at dynamic registering -- webrtc: enhance rtx entry creation -- webrtcbin: add missing warning for caps missmatch -- ZDI-CAN-26596: New Vulnerability Report (Security) - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- Bump MSRV to 1.83 -- Allow any windows-sys version >= 0.52 and <= 0.59 -- aws/polly: add GstScaletempoTargetDurationMeta to output buffers -- awstranslate: improve message posted on bus -- cdg: typefind: Division by zero fix -- cea708mux: Improve support for overflowing input captions -- colordetect: Change to videofilter base class -- dav1ddec: Drain decoder on caps changes if necessary -- dav1ddec: Only update unknown parts of the upstream colorimetry and not all of it -- dav1ddec: Support RGB encoded AV1 -- dav1ddec: Use downstream buffer pool for copying if video meta is not supported -- dav1ddec: Use max-frame-delay value from the decoder instead of calculating it -- dav1ddec: Use max-frame-delay value from the decoder instead of calculating it -- doc: Update to latest way of generating hotdoc config files -- Fix gtk4 compile -- Fix various clippy 1.86 warnings and update gstreamer-rs / gtk-rs dependencies -- fmp4mux: Add a couple of minor new features -- fmp4mux: Add manual-split mode that is triggered by serialized downstream events -- fmp4mux: Add send-force-keyunit property -- fmp4mux: Fix latency configuration for properties set during construction -- fmp4mux: Improve split-at-running-time handling -- fmp4mux/mp4mux: Handle the case of multiple tags per taglist correctly -- fmp4mux: Write a v0 tfdt box if the decode time is small enough -- gstwebrtc-api: Add TypeScript type definitions, build ESM for broader compatibility, improve JSDocs -- hlsmultivariantsink: Allow users to specify playlist and segment location -- hlssink3 - Add Support for NTP timestamp from buffer -- livesync: Notify in/out/drop/duplicate properties on change -- livesync: Only notify drop/duplicate properties -- meson: Require gst 1.18 features for dav1d -- mp4mux: Don’t write composition time offsets if they’re all zero -- mp4mux, fmp4mux: Use correct timescales for edit lists -- mpegtslivesrc: increase threshold for PCR <-> PTS DISCONT -- mpegtslivesrc: Use a separate mutex for the properties -- mux: use smaller number of samples for testing -- net/aws: punctuation-related improvements to our span_tokenize_items function -- pcap_writer: Mark target-factory and pad-path props as construct-only -- speechmatics: Handle multiple stream-start event -- tracers: buffer-lateness: don’t panic on add overflow + reduce graph legend entry font size a bit -- tracers: Update to etherparse 0.17 -- transcriberbin: make auto passthrough work when transcriber is a bin -- ts-jitterbuffer: improve scheduling of lost events -- tttocea708: fix origin-row handling for roll-up in CEA-708 -- Update Cargo.lock to remove old windows-targets 0.48.5 -- Update dependencies -- Update gtk-rs / gstreamer-rs dependencies and update for API changes -- Update to bitstream-io 3 -- uriplaylistbin: skip cache test when offline -- webrtc: Port to reqwest 0.12 -- webrtcsink: Fix compatibility with audio level header extension - -gst-libav - -- No changes - -gst-rtsp-server - -- Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-python - -- gst-python: fix compatibility with PyGObject >= 3.52.0 -- gst-python: Segmentation Fault since PyGObject >= 3.52.0 due to missing _introspection_module attribute - -gst-editing-services - -- Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup - -gst-devtools, gst-validate + gst-integration-testsuites - -- Add missing Requires in pkg-config -- devtools: dots-viewer: Bundle js dependencies using webpack -- devtools: dots-viewer: Update dependencies and make windows dependencies conditional - -gst-examples - -- examples: Update Rust dependencies -- examples: webrtc: rust: Move from async-std to tokio - -gstreamer-docs - -- Update docs - -Development build environment - -- No changes - -Cerbero build tool and packaging changes in 1.26.1 - -- FindGStreamerMobile: Override pkg-config on Windows -> Android cross builds -- Fix BuildTools not using recipes_remotes and recipes_commits -- bootstrap, meson: Use pathlib.Path.glob to allow Python < 3.10 -- Use of ‘glob(…, root_dir)’ requires Python >=3.10, cerbero enforces >= 3.7 -- harfbuzz: update to 10.4.0 -- Update fontconfig to 2.16.1, pango to 1.56.2 - -Contributors to 1.26.1 - -Alexander Slobodeniuk, Alyssa Ross, Artem Martus, Arun Raghavan, Brad Hards, Carlos Bentzen, Carlos Rafael Giani, Daniel Morin, -David Smitmanis, Detlev Casanova, Dongyun Seo, Doug Nazar, dukesook, Edward Hervey, eipachte, Eli Mallon, François Laignel, -Guillaume Desmottes, Gustav Fahlen, Hou Qi, Jakub Adam, Jan Schmidt, Jan Tojnar, Jordan Petridis, Jordan Yelloz, L. E. Segovia, -Marc Leeman, Marek Olejnik, Mathieu Duponchelle, Matteo Bruni, Matthew Waters, Michael Grzeschik, Nirbheek Chauhan, Ognyan -Tonchev, Olivier Blin, Olivier Crête, Philippe Normand, Piotr Brzeziński, Razvan Grigore, Robert Mader, Sanchayan Maity, -Sebastian Dröge, Seungha Yang, Shengqi Yu (喻盛琪), Stefan Andersson, Stéphane Cerveau, Thibault Saunier, Tim-Philipp Müller, -tomaszmi, Víctor Manuel Jáquez Leal, Xavier Claessens, +Aaron Boxer, Abd Razak, Adrian Perez de Castro, Adrien Plazas, Albert Sjolund, Aleix Pol, Alexander Slobodeniuk, Alicia Boya +García, Alyssa Ross, Amotz Terem, Amy Ko, Andoni Morales Alastruey, Andrew Yooeun Chun, Andrey Khamukhin, anonymix007, Arnout +Engelen, Artem Martus, Arun Raghavan, Ben Butterworth, Biswapriyo Nath, Brad Hards, Brad Reitmeyer, Branko Subasic, Camilo Celis +Guzman, Carlos Bentzen, Carlos Falgueras García, Carlos Rafael Giani, César Alejandro Torrealba Vázquez, Changyong Ahn, Chengfa +Wang, Christian Gräfe, Christo Joseph, Christopher Degawa, Christoph Reiter, Daniel Almeida, Daniel Morin, David Maseda Neira, +David Monge, David Smitmanis, Denis Shimizu, Derek Foreman, Detlev Casanova, Devon Sookhoo, Diego Nieto, Dominique Leroux, +DongJoo Kim, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, eipachte, Eli Mallon, Elliot Chen, Enock Gomes Neto, Enrique +Ocaña González, Eric, Eva Pace, F. Duncanh, François Laignel, Gang Zhao, Glyn Davies, Guillaume Desmottes, Gustav Fahlen, +Haejung Hwang, Haihua Hu, Havard Graff, Hanna Weiß, He Junyan, Hou Qi, Hyunjun Ko, Ian Napier, Inbok Kim, Jaehoon Lee, Jakub +Adam, James Cowgill, Jan Alexander Steffens (heftig), Jan Schmidt, Jan Tojnar, Jan Vermaete, Jaslo Ziska, Jeehyun Lee, Jeffery +Wilson, jeongmin kwak, Jeongmin Kwak, Jerome Colle, Jiayin Zhang, Jihoon Lee, Jochen Henneberg, Johan Sternerup, Jonathan Lui, +Jordan Petridis, Jordan Yelloz, Jorge Zapata, Julian Bouzas, Kevin Scott, Kevin Wolf, L. E. Segovia, Linus Svensson, Loïc Le +Page, Manuel Torres, Marc-André Lureau, Marc Leeman, Marek Olejnik, Mark Nauwelaerts, Marko Kohtala, Markus Hofstaetter, Mathieu +Duponchelle, Matteo Bruni, Matthew Semeniuk, Matthew Waters, Max Goltzsche, Mazdak Farzone, Michael Grzeschik, Michael Olbrich, +Michiel Westerbeek, Monty C, Muhammad Azizul Hazim, Nicholas Jin, Nicolas Dufresne, Nirbheek Chauhan, Norbert Hańderek, Ognyan +Tonchev, Ola Fornander, Olivier Blin, Olivier Crête, Oz Donner, Pablo García, Patricia Muscalu, Patrick Fischer, Paul Fee, Paweł +Kotiuk, Paxton Hare, Peter Stensson, pfee, Philippe Normand, Piotr Brzeziński, Piotr Brzeziński, Pratik Pachange, Qian Hu +(胡骞), r4v3n6101Rafael Caricio, Raghavendra Rao, Rares Branici, Ratchanan Srirattanamet, Razvan Grigore, Rick Ye, Rinat Zeh, +Robert Ayrapetyan, Robert Mader, Ross Burton, Ruben Gonzalez, Ruben Sanchez, Samuel Thibault, Sanchayan Maity, Santiago +Carot-Nemesio, Santosh Mahto, Sebastian Dröge, Seungha Yang, Shengqi Yu (喻盛琪), Sjoerd Simons, Slava Sokolovsky, Stefan +Andersson, Stefan Dangl, Stéphane Cerveau, stevn, Sven Püschel, Sylvain Garrigues, Taruntej Kanakamalla, Teus Groenewoud, Théo +Maillart, Thibault Saunier, Tim-Philipp Müller, Tjitte de Wert, Tobias Schlager, Tobias Koenig, Tomasz Mikolajczyk, Tulio +Beloqui, Val Packett, Vasiliy Doylov, Víctor Manuel Jáquez Leal, Vincent Beng Keat Cheah, Vineet Suryan, Vivia Nikolaidou, +Vivian Lee, Vivienne Watermeier, Wilhelm Bartel, William Wedler, Wim Taymans, Xavier Claessens, Yun Liu, … and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! -List of merge requests and issues fixed in 1.26.1 +Stable 1.28 branch -- List of Merge Requests applied in 1.26.1 -- List of Issues fixed in 1.26.1 - -1.26.2 - -The second 1.26 bug-fix release (1.26.2) was released on 29 May 2025. - -This release only contains bugfixes as well as a number of security fixes and important playback fixes, and it should be safe to -update from 1.26.0. - -Highlighted bugfixes in 1.26.2 - -- Various security fixes and playback fixes -- aggregator base class fixes to not produce buffers too early in live mode -- AWS translate element improvements -- D3D12 video decoder workarounds for crashes on NVIDIA cards on resolution changes -- dav1d AV1-decoder performance improvements -- fmp4mux: tfdt and composition time offset fixes, plus AC-3 / EAC-3 audio support -- GStreamer editing services fixes for sources with non-1:1 aspect ratios -- MIDI parser improvements for tempo changes -- MP4 demuxer atom parsing improvements and security fixes -- New skia-based video compositor element -- Subtitle parser security fixes -- Subtitle rendering and seeking fixes -- Playbin3 and uridecodebin3 stability fixes -- GstPlay stream selection improvements -- WAV playback regression fix -- GTK4 paintable sink colorimetry support and other improvements -- WebRTC: allow webrtcsrc to wait for a webrtcsink producer to initiate the connection -- WebRTC: new Janus Video Room WebRTC source element -- vah264enc profile decision making logic fixes -- Python bindings gained support for handling mini object writability (buffers, caps, etc.) -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- aggregator: Various state related fixes -- element: ref-sink the correct pad template when replacing an existing one -- pipeline: Store the actual latency even if no static latency was configured -- structure: Add gst_structure_is_writable() API to allow python bindings to be able to handle writability of MiniObjects -- tracerutils: Do not warn on empty string as tracername -- tracerutils: Fix leak in gst_tracer_utils_create_tracer() -- Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup -- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes - -gst-plugins-base - -- alsa: Avoid infinite loop in DSD rate detection -- gl: Implement basetransform meta transform function -- glshader: free shader on stop -- glupload: Only add texture-target field to GL caps -- gstaudioutilsprivate: Fix gcc 15 compiler error with function pointer -- mikey: Avoid infinite loop while parsing MIKEY payload with unhandled payload types -- properties: add G_PARAM_STATIC_STRINGS where missing -- riff-media: fix MS and DVI ADPCM av_bps calculations -- subtitleoverlay: Remove 0.10 hardware caps handling -- subtitleoverlay: Missing support for DMABuf(?) -- tests: opus: Update channel support and add to meson -- textoverlay: fix shading for RGBx / RGBA pixel format variants -- textoverlay background is wrong while cropping -- uridecodebin3: Don’t hold play items lock while releasing pads -- uridecodebin3: deadlock on PLAY_ITEMS_LOCK -- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes -- Fix Qt detection in various places - -gst-plugins-good - -- adaptivedemux2: Fixes for collection handling -- adaptivedemux2: Fix several races -- dash: mpdclient: Don’t pass terminating NUL to adapter -- gl: Implement basetransform meta transform function -- imagefreeze: Set seqnum from segment too -- interleave: Don’t hold object lock while querying caps downstream -- matroskamux: Write stream headers before finishing file, so that a correct file with headers is written if we finish without - any data -- meson: Add build_rpath for qt6 plugin on macOS -- meson: Fix qt detection in various places -- properties: add G_PARAM_STATIC_STRINGS where missing -- qtdemux: Check length of JPEG2000 colr box before parsing it -- qtdemux: Parse chan box and improve raw audio channel layout handling -- qtdemux: Improve track parsing -- qtdemux: Use byte reader to parse mvhd box -- qtdemux: cmpd box is only mandatory for uncompressed video with uncC version 0 -- rtph264pay: Reject stream-format=avc without codec_data -- rtputils: Add debug category -- v4l2: pool: Send drop frame signal after dqbuf success -- v4l2: pool: fix assert when mapping video frame with DMA_DRM caps -- v4l2videoenc: report error only when buffer pool parameters are invalid -- wavparse: Ignore EOS when parsing the headers -- wavparse: Regression leading to unplaybable wav files that were working before -- Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup -- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes -- Fixes for big endian -- Switch to GST_AUDIO_NE() -- Valgrind fixes - -gst-plugins-bad - -- alphacombine: Fix seeking after EOS -- cuda: Fix runtime PTX compile, fix example code build with old CUDA SDK -- curl: Fix build with MSVC -- curl: small fixups p3 -- d3d12: Fix gstreamer-full subproject build with gcc -- d3d12: Generate gir file -- d3d12decoder: Workaround for NVIDIA crash on resolution change -- d3d12memory: Allow set_fence() only against writable memory -- d3d12memory: Make D3D12 map flags inspectable -- d3d12screencapturesrc: Fix desktop handle leak -- dash: mpdclient: Don’t pass terminating NUL to adapter -- dvbsuboverlay: Actually make use of subtitle running time instead of using PTS -- dvbsuboverlay: No subtitles after seek -- h264parse: Never output stream-format=avc/avc3 caps without codec_data -- lcevc: Use portable printf formatting macros -- midiparse: Consider tempo changes when calculating duration -- nvencoder: Fix GstVideoCodecFrame leak on non-flow-ok return -- play: Improve stream selection -- properties: add G_PARAM_STATIC_STRINGS where missing -- rtpsender: fix ‘priority’ GValue get/set -- va: Fix H264 profile decision logic -- vulkan/wayland: Init debug category before usage -- Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup -- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes -- Fixes for big endian -- Fix Qt detection in various places -- Switch to GST_AUDIO_NE() -- Valgrind fixes - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- awstranslate: improve control over accumulator behavior -- awstranslate: output buffer lists -- cea608tott: make test text less shocking by having more cues as context -- dav1ddec: Directly decode into downstream allocated buffers if possible -- deny: Allow webpki-root-certs license -- fmp4mux: Add support for AC-3 / EAC-3 -- fmp4mux: Use earliest PTS for the base media decode time (tfdt) -- fmp4mux: Fix handling of negative DTS in composition time offset -- fmp4mux: Write lmsg as compatible brand into the last fragment -- mp4mux: add extra brands -- mp4: avoid dumping test output into build directory -- mp4: migrate to mp4-atom to check muxing -- mp4: test the trak structure -- gtk4: Update and adapt to texture builder API changes -- gtk4: Initial colorimetry support -- gtk4: Update default GTK4 target version to 4.10 -- rtp: Update to bitstream-io 4.0 -- skia: Implement a video compositor using skia -- webrtc: addressing a few deadlocks -- webrtc: Support for producer sessions targeted at a given consumer -- webrtc: add new JanusVR source element -- webrtc: janus: clean up and refactoring -- webrtcsink: Use seq number instead of Uuid for discovery -- webrtc: Make older peers less likely to crash when webrtcsrc is used -- Fix or silence various new clippy warnings -- Update Cargo.lock to fix duplicated target-lexicon - -gst-libav - -- Valgrind fixes -- libav: Only allocate extradata while decoding - -gst-rtsp-server - -- properties: add G_PARAM_STATIC_STRINGS where missing -- properties: ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during - cleanup -- tests: Valgrind fixes - -gstreamer-vaapi - -- Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup - -gstreamer-sharp - -- No changes - -gst-python - -This release includes important fixes for the GStreamer Python bindings. - -Since pygobject 3.13 around 10 years ago, it wasn’t possible anymore to modify GStreamer miniobjects, e.g. modify caps or set -buffer timestamps, as an implicit copy of the original would always be made. This should finally work again now. - -- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes -- python: Add overrides to be able to handle writability of MiniObjects -- python: Convert buffer metadata API to use @property decorators -- REGRESSION: pygobject 3.13 now copies the GstStructure when getting them from a GstCaps, making it impossible to properly - modify structures from caps in place - -gst-editing-services - -- Fix frame position for sources with par < 1 -- Fix video position for sources with pixel-aspect-ratio > 1 -- Valgrind fixes -- properties: add G_PARAM_STATIC_STRINGS where missing -- Switch to GST_AUDIO_NE() to make things work properly on Big Endian systems - -gst-devtools, gst-validate + gst-integration-testsuites - -- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes -- validate: baseclasses: Reset Test timeouts between iterations -- validate: scenario: Fix race condition when ignoring EOS - -gst-examples - -- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes -- webrtc examples: Fix running against self-signed certs -- webrtc/signalling: fix compatibility with python 3.13 - -gstreamer-docs - -- No changes - -Development build environment - -- Various wrap updates -- Add qt-method meson options to fix Qt detection in various places -- pre-commit: Workaround broken shebang on Windows - -Cerbero build tool and packaging changes in 1.26.2 - -- directx-headers: Fix g-ir-scanner expecting MSVC naming convention for gst-plugins-bad introspection -- m4: update recipe to fix hang in configure -- pango: Fix introspection missing since 1.56.2 update - -Contributors to 1.26.2 - -Adrian Perez de Castro, Alexander Slobodeniuk, Alicia Boya García, Andoni Morales Alastruey, Biswapriyo Nath, Brad Hards, Branko -Subasic, Christoph Reiter, Daniel Morin, Doug Nazar, Devon Sookhoo, Eva Pace, Guillaume Desmottes, Hou Qi, Jakub Adam, Jan -Schmidt, Jochen Henneberg, Jordan Petridis, L. E. Segovia, Mathieu Duponchelle, Matthew Waters, Nicolas Dufresne, Nirbheek -Chauhan, Olivier Crête, Pablo García, Piotr Brzeziński, Robert Mader, Sebastian Dröge, Seungha Yang, Thibault Saunier, -Tim-Philipp Müller, Vasiliy Doylov, Wim Taymans, Xavier Claessens, Zhao, Gang, - -… 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.26.2 - -- List of Merge Requests applied in 1.26.2 -- List of Issues fixed in 1.26.2 - -1.26.3 - -The third 1.26 bug-fix release (1.26.3) was released on 26 June 2025. - -This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x. - -Highlighted bugfixes in 1.26.3 - -- Security fix for the H.266 video parser -- Fix regression for WAV files with acid chunks -- Fix high memory consumption caused by a text handling regression in uridecodebin3 and playbin3 -- Fix panic on late GOP in fragmented MP4 muxer -- Closed caption conversion, rendering and muxing improvements -- Decklink video sink preroll frame rendering and clock drift handling fixes -- MPEG-TS demuxing and muxing fixes -- MP4 muxer fixes for creating very large files with faststart support -- New thread-sharing 1:N inter source and sink elements, and a ts-rtpdtmfsrc -- New speech synthesis element around ElevenLabs API -- RTP H.265 depayloader fixes and improvements, as well as TWCC and GCC congestion control fixes -- Seeking improvements in DASH client for streams with gaps -- WebRTC sink and source fixes and enhancements, including to LiveKit and WHIP signallers -- The macOS osxvideosink now posts navigation messages -- QtQML6GL video sink input event handling improvements -- Overhaul detection of hardware-accelerated video codecs on Android -- Video4Linux capture source fixes and support for BT.2100 PQ and 1:4:5:3 colorimetry -- Vulkan buffer upload and memory handling regression fixes -- gst-python: fix various regressions introduced in 1.26.2 -- cerbero: fix text relocation issues on 32-bit Android and fix broken VisualStudio VC templates -- packages: ship pbtypes plugin and update openssl to 3.5.0 LTS -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- aggregator: Do not set event seqnum to INVALID -- baseparse: test: Fix race on test start -- pad: Only remove TAG events on STREAM_START if the stream-id actually changes -- utils: Mark times array as static to avoid symbol conflict with the POSIX function -- vecdeque: Use correct index type gst_vec_deque_drop_struct() - -gst-plugins-base - -- GstAudioAggregator: fix structure unref in peek_next_sample() -- audioconvert: Fix setting mix-matrix when input caps changes -- encodebasebin: Duplicate encoding profile in property setter -- gl: simplify private gst_gl_gst_meta_api_type_tags_contain_only() -- osxvideosink: Use gst_pad_push_event() and post navigation messages -- playsink: Fix race condition in stream synchronizer pad cleanup during state changes -- python: Fix pulling events from appsink -- streamsynchronizer: Consider streams having received stream-start as waiting -- urisourcebin: Text tracks are no longer set as sparse stream in urisourcebin’s multiqueue - -gst-plugins-good - -- aacparse: Fix counting audio channels in program_config_element -- adaptivedemux2: free cancellable when freeing transfer task -- dashdemux2: Fix seeking in a stream with gaps -- decodebin wavparse cannot pull header -- imagefreeze: fix not negotiate log when stop -- osxvideosink: Use gst_pad_push_event() and post navigation messages -- qml6glsink: Allow configuring if the item will consume input events -- qtmux: Update chunk offsets when converting stco to co64 with faststart -- splitmuxsink: Only send closed message once per open fragment -- rtph265depay: CRA_NUT can also start an (open) GOP -- rtph265depay: fix codec_data generation -- rtspsrc: Don’t emit error during close if server is EOF -- twcc: Fix reference timestamp wrapping (again) -- v4l2: Fix possible internal pool leak -- v4l2object: Add support for colorimetry bt2100-pq and 1:4:5:3 -- wavparse: Don’t error out always when parsing acid chunks - -gst-plugins-bad - -- amc: Overhaul hw-accelerated video codecs detection -- bayer2rgb: Fix RGB stride calculation -- d3d12compositor: Fix critical warnings -- dashsink: Fix failing test -- decklink: calculate internal using values closer to the current clock times -- decklinkvideosink: show preroll frame correctly -- decklink: clock synchronization after pause -- h266parser: Fix overflow when parsing subpic_level_info -- lcevcdec: Check for errors after receiving all enhanced and base pictures -- meson: fix building -bad tests with disabled soundtouch -- mpegts: handle MPEG2-TS with KLV metadata safely by preventing out of bounds -- mpegtsmux: Corrections around Teletext handling -- srtsink: Fix header buffer filtering -- transcoder: Fix uritranscodebin reference handling -- tsdemux: Allow access unit parsing failures -- tsdemux: Send new-segment before GAP -- vulkanupload: fix regression for uploading VulkanBuffer -- vulkanupload: fix regression when uploading to single memory multiplaned memory images. -- webrtcbin: disconnect signal ICE handlers on dispose -- {d3d12,d3d11}compositor: Fix negative position handling -- {nv,d3d12,d3d11}decoder: Use interlace info in input caps - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- Add new speech synthesis element around ElevenLabs API -- cea708mux: fix another WouldOverflow case -- cea708mux: support configuring a limit to how much data will be pending -- cea708overlay: also reset the output size on flush stop -- gcc: handle out of order packets -- fmp4mux: Fix panic on late GOP -- livekit: expose a connection state property -- mp4mux: add taic box -- mp4mux: test the trak structure -- pcap_writer: Make target-property and pad-path properties writable again -- skia: Don’t build skia plugin by default for now -- threadshare: cleanups & usability improvements -- threadshare: sync runtime with latest async-io -- threadshare: fix kqueue reactor -- threadshare: Update to getifaddrs 0.2 -- threadshare: add new thread-sharing inter elements -- threadshare: add a ts-rtpdtmfsrc element -- transcriberbin: fix naming of subtitle pads -- tttocea708: don’t panic if a new service would overflow -- webrtc: android: Update Gradle and migrate to FindGStreamerMobile -- webrtc: add new examples for stream selection over data channel -- webrtcsrc: the webrtcbin get-transceiver index is not mlineindex -- webrtcsrc: send CustomUpstream events over control channel .. -- webrtcsink: Don’t require encoder element for pre-encoded streams -- webrtcsink: Don’t reject caps events if the codec_data changes -- whip: server: pick session-id from the endpoint if specified -- cargo: add config file to force CARGO_NET_GIT_FETCH_WITH_CLI=true -- Cargo.lock, deny: Update dependencies and log duplicated targo-lexicon -- Update windows-sys dependency from “>=0.52, <=0.59” to “>=0.52, <=0.60” -- deny: Add override for windows-sys 0.59 -- deny: Update lints -- cargo_wrapper: Fix backslashes being parsed as escape codes on Windows -- Fixes for Clock: non-optional return types -- Rename relationmeta plugin to analytics - -gst-libav - -- No changes - -gst-rtsp-server - -- rtsp-server: tests: Fix a few memory leaks - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-python - -This release includes some important regression fixes for the GStreamer Python bindings for regressions introduced in 1.26.2. - -- gst-python/tests: don’t depend on webrtc and rtsp-server -- python: Fix pulling events from appsink and other fixes - -gst-editing-services - -- No changes - -gst-devtools, gst-validate + gst-integration-testsuites - -- validate: More memory leaks -- validate: Valgrind fixes - -gst-examples - -- No changes - -gstreamer-docs - -- No changes - -Development build environment - -- gst-env: Emit a warning about DYLD_LIBRARY_PATH on macOS - -Cerbero build tool and packaging changes in 1.26.3 - -- WiX: fix broken VC templates -- android: Don’t ignore text relocation errors on 32-bit, and error out if any are found -- build: source: handle existing .cargo/config.toml as in plugins-rs -- ci: Detect text relocations when building android examples -- gst-plugins-base: Ship pbtypes -- gst-plugins-base: Fix category of pbtypes -- gst-plugins-rs: Update for relationmeta -> analytics plugin rename -- libsoup.recipe: XML-RPC support was removed before the 3.0 release -- openssl: Update to 3.5.0 LTS - -Contributors to 1.26.3 - -Albert Sjolund, Aleix Pol, Ben Butterworth, Brad Hards, César Alejandro Torrealba Vázquez, Changyong Ahn, Doug Nazar, Edward -Hervey, Elliot Chen, Enrique Ocaña González, François Laignel, Glyn Davies, He Junyan, Jakub Adam, James Cowgill, Jan Alexander -Steffens (heftig), Jan Schmidt, Jochen Henneberg, Johan Sternerup, Julian Bouzas, L. E. Segovia, Loïc Le Page, Mathieu -Duponchelle, Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan, Philippe Normand, Pratik Pachange, Qian Hu (胡骞), Sebastian -Dröge, Seungha Yang, Taruntej Kanakamalla, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, -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.26.3 - -- List of Merge Requests applied in 1.26.3 -- List of Issues fixed in 1.26.3 - -1.26.4 - -The fourth 1.26 bug-fix release (1.26.4) was released on 16 July 2025. - -This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x. - -Highlighted bugfixes in 1.26.4 - -- adaptivedemux2: Fixed reverse playback -- d3d12screencapture: Add support for monitor add/remove in device provider -- rtmp2src: various fixes to make it play back AWS medialive streams -- rtph265pay: add profile-id, tier-flag, and level-id to output rtp caps -- vp9parse: Fix handling of spatial SVC decoding -- vtenc: Fix negotiation failure with profile=main-422-10 -- gtk4paintablesink: Add YCbCr memory texture formats and other improvements -- livekit: add room-timeout -- mp4mux: add TAI timestamp muxing support -- rtpbin2: fix various race conditions, plus other bug fixes and performance improvements -- threadshare: add a ts-rtpdtmfsrc element, implement run-time input switching in ts-intersrc -- webrtcsink: fix deadlock on error setting remote description and other fixes -- cerbero: WiX installer: fix missing props files in the MSI packages -- smaller macOS/iOS package sizes -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- tracers: Fix deadlock in latency tracer -- Fix various valgrind/test errors when GST_DEBUG is enabled -- More valgrind and test fixes -- Various ASAN fixes - -gst-plugins-base - -- Revert “streamsynchronizer: Consider streams having received stream-start as waiting” -- alsa: free conf cache under valgrind -- gst-device-monitor: Fix caps filter splitting -- Fix various valgrind/test errors when GST_DEBUG is enabled -- More valgrind and test fixes -- Various ASAN fixes - -gst-plugins-good - -- adaptivedemux2: Fixed reverse playback -- matroskademux: Send tags after seeking -- qtdemux: Fix incorrect FourCC used when iterating over sbgp atoms -- qtdemux: Incorrect sibling type used in sbgp iteration loop -- rtph265pay: add profile-id, tier-flag, and level-id to output rtp caps -- rtpjpeg: fix copying of quant data if it spans memory segments -- soup: Disable range requests when talking to Python’s http.server -- v4l2videodec: need replace acquired_caps on set_format success -- Fix various valgrind/test errors when GST_DEBUG is enabled -- More valgrind and test fixes -- Various ASAN fixes - -gst-plugins-bad - -- avtp: crf: Setup socket during state change to ensure we handle failure -- d3d12screencapture: Add support for monitor add/remove in device provider -- mpegtsmux: fix double free caused by shared PMT descriptor -- openh264: Ensure src_pic is initialized before use -- rtmp2src: various fixes to make it play back AWS medialive streams -- ssdobjectdetector: Use correct tensor data index for the scores -- v4l2codecs: h265dec: Fix zero-copy of cropped window located at position 0,0 -- vp9parse: Fix handling of spatial SVC decoding -- vp9parse: Revert “Always default to super-frame” -- vtenc: Fix negotiation failure with profile=main-422-10 -- vulkan: Fix drawing too many triangles in fullscreenquad -- vulkanfullscreenquad: add locks for synchronisation -- Fix various valgrind/test errors when GST_DEBUG is enabled -- More valgrind and test fixes -- Various ASAN fixes - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- aws: s3hlssink: Write to S3 on OutputStream flush -- cea708mux: fix clipping function -- dav1ddec: Use video decoder base class latency reporting API -- elevenlabssynthesizer: fix running time checks -- gopbuffer: Push GOPs in order of time on EOS -- gtk4: Improve color-state fallbacks for unknown values -- gtk4: Add YCbCr memory texture formats -- gtk4: Promote set_caps debug log to info -- hlssink3: Fix a comment typo -- hlssink3: Use closed fragment location in playlist generation -- livekit: add room-timeout -- mccparse: Convert “U” to the correct byte representation -- mp4mux: add TAI timestamp element and muxing -- threadshare: add a ts-rtpdtmfsrc element -- rtp: Update to rtcp-types 0.2 -- rtpsend: Don’t configure a zero min RTCP interval for senders -- rtpbin2: Fix handling of unknown PTs and don’t warn about incomplete RTP caps to allow for bundling -- rtpbin2: Improve rtcp-mux support -- rtpbin2: fix race condition on serialized Queries -- rtpbin2: sync: fix race condition -- rtprecv optimize src pad scheduling -- rtprecv: fix SSRC collision event sent in wrong direction -- skia: Add harfbuzz, freetype and fontconfig as dependencies in the meson build -- tttocea{6,7}08: Disallow pango markup from input caps -- ts-intersrc: handle dynamic inter-ctx changes -- threadshare: src elements: don’t pause the task in downward state transitions -- webrtc: sink: avoid recursive locking of the session -- webrtcsink: fix deadlock on error setting remote description -- webrtcsink: add mitigation modes parameter and signal -- webrtc: fix Safari addIceCandidate crash -- webrtc-api: Set default bundle policy to max-bundle -- WHIP client: emit shutdown after DELETE request -- Fix various new clippy 1.88 warnings -- Update dependencies - -gst-libav - -- Various ASAN fixes - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- Fix various valgrind/test errors when GST_DEBUG is enabled - -gst-devtools, gst-validate + gst-integration-testsuites - -- Update various Rust dependencies - -gst-examples - -- Update various Rust dependencies - -gstreamer-docs - -- No changes - -Development build environment - -- No changes - -Cerbero build tool and packaging changes in 1.26.4 - -- WiX: fix missing props files in the MSI -- cmake: Do not rely on the CERBERO_PREFIX environment variable -- osx: Update pkgbuild compression algorithms resulting in much smaller packages - -Contributors to 1.26.4 - -Adrian Perez de Castro, Alicia Boya García, Arun Raghavan, Brad Hards, David Maseda Neira, David Monge, Doug Nazar, Enock Gomes -Neto, François Laignel, Haihua Hu, Hanna Weiß, Jerome Colle, Jochen Henneberg, L. E. Segovia, Mathieu Duponchelle, Matthew -Waters, Nicolas Dufresne, Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Robert Ayrapetyan, Robert Mader, Sebastian -Dröge, Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim-Philipp Müller, Vivia Nikolaidou, - -… 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.26.4 - -- List of Merge Requests applied in 1.26.4 -- List of Issues fixed in 1.26.4 - -1.26.5 - -The fifth 1.26 bug-fix release (1.26.5) was released on 7 August 2025. - -This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x. - -Highlighted bugfixes in 1.26.5 - -- audioconvert: Fix caps negotiation regression when using a mix matrix - -- aws: Add support for brevity in awstranslate and add option to partition speakers in the transcription output of - awstranscriber2 - -- speechmatics speech-to-text: Expose mask-profanities property - -- cea708mux: Add support for discarding select services on each input - -- cea608overlay, cea708overlay: Accept GPU memory buffers if downstream supports the overlay composition meta - -- d3d12screencapture source element and device provider fixes - -- decodebin3: Don’t error on an incoming ONVIF metadata stream - -- uridecodebin3: Fix potential crash when adding URIs to messages, e.g. if no decoder is available - -- v4l2: Fix memory leak for dynamic resolution change - -- VA encoder fixes - -- videorate, imagefreeze: Add support for JPEG XS - -- Vulkan integration fixes - -- wasapi2 audio device monitor improvements - -- webrtc: Add WHEP client signaller and add whepclientsrc element on top of webrtcsrc using that - -- threadshare: Many improvements and fixes to the generic threadshare and RTP threadshare elements - -- rtpbin2 improvements and fixes - -- gst-device-monitor-1.0 command line tool improvements - -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- aggregator: add sub_latency_min to pad queue size -- build: Disable C5287 warning on MSVC - -gst-plugins-base - -- audioconvert: Fix regression when using a mix matrix -- audioconvert: mix-matrix causes caps negotiation failure -- decodebin3: Don’t error on an incoming ONVIF metadata stream -- gloverlay: Recompute geometry when caps change, and load texture after stopping and starting again -- uridecodebin3: Add missing locking and NULL checks when adding URIs to messages -- uridecodebin3: segfault in update_message_with_uri() if no decoder available -- videorate, imagefreeze: add support for JPEG XS -- gst-device-monitor-1.0: Add shell quoting for launch lines -- gst-device-monitor-1.0: Fix criticals, and also accept utf8 in launch lines -- gst-device-monitor-1.0: Use gst_print instead of g_print - -gst-plugins-good - -- v4l2: fix memory leak for dynamic resolution change -- videorate, imagefreeze: add support for JPEG XS - -gst-plugins-bad - -- av1parse: Don’t error out on “currently” undefined seq-level indices -- av1parse: fails to parse AV1 bitstreams generated by FFmpeg using the av1_nvenc hardware encoder -- d3d12screencapturedevice: Avoid false device removal on monitor reconfiguration -- d3d12screencapturesrc: Fix OS handle leaks/random crash in WGC mode -- meson: d3d12: Add support for MinGW DirectXMath package -- va: Re-negotiate after FLUSH -- vaXXXenc: calculate latency with corrected framerate -- vaXXXenc: fix potential race condition -- vkphysicaldevice: enable sampler ycbcr conversion, synchronization2 and timeline semaphore features -- vulkan: ycbcr conversion extension got promoted in 1.1.0 -- wasapi2: Port to IMMDevice based device selection - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- Note: This list has been updated, since it originally accidentally included some Merge Requests that only landed in the main - branch, not in the 0.14 branch that ships with our GStreamer 1.26.5 packages. - -- awstranscriber2, awstranslate: Handle multiple stream-start event - -- awstranslate: expose property for turning brevity on) - -- awstranscriber2: add property for setting show_speaker_labels) - -- cea708mux: expose “discarded-services” property on sink pads) - -- ceaX08overlay: support ANY caps features, allowing e.g. memory:GLMemory if downstream supports the overlay composition meta - -- hlsmultivariantsink: Fix master playlist version - -- rtprecv: Drop state lock before chaining RTCP packets from the RTP chain function - -- Add rtpbin2 examples - -- rtpmp4apay2: fix payload size prefix - -- rtp: threadshare: fix some property ranges - -- mpegtslivesrc: Remove leftover debug message - -- speechmatics: expose mask-profanities property) - -- ts-audiotestsrc fixes - -- threadshare: fix flush for ts-queue ts-proxy & ts-intersrc - -- threadshare: fix regression in ts-proxysrc - -- threadshare: improvements to some elements - -- threadshare: udp: avoid getifaddrs in android) - -- threadshare: Enable windows Win32_Networking feature - -- threadshare: queue & proxy: fix race condition stopping - -- threadshare: Also enable windows Win32_Networking_WinSock feature - -- tracers: pipeline-snapshot: reduce WebSocket connection log level - -- tracers: queue-levels: add support for threadshare DataQueue related elements - -- tracers: Update to etherparse 0.19 - -- transcriberbin: Fix handling of upstream latency query - -- webrtc: android example: fix media handling initialization sequence) - -- webrtcsink: Move videorate before videoconvert and videoscale to avoid processing frames that would be dropped - -- whep: add WHEP client signaller - -- Fix various new clippy 1.89 warnings - -gst-libav - -- No changes - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- No changes - -gst-devtools, gst-validate + gst-integration-testsuites - -- No changes - -gst-examples - -- No changes - -gstreamer-docs - -- No changes - -Development build environment - -- gst-env: only-environment: only dump added and updated vars -- gst-full: Fix detection of duplicate plugin entries -- ci: Fix gst-full breakage due to a typo -- build: Disable C5287 warning on MSVC - -Cerbero build tool and packaging changes in 1.26.5 - -- a52dec: update to 0.8.0 and port to Meson -- build: Fix passing multiple steps -- expat: update to 2.7.1 -- tar: Refactor in preparation for xcframework support - -Contributors to 1.26.5 - -François Laignel, Jan Schmidt, Jaslo Ziska, L. E. Segovia, Marc-André Lureau, Mathieu Duponchelle, Matthew Waters, Nirbheek -Chauhan, Philippe Normand, Qian Hu (胡骞), Sanchayan Maity, Sebastian Dröge, Seungha Yang, Thibault Saunier, Tim-Philipp Müller, -Víctor Manuel Jáquez Leal, 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.26.5 - -- List of Merge Requests applied in 1.26.5 -- List of Issues fixed in 1.26.5 - -1.26.6 - -The sixth 1.26 bug-fix release (1.26.6) was released on 14 September 2025. - -This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x. - -Highlighted bugfixes in 1.26.6 - -- analytics GstTensorMeta handling changes (see note below) -- closed caption combiner and transcriberbin stability fixes -- decklinkvideosrc: fix unrecoverable state after failing to start streaming because device is busy -- decodebin3 tag handling improvements -- fallbacksrc: Fix sources only being restarted once, as well as some deadlocks and race conditions on shutdown -- gtk4paintablesink: Try importing dmabufs withouth DMA_DRM caps -- hlsdemux2: Fix parsing of byterange and init map directives -- rtpmp4gdepay2: allow only constantduration with neither constantsize nor sizelength set -- spotifysrc: update to librespot 0.7 to make work after recent Spotify changes -- threadshare: new blocking adapter element for use in front of block elements such as sinks that sync to the clock -- threadshare: various other threadshare element fixes and improvements -- v4l2: Add support for WVC1 and WMV3 -- videorate: possible performance improvements when operating in drop-only mode -- GstBaseParse fixes -- Vulkan video decoder fixes -- Fix gst-device-monitor-1.0 tool device-path regression on Windows -- Monorepo development environment builds fewer plugins using subprojects by default, those require explicit enablement now -- Python bindings: Handle buffer PTS, DTS, duration, offset, and offset-end as unsigned long long (regression fix) -- Cerbero: Reduce recipe parallelism in various cases and dump cerbero and recipe versions into datadir during packaging -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -Possibly breaking behavioural changes - -- Previously it was guaranteed that there is only ever up to one GstTensorMeta per buffer. This is no longer true and code - working with GstTensorMeta must be able to handle multiple GstTensorMeta now (after this Merge Request). - -gstreamer - -- baseparse: Try harder to fixate caps based on upstream in default negotiation -- gst-discoverer reports 1x1 dimensions for “valid” MP4 files -- baseparse: don’t clear most sticky events after a FLUSH_STOP event -- gstreamer: Disable miniobject inline functions for gobject-introspection for non-subprojects too -- gstreamer: Make sure to zero-initialize the GValue before G_VALUE_COLLECT_INIT -- ptp: Fix a new Rust 1.89 compiler warning on Windows -- ptp: Fix new compiler warning with Rust 1.89 -- Segmentation fault when compiled with “-ftrivial-auto-var-init=pattern”. Use of unitialized GValue. - -gst-plugins-base - -- decodebin3: Update stream tags -- rtpbasedepayload: Avoid potential use-after free -- rtspconnection: Add get_url and get_ip return value annotation -- gst_rtsp_connection_get_url return value transfer annotation missing -- videometa: Fix valgrind warning when deserializing video meta -- videorate: don’t hold the reference to the buffer in drop-only mode -- gst-device-monitor-1.0: Fix device-path regression on Windows -- gst-device-monitor-1.0: Add quoting for powershell and cmd -- Monorepo: opengl, vorbis, plugins require explicit enablement now for a build using the Meson subproject fallback - -gst-plugins-good - -- adaptivedemux2: fix crash due to log -- adaptivedemux2: Crash in logging when “Dropping EOS before next period” -- hlsdemux2: Fix parsing of byterange and init map directives -- mpg123audiodec: Always break the decoding loop and relay downstream flow errors upstream -- v4l2: Add support for WVC1 and WMV3 -- Monorepo: dv plugin requires explicit enablement now for a build using the Meson subproject fallback - -gst-plugins-bad - -- analytics: always add GstTensorMeta -- cccombiner: Crash fixes -- curlsmtpsink: adapt to date formatting issue -- decklinkvideosrc: fix decklinkvideosrc becomes unrecoverable if it fails to start streaming -- decklinkvideosrc gets into unrecoverable state if device is busy -- dwrite: Fix D3D12 critical warning -- hlsdemux: Fix parsing of byterange and init map directives -- mpegtsmux: Caps event fails with stream type change error -- vulkanh24xdec: couple of fixes -- vulkanh26xdec: fix discont state handling -- waylandsink: add some error handler for event dispatch -- zbar: tests: Handle symbol-bytes as not null-terminated -- Monorepo: avtp, codec2json, iqa, microdns, openjpeg, qroverlay, soundtouch, tinyalsa plugins require explicit enablement now - for a build using the Meson subproject fallback - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- analyticscombiner: Use NULL caps instead of EMPTY caps in the array for streams with no caps -- aws: Ensure task stopping on paused-to-ready state change -- fallbacksrc: Don’t panic during retries if the element was shut down in parallel -- fallbacksrc: Don’t restart source if the element is just being shut down -- fallbacksrc: Fix some custom source deadlocks -- fallbacksrc: Fix sources only being restarted once -- gtk4: Try importing dmabufs withouth DMA_DRM caps -- inter: Give the appsrc/appsink a name that has the parent element as prefix -- mp4: Skip tests using x264enc if it does not exist -- rtpgccbwe: avoid clamp() panic when min_bitrate > max_bitrate -- rtpmp4gdepay2: allow only constantduration with neither constantsize nor sizelength set -- rtprecv: fix race condition on first buffer -- speechmatics: Specify rustls as an explicit dependency -- spotify: update to librespot 0.7 -- threadshare: add a blocking adapter element -- threadshare: always use block_on_or_add_subtask -- threadshare: audiotestsrc: fix setting samples-per-buffer… -- threadshare: blocking_adapter: fix Since marker in docs -- threadshare: fix resources not available when preparing asynchronously -- threadshare: fix ts-inter test one_to_one_up_first -- threadshare: have Task log its obj -- threadshare: intersink: return from blocking tasks when stopping -- threadshare: inter: update doc example -- threadshare: runtime/pad: lower log level pushing Buffer to flushing pad -- threadshare: separate blocking & throttling schedulers -- threadshare: update examples -- threadshare: Update to getifaddrs 0.5 -- threadshare: Fix macOS build post getifaddrs 0.5 update -- threadshare: Bump up getiffaddrs to 0.1.5 and revert “udp: avoid getifaddrs in android” -- threadshare: Reapply “udp: avoid getifaddrs in android” -- transcriberbin: Fix some deadlocks -- Update dependencies -- webrtc: Migrate to warp 0.4 and switch to tokio-rustls -- webrtc/signalling: Fix setting of host address -- ci: add script to check readme against plugins list -- Fix various new clippy 1.89 warnings -- Don’t suggest running cargo cinstall after cargo cbuild -- meson: Isolate built plugins from cargo target directory - -gst-libav - -- No changes - -gst-rtsp-server - -- rtsp-server: tests: Switch to fixtures to ensure pool shutdown - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-python - -- python: Handle buffer PTS/DTS/duration/offset/offset-end as unsigned long long - -gst-editing-services - -- gstreamer: Make sure to zero-initialize the GValue before G_VALUE_COLLECT_INIT -- Fix various memory leaks - -gst-devtools, gst-validate + gst-integration-testsuites - -- validate: http-actions: Replace GUri with GstURI for GLib 2.64 compatibility -- Fix memory leak and use of incorrect context - -gst-examples - -- No changes - -gstreamer-docs - -- No changes - -Development build environment - -- gobject-introspection: Fix introspection failing on Linux with subproject GLib -- glib: update to 2.82.5 and backport shebangs patch -- ci: Work around PowerShell broken argument parsing -- Disable more plugins on Windows by default by not pulling in fallback subprojects automatically, only if plugins are enabled - explicitly -- Fix build on windows due to proxy-libintl not being invoked -- python: Reapply fixes to enable running Python bindings on Windows - -Cerbero build tool and packaging changes in 1.26.6 - -- ffmpeg: enable filters needed by avvideocompare -- cache: Fix detection of build tools prefix when using a cache -- cerbero/package: fix –tarball –compress-method=none -- cerbero: Reduce recipe parallelism in various cases -- ci: remove unpacked apk dir on completion -- package: Dump cerbero and recipe versions into datadir - -Contributors to 1.26.6 - -Andrey Khamukhin, Daniel Morin, Doug Nazar, François Laignel, Guillaume Desmottes, Hou Qi, Ian Napier, Jan Alexander Steffens -(heftig), Jan Schmidt, Jordan Petridis, L. E. Segovia, Marko Kohtala, Matthew Waters, Monty C, Nirbheek Chauhan, Ola Fornander, -Olivier Crête, Piotr Brzeziński, Qian Hu (胡骞), r4v3n6101, Robert Mader, Ruben Gonzalez, Sanchayan Maity, Sebastian Dröge, -Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, Vivian LEE, Vivienne -Watermeier, 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.26.6 - -- List of Merge Requests applied in 1.26.6 -- List of Issues fixed in 1.26.6 - -1.26.7 - -The seventh 1.26 bug-fix release (1.26.7) was released on 14 October 2025. - -This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x. - -Highlighted bugfixes in 1.26.7 - -- cea608overlay: improve handling of non-system memory -- cuda: Fix runtime kernel compile with CUDA 13.0 -- d3d12: Fix crop meta support in converter and passthrough handling in deinterlacer -- fallbacksrc: source handling improvements; no-more-pads signal for streams-unaware parents -- inter: add properties to fine tune the inner elements -- qtdemux: surround sound channel layout handling fixes and performance improvements for GoPro videos -- rtp: Add linear audio (L8, L16, L24) RTP payloaders / depayloaders -- rtspsrc: Send RTSP keepalives in TCP/interleaved modes -- rtpamrpay2: frame quality indicator flag related fixes -- rtpbasepay2: reuse last PTS when possible, to work around problems with NVIDIA Jetson AV1 encoder -- mpegtsmux, tsdemux: Opus audio handling fixes -- threadshare: latency related improvements and many other fixes -- matroskamux, tsmux, flvmux, cea608mux: Best pad determination fixes at EOS -- unixfd: support buffers with a big payload -- videorate unknown buffer duration assertion failure with variable framerates -- editing services: Make GESTimeline respect SELECT_ELEMENT_TRACK signal discard decision; memory leak fixes -- gobject-introspection annotation fixes -- cerbero: Update meson to 1.9.0 to enable Xcode 26 compatibility -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- controller: Fix get_all() return type annotation -- gst-launch: Do not assume error messages have a src element -- multiqueue: Fix object reference handling in signal callbacks -- netclientclock: Fix memory leak in error paths - -gst-plugins-base - -- discoverer: Mark gst_discoverer_stream_info_list_free() as transfer full -- qt: Fix building examples on macOS -- riff: Add channel reorder maps for 3 and 7 channel audio -- sdp: proper usage of gst_buffer_append -- videorate: fix assert fail due to invalid buffer duration -- Fix build error with glib < 2.68 - -gst-plugins-good - -- matroskamux: Properly check if pads are EOS in find_best_pad -- qt: Fix building examples on macOS -- qtdemux: bad performance with GoPro videos containing FDSC metadata tracks -- qtdemux: fix open/seek perf for GoPro files with SOS track -- qtdemux: handle unsupported channel layout tags gracefully -- qtdemux: set channel-mask to 0 for unknown layout tags -- rtspsrc: Send RTSP keepalives in TCP/interleaved modes -- v4l2: Add GstV4l2Error handling in gst_v4l2_get_capabilities -- v4l2: Fix memory leak for DRM caps negotiation -- v4l2transform: reconfigure v4l2object only if respective caps changed -- Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT - -gst-plugins-bad - -- cuda: Fix runtime kernel compile with CUDA 13.0 -- d3d12convert: Fix crop meta support -- d3d12deinterlace: Fix passthrough handling -- gst: Fix a few small leaks -- matroskamux: Properly check if pads are EOS in find_best_pad -- tsdemux: Directly forward Opus AUs without opus_control_header -- tsmux: Write a full Opus channel configuration if no matching Vorbis one is found -- unixfd: Fix case of buffer with big payload -- vacompositor: Correct scale-method properties -- webrtc: nice: Fix a use-after-free and a mem leak -- Fix all compiler warnings on Fedora -- Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- cea608overlay: Support non-system memory correctly -- fallbacksrc: Fix custom source reuse case -- fallbacksrc: Fix sources only being restarted once -- fallbacksrc: Post no-more-pads signal for streams-unaware parent -- inter: add properties to fine tune the inner elements -- onvifmetadatapay: copy metadata from source buffer -- rtp: Add linear audio (L8, L16, L24) RTP payloaders / depayloaders -- rtpamrpay2: Actually forward the frame quality indicator -- rtpamrpay2: Set frame quality indicator flag -- rtp: basedepay: reuse last PTS, when possible to work around problems with NVIDIA Jetson AV1 encoder -- rtpsend/recv: fix property type for stats -- threadshare: audiotestsrc: support more Audio formats -- threadshare: backpressure: abort pending items on flush start -- threadshare: fixes & improvements -- threadshare: latency related improvements and fixes -- threadshare: runtime task: execute action in downward transition -- threadshare: udpsink: fix panic recalculating latency from certain executors -- uriplaylistbin: Ignore all tests for now -- webrtc: livekit: Drop connection lock after take() -- Update dependencies -- Update dependencies -- ci: use image and GST_RS_MSRV / GST_RS_STABLE variables from gstreamer-rs 0.24 in gst-plugins-rs 0.14 branch -- Add rust-tls-native-roots feature to the reqwest dep -- Fix some new clippy 1.90 warnings -- meson: Fix .pc files installation and simplify build output handling - -gst-libav - -- Fix all compiler warnings on Fedora - -gst-rtsp-server - -- Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-python - -- No changes - -gst-editing-services - -- ges: timeline: Respect SELECT_ELEMENT_TRACK signal discard decision -- gst: Fix a few small leaks - -gst-devtools, gst-validate + gst-integration-testsuites - -- Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT - -gst-examples - -- No changes - -gstreamer-docs - -- No changes - -Development build environment - -- libsoup.wrap: Apply upstream fix for GModule deadlock - -Cerbero build tool and packaging changes in 1.26.7 - -- meson: Update to 1.9.0 to enable Xcode 26 compatibility -- osxrelocator: Add .so to the allowed dylib extensions -- ci: update macos image to 26-tahoe -- EndeavourOS support - -Contributors to 1.26.7 - -Andoni Morales Alastruey, Branko Subasic, Vincent Beng Keat Cheah, Doug Nazar, Ekwang Lee, François Laignel, Inbok Kim, Jakub -Adam, Jan Schmidt, Jochen Henneberg, L. E. Segovia, Mark Nauwelaerts, Markus Hofstaetter, Matthew Waters, Nirbheek Chauhan, -Norbert Hańderek, Philippe Normand, Razvan Grigore, Sebastian Dröge, Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, -Tim-Philipp Müller, 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.26.7 - -- List of Merge Requests applied in 1.26.7 -- List of Issues fixed in 1.26.7 - -1.26.8 - -The eighth 1.26 bug-fix release (1.26.8) was released on 10 November 2025. - -This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x. - -Highlighted bugfixes in 1.26.8 - -- Fix showtime video player showing washed-out colours for HDR videos when subtitles are active -- core: performance improvements for elements with many source pads -- aacparse: support streams which do not have frequent LOAS config -- av1parse: Fix duplicated frames issue in frame splitting -- fmp4mux: Fix EAC3 datarate calculation and substream writing -- gtk4painablesink: fixes glitches with padded buffers such as for sub-sampled video formats with odd sizes -- mpegtsmux: PUSI flag and ID3 tag handling fixes -- rtpbaseaudiopay2: Fix marker bit handling for DISCONT and RESYNC buffer flags -- rtpvp9pay: Fix parsing of show-existing-frame flag, fixes compatibility with vavp9lpenc -- splitmuxsink: accept pads named ‘sink_%u’ on the muxer for fmp4 muxer support -- webrtcsink: Correct lock ordering to prevent deadlock -- gst-plugins-rs meson build gained an auto_plugin_features option and no longer requires all gstreamer libraries to be - available -- v4l2 device monitor fixes -- x265enc: advertise latency based on encoder parameters instead of hard-coding it to 5 frames -- cerbero package builder: Add Rust support for 32-bit Linux x86 -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- info : Added parentheses to ensure proper evaluation of conditions in logging level checks. -- info: Fix test pattern to check for an expected debug log line -- pad: make gst_pad_forward not O(n²) -- parse: Move g_strfreev() a bit later to avoid use-after-free -- structure: Don’t crash if GArray has NULL value -- utils: Fix leak in gst_util_filename_compare -- vasnprintf: free dynamic tmp buffer on error to prevent memory leak -- gst-launch-1.0: Print details of error message - -gst-plugins-base - -- encoding-target: Fix memory leak in gst_encoding_target_save -- gl: Support DMABuf passthrough with meta:GstVideoOverlayComposition -- gl: egl: fix memory leak in _print_all_dma_formats() -- gltestsrc: Fix memory leaks on shader creation failure -- id3: fix csets memory leak in string_utf8_dup -- opusdec: Unref intersected caps when empty to avoid leaks -- parsebin: Free missing plugin details and return failure when plugin is not found -- pbutils: Don’t throw critical for unknown mime codec -- rtsp: fix memory leaks in gst_rtsp_connection_connect_with_response_usec - -gst-plugins-good - -- aacparse: support streams which do not have frequent loas config -- multifile: verify format identifiers in filename template strings -- rtp: Fix usage of uninitialized variable -- rtph263pay: Fix Out-of-bounds access (OVERRUN) -- rtpvp9depay: fix wrong event referencing, use same packet lost logic from neighboring rtpvp8depay -- rtpvp9pay: Fix parsing of show-existing-frame -- rtpvp9pay: vavp9lpenc does not work with rtpvp9pay but does with rtpvp9pay2 -- splitmuxsink: accept pads named ‘sink_%u’ on the muxer -- v4l2: Fix NULL pointer dereference in probe error path -- v4l2videoenc: fix memory leak about output state and caps - -gst-plugins-bad - -- alphacombine: Only reset once both pads are done flushing -- av1parse: Fix duplicated frames issue in frame splitting -- avwait: Unify conditions between the different modes -- d3d11converter & d3d12converter: Initialize video_direction -- dtlsconnection: Increase DTLS MTU to 1200 -- h264parser: fix uint32 to int32 truncation -- mpegtsmux: ID3 tag handling fixes and cleanup -- ristsink: Fix double free regression -- scte-section: fix resource leak in splice component parsing -- tsmux: Reset PUSI flag after writing stream packet -- uvcgadget: always ensure to switch to fakesink -- v4l2codecs: Free sub-request on allocation failure -- wasapi2: Handle GetActivateResult failure -- wayland: Fix using uninitialized value of data.wbuf -- gstwasapi2.dll error on machines with no audio devices -- x265enc: Calculate latency based on encoder parameters - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- aws, webrtc, cargo: Remove all constraints on AWS SDK and tune optimizations -- closedcaption: Return FlowError from scan_duration -- fmp4mux: Fix EAC3 datarate calculation -- fmp4mux: Fix EAC3 substream writing in EC3SpecificBox -- fmp4mux: Update to dash-mpd 0.19 -- gtk4: Implement cropped imports without viewport -- json: Return FlowError from scan_duration -- rtp: baseaudiopay: Fix marker bit handling -- threadshare: fix Pad mod diagram -- threadshare: Update to getifaddrs 0.6 -- tracers: Fix inability to create new log files (regression) -- tracers: Fix inverted append logic when writing log files -- uriplaylistbin: Propagate error message source -- webrtc: document grant requirement for livekitwebrtcsink auth token -- webrtcsink: Correct lock ordering to prevent Lock (A), Lock (B) + Lock(B), Lock(A) deadlock between - on_remote_description_set() and handle_ice() -- webrtcsrc: Clean up EOS and session handling -- meson: Add auto_plugin_features option -- meson: Don’t require all gstreamer libraries -- Document the tags and branches in this repository -- Fix a couple of new 1.91 clippy warnings -- Update dependencies - -gst-libav - -- No changes - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-python - -- python: Fix GDir leak in gst_python_load_directory - -gst-editing-services - -- ges: add error reporting to base bin timeline setup - -gst-devtools, gst-validate + gst-integration-testsuites - -- validate: add missing GST_VALIDATE_API annotation -- validate: use meson compile instead of ninja directly -- dots-viewer: Update Rust dependencies - -gst-examples - -- Fix signal lookup in GTK player example -- Update Rust dependencies - -gstreamer-docs - -- No changes - -Development build environment - -- libnice.wrap: add upstream patch from libnice to fix parsing of incomplete TCP ICE candidates - -Cerbero build tool and packaging changes in 1.26.8 - -- Add Rust support for Linux x86 -- Open log files as utf-8 and with error resilience -- harfbuzz: disable documentation - -Contributors to 1.26.8 - -Amy Ko, Artem Martus, Carlos Bentzen, Christo Joseph, David Maseda Neira, DongJoo Kim, Doug Nazar, François Laignel, Havard -Graff, He Junyan, Inbok Kim, Jan Alexander Steffens (heftig), Jan Schmidt, Jeehyun Lee, Jeongmin Kwak, Jihoon Lee, Kevin Wolf, -L. E. Segovia, Loïc Le Page, Manuel Torres, Marek Olejnik, Matthew Waters, Mazdak Farzone, Michael Grzeschik, Nicolas Dufresne, -Nirbheek Chauhan, Oz Donner, Pablo García, Piotr Brzeziński, Qian Hu (胡骞), Rares Branici, Robert Mader, Ross Burton, Ruben -Gonzalez, Sebastian Dröge, Seungha Yang, Thibault Saunier, Tim-Philipp Müller, 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.26.8 - -- List of Merge Requests applied in 1.26.8 -- List of Issues fixed in 1.26.8 - -1.26.9 - -The ninth 1.26 bug-fix release (1.26.9) was released on 01 December 2025. - -This release only contains bugfixes and it should be safe to update from 1.26.x. - -Highlighted bugfixes in 1.26.9 - -- playback: playbin3 and decodebin3 stability fixes -- Ancillary metadata handling fixes for AJA playout and Blackmagic Decklink capture cards -- HLS and DASH adaptive streaming clients stability improvements -- gst-play-1.0 will now print details of any missing plugins again -- gtk4paintablesink: Add property to fine-tune reconfiguration behaviour on window-resize -- macOS device monitoring: fix potential crash when probing for audio devices -- macOS video decoder stability improvements -- NDI source: fix audio corruption for non-interleaved audio with stride padding -- Add SMPTE ST291-1 ancillary metadata RTP payloader and depayloader -- Add ST-2038 metadata combiner and extractor -- webrtcsink: support hardware-accelerated encoders from the va VA-API plugin -- spotifysrc: fix the Spotify integration by using Spotify’s extended metadata endpoint -- Python bindings cross compilation fixes -- cerbero: add Visual Studio 2026 support, fix building on drives other than C:, and ship svtjpegxs plugin on Windows -- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -gstreamer - -- info: Force comparison to same types -- queue: Use GST_PTR_FORMAT everywhere -- streamcollection: Fix race condition between disconnecting notify proxy and notifications -- value: Fix GstAllocationParams string serialisation on 32-bit architectures - -gst-plugins-base - -- allocators: drmdumb: Keep dmabuf mapped -- alsadeviceprovider: Fix device name leak -- audiovisualizer: Use break instead of goto for escape logic -- decodebin3: Clear previous collection on input -- decodebin3: Consider certain meta caps in decodebin3 as raw format to avoid warnings -- decodebin3: Protect again NULL dereference if input slot can’t be mapped -- glbasesrc: Add unlock handling for non-negotiated cases -- glcolorconvert: Fix memory leak in _create_shader -- gldownload: Keep dmabuf mapped -- glfiltershader: Add missing unlock -- glstereosplit: Add missing unlock for exceptional case -- pbutils: Fix bit shifting when generate hevc mime codec string -- rtpbaseaudiopay: Consider RESYNC flag as discontinuity too -- rtpbasedepayload: Add missing unlock in error code path -- uridecodebin3: Add null check of play items in purge -- urisourcebin: Add missing unlock -- urisourcebin: Fix initial values of min_byte_level and min_time_level variables -- videoencoder: fix warning of uninitialized buffer - -Tools: - -- gst-play-1.0: fix printing of missing plugin details -- gst-play-1.0: Add missing unlock for invalid track type - -gst-plugins-good - -- adaptivedemux2: Fix a crash on rapid state changes, and startup busy waiting -- hlsdemux2: Keep streams with different names -- hlsdemux2: error out instead of asserting on negative stream time -- hlsdemux2: Not all subtitles are present in track/collection. Usage of FORCE EXT-X-MEDIA field -- osxaudio: Remove unnecessary if, add comment about GstDevice lifetime -- osxaudio: Various fixes, incl a potential crash when probing -- v4l2allocator: Add KEEP_MAPPED flag to the allocated buffers -- v4l2videoenc: Fix codec frame leak on error - -gst-plugins-bad - -- Add missing G_DECLS symbols to gstvkqueue and gstvkcommandqueue -- ajasink, decklinkvideosrc: Fix some GstAncillaryMeta handling bugs -- analyticsmeta: Initialize span to avoid undefined behavior -- GstPlay: Fixed wrong initial position update interval configuration -- id3tag: Fix resource leak -- mpegtsmux: Avoid infinite recursion writing PCR packets -- mxfdemux: Fix typo on mxf_ffv1_create_caps -- mxfmux: Fix memset usage -- mpegtsmux: segfaults when bitrate is configured lower than bitrate that’s coming in -- osxaudio: Various fixes, incl a potential crash when probing -- scte-section: fix missing cleanup on splice component parse failure -- tsdemux: expose audio GstStream for DTS -- va, unixfdsrc: keep dmabufs mapped -- vkh265dec: Fix a typo -- vkvideo-private: Replace GstBuffer with GstMemory array for video sessions -- vtdec: Fix race condition in decoder draining. Fluster runs were unstable - -gst-plugins-ugly - -- rmdemux: Remove unnecessary condition - -GStreamer Rust plugins - -- analytics splitter/combiner: Remove the separate fields to events and buffer -- audiornnoise: copy input metadatas to ouput buffer -- closedcaption: cctost2038anc: Support alignment -- closedcaption: st2038ancdemux: Support alignment -- closedcaption: st2038ancmux: Support frame alignment -- closedcaption: st2038: Forward frame rate in caps where available -- closedcaption: Add ST-2038 combiner and extractor element -- closedcaption: st2038extractor: Some fixes -- closedcaption: st2038combiner: Some fixes -- gif: Update to gif 0.14 -- gtk4: Add property to control reconfigure on window-resize behavior -- gtk4: Fix compile warning -- fmp4, mp4: Implement GstChildProxy for MP4Mux and FMP4Mux -- fmp4: Update to dash-mpd 0.19 -- ndisrcdemux: fix audio corruption with non-interleaved stride padding -- net/quinn: Update web-transport-quinn and fix flaky QUIC test -- rtp: Add SMPTE ST291-1 (ANC) RTP payloader and depayloader -- spotify: bump librespot 0.8.0 -- webrtcsink: Don’t let recalculate_latency block tokio worker thread -- webrtcsink: support va encoders -- Update dependencies -- meson: fix build when GTK is not present - -gst-libav - -- No changes - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-python - -- gst-python: fix cross-compiling -- python: Add some typing annotation to overrides - -gst-editing-services - -- No changes - -gst-devtools, gst-validate + gst-integration-testsuites - -- debug-viewer: Make 0x prefix optional thread ID regexes - -gst-examples - -- No changes - -gstreamer-docs - -- No changes - -Development build environment - -- libsoup wrap: remove fallback gio-unix on windows build -- webrtc-audio-processing wrap: Fix build with abseil-cpp 202508 - -Cerbero build tool and packaging changes in 1.26.9 - -- Add support for Visual Studio 2026 (Insiders) -- Fix extraction on Windows when building on a different drive than C:, bump pixman and pygobject -- cookbook: List all the dependencies when listed in reverse -- gst-plugins-bad: actually build svtjpegxs plugin on 64-bit Windows - -Contributors to 1.26.9 - -Artem Martus, Chengfa Wang, Dominique Leroux, Dongjoo Kim, Doug Nazar, Edward Hervey, Gang Zhao, Hyunjun Ko, Jaehoon Lee, Jakub -Adam, Jan Schmidt, Jeongmin Kwak, Jerome Colle, Jihoon Lee, Jordan Yelloz, L. E. Segovia, Matthew Semeniuk, Max Goltzsche, -Michael Olbrich, Monty C, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête, Philippe Normand, Pratik Pachange, Qian Hu (胡骞), -Robert Mader, Ruben Gonzalez, Sanchayan Maity, Santiago Carot-Nemesio, Sebastian Dröge, Seungha Yang, Stéphane Cerveau, -Tim-Philipp Müller, Xavier Claessens, - -… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! +After the 1.28.0 release there will be several 1.28.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.28.x +bug-fix releases will be made from the git 1.28 branch, which is a stable release series branch. -List of merge requests and issues fixed in 1.26.9 +1.28.1 -- List of Merge Requests applied in 1.26.9 -- List of Issues fixed in 1.26.9 +The first 1.28 bug-fix release (1.28.1) is expected to be released in February 2026. -1.26.10 +Schedule for 1.30 -The tenth 1.26 bug-fix release (1.26.10) was released on 25 December 2025. +Our next major feature release will be 1.30, and 1.29 will be the unstable development version leading up to the stable 1.30 +release. The development of 1.29/1.30 will happen in the git main branch of the GStreamer mono repository. -This release only contains bugfixes and it should be safe to update from 1.26.x. - -Highlighted bugfixes in 1.26.10 - -- curlhttpsrc fixes and improvements -- decklinkvideosink: Fix frame completion callbacks for firmware 14.3+ -- flac: Fix 6.1 and 7.1 channel layouts and support encoding and decoding of 32-bit audio -- glimagesink: Fix handling of odd height buffers -- matroskademux: make maximum allowed block size large enough to support 4k uncompressed video -- mxf: Add support for custom Sony XDCAM video variant -- opusenc: multichannel and surround sound handling improvements -- playbin3: HLS/DASH stream selection handling improvements to fix disabling and re-enabling of audio/video streams with - adaptivedemux2 -- qtmux: robust recording mode space left estimation fixes for streams that start with a timestamp offset -- splitmuxsrc seeking improvements -- Support FLAC audio in DASH manifests -- Python bindings: fix regression where buffers were no longer writable in pad probe callbacks -- cerbero: add python bindings for GstApp; Windows installer improvements -- Various bug fixes,build fixes,memory leak fixes,and other stability and reliability improvements - -gstreamer - -- pipeline: Improve resource cleanup logic for clock objects -- filesink: fix the build with recent mingw-w64 -- basetransform, basesrc: Fix handling of buffer pool configuration failures - -gst-plugins-base - -- basetextoverlay: Don’t negotiate if caps haven’t changed -- codec-utils: Update mime codec strings -- fdmemory: Fix size calculation when sharing -- gl elements add a yellow bar on JPEGs with non-even heights -- glimagesink: Fix handling of odd height buffers -- glwindow_cocoa: fix window not closing (w/o user window handle) -- opusenc: Simplify Vorbis channel layout mapping code and fix 7.1 layout & use surround multistream encoder -- parsebin: Improve debug logging -- playbin3: ensure GST_EVENT_SELECT_STREAMS event is sent to collection source -- tagdemux: propagate seek event seqnum to upstream -- videodecoder: Don’t assume the ALLOCATION query contains a pool -- videodecoder, videoaggregator: Fix handling of buffer pool configuration failures - -gst-plugins-good - -- adaptivedemux2: Initialize start bitrate for dashdemux2 and hlsdemux2 -- dashdemux2: Unknown codec ‘flac’ when streaming a DASH MPD manifest with a mp4 FLAC file -- deinterlace: Improve pool configuration -- flac: Fix 6.1 / 7.1 channel layouts -- flacdec: Don’t forbid S32 sample size (0x07) unnecessarily -- flacenc: Support S32 samples -- flacdec: Decode 32-bit FLAC files -- level: fix crash if no caps have been sent -- level: Floating point exception (core dumped) when sending buffers without caps -- matroskademux: Bump maximum block size from 15MB to 32MB to allow 4k raw video -- matroskamux: Fix some more thread-safety issues -- matroskamux: Fix thread-safety issues when requesting new pads -- matroskamux: pad->track handling results in segmentation fault -- mxfdemux / aiffparse / matroskaparse: Remove segment closing on non-flushing seeks -- qtdemux: Use gst_util_uint64_scale to scale guint64 -- qtmux: Fix robust recording estimates -- splitmuxsrc - fix for seeking / flushing deadlock -- v4l2object: Add support for colorimetry 1:4:16:3 -- wavenc: Fix downstream negotiation -- wavparse: prevent setting empty strings as title tag - -gst-plugins-bad - -- aesenc / aesdec: use correct format specifier for buffer size in debug log -- analytics: Fix build on MSVC by using libm dependency -- curlhttpsrc: Various fixes -- decklinkvideosink: Fix frame completion callbacks for firmware 14.3+ -- dtlsdec: mark generated cert agent with GST_OBJECT_FLAG_MAY_BE_LEAKED -- fdkaacdec: Assertion on handling unsupported channel layouts -- fdkaacdec: Invalidate channel_types/indices when setting a known config -- hlssink: Guard NULL structure and use gst_structure_has_name() -- midiparse: Fix a couple of potential out-of-bounds reads -- mpegtsmux: Fix potential deadlock changing pmt-interval -- mxfdemux: reconsider “closing running segment” for non flushing seeks -- mxfdemux / aiffparse / matroskaparse: Remove segment closing on non-flushing seeks -- mxfdemux: Simplify timestamp tracking -- mxfdemux: send event SegmentDone for segment seeks -- mxfmpeg: Add custom Sony picture essence coding UL -- playbin3: ensure GST_EVENT_SELECT_STREAMS event is sent to collection source -- vabasedec: Don’t assert when negotiating based on a gap event before the first buffer -- vkformat: Add VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 format -- webrtc: Keep a ref of the ICEStream in the TransportStream -- GstPlay: set_audio_track_enabled / set_video_track_enabled not functioning for adaptivedemux2 sources -- video: decoders: Fix possible crash when flushing H265/H266 decoder - -gst-plugins-ugly - -- No changes - -GStreamer Rust plugins - -- cctost2038anc: Fix typo with c_not_y_channel property documentation -- dav1d: Stop iteration after finding first working pool -- dav1d: Various fixes to allocation query handling -- gtk4paintablesink: Propose a udmabuf pool / allocator if upstream asks for sysmem -- gtk4: Fix typo in odd-size subsample workaround -- rtp: Update to rtcp-types 0.3 -- st2038combiner: Some fixes -- st2038extractor: Add always-add-st2038-pad property -- threadshare: allow disabling the IPv4 or IPv6 socket in ts-udpsink -- threadshare: Update to flume 0.12 -- tracers: add function and signal for writing logs to PadPushTimings -- version-helper: Update to toml_edit 0.24 -- webrtc: mark static caps with GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED -- webrtcsink: don’t upscale when mitigating low bitrate -- Fix new clippy 1.92 warnings -- Update dependencies - -gst-libav - -- avviddec: Various fixes to allocation query handling -- avviddec: Aggregate GstVideoAlignment on top of the meta api params, instead of overriding them -- avviddec: Set video alignment to internal pool - -gst-rtsp-server - -- No changes - -gstreamer-vaapi - -- No changes - -gstreamer-sharp - -- No changes - -gst-python - -- Override GstPadProbeInfo to get writable objects -- Misc improvements -- More typing fixes -- 1.26.2 breaks Python bindings: No longer able to modify Gst.Buffer metadata in pad probe callbacks - -gst-editing-services - -- python: More typing fixes - -gst-devtools,gst-validate + gst-integration-testsuites - -- dotsviewer: Update Rust dependencies - -gst-examples - -- webrtc: Update Rust dependencies - -gstreamer-docs - -- No changes - -Development build environment - -- No changes - -Cerbero build tool and packaging changes in 1.26.10 - -- pkg-config: Ship it in the devel package -- recipe: Update License enums to SPDX expressions -- recipes: Fix GPL categorization of some plugins -- recipes: Fix stray devel files making it into runtime -- recipes: add GstApp python binding -- Modernize MSI license.rtf formatting -- Use ninja for all cmake recipes by default instead of GNU make -- ci: Mark a racy xcode toolchain bug for retrying - -Contributors to 1.26.10 - -Aaron Boxer, Brad Reitmeyer, Christoph Reiter, Doug Nazar, F. Duncanh, François Laignel, Haejung Hwang, Hou Qi, Hyunjun Ko, -Jakub Adam, Jan Schmidt, Jeongmin Kwak, Jerome Colle, L. E. Segovia, Mathieu Duponchelle, Nicolas Dufresne, Nirbheek Chauhan, -Philippe Normand, Piotr Brzeziński, Pratik Pachange, Robert Mader, Sanchayan Maity, Sebastian Dröge, Stéphane Cerveau, Thibault -Saunier, Tim-Philipp Müller, Tobias Schlager, Vivia Nikolaidou, Wilhelm Bartel, Xavier Claessens, Yun Liu, - -… and many others who have contributed bug reports,translations,sent suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.26.10 - -- List of Merge Requests applied in 1.26.10 -- List of Issues fixed in 1.26.10 - -Schedule for 1.28 +The schedule for 1.30 is still to be determined, but it will likely be in Q4/2026. -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. +1.30 will be backwards-compatible to the stable 1.28, 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. -For 1.28 we’re aiming for feature freeze in December 2025 and then the new stable 1.28.0 release in January 2026. +## 1.27 pre-releases (superseded by 1.28) -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. +- 1.27.1 development snapshot release notes +- 1.27.2 development snapshot release notes +- 1.27.50 development snapshot release notes +- 1.27.90 pre-release release notes -------------------------------------------------------------------------------------------------------------------------------- -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. +These release notes have been prepared by Tim-Philipp Müller with contributions from Daniel Morin, Nirbheek Chauhan, Philippe +Normand, Sebastian Dröge, Thibault Saunier, Víctor Manuel Jáquez Leal, and Xavier Claessens License: CC BY-SA 4.0
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/README.md -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/README.md
Changed
@@ -1,4 +1,4 @@ -GStreamer 1.26.x stable series +GStreamer 1.28.x stable series WHAT IT IS ----------
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/RELEASE -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-ugly 1.26.10. +This is GStreamer gst-plugins-ugly 1.28.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.26 release series adds new features on top of the 1.24 series and is +The 1.28 release series adds new features on top of the 1.26 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.26/ + https://gstreamer.freedesktop.org/releases/1.28/ Binaries for Android, iOS, Mac OS X and Windows will usually be provided shortly after the release. @@ -42,10 +42,6 @@ where you can find audio and video decoders and encoders for a wide variety of formats including H.264, AAC, etc. - - gstreamer-vaapi: hardware-accelerated video decoding and encoding using - VA-API on Linux. Primarily for Intel graphics hardware. - (Deprecated, use the new "va" plugin instead) - - gst-rtsp-server: library to serve files or streaming pipelines via RTSP - gst-editing-services: library an plugins for non-linear editing
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/ext/a52dec/gsta52dec.c -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/ext/a52dec/gsta52dec.c
Changed
@@ -51,10 +51,6 @@ #endif #include "gsta52dec.h" -#if HAVE_ORC -#include <orc/orc.h> -#endif - #ifdef LIBA52_DOUBLE #define SAMPLE_WIDTH 64 #define SAMPLE_FORMAT GST_AUDIO_NE(F64) @@ -142,7 +138,12 @@ GObjectClass *gobject_class; GstElementClass *gstelement_class; GstAudioDecoderClass *gstbase_class; - guint cpuflags = 0; + +#if !defined(A52_ACCEL_DETECT) + const gboolean cpuid_mmx = gst_cpuid_supports_x86_mmx (); + const gboolean cpuid_3dnow = gst_cpuid_supports_x86_3dnow (); + const gboolean cpuid_mmxext = gst_cpuid_supports_x86_mmxext (); +#endif gobject_class = (GObjectClass *) klass; gstelement_class = (GstElementClass *) klass; @@ -209,17 +210,17 @@ klass->a52_cpuflags = 0; #endif -#if HAVE_ORC && !defined(A52_ACCEL_DETECT) - cpuflags = orc_target_get_default_flags (orc_target_get_by_name ("mmx")); - if (cpuflags & ORC_TARGET_MMX_MMX) +#if !defined(A52_ACCEL_DETECT) + if (cpuid_mmx) klass->a52_cpuflags |= MM_ACCEL_X86_MMX; - if (cpuflags & ORC_TARGET_MMX_3DNOW) + if (cpuid_3dnow) klass->a52_cpuflags |= MM_ACCEL_X86_3DNOW; - if (cpuflags & ORC_TARGET_MMX_MMXEXT) + if (cpuid_mmxext) klass->a52_cpuflags |= MM_ACCEL_X86_MMXEXT; -#endif - GST_LOG ("CPU flags: a52=%08x, orc=%08x", klass->a52_cpuflags, cpuflags); + GST_LOG ("CPU flags: a52=%08x, cpuid: mmx=%x, mmxext=%x, 3dnow=%x", + klass->a52_cpuflags, cpuid_mmx, cpuid_mmxext, cpuid_3dnow); +#endif gst_type_mark_as_plugin_api (GST_TYPE_A52DEC_MODE, 0); } @@ -481,7 +482,7 @@ gint channels, i; gboolean need_reneg = FALSE; gint chans; - gint length = 0, flags, sample_rate, bit_rate; + gint length GST_UNUSED_ASSERT = 0, flags, sample_rate, bit_rate; GstMapInfo map; GstFlowReturn result = GST_FLOW_OK; GstBuffer *outbuf; @@ -827,10 +828,6 @@ static gboolean a52_element_init (GstPlugin * plugin) { -#if HAVE_ORC - orc_init (); -#endif - return gst_element_register (plugin, "a52dec", GST_RANK_SECONDARY, GST_TYPE_A52DEC); }
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/ext/a52dec/meson.build -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/ext/a52dec/meson.build
Changed
@@ -29,7 +29,7 @@ a52dec_sources, c_args : ugly_args, include_directories : configinc, - dependencies : gstaudio_dep, orc_dep, a52_dep, + dependencies : gstaudio_dep, a52_dep, install : true, install_dir : plugins_install_dir, )
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/ext/mpeg2dec/gstmpeg2dec.c -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/ext/mpeg2dec/gstmpeg2dec.c
Changed
@@ -129,6 +129,9 @@ (mpeg2dec), TRUE); GST_PAD_SET_ACCEPT_TEMPLATE (GST_VIDEO_DECODER_SINK_PAD (mpeg2dec)); + g_warning_once + ("The `mpeg2dec` plugin is deprecated and will be removed in the next release cycle. `avdec_mpeg2video` from gst-libav should be used instead"); + /* initialize the mpeg2dec acceleration */ } @@ -256,6 +259,11 @@ GstStructure *config; pool = gst_video_buffer_pool_new (); + { + gchar *name = g_strdup_printf ("mpeg2dec-%p-pool", pool); + g_object_set (pool, "name", name, NULL); + g_free (name); + } config = gst_buffer_pool_get_config (pool); gst_buffer_pool_config_set_allocator (config, allocator, params); @@ -1172,6 +1180,8 @@ static gboolean plugin_init (GstPlugin * plugin) { + gst_plugin_add_status_warning (plugin, + "The `mpeg2dec` plugin is deprecated and will be removed in the next release cycle. `avdec_mpeg2video` from gst-libav should be used instead"); return GST_ELEMENT_REGISTER (mpeg2dec, plugin); }
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/ext/mpeg2dec/meson.build -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/ext/mpeg2dec/meson.build
Changed
@@ -23,6 +23,7 @@ mpeg2_dep = dependency('libmpeg2', version : '>= 0.4.0', required : mpeg2dec_opt) if mpeg2_dep.found() + warning('The `mpeg2dec` plugin is deprecated and will be removed in the next release cycle. `avdec_mpeg2video` from gst-libav should be used instead') mpeg2dec = library('gstmpeg2dec', mpeg2dec_sources, c_args : ugly_args,
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/gst-plugins-ugly.doap -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/gst-plugins-ugly.doap
Changed
@@ -35,101 +35,51 @@ <release> <Version> - <revision>1.26.10</revision> - <branch>1.26</branch> - <name></name> - <created>2025-12-25</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.10.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.26.9</revision> - <branch>1.26</branch> - <name></name> - <created>2025-12-01</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.9.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.26.8</revision> - <branch>1.26</branch> - <name></name> - <created>2025-11-10</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.8.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.26.7</revision> - <branch>1.26</branch> - <name></name> - <created>2025-10-14</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.7.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.26.6</revision> - <branch>1.26</branch> - <name></name> - <created>2025-09-14</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.6.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.26.5</revision> - <branch>1.26</branch> + <revision>1.28.0</revision> + <branch>main</branch> <name></name> - <created>2025-08-07</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.5.tar.xz" /> + <created>2026-01-27</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.28.0.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.26.4</revision> - <branch>1.26</branch> + <revision>1.27.90</revision> + <branch>main</branch> <name></name> - <created>2025-07-16</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.4.tar.xz" /> + <created>2026-01-05</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.27.90.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.26.3</revision> - <branch>1.26</branch> + <revision>1.27.50</revision> + <branch>main</branch> <name></name> - <created>2025-06-26</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.3.tar.xz" /> + <created>2025-12-09</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.27.50.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.26.2</revision> - <branch>1.26</branch> + <revision>1.27.2</revision> + <branch>main</branch> <name></name> - <created>2025-05-29</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.2.tar.xz" /> + <created>2025-09-07</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.27.2.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.26.1</revision> - <branch>1.26</branch> + <revision>1.27.1</revision> + <branch>main</branch> <name></name> - <created>2025-04-24</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.1.tar.xz" /> + <created>2025-07-08</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.27.1.tar.xz" /> </Version> </release>
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/meson.build -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/meson.build
Changed
@@ -1,5 +1,5 @@ project('gst-plugins-ugly', 'c', - version : '1.26.10', + version : '1.28.0', meson_version : '>= 1.4', default_options : 'warning_level=1', 'buildtype=debugoptimized' ) @@ -197,7 +197,7 @@ cdata.set('DISABLE_ORC', 1) endif -gmodule_dep = dependency('gmodule-no-export-2.0', version: glib_req) +gmodule_dep = dependency('gmodule-no-export-2.0', version: glib_req, default_options: {'sysprof': 'disabled'}) if gmodule_dep.version().version_compare('< 2.67.4') cdata.set('g_memdup2(ptr,sz)', '(G_LIKELY(((guint64)(sz)) < G_MAXUINT)) ? g_memdup(ptr,sz) : (g_abort(),NULL)') @@ -352,7 +352,7 @@ configure_file(output : 'config.h', configuration : cdata) -meson.add_dist_script('scripts/gen-changelog.py', meson.project_name(), '1.24.0', meson.project_version()) +meson.add_dist_script('scripts/gen-changelog.py', meson.project_name(), '1.26.0', meson.project_version()) plugin_names = gst_plugins =
View file
_service:download_files:gst-plugins-ugly-1.28.0.tar.xz/meson.options
Added
@@ -0,0 +1,53 @@ +option('x264_libraries', type : 'string', value : '', + description : 'Colon separated list of additional x264 library paths, e.g. for 10-bit version') + +# Feature options for plugins without external deps +option('asfdemux', type : 'feature', value : 'auto') +option('dvdlpcmdec', type : 'feature', value : 'auto') +option('dvdsub', type : 'feature', value : 'auto') +option('realmedia', type : 'feature', value : 'auto') + +# Feature options for plugins that need external deps +option('a52dec', type : 'feature', value : 'auto', description : 'Dolby Digital (AC-3) audio decoder plugin based on liba52 (GPL - only built if gpl option is also enabled!)') +option('cdio', type : 'feature', value : 'auto', description : 'CD audio source plugin based on libcdio (GPL - only built if gpl option is also enabled!)') +option('dvdread', type : 'feature', value : 'auto', description : 'DVD video source plugin based on libdvdread (GPL - only built if gpl option is also enabled!)') +option('mpeg2dec', type : 'feature', value : 'auto', description : 'MPEG 2 video decoder plugin based on libmpeg2 (GPL - only built if gpl option is also enabled!)') +option('sidplay', type : 'feature', value : 'auto', description : 'Commodore 64 audio decoder plugin based on libsidplay (GPL - only built if gpl option is also enabled!)') +option('x264', type : 'feature', value : 'auto', description : 'H.264 video encoder plugin based on libx264 (GPL - only built if gpl option is also enabled!)') + +# License-related feature options +option('gpl', type: 'feature', value: 'disabled', yield: true, + description: 'Allow build plugins that have GPL-licensed dependencies') + +# Common feature options +option('nls', type : 'feature', value : 'auto', yield: true, + description : 'Enable native language support (translations)') +option('orc', type : 'feature', value : 'auto', yield : true) +option('orc-compiler', type : 'feature', value : 'auto', yield: true, description : 'Enable targets to allow regeneration of disted orc files') +option('tests', type : 'feature', value : 'auto', yield : true) + +# Common options +option('package-name', type : 'string', yield : true, + description : 'package name to use in plugins') +option('package-origin', type : 'string', value : 'Unknown package origin', yield: true, + 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_files:gst-plugins-ugly-1.26.10.tar.xz/po/LINGUAS -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/po/LINGUAS
Changed
@@ -1,1 +1,1 @@ -af ast az bg ca cs da de el en_GB eo es eu fi fr fur gl hr hu id it ja ka lt lv ms mt nb nl or pl pt_BR ro ru sk sl sq sr sv ta tr uk vi zh_CN zh_TW +af ar ast az bg ca cs da de el en_GB eo es eu fi fr fur gl hr hu id it ja ka lt lv ms mt nb nl or pl pt_BR ro ru sk sl sq sr sv ta tr uk vi zh_CN zh_TW
View file
_service:download_files:gst-plugins-ugly-1.28.0.tar.xz/po/ar.po
Added
@@ -0,0 +1,61 @@ +# Arabic translation for gst-plugins-ugly-1.0 package. +# Copyright (C) 2026 Free Software Foundation, Inc. +# This file is distributed under the same license as the gst-plugins-ugly package. +# Zayed Al-Saidi <zayed.alsaidi@gmail.com>, 2026. +# +# +msgid "" +msgstr "" +"Project-Id-Version: gst-plugins-ugly-1.27.90\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-01-25 17:18+0000\n" +"PO-Revision-Date: 2026-01-11 14:02+0400\n" +"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n" +"Language-Team: Arabic <(nothing)>\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Lokalize 23.08.5\n" + +msgid "Could not read from CD." +msgstr "يتعذر القراءة من القرص المدمج." + +msgid "Could not open CD device for reading." +msgstr "تعذر فتح جهاز القرص المدمج للقراءة." + +msgid "Disc is not an Audio CD." +msgstr "القرص ليس قرصاً مدمجاً صوتياً." + +msgid "Could not open DVD" +msgstr "يتعذر فتح قرص DVD" + +#, c-format +msgid "Could not open DVD title %d" +msgstr "يتعذر فتح عنوان DVD %d" + +#, c-format +msgid "Failed to go to chapter %d of DVD title %d" +msgstr "فشل الذهاب إلى الفصل %d من عنوان DVD %d" + +#, c-format +msgid "" +"Could not open DVD title %d. Interactive titles are not supported by this " +"element" +msgstr "يتعذر فتح عنوان DVD %d. العناوين التفاعلية غير مدعومة بهذا العنصر" + +msgid "" +"Could not read DVD. This may be because the DVD is encrypted and a DVD " +"decryption library is not installed." +msgstr "" +"يتعذر قراءة قرص DVD. قد يكون هذا بسبب أن قرص DVD معميّ ومكتبة فك التعمية لقرص " +"DVD غير مثبتة." + +msgid "Could not read DVD." +msgstr "يتعذر قراءة DVD." + +msgid "This stream contains no data." +msgstr "هذا الدفق لا يحتوي على بيانات."
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/po/gst-plugins-ugly-1.0.pot -> _service:download_files:gst-plugins-ugly-1.28.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.26.10\n" +"Project-Id-Version: gst-plugins-ugly-1.28.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-25 15:44+0100\n" +"POT-Creation-Date: 2026-01-27 17:03+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_files:gst-plugins-ugly-1.26.10.tar.xz/po/gst-plugins-ugly.pot -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/po/gst-plugins-ugly.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.26.10\n" +"Project-Id-Version: gst-plugins-ugly-1.28.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-25 15:44+0100\n" +"POT-Creation-Date: 2026-01-27 17:03+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_files:gst-plugins-ugly-1.26.10.tar.xz/po/hr.po -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/po/hr.po
Changed
@@ -4,13 +4,13 @@ # This file is distributed under the same license as the gst-plugins-ugly package. # # Tomislav Krznar <tomislav.krznar@gmail.com>, 2012. -# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2018, 2019, 2021, 2022, 2024. +# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2018, 2019, 2021, 2022, 2024, 2026. msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.24.0\n" +"Project-Id-Version: gst-plugins-ugly-1.27.90\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-23 16:56+0000\n" -"PO-Revision-Date: 2024-03-08 10:46-0800\n" +"POT-Creation-Date: 2026-01-25 17:18+0000\n" +"PO-Revision-Date: 2026-01-07 20:51-0800\n" "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n" "Language-Team: Croatian <lokalizacija@linux.hr>\n" "Language: hr\n" @@ -20,7 +20,7 @@ "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 3.0\n" +"X-Generator: Vim9.1\n" msgid "Could not read from CD." msgstr "Nije moguće čitati CD."
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/po/ro.po -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/po/ro.po
Changed
@@ -4,7 +4,7 @@ # # Lucian Adrian Grijincu <lucian.grijincu@gmail.com>, 2010. # Florentina Mușat <florentina.musat.28@gmail.com>, 2020. -# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>. 2022 - 2024. +# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>. 2022 - 2024, 2026. # # Cronologia traducerii fișierului „gst-plugins-ugly”: # Traducerea inițială, făcută de LAG, pentru versiunea gst-plugins-ugly 0.10.14.2 @@ -14,14 +14,15 @@ # Actualizare a traducerii pentru versiunea 1.19.2, făcută de R-GC, ian-2022. # Actualizare a traducerii pentru versiunea 1.21.90, făcută de R-GC, ian-2023. # Actualizare a traducerii pentru versiunea 1.24.0, făcută de R-GC, mar-2024. +# Actualizare a traducerii pentru versiunea 1.27.90, făcută de R-GC, ian-2026. # Actualizare a traducerii pentru versiunea Y, făcută de X, Z(anul). # msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly 1.24.0\n" +"Project-Id-Version: gst-plugins-ugly 1.27.90\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-03 17:37+0000\n" -"PO-Revision-Date: 2024-03-08 02:09+0100\n" +"POT-Creation-Date: 2026-01-25 17:18+0000\n" +"PO-Revision-Date: 2026-01-06 19:36+0100\n" "Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n" "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n" "Language: ro\n" @@ -31,7 +32,7 @@ "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2);;\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.6\n" msgid "Could not read from CD." msgstr "Nu s-a putut citi de pe CD."
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/scripts/gen-changelog.py -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/scripts/gen-changelog.py
Changed
@@ -28,7 +28,6 @@ 'gst-rtsp-server': '5029c85a46a8c366c4bf272d503e22bbcd624ece', 'gst-editing-services': 'ee8bf88ebf131cf7c7161356540efc20bf411e14', 'gst-python': 'b3e564eff577e2f577d795051bbcca85d47c89dc', - 'gstreamer-vaapi': 'c89e9afc5d43837c498a55f8f13ddf235442b83b', 'gst-devtools': 'da962d096af9460502843e41b7d25fdece7ff1c2', 'gstreamer-sharp': 'b94528f8e7979df49fedf137dfa228d8fe475e1b', }
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/tests/check/elements/mpeg2dec.c -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/tests/check/elements/mpeg2dec.c
Changed
@@ -1714,7 +1714,10 @@ GstCaps *caps; GST_DEBUG ("setup_mpeg2dec"); - mpeg2dec = gst_check_setup_element ("mpeg2dec"); + + // Suppress deprecation warning + ASSERT_WARNING (mpeg2dec = gst_check_setup_element ("mpeg2dec")); + mysrcpad = gst_check_setup_src_pad (mpeg2dec, &srctemplate); mysinkpad = gst_check_setup_sink_pad (mpeg2dec, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE);
View file
_service:download_files:gst-plugins-ugly-1.26.10.tar.xz/tests/check/meson.build -> _service:download_files:gst-plugins-ugly-1.28.0.tar.xz/tests/check/meson.build
Changed
@@ -75,6 +75,12 @@ env.set('GST_PLUGIN_PATH_1_0', meson.global_build_root() + pluginsdirs) env.set('GST_REGISTRY', join_paths(meson.current_build_dir(), '@0@.registry'.format(test_name))) env.set('GST_PLUGIN_SCANNER_1_0', gst_plugin_scanner_path) + + # Would fail because of deprecation warnings + if mpeg2_dep.found() + env.set('GST_STATE_IGNORE_ELEMENTS', 'mpeg2dec') + endif + test(test_name, exe, env: env, timeout: 3 * 60) endif endforeach
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
.