Projects
home:enzokiel: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
@@ -7,7 +7,7 @@ %define _version 1.28.0 Name: gstreamer-plugins-ugly-codecs -Version: 1.28.7 +Version: 1.26.7 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.7.tar.xz/AUTHORS
Added
@@ -0,0 +1,21 @@ +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.28.7.tar.xz/ChangeLog -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/ChangeLog
Changed
@@ -1,506 +1,356 @@ -=== release 1.28.7 === +=== release 1.26.7 === -2026-09-07 20:11:13 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-10-14 18:25:43 +0100 Tim-Philipp Müller <tim@centricular.com> + * NEWS: + * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.28.7 + Release 1.26.7 -2026-08-05 13:04:46 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-09-14 13:19:28 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.28.6 + Back to development after 1.26.6 -=== release 1.28.6 === +=== release 1.26.6 === -2026-08-05 12:59:39 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-09-14 13:13:58 +0100 Tim-Philipp Müller <tim@centricular.com> + * NEWS: + * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.28.6 - -2026-07-08 11:16:30 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/asfdemux/gstrtpasfdepay.c: - rtpasfdepay: Clarify comment for gst_rtp_asf_depay_update_padding() - It was not exactly clear from the previous comment what this function actually - does and why that is necessary. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12236> - -2026-07-03 12:20:52 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/asfdemux/gstrtpasfdepay.c: - rtpasfdepay: Map buffer used for padding updating read-write - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12236> - -2026-07-03 12:08:19 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/asfdemux/gstrtpasfdepay.c: - rtpasfdepay: Don't forget to unmap RTP packet if we don't have a full packet - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12236> - -2026-07-03 12:03:54 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/asfdemux/gstrtpasfdepay.c: - rtpasfdepay: Prevent out-of-bounds reads and writes when updating padding on malformed packets - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12236> - -2026-07-03 11:18:51 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/asfdemux/gstrtpasfdepay.c: - rtpasfdepay: Drop packets that are larger than the negotiated maximum packet size - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5185 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12236> - -2026-07-03 11:18:35 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/asfdemux/gstrtpasfdepay.c: - rtpasfdepay: Check for enough data before reading - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12236> + Release 1.26.6 -2026-07-03 11:18:05 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/asfdemux/gstrtpasfdepay.c: - rtpasfdepay: Fix debug logs - Use %u for printing unsigned integers and actually print the expected header - size instead of a static 4. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12236> - -2026-07-28 17:11:12 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/asfdemux/gstasfdemux.c: - asfdemux: Avoid integer overflows during bounds checks - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5230 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12243> - -2026-07-13 14:10:40 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/dvdsub/gstdvdsubdec.c: - dvdsubdec: Check correct offset value against available data size - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12240> - -2026-07-13 14:09:28 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/dvdsub/gstdvdsubdec.c: - dvdsubdec: Clip subpicture rectangle to the frame size - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5197 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12240> - -2026-07-13 14:07:51 +0300 Sebastian Dröge <sebastian@centricular.com> +2025-09-01 21:02:22 +0530 Nirbheek Chauhan <nirbheek@centricular.com> - * gst/dvdsub/gstdvdsubdec.c: - dvdsubdec: Ensure enough data is available when skipping over SPU_WIPE - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12240> + * 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-07-08 23:48:39 +0200 Tim-Philipp Müller <tim@centricular.com> +2025-08-07 19:15:29 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.28.5 + Back to development after 1.26.5 -=== release 1.28.5 === +=== release 1.26.5 === -2026-07-08 23:42:39 +0200 Tim-Philipp Müller <tim@centricular.com> +2025-08-07 19:06:46 +0100 Tim-Philipp Müller <tim@centricular.com> + * NEWS: + * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.28.5 - -2026-06-23 11:14:59 +0300 Sebastian Dröge <sebastian@centricular.com> + Release 1.26.5 - * gst/asfdemux/asfpacket.c: - asfdemux: Ensure that enough data is available for reading all replicated extensions - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5159 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12072> - -2026-06-12 13:27:54 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-07-16 15:33:19 +0200 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.28.4 + Back to development after 1.26.4 -=== release 1.28.4 === +=== release 1.26.4 === -2026-06-12 13:19:43 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-07-16 15:26:21 +0200 Tim-Philipp Müller <tim@centricular.com> + * NEWS: + * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.28.4 - -2026-06-11 15:38:36 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Keep of copy of the stream's extra_data - The pointer will become invalid after unmapping the adapter. While it is only - accessed before unmapping, let's avoid future mistakes. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> - -2026-06-11 16:23:34 +0300 Sebastian Dröge <sebastian@centricular.com> + Release 1.26.4 - * gst/realmedia/rmdemux.c: - rmdemux: Check for enough data when descrambling audio packets - And discard broken packets instead of erroring out. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> - -2026-06-11 15:31:55 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - * gst/realmedia/rmdemux.h: - rmdemux: Check that enough data is available before parsing header data - And skip over invalid header packets. - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5039 - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5038 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> - -2026-06-11 14:25:10 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Use gsize for length parameters - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> - -2026-06-11 14:17:05 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Catch short reads instead of reading from less data than expected - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> - -2026-06-11 13:51:03 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rademux.c: - rademux: Make sure enough data is actually available to parse the packet header - Unlikely that we don't have 64 bytes more in the adapter but better safe than sorry. - Also add FIXME about broken but harmless code. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> - -2026-06-11 12:40:05 +0300 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - * gst/realmedia/rmutils.c: - * gst/realmedia/rmutils.h: - realmedia: Use gsize for indexes and avoid integer overflows - One length variable stays a signed integer together with range checks because - it's used in decreasing loops that can end up with negative numbers in valid - situations. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> - -2026-05-11 18:33:25 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-06-26 21:29:34 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.28.3 + Back to development after 1.26.3 -=== release 1.28.3 === +=== release 1.26.3 === -2026-05-11 18:28:12 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-06-26 21:25:24 +0100 Tim-Philipp Müller <tim@centricular.com> + * NEWS: + * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.28.3 + Release 1.26.3 -2026-04-07 13:09:24 +0100 Nirbheek Chauhan <nirbheek@centricular.com> +2025-05-30 00:03:12 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: - meson: Require C std gnu11 or c11 - When using gcc or clang, gnu11 will be used, and when using MSVC c11 - will be used which will pass /std:c11. This provides us with the - `restrict` keyword on all supported platforms. - We can do this now because we require Visual Studio 2019. - This feature was added in Meson 1.3 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11563> + Back to development after 1.26.2 -2026-04-07 20:07:19 +0100 Tim-Philipp Müller <tim@centricular.com> - - * meson.build: - Back to development after 1.28.2 +=== release 1.26.2 === -=== release 1.28.2 === - -2026-04-07 20:02:23 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-05-29 23:56:43 +0100 Tim-Philipp Müller <tim@centricular.com> + * NEWS: + * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.28.2 + Release 1.26.2 -2026-03-18 23:43:27 +0100 Tim-Philipp Müller <tim@centricular.com> - - * po/LINGUAS: - * po/kk.po: - gst-plugins-ugly: update translations - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11077> - -2026-02-26 01:53:07 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-04-24 20:26:57 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.28.1 + Back to development after 1.26.1 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8890> -=== release 1.28.1 === +=== release 1.26.1 === -2026-02-26 01:44:06 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-04-24 20:20:14 +0100 Tim-Philipp Müller <tim@centricular.com> + * NEWS: + * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.28.1 - -2026-02-11 20:00:04 +0200 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Avoid integer overflow when checking if enough data is available for video fragment - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10893> - -2026-02-11 19:58:31 +0200 Sebastian Dröge <sebastian@centricular.com> - - * gst/realmedia/rmdemux.c: - rmdemux: Check if new video fragment overflows the fragment storage before storing it - There already was a check but that happened afterwards, i.e. after an - out-of-bounds write that overwrote some following struct data. - Fixes GST-SA-2026-0005, CVE-2026-2922, ZDI-CAN-28845. - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4905 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10893> - -2026-02-11 19:27:09 +0200 Sebastian Dröge <sebastian@centricular.com> - - * gst/asfdemux/gstasfdemux.c: - asfdemux: Error out on files with more than 32 streams - This avoids overflowing the static streams array and overwriting - random other element state. - Fixes GST--SA-2026-0006, CVE-2026-2920, ZDI-CAN-28843. - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4900 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10891> + Release 1.26.1 -2023-04-02 16:53:45 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-03-11 20:23:16 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: - * scripts/dist-common-files.py: - modules: dist common files from monorepo root - Less noise when making releases, and just need to maintain one copy. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10822> + Back to development after 1.26.0 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8618> -2026-02-15 17:45:19 +0000 Tim-Philipp Müller <tim@centricular.com> - - * README.md: - modules: remove subproject README.md from git - Will be added to the tarballs based on the monorepo README on dist. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10822> - -2026-02-15 17:20:59 +0000 Tim-Philipp Müller <tim@centricular.com> - - * RELEASE: - modules: remove RELEASE from git, will be generated from template on dist - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10822> +=== release 1.26.0 === -2026-02-15 15:02:07 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-03-11 20:14:44 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: - modules: Remove NEWS from git which is generated from full release notes - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10822> + * README.md: + * RELEASE: + * gst-plugins-ugly.doap: + * meson.build: + Release 1.26.0 -2026-01-27 17:10:54 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-02-23 23:52:57 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.28.0 + Back to development after 1.25.90 -=== release 1.28.0 === +=== release 1.25.90 === -2026-01-27 17:02:33 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-02-23 23:44:10 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: - * README.md: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.28.0 - -2026-01-25 12:18:50 +0200 Sebastian Dröge <sebastian@centricular.com> + Release 1.25.90 - * 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> +2025-02-23 16:56:31 +0000 Tim-Philipp Müller <tim@centricular.com> -2026-01-25 17:18:18 +0000 Tim-Philipp Müller <tim@centricular.com> - - * po/LINGUAS: - * po/ar.po: * po/hr.po: - * po/ro.po: + * po/pt_BR.po: gst-plugins-ugly: update translations - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10598> -2026-01-18 17:09:10 +0530 Nirbheek Chauhan <nirbheek@centricular.com> - - * 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> - -2026-01-05 20:20:51 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-02-09 17:47:32 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.27.90 + Back to development after 1.25.50 -=== release 1.27.90 === +=== release 1.25.50 === -2026-01-05 20:15:10 +0000 Tim-Philipp Müller <tim@centricular.com> +2025-02-09 17:35:17 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.27.90 + Release 1.25.50 -2025-12-09 19:13:20 +0000 Tim-Philipp Müller <tim@centricular.com> +2024-06-11 17:46:11 +0200 Ruben Gonzalez <rgonzalez@fluendo.com> * meson.build: - Back to development after 1.27.50 - -=== release 1.27.50 === - -2025-12-09 19:08:48 +0000 Tim-Philipp Müller <tim@centricular.com> + meson: use nls option to ENABLE_NLS + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7017> + +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> - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: * meson.build: - Release 1.27.50 + 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> -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/10130> - -2025-11-07 19:29:24 -0300 L. E. Segovia <amy@centricular.com> - - * 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-10-05 14:59:48 -0400 Doug Nazar <nazard@nazar.ca> - - * 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-09-07 20:39:44 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-01-14 15:00:43 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development after 1.27.2 + Back to development after 1.25.1 -=== release 1.27.2 === +=== release 1.25.1 === -2025-09-07 20:34:55 +0100 Tim-Philipp Müller <tim@centricular.com> +2025-01-14 14:52:48 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.27.2 + Release 1.25.1 -2025-09-01 21:02:22 +0530 Nirbheek Chauhan <nirbheek@centricular.com> +2025-01-13 18:10:31 +0100 Mathieu Duponchelle <mathieu@centricular.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: - 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> + * 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> -2025-07-31 17:55:29 -0400 Olivier Crête <olivier.crete@collabora.com> +2025-01-10 08:58:11 +0100 Edward Hervey <edward@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> + * 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> -2025-07-31 17:54:32 -0400 Olivier Crête <olivier.crete@collabora.com> +2025-01-10 09:10:00 +0100 Edward Hervey <edward@centricular.com> - * docs/random/LICENSE: - random: Remove historical LICENSE header - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476> + * ext/mpeg2dec/gstmpeg2dec.c: + mpeg2dec: Add missing fallthrough statements + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> -2025-07-31 17:50:33 -0400 Olivier Crête <olivier.crete@collabora.com> +2024-12-18 13:18:32 -0300 Thibault Saunier <tsaunier@igalia.com> - * 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> + * docs/meson.build: + doc: Handle gst_dep.get_variable('libexecdir') failure + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178> -2025-07-31 17:44:21 -0400 Olivier Crête <olivier.crete@collabora.com> +2024-12-18 12:27:30 -0300 Thibault Saunier <tsaunier@igalia.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> + * 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> -2025-07-31 17:39:44 -0400 Olivier Crête <olivier.crete@collabora.com> +2021-03-05 19:00:56 +0100 Mathieu Duponchelle <mathieu@centricular.com> - * REQUIREMENTS: - REQUIREMENTS: Remove outdated doc - They contained information which was completely outdated. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476> + * 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> -2025-07-24 20:20:39 +0100 Nirbheek Chauhan <nirbheek@centricular.com> +2024-11-15 11:46:14 -0300 Thibault Saunier <tsaunier@igalia.com> * meson.build: - 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> + 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> -2025-07-08 20:00:07 +0100 Tim-Philipp Müller <tim@centricular.com> +2024-11-03 17:30:40 +0000 Tim-Philipp Müller <tim@centricular.com> - * meson.build: - Back to development after 1.27.1 + * 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> -=== release 1.27.1 === +2024-11-03 17:37:09 +0000 Tim-Philipp Müller <tim@centricular.com> -2025-07-08 19:55:15 +0100 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> - * NEWS: - * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.27.1 +2024-10-16 08:22:53 -0300 Eli Mallon <eli@aquareum.tv> -2025-06-10 14:41:22 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + * 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> - * 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> +2024-08-09 10:41:57 +0300 Sebastian Dröge <sebastian@centricular.com> -2025-03-15 20:56:17 +0100 Tim-Philipp Müller <tim@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> - * 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> +2024-07-22 09:29:52 +0200 Sebastian Gross <sgross@emlix.com> -2025-03-10 13:14:07 -0300 Thibault Saunier <tsaunier@igalia.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> - * ext/mpeg2dec/gstmpeg2dec.c: - video: Give better names to buffer pools - Making debugging simpler - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8617> + * 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> -2025-03-12 13:59:45 +0100 Tim-Philipp Müller <tim@centricular.com> +2024-03-05 12:58:57 +0000 Tim-Philipp Müller <tim@centricular.com> * README.md: * RELEASE: * meson.build: - Back to development in main branch after 1.26.0 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8621> + Back to development + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6261> -=== release 1.26.0 === +=== release 1.24.0 ===
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/MAINTAINERS -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/MAINTAINERS
Changed
@@ -1,8 +1,11 @@ GStreamer is currently maintained by the consensus of a number -of people. The current list of maintainers is the developers, maintainers -and owners in the GitLab GStreamer project at: +of people, including, but not limited to: -https://gitlab.freedesktop.org/groups/gstreamer/-/group_members + 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> Maintainer-related issues should be addressed to:
View file
_service:download_files:gst-plugins-ugly-1.26.7.tar.xz/NEWS
Added
@@ -0,0 +1,2784 @@ +GStreamer 1.26 Release Notes + +GStreamer 1.26.0 was originally released on 11 March 2025. + +The latest bug-fix release in the stable 1.26 series is 1.26.7 and was released on 14 October 2025. + +See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of this document. + +Last updated: Tuesday 14 October 2025, 16:30 UTC (log) + +## Introduction + +The GStreamer team is proud to announce a new major feature release in the stable 1.x API series of your favourite +cross-platform multimedia framework! + +As always, this release is again packed with many new features, bug fixes, and other improvements. + +## 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 +- Lots of new plugins, features, performance improvements and bug fixes + +## 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. + +- 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. + +- The FFmpeg H.266 decoder is exposed now (from FFmpeg 7.0 onwards). + +- H.266 / VVC muxing and demuxing support was implemented for MP4, Matroska and MPEG-TS containers. + +- A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library. + +### JPEG XS image codec support + +- JPEG XS is a visually lossless, low-latency, intra-only video codec for video production workflows, standardised in ISO/IEC + 21122. + +- 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. + +### Low Complexity Enhancement Video Coding (LCEVC) support + +- 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. + +### Closed captions improvements + +- New H.264 and H.265 closed captions extractor and inserter elements. + + - 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. + + - The inserter elements do something similar and insert caption SEIs into the H.264 or H.265 bitstream, taking into + account frame ordering. + + - 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). + +- 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. + +- 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. + +- cea708mux: New element that allows to mux multiple CEA708 services into a single stream. + +- cccombiner has two new properties: + + - "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. + + - "schedule-timeout" to support timing out captions without EOS + +- tttocea708: New element for converting timed-text to CEA708 closed captions + +- Miscellaneous improvements and spec compliance fixes + +### Speech to Text, Translation and Speech Synthesis + +- awstranscriber2, awstranslate: New elements around the AWS transcription and translation services. + +- polly: New element around the AWS text-to-speech polly services + +- speechmatics: New transcriber / speech-to-text and translation element + +- translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions. + +### 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. + +- hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants + +### splitmuxsrc, splitmuxsink: lazy loading and dynamic fragment addition + +- 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. + +- 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: + + - You can now add fragments directly to splitmuxsrc and provide the offset and duration in the stream: + + - 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 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. + + - splitmuxsrc no longer keeps all files open, but instead only keeps 100 files open by default, configurable with the + "num-open-fragments" property. + + - 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. + +### 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. + +- 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. + +### 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. + +### 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. + +- qtdemux handles keyunit-only trick mode also in push mode now + +- support for ISO/IEC 23001-17 raw video in MP4 in qtdemux and isomp4mux. + +- 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. + +SMPTE 2038 ancillary data streams + +- 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. + +- 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: + + - 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. + + - 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. + + 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. + + 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). + + - st2038anctocc: extracts closed captions (CEA-608 and/or CEA-708) from SMPTE ST-2038 ancillary metadata streams and + outputs them on the respective sometimes source pad (src_cea608 or src_cea708). The data is output as a closed caption + stream with caps closedcaption/x-cea-608,format=s334-1a or closedcaption/x-cea-708,format=cdp for further processing by + other GStreamer closed caption processing elements. + + - cctost2038anc: takes closed captions (CEA-608 and/or CEA-708) as produced by other GStreamer closed caption processing + elements and converts them into SMPTE ST-2038 ancillary data that can be fed to st2038ancmux and then to mpegtsmux for + splicing/muxing into an MPEG-TS container. The line-number and horizontal-offset properties should be set to the desired + line number and horizontal offset. + +### Analytics + +- 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. + +- 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. + +- 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. + +- 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. + +- relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata. + +- Improved Python bindings for a more Pythonic interface when iterating over GstRelationMeta’s mtd + +### Vulkan integration enhancements + +- Vulkan Integration Improvements: + + - Memory Management: Non-coherent memory is now invalidated when mapping for read in vkmemory. + + - Color Space Selection: The vkswapper component now chooses the correct color space based on the format. + + - Vulkan Plugin Compatibility: Support added for cases where glslc is not available for building Vulkan plugins, along + with GLSL compiler support for glslang. + + - Fullscreen Quad Updates: Improved support for setting NULL input/output buffers and added checks for unset video info. + + - Vulkan Buffer Pool Enhancements: Buffer pool access flags and usage configurations have been refined, offering better + performance for video decoding and encoding. + +- Decoder/Encoder Improvements: + + - H264 Decoder: Enhancements to the vkh264dec component for better support of extended profiles and interlaced content + decoding. + + - H265 Decoder fixes: vkh265dec updated for proper handling of VPS/SPS on demand, along with fixes to PicOrderCntVal. + + - Encoder Performance: Various internal optimizations to the Vulkan encoder, including removal of redundant references and + better management of the DPB view. + +- Vulkan Instance and Device Management: + + - 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. + + - Device Context Management: Updates to manage Vulkan context handling more effectively within the application. + +### 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) + +- gldownload can import DMABufs from a downstream pool + +- glupload gained a DRM raw uploader + +### Qt5 + Qt6 QML integration improvements + +- 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 + +- Added AV1 video encoder nvav1enc + +- CUDA mode nvcuda{CODEC}enc encode elements are renamed to nv{CODEC}enc and old nv{CODEC}enc implementations are removed + +- Added support for CUDA Stream-Ordered allocator + +- Added cudacompositor element which is equivalent to the software compositor element but uses CUDA + +- Added support for CUDA kernel precompile at plugin build time using nvcc and NVCODEC plugin can cache/reuse compiled CUDA + CUBIN/PTX + +- cudaupload and cudadownload elements can support Jetson platform’s NVMM memory in addition to already supported desktop NVMM + memory + +- Introduced nvdswrapper plugin which uses NVIDIA DeepStream SDK APIs with gst-cuda in an integrated way: + + - nvdsdewarp: NVIDIA NVWarp360 API based dewarping element + +### 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) + +- D3D12 video decoders and d3d12videosink are promoted to have higher rank than D3D11 elements + +- Added support for multiple mip-levels D3D12 textures: + + - Newly added d3d12mipmapping element can generate D3D12 textures with multiple mip-levels + + - 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 + +- d3d12convert, d3d12videosink, and d3d12swapchainsink support the GstColorBalanceInterface to offer color balancing functions + such as hue, saturation, and brightness adjustment + +- Added d3d12ipcsink and d3d12ipcsrc elements for zero-copy GPU memory sharing between processes + +- d3d12upload and d3d12download support direct GPU memory copy between D3D12 and D3D12 resources + +- Added d3d12swapchainsink element to support DirectComposition or UWP/WinUI3 SwapChainPanel based applications + +- Added d3d12deinterlace element which performs deinterlacing using a GPU vendor agnostic compute shader. + +- d3d12screencapturesrc element can capture HDR enabled desktop correctly in DDA mode (DXGI Desktop Duplication API) + +### 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 + +### 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 + + - 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. + + 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. + +- rtpjitterbuffer: add RFC7273 active status to jitterbuffer stats so applications can easily check whether RFC7273 sync is + active. + +- rtph265depay: Add "wait-for-keyframe" "request-keyframe" properties and improve request keyframe logic + +- 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 + +### WebRTC improvements + +- webrtcbin improvements + + - Make basic rollbacks work + + - 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. + + - Early CNAME support (RFC5576): Have CNAME available to the jitterbuffer before the the first RTCP SR is received, for + rapid synchronization. + + - 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. + + - Create and associate transceivers earlier in negotiation, and other spec compliance improvements + + - Statistics generation improvements for bundled streams + +- webrtcsink improvements: + + - Support for more encoders: nvv4l2av1enc, vpuenc_h264 (for imx8mp), nvav1enc, av1enc, rav1enc and nvh265enc. + + - 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. + + - A generic mechanism was implemented to forward metas over the control channel. + + - Added a mechanism for SDP munging to handle server-specific quirks. + + - Can expose a built-in web server and signalling server for prototyping and debugging purposes. + +- webrtcsink and webrtcsrc enhancements: + + - Support for raw payloads, i.e. uncompressed audio and video + + - NTP & PTP clock signalling and synchronization support (RFC 7273) + + - Generic data channel control mechanism for sending upstream events back to the sender (webrtcsink) + +- webrtcsrc now has support for multiple producers + +## 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 VA elements (see below): vah266dec, vavp8enc, vajpegenc, vavp8alphadecodebin, vavp9alphadecodebin + +- svtjpegxsdec, svtjpegxsenc: SVT JPEG XS decoder/encoder + +- Many other new elements mentioned in other sections (e.g. CUDA, NVCODEC, etc.) + +## New element features and additions + +- audioconvert enhancements: + + - 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. + + - Better handling of setting of the mix matrix at run time + + - handles new GstRequestMixMatrix custom upstream event + +- audiorate: Take the tolerance into account when filling gaps; better accounting of the number of samples added or dropped. + +- av1enc: Add "timebase" property to allow configuring a specific time base, in line with what exists for vp8enc and vp9enc + already. + +- av1parse can parse annexb streams now, and typefinding support has been added for annexb streams as well. + +- The GTK3 plugin has gained support for OpenGL/WGL on Windows + +- 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. + +- imagefreeze: Add support for JPEG and PNG + +- kmssink: Extended the functionality to support buffers with DRM formats along with non-linear buffers + +- pitch now supports reverse playback + +- queue can emit the notify signal on queue level changes if the "notify-levels" property has been set. + +- 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. + +- rsvgdec: Negotiate resolution with downstream and scale accordingly + +- rtmp2: server authentication improvements + + - 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. + + - Add support for Limelight CDN (llnw) authentication + +- 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. + +- souphttpsrc: Add the notion of "retry-backoff" and retry on 503 (service unavailable) and 500 (internal server error) http + errors. + +- 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 + +- videoconvertscale: + + - Handle pixel aspect ratios with large numerators or denominators + - Explicitly handle the overlaycomposition meta caps feature, so it doesn’t get dropped unnecessarily + +- waylandsink prefers DMABuf over system memory now + +- 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. + +- zbar: add support for binary mode and getting symbols as raw bytes instead of a text string. + +## Plugin and library moves + +- macOS: atdec was moved from the applemedia plugin in -bad to the osxaudio plugin in -good, in order to be able to share + audio-related helper methods. + +## Plugin and element removals + +- None in this cycle + +## Miscellaneous API additions + +### GStreamer Core + +- 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. + +- 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. + +- 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. + +- GstMessage has gained APIs to generically add “details” to messages: + + - 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. + +- gst_util_floor_log2() returns smallest integral value not bigger than log2(v). + +- gst_util_fraction_multiply_int64() is a 64-bit variant of gst_util_fraction_multiply(). + +#### GstIdStr replaces GQuark in structure and caps APIs + +- 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. + +- 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. + +- 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!”. + +- Most applications and plugins will have been using the plain string-based APIs which are not affected by this change. + +#### GstVecDeque + +- 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. + +### 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. + +### 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. + +### Tag Library + +- EXIF handling now support the CAPTURING_LIGHT_SOURCE tag + +- Vorbis tag handling gained support for the LYRICS tag + +### 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 + +- 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 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 + +### 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 + +## 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. + +- video-frame: reduce number of memcpy() calls on frame copies if possible + +- video-converter: added fast path conversions between v210 and I420_10 / I422_10 + +- 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. + +- GstValue, GstStructure: can now (de)serialize string arrays (G_TYPE_STRV) + +## 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 + +- tracers: Simplify params handling using GstStructure and object properties and move tracers over to property-based + configuration (leaks, latency). + +- 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. + +New tracers + +- memory-tracer: New tracer that can track memory usage over time + +- pad-push-timings: New tracer for tracing pad push timings + +- pcap-writer: New tracer that can store the buffers flowing through a pad as PCAP file + +Dot tracer/viewer + +- 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 + +Debug logging system improvements + +- Nothing major in this cycle. + +## 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 + +## 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 + +## 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. + +- The ONVIF backchannel example now features support for different codecs, including AAC. + +## 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 + +- 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. + +- 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. + +## GStreamer Video4Linux2 support + +- Implemented DMA_DRM caps negotiation + +- 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 + +- The V4L2 stateful encoders can now handle dynamic frame rates (0/1), and colorimetry negotiation was also improved. + +## GStreamer Editing Services and NLE + +- Added support for reverse playback with a new reverse property on nlesource which is exposed child property on GESClip + +- Input channels reordering for flexible audio channel mapping + +- Added support for transition in the ges-launch-1.0 timeline description format + +- Added support for GstContext sharing in GESTimeline + +- Added basic support for duplicated children property in GESTimelineElement + +- validate: Add an action type to group clips + +## GStreamer validate + +- Added new action types: + + - 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 + +- HTTP server control endpoints to allow scenarios to control the server behavior, allowing simulating server failures from + tests + +- Improved the select-streams action type, adding support for selecting the same streams several times + +- Added support for forcing monitoring of all pipelines in validatetest files + +- Enhanced support for expected Error messages on the bus + +- Added ways to retrieve HTTP server port in .validatetest files + +- Added support for lldb in the gst-validate-launcher + +## GStreamer Python Bindings + +gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject, +and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more +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). + +- Added an iterator for AnalyticsRelationMeta + +- Implement __eq__ for Mtd classes + +- Various build fixes and Windows-related fixes. + +## GStreamer C# Bindings + +- The C# bindings have been updated for the latest GStreamer 1.26 API + +## GStreamer Rust Bindings and Rust Plugins + +The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the 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. + +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. + +- gopbuffer: New element that can buffer a minimum duration of data delimited by discrete GOPs (Group of Picture) + +- hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments. + +- 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 + +- quinn: New plugin that contains various QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and + WebTransport. + +- relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata. + +- 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 rtprecv / rtpsend elements + +- speechmatics: New transcriber / speech-to-text and translation element + +- New spotifylyricssrc element for grabbing lyrics from Spotify. + +- 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. + +- translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions. + +- tttocea708: New element for converting timed-text to CEA708 closed captions + +- A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library. + +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). + +Note that at the time of GStreamer 1.26.0 gst-plugins-rs 0.14 was not released yet and the git main branch was included instead +(see above). As such, the ChangeLog also did not contain the changes between the latest 0.13 release and 0.14.0. + +## Build and Dependencies + +- Meson >= 1.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). + +- The ASIO plugin dropped its external SDK header dependency, so it can always be built and shipped more easily. + +- Require tinyalsa >= 1.1.0 when building the tinyalsa plugin + +- The srtp plugin now requires libsrtp2, support for libsrtp1 was dropped. + +Monorepo build + +- The FFmpeg subproject wrap was updated to 7.1 + +- Many other wrap updates + +gstreamer-full + +- No major changes + +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 + 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 + +- The uninstalled development environment should work better on macOS now, also in combination with homebrew (e.g. when + libsoup comes from homebrew). + +- New python-exe Meson build option to override the target Python installation to use. This will be picked up by the + gst-python and gst-editing-sevices subprojects. + +## Platform-specific changes and improvements + +### Android + +- The recommended mechanism to build Android apps has changed from Android.mk to CMake-in-Gradle using + FindGStreamerMobile.cmake. Android.mk support has been deprecated and will be removed in the next stable release. For more + information, see below, in the Cerbero section. +- More H.264/H.265 profiles and levels have been added to the androidmedia hardware-accelerated video encoder and decoder + elements, along with mappings for a number of additional pixel formats for P010, packed 4:2:0 variants and RGBA layouts, + which fixes problems with android decoders refusing to output raw video frames with decoders that announce support for these + common pixel formats and only allow the ‘hardware surfaces output’ path. + +### Apple macOS and iOS + +- atenc: added an Apple AAC audio encoder + +- atdec can now decode audio with more than two channels + +- vtenc has received various bug fixes as well as a number of new features: + + - 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) + +- Better macOS support for gst-validate tools which now use gst_macos_main() and support lldb + +- The osxaudio device provider exposes more properties including a unique id + +- osxaudio will automatically set up AVAudioSession on iOS and always expose the maximum number of channels a device supports + with an unpositioned layout. + +- The monorepo development environment should work better on macOS now + +- CMake apps that build macOS and iOS apps can consume GStreamer more easily now, using FindGStreamer.cmake or + FindGStreamerMobile.cmake respectively. + +- In the near future, CMake in Xcode will be the preferred way of building the iOS tutorials. See below, in the Cerbero + section. + +### Windows + +- webview2src: new Microsoft WebView2 based web browser source element + +- The mediafoundation plugin can also be built with MinGW now. + +- The GTK3 plugin has gained support for OpenGL/WGL on Windows + +- qsv: Add support for d3d12 interop in encoder, via D3D11 textures + +### 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. + +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. + +- 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. + +- 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. + +- 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. + +- 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 + + - More recipes have been ported away from Autotools to Meson and CMake, speeding up the build and increasing platform + support. + +#### macOS + +- 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 updates are still a work-in-progress, help is appreciated + +- Android tutorials and examples are now built with gradle + cmake instead of gradle + make on the CI + +## Documentation improvements + +- Tracer objects information is now included in the documentation + +## 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. + +- uridecodebin3 remove non-functional "source" property that doesn’t make sense and always returned NULL anyway. + +## 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. + +## Statistics + +- 4496 commits + +- 2203 Merge requests merged + +- 794 Issues closed + +- 215+ Contributors + +- ~33% of all commits and Merge Requests were in Rust modules/code + +- 4950 files changed + +- 515252 lines added + +- 201503 lines deleted + +- 313749 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, + +… 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 + +- 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 + +Schedule for 1.28 + +Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28 +release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository. + +The schedule for 1.28 is yet to be decided, but we’re aiming for a release towards the end of 2025. + +1.28 will be backwards-compatible to the stable 1.26, 1.24, 1.22, 1.20, 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 +release series. + +-------------------------------------------------------------------------------------------------------------------------------- + +These release notes have been prepared by Tim-Philipp Müller with contributions from Arun Raghavan, Daniel Morin, Nirbheek +Chauhan, Olivier Crête, Philippe Normand, Sebastian Dröge, Seungha Yang, Thibault Saunier, and Víctor Manuel Jáquez Leal. + +License: CC BY-SA 4.0
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/README.md -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/README.md
Changed
@@ -1,8 +1,12 @@ -# GStreamer +GStreamer 1.26.x stable series + +WHAT IT IS +---------- This is GStreamer, a framework for streaming media. -## Where to start +WHERE TO START +-------------- We have a website at @@ -24,598 +28,169 @@ https://matrix.to/#/#gstreamer:gstreamer.org -This repository contains all official modules supported by the GStreamer -community which can be found in the `subprojects/` directory. - -## Getting started - -### Install git and python 3.8+ - -If you're on Linux, you probably already have these. On macOS, new versions of -Xcode ship Python 3 already. If you're on an older Xcode, you can use the -official Python installer(https://www.python.org/downloads/mac-osx/). - -You can find instructions for Windows below(#windows-prerequisites-setup). - -### Install meson and ninja - -Meson 1.1 or newer is required. - -On Linux and macOS you can get meson through your package manager or using: - -``` -$ pip3 install --user meson -``` - -This will install meson into `~/.local/bin` which may or may not be included -automatically in your PATH by default. - -You should get `ninja` using your package manager or download the official -release(https://github.com/ninja-build/ninja/releases) and put the `ninja` -binary in your PATH. - -You can find instructions for Windows below(#windows-prerequisites-setup). - - -If you used the official Python installer on macOS instead of the Python -3 shipped with Xcode, you might need to execute "Install Certificates.command" -from the Python folder in the user Applications folder: - -``` -$ /Applications/Python\ 3.*/Install\ Certificates.command -``` - -Otherwise you will get this error when downloading meson wraps: - -``` -urllib.error.URLError: urlopen error SSL: CERTIFICATE_VERIFY_FAILED certificate verify failed -``` - -### Build GStreamer and its modules - -You can get all GStreamer built running: - -``` -meson setup builddir -meson compile -C builddir -``` - -This will automatically create the `builddir` directory and build everything -inside it. - -NOTE: On Windows, meson will automatically detect and use the latest Visual -Studio if GCC, clang, etc are not available in `PATH`. Use the `--vsenv` -argument to force the use of Visual Studio. - -NOTE: Meson will not update subprojects automatically once a subproject has -been fetched. Remember to update subprojects if wrap files are updated. - -``` -meson subprojects update -``` - -### External dependencies - -All mandatory dependencies of GStreamer are included as meson subprojects(https://mesonbuild.com/Subprojects.html): -libintl, zlib, libffi, glib. Some optional dependencies are also included as -subprojects, such as ffmpeg, x264, json-glib, graphene, openh264, orc, etc. - -Mandatory dependencies will be automatically built if meson cannot find them on -your system using pkg-config. The same is true for optional dependencies that -are included as subprojects. You can find a full list by looking at the -`subprojects` directory. - -Plugins that need optional dependencies that aren't included can only be built -if they are provided by the system. Instructions on how to build some common -ones such as Qt5/QML are listed below. If you do not know how to provide an -optional dependency needed by a plugin, you should use Cerbero(https://gitlab.freedesktop.org/gstreamer/cerbero/#description) -which handles this for you automatically. - -Plugins will be automatically enabled if possible, but you can ensure that -a particular plugin (especially if it has external dependencies) is built by -enabling the gstreamer repository that ships it and the plugin inside it. For -example, to enable the Qt5 plugin in the gst-plugins-good repository, you need -to run meson as follows: - -``` -meson -Dgood=enabled -Dgst-plugins-good:qt5=enabled builddir -``` - -This will cause Meson to error out if the plugin could not be enabled. You can -also flip the default and disable all plugins except those explicitly enabled -like so: - -``` -meson -Dauto_features=disabled -Dgstreamer:tools=enabled -Dbad=enabled -Dgst-plugins-bad:openh264=enabled -``` - -This will disable all optional features and then enable the `openh264` plugin -and the tools that ship with the core gstreamer repository: `gst-inspect-1.0`, -`gst-launch-1.0`, etc. As usual, you can change these values on a builddir that -has already been setup with `meson configure -Doption=value`. - -### Building the Qt5 QML plugin - -If `qmake` is not in `PATH` and pkgconfig files are not available, you can -point the `QMAKE` env var to the Qt5 installation of your choosing before -running `meson` as shown above. - -The plugin will be automatically enabled if possible, but you can ensure that -it is built by passing `-Dgood=enabled -Dgst-plugins-good:qt5=enabled` to `meson`. - -### Building the Intel MSDK plugin - -On Linux, you need to have development files for `libmfx` installed. On -Windows, if you have the Intel Media SDK(https://software.intel.com/en-us/media-sdk), -it will set the `INTELMEDIASDKROOT` environment variable, which will be used by -the build files to find `libmfx`. - -The plugin will be automatically enabled if possible, but you can ensure it by -passing `-Dbad=enabled -Dgst-plugins-bad:msdk=enabled` to `meson`. - -### Building plugins with (A)GPL-licensed dependencies - -Some plugins have GPL- or AGPL-licensed dependencies and will only be built -if you have explicitly opted in to allow (A)GPL-licensed dependencies by -passing `-Dgpl=enabled` to Meson. - -List of plugins with (A)GPL-licensed dependencies (non-exhaustive) in gst-plugins-bad: - - dts (DTS audio decoder plugin) - - faad (Free AAC audio decoder plugin) - - iqa (Image quality assessment plugin based on dssim-c) - - mpeg2enc (MPEG-2 video encoder plugin) - - mplex (audio/video multiplexer plugin) - - ofa (Open Fingerprint Architecture library plugin) - - resindvd (Resin DVD playback plugin) - - x265 (HEVC/H.265 video encoder plugin) - -List of plugins with (A)GPL-licensed dependencies (non-exhaustive) in gst-plugins-ugly: - - a52dec (Dolby Digital (AC-3) audio decoder plugin) - - cdio (CD audio source plugin based on libcdio) - - dvdread (DVD video source plugin based on libdvdread) - - mpeg2dec (MPEG-2 video decoder plugin based on libmpeg2) - - sidplay (Commodore 64 audio decoder plugin based on libsidplay) - - x264 (H.264 video encoder plugin based on libx264) - -### Static build - -Since *1.18.0*, when doing a static build using `--default-library=static`, -a shared library `gstreamer-full-1.0`, in addition to a package config file, -will be produced and includes all enabled GStreamer plugins and libraries. -A list of libraries that needs to be exposed in `gstreamer-full-1.0` -ABI can be set using `gst-full-libraries` option. -glib-2.0, gobject-2.0 and gstreamer-1.0 are always included. - -``` -meson setup --default-library=static -Dgst-full-libraries=gstreamer-app-1.0,gstreamer-video-1.0 builddir -``` - -GStreamer *1.18* requires applications using gstreamer-full-1.0 to initialize -static plugins by calling `gst_init_static_plugins()` after `gst_init()`. That -function is defined in `gst/gstinitstaticplugins.h` header file. - -Since *1.20.0*, `gst_init_static_plugins()` is called automatically by -`gst_init()` and applications don't have to call it manually any more. -The header file has been removed from public API. - -One can use the `gst-full-version-script` option to pass a -version script(https://www.gnu.org/software/gnulib/manual/html_node/LD-Version-Scripts.html) -to the linker. This can be used to control the exact symbols that are exported by -the `gstreamer-full` library, allowing the linker to garbage collect unused code -and so, reduce the total library size. A default script -`gstreamer-full-default.map` declares only glib/gstreamer symbols as public. - -One can use the `gst-full-plugins` option to pass a list of plugins to be -registered in the `gstreamer-full` library. The default value is '*' -which means that all the plugins selected during the build process will be -registered statically. -An empty value will prevent any plugins to be registered. - -One can select a specific set of features with `gst-full-elements`, -`gst-full-typefind-functions`, `gst-full-device-providers` -or `gst-full-dynamic-types` to select specific feature from a plugin. -When a feature has been listed in one of those options, the other features from -its plugin will no longer be automatically included, even if the plugin -is listed in `gst-full-plugins`. - -The user must insure that all selected plugins and features (element, -typefind, etc.) have been enabled during the build configuration. - -To register features, the syntax is the following: -plugins are separated by ';' and features from a plugin starts after ':' -and are ',' separated. - -As an example: - - * `-Dgst-full-plugins=coreelements;typefindfunctions;alsa;pbtypes`: - Enable only `coreelements`, `typefindfunctions`, `alsa`, `pbtypes` plugins. - * `-Dgst-full-elements=coreelements:filesrc,fakesink,identity;alsa:alsasrc`: - Enable only `filesrc`, `identity` and `fakesink` elements from `coreelements` - plugin and `alsasrc` element from `alsa` plugin. - * `-Dgst-full-typefind-functions=typefindfunctions:wav,flv`: - Enable only typefind func `wav` and `flv` from `typefindfunctions` - * `-Dgst-full-device-providers=alsa:alsadeviceprovider`: - Enable `alsadeviceprovider` from `alsa` plugin. - * `-Dgst-full-dynamic-types=pbtypes:video_multiview_flagset`: - Enable `video_multiview_flagset` from `pbtypes`. - -All features from the `playback` plugin will be enabled and the other plugins -will be restricted to the specific features requested. - -All the selected features will be registered into a dedicated `NULL` -plugin name. - -This will cause the features/plugins that are not registered to not be included -in the final gstreamer-full library. - -This is an experimental feature, backward incompatible changes could still be -made in the future. -Only linux-like platforms are currently well supported when Windows, MSVC -and MinGW, should be considered as *experimental* as the symbols export -is still under discussion. - -Since 1.24.7, it is possible to disable the `gstreamer-full` library by passing -`-Dgst-full=disabled`. This can be useful in cases where you want a static -build of gstreamer, but you do not want to use gst-full, since linking the -static executables associated with it can be quite CPU/RAM intensive. - - -#### Full-static build - -Since *1.24.0*, it is also possible to link an application with GStreamer -statically. It means that all the gstreamer libraries will be linked within -your library or application. However, it is important to note that even though -the `gstreamer-full` library can be statically built into the application, -it does not contain all of the code (core libraries and plugins). -Instead, it relies on all the other static libraries. Hence, while the -`gstreamer-full` library provides a cohesive access point, the actual -functionality is distributed across various static libraries. -You can enable this option using `-Dgst-full-target-type=static_library` which -is by default set to `shared_library`. The buildsystem will produce a set of -archives depending on your `gstreamer-full` configuration as explained above. -Your application can now check the `gstreamer-full` dependency within meson or -with the package config file. -In both case, the application can rely on the `gstreamer-full-1.0.pc` file -generated during the build process to retrieve all its dependencies. -In that configuration, the *features* selected during the build configuration -will be automatically registered during the call of `gst_init()`. - - -### Building documentation - -Documentation is not built by default because it is slow to generate. To build -the documentation, first ensure that `hotdoc` is installed and `doc` option is -enabled. For API documentation, gobject introspection must also be enabled. -The special target `gst-doc` can then be used to (re)generate the documentation. - -```sh -$ pip install hotdoc -$ meson setup -Ddoc=enabled -Dintrospection=enabled builddir -$ meson compile -C builddir gst-doc -``` - -NOTE: To visualize the documentation, `devhelp` can be run inside the development -environment (see below). - -# Development environment - -## Development environment target - -GStreamer ships a script that drops you into a development environment where -all the plugins, libraries, and tools you just built are available: - -``` -./gst-env.py -``` - -Or with a custom builddir (i.e., not `build`, `_build` or `builddir`): - -``` -./gst-env.py --builddir <BUILDDIR> -``` - -You can also use `ninja devenv` inside your build directory to achieve the same -effect. However, this may not work on Windows if meson has auto-detected the -visual studio environment. - -Alternatively, if you'd rather not start a shell in your workflow, you -can mutate the current environment into a suitable state like so: - -``` -./gst-env.py --only-environment -``` - -This will print output suitable for an sh-compatible `eval` function, -just like `ssh-agent -s`. - -An external script can be run in development environment with: - -``` -./gst-env.py external_script.sh -``` - -NOTE: In the development environment, a fully usable prefix is also configured -in `gstreamer/prefix` where you can install any extra dependency/project. - -For more extensive documentation about the development environment go to the -documentation(https://gstreamer.freedesktop.org/documentation/installing/building-from-source-using-meson.html). - -## Windows Development Environment - -### Prerequisites - -- **Visual Studio Community 2022** (or later) with: - - Desktop development with C++ workload - - Windows SDK -- **Python 3.8+** (required for build system and gst-env.py) -- **Meson 0.59.0+** (install via pip: `pip install meson`) - -It is recommended to use Visual Studio Community 2022 and PowerShell terminal. - -Meson 0.59.0+ automatically detects and activates the Visual Studio toolchain when no other compilers are found. GStreamer should be built in a PowerShell environment for a complete user experience. - -NOTE: If you have other toolchains (MinGW, Clang, etc.) in your PATH, Meson may detect those instead of Visual Studio. To ensure Visual Studio is used: -- Remove conflicting toolchains from your Windows PATH, or -- Use the `--vsenv` flag: `meson setup --vsenv builddir`, or -- Run from a Developer PowerShell for VS 2022 which pre-configures the environment - -### Building with Visual Studio - -```powershell -meson setup builddir -meson compile -C builddir -``` - -NOTE: You should verify that Visual Studio is being detected. Look for output similar to: - -```powershell -... -Activating VS 17.x.x -... -``` - -### Using the Development Environment in PowerShell - -```powershell -python.exe gst-env.py -``` - -Or with a custom build directory: - -```powershell -python.exe gst-env.py --builddir builddir -``` - -You can also use ninja directly: - -```powershell -ninja -C builddir devenv -``` - -The development environment will configure all necessary paths (PATH, GST_PLUGIN_PATH, etc.) so you can immediately use GStreamer tools and test your changes: - -```powershell -gst-inspect-1.0.exe coreelements -gst-launch-1.0.exe videotestsrc ! autovideosink -``` - -## Custom subprojects - -We also added a meson option, `custom_subprojects`, that allows the user -to provide a comma-separated list of meson subprojects that should be built -alongside the default ones. - -To use it: - -```sh -# Clone into the subprojects directory -$ git -C subprojects clone my_subproject -# Wipe dependency detection state, in case you have an existing build dir -$ meson setup --wipe builddir -Dcustom_subprojects=my_subproject -$ meson compile -C builddir -``` - -## Run tests - -You can easily run the test of all the components: - -``` -meson test -C builddir -``` - -To list all available tests: - -``` -meson test -C builddir --list -``` - -To run all the tests of a specific component: - -``` -meson test -C builddir --suite gst-plugins-base -``` - -Or to run a specific test file: - -``` -meson test -C builddir --suite gstreamer gst_gstbuffer -``` - -Run a specific test from a specific test file: - -``` -GST_CHECKS=test_subbuffer meson test -C builddir --suite gstreamer gst_gstbuffer -``` - -## Optional Installation - -You can also install everything that is built into a predetermined prefix like -so: - -``` -meson setup --prefix=/path/to/install/prefix builddir -meson compile -C builddir -meson install -C builddir -``` - -Note that the installed files have `RPATH` stripped, so you will need to set -`LD_LIBRARY_PATH`, `DYLD_LIBRARY_PATH`, or `PATH` as appropriate for your -platform for things to work. - - -## Add information about GStreamer development environment in your prompt line - -### Bash prompt - -We automatically handle `bash` and set `$PS1` accordingly. - -If the automatic `$PS1` override is not desired (maybe you have a fancy custom -prompt), set the `$GST_BUILD_DISABLE_PS1_OVERRIDE` environment variable to -`TRUE` and use `$GST_ENV` when setting the custom prompt, for example with a -snippet like the following: - -```bash -... -if -n "${GST_ENV-}" ; -then - PS1+=" ${GST_ENV} " -fi -... -``` - -### Using powerline - -In your powerline theme configuration file (by default in -`{POWERLINE INSTALLATION DIR}/config_files/themes/shell/default.json`) -you should add a new environment segment as follow: - -``` -{ - "function": "powerline.segments.common.env.environment", - "args": { "variable": "GST_ENV" }, - "priority": 50 -}, -``` - -## Windows Prerequisites Setup - -On Windows, some of the components may require special care. - -### Git for Windows - -Use the Git for Windows(https://gitforwindows.org/) installer. It will -install a `bash` prompt with basic shell utils and up-to-date git binaries. - -During installation, when prompted about `PATH`, you should select the -following option: - -!Select "Git from the command line and also from 3rd-party software"(/data/images/git-installer-PATH.png) - -### Python 3.8+ on Windows - -Use the official Python installer(https://www.python.org/downloads/windows/). -You must ensure that Python is installed into `PATH`: - -!Enable Add Python to PATH, then click Customize Installation(/data/images/py-installer-page1.png) - -You may also want to customize the installation and install it into -a system-wide location such as `C:\PythonXY`, but this is not required. - -### Ninja on Windows +GStreamer 1.0 series +-------------------- -If you are using Visual Studio 2019 or newer, Ninja is already provided. +Starring -In other cases, the easiest way to install Ninja on Windows is with `pip3`, -which will download the compiled binary and place it into the `Scripts` -directory inside your Python installation: + GSTREAMER -``` -pip3 install ninja -``` +The core around which all other modules revolve. Base functionality and +libraries, some essential elements, documentation, and testing. -You can also download the official release(https://github.com/ninja-build/ninja/releases) -and place it into `PATH`, or use MSYS2. + BASE -### Meson on Windows +A well-groomed and well-maintained collection of GStreamer plug-ins and +elements, spanning the range of possible types of elements one would want +to write for GStreamer. -**IMPORTANT**: Do not use the Meson MSI installer since it is experimental and known to not -work with `GStreamer`. +And introducing, for the first time ever, on the development screen ... -You can use `pip3` to install Meson, same as Ninja above: + THE GOOD -``` -pip3 install meson -``` + --- "Such ingratitude. After all the times I've saved your life." -Note that Meson is written entirely in Python, so you can also run it as-is -from the git repository(https://github.com/mesonbuild/meson/) if you want to -use the latest master branch for some reason. +A collection of plug-ins you'd want to have right next to you on the +battlefield. Shooting sharp and making no mistakes, these plug-ins have it +all: good looks, good code, and good licensing. Documented and dressed up +in tests. If you're looking for a role model to base your own plug-in on, +here it is. -### Running Meson on Windows +If you find a plot hole or a badly lip-synced line of code in them, +let us know - it is a matter of honour for us to ensure Blondie doesn't look +like he's been walking 100 miles through the desert without water. -Since version 0.59.0, Meson automatically activates the Visual Studio -environment on Windows if no other compilers (gcc, clang, etc) are found. To -force the use of Visual Studio in such cases, you can use: + THE UGLY -``` -meson setup --vsenv builddir -``` + --- "When you have to shoot, shoot. Don't talk." -### Setup a mingw/wine based development environment on linux +There are times when the world needs a color between black and white. +Quality code to match the good's, but two-timing, backstabbing and ready to +sell your freedom down the river. These plug-ins might have a patent noose +around their neck, or a lock-up license, or any other problem that makes you +think twice about shipping them. -#### Install wine and mingw +We don't call them ugly because we like them less. Does a mother love her +son less because he's not as pretty as the other ones ? No - she commends +him on his great personality. These plug-ins are the life of the party. +And we'll still step in and set them straight if you report any unacceptable +behaviour - because there are two kinds of people in the world, my friend: +those with a rope around their neck and the people who do the cutting. -##### On fedora x64 + THE BAD -``` sh -sudo dnf install mingw64-gcc mingw64-gcc-c++ mingw64-pkg-config mingw64-winpthreads wine -``` + --- "That an accusation?" -FIXME: Figure out what needs to be installed on other distros +No perfectly groomed moustache or any amount of fine clothing is going to +cover up the truth - these plug-ins are Bad with a capital B. +They look fine on the outside, and might even appear to get the job done, but +at the end of the day they're a black sheep. Without a golden-haired angel +to watch over them, they'll probably land in an unmarked grave at the final +showdown. -#### Get meson from git +Don't bug us about their quality - exercise your Free Software rights, +patch up the offender and send us the patch on the fastest steed you can +steal from the Confederates. Because you see, in this world, there's two +kinds of people, my friend: those with loaded guns and those who dig. +You dig. -This simplifies the process and allows us to use the cross files -defined in meson itself. +The Lowdown +----------- -``` sh -git clone https://github.com/mesonbuild/meson.git -``` + --- "I've never seen so many plug-ins wasted so badly." -#### Build and install +GStreamer Plug-ins has grown so big that it's hard to separate the wheat from +the chaff. Also, distributors have brought up issues about the legal status +of some of the plug-ins we ship. To remedy this, we've divided the previous +set of available plug-ins into four modules: -``` -BUILDDIR=$PWD/winebuild/ -export WINEPREFIX=$BUILDDIR/wine-prefix/ && mkdir -p $WINEPREFIX -# Setting the prefix is mandatory as it is used to setup symlinks within the development environment -meson/meson.py $BUILDDIR --cross-file meson/cross/linux-mingw-w64-64bit.txt -Dgst-plugins-bad:vulkan=disabled -Dorc:gtk_doc=disabled --prefix=$BUILDDIR/wininstall/ -Djson-glib:gtk_doc=disabled -meson/meson.py install -C $BUILDDIR/ -``` +- gst-plugins-base: a small and fixed set of plug-ins, covering a wide range + of possible types of elements; these are continuously kept up-to-date + with any core changes during the development series. -> __NOTE__: You should use `meson install -C $BUILDDIR` each time you make a change -> instead of the usual `meson compile -C $BUILDDIR` as this is not in the -> development environment. + - We believe distributors can safely ship these plug-ins. + - People writing elements should base their code on these elements. + - These elements come with examples, documentation, and regression tests. -Alternatively, you can also use `mingw64-meson` on Fedora, which is a wrapper -script that sets things up to use Fedora's cross files and settings. However, -the wrapper script can be buggy in some cases. +- gst-plugins-good: a set of plug-ins that we consider to have good quality + code, correct functionality, our preferred license (LGPL for the plug-in + code, LGPL or LGPL-compatible for the supporting library). -#### cross-mingw development environment + - We believe distributors can safely ship these plug-ins. + - People writing elements should base their code on these elements. + +- gst-plugins-ugly: a set of plug-ins that have good quality and correct + functionality, but distributing them might pose problems. The license + on either the plug-ins or the supporting libraries might not be how we'd + like. The code might be widely known to present patent problems. -You can get into the development environment as usual with the gst-env.py -script: + - Distributors should check if they want/can ship these plug-ins. + - People writing elements should base their code on these elements. -``` -./gst-env.py -``` +- gst-plugins-bad: a set of plug-ins that aren't up to par compared to the + rest. They might be close to being good quality, but they're missing + something - be it a good code review, some documentation, a set of tests, + a real live maintainer, or some actual wide use. + If the blanks are filled in they might be upgraded to become part of + either gst-plugins-good or gst-plugins-ugly, depending on the other factors. -See above(#development-environment) for more details. + - If the plug-ins break, you can't complain - instead, you can fix the + problem and send us a patch, or bribe someone into fixing them for you. + - New contributors can start here for things to work on. -After setting up binfmt to use wine for windows binaries, -you can run GStreamer tools under wine by running: +PLATFORMS +--------- -``` -gst-launch-1.0.exe videotestsrc ! glimagesink -``` +- Linux is of course fully supported +- FreeBSD is reported to work; other BSDs should work too; same for Solaris +- MacOS works, binary 1.x packages can be built using the cerbero build tool +- Windows works; binary 1.x packages can be built using the cerbero build tool + - MSys/MinGW builds + - Microsoft Visual Studio builds are also available and supported +- Android works, binary 1.x packages can be built using the cerbero build tool +- iOS works + +INSTALLING FROM PACKAGES +------------------------ + +You should always prefer installing from packages first. GStreamer is +well-maintained for a number of distributions, including Fedora, Debian, +Ubuntu, Mandrake, Arch Linux, Gentoo, ... + +Only in cases where you: + + - want to hack on GStreamer + - want to verify that a bug has been fixed + - do not have a sane distribution + +should you choose to build from source tarballs or git. + +Find more information about the various packages at + + https://gstreamer.freedesktop.org/download/ + +For in-depth instructions about building GStreamer visit: +getting-started(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/README.md#getting-started). + +PLUG-IN DEPENDENCIES AND LICENSES +--------------------------------- + +GStreamer is developed under the terms of the LGPL (see COPYING file for +details). Some of our plug-ins however rely on libraries which are available +under other licenses. This means that if you are distributing an application +which has a non-GPL compatible license (for instance a closed-source +application) with GStreamer, you have to make sure not to distribute GPL-linked +plug-ins. + +When using GPL-linked plug-ins, GStreamer is for all practical reasons +under the GPL itself. + +HISTORY +------- -binfmt: http://man7.org/linux/man-pages/man5/binfmt.d.5.html +The fundamental design comes from the video pipeline at Oregon Graduate +Institute, as well as some ideas from DirectMedia. It's based on plug-ins that +will provide the various codec and other functionality. The interface +hopefully is generic enough for various companies (ahem, Apple) to release +binary codecs for Linux, until such time as they get a clue and release the +source.
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/RELEASE -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-ugly 1.28.7 +This is GStreamer gst-plugins-ugly 1.26.7. 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.28 release series adds new features on top of the 1.26 series and is +The 1.26 release series adds new features on top of the 1.24 series and is part of the API and ABI-stable 1.x release series. Full release notes can be found at: - https://gstreamer.freedesktop.org/releases/1.28/ + https://gstreamer.freedesktop.org/releases/1.26/ Binaries for Android, iOS, Mac OS X and Windows will usually be provided shortly after the release. @@ -42,6 +42,10 @@ 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.7.tar.xz/REQUIREMENTS
Added
@@ -0,0 +1,46 @@ +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.7.tar.xz/docs/random
Added
+(directory)
View file
_service:download_files:gst-plugins-ugly-1.26.7.tar.xz/docs/random/LICENSE
Added
@@ -0,0 +1,18 @@ +/* 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.7.tar.xz/docs/random/PORTED_09
Added
@@ -0,0 +1,17 @@ +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.28.7.tar.xz/ext/a52dec/gsta52dec.c -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/ext/a52dec/gsta52dec.c
Changed
@@ -51,6 +51,10 @@ #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) @@ -138,12 +142,7 @@ GObjectClass *gobject_class; GstElementClass *gstelement_class; GstAudioDecoderClass *gstbase_class; - -#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 + guint cpuflags = 0; gobject_class = (GObjectClass *) klass; gstelement_class = (GstElementClass *) klass; @@ -210,18 +209,18 @@ klass->a52_cpuflags = 0; #endif -#if !defined(A52_ACCEL_DETECT) - if (cpuid_mmx) +#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) klass->a52_cpuflags |= MM_ACCEL_X86_MMX; - if (cpuid_3dnow) + if (cpuflags & ORC_TARGET_MMX_3DNOW) klass->a52_cpuflags |= MM_ACCEL_X86_3DNOW; - if (cpuid_mmxext) + if (cpuflags & ORC_TARGET_MMX_MMXEXT) klass->a52_cpuflags |= MM_ACCEL_X86_MMXEXT; - - GST_LOG ("CPU flags: a52=%08x, cpuid: mmx=%x, mmxext=%x, 3dnow=%x", - klass->a52_cpuflags, cpuid_mmx, cpuid_mmxext, cpuid_3dnow); #endif + GST_LOG ("CPU flags: a52=%08x, orc=%08x", klass->a52_cpuflags, cpuflags); + gst_type_mark_as_plugin_api (GST_TYPE_A52DEC_MODE, 0); } @@ -482,7 +481,7 @@ gint channels, i; gboolean need_reneg = FALSE; gint chans; - gint length GST_UNUSED_ASSERT = 0, flags, sample_rate, bit_rate; + gint length = 0, flags, sample_rate, bit_rate; GstMapInfo map; GstFlowReturn result = GST_FLOW_OK; GstBuffer *outbuf; @@ -828,6 +827,10 @@ 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.28.7.tar.xz/ext/a52dec/meson.build -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/ext/a52dec/meson.build
Changed
@@ -29,7 +29,7 @@ a52dec_sources, c_args : ugly_args, include_directories : configinc, - dependencies : gstaudio_dep, a52_dep, + dependencies : gstaudio_dep, orc_dep, a52_dep, install : true, install_dir : plugins_install_dir, )
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/ext/mpeg2dec/gstmpeg2dec.c -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/ext/mpeg2dec/gstmpeg2dec.c
Changed
@@ -129,9 +129,6 @@ (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 */ } @@ -259,11 +256,6 @@ 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); @@ -1180,8 +1172,6 @@ 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.28.7.tar.xz/ext/mpeg2dec/meson.build -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/ext/mpeg2dec/meson.build
Changed
@@ -23,7 +23,6 @@ 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.28.7.tar.xz/gst-plugins-ugly.doap -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/gst-plugins-ugly.doap
Changed
@@ -35,121 +35,71 @@ <release> <Version> - <revision>1.28.7</revision> - <branch>1.28</branch> + <revision>1.26.7</revision> + <branch>1.26</branch> <name></name> - <created>2026-09-07</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.28.7.tar.xz" /> + <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.28.6</revision> - <branch>1.28</branch> + <revision>1.26.6</revision> + <branch>1.26</branch> <name></name> - <created>2026-08-05</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.28.6.tar.xz" /> + <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.28.5</revision> - <branch>1.28</branch> + <revision>1.26.5</revision> + <branch>1.26</branch> <name></name> - <created>2026-07-08</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.28.5.tar.xz" /> + <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" /> </Version> </release> <release> <Version> - <revision>1.28.4</revision> - <branch>1.28</branch> + <revision>1.26.4</revision> + <branch>1.26</branch> <name></name> - <created>2026-06-12</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.28.4.tar.xz" /> + <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" /> </Version> </release> <release> <Version> - <revision>1.28.3</revision> - <branch>1.28</branch> + <revision>1.26.3</revision> + <branch>1.26</branch> <name></name> - <created>2026-05-11</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.28.3.tar.xz" /> + <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" /> </Version> </release> <release> <Version> - <revision>1.28.2</revision> - <branch>1.28</branch> + <revision>1.26.2</revision> + <branch>1.26</branch> <name></name> - <created>2026-04-07</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.28.2.tar.xz" /> + <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" /> </Version> </release> <release> <Version> - <revision>1.28.1</revision> - <branch>1.28</branch> + <revision>1.26.1</revision> + <branch>1.26</branch> <name></name> - <created>2026-02-26</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.28.1.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.28.0</revision> - <branch>main</branch> - <name></name> - <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.27.90</revision> - <branch>main</branch> - <name></name> - <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.27.50</revision> - <branch>main</branch> - <name></name> - <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.27.2</revision> - <branch>main</branch> - <name></name> - <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.27.1</revision> - <branch>main</branch> - <name></name> - <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" /> + <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" /> </Version> </release>
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/gst/asfdemux/asfpacket.c -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/gst/asfdemux/asfpacket.c
Changed
@@ -289,10 +289,6 @@ for (ext = stream->ext_props.payload_extensions; ext->len > 0; ++ext) { ext_len = ext->len; if (ext_len == 0xFFFF) { /* extension length is determined by first two bytes in replicated data */ - if (off + 2 > payload->rep_data_len) { - GST_WARNING ("not enough replicated data for reading extension length"); - return; - } ext_len = GST_READ_UINT16_LE (payload->rep_data + off); off += 2; } @@ -321,7 +317,7 @@ GST_DEBUG ("SYSTEM_CONTENT: interlaced:%d, rff:%d, tff:%d", payload->interlaced, payload->rff, payload->tff); } else { - GST_WARNING ("unexpected SYSTEM_CONTENT extensions len %u", ext_len); + GST_WARNING ("unexpected SYSTEM_CONTE extensions len %u", ext_len); } break; case ASF_PAYLOAD_EXTENSION_SYSTEM_PIXEL_ASPECT_RATIO: @@ -335,17 +331,14 @@ } break; case ASF_PAYLOAD_EXTENSION_TIMING: - /* FIXME: Is this always 48 bytes? */ - if (G_LIKELY (ext_len >= 16)) { - /* dvr-ms timing - this will override packet timestamp */ - guint64 time = GST_READ_UINT64_LE (payload->rep_data + off + 8); - if (time != 0xFFFFFFFFFFFFFFFF) - payload->ts = time * 100; - else - payload->ts = GST_CLOCK_TIME_NONE; - } else { - GST_WARNING ("unexpected TIMING extensions len %u", ext_len); - } + { + /* dvr-ms timing - this will override packet timestamp */ + guint64 time = GST_READ_UINT64_LE (payload->rep_data + off + 8); + if (time != 0xFFFFFFFFFFFFFFFF) + payload->ts = time * 100; + else + payload->ts = GST_CLOCK_TIME_NONE; + } break; default: GST_LOG ("UNKNOWN PAYLOAD EXTENSION!"); @@ -403,15 +396,8 @@ return FALSE; } - /* FIXME: The specification says that this is a uint16 but all our code here - * assumes it's at most 255 bytes */ - if (G_UNLIKELY (payload.rep_data_len > G_MAXUINT8)) { - GST_WARNING_OBJECT (demux, "Too long rep data! rep_data_len=%u", - payload.rep_data_len); - return FALSE; - } - - memcpy (payload.rep_data, *p_data, payload.rep_data_len); + memcpy (payload.rep_data, *p_data, + MIN (sizeof (payload.rep_data), payload.rep_data_len)); *p_data += payload.rep_data_len; *p_size -= payload.rep_data_len;
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/gst/asfdemux/gstasfdemux.c -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/gst/asfdemux/gstasfdemux.c
Changed
@@ -2381,7 +2381,7 @@ } static inline gboolean -gst_asf_demux_skip_bytes (guint64 num_bytes, guint8 ** p_data, guint64 * p_size) +gst_asf_demux_skip_bytes (guint num_bytes, guint8 ** p_data, guint64 * p_size) { if (*p_size < num_bytes) return FALSE; @@ -2616,9 +2616,6 @@ { AsfStream *stream; - /* Checked in the callers */ - g_assert (demux->num_streams < G_N_ELEMENTS (demux->stream)); - gst_pad_use_fixed_caps (src_pad); gst_pad_set_caps (src_pad, caps); @@ -3074,12 +3071,6 @@ case ASF_STREAM_AUDIO:{ asf_stream_audio audio_object; - if (demux->num_streams >= G_N_ELEMENTS (demux->stream)) { - GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL), - ("File has too many streams")); - return NULL; - } - if (!gst_asf_demux_get_stream_audio (&audio_object, &data, &size)) goto not_enough_data; @@ -3158,18 +3149,9 @@ asf_stream_video video_object; guint16 vsize; - if (demux->num_streams >= G_N_ELEMENTS (demux->stream)) { - GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL), - ("File has too many streams")); - return NULL; - } - if (!gst_asf_demux_get_stream_video (&video_object, &data, &size)) goto not_enough_data; - if (video_object.size < 40) - goto not_enough_data; - vsize = video_object.size - 40; /* Byte order gets offset by single byte */ GST_INFO ("object is a video stream with %u bytes of " @@ -3651,9 +3633,8 @@ for (i = 0; i < blockcount; ++i) { GstStructure *s; - guint16 stream_num, data_type, lang_idx G_GNUC_UNUSED; - guint32 ival; - guint64 name_len, data_len; + guint16 stream_num, name_len, data_type, lang_idx G_GNUC_UNUSED; + guint32 data_len, ival; gchar *name_utf8; if (size < (2 + 2 + 2 + 2 + 4)) @@ -3694,8 +3675,6 @@ ival = gst_asf_demux_get_uint32 (&data, &size); /* skip anything else there may be, just in case */ - if (data_len < 4) - goto not_enough_data; gst_asf_demux_skip_bytes (data_len - 4, &data, &size); s = gst_asf_demux_get_metadata_for_stream (demux, stream_num); @@ -4512,9 +4491,6 @@ return GST_FLOW_ERROR; gst_asf_demux_skip_bytes (ASF_OBJECT_HEADER_SIZE, p_data, p_size); - if (obj.size < ASF_OBJECT_HEADER_SIZE) - return GST_FLOW_ERROR; - obj_data_size = obj.size - ASF_OBJECT_HEADER_SIZE; if (*p_size < obj_data_size)
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/gst/asfdemux/gstrtpasfdepay.c -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/gst/asfdemux/gstrtpasfdepay.c
Changed
@@ -245,18 +245,16 @@ } } -/* Update the packet with the required amount of padding. For RTP packets the - * padding is stripped off and here we need to add it back to create valid - * ASF packets again. This requires allocating a packet_size large buffer, - * adding zero padding and rewriting the padding length field with the correct - * value. */ +/* Set the padding field to te correct value as the spec + * says it should be se to 0 in the rtp packets + */ static GstBuffer * gst_rtp_asf_depay_update_padding (GstRtpAsfDepay * depayload, GstBuffer * buf) { GstBuffer *result; GstMapInfo map; guint8 *data; - guint offset = 0; + gint offset = 0; guint8 aux; guint8 seq_type; guint8 pad_type; @@ -270,20 +268,18 @@ padding = depayload->packet_size - plen; GST_LOG_OBJECT (depayload, - "padding buffer size %" G_GSIZE_FORMAT " to packet size %u", plen, + "padding buffer size %" G_GSIZE_FORMAT " to packet size %d", plen, depayload->packet_size); result = gst_buffer_new_and_alloc (depayload->packet_size); - gst_buffer_map (result, &map, GST_MAP_READWRITE); + gst_buffer_map (result, &map, GST_MAP_READ); data = map.data; memset (data + plen, 0, padding); gst_buffer_extract (buf, 0, data, plen); gst_buffer_unref (buf); - if (offset + 1 > depayload->packet_size) - goto malformed; aux = dataoffset++; if (aux & 0x80) { guint8 err_len = 0; @@ -297,8 +293,6 @@ err_len = aux & 0x0F; offset += err_len; - if (offset + 1 > depayload->packet_size) - goto malformed; aux = dataoffset++; } seq_type = (aux >> 1) & 0x3; @@ -313,22 +307,16 @@ switch (pad_type) { /* DWORD */ case 3: - if (offset + 4 > depayload->packet_size) - goto malformed; GST_WRITE_UINT32_LE (&(dataoffset), padding); break; /* WORD */ case 2: - if (offset + 2 > depayload->packet_size) - goto malformed; GST_WRITE_UINT16_LE (&(dataoffset), padding); break; /* BYTE */ case 1: - if (offset + 1 > depayload->packet_size) - goto malformed; dataoffset = (guint8) padding; break; @@ -340,14 +328,6 @@ gst_buffer_unmap (result, &map); return result; - -malformed: - { - GST_WARNING_OBJECT (depayload, "ASF packet too small to contain header"); - gst_buffer_unmap (result, &map); - gst_buffer_unref (result); - return NULL; - } } /* Docs: 'RTSP Protocol PDF' document from http://sdp.ppona.com/ (page 8) */ @@ -364,7 +344,6 @@ guint len_offs; GstClockTime timestamp; GstRTPBuffer rtpbuf = { NULL }; - guint packet_len = 0; depay = GST_RTP_ASF_DEPAY (depayload); @@ -386,14 +365,14 @@ outbufs = gst_buffer_list_new (); do { - hdr_len = 4; + guint packet_len; /* packet header is at least 4 bytes */ - if (payload_len < hdr_len) + if (payload_len < 4) goto too_small; /* 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * |S|L|R|D|I|RES | Length/Offset | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ @@ -419,34 +398,33 @@ D = ((payload0 & 0x10) != 0); I = ((payload0 & 0x08) != 0); + hdr_len = 4; + len_offs = (payload1 << 16) | (payload2 << 8) | payload3; if (R) { - hdr_len += 4; - if (payload_len < hdr_len) - goto too_small; GST_DEBUG ("Relative timestamp field present : %u", - GST_READ_UINT32_BE (payload + hdr_len - 4)); + GST_READ_UINT32_BE (payload + hdr_len)); + hdr_len += 4; } if (D) { - hdr_len += 4; - if (payload_len < hdr_len) - goto too_small; GST_DEBUG ("Duration field present : %u", - GST_READ_UINT32_BE (payload + hdr_len - 4)); + GST_READ_UINT32_BE (payload + hdr_len)); + hdr_len += 4; } if (I) { - hdr_len += 4; - if (payload_len < hdr_len) - goto too_small; GST_DEBUG ("LocationId field present : %u", - GST_READ_UINT32_BE (payload + hdr_len - 4)); + GST_READ_UINT32_BE (payload + hdr_len)); + hdr_len += 4; } GST_LOG_OBJECT (depay, "S %d, L %d, R %d, D %d, I %d", S, L, R, D, I); - GST_LOG_OBJECT (depay, "payload_len:%u, hdr_len:%u, len_offs:%u", + GST_LOG_OBJECT (depay, "payload_len:%d, hdr_len:%d, len_offs:%d", payload_len, hdr_len, len_offs); + if (payload_len < hdr_len) + goto too_small; + /* skip headers */ payload_len -= hdr_len; payload += hdr_len; @@ -464,9 +442,6 @@ if (packet_len > payload_len) packet_len = payload_len; - if (packet_len > depay->packet_size) - goto too_big; - GST_LOG_OBJECT (depay, "packet len %u, payload len %u, packet_size:%u", packet_len, payload_len, depay->packet_size); @@ -485,12 +460,6 @@ gst_adapter_push (depay->adapter, sub); /* RTP marker bit M is set if this is last fragment */ if (gst_rtp_buffer_get_marker (&rtpbuf)) { - if (available + packet_len > depay->packet_size) { - /* Update packet_len for the debug log further below */ - packet_len = available + packet_len; - gst_adapter_clear (depay->adapter); - goto too_big; - } GST_LOG_OBJECT (depay, "last fragment, assembling packet"); outbuf = gst_adapter_take_buffer (depay->adapter, available + packet_len); @@ -512,17 +481,11 @@ /* If we haven't completed a full ASF packet, return but first push what we have so far */ if (!outbuf) { - gst_rtp_buffer_unmap (&rtpbuf); gst_rtp_base_depayload_push_list (depayload, outbufs); return NULL; } outbuf = gst_rtp_asf_depay_update_padding (depay, outbuf); - if (!outbuf) { - gst_rtp_buffer_unmap (&rtpbuf); - gst_rtp_base_depayload_push_list (depayload, outbufs); - return NULL; - } if (!S) GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT); @@ -556,21 +519,8 @@ too_small: { gst_rtp_buffer_unmap (&rtpbuf); - GST_WARNING_OBJECT (depayload, "Payload too small, expected at least %u " - "bytes for header, but got only %u bytes", hdr_len, payload_len); - if (gst_buffer_list_length (outbufs) == 0) { - gst_rtp_base_depayload_dropped (depayload); - gst_buffer_list_unref (outbufs); - } else { - gst_rtp_base_depayload_push_list (depayload, outbufs); - } - return NULL; - } -too_big: - { - gst_rtp_buffer_unmap (&rtpbuf); - GST_WARNING_OBJECT (depayload, "Payload too big, expected at most %u " - "bytes, but got %u bytes", depay->packet_size, packet_len); + GST_WARNING_OBJECT (depayload, "Payload too small, expected at least 4 " + "bytes for header, but got only %d bytes", payload_len); if (gst_buffer_list_length (outbufs) == 0) { gst_rtp_base_depayload_dropped (depayload); gst_buffer_list_unref (outbufs);
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/gst/dvdsub/gstdvdsubdec.c -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/gst/dvdsub/gstdvdsubdec.c
Changed
@@ -342,8 +342,6 @@ GST_WARNING_OBJECT (dec, "SPU_WIPE not yet implemented"); length = (buf1 << 8) | (buf2); - - PARSE_BYTES_NEEDED (1 + length); buf += 1 + length; dec->buf_dirty = TRUE; @@ -503,9 +501,8 @@ target = state->target; - /* If left/right is still outside the frame, clip it off */ - x = CLAMP (dec->left, 0, dec->in_width - 1); - right = MIN (dec->right + 1, dec->in_width); + x = dec->left; + right = dec->right + 1; while (x < right) { gboolean in_hl; @@ -639,15 +636,13 @@ hl_top = -1; hl_bottom = -1; } + last_y = MIN (dec->bottom, dec->in_height); - /* If top/bottom is still outside the frame, clip it off */ - last_y = MIN (dec->bottom, dec->in_height - 1); - y = CLAMP (dec->top, 0, dec->in_height - 1); - + y = dec->top; state.target = Y_data + 4 * dec->left + (y * Y_stride); /* Now draw scanlines until we hit last_y or end of RLE data */ - for (; ((state.offsetstate.id < dec->data_size + 2) && (y <= last_y)); y++) { + for (; ((state.offset1 < dec->data_size + 2) && (y <= last_y)); y++) { /* Set up to draw the highlight if we're in the right scanlines */ if (y > hl_bottom || y < hl_top) { state.hl_left = -1;
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/gst/realmedia/rademux.c -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/gst/realmedia/rademux.c
Changed
@@ -342,30 +342,6 @@ return GST_FLOW_OK; } - /* Check if enough data is available to parse the header */ - switch (demux->ra_version) { - case 3: - /* Nothing is parsed */ - break; - case 4: - if (avail < demux->data_offset - 6 + 63) { - GST_DEBUG_OBJECT (demux, "Need %u bytes, but only %u available now", - demux->data_offset - 6 + 63, avail); - return GST_FLOW_OK; - } - break; - case 5: -#if 0 - /* Unsupported for now */ - if (avail < demux->data_offset - 6 + 64) { - GST_DEBUG_OBJECT (demux, "Need %u bytes, but only %u available now", - demux->data_offset - 6 + 64, avail); - return GST_FLOW_OK; - } -#endif - break; - } - data = gst_adapter_map (demux->adapter, demux->data_offset - 6); g_assert (data); @@ -390,9 +366,6 @@ demux->sample_width = GST_READ_UINT16_BE (data + 46); demux->channels = GST_READ_UINT16_BE (data + 48); demux->fourcc = GST_READ_UINT32_LE (data + 56); - // FIXME: This is broken. We need to make sure that the whole packet - // is available to be sure we can actually read all tags. This now - // randomly cuts off the tags depending on input buffer chunking. demux->pending_tags = gst_rm_utils_read_tags (data + 63, demux->data_offset - 63, gst_rm_utils_read_string8); if (demux->pending_tags)
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/gst/realmedia/rmdemux.c -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/gst/realmedia/rmdemux.c
Changed
@@ -74,9 +74,8 @@ guint16 leaf_size; /* subpacket_size */ guint32 packet_size; /* coded_frame_size */ guint16 version; - gsize extra_data_size; /* codec_data_length */ + guint32 extra_data_size; /* codec_data_length */ guint8 *extra_data; /* extras */ - gsize extra_data_offset; /* offset into extra_data */ guint32 bitrate; gboolean needs_descrambling; @@ -151,22 +150,22 @@ static gboolean gst_rmdemux_perform_seek (GstRMDemux * rmdemux, GstEvent * event); -static gboolean gst_rmdemux_parse__rmf (GstRMDemux * rmdemux, - const guint8 * data, gsize length); -static gboolean gst_rmdemux_parse_prop (GstRMDemux * rmdemux, - const guint8 * data, gsize length); -static gboolean gst_rmdemux_parse_mdpr (GstRMDemux * rmdemux, - const guint8 * data, gsize length); -static gboolean gst_rmdemux_parse_indx (GstRMDemux * rmdemux, - const guint8 * data, gsize length, gsize * index_length); -static gboolean gst_rmdemux_parse_data (GstRMDemux * rmdemux, - const guint8 * data, gsize length); -static gboolean gst_rmdemux_parse_cont (GstRMDemux * rmdemux, - const guint8 * data, gsize length); +static void gst_rmdemux_parse__rmf (GstRMDemux * rmdemux, const guint8 * data, + int length); +static void gst_rmdemux_parse_prop (GstRMDemux * rmdemux, const guint8 * data, + int length); +static void gst_rmdemux_parse_mdpr (GstRMDemux * rmdemux, + const guint8 * data, int length); +static guint gst_rmdemux_parse_indx (GstRMDemux * rmdemux, const guint8 * data, + int length); +static void gst_rmdemux_parse_data (GstRMDemux * rmdemux, const guint8 * data, + int length); +static void gst_rmdemux_parse_cont (GstRMDemux * rmdemux, const guint8 * data, + int length); static GstFlowReturn gst_rmdemux_parse_packet (GstRMDemux * rmdemux, GstBuffer * in, guint16 version); -static gboolean gst_rmdemux_parse_indx_data (GstRMDemux * rmdemux, - const guint8 * data, gsize length); +static void gst_rmdemux_parse_indx_data (GstRMDemux * rmdemux, + const guint8 * data, int length); static void gst_rmdemux_stream_clear_cached_subpackets (GstRMDemux * rmdemux, GstRMDemuxStream * stream); static GstRMDemuxStream *gst_rmdemux_get_stream_by_id (GstRMDemux * rmdemux, @@ -374,11 +373,6 @@ rmdemux->offset); return FALSE; } - if (gst_buffer_get_size (buffer) < 4) { - gst_buffer_unref (buffer); - GST_DEBUG_OBJECT (rmdemux, "Short read at offset %d", rmdemux->offset); - return FALSE; - } /* TODO: Can we also be seeking to a 'DATA' chunk header? Check this. * Also, for the case we currently handle, can we check any more? It's pretty * sucky to not be validating a little more heavily than this... */ @@ -733,7 +727,6 @@ if (stream->subpackets) g_ptr_array_free (stream->subpackets, TRUE); g_free (stream->index); - g_free (stream->extra_data); g_free (stream); } @@ -1067,22 +1060,13 @@ switch (rmdemux->state) { case RMDEMUX_STATE_HEADER: { - guint32 size; if (gst_adapter_available (rmdemux->adapter) < HEADER_SIZE) goto unlock; data = gst_adapter_map (rmdemux->adapter, HEADER_SIZE); rmdemux->object_id = RMDEMUX_FOURCC_GET (data + 0); - size = RMDEMUX_GUINT32_GET (data + 4); - if (size < HEADER_SIZE) { - GST_WARNING_OBJECT (rmdemux, "Bogus looking header, too small size"); - gst_adapter_unmap (rmdemux->adapter); - gst_adapter_flush (rmdemux->adapter, 4); - - break; - } - rmdemux->size = size - HEADER_SIZE; + rmdemux->size = RMDEMUX_GUINT32_GET (data + 4) - HEADER_SIZE; rmdemux->object_version = RMDEMUX_GUINT16_GET (data + 8); /* Sanity-check. We assume that the FOURCC is printable ASCII */ @@ -1101,7 +1085,7 @@ GST_LOG_OBJECT (rmdemux, "header found with object_id=%" GST_FOURCC_FORMAT - " size=%08" G_GSIZE_FORMAT " object_version=%d", + " size=%08x object_version=%d", GST_FOURCC_ARGS (rmdemux->object_id), rmdemux->size, rmdemux->object_version); @@ -1152,8 +1136,7 @@ if ((rmdemux->object_version == 0) || (rmdemux->object_version == 1)) { data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - if (!gst_rmdemux_parse__rmf (rmdemux, data, rmdemux->size)) - GST_WARNING_OBJECT (rmdemux, "Failed parsing _rmf"); + gst_rmdemux_parse__rmf (rmdemux, data, rmdemux->size); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); } else { @@ -1168,8 +1151,7 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - if (!gst_rmdemux_parse_prop (rmdemux, data, rmdemux->size)) - GST_WARNING_OBJECT (rmdemux, "Failed parsing prop"); + gst_rmdemux_parse_prop (rmdemux, data, rmdemux->size); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); @@ -1182,8 +1164,7 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - if (!gst_rmdemux_parse_mdpr (rmdemux, data, rmdemux->size)) - GST_WARNING_OBJECT (rmdemux, "Failed parsing mdpr"); + gst_rmdemux_parse_mdpr (rmdemux, data, rmdemux->size); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); @@ -1196,8 +1177,7 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - if (!gst_rmdemux_parse_cont (rmdemux, data, rmdemux->size)) - GST_WARNING_OBJECT (rmdemux, "Failed parsing cont"); + gst_rmdemux_parse_cont (rmdemux, data, rmdemux->size); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); @@ -1206,8 +1186,6 @@ } case RMDEMUX_STATE_HEADER_DATA: { - gsize orig_size; - /* If we haven't already done so then signal there are no more pads */ if (!rmdemux->have_pads) { GST_LOG_OBJECT (rmdemux, "no more pads"); @@ -1216,7 +1194,6 @@ } /* The actual header is only 8 bytes */ - orig_size = rmdemux->size; rmdemux->size = DATA_SIZE; GST_LOG_OBJECT (rmdemux, "data available %" G_GSIZE_FORMAT, gst_adapter_available (rmdemux->adapter)); @@ -1224,14 +1201,7 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - if (!gst_rmdemux_parse_data (rmdemux, data, rmdemux->size)) { - GST_WARNING_OBJECT (rmdemux, "Failed parsing header data"); - gst_adapter_unmap (rmdemux->adapter); - /* skip over whole packet size */ - gst_adapter_flush (rmdemux->adapter, orig_size); - rmdemux->state = RMDEMUX_STATE_HEADER; - break; - } + gst_rmdemux_parse_data (rmdemux, data, rmdemux->size); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); @@ -1244,15 +1214,7 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - if (!gst_rmdemux_parse_indx (rmdemux, data, rmdemux->size, - &rmdemux->size)) { - GST_WARNING_OBJECT (rmdemux, "Failed parsing header indx"); - gst_adapter_unmap (rmdemux->adapter); - /* skip over whole packet size */ - gst_adapter_flush (rmdemux->adapter, rmdemux->size); - rmdemux->state = RMDEMUX_STATE_HEADER; - break; - } + rmdemux->size = gst_rmdemux_parse_indx (rmdemux, data, rmdemux->size); /* Only flush the header */ gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, HEADER_SIZE); @@ -1268,8 +1230,7 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - if (!gst_rmdemux_parse_indx_data (rmdemux, data, rmdemux->size)) - GST_WARNING_OBJECT (rmdemux, "Failed parsing indx data"); + gst_rmdemux_parse_indx_data (rmdemux, data, rmdemux->size); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); } @@ -1489,7 +1450,8 @@ (int) 4, "framed", G_TYPE_BOOLEAN, TRUE, NULL); if (stream->extra_data_size > 0) { /* strip off an unknown byte in the extra data */ - stream->extra_data_offset++; + stream->extra_data_size--; + stream->extra_data++; } stream->needs_descrambling = TRUE; stream->subpackets_needed = 1; @@ -1582,21 +1544,15 @@ if (stream->pad && stream_caps) { GstEvent *event; - GST_LOG_OBJECT (rmdemux, - "%" G_GSIZE_FORMAT " bytes of extra data for stream %s", - stream->extra_data_size - stream->extra_data_offset, - GST_PAD_NAME (stream->pad)); + GST_LOG_OBJECT (rmdemux, "%d bytes of extra data for stream %s", + stream->extra_data_size, GST_PAD_NAME (stream->pad)); /* add codec_data if there is any */ - if (stream->extra_data_size - stream->extra_data_offset > 0) { + if (stream->extra_data_size > 0) { GstBuffer *buffer; - buffer = - gst_buffer_new_and_alloc (stream->extra_data_size - - stream->extra_data_offset); - gst_buffer_fill (buffer, 0, - stream->extra_data + stream->extra_data_offset, - stream->extra_data_size - stream->extra_data_offset); + buffer = gst_buffer_new_and_alloc (stream->extra_data_size); + gst_buffer_fill (buffer, 0, stream->extra_data, stream->extra_data_size); gst_caps_set_simple (stream_caps, "codec_data", GST_TYPE_BUFFER, buffer, NULL); @@ -1661,34 +1617,26 @@ gst_caps_unref (stream_caps); } -static gsize +static int re_skip_pascal_string (const guint8 * ptr) { - gsize length; + int length; length = ptr0; return length + 1; } -static gboolean -gst_rmdemux_parse__rmf (GstRMDemux * rmdemux, const guint8 * data, gsize length) +static void +gst_rmdemux_parse__rmf (GstRMDemux * rmdemux, const guint8 * data, int length) { - if (length < 8) - return FALSE; - GST_LOG_OBJECT (rmdemux, "file_version: %d", RMDEMUX_GUINT32_GET (data)); GST_LOG_OBJECT (rmdemux, "num_headers: %d", RMDEMUX_GUINT32_GET (data + 4)); - - return TRUE; } -static gboolean -gst_rmdemux_parse_prop (GstRMDemux * rmdemux, const guint8 * data, gsize length) +static void +gst_rmdemux_parse_prop (GstRMDemux * rmdemux, const guint8 * data, int length) { - if (length < 40) - return FALSE; - GST_LOG_OBJECT (rmdemux, "max bitrate: %d", RMDEMUX_GUINT32_GET (data)); GST_LOG_OBJECT (rmdemux, "avg bitrate: %d", RMDEMUX_GUINT32_GET (data + 4)); GST_LOG_OBJECT (rmdemux, "max packet size: %d", @@ -1710,24 +1658,20 @@ rmdemux->data_offset); GST_LOG_OBJECT (rmdemux, "n streams: %d", RMDEMUX_GUINT16_GET (data + 36)); GST_LOG_OBJECT (rmdemux, "flags: 0x%04x", RMDEMUX_GUINT16_GET (data + 38)); - - return TRUE; } -static gboolean -gst_rmdemux_parse_mdpr (GstRMDemux * rmdemux, const guint8 * data, gsize length) +static void +gst_rmdemux_parse_mdpr (GstRMDemux * rmdemux, const guint8 * data, int length) { GstRMDemuxStream *stream; char *stream1_type_string; char *stream2_type_string; - gsize str_len = 0; + guint str_len = 0; int stream_type; + int offset; guint32 max_bitrate; guint32 avg_bitrate; - if (length < 10) - return FALSE; - stream = g_new0 (GstRMDemuxStream, 1); stream->id = RMDEMUX_GUINT16_GET (data); @@ -1758,18 +1702,13 @@ GST_TAG_BITRATE, avg_bitrate, NULL); } - if (length < 30) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - data += 30; - length -= 30; - stream1_type_string = gst_rm_utils_read_string8 (data, length, &str_len); - data += str_len; - length -= str_len; - stream2_type_string = gst_rm_utils_read_string8 (data, length, &str_len); - data += str_len; - length -= str_len; + offset = 30; + stream1_type_string = gst_rm_utils_read_string8 (data + offset, + length - offset, &str_len); + offset += str_len; + stream2_type_string = gst_rm_utils_read_string8 (data + offset, + length - offset, &str_len); + offset += str_len; /* stream1_type_string for audio and video stream is a "put_whatever_you_want" field : * observed values : @@ -1779,13 +1718,6 @@ * so, we should not rely on it to know which stream type it is */ - if (!stream1_type_string || !stream2_type_string) { - g_free (stream1_type_string); - g_free (stream2_type_string); - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - GST_LOG_OBJECT (rmdemux, "stream type: %s", stream1_type_string); GST_LOG_OBJECT (rmdemux, "MIME type=%s", stream2_type_string); @@ -1816,36 +1748,27 @@ g_free (stream1_type_string); g_free (stream2_type_string); - if (length < 4) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - data += 4; - length -= 4; + offset += 4; stream->subtype = stream_type; switch (stream_type) { case GST_RMDEMUX_STREAM_VIDEO: - if (length < 34) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } /* RV10/RV20/RV30/RV40 => video/x-pn-realvideo, version=1,2,3,4 */ - stream->fourcc = RMDEMUX_FOURCC_GET (data + 8); - stream->width = RMDEMUX_GUINT16_GET (data + 12); - stream->height = RMDEMUX_GUINT16_GET (data + 14); - stream->rate = RMDEMUX_GUINT16_GET (data + 16); - stream->subformat = RMDEMUX_GUINT32_GET (data + 26); - stream->format = RMDEMUX_GUINT32_GET (data + 30); - stream->extra_data_size = length - 26; - stream->extra_data = g_memdup2 (data + 26, length - 26); + stream->fourcc = RMDEMUX_FOURCC_GET (data + offset + 8); + stream->width = RMDEMUX_GUINT16_GET (data + offset + 12); + stream->height = RMDEMUX_GUINT16_GET (data + offset + 14); + stream->rate = RMDEMUX_GUINT16_GET (data + offset + 16); + stream->subformat = RMDEMUX_GUINT32_GET (data + offset + 26); + stream->format = RMDEMUX_GUINT32_GET (data + offset + 30); + stream->extra_data_size = length - (offset + 26); + stream->extra_data = (guint8 *) data + offset + 26; /* Natural way to represent framerates here requires unsigned 32 bit * numerator, which we don't have. For the nasty case, approximate... */ { - guint32 numerator = RMDEMUX_GUINT16_GET (data + 22) * 65536 + - RMDEMUX_GUINT16_GET (data + 24); + guint32 numerator = RMDEMUX_GUINT16_GET (data + offset + 22) * 65536 + + RMDEMUX_GUINT16_GET (data + offset + 24); if (numerator > G_MAXINT) { stream->framerate_numerator = (gint) (numerator >> 1); stream->framerate_denominator = 32768; @@ -1857,18 +1780,14 @@ GST_DEBUG_OBJECT (rmdemux, "Video stream with fourcc=%" GST_FOURCC_FORMAT - " width=%d height=%d rate=%d framerate=%d/%d subformat=%x format=%x extra_data_size=%" - G_GSIZE_FORMAT, GST_FOURCC_ARGS (stream->fourcc), stream->width, - stream->height, stream->rate, stream->framerate_numerator, + " width=%d height=%d rate=%d framerate=%d/%d subformat=%x format=%x extra_data_size=%d", + GST_FOURCC_ARGS (stream->fourcc), stream->width, stream->height, + stream->rate, stream->framerate_numerator, stream->framerate_denominator, stream->subformat, stream->format, stream->extra_data_size); break; case GST_RMDEMUX_STREAM_AUDIO:{ - if (length < 6) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - stream->version = RMDEMUX_GUINT16_GET (data + 4); + stream->version = RMDEMUX_GUINT16_GET (data + offset + 4); GST_INFO ("stream version = %u", stream->version); switch (stream->version) { case 3: @@ -1882,50 +1801,40 @@ stream->height = 0; break; case 4: - if (length < 73) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - stream->flavor = RMDEMUX_GUINT16_GET (data + 22); - stream->packet_size = RMDEMUX_GUINT32_GET (data + 24); - /* stream->frame_size = RMDEMUX_GUINT32_GET (data + 42); */ - stream->leaf_size = RMDEMUX_GUINT16_GET (data + 44); - stream->height = RMDEMUX_GUINT16_GET (data + 40); - stream->rate = RMDEMUX_GUINT16_GET (data + 48); - stream->sample_width = RMDEMUX_GUINT16_GET (data + 52); - stream->n_channels = RMDEMUX_GUINT16_GET (data + 54); - stream->fourcc = RMDEMUX_FOURCC_GET (data + 62); - stream->extra_data_size = RMDEMUX_GUINT32_GET (data + 69); - GST_DEBUG_OBJECT (rmdemux, - "%" G_GSIZE_FORMAT " bytes of extra codec data", + stream->flavor = RMDEMUX_GUINT16_GET (data + offset + 22); + stream->packet_size = RMDEMUX_GUINT32_GET (data + offset + 24); + /* stream->frame_size = RMDEMUX_GUINT32_GET (data + offset + 42); */ + stream->leaf_size = RMDEMUX_GUINT16_GET (data + offset + 44); + stream->height = RMDEMUX_GUINT16_GET (data + offset + 40); + stream->rate = RMDEMUX_GUINT16_GET (data + offset + 48); + stream->sample_width = RMDEMUX_GUINT16_GET (data + offset + 52); + stream->n_channels = RMDEMUX_GUINT16_GET (data + offset + 54); + stream->fourcc = RMDEMUX_FOURCC_GET (data + offset + 62); + stream->extra_data_size = RMDEMUX_GUINT32_GET (data + offset + 69); + GST_DEBUG_OBJECT (rmdemux, "%u bytes of extra codec data", stream->extra_data_size); - if (length - 73 >= stream->extra_data_size) { - stream->extra_data = g_memdup2 (data + 73, stream->extra_data_size); + if (length - (offset + 73) >= stream->extra_data_size) { + stream->extra_data = (guint8 *) data + offset + 73; } else { GST_WARNING_OBJECT (rmdemux, "codec data runs beyond MDPR chunk"); stream->extra_data_size = 0; } break; case 5: - if (length < 78) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - stream->flavor = RMDEMUX_GUINT16_GET (data + 22); - stream->packet_size = RMDEMUX_GUINT32_GET (data + 24); - /* stream->frame_size = RMDEMUX_GUINT32_GET (data + 42); */ - stream->leaf_size = RMDEMUX_GUINT16_GET (data + 44); - stream->height = RMDEMUX_GUINT16_GET (data + 40); - stream->rate = RMDEMUX_GUINT16_GET (data + 54); - stream->sample_width = RMDEMUX_GUINT16_GET (data + 58); - stream->n_channels = RMDEMUX_GUINT16_GET (data + 60); - stream->fourcc = RMDEMUX_FOURCC_GET (data + 66); - stream->extra_data_size = RMDEMUX_GUINT32_GET (data + 74); - GST_DEBUG_OBJECT (rmdemux, - "%" G_GSIZE_FORMAT " bytes of extra codec data", + stream->flavor = RMDEMUX_GUINT16_GET (data + offset + 22); + stream->packet_size = RMDEMUX_GUINT32_GET (data + offset + 24); + /* stream->frame_size = RMDEMUX_GUINT32_GET (data + offset + 42); */ + stream->leaf_size = RMDEMUX_GUINT16_GET (data + offset + 44); + stream->height = RMDEMUX_GUINT16_GET (data + offset + 40); + stream->rate = RMDEMUX_GUINT16_GET (data + offset + 54); + stream->sample_width = RMDEMUX_GUINT16_GET (data + offset + 58); + stream->n_channels = RMDEMUX_GUINT16_GET (data + offset + 60); + stream->fourcc = RMDEMUX_FOURCC_GET (data + offset + 66); + stream->extra_data_size = RMDEMUX_GUINT32_GET (data + offset + 74); + GST_DEBUG_OBJECT (rmdemux, "%u bytes of extra codec data", stream->extra_data_size); - if (length - 78 >= stream->extra_data_size) { - stream->extra_data = g_memdup2 (data + 78, stream->extra_data_size); + if (length - (offset + 78) >= stream->extra_data_size) { + stream->extra_data = (guint8 *) data + offset + 78; } else { GST_WARNING_OBJECT (rmdemux, "codec data runs beyond MDPR chunk"); stream->extra_data_size = 0; @@ -1948,60 +1857,32 @@ { int element_nb; - if (length < 12) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - /* Length of this section */ - GST_DEBUG_OBJECT (rmdemux, "length2: 0x%08x", RMDEMUX_GUINT32_GET (data)); + GST_DEBUG_OBJECT (rmdemux, "length2: 0x%08x", + RMDEMUX_GUINT32_GET (data + offset)); + offset += 4; /* Unknown : 00 00 00 00 */ + offset += 4; /* Number of variables that would follow (loop iterations) */ - element_nb = RMDEMUX_GUINT32_GET (data + 8); - - data += 12; - length -= 12; + element_nb = RMDEMUX_GUINT32_GET (data + offset); + offset += 4; while (element_nb) { - gsize str_len; - /* Category Id : 00 00 00 XX 00 00 */ - if (length < 6 + 1) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - data += 6; - length -= 6; + offset += 6; /* Variable Name */ - str_len = re_skip_pascal_string (data); - if (length < str_len) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - data += str_len; - length -= str_len; + offset += re_skip_pascal_string (data + offset); /* Variable Value Type */ /* 00 00 00 00 00 => integer/boolean, preceded by length */ /* 00 00 00 02 00 => pascal string, preceded by length, no trailing \0 */ - if (length < 5 + 1) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - data += 5; - length -= 5; + offset += 5; /* Variable Value */ - str_len = re_skip_pascal_string (data); - if (length < str_len) { - gst_rmdemux_free_stream (rmdemux, stream); - return FALSE; - } - data += str_len; - length -= str_len; + offset += re_skip_pascal_string (data + offset); element_nb--; } @@ -2013,41 +1894,31 @@ } gst_rmdemux_add_stream (rmdemux, stream); - - return TRUE; } -static gboolean -gst_rmdemux_parse_indx (GstRMDemux * rmdemux, const guint8 * data, gsize length, - gsize * index_length) +static guint +gst_rmdemux_parse_indx (GstRMDemux * rmdemux, const guint8 * data, int length) { int n; int id; - if (length < 10) - return FALSE; - n = RMDEMUX_GUINT32_GET (data); id = RMDEMUX_GUINT16_GET (data + 4); rmdemux->index_offset = RMDEMUX_GUINT32_GET (data + 6); - GST_DEBUG_OBJECT (rmdemux, - "Number of indices=%d Stream ID=%d length=%" G_GSIZE_FORMAT, n, id, - length); + GST_DEBUG_OBJECT (rmdemux, "Number of indices=%d Stream ID=%d length=%d", n, + id, length); /* Point to the next index_stream */ rmdemux->index_stream = gst_rmdemux_get_stream_by_id (rmdemux, id); /* Return the length of the index */ - if (!g_size_checked_mul (index_length, 14, n)) - return FALSE; - - return TRUE; + return 14 * n; } -static gboolean +static void gst_rmdemux_parse_indx_data (GstRMDemux * rmdemux, const guint8 * data, - gsize length) + int length) { int i; int n; @@ -2057,16 +1928,16 @@ n = length / 14; if (rmdemux->index_stream == NULL) - return TRUE; + return; /* don't parse the index a second time when operating pull-based and * reaching the end of the file */ if (rmdemux->index_stream->index_length > 0) { GST_DEBUG_OBJECT (rmdemux, "Already have an index for this stream"); - return TRUE; + return; } - index = g_new (GstRMDemuxIndex, n); + index = g_malloc (sizeof (GstRMDemuxIndex) * n); rmdemux->index_stream->index = index; rmdemux->index_stream->index_length = n; @@ -2079,27 +1950,20 @@ indexi.offset); data += 14; } - - return TRUE; } -static gboolean -gst_rmdemux_parse_data (GstRMDemux * rmdemux, const guint8 * data, gsize length) +static void +gst_rmdemux_parse_data (GstRMDemux * rmdemux, const guint8 * data, int length) { - if (length < 8) - return FALSE; - rmdemux->n_chunks = RMDEMUX_GUINT32_GET (data); rmdemux->data_offset = RMDEMUX_GUINT32_GET (data + 4); rmdemux->chunk_index = 0; GST_DEBUG_OBJECT (rmdemux, "Data chunk found with %d packets " "(next data at 0x%08x)", rmdemux->n_chunks, rmdemux->data_offset); - - return TRUE; } -static gboolean -gst_rmdemux_parse_cont (GstRMDemux * rmdemux, const guint8 * data, gsize length) +static void +gst_rmdemux_parse_cont (GstRMDemux * rmdemux, const guint8 * data, int length) { GstTagList *tags; @@ -2119,8 +1983,6 @@ gst_tag_list_set_scope (rmdemux->pending_tags, GST_TAG_SCOPE_GLOBAL); } - - return TRUE; } static void @@ -2154,15 +2016,8 @@ packet_size, leaf_size, height); if (!g_uint_checked_mul (&size, height, packet_size)) { - GST_WARNING_OBJECT (rmdemux, "overflowing audio packet size"); - gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); - return GST_FLOW_OK; - } - - if (stream->leaf_size == 0) { - GST_WARNING_OBJECT (rmdemux, "invalid audio leaf packet size"); - gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); - return GST_FLOW_OK; + GST_ERROR_OBJECT (rmdemux, "overflowing audio packet size"); + return GST_FLOW_ERROR; } outbuf = gst_buffer_new_and_alloc (size); @@ -2172,14 +2027,6 @@ GstBuffer *b = g_ptr_array_index (stream->subpackets, p); GstMapInfo map; - if (gst_buffer_get_size (b) < packet_size) { - GST_ERROR_OBJECT (rmdemux, "too small audio subpacket"); - gst_buffer_unmap (outbuf, &outmap); - gst_buffer_unref (outbuf); - gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); - return GST_FLOW_OK; - } - gst_buffer_map (b, &map, GST_MAP_READ); if (p == 0) { @@ -2267,32 +2114,12 @@ gst_buffer_map (buf, &map, GST_MAP_READ); timestamp = GST_BUFFER_PTS (buf); - if (map.size < 2) { - GST_WARNING_OBJECT (rmdemux, "Too small mp4a buffer"); - gst_buffer_unmap (buf, &map); - gst_buffer_unref (buf); - return GST_FLOW_OK; - } frames = (map.data1 & 0xf0) >> 4; index = 2 * frames + 2; - if (map.size < 2 * frames + 2) { - GST_WARNING_OBJECT (rmdemux, "Too small mp4a buffer"); - gst_buffer_unmap (buf, &map); - gst_buffer_unref (buf); - return GST_FLOW_OK; - } - for (i = 0; i < frames; i++) { guint len = (map.datai * 2 + 2 << 8) | map.datai * 2 + 3; - if (map.size < index + len) { - GST_WARNING_OBJECT (rmdemux, "Too small mp4a buffer"); - gst_buffer_unmap (buf, &map); - gst_buffer_unref (buf); - return GST_FLOW_OK; - } - outbuf = gst_buffer_copy_region (buf, GST_BUFFER_COPY_ALL, index, len); if (i == 0) { GST_BUFFER_PTS (outbuf) = timestamp; @@ -2332,9 +2159,8 @@ packet_size, stream->leaf_size, height); if (!g_uint_checked_mul (&size, height, packet_size)) { - GST_WARNING_OBJECT (rmdemux, "overflowing SIPR audio packet size"); - gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); - return GST_FLOW_OK; + GST_ERROR_OBJECT (rmdemux, "overflowing SIPR audio packet size"); + return GST_FLOW_ERROR; } outbuf = gst_buffer_new_and_alloc (size); @@ -2348,15 +2174,13 @@ GST_BUFFER_PTS (outbuf) = GST_BUFFER_PTS (b); } - if (gst_buffer_get_size (b) < packet_size) { - GST_ERROR_OBJECT (rmdemux, "too small sipr audio subpacket"); + if (gst_buffer_extract (b, 0, outmap.data + packet_size * p, + packet_size) != packet_size) { + GST_ERROR_OBJECT (rmdemux, "not enough SIPR audio data available"); gst_buffer_unmap (outbuf, &outmap); gst_buffer_unref (outbuf); - gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); - return GST_FLOW_OK; + return GST_FLOW_ERROR; } - - gst_buffer_extract (b, 0, outmap.data + packet_size * p, packet_size); } gst_buffer_unmap (outbuf, &outmap); @@ -2370,12 +2194,8 @@ } outbuf = gst_rm_utils_descramble_sipr_buffer (outbuf); - if (outbuf) { - ret = gst_pad_push (stream->pad, outbuf); - } else { - GST_WARNING_OBJECT (rmdemux, "failed to descramble buffer"); - ret = GST_FLOW_OK; - } + + ret = gst_pad_push (stream->pad, outbuf); gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); @@ -2528,8 +2348,7 @@ } GST_DEBUG_OBJECT (rmdemux, "fragment size %d", fragment_size); - if (fragment_size > map.size - || (data - map.data) > map.size - fragment_size) + if (map.size < (data - map.data) + fragment_size) goto not_enough_data; /* get the fragment */ @@ -2550,17 +2369,15 @@ stream->frag_length = fragment_size; } - if (stream->frag_count >= MAX_FRAGS) { - gst_buffer_unref (fragment); - goto too_many_fragments; - } - /* put fragment in adapter */ gst_adapter_push (stream->adapter, fragment); stream->frag_offsetstream->frag_count = stream->frag_current; stream->frag_current += fragment_size; stream->frag_count++; + if (stream->frag_count > MAX_FRAGS) + goto too_many_fragments; + GST_DEBUG_OBJECT (rmdemux, "stored fragment in adapter %d/%d", stream->frag_current, stream->frag_length); @@ -2748,7 +2565,7 @@ data = map.data; size = map.size; - if (size < 2 + 4 + 2) + if (size < 4 + 6 + 1 + 2) goto not_enough_data; /* stream number */ @@ -2788,6 +2605,7 @@ if (version == 1) { if (size < 1) goto not_enough_data; + data += 1; size -= 1; }
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/gst/realmedia/rmdemux.h -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/gst/realmedia/rmdemux.h
Changed
@@ -128,7 +128,7 @@ int chunk_index; guint32 object_id; - gsize size; + guint32 size; guint16 object_version; /* container tags for all streams */
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/gst/realmedia/rmutils.c -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/gst/realmedia/rmutils.c
Changed
@@ -25,10 +25,10 @@ #include "rmutils.h" gchar * -gst_rm_utils_read_string8 (const guint8 * data, gsize datalen, - gsize * p_total_len) +gst_rm_utils_read_string8 (const guint8 * data, guint datalen, + guint * p_total_len) { - gsize length; + gint length; if (p_total_len) *p_total_len = 0; @@ -47,10 +47,10 @@ } gchar * -gst_rm_utils_read_string16 (const guint8 * data, gsize datalen, - gsize * p_total_len) +gst_rm_utils_read_string16 (const guint8 * data, guint datalen, + guint * p_total_len) { - gsize length; + gint length; if (p_total_len) *p_total_len = 0; @@ -69,7 +69,7 @@ } GstTagList * -gst_rm_utils_read_tags (const guint8 * data, gsize datalen, +gst_rm_utils_read_tags (const guint8 * data, guint datalen, GstRmUtilsStringReadFunc read_string_func) { const gchar *gst_tags = { GST_TAG_TITLE, GST_TAG_ARTIST, @@ -80,13 +80,13 @@ g_assert (read_string_func != NULL); - GST_DEBUG ("File Content : (CONT) len = %" G_GSIZE_FORMAT, datalen); + GST_DEBUG ("File Content : (CONT) len = %d", datalen); tags = gst_tag_list_new_empty (); for (i = 0; i < G_N_ELEMENTS (gst_tags); ++i) { gchar *str = NULL; - gsize total_length = 0; + guint total_length = 0; str = read_string_func (data, datalen, &total_length); data += total_length; @@ -146,7 +146,7 @@ } static void -gst_rm_utils_swap_nibbles (guint8 * data, gsize idx1, gsize idx2, gint len) +gst_rm_utils_swap_nibbles (guint8 * data, gint idx1, gint idx2, gint len) { guint8 *d1, *d2, tmp1 = 0, tmp2, tmp1n, tmp2n; @@ -207,7 +207,7 @@ } } -static const gsize sipr_swap_index382 = { +static const gint sipr_swap_index382 = { {0, 63}, {1, 22}, {2, 44}, {3, 90}, {5, 81}, {7, 31}, {8, 86}, {9, 58}, {10, 36}, {12, 68}, {13, 39}, {14, 73}, @@ -224,23 +224,15 @@ gst_rm_utils_descramble_sipr_buffer (GstBuffer * buf) { GstMapInfo map; - gint n; - gsize size, bs; + gint n, bs; + gsize size; size = gst_buffer_get_size (buf); /* split the packet in 96 blocks of nibbles */ - if (size > G_MAXSIZE / 2) { - gst_buffer_unref (buf); - return NULL; - } bs = size * 2 / 96; if (bs == 0) return buf; - if (bs > G_MAXINT) { - gst_buffer_unref (buf); - return NULL; - } buf = gst_buffer_make_writable (buf); @@ -248,7 +240,7 @@ /* we need to perform 38 swaps on the blocks */ for (n = 0; n < 38; n++) { - gsize idx1, idx2; + gint idx1, idx2; /* get the indexes of the blocks of nibbles that need swapping */ idx1 = bs * sipr_swap_indexn0;
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/gst/realmedia/rmutils.h -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/gst/realmedia/rmutils.h
Changed
@@ -24,18 +24,18 @@ G_BEGIN_DECLS -typedef gchar * (*GstRmUtilsStringReadFunc) (const guint8 * data, gsize datalen, gsize * p_strlen); +typedef gchar * (*GstRmUtilsStringReadFunc) (const guint8 * data, guint datalen, guint * p_strlen); gchar *gst_rm_utils_read_string8 (const guint8 * data, - gsize datalen, - gsize * p_totallen); + guint datalen, + guint * p_totallen); gchar *gst_rm_utils_read_string16 (const guint8 * data, - gsize datalen, - gsize * p_totallen); + guint datalen, + guint * p_totallen); GstTagList *gst_rm_utils_read_tags (const guint8 * data, - gsize datalen, + guint datalen, GstRmUtilsStringReadFunc func); GstBuffer *gst_rm_utils_descramble_dnet_buffer (GstBuffer * buf);
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/meson.build -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/meson.build
Changed
@@ -1,9 +1,8 @@ project('gst-plugins-ugly', 'c', - version : '1.28.7', + version : '1.26.7', meson_version : '>= 1.4', default_options : 'warning_level=1', - 'buildtype=debugoptimized', - 'c_std=gnu11,c11' ) + 'buildtype=debugoptimized' ) gst_version = meson.project_version() version_arr = gst_version.split('.') @@ -198,7 +197,7 @@ cdata.set('DISABLE_ORC', 1) endif -gmodule_dep = dependency('gmodule-no-export-2.0', version: glib_req, default_options: {'sysprof': 'disabled'}) +gmodule_dep = dependency('gmodule-no-export-2.0', version: glib_req) 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)') @@ -353,12 +352,7 @@ configure_file(output : 'config.h', configuration : cdata) -meson.add_dist_script('scripts/gen-changelog.py', meson.project_name(), '1.26.0', meson.project_version()) - -# dist common files from monorepo root -if not meson.is_subproject() - meson.add_dist_script('scripts/dist-common-files.py', meson.project_version()) -endif +meson.add_dist_script('scripts/gen-changelog.py', meson.project_name(), '1.24.0', meson.project_version()) plugin_names = gst_plugins =
View file
_service:download_files:gst-plugins-ugly-1.26.7.tar.xz/meson_options.txt
Added
@@ -0,0 +1,52 @@ +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.28.7.tar.xz/po/LINGUAS -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/po/LINGUAS
Changed
@@ -1,1 +1,1 @@ -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 kk 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 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.7.tar.xz/po/gst-plugins-ugly-1.0.pot -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/po/gst-plugins-ugly-1.0.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.28.7\n" +"Project-Id-Version: gst-plugins-ugly-1.26.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-07 20:11+0100\n" +"POT-Creation-Date: 2025-10-14 18:26+0100\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.28.7.tar.xz/po/gst-plugins-ugly.pot -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/po/gst-plugins-ugly.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.28.7\n" +"Project-Id-Version: gst-plugins-ugly-1.26.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-07 20:11+0100\n" +"POT-Creation-Date: 2025-10-14 18:26+0100\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.28.7.tar.xz/po/hr.po -> _service:download_files:gst-plugins-ugly-1.26.7.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, 2026. +# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2018, 2019, 2021, 2022, 2024. msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.27.90\n" +"Project-Id-Version: gst-plugins-ugly-1.24.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-01-25 17:18+0000\n" -"PO-Revision-Date: 2026-01-07 20:51-0800\n" +"POT-Creation-Date: 2025-02-23 16:56+0000\n" +"PO-Revision-Date: 2024-03-08 10:46-0800\n" "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n" "Language-Team: Croatian <lokalizacija@linux.hr>\n" "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: Vim9.1\n" +"X-Generator: Poedit 3.0\n" msgid "Could not read from CD." msgstr "Nije moguće čitati CD."
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/po/ro.po -> _service:download_files:gst-plugins-ugly-1.26.7.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, 2026. +# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>. 2022 - 2024. # # Cronologia traducerii fișierului „gst-plugins-ugly”: # Traducerea inițială, făcută de LAG, pentru versiunea gst-plugins-ugly 0.10.14.2 @@ -14,15 +14,14 @@ # 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.27.90\n" +"Project-Id-Version: gst-plugins-ugly 1.24.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-01-25 17:18+0000\n" -"PO-Revision-Date: 2026-01-06 19:36+0100\n" +"POT-Creation-Date: 2024-11-03 17:37+0000\n" +"PO-Revision-Date: 2024-03-08 02:09+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" @@ -32,7 +31,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.6\n" +"X-Generator: Poedit 3.2.2\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.28.7.tar.xz/scripts/gen-changelog.py -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/scripts/gen-changelog.py
Changed
@@ -28,6 +28,7 @@ '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.28.7.tar.xz/tests/check/elements/mpeg2dec.c -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/tests/check/elements/mpeg2dec.c
Changed
@@ -1714,10 +1714,7 @@ GstCaps *caps; GST_DEBUG ("setup_mpeg2dec"); - - // Suppress deprecation warning - ASSERT_WARNING (mpeg2dec = gst_check_setup_element ("mpeg2dec")); - + 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.28.7.tar.xz/tests/check/meson.build -> _service:download_files:gst-plugins-ugly-1.26.7.tar.xz/tests/check/meson.build
Changed
@@ -75,12 +75,6 @@ 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
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/meson.options
Deleted
@@ -1,53 +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('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.28.7.tar.xz/po/ar.po
Deleted
@@ -1,61 +0,0 @@ -# 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.28.7.tar.xz/po/kk.po
Deleted
@@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2026 gst-plugins-ugly's COPYRIGHT HOLDER -# This file is distributed under the same license as the gst-plugins-ugly package. -# Baurzhan Muftakhidinov <baurthefirst@gmail.com>, 2026. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: gst-plugins-ugly 1.27.90\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-18 23:43+0100\n" -"PO-Revision-Date: 2026-03-01 15:02+0500\n" -"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n" -"Language-Team: Kazakh <(nothing)>\n" -"Language: kk\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=1; plural=0;\n" -"X-Generator: Poedit 3.8\n" - -msgid "Could not read from CD." -msgstr "CD-ден оқу мүмкін болмады." - -msgid "Could not open CD device for reading." -msgstr "Оқу үшін CD құрылғысын ашу мүмкін болмады." - -msgid "Disc is not an Audio CD." -msgstr "Диск аудио CD емес." - -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.28.7.tar.xz/release-notes-1.28.md
Deleted
@@ -1,2978 +0,0 @@ -# GStreamer 1.28 Release Notes - -GStreamer 1.28.0 was originally released on 27 January 2026. - -The latest bug-fix release in the stable 1.28 series is 1.28.7(#1.28.7) and was released on 07 September 2026. - -See https://gstreamer.freedesktop.org/releases/1.28/latest for the latest version of this document. - -*Last updated: Monday 07 September 2026, 20:00 UTC (log)gitlog* - -latest: https://gstreamer.freedesktop.org/releases/1.28/ -gitlog: https://gitlab.freedesktop.org/gstreamer/www/commits/main/src/htdocs/releases/1.28/release-notes-1.28.md - -<a id="introduction"></a> -## Introduction - -The GStreamer team is proud to announce a new major feature release in the -stable 1.x API series of your favourite cross-platform multimedia framework! - -As always, this release is again packed with many new features, bug fixes, and other improvements. - -<a id="highlights"></a> -## Highlights - -- 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 - -<a id="major-changes"></a> -## Major new features and changes - -<a id="hip"></a> -### AMD HIP plugin and integration library - -- 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: - - - 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. - - This allows developers to maintain a single codebase that can target multiple GPU vendors with minimal effort. - -- The **new HIP plugin**hip-plugin provides the following elements: - - - **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 - -- The **GStreamer HIP integration helper library** provides HIP integration functionality - to applications and other HIP users. - -- Watch the Bringing AMD HIP into GStreamergstconf-hip talk from last year's GStreamer Conference - for more details or read Seungha's devlog postdevlog-hip on the subject. - -hip-plugin: https://gstreamer.freedesktop.org/documentation/hip/index.html?gi-language=c#hip-page -gstconf-hip: https://gstconf.ubicast.tv/videos/bringing-amd-hip-into-gstreamer/ -devlog-hip: https://centricular.com/devlog/2025-07/amd-hip-integration/ - -<a id="lvecv"></a> -### Low Complexity Enhancement Video Coding (LCEVC) support for H.265 and H.266 - -- LCEVClcevc 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 H.265 and H.266 encoder and decoder elements** based on V-Nova's SDK libraries - were added in this cycle - -- **Autoplugging support for LCEVC H265 and H266 video streams**, so these can be decoded - automatically in a decodebin3 or playbin3 scenario. - -lcevc: https://www.lcevc.org - -<a id="closedcaptions"></a> -### Closed captions and text handling improvements - -- **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. - -- **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. - -- **sccparse**: Better handling of streams with more byte tuples in the SCC field. - -- **tttocea608**: expose "speaker-prefix" property - -- Miscellaneous improvements and spec compliance fixes - -- Also see SMPTE ST-2038 metadata section below. - -<a id="stt-translations-and-speech-synthesis"></a> -### Speech to Text, Translation and Speech Synthesis - -- 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. - -- New **Deepgram speech-to-text transcription** plugin in Rust. - -- 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**. - -- New **ElevenLabs voice cloning element**. The new element can operate in two modes: - - 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. - -- 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. - -- **awstranslate**: new "brevity-on" property for turning brevity on. - -- 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. - -- 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. - -<a id="adaptive-streaming"></a> -### HLS DASH adaptive streaming improvements - -- Reverse playback, seeking and stream selection fixes in the HLS/DASH clients. - -- **hlscmafsink** can generate I-frame only playlists now - -- 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. - -<a id="playback"></a> -### decodebin3 and playbin3 improvements - - - **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. - -<a id="eflv"></a> -### Enhanced RTMP and multitrack audio/video support in FLV - -- 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 Enhanced RTMP (V2) specification(https://veovera.org/docs/enhanced/enhanced-rtmp-v2.html) 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. - -- Both H.265 video and multiple audio/video tracks are now supported for FLV in GStreamer. - -- Support for this comes in form of a **new eflvmuxeflvmux 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 posteflv-devlog for more details. - -eflvmux: https://gstreamer.freedesktop.org/documentation/flv/eflvmux.html?gi-language=c#eflvmux-page -eflv-devlog: https://centricular.com/devlog/2025-11/Multitrack-Audio-Capability-in-FLV/ - -<a id="mpeg-ts"></a> -### MPEG-TS container format improvements - -- 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 specificationapple-timed-metadata-spec. - 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. - -- 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. - -apple-timed-metadata-spec: https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HTTP_Live_Streaming_Metadata_Spec/2/2.html - -<a id="matroska"></a> -### Matroska container format improvements - -- **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. - -<a id="isomp4"></a> -### ISO MP4 container format improvements - -- **mp4mux** now supports E-AC3 muxing - -- **qtdemux**, the MP4 demuxer, has seen countless fixes for various - advanced use cases (with lots more in the pipeline for 1.28.1). - -- 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. - -- 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. - -<a id="mxf"></a> -### MXF container format improvements - -- The MXF muxer and demuxer gained **support for non-closed-caption VANC ancillary metdata**: - - - Extends mxfdemux with support for outputting VANC (ST436M) essence - tracks as ST2038 streams instead of extracting closed captions internally. - - - Extends mxfmux with support for consuming ST2038 streams for outputting - VANC (ST436M) essence tracks instead of only supporting closed captions. - -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. - -We also now support both 8 and 10-bit VANC data when reading from MXF. - -<a id="mpeg-h"></a> -### MPEG-H audio support - -- New **MPEG-H audio decoding** plugin based on the Fraunhofer MPEG-H decoder - implementation plus MP4 demuxing support - -### SMPTE 2038 ancillary data stream handling improvements - -- New **ST-2038 ancillary data combiner and extractor elements** in - the `rsclosedcaption` Rust plugin that extract ST-3028 metadata streams - from `GstAncillaryMeta`s on video frames or converts ST-2038 metadata - streams to `GstAncillaryMeta` and combines it with a given video stream. - -- The MXF demuxer and muxer gained support for muxing and demuxing generic - ancillary metadata in ST-2038 format (see below). - -- decodebin3 now treats ST-2038 metadata streams as a "raw metadata format" - and exposes those streams as `GST_STREAM_TYPE_METADATA`. - -<a id="analytics"></a> -### Analytics - -This release introduces a major improvement in how analytics pipelines are built, -moving away from manual configuration toward a fully negotiated analytics pipeline. - -- **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. - -- **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. - -- **analyticsoverlay**: New "expire-overlay" property added to objectdetectionoverlay and can - also show tracking-id; New 'segmentationoverlay' to visualize segmented regions. - -- Add **LiteRT inference element** - -- Analytics: add **general classifier tensor-decoder**, **facedetector**, **YOLOv8 (detection)**, - **YOLOv8segmentation tensor decoders** and more convenience API. - -- **onnx**: Add **Verisilicon provider** support - -- New **IoU based tracker** - -- Add **`GstAnalyticsBatchMeta`**batchmeta 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. - -- New **analyticscombiner**analyticscombiner and **analyticssplitter**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. - -- Add a burn-based YOLOX inference elementburnyoloxinference and a YOLOX tensor decoderyoloxtensordec in Rust. - -batchmeta: https://gstreamer.freedesktop.org/documentation/analytics/gstanalyticsbatchmeta.html?gi-language=c#GstAnalyticsBatchMeta -analyticscombiner: https://gstreamer.freedesktop.org/documentation/rsanalytics/analyticscombiner.html?gi-lang -analyticssplitter: https://gstreamer.freedesktop.org/documentation/rsanalytics/analyticssplitter.html?gi-language=c#analyticssplitter-page -burnyoloxinference: https://gstreamer.freedesktop.org/documentation/burn/index.html?gi-language=c#burnyoloxinference-page -yoloxtensordec: https://gstreamer.freedesktop.org/documentation/rsanalytics/yoloxtensordec.html?gi-language=c#yoloxtensordec-page - -<a id="vulkan"></a> -### Vulkan integration enhancements - -- 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. - -- New **Vulkan AV1 and VP9 video decoding** support - -- New **Vulkan H.264 encoding** support - -- The **Vulkan H.265 decoder** now also supports **10-bit** depth - -<a id="opengl"></a> -### OpenGL integration enhancements - -- Implement keyboard, mouse, and scroll wheel navigation event handling for the - OpenGL Cocoa backend. - -- Added support for the `NV24` and `Y444_12` pixel formats. The latter is used by - certain HEVC decoders for 12-bit non-subsampled profiles. - -<a id="udmabuf"></a> -### udmabuf allocator with glupload support - -- Implement a **udmabuf-based memory allocator for user-space mappable dmabufs**. - -- **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`. - -- **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. - -<a id="wayland"></a> -### Wayland integration - -- Added **basic colorimetry support** - -- **waylandsink**: - - - Parse and set the **HDR10 metadata** and other **color management improvements** - - - **udmabuf support** (see above) - - - video **crop meta support** - - - New **"fullscreen-output"** and **"force-aspect-ratio" properties** - -<a id="qt"></a> -### Qt5 + Qt6 QML integration improvements - -- New **Qt6 QML qml6 render source element** - -- **qml6gloverlay**: support directly passing a QQuickItem for QML the render tree - -<a id="gtk"></a> -### GTK4 integration improvements - -- **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. - -<a id="cuda-nvcodec"></a> -### CUDA / NVCODEC integration and feature additions - -- **cudacompositor**, **cudaconvert** and its variants gained **crop meta support** - -- 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. - -- **nvjpegenc**: Add an autogpu mode element (nvautogpunvenc) similar to `nvautogpu{h264,h265,av1}enc`. - -- **nvh264enc**, **nvh265enc** gained a new "num-slices" property which is - conditionally available based on device support for dynamic slice mode - -- **nvdsdewarp**: performance improvements and support for output resizing support, - along with a new "add-borders" property. - -<a id="aja-decklink"></a> -### Capture and playout cards support - -- **Blackmagic Decklink** elements gained support for **capturing and outputting all types of VANC via GstAncillaryMeta** - -<a id="rtp"></a> -### RTP and RTSP stack improvements - -- **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. - -- New **Rust RTP mparobust depayloader** for "robust mp3" audio**, a more - loss-tolerant RTP payload format for MP3 audio (RFC 5219) - -- 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. - -- 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. - -- Various performance improvements and fixes for `rtprecv` / `rtpsend` ("rtpbin2"). - -- Support for "multi-time aggregation packets" (MTAP) in the H264 RTP depayloader `rtph264depay`. - -<a id="webrtc"></a> -### WebRTC improvements - -- **webrtcbin** and **GstWebRTC library** improvements: - - - Add support for getting the selected ICE candidate pairs - - - Improve spec compliance for ICE candidate stats by filling the foundation, related-address, - related-port, username-fragment and tcp-type fields of stats. - - - improve compatibility with LiveKit - -- **webrtcsink** and **webrtcsrc** enhancements: - - - **webrtcsink** gained **renegotiation support**, and **support for va hardware encoders** - -- Added a WHEP client signaller and server signaller to the Rust webrtc plugin, including - support for server side offers for the WHEP client. - -- webrtc-api: Set **default bundle policy** to max-bundle. - -- 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. - -<a id="new-cplusplus-bindings"></a> -### New GStreamer C++ bindings - -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. - -In recent years, a new approach for C++ bindings was developed by the GNOME community: -peel(https://gitlab.gnome.org/bugaevc/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. - -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. - -It's still in active development and various MRs(https://gitlab.gnome.org/bugaevc/peel/-/merge_requests) -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++. - -Various GStreamer examples can be found in Sebastian's GStreamer peel examples repositorypeel-examples. - -peel-examples: https://gitlab.freedesktop.org/slomo/gstreamer-peel-examples - -<a id="new-plugins"></a> -## New elements and plugins - -- Many exciting **new Rust elements**, see Rust section below. - -- New **D3D12** interlace, overlay compositor, fish eye dewarp and uv coordinate remapping elements - -- **VMAF**: New element to **calculate perceptual video quality assessment scores using Netflix's VMAF framework** - -- **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, D3D12, Speech, AMD HIP, Rust etc.) - -<a id="new-element-features"></a> -## New element features and additions - -- The **AWS S3 sink and source** elements now support S3 compatible URI schemes. - -- **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. - -- **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. - -- **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. - -- **input-selector** now implements a two-phase sinkpad switch to avoid races when switching - input pads. Extensive tests have been added to avoid regressions. - -- 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. - -- 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(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1906). - -- **replaygain** will use EBU-R128 gain tags now if available. - -- **threadshare: many improvements** to the various threadshare elements, plus examples and - a new benchmark program. The plugin was also relicensed to MPL-2.0. - -- 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. - - There's also a new "num-clients" property that gets notified when the number - of clients (unixfdsrc elements tapping the same unixfdsink) changes. - -- **videorate** and **imagefreeze** now also support JPEG XS. - -- **videorate**'s formerly defunct "new-pref" property was revived for - better control which frame to prefer for output in case of caps changes. - -<a id="plugin-library-moves"></a> -## Plugin and library moves and renames - -- 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. - -- The `fmp4` and `mp4` plugins in the Rust plugins set were merged into a - single `isobmff` plugin. - -<a id="plugin-element-deprecations"></a> -## Plugin and element deprecations - -- 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). - -- 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. - -- 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`. - -<a id="plugin-element-removals"></a> -## Plugin and element removals - -- The **cc708overlay** element has been removed. It is replaced by the - cea708overlaycea708overlay element from the `rsclosedcaption` plugin - in the Rust plugins module. - -cea708overlay: https://gstreamer.freedesktop.org/documentation/rsclosedcaption/cea708overlay.html?gi-language=c - -- 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. - -<a id="new-api"></a> -## Miscellaneous API additions - -<a id="core-api"></a> -### GStreamer Core - -- `gst_call_async()`gst-call-async and `gst_object_call_async()`gst-object-call-async - are more generic and convenient replacements for `gst_element_call_async()` - -- `gst_check_version()`gst-check-version is a new convenience function to check for - a minimum GStreamer core version at runtime. - -- GstClock: Add gst_clock_is_system_monotonic()gst_clock_is_system_monotonic utility function - -- GstController: gst_timed_value_control_source_list_control_points()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()`. - -- GstCpuId: `gst_cpuid_supports_x86_avx()`cpuid-supports 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. - -- `gst_object_get_toplevel()`gst_object_get_toplevel can be used to get the - toplevel parent of an object, e.g. the pipeline an element is in. - -- **New API for tensor caps descriptions**: - - - `GstUniqueList`GstUniqueList is a new unordered, unique container value type for `GValue`s - 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_structure_get_caps()`gst_structure_get_caps gets a `GstCaps` from a structure - -- 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. - -- New EBU-R128 variants of the replay gain tags: `GST_TAG_TRACK_GAIN_R128` and `GST_TAG_ALBUM_GAIN_R128` - -- **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. - -- GstValue: add `gst_value_hash()`gst_value_hash and support `0b` / `0B` prefix for - bitmasks when deserialising. - - - Add missing `_take()` and `_steal()` functions for some mini objects: - - `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()` - -- GstElement: Deprecate `gst_element_state_*()` API and provide `gst_state_*()` - replacements with the right namespace - -gst-call-async: https://gstreamer.freedesktop.org/documentation/gstreamer/gstutils.html?gi-language=c#gst_call_async -gst-object-call-async: https://gstreamer.freedesktop.org/documentation/gstreamer/gstobject.html#gst_object_call_async -gst-check-version: https://gstreamer.freedesktop.org/documentation/gstreamer/gst.html?gi-language=c#gst_check_version -gst_clock_is_system_monotonic: https://gstreamer.freedesktop.org/documentation/gstreamer/gstclock.html?gi-language=c#gst_clock_is_system_monotonic -gst_structure_get_caps: https://gstreamer.freedesktop.org/documentation/gstreamer/gststructure.html?gi-language=c#gst_structure_get_caps -gst_timed_value_control_source_list_control_points: https://gstreamer.freedesktop.org/documentation/controller/gsttimedvaluecontrolsource.html?gi-language=c#gst_timed_value_control_source_list_control_points -GstUniqueList: https://gstreamer.freedesktop.org/documentation/gstreamer/gstvalue.html?gi-language=c#gst_value_unique_list_append_value -cpuid-supports: https://gstreamer.freedesktop.org/documentation/gstreamer/gstcpuid.html?gi-language=c -gst_object_get_toplevel: https://gstreamer.freedesktop.org/documentation/gstreamer/gstobject.html?gi-language=c#gst_object_get_toplevel -gst_value_hash: https://gstreamer.freedesktop.org/documentation/gstreamer/gstvalue.html?gi-language=c#gst_value_hash - -<a id="meta-factory"></a> -#### GstMetaFactory to dynamically register metas - -- `gst_meta_factory_register()`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. - - 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. - -meta-factory-register: https://gstreamer.freedesktop.org/documentation/gstreamer/gstmetafactory.html?gi-language=c#gst_meta_factory_register - -<a id="gstapp"></a> -### App Sink and Source Library - -- **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). - -<a id="gstaudio"></a> -### Audio Library - -- 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. - -<a id="gstpbutils"></a> -### Plugins Base Utils Library - -- Many minor improvements. - -<a id="gsttag"></a> -### Tag Library - -- Vorbis comments: parse EBU R128 tags - -<a id="gstvideo"></a> -### Video Library and OpenGL Library - -- Add DRM equivalents for various 10/12/16 bit SW-decoders formats - -- 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 - -- 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. - -<a id="gstplay"></a> -### GstPlay Library - -- GstPlay: Add **support for gapless looping** - -<a id="optimisations"></a> -## Miscellaneous performance, latency and memory optimisations - -- 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. - -- On Windows **audioresample** now has SIMD optimisations enabled also for the MSVC build. - -- **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. - -<a id="misc-changes"></a> -## Miscellaneous other changes and enhancements - -- The **ALSA device provider** now supports enumerating virtual PCM sinks - -- The **ASIO** device monitor can now detect dynamically added and removed devices by monitoring USB events. - -<a id="tracing"></a> -## Tracing framework and debugging improvements - -- There are **new hooks to track when buffers are queued or dequeued from** - **buffer pools** in the tracing system. - -- The **pad-push-timings tracer** gained a new **"write-log" action signal** - -<!-- -### New tracers - -- None - ---> - -#### Dot tracer/viewer - -- **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. - -### Dot file pipeline graphs - -- Dot file dumps of **pipeline graphs now show the list of active tracers** - at the bottom along with the tracer configuration. - -### Debug logging system improvements - -#### GstLogContext to fine-tune logging output and reduce log message spam - -- `GstLogContext`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_*`GST_CTX debug log macros that take a context argument in addition to the usual arguments. - -- A number of `GST_{MEMDUMP,TRACE,LOG,DEBUG,INFO,WARNING,ERROR}_ONCE`LOG_ONCE convenience macros for logging something only once. - -GstLogContext: https://gstreamer.freedesktop.org/documentation/gstreamer/gstinfo.html?gi-language=c#GstLogContext -GST_CTX: https://gstreamer.freedesktop.org/documentation/gstreamer/gstinfo.html?gi-language=c#GST_CTX_LOG -LOG_ONCE: https://gstreamer.freedesktop.org/documentation/gstreamer/gstinfo.html?gi-language=c#GST_LOG_ONCE_OBJECT - -- 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. - -<a id="tools"></a> -## Tools - -- **gst-inspect-1.0** now shows the type of each field when it prints caps - and also pretty-prints tensor caps. - -<a id="ffmpeg"></a> -## GStreamer FFmpeg wrapper - -- The avdec video decoders have seen many improvements and fixes for their - buffer pool and allocation query handling. - -<a id="rtsp"></a> -## GStreamer RTSP server - -- 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. - -- **rtspclientsink** now errors out on timeout. - -<a id="vaapi"></a> -## VA-API integration - -### VA plugin for Hardware-Accelerated Video Encoding and Decoding on Intel/AMD - -- **vaav1enc**: Enable intrablock copy and palette mode. - -- Lots of other improvements and bug fixes. - -### GStreamer-VAAPI has been removed in favour of the va plugin - -- **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. - -<!-- - -<a id="v4l2"></a> -## GStreamer Video4Linux2 support - -- Nothing major? - ---> - -<a id="ges"></a> -## GStreamer Editing Services and NLE - -- **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. - -- **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. - -- **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. - -- **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. - -- **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. - -- **GES Error Domain**: Added `ges_error_quark()` function for proper GError - domain support, enabling automatic ErrorDomain implementation generation in - language bindings. - -- **Timeline Error Reporting**: Added GError parameter to - `ges_base_bin_set_timeline()` for proper error reporting when timeline setup - fails. - -- Various bug fixes for memory leaks, frame position calculations with - non-square pixel aspect ratios, and control binding handling. - - -<a id="validate"></a> - -## GStreamer validate - -- **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. - -- **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. - -- **Enhanced dots-viewer** (see dots-viewer section above) - -- **SSIM Validation Improvements**: Changed validation to check all images - before reporting errors instead of stopping at the first error. - -- **Reverse Playback Validation**: Changed segment.time mismatch from critical - to warning for reverse playback scenarios, acknowledging the additional - complexity demuxers face during reverse playback. - -- **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. - -- **Python 3.14 Compatibility**: Fixed file:/// URI generation for Python 3.14 - with proper RFC 8089 compliance. - -- Various bug fixes for scenario handling, memory leaks, and improved backward - compatibility with GLib 2.64. - -<a id="python"></a> -## GStreamer Python Bindings - -gst-python is an extension of the regular GStreamer Python bindings based on -gobject-introspection information and PyGObject, and provides "syntactic sugar" -in form of overrides for various GStreamer APIs that makes them easier to use -in Python and more 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. - -- More **pythonic API for analytics** - -- Type annotations have been updated in PyGObject-stubs(https://pypi.org/project/PyGObject-stubs/). - -- Writability of `Gst.Structure`, `Gst.Caps` and other objects has been improved. - * `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. -- Breaking change: `Gst.ElementFactory.make` and `Gst.Bin.make_and_add` now - raise `Gst.MissingPluginError` exception when the element is not found. - -<a id="csharp"></a> -## GStreamer C# Bindings - -- The C# bindings have been updated for the latest GStreamer 1.28 APIs. - -<a id="rust"></a> -## 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.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.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. - -Rust plugins can be used from any programming language. To applications, -they look just like a plugin written in C or C++. - -<a id="rust-elements"></a> -### New Rust elements - -- 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. - -- New **audio source separation element based on demucs** (see above). - -- New **Deepgram speech-to-text transcription** plugin, - **ElevenLabs voice cloning element** and **textaccumulate** element. See - <a href="#stt-translations-and-speech-synthesis">Speech to Text, Translation and Speech Synthesis</a> - section above. - -- New **analytics combiner and splitter elements** for batch metas (see above). - -- New **mpa robust RTP depayloader**, **L8/L16/L24** raw audio payloaders and depayloaders and **SMPTE ST291** ancillary data payloader and depayloader. - -- New **GIF decoder** element that supports looping. - -- New **ST-2038 ancillary data combiner and extractor elements** (see above) - -- Added a **burn-based YOLOX inference element and a YOLOX tensor decoder** - -- s302mparse: Add new **S302M audio parser** - -- New **Rust validate plugin** with a **check-last-frame-qrcode action**. - -<!-- -<a id="rust-other-improvements"></a> -### Other improvements - -- to be filled in ---> - -For a full list of changes in the Rust plugins see the -gst-plugins-rs ChangeLogrs-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.28.0 gst-plugins-rs 0.15 was not -released yet and the git `main` branch was included instead (see above). - -rs-changelog: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/blob/main/CHANGELOG.md - -<a id="build-and-deps"></a> -## Build and Dependencies - -- Meson >= 1.4 is now required for all modules - -- liborc >= 0.4.42 is strongly recommended - -- libnice >= 0.1.23 is now required for the WebRTC library. - -- The `closedcaption` plugin in gst-plugins-bad no longer depends on pangocairo after - removal of the `cc708overlay` element (see above). - -- Please also note plugin removals and deprecations. - -### Monorepo build - -- 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. - -- Added wraps: librsvg, svtjpegxs - -<!-- - -### gstreamer-full - -- Nothing major - ---> - -### 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 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 (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). - -- New `python-exe` Meson build option to override the target Python installation - to use. This will be picked up by the `gst-python` and `gst-editing-sevices` - subprojects. - -<a id="platform-specific"></a> -## Platform-specific changes and improvements - -<a id="android"></a> -### Android - -- **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. - -<a id="apple"></a> -### Apple macOS and iOS - -- **VP9 and AV1 hardware-accelerated video decoding** support - -- Support for **10-bit HEVC encoding** - -- Implement keyboard, mouse, and scroll wheel navigation event - handling for the OpenGL Cocoa backend. - -<a id="windows"></a> -### Windows - -<a id="d3d12"></a> -#### GStreamer Direct3D12 integration - -- New elements: - - d3d12interlaced3d12interlace: A Direct3D12 based **interlacing** element - - d3d12overlaycompositord3d12overlaycompositor: A Direct3D12-based **overlay composing** element - - d3d12fisheyedewarpd3d12fisheyedewarp: A Direct3D12-based **fisheye dewarping** element - - d3d12remapd3d12remap: A Direct3D12-based UV coordinate remapping element - -- Upload/download optimisations via a staging memory implementation - -- **d3d12swapchainsink** improvements: - - added a "last-rendered-sample" action signal to retrieve the last rendered frame - - added "uv-remap" and "redraw" action signals - -d3d12interlace: https://gstreamer.freedesktop.org/documentation/d3d12/d3d12interlace.html#d3d12interlace -d3d12overlaycompositor: https://gstreamer.freedesktop.org/documentation/d3d12/d3d12overlaycompositor.html?gi-language=c -d3d12fisheyedewarp: https://gstreamer.freedesktop.org/documentation/d3d12/d3d12fisheyedewarp.html?gi-language=c -d3d12remap: https://gstreamer.freedesktop.org/documentation/d3d12/d3d12remap.html?gi-language=c - -<a id="win32ipc"></a> -#### Windows inter process communication - -- 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. - -<a id="wasapi2"></a> -#### Windows audio - -- **wasapi2**: add **support for dynamic audio device switching, exclusive mode and format negotiation**, - in addition to device provider improvements and latency enhancements. - -- **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. - -<!-- - -<a id="linux"></a> -### Linux - -- Many improvements which are described in other sections. - ---> - - -<a id="cerbero"></a> -### 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. It is also used to create the GStreamer Python Wheels. - -#### General improvements - -- **New features:** - - - Support for generating Python wheels for macOS and Windows - - These will be uploaded to PyPI, currently blocked on PyPI(https://github.com/pypi/support/issues/8847) - - 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:** - - - 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:** - - - `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:** - - - `mp4` and `fmp4` plugins have been merged into `isobmff` - -- **Development improvements**: - - - Debuginfo is now correctly shipped on Windows and macOS - - Support for iPhone Simulator on ARM64 macOS, via the new iOS xcframework - -- **Known issues**: - - - cerbero: Rust plugins fail to link with Xcode 26 on macOS(https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/538) - - cerbero: Rust plugins are not shipped in the Windows ARM64 installer(https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/548) - - cerbero: Android devices with API level >= 30 cannot play tutorials 4 or 5(https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/529) -- Fix aimed for 1.28.1 - - cerbero: Missing pkg-config for macOS in the Android release(https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/522) - -<a id="docs"></a> -## Documentation improvements - -- Added a **Windows section** to "building from source" page - -- New **Python tutorials for dynamic pipelines** and time handling - -- The **Android tutorials were updated**: provided projects were updated to Gradle 8.11 and API level 24 - -- Updates of the **Machine Learning and Analytics design documentation** and the **GstMeta design docs** - -<a id="breaking-changes"></a> -## Possibly Breaking Changes - -- 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(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9564), - which was apparently backported into 1.26 as well). - -- 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. - -- Python bindings: `Gst.ElementFactory.make` and `Gst.Bin.make_and_add` now - raise `Gst.MissingPluginError` exception when the element is not found. - - -<a id="known-issues"></a> -## Known Issues - -- There are some open issues with the Apple hardware-accelerated AV1 decodingvtdec-av1-issues, - which we hope will be fixed in due course. Please let us know if you run into them and can - test patches. - -vtdec-av1-issues: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4768 - -- Autoplugging LCEVC H.264/H.265/H.266 streams is currently disabled until an issuelcevc-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. - -lcevc-issue: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4870 - -<a id="statistics"></a> -## Statistics - -- 3548 commits -- 1765 Merge requests merged -- 476 Issues closed -- 190+ Contributors - -- more than 35% of all commits and Merge Requests were in Rust modules/code - -- 5430 files changed -- 395856 lines added -- 249844 lines deleted -- 146012 lines added (net) - -<a id="contributors"></a> - -## Contributors - -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! - -## Stable 1.28 branch - -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. - -<a id="1.28.1"></a> - -### 1.28.1 - -The first 1.28 bug-fix release (1.28.1) was released on 26 February 2026. - -This release only contains bugfixes and important security fixessecurity. -It *should* be safe to update from 1.28.0 and we recommend you do so at your -earliest convenience. - -security: https://gstreamer.freedesktop.org/security/ - -#### Highlighted bugfixes in 1.28.1 - - - Various security fixessecurity and playback fixes - - Add new whisper-based speech-to-text transcription element - - Add new debugseimetainserter plugin for testing SEI meta insertion - - Fix scaling and resizing with UIView on EAGL and Vulkan - - Reverse playback and gap handling fixes in various components - - avviddec: Handle field/order changes in mixed interlace mode - - awstranscriber2: workaround for suspected Rust SDK regression - - cudaupload, cudadownload: Fix CUDA/GL interop copy path - - decodebin3: Fix switch to smaller collections and improve collection change on existing pad - - devenv: Add a subproject for providing the LunarG MoltenVK SDK - - livesync: fixes and reverse playback handling; ignore upstream latency when upstream is not live - - objectdetectionoverlay: add support for rotated bounding boxes - - qml6glsrc: Fix rendering of scene with clipped items - - speechmatics: allow configuring audio events such as detecting applause, laughter and music - - livekit webrtc: emit session-requested only for Producer role - - tsdemux: Fix Continuity Counter handling and handle clock change/resets without skew correction - - v4l2: Add support for AV1 stateful V4l2 decoder - - vpxdec: Support downstream pools with alignment requirements - - vtdec, vtenc: Lots of Apple VideoToolbox decoder and encoder fixes - - applemedia build improvements, patches for tvOS support, tvos cross file - - wavpack: Fix handling of format changes, extend parser with new features, handle non-S32 samples - - webrtcsink: allow specifying custom headers to signalling server - - webrtcsink: negotiate profile and level for input encoded in H.264 - - webrtcsrc: add request type pads and allow sending encoded data downstream - - cerbero: wheel: Add a new `gstreamer_meta` package with fewer deps - - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -#### gstreamer - - - aggregator: Handle gap event before segment(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10789) - - aggregator: Various introspection annotations / docs fixes for vfuncs(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10723) - - basesink: Race condition when pausing can cause `render()` to not block on prerolling but process buffers like in PLAYING state(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4846) - - bitwriter: Steal owned data in reset_and_get_data()(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10805) - - caps: Fix the features leak in gst_caps_append_structure_full(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10689) - - filesink: Report write error correctly on Windows(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10758) - - gst: Add explanatory comment to call_async implementation(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10872) - - input-selector: fix several shortcomings(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10621) - - multiqueue: reverse playback: use segment stop position as start time(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10770) - - registry: Skip .dSYM bundles when loading plugins, try 2(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10853) - - typefindfunctions: Promote y4m_typefind(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10632) - - gst-stats: Also allow ANSI colored logs without 0x in front of the thread id(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10857) - - Fix a couple of new const-ness warnings around strstr() usage, out-of-bounds read in PTP clock and uninitialized variable compiler warning(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10656) - -#### gst-plugins-base - - - Fix scaling and resizing with UIView on EAGL and Vulkan(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10669) - - audiobuffersplit: Various smaller fixes and implement handling of negative rates correctly(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10670) - - audiodecoder / videodecoder: Fix gap event handling(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10750) - - compositor: Do copy_metas also for background frame(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10825) - - decodebin3: Fix switch to smaller collections(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10674) - - decodebin3: Improve handling collection change on existing pad(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10638) - - input-selector: fix several shortcomings(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10621) - - playsink: unref color balance channels with g_object_unref()(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10710) - - riff: Correctly check that enough RGB palette data is available(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10892) - - rtp: Add mappings for H266 and AV1 encoding-names(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10661) - - rtsp: Validate transport parameter parsing in RFC 2326(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10717) - - typefindfunctions: Promote y4m_typefind(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10632) - - video-converter: Do not transform_metas with 0 width or height(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10833) - - videodecoder: Handle recovery from temporary reordered output(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10692) - - videofilter: Add VIDEO_ALIGNMENT to downstream pool(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10811) - - Fix a couple of new const-ness warnings around strstr() usage, out-of-bounds read in PTP clock and uninitialized variable compiler warning(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10656) - - Various element factory metadata fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10729) - -#### gst-plugins-good - - - qml6glsrc: Fix rendering of scene with clipped items(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10678) - - qtdemux: Don't ignore flow return when pushing queued buffers downstream(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10680) - - qtdemux: Fix out-of-bounds read when parsing PlayReady DRM UUIDs(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10890) - - qtdemux: Make sure to not output the same samples multiple times in reverse playback mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10690) - - qtdemux: Push raw audio/video buffers downstream in reverse order if rate < 0(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10708) - - qtdemux: Set the segment position to the start on EOS in reverse playback mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10629) - - rtpqdm2depay: error out if anyone tries to use this element(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10897) - - rtpsource: Add locking for receive reports table(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10700) - - rtspsrc: Set new mki in the encoder upon crypto update(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10756) - - rtspsrc: fix Memory leak in gst_rtspsrc_close() when GST_RTSP_EEOF error occurs(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10768) - - rtspsrc: Not handling valid RTP-Info headers for RTSP 2.0(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3064) - - v4l2: Add support for AV1 stateful V4l2 decoder(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10664) - - vpxdec: Support downstream pools with alignment requirements(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10666) - - wavpack: Fix handling of format changes, extend parser with new features, handle non-S32 samples in all variations(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10707) - - wavparse: Avoid integer overflow and out-of-bounds read when parsing adtl chunks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10903) - - Various element factory metadata fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10729) - - meson: Fix libxml2 not building due to wrong option type(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10618) - -#### gst-plugins-bad - - - Fix scaling and resizing with UIView on EAGL and Vulkan(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10669) - - GstPlay: fix segmentation fault due to use after free(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10660) - - ajasink: Only allow 6 / 8 / 16 audio channels(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10624) - - ajasinkcombiner: Only forward the segment events from the video sinkpad(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10748) - - analytics: Fix dims_order handling(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10862) - - applemedia: Fix vtenc draining logic, port other existing fixes between vtdec and vtenc(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10860) - - applemedia: elements can now be individually registered with gst-full(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10828) - - applemedia build improvements, patches for tvOS support, tvos cross file(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10866) - - asiosink: Fill silence when paused(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10830) - - asio: asiosink can not handle pause event properly and generates noise when paused.(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4909) - - audiobuffersplit: Various smaller fixes and implement handling of negative rates correctly(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10670) - - audiobuffersplit: fix reverse playback(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10712) - - ccconverter: Reset counters on flush-stop(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10845) - - cea608mux: fix overflow when calculating output PTS(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10726) - - codecs: v4l2: Add short and long term ref sets support in v4l2 codecs(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10851) - - codectimestamper: Fix latency query handling(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10653) - - cudaupload, cudadownload: Fix CUDA/GL interop copy path(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10620) - - decklink: Explicitly use cpp_std=c++11 for decklink(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10804) - - dvbsuboverlay: Add missing bounds checks to the parser everywhere(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10894) - - h264,h265ccextractor: Fix framerate in initial caps(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10841) - - h265parser: Validate num_decoding_units_minus1 in pic_timing SEI(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10904) - - h266parser: Fix APS ID bounds check in APS parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10899) - - h266parser: Fix out of bounds write when parsing pic_timing SEI(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10901) - - h266parser: Validate tile index bounds in picture partition parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10898) - - jpegparser: boundary checks before copying it(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10896) - - mpeghdec: memory leak fix in MPEG-H Audio decoder plugin(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10687) - - mpegtspacketizer: Handle clock change/resets without skew correction(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10635) - - mxfdemux: always send a segment before sending eos or segment-done(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10650) - - mxfdemux: fix gst_mxf_demux_pad_get_stream_time ()(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10633) - - objectdetectionoverlay: add support for rotated bounding boxes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10671) - - openh264enc: remove broken drain and simplify handle_frame(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10739) - - tsdemux: Fix Continuity Counter handling(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10643) - - tsmux: reduce noise for DEBUG log level(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10736) - - v4l2: Add support for AV1 stateful V4l2 decoder(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10664) - - vabasetransform: copy buffer's metadata at copy when import buffer(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10810) - - vavp8enc: set color format chroma(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10806) - - vkav1dec: fix to set SavedOrderHints properly(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10846) - - vtdec: Avoid busy looping when queue length is smaller than DPB size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10827) - - vtdec: Don't re-create session if only the framerate changed(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10702) - - vtdec: Fix CM memory leak due to incorrect unref(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10794) - - vtdec: Fix race condition when negotiating during playback(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10715) - - vtdec: Reverse playback fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10654) - - vtdec: Seeking to a frame with a simple pipeline causes a hang for some (ProRes only?, MOV-only?) videos in macOS (arm64, x86_64)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4861) - - vtdec: Fix wrong DPB size check in the output loop(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10863) - - vtenc: Fix DTS offset calculation(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10873) - - vulkan: load video function pointers conditionally based on codec operation(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10773) - - wayland: Fix CLAMP operation of maxFALL and maxCLL(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10685) - - waylandsink: make gst_wl_window_commit_buffer handle NULL buffers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10793) - - webrtc: sink floating refs of ICE transports(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10627) - - webrtcbin: Check the presence of encoding-name fields in answer caps(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10662) - - zxing: Fix version check for zxing-cpp 3.0.1(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10813) - - Fix a couple of new const-ness warnings around strstr() usage, out-of-bounds read in PTP clock and uninitialized variable compiler warning(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10656) - - meson: Add a subproject for providing the LunarG MoltenVK SDK(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10752) - - meson: Fix libxml2 not building due to wrong option type(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10618) - - Minimal support for compiling with zxing-cpp 3.x(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10799) - - Various element factory metadata fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10729) - - gst-plugins-bad is incompatible with zxing-cpp 3.0.0+(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4893) - -#### gst-plugins-ugly - - - asfdemux: Error out on files with more than 32 streams(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10891) - - rmdemux: Check if new video fragment overflows the fragment storage before storing it(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10893) - -#### GStreamer Rust plugins - - - audio: add new whisper-based transcription element(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2851) - - aws: Don't run whole GStreamer tests in a tokio runtime(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2883) - - awstranscriber2: workaround suspected rust SDK regression(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2849) - - Block on a tokio runtime if available instead of going via futures::executor()(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2835) - - debugseimetainserter: add new plugin for testing SEI meta insertion(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2756) - - demucs: document how to build with a specific python version(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2871) - - demucs: Don't fail if std deviation of the input is too close to zero(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2872) - - demucs: improve url doc(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2868) - - demucs: pin python 3.13 in uv setup(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2867) - - demucs, speechmatics: don't take stream lock on FlushStart(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2869) - - elevenlabs,speechmatics: fix license(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2863) - - isobmff: add support for bayer video formats(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2855) - - isomp4mux: Improving level indicator in vpcC for vp8/vp9 with helpers in pbutils(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2815) - - livesync: fixes & reverse playback handling(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2830) - - livesync: ignore upstream latency when upstream is not live(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2877) - - polly: don't panic when no caps were received before first buffer(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2879) - - polly: fix panic in async send()(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2838) - - rtpav1pay: insert sequence header if a keyframe is missing it(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2902) - - rtprecv: Don't panic if no buffers of a bufferlist can be directly forwarded(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2844) - - rtprecv: Various improvements and bugfixes(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2852) - - rtpsend: send mandatory events on the rtcp srcpad before sending the first buffer(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2904) - - rtpsmpte291depay: Drop the current packet after processing if it was empty(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2875) - - rtp: smpte291: Use upper-case encoding-name(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2865) - - rtp: smpte291: Use video as media type instead of application(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2847) - - speechmatics: allow configuring audio events(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2837) - - st2038combiner: Sort by line and then horizontal offset(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2873) - - st2038combiner: Various minor fixes(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2857) - - transcriberbin: forward handled error messages as warning messages(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2839) - - transcriberbin: fix latency reported when transcriber=translationbin(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2885) - - transcribers: Ignore return value when pushing gap events(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2840) - - webrtc-api: Report pressed mouse buttons as modifiers(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2860) - - webrtc/livekit: emit session-requested only for Producer role(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2807) - - webrtcsink: allow specifying custom headers to signalling server(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2882) - - webrtcsink: multiple improvements(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2842) - - webrtcsink: negotiate profile and level for input encoded in H.264(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2658) - - webrtcsrc: add request type pads(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2796) - - webrtcsrc: allow sending encoded data downstream(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2786) - - cargo_wrapper: Add nasm dir to path only if needed(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2903) - - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2834) - - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2853) - - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2891) - -#### gst-libav - - - audiodecoder / videodecoder: Fix gap event handling(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10750) - - avviddec: Allow stride changes for some decoders(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10663) - - avviddec: Fix handling of mixed interlaced content(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10879) - - avviddec: Handle field/order changes in mixed interlace mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10696) - - avvidcmp: set colorimetry on AVFrame(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10665) - - libav: Don't process lines that won't be outputted in the debug log(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10815) - - Various element factory metadata fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10729) - -#### gst-rtsp-server - - - rtspclientsink: don't error out when stream transport notifies timeout(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10864) - - rtspclientsink <-> MediaMTX times out when migrating to 1.28(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4911) - -#### gstreamer-sharp - - - No changes - -#### gst-python - - - More Python typing fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10625) - -#### gst-editing-services - - - meson: Fix libxml2 not building due to wrong option type(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10618) - -#### gst-devtools, gst-validate + gst-integration-testsuites - - - Update Rust dependencies(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10870) - -#### gst-examples - - - Update Rust dependencies(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10870) - -#### gstreamer-docs - - - No changes - -#### Development build environment - - - Add a Meson subproject for providing the LunarG MoltenVK SDK(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10752) - - Fix support for cross-compiling to iOS and add a cross file for it, remove HAVE_IOS, port to tvOS(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10807) - - pcre2.wrap: Add patch to fix the build on non-macOS Apple platforms(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10741) - - Revert "pygobject: Update to 3.55.0"(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10732) - -#### Cerbero build tool and packaging changes in 1.28.1 - - - Add environment variable for building run with background priority(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2137) - - Rename vaapi variant to va and by default on Linux, test built plugins correctly on CI(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2135) - - fetch: use the Oven for parsing the dependency tree(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2118) - - fetch-package` may not fetch all dependencies needed for `package`(https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/125) - - filesprovider: Check missing files at the recipe level on CI runs(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2109) - - glib: Upstream old iOS GIO_MODULE_DIR hack(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2095) - - gtk.recipe: Enable gstreamer media backend on Windows(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2125) - - gst-plugins-rs: pin to 0.15 branch for 1.28(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2134) - - inno: Fix incorrect MSVC redistributable when cross-building for Arm64(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2096) - - inno: Restrict usage to native Windows as exposed by sys.platform(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2119) - - libpng: update to 1.6.55(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2101) - - osx-framework: Add missing gstreamer libraries(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2129) - - osx: fix file duplication in .pkg payloads(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2117) - - pygobject.recipe: Fix overflow when comparing GstMessageType on Windows(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2098) - - wheel: Add a new gstreamer_meta package with fewer deps(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2097) - - wheels: Add proper description / long_description(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2112) - - wheels: Don't raise an exception if cli exits with non-zero code(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2128) - - wheels: Use static python requires for all wheels(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2124) - - wheel: Add debuginfo wheel(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2136) - - x265: drop common source recipe(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2123) - - Bump up to NDK 29 and pin cpp_std to c++11 in opencore-amr(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2111) - - Update to Rust 1.93 / cargo-c 0.10.20(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2094) - -#### Contributors to 1.28.1 - -Adrian Perez de Castro, Andrey Sidorov, Axxel, Carlos Bentzen, Christian Gräfe, -Daniel Morin, Deepa Guthyappa Madivalara, Detlev Casanova, Dominique Leroux, -Edward Hervey, François Laignel, Guillaume Desmottes, He Junyan, Hyunjun Ko, -Jakub Adam, Jan Alexander Steffens (heftig), Jeongmin Kwak, L. E. Segovia, -Mathieu Duponchelle, Matthew Waters, Monty C, Nicolas Dufresne, Nirbheek Chauhan, -Ognyan Tonchev, Peter Stensson, Philippe Normand, Piotr Brzeziński, Rinat Zeh, -Robert Mader, Ruben Gonzalez, Sebastian Dröge, Seungha Yang, Sjoerd Simons, -Stéphane Cerveau, Sven Püschel, Taruntej Kanakamalla, Thibault Saunier, -Tim-Philipp Müller, Tobias Koenig, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, -Xabier Rodriguez Calvar, Xavier Claessens, Xi Ruoyao, - -... and many others who have contributed bug reports, translations, sent -suggestions or helped testing. Thank you all! - -#### List of merge requests and issues fixed in 1.28.1 - -- List of Merge Requests applied in 1.28.1(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.1) -- List of Issues fixed in 1.28.1(https://gitlab.freedesktop.org/groups/gstreamer/-/issues?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.1) - -<a id="1.28.2"></a> - -### 1.28.2 - -The second 1.28 bug-fix release (1.28.2) was released on 07 April 2026. - -This release only contains bugfixes and important security fixessecurity. -It *should* be safe to update from 1.28.x and we recommend you do so at your -earliest convenience. - -security: https://gstreamer.freedesktop.org/security/ - -#### Highlighted bugfixes in 1.28.2 - - - Various security fixessecurity and playback fixes - - audioencoder: allow change of channel configuration with avenc_aac - - audioinvert: fix float format handling - - h264parse, h265parse, baseparse: Preserve upstream buffer duration if possible - - compositor: fix segfault with force-live=true and no sink pads (regression) - - fallbacksrc: send select-streams event to collection source element directly - - hlsdemux2: fix seekable range for live HLS streams - - glupload: Fix linking glupload with restrictive caps filter - - nvcodec: Add capability caching to speed up plugin initialization - - RTP and RTCP packet handling fixes - - RTSP server fixes for clean-up of timed out play requests - - video-converter: fix I420/A420 BGRA/ARGB output on big-endian - - qtdemux: fix invalid WebVTT timestamps, and other fixes - - qmlgl6sink: Qt6GLVideoItem caps update handling fixes - - threadshare udp sink and source fixes - - transcriberbin and speechmatics text-to-speech fixes and improvements - - videorate: Fix wrong caps in case of PTS going backward - - vtdec: more Apple VideoToolbox decoder fixes - - wavparse: Fix parsing of RF64 wave files - - wasapi2sink: Ignore transient device errors from default device - - waylandsink: various fixes and improvements - - WebRTC DTLS robustness/stability improvements - - Cerbero: Various inno Windows installer fixes and improvements; new 'gstreamer_bundle' wheels meta-package - - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -#### gstreamer - - - bin: iterator is not nullable(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11036) - - registry: Skip .dSYM bundles when loading plugins, try 3(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10970) - - baseparse: Preserve upstream buffer duration if possible(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11016) - - baseparse: Fix out_buffer leak in frame_free and missing ref in frame_copy(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11056) - - filesink: Fix wrong open() in overwrite mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10990) - - queue: Fix potential use-after-free in log function(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11192) - - GThreadFunc return type fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10955) - - Strange File-sink-file-mode property value in filesink plugin(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4946) - -#### gst-plugins-base - - - GstAudio/VideoDecoder: Fix different seqnum for eos event error(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11136) - - gst-validate reports event::eos-has-wrong-seqnum in GstAudio/VideoDecoder(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4987) - - audioencoder: Remove fixed caps from srcpad(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11131) - - audio-resampler-neon: read array operand by hand to fix build errors with some armv7hf toolchains(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11231) - - audio-resampler: build error with some armv7hf toolchains: 'asm' operand has impossible constraints(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5015) - - compositor: move gst_compositor_init_blend() to element class_init(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11080) - - exiftag: Add missing bounds check and integer overflow protections in various places(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11261) - - exiftag: Ignore invalid fractions with numerator/denominator G_MININT(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11229) - - exiftag: Unmap buffer if parsing a rational number gives a zero denominator(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11210) - - gl: upload: Fix linking glupload with restrictive caps filter(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11050) - - glupload: can't handle caps video/x-raw(memory:GLMemory)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4622) - - glcolorconvert: Fix NULL pointer dereference on buffers without video meta(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10953) - - libs_gstglcolorconvert test failure in 1.28.1(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4935) - - opusenc: Use correct memcpy() size when copying Vorbis channel positions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10984) - - opusenc: using invalid size for memcpy?(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4948) - - playback: Make sure to check for empty/any caps before getting the first structure(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11212) - - rtcp: Fix buffer overread in SDES packet parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10971) - - rtpbuffer: Add validation for CSRC list length(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10957) - - rtsp: gstrtspurl: Parse URL having user without password(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11083) - - rtsp: Does not parse URL with user but no password as valid(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4922) - - subparse: Avoid NULL-pointer dereferences in mdvdsub parsing code(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11256) - - subparse: Fix integer overflow when calculating qttext timestamp(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11265) - - subparse: Replace regex string matching / replacing with plain C string parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11249) - - typefindfunctions: Avoid signed 32 bit integer overflow and OOB reads when parsing LEB128 values(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11259) - - video-converter: fix I420/A420 BGRA/ARGB output on big-endian(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11024) - - video: fix too small default stride for UYVP with odd widths(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11039) - - videorate: Fix unrestored caps on backward PTS(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11038) - - GThreadFunc return type fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10955) - -#### gst-plugins-good - - - audioinvert: fix float truncation in transform_float(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11171) - - audioinvert float path broken(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4998) - - compositor: segfault with force-live=true and no sink pads (regression in 1.28)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4978) - - flvdemux: Avoid assertions on corrupted streams(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11258) - - flvmux: fix race condition on caps get and check(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11235) - - hlsdemux2: fix seekable range for live HLS streams(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11051) - - matroskademux: Fix calculation of bz2 buffer sizes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11263) - - qtqml: Avoid parsing caps on every buffer (same fix for both qt5 and qt6)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11184) - - qtdemux: Add various integer overflow and bounds checks to uncompressed video handling(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11252) - - qtdemux: fix invalid WebVTT timestamps(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11019) - - qtdemux: fix handling of in-between fragments without tfdt(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11067) - - qtdemux: Don't immediately push segment after moov in push mode for fmp4(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11055) - - qtdemux: Preserve Metas and Flags when doing row alignment(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11156) - - qtdemux: Avoid a couple of integer overflows(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11164) - - qtdemux: Various fixes related to audio channel counts(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11253) - - Qt6GLVideoItem: caps update fixed(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10968) - - GstGLQt6VideoItem crashes after source pipeline change(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4944) - - rgvolume: don't apply dBSPL reference level compensation for LUFS values(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11043) - - rtspsrc: Discard early data in ONVIF mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11197) - - rtspsrc: Fix const-correctness issue around strchr() usage(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11217) - - rtph264depay: fix invalid memory access in gst_rtp_h264_finish_fragmentation_unit(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10960) - - rtptwcc: fix feedback packet count wrapping at 255(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10925) - - vmncdec: Set cursormask to NULL to prevent double free(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11264) - - wavenc: Skip writing empty LIST INFO chunk(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11058) - - wavparse: Avoid overflow in length when setting ignore-length=true(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11026) - - wavparse: Fix integer overflow when checking available buffer size for reading cues(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11262) - - wavparse: Fix parsing of RF64 wave files(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11028) - - GThreadFunc return type fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10955) - -#### gst-plugins-bad - - - analytics: Set default pixel-aspect-ratio for inference elements(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11048) - - av1dec: Enable VIDEO_META and VIDEO_ALIGNMENT for pool(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10993) - - av1parse, vp9parse: Remove segment clipping to let downstream handle frame boundaries(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11087) - - av1parse: Avoid signed 32 bit integer overflow and OOB reads when parsing LEB128 values(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11259) - - av1parse: split the alignment and stream type logic(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10912) - - av1parse: Misc fixes 2 typo(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11003) - - av1parse: Invalid assertion in gst_av1_parse_detect_stream_format()(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4919) - - dashsink: test: use playbin3 for DASH playback verification(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10914) - - decklinkvideosink: fix element leak in decklink callback(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11009) - - dtls: unregister signal handlers from connection(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11079) - - gdppay: Fix null pointer dereference on duplicated caps event(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11021) - - h264parse, h265parse: Preserve upstream buffer duration if possible(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11016) - - h264parser: Fix memory leak in gst_h264_parser_parse_nal()(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11060) - - h264parse: Avoid NULL pointer dereferences when freeing partially parsed SPS/MVC data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11251) - - h264: Memory Leak in gst_h264_parser_parse_nal()(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4966) - - h266parser: Avoid integer overflow when parsing profile / tier / level(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11257) - - jp2kdecimator: Avoid integer overflows and divisions by zero on invalid tile configurations(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11239) - - mxfdemux: hardening(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11127) - - nice: Fix leak of webrtc libnice thread(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11112) - - nvcodec: Add capability caching to speed up plugin initialization(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10767) - - tsmux: Fix integer overflow in SCTE35 NULL interval(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11076) - - sctp: Set number of outgoing & incoming streams to the same value(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11209) - - shm: fix shmsink exit code 1 on clean shutdown(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11163) - - soundtouch: Only allow up to 192kHz and 16 channels(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11011) - - srtpenc: preserve ROC when master key is updated for an ongoing session(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10977) - - svtav1: fix "Level of parallelism" property type discrepencies(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10913) - - vkswapper/vksink: Don't advertise unsupported formats(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11160) - - vmncdec: Set cursormask to NULL to prevent double free(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11264) - - vtdec: vp9 support is only enabled in first vtdec element(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4964) - - vtdec: Do not hold the stream lock when pushing out frames(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11099) - - vtdec: Prefer outputting VulkanImage instead of sysmem, fix some leaks, ensure vulkansink provides a window(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11138) - - vtdec: Store supplemental codec support in a global variable(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11045) - - vtdec: Supplemental VideoToolbox decoders now registered via vtutil helper(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11146) - - vtdec: handle decoder error status for iOS, vtenc: restart if VTCompressionSessionCompleteFrames fails(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/erge_requests/11233) - - vulkan: Clear mutex when GstVulkanImageMemory is freed(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11059) - - vulkanvp9dec: Fix case in device-specific factory name(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11117) - - wasapi2: Log target device information(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11202) - - wasapi2sink: Ignore device errors from default device(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11120) - - wayland: display: Add protection when replacing wl_output(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11086) - - waylandsink: fix waylandsink crash when call window flush(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11137) - - waylandsink: Properly reset the tag orientation(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11216) - - wlwindow: fix viewport source outside buffer when play resolution change stream(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11142) - - Fix a couple of const correctness bugs around strchr() usage(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11186) - - GThreadFunc return type fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10955) - - meson: Fix downloading MoltenVK SDK, make it work when meson-installed(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10918) - -#### gst-plugins-ugly - - - No changes - -#### GStreamer Rust plugins - - - burn: yoloxinference: Restrict widths/heights to a multiple of 32(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2967) - - fallbacksrc: Send select-streams event to collection source element(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2923) - - gtk4paintablesink: Error out in NULL->READY if there is no default GDK display(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2932) - - png: implement image repacking when buffer is padded(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2972) - - rtpbin2: don't panic in Drop impl(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2960) - - rtpbin2: improve logs(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2999) - - rtpbin2: jitterbuffer: fix deadline for re-ordered packets(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2998) - - rtpbin2: more log improvements(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2994) - - rtprecv: JitterBufferStream: avoid polling JitterBuffer when possible(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3003) - - speechmatics: fix first_buffer_pts race condition in dispatch_message(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2910) - - speechmatics, textaccumulate: fix flushing issues(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2943) - - threadshare: fix socket leak in ts-udpsink(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2920) - - threadshare: udpsink/src: don't error out failing to send packet to a client / receiving an ICMP error(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2950) - - tracers: Mark enum types as plugin API(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3000) - - transcriberbin: ignore flow errors from transcription branch(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2978) - - webrtc: Silence new clippy warning(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2935) - - webrtc: tests: run signalling server with unique port number(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2995) - - whisper: fix compiling on ARM(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2986) - - whisper: update to latest release 0.16(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2952) - - Don't transform push_event() false returns into flow errors(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2915) - - Switch from `std::os::raw` to `std::ffi` for C types(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3011) - - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2917) - - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3006) - - meson: only add example features when dependencies are found(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2937) - - build: update rustfmt edition to 2024(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2965) - -#### gst-libav - - - avviddec: Refcount codec frame associated with video frame(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11188) - -#### gst-rtsp-server - - - rtsp-client: Lock media when unlinking session medias(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11041) - - rtsp-stream: Clear send_thread when it's freed(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10950) - - Attempt to use freed thread for reusable RTSP media(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4920) - - Fix a couple of const correctness bugs around strchr() usage(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11186) - -#### gstreamer-sharp - - - No changes - -#### gst-python - - - bin: iterator is not nullable(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11036) - -#### gst-editing-services - - - Remove spurious python-embed dependency from libges(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11069) - - Fix a couple of const correctness bugs around strchr() usage(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11186) - -#### gst-devtools, gst-validate + gst-integration-testsuites - - - No changes - -#### gst-examples - - - No changes - -#### gstreamer-docs - - - No changes - -#### Development build environment - - - libxml2: update wrap to v2.15.2(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10979) - -#### Cerbero build tool and packaging changes in 1.28.2 - - - Update to Rust 1.94 and cargo-c 0.10.21(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2157) - - build: include plugin's .pc file in Linux and macOS(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2155) - - inno Windows installer: Restructure features and fix required components triggering on Devel and Debug levels(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2086) - - inno Windows installer: fix environment variable being created outside SessionManager/Environment(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2153) - - inno: assorted fixes for Registry key handling(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2173) - - libpng: update to 1.6.56(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2182) - - libsoup: update to 3.6.6(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2164) - - libsrtp: update to v2.8.0(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2168) - - soundtouch: update to 2.4.1(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2189) - - packaging: Fix missing devel payloads for gstreamer-1.0-python(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2172) - - recipe: do not run symbolication if nodebug(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2151) - - wheels: Add a new meta-package 'gstreamer_bundle'(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2147) - - GStreamer 1.28 installer issue. GSTREAMER_1_0_ROOT_MSVC_X86_64 env variable(https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/574) - - GStreamer 1.28.1 Windows doesn't have python-devel component(https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/576) - - GStreamer 1.28.1 Windows uninstaller doesn't remove the registry values(https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/575) - - Shipping a pkg-config for consuming Android binaries on macOS(https://gitlab.freedesktop.org/gstreamer/cerbero/-/work_items/522) - - Fixes for cross-compiling to android on macOS and consuming the built binaries(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2188) - - Adjust CI for xcframework iOS tutorials(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2186) - -#### Contributors to 1.28.2 - -Albert Sjölund, Alicia Boya García, Adrian Perez de Castro, -Andoni Morales Alastruey, Charles, Cameron O'Neal, Cole Richardson, -Daniel Morin, Dominique Leroux, Emil Ljungdahl, Fabian Orccon, François Laignel, -Frédéric Chanal, Haihua Hu, Havard Graff, He Junyan, Hou Qi, James Liu, -Jan Alexander Steffens (heftig), Jan Schmidt, Jeongmin Kwak, Johan Sternerup, -László Károlyi, L. E. Segovia (Amyspark),Marko Kohtala, Mathieu Duponchelle, -Matthew Waters, Mattia, Michael Olbrich, Nicolas Dufresne, Nirbheek Chauhan, -Ognyan Tonchev, Olivier Crête, Pablo García, Pavel Guzenfeld, Per Enstedt, -Peter Stensson, Piotr Brzeziński, Robert Mader, Sanchayan Maity, -Sebastian Dröge, Sergey Radionov, Seungha Yang, Seungmin Lee, Stéphane Cerveau, -Taruntej Kanakamalla, Thibault Saunier, Tim-Philipp Müller, Tobias Rapp, -Tobias Schlager, Tulio Beloqui, Vadym Markov, Vitaly Vlasov, Vivia Nikolaidou, -Vivienne Watermeier, Wojciech Kapsa, Xabier Rodriguez Calvar, 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.28.2 - -- List of Merge Requests applied in 1.28.2(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.2) -- List of Issues fixed in 1.28.2(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?sort=created_date&state=closed&milestone_title=1.28.2) - -<a id="1.28.3"></a> - -### 1.28.3 - -The third 1.28 bug-fix release (1.28.3) was released on 11 May 2026. - -This release only contains bugfixes and important security fixessecurity. -It *should* be safe to update from 1.28.x and we recommend you do so at your -earliest convenience. - -security: https://gstreamer.freedesktop.org/security/ - -#### Highlighted bugfixes in 1.28.3 - - - Various security fixessecurity and playback fixes - - applemedia: vtdec stability, MoltenVK integration and planar video format handling fixes - - audioresample: Fix regression on armv7hf - - bpmdetect: Fixes for stereo and multi-channel modes - - devicemonitor: wait for start thread to finish when listing devices so all the info is there for e.g. v4l2 provider - - fallbacksrc: Add fallback-source and enable-dummy properties - - nvidia: fix cudaconvert performance regression and nvdec device creation regression - - opengl: add GBRA swizzle support, and fix glcolorconvert vertical flip issue on crop - - rtspsrc: include user-agent property in HTTP tunnel requests and fix mikey regression - - threadshare: add leaky mode to dataqueue-based elements - - v4l2: fix negotiation error when trying to force stateful decoders to output dmabufs - - webrtcsink: Add support imx8mp vpuenc_hevc hardware H.265 encoder - - cerbero: Extend gst-plugins-rs melding to Darwin platforms for smaller binary sizes and static linking improvements - - inno Windows installer fixes, including silent install mode via the command line - - macOS: provide script to allow uninstalling the package; relocate absolute paths to Python.framework in wheels - - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -#### gstreamer - - - pad: fix potential buffer leak in get_range_failed error handler(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11284) - - aggregator: Fix documentation(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11488) - - allocator: Use g_try_malloc() instead of g_malloc() for sysmem(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11569) - - baseparse: Fix memory leak when subclass returns error(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11567) - - bitwriter: Allow unsetting set bits when overwriting them(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11471) - - devicemonitor: Wait for start thread to finish when listing devices(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11554) - - streams: Add METADATA to the valid stream flags for serialization(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11566) - - value: On buffer deserialization errors first unmap the buffer and then unref it(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11590) - - gst-inspect-1.0: type for string caps fields should be 'string' not 'gchararray'(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11460) - -#### gst-plugins-base - - - appsink, appsrc: Allow passing NULL callbacks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11431) - - appsrc: Fix dropped counting with bufferlist(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11312) - - audioaggregator: Don't drop pending input buffers on sinkpads on srcpad caps changes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11483) - - audioaggregator: Don't reset samples_per_buffer unless sample rate / output-buffer-duration has changed(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11487) - - audioaggregator: Don't try converting buffers on caps changes if impossible(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11479) - - audioresample: Fix extra samples produced at speech-to-silence transitions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11439) - - audio-resampler-neon: fix Thumb encoding and use Clang O2 calculation for strides(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11491) - - audio sounds strange on release 1.28.2 for armv7hf(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5075) - - decodebin2: fix leak of endpads list on shutdown while exposing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11470) - - discoverer: Take the DISCO_LOCK while parsing stream topology(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11539) - - exiftag: Use a hashtable instead of a linked list for storing the pending tags(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11364) - - gl: add GBRA swizzle support(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11422) - - id3v2: Add input validation and refactor id3v2_ununsync_data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11320) - - id3v2: Check valid frame sizes more(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11380) - - opengl: Fix glcolorconvert vertical flip issue on crop(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11413) - - glcolorconvert: GBRA input hits unreachable swizzle path(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5060) - - subparse / samiparse: Various robustness fixes and minor other fixes.(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11362) - - subparse: Fix memory leakage for text colour and background colour(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11359) - - subparse: O(N^2) complexity in SAMI parser causes timeout with crafted large input(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5046) - - tag: Prevent ubsan and wrong fraction usage(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11293) - - tag: Off-by-one checking for id3v2 unnsync tag parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5049) - - video: add precondition check on dma helpers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11451) - - videodmabufpool: Break ref cycle between the pool and its thread(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11337) - -#### gst-plugins-good - - - adaptivedemux/hlsdemux assertions / fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11572) - - avidemux: Fix divide by zero if VPRP contains fields==0(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11305) - - avidemux: Divide-by-Zero in vprp parser(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5027) - - isomp4: Fix memory leak when file is corrupted(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11564) - - isomp4: qtdemux: Add bounds checks for ESDS descriptors(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11382) - - matroska: Fix wrong object type bug(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11561) - - qml6glsink: Fix redraw issues on buffer change(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11338) - - qtdemux: Check for minimum stride requirements and width/height constraints with uncompressed video(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11591) - - rtspsrc: mki is optional upon crypto update(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11448) - - rtspsrc: mikey without mki failure(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5050) - - rtspsrc: include user-agent property in HTTP tunnel requests(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11286) - - v4l2: object: Fix caps filtering in caps negotiation(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11288) - - v4l2transform: release input buffers earlier(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11368) - - wavparse: Remove assertion about upstream file size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11506) - - wavparse: recover from invalid av_bps instead of failing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11331) - - wavparse: Assert and execute an integer overflow on invalid duration(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5077) - - Require C std gnu11 or c11, remove custom 'restrict' definition, fixing build with Qt 6.11(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11563) - -#### gst-plugins-bad - - - ajasink: Correctly set reference source(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11309) - - analytics: fix meta transform function for copy cases(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11476) - - android: an AMC video decoder is always found, fix decoding of constrained-baseline files(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11551) - - androidmedia: Free element name after use for logging(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11573) - - applemedia: Don't expose unsupported formats for Vulkan/GL(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11498) - - applemedia: Fix MoltenVK usage with vtdec-imported textures(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11285) - - applemedia: Fix test instability and nofork issues(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11461) - - applemedia: Require Xcode 12.4 for all builds(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11369) - - applemedia: fix planar CoreVideo buffer plane offsets(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11432) - - applemedia: Unable to build on MacOS 12 1.28.1(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4941) - - av1parse: Fix null pointer deference(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11529) - - bpmdetect: Fix calculation of number of samples for >1 channels(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11297) - - codecparsers: Stack Buffer Overflow in H.265 Buffering Period SEI Parser(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5036) - - cudaconvert: fix performance regression caused by double precision floating point constants(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11400) - - decklink: Fix various refcount issues and related leaks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11558) - - h263parse: Fix wrong ratio masking(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11537) - - h263parse: Missing handling of reserved invalid EPAR_D value(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11535) - - h265parser: use sub-layer 0 CPB count in buffering_period SEI loops(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11339) - - h266parser: Add missing clearing function for H266 SEI message(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11571) - - h266parser: Avoid out-of-bounds write when parsing PPS tile slices(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11588) - - mpegdemux: Add various bounds checks related to PES header parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11587) - - interlace: Revert "Drop framerate from query caps of sinkpad"(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11428) - - mpegtsdemux: Various fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11454) - - mpegtspacketizer: Avoid potential overflow(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11307) - - mse: Also disable the library if the meson option is disabled(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11473) - - mxf: Fix multiple writing / parsing issues when handling VANC packets(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11592) - - mxfdemux: Fix reverse temporal offsets array upper bounds check(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11589) - - mxfmux: aes-bwf: Use correct size when serializing user data / channel status mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11345) - - mxf: Theoretical heap Buffer Overflow in MXF AES3 Audio Descriptor write_tags(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5037) - - nvcodec: Fix missing adapter-luid when loading decoders(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11329) - - nvdec regression in 1.28.2: "Couldn't create new device with adapter luid 0"(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5031) - - pngparse: Fix Use-after-free bug(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11531) - - qml6d3d11sink: Clear texture on Paused-to-Ready transition(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11520) - - qt6d3d11: fix null check in SetForceAspectRatio()(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11575) - - tsdemux: Fix parsing of PES ESCR and following PES header fields(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11324) - - tsdemux: Fix segfault when trying to handle SCTE-35 with incorrect program specified(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11294) - - va: do not post error message when push fails(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11504) - - vkupload/vkdownload: Fix possible corrupted image due to mismatched stride/padding(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11387) - - vtdec: Avoid blocking decoder output callback(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11430) - - vtdec: Avoid locking up during a decoder reset(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11395) - - vtdec: deadlock when restarting pipeline(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5029) - - vtdec: fix deadlock when restarting pipeline(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11343) - - webrtc: take ownership of src_bin and sink_bin and don't leak error message(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11420) - - Require C std gnu11 or c11, remove custom 'restrict' definition, fixing build with Qt 6.11(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11563) - -#### gst-plugins-ugly - - - No changes - -#### GStreamer Rust plugins - - - fallbacksrc: Add fallback-source and enable-dummy properties(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3017) - - isobmff: Change caps updates in test to not be delayed(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3041) - - quinn: Disable tests which were flaky(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3030) - - quinnwtsrc/sink: Fix session close(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3034) - - rtpbin2: examples: fix audio resyncs, stream offsets and frame drops(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3029) - - rtprecv: extend jitter accounted for(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3019) - - threadshare: add leaky mode to dataqueue-based elements(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3036) - - tracers: feature gate remaining PluginAPIFlags makers behind doc(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3013) - - webrtcsink: actually allow custom signaller to be set(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3043) - - webrtcsink: Adding imx8mp vpuenc_hevc support for 265(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3044) - - Switch from `std::os::raw` to `std::ffi` for C types(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3011) - - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3021) - - all: address clippy 1.95.0 suggestions(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3037) - - Fix new 1.95 clippy warnings(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3048) - -#### gst-libav - - - No changes - -#### gst-rtsp-server - - - No changes - -#### gstreamer-sharp - - - No changes - -#### gst-python - - - No changes - -#### gst-editing-services - - - Plug memory leaks reported running valgrind on our testsuite(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11284) - - Fix use-after-free in GESUriSource decodebin callbacks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11375) - - Fix use-after-free in structured-interface and asset cache(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11349) - -#### gst-devtools, gst-validate + gst-integration-testsuites - - - Plug memory leaks reported running valgrind on our testsuite(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11284) - -#### gst-examples - - - No changes - -#### gstreamer-docs - - - android: trim tutorials by using fewer plugins, ensure that an AMC video decoder is always found, fix decoding of constrained-baseline files(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11551) - -#### Development build environment - - - Add AGENTS.md file to let agents know what the participation rules are(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11475) - - libffi.wrap, proxy-libintl.wrap: switch to wrap-file, g-i: add support for wrap-file libffi/libintl(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11444) - -#### Cerbero build tool and packaging changes in 1.28.3 - - - cerbero: Fix entering into the build environment, add explicit non-interactive mode(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2199) - - cerbero: Fix invalid target_subsystem when targeting Android on macOS(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2209) - - cerbero: Fixes for background build setup(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2201) - - cerbero: Fixes for background mode on macOS(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2183) - - cerbero: Support differently named Xcode for iOS and tvOS builds(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2212) - - cmake: Fix destination for the Java plugin initializers(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2241) - - gst-plugins-rs: Extend melding to Darwin platforms(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2202) - - gst-plugins-rs: fix MSVC link errors for cargo binary consumers(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2237) - - libffi.recipe: Update to latest 3.2.9999.5 release, update proxy-libintl to 0.5(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2210) - - libproxy: add backend, gio module and add to gstreamer-1.0-net.package(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2213) - - osxrelocator: relocate absolute paths to Python.framework(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2211) - - srt: update to 1.5.5(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2219) - - vvdec: upgrade to 3.1.0(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2214) - - wheels: rename and placehold the msvc runtime wheel(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2222) - - wheels must have static dependency metadata, no conditional dep on gstreamer-msvc-runtime(https://gitlab.freedesktop.org/gstreamer/cerbero/-/work_items/573) - - wheels: Version number needs to follow PEP 440(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2223) - - gstreamer_python: hardcoded path for libgstpython.dylib(https://gitlab.freedesktop.org/gstreamer/cerbero/-/work_items/577) - - inno: do not automatically create envvars or Registry keys with portable mode enabled(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2238) - - inno Windows installer: allow setting User or Admin-level install via command line(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2220) - - ios: Execute postinstall template copy only with user level installs(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2226) - - m4: Update to 1.4.21(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2236) - - macos: document or provide a way to uninstall the package(https://gitlab.freedesktop.org/gstreamer/cerbero/-/work_items/370) - - osx: Add uninstaller script via osascript(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2224) - - Update to Rust 1.95 / rustup 1.29.0 / cargo-c 0.10.22(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2230) - -#### Contributors to 1.28.3 - -Anders Hellerup Madsen, Andreas Frisch, Andrew Yooeun Chun, Arthur Chan, -Dennis Han, Bartel Wilhelm, Dominique Leroux, Edward Hervey, Fabian Orccon, -François Laignel, Jan Schmidt, Jeongmin Kwak, Leonardo Salvatore, -L. E. Segovia, Mathieu Duponchelle, Michael Olbrich, Michiel Westerbeek, -Monty C, Nicolas Dufresne, Nirbheek Chauhan, Ognyan Tonchev, Philippe Normand, -Philipp Wallrich, Piotr Brzeziński, Sanchayan Maity, Santiago Carot-Nemesio, -Sebastian Dröge, Seungha Yang, Shigeharu Kamiya, Thibault Saunier, -Tim-Philipp Müller, Tjitte de Wert, Tobias Koenig, Tomasz Bujewski, -Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Xabier Rodriguez Calvar, -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.28.3 - -- List of Merge Requests applied in 1.28.3(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.3) -- List of Issues fixed in 1.28.3(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.3) - -<a id="1.28.4"></a> - -### 1.28.4 - -The fourth 1.28 bug-fix release (1.28.4) was released on 12 June 2026. - -This release only contains bugfixes and important security fixessecurity. -It *should* be safe to update from 1.28.x and we recommend you do so at your -earliest convenience. - -security: https://gstreamer.freedesktop.org/security/ - -#### Highlighted bugfixes in 1.28.4 - - - Various security fixessecurity and playback fixes - - audioaggregator: fixes for conversion of in-progress buffers when input caps change - - audioresample: more armv7 fixes - - camerabin: Fix caps negotiation failure when starting video capture - - Debug logging performance improvements - - fmp4mux: Fix draining in chunk mode after partial GOPs were drained - - gldownload: fix handling of directly imported dmabufs from glupload - - matroskamux: Write ReferenceBlock for non-keyframe video in BlockGroups - - rtp2: session: add "stats" property - - rtspsrc2: handle parse errors with TCP interleaved more gracefully where the server just drops data - - rtspsrc2: implement support for SRTP, authentication, HTTP tunnelling, keep alive, stream selection, TLS validation, latency configuration - - st2038combiner: only forward video pad segment, fixing issues for cases where the ST2038 segment differs - - Wavpack audio: Various channel and channel-mask related fixes - - webrtc, sdp: set level in negotiated caps only if level asymmetry not allowed, fixing an H.264 negotiation regression with higher resolutions - - androidmedia: add various new codec mime / profile mappings (WMV, VC1, AC3/EAC3/AC4, AAC, H265) and support decoding FLAC - - d3d12decoder: Fix decoding on Qualcomm GPUs on ARM64 Windows - - wasapi2src: fix hang when using loopback-target-pid (regression from 1.26) - - cerbero: update to Rust 1.96, plus glib-networking OpenSSL backend fixes - - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -#### gstreamer - - - bufferpool: avoid leaking partially preallocated buffers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11664) - - caps: fix multiple caps leaks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11756) - - datetime: Improve correctness of ISO-8601 string parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11616) - - info: Don't use fwrite() on Windows for debug logging(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11632) - - info: Use stack allocation for messages smaller than 1kB(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11624) - - task: Fix racy tests by making unref deterministic(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11638) - - value: fix crash when converting NULL G_TYPE_VALUE_ARRAY to G_TYPE_STRING(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11737) - - registry: detect libgstreamer load from Android container and skip canonicalization(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11612) - - tests: Fix build with glib <= 2.67.2(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11618) - -#### gst-plugins-base - - - audio-resampler-neon: fix accumulated stride(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11703) - - audio-resampler-neon: re-increment address(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11760) - - audioaggregator: Remove brittle conversion of in-progress buffers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11775) - - discoverer: Lock the DISCO_LOCK whenever accessing the streams list(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11840) - - gl: egl: Set TRANSFER_NEED_DOWNLOAD flag(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11710) - - gldownload: Can't handle directly imported dmabufs from glupload(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4965) - - glupload: fix memleak on failure path(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11640) - - glwindow: Allow setting a NULL window handle(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11611) - - id3v2: Don't modify const data and check for enough data when reading RVA2 tags(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11808) - - id3v2: Don't unnecessarily assert on size==0 when unsyncing data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11641) - - pbutils: Add NULL check for tmpcaps parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11746) - - pbutils: Fix possible null dereference when empty string is provided(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11747) - - rtcpbuffer: Add some missing bounds checks when parsing SDES(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11796) - - sdp: keep level-asymmetry-allowed in the caps(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11727) - - subparse: Avoid zero and extreme fps when parsing mdvdsub subtitles(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11810) - - uridecodebin3: Use PLAY_ITEMS_LOCK for URI-related getter(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11633) - - uridecodebin: Protect missing_plugin_errors list from concurrent access(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11615) - - videodmabufpool: Fix debug category(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11677) - - xmptag: Correctly initialize pointer to the end of the input array(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11806) - -#### gst-plugins-good - - - matroska-mux: Write ReferenceBlock for non-keyframe video in BlockGroups(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11722) - - osxaudio: Fix stack overflow with >64ch audio devices(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11658) - - qtdemux: parse mastering luminance as u32 instead of u16(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11661) - - qt6: remove an unneeded QOpenGLContext->makeCurrent()(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11833) - - rtph265depay: fix memory leak(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11715) - - sbcparse: Add bounds checking to header parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11817) - - tests: mpegaudioparse: Fix raciness in the state change handling(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11724) - - v4l2: Fix buffer leak on qbuf failure(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11759) - - wavpack: Various channel / channel-mask related fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11757) - - wavpackdec: Avoid integer overflow when calculating output buffer size and related fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11811) - - wavpackenc fails for channels > 2(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5129) - -#### gst-plugins-bad - - - ahcsrc: Register exposure-mode property for GstPhotography interface(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11613) - - amc: Don't try printing NULL caps(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11688) - - amcvideodec: Don't keep crop-rectangle uninitialized if not specified(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11686) - - androidmedia: Add various new codec mime / profile mappings(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11614) - - androidmedia: Don't print error logs if downstream returns flushing / EOS(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11610) - - androidmedia: Fix typo in error message(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11692) - - androidmedia: support decoding flac(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11647) - - av1parser: Fix bytes/bits confusion when parsing tile data size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11827) - - camerabin: Fix caps negotiation when starting video capture(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11774) - - d3d12decoder: Fix decoding on Qualcomm GPUs(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11781) - - mpegtspacketizer: Do not seek before the first PCR(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11786) - - mxfdemux: Use unsigned integers in more places and don't truncate 64 bit integers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11837) - - svtav1enc: Scale MDCV and CLL to SVT-AV1's expected units(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11609) - - va: drm: Fix fd leak and return type in create_va_display(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11642) - - vajpegdecoder: Validate that enough data is available for the current JPEG segment(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11834) - - vulkanupload: Don't reallocate the pool when the framerate changes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11628) - - wasapi2: Don't reset process loopback capture client(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11683) - - wasapi2src hangs when using loopback-target-pid in GStreamer 1.28 (regression from 1.26)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4878) - - tests: Fix build with glib <= 2.67.2(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11618) - - meson: fix building -bad tests with disabled mse(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11617) - -#### gst-plugins-ugly - - - realmedia: Fixes for various out-of-bounds reads(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826) - -#### GStreamer Rust plugins - - - fmp4mux: Fix draining in chunk mode after partial GOPs were drained(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3062) - - Rtp2Session: add ParamSpec for property stats(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3061) - - rtspsrc2: Add support for SET_PARAMETER and GET_PARAMETER using signals(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3095) - - rtspsrc2: Add support for SRTP(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3086) - - rtspsrc2: Add TLS support(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3064) - - rtspsrc2: handle parse errors with tcp interleaved rtsp more gracefully(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3077) - - rtspsrc2: Implement authentication support(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3063) - - rtspsrc2: Implement support for HTTP tunnelling(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3065) - - rtspsrc2: Implement support for keep alive(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3066) - - rtspsrc2: Implement support for streams(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3078) - - rtspsrc2: Include user-agent property in HTTP tunnel requests(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3067) - - rtspsrc2: Support TLS validation flags for server certificate(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3104) - - rtspsrc2: Support latency configuration property(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3100) - - rtspsrc2: Update README with implemented features(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3069) - - st2038combiner: only forward video pad segment(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3097) - - webrtc: set level in negotiated caps only if level asymmetry not allowed(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3089) - - webrtcsink: handle payloader timestamp-offset prop type variants(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3081) - - webrtcsrc, webrtcsink: Fix SDP renegotiation bugs(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3098) - - Added script to convert git sourced dependencies to crates.io packages(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3084) - - gst-plugin-version-helper: Relax version requirements and update to 0.8.4(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3072) - -#### gst-libav - - - avdemux: Always free AVIOContext and open failure and don't dereference NULL AVFormatContext(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11823) - - avprotocol: Don't free GstFFMpegPipe when closing the AVIOContext(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11820) - -#### gst-rtsp-server - - - RTSPMediaFactory: make create_pipeline virtual method introspectable(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11726) - -#### gstreamer-sharp - - - No changes - -#### gst-python - - - No changes - -#### gst-editing-services - - - No changes - -#### gst-devtools, gst-validate + gst-integration-testsuites - - - use relative paths in the printed validate command, fix flaky tests due to non-deterministic pad task unref(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11646) - -#### gst-examples - - - No changes - -#### gstreamer-docs - - - No changes - -#### Development build environment - - - AGENTS.md: Add explicit exception for including tool output in issue descriptions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11728) - -#### Cerbero build tool and packaging changes in 1.28.4 - - - Update to Rust 1.96 / cargo-c 0.10.23(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2261) - - Read recipe files as UTF-8(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2263) - - glib-networking: Backport various OpenSSL backend fixes(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2251) - - pkg-config.recipe: Never enable --define-prefix(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2259) - - source: serialize tarball extracts that share an unpack path(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2252) - -#### Contributors to 1.28.4 - -Albert Sjölund, Arthur Chan, Carlos Falgueras García, Cheah, Vincent Beng Keat, -dec05eba, Dino Spiller, Edward Hervey, François Laignel, Gordon Smith, Hou Qi, -Jakub Adam, Jan Alexander Steffens (heftig), Jan Schmidt, L. E. Segovia, -Marcus Hanestad, Mathieu Duponchelle, Matthew Waters, Niclas Götting, -Nirbheek Chauhan, Piotr Brzeziński, Qian Hu (胡骞), Rares Branici, Robert Mader, -Sanchayan Maity, Sebastian Dröge, Seungha Yang, Seungmin Lee, Stéphane Cerveau, -Suhwan Choi, Taruntej Kanakamalla, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, -Vivia Nikolaidou, 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.28.4 - -- List of Merge Requests applied in 1.28.4(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.4) -- List of Issues fixed in 1.28.4(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.4) - -<a id="1.28.5"></a> - -### 1.28.5 - -The fifth 1.28 bug-fix release (1.28.5) was released on 08 July 2026. - -This release only contains bugfixes and important security fixessecurity. -It *should* be safe to update from 1.28.x and we recommend you do so at your -earliest convenience. - -security: https://gstreamer.freedesktop.org/security/ - -#### Highlighted bugfixes in 1.28.5 - - - Various security fixessecurity and playback fixes - - Fix subtitles cause green flickering with VA decoders on AMD GPUs - - core: Fix sticky event raciness when pads are linked mid-push - - appsrc: Uniformly handle EOS events being pushed - - audio-resampler-neon fails to build for targets with neon but without thumb - - avtp: Correct ptime generation from avtp timestamp - - fmp4mux: Various fixes for splitting at fragment boundaries - - gldownload: fix wrong DRM format negotiation causing R/B channel swap - - gdkpixbufdec: Drop rank to NONE and handle resolution/format changes - - gopbuffer: add support for H.266/VVC - - h265decoder: Fix HEVC with alpha decoding - - mp4mux: fix AC-3 template caps so muxer can accept input from ac3parse - - mpegtsmux: Always assign PTS to output buffers in CBR mode - - mpegtsmux: Output buffers with PCR-only bitrate-padding packets have wrong PTS - - rtcpbuffer: Fix parsing of SR+SDES compound packets (regression from security fix) - - rtspsrc2: Allow disabling SRTP/SRTCP encryption and SRTP authentication - - tsdemux: Improve PTS rollover handling in ignore-pcr mode, fixing intermittent corruption with YouTube HLS streams - - textaccumulate: output joined single buffer, add list as meta - - threadshare: add ts-clocksync - - webrtcsink: negotiation fixes and improvements - - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -#### gstreamer - - - caps: fix field name leak in gst_caps_structure_simplify(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11914) - - info: Use a more optimized version of GST_TIME_ARGS(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11995) - - pads: Fix sticky event raciness when linked mid-push(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11948) - - typefindhelper: Drop unnecessary check for factories without a function(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12020) - - Use named pipes when spawning gst-ptp-helper on Windows(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11994) - -#### gst-plugins-base - - - appsink: Clear local sample storage when flushing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11947) - - appsrc: Uniformly handle EOS events being pushed(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11925) - - audio-resampler-neon fails to build for targets with neon but without thumb(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5164) - - encoding-target: Validate that encoding profile name is UTF-8 before using it(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12068) - - gldownload: fix wrong DRM format negotiation causing R/B channel swap(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11997) - - opusdec: Don't use any channel positions for >64 channels(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12067) - - rtcpbuffer: Fix parsing of SR+SDES compound packets (regression from security fix)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12033) - - subparse: Don't allow very small framerates for microdvd subtitles(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11852) - - typefind: assorted fixes for the image-rs plugin typefinding(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11972) - - typefindhelper: Drop unnecessary check for factories without a function(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12020) - - WBMP typefinding rejects a valid 1280x800 file(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5001) - - typefinding: detect animation on PNG (and WebP, GIF, AVIF)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4986) - - typefindfunctions: remove Sun and Andrew raster format typefinders(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11901) - - uridecodebin3: deactivate input_item in erroneous ready->paused transition(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11952) - - vorbistag: Check for enough base64 data before trying to decode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11856) - - xmptag: Don't allocate -1 bytes of memory if there's only a single tag(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11853) - - xmptag: Handle fractions with 0 denominator as invalid(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11922) - -#### gst-plugins-good - - - flacenc: Fix g_object_notify on loose-mid-side-stereo property(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11860) - - gdkpixbufdec: Drop rank to NONE and handle resolution/format changes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12060) - - gdkpixbufdec: stop advertising Sun and Andrew raster formats(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11901) - - gdkpixbufdec announces unsupported raster mediatypes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5004) - - matroskademux: Don't pass non-GstElement pointers to GST_ELEMENT_ERROR(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11918) - - matroska: Update lzo decompression implementation from latest ffmpeg(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12079) - - mp4mux: fix AC-3 template caps so muxer can accept input from ac3parse(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12028) - - pngdec: fix wrong macro being used for ICC support test(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11972) - - qtmoovrecover: Validate box sizes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12058) - - rtpceltdepay: error out if anyone tries to use this element(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12039) - - rtpjpegdepay: Ensure that quantization table is big enough(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12071) - - rtpsbcdepay: Check for available data in the adapter before getting data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12059) - - shapewipe: Fix missing mutex unlock in shutdown path(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12016) - - wavparse: Avoid NULL pointer dereference when parsing adtl in push mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12078) - -#### gst-plugins-bad - - - amcviddec: Fix double-free happening when codec gets reconfigured(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11902) - - avtp: Correct ptime generation from avtp timestamp(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11934) - - ccconverter: Use truncated length when converting CEA608 raw to CEA708 CDP(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12074) - - curlsmtpsink: Use the correct content-type if known(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11991) - - d3d12: Fix command list leak(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12006) - - dtlsconnection: Allocate large enough buffer for the peer certificate subject DN(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12076) - - h264parse: Check for enough slice header data being available(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11941) - - h2654parse: Unset GValue in every code path(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11921) - - h265decoder: Fix HEVC with alpha decoding(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11916) - - h266parser: Avoid out-of-bounds read if too many exp slices are signalled(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12069) - - h266parser: Check bounds before writing to CTU entrypoint array(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12070) - - h266parser: Check aspect ratio index against lookup table length(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11942) - - h266parser: Heap-allocate parameter sets before parse to avoid stack overflow(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11990) - - h266parser: Use long bit skipping function for potentially large values(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11920) - - mpeg4videoparse: Ensure enough config data is available before extracting profile/level(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12057) - - mpegpsdemux: Release stream lock when seeking fails(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11871) - - mpegtsmux: Always assign PTS to output buffers in CBR mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11955) - - mpegtsmux: Output buffers with PCR-only bitrate-padding packets have wrong PTS(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5151) - - mxfdemux: fix essence track offsets array population(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11892) - - netsim: Fix racy test failures(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11933) - - pcapparse: Add missing bounds checks to ensure packets are large enough(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11874) - - pnmdec: Avoid overflows when calculating frame sizes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11926) - - qroverlay: Fix use after free bug(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11960) - - rfbsrc: Use correct bpp for copying hextile data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12077) - - rfbsrc: Validate framebuffer update rectangles against the framebuffer size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11868) - - rtmp2: Don't retry on G_IO_ERROR_TIMED_OUT(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11889) - - rtmp2: Remove socket timeout after handshake completes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11890) - - rtpsink: fix mutex not unlocked on invalid URI in set_property(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11949) - - tsdemux: YouTube HLS streams have intermittent corruption(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5141) - - tsdemux: Improve PTS rollover handling in ignore-pcr mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11905) - - v4l2decoder: Fix media_fd leak when video_fd open fails(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11999) - - va: surfacecopy: get surface's image in `gst_va_surface_copy`(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11935) - - va: VOBSUB: compositing error with VA decoder in NV12(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5014) - - va: radeonsi: subtitles cause green flickering(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/3906) - - va: radeonsi: Subtitles cause green flickering with VA decoders(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5165) - - videoparsers: Always clear LCEVC enhancement data when resetting frame(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11987) - - videoparsers: Leak of LCEVC user data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5192) - - vnmdec: Avoid integer overflows when rectangle positions and sizes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11876) - - vp9parser: Check that enough data is available for parsing superframe info(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12073) - - webrtcbin: validate remote dtls certificates(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11963) - - webrtcsdp: Fix inverted fingerprint existence logic(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12075) - -#### gst-plugins-ugly - - - asfdemux: Ensure that enough data is available for reading all replicated extensions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12072) - -#### GStreamer Rust plugins - - - fmp4mux: Various fixes for splitting at fragment boundaries(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3130) - - gopbuffer: add support for H.266/VVC(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3138) - - onvifmeta2relatiometa: fix inversion between width and height(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3110) - - rtprecv: fix buffer list split handling(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3115) - - rtspsrc2: digest authentication fixes(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3139) - - rtspsrc2: Allow disabling SRTP/SRTCP encryption and SRTP authentication(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3148) - - textaccumulate: output joined single buffer, add list as meta(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3150) - - threadshare: add ts-clocksync(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3136) - - webrtcsink: add support for h264 profile constrained-high(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3126) - - webrtcsink: allow change of interlace-mode in the input caps(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3129) - - webrtcsink: allow renegotiation if caps is missing interlace-mode(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3128) - - webrtcsink: fix negotiation for nvh264enc in the GLMemory case(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3134) - - webrtcsink: read rav1enc bitrate as i32(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3113) - - webrtcsrc, webrtcsink: Fix SDP renegotiation bugs(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3098) - - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3142) - -#### gst-libav - - - No changes - -#### gst-rtsp-server - - - No changes - -#### gstreamer-sharp - - - No changes - -#### gst-python - - - No changes - -#### gst-editing-services - - - tests: Implement assertion check macros as functions to speed up compilation(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12012) - -#### gst-devtools, gst-validate + gst-integration-testsuites - - - No changes - -#### gst-examples - - - No changes - -#### gstreamer-docs - - - No changes - -#### Development build environment - - - No changes - -#### Cerbero build tool and packaging changes in 1.28.5 - - - No changes - -#### Contributors to 1.28.5 - -Alexei Walisiewicz, Amy Ko, Arthur Chan, Benoît Mauduit, Christopher Meltzer, -Christoph Seitz, Daniel Morin, Diego Nieto, Dominique Leroux, Erik Strandh, -François Laignel, Gordon Smith, Jan Alexander Steffens (heftig), Jan Schmidt, -Jeehyun Lee, Jerome Colle, Julian Bouzas, L. E. Segovia, Marcus Hanestad, -Mathieu Duponchelle, Matthew Waters, Nirbheek Chauhan, Pablo García, -Philippe Normand, Piotr Brzeziński, Qi Hou, Sanchayan Maity, Sebastian Dröge, -Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim-Philipp Müller, -Tomas Granath, 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.28.5 - -- List of Merge Requests applied in 1.28.5(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.5) -- List of Issues fixed in 1.28.5(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.5) - -<a id="1.28.6"></a> - -### 1.28.6 - -The sixth 1.28 bug-fix release (1.28.6) was released on 05 August 2026. - -This release only contains bugfixes and important security fixessecurity. -It *should* be safe to update from 1.28.x and we recommend you do so at your -earliest convenience. - -security: https://gstreamer.freedesktop.org/security/ - -#### Highlighted bugfixes in 1.28.6 - - - Various security fixessecurity and playback fixes - - playbin3, playbin: fix stalls after re-enabling previously disabled subtitles - - Fix regression in core if a pad is re-linked while changed sticky events are being pushed - - dtls/webrtc: fix some issues with OpenSSL 4.0.0 - - RTP retransmission bitrate estimation fixes - - Fix RTP depayloading of SMPTE ST291 frames with multiple ANC packets - - Add H.266 muxing support to the Rust (f)mp4 muxers - - Better handling of input buffers without timestamps in Rust (f)mp4 muxers - - webrtcsink H.264 level/profile negotiation fixes and support for nvv4l2h265enc encoder - - SMPTE ST2038 ancillary metadata and closed caption combiner improvements - - Fix SEI insertion into H.265/HEVC streams with alpha - - Windows D3D11 WinRT screen capture element fixes - - Improved coded buffer size handling for VA encoders - - Textaccumulate: various tweaks how the element outputs text, plus better handling of French punctuation - - hlssink3: improved handling of input buffers without timestamps - - Fix build against FFmpeg 9.0 - - cerbero: fix Windows packages binary size increase regression; upgrade libsrt recipe to 1.5.6 - - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -#### gstreamer - - - baseparse: Don't reset infer_ts/pts_interpolate subclass configuration in reset() and related fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12102) - - cpuid: fix AArch64 NEON detection to check HWCAP_ASIMD, not HWCAP_NEON(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12224) - - pad: fix livelock when pushing changed sticky events when the pad is re-linked(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12142) - - valve: Don't send a reconfigure even when setting the `drop` property to the same value(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12082) - - meson: Make the g-ir-scanner init section consistent across modules(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12163) - - meson: use dependency('dl') instead of cc.find_library('dl')(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12154) - -#### gst-plugins-base - - - gl/eagl: Fix GstGLUIView leak from duplicate __bridge_retained(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12118) - - playsink: don't wait for text pad block during reconfiguration(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12178) - - typefind: Actually register various forgotten typefinders(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12098) - - meson: Make the g-ir-scanner init section consistent across modules(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12163) - - Remove incorrect G_GNUC_CONST annotation for _get_type() functions and some other functions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12157) - -#### gst-plugins-good - - - aacparse: Don't assert on parsing errors or insufficient data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12143) - - avidemux: Make sure enough data is available when parsing FUJIFILM strd and various other fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12241) - - matroskademux: Make sure enough data is available when parsing FLAC headers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12242) - - rtph264depay: rtph265depay: Limit the maximum fragmentation unit size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12244) - - rtpqcelpdepay: Handle changes in interleave value correctly(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12237) - - rtpsource: fix bitrate estimation for RTX(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12171) - - v4l2: Use MPLANE flag to determine n_v4l_planes directly(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12177) - - y4mdec: Some parsing fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12122) - - tests: qtmux: drain to EOS before teardown in test_caps_renego(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12200) - - Remove incorrect G_GNUC_CONST annotation for _get_type() functions and some other functions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12157) - -#### gst-plugins-bad - - - adpcmdec: Fix IMA ADPCM input size check to match with the actual code(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12245) - - baseparse: Don't reset infer_ts/pts_interpolate subclass configuration in reset() and related fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12102) - - d3d11winrtcapture: Fix incorrect capture height(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12115) - - dtls: make BIO read signal retry instead of EOF when no data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12191) - - dtls: New DTLS test failure with OpenSSL 4.0.0(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5234) - - dvdspu: Fix too strict off-by-one bounds check in a couple of places(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12126) - - h263parse: diracparse: Sync baseparse configuration with other compressed video parsers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12096) - - h265parser: Fix out-of-bounds writes in RPS parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12239) - - h265seiinserter: Fix HEVC with alpha stream handling(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12189) - - h266parser: fix SEI parsing error handler(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12132) - - meson: Make the g-ir-scanner init section consistent across modules(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12163) - - mpegpsdemux: Use byte readers for parsing data and make sure enough data is available(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12183) - - openjpegdec: Various issues related to striped mode and image origins, plus memory leaks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12246) - - pnmdec: Don't assert if creating the output state fails and don't flush more data than is available(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12124) - - tfliteinference: fix leaks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11404) - - tsdemux: Don't assert if stream pad was not yet created(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12162) - - vabaseenc: clamp driver-reported coded size to the coded buffer size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12123) - - vtdec: Don't register the hw-only variant on simulators(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12112) - - vulkantrash: avoid reinitializing trash objects multiple times(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12117) - - waylandsink: Omit reporting drop frame on preroll(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12037) - - webrtcbin: fix possible floating leak for post-aux(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12085) - - wlvideobufferpool: Fix memory leak in gst_wl_video_buffer_pool_alloc_buffer(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12160) - - docs: Fix build when mse library is disabled(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12113) - - Remove incorrect G_GNUC_CONST annotation for _get_type() functions and some other functions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12157) - -#### gst-plugins-ugly - - - asfdemux: Avoid integer overflows during bounds checks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12243) - - dvdsubdec: Clip subpicture rectangle to the frame size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12240) - - rtpasfdepay: Drop packets that are larger than the negotiated maximum packet size and various other fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12236) - -#### GStreamer Rust plugins - - - hlsbasesink: Don't unwrap() running_time when a segment is added(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3175) - - hlssink3: don't unwrap() PTS of a fragment's first buffer(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3193) - - isobmff: Add support for video/x-h266(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3165) - - isofmp4mux: use previous highest PTS when none are available(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3180) - - rtp: fix overflowing adds(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3187) - - rtpsmpte291depay: Fix depayloading frames with multiple ANC packets(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3161) - - rtprecv: fix deadlock handling RTCP packet in buffer list(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3190) - - st2038combiner: Fix off-by-one when ST-2038 pads are skewed(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3156) - - textaccumulate: output joined single buffer, add list as meta(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3150) - - webrtc: add support for nvv4l2h265enc(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3160) - - webrtcsink: handle level-asymmetry-allowed when answering(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3184) - - meson: Work around openssl-sys detection bug on Windows(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3158) - - meson: Sort entries for deterministic build results(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3209) - - Clippy and cargo test fixes(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3182) - - Fix some hotdoc markdown code blocks in various docs(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3172) - -#### gst-libav - - - Fix build failure with FFmpeg 9.0(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12221) - - libav: FFmpeg 9.0 Build Failure(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5251) - - avdemux: Close demuxer on pad deactivation instead of state change and don't use uninitialized audio channel positions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12099) - - avdemux: Use a dynamic-sized array for the AVStreams(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12238) - -#### gst-rtsp-server - - - rtsp-server: fix racy leak in test_pool_thread_copy under valgrind(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12201) - - meson: Make the g-ir-scanner init section consistent across modules(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12163) - -#### gstreamer-sharp - - - No changes - -#### gst-python - - - meson: use dependency('dl') instead of cc.find_library('dl')(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12154) - -#### gst-editing-services - - - meson: Make the g-ir-scanner init section consistent across modules(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12163) - - Remove incorrect G_GNUC_CONST annotation for _get_type() functions and some other functions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12157) - -#### gst-devtools, gst-validate + gst-integration-testsuites - - - meson: Make the g-ir-scanner init section consistent across modules and fix validate g-ir-scanner invocation so that it doesn't load any plugins(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12163) - - meson: use dependency('dl') instead of cc.find_library('dl')(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12154) - - Remove incorrect G_GNUC_CONST annotation for _get_type() functions and some other functions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12157) - -#### gst-examples - - - No changes - -#### gstreamer-docs - - - No changes - -#### Development build environment - - - No changes - -#### Cerbero build tool and packaging changes in 1.28.6 - - - gst-plugins-rs: Don't incorrectly package .lib plugin static libs, fixing package binary size regression(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2307) - - windows inno installer: add support for v7(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2316) - - soundtouch: download the tarball from surina.net vice codeberg.org(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2302) - - srt: upgrade to 1.5.6(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2310) - - windows.config: fix Windows MinGW cross compilation for certain Rust recipes(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2304) - -#### Contributors to 1.28.6 - -Albert Sjölund, Bernhard M. Wiedemann, Charles Turner, Diego Nieto, -Emiel Van Severen, François Laignel, Gareth Sylvester-Bradley, He Junyan, -Ingmar Steen, Jan Schmidt, Jeongkeun Kim, Jerome Colle, Jihoon Lee, -L. E. Segovia, Maksim Nikolaev, Marcus Hanestad, Mathieu Duponchelle, -Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête, -Piotr Brzeziński, Qi Hou, Reilly Brogan, Sanchayan Maity, Sebastian Dröge, -Seungha Yang, Seyi Kuforiji, Thibault Saunier, Tim-Philipp Müller, -Tjitte de Wert, - -... 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.28.6 - -- List of Merge Requests applied in 1.28.6(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.6) -- List of Issues fixed in 1.28.6(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.6) - -<a id="1.28.7"></a> - -### 1.28.7 - -The seventh 1.28 bug-fix release (1.28.7) was released on 07 September 2026. - -This release only contains bugfixes and important security fixessecurity. -It *should* be safe to update from 1.28.x and we recommend you do so at your -earliest convenience. - -security: https://gstreamer.freedesktop.org/security/ - -#### Highlighted bugfixes in 1.28.7 - - - Various security fixessecurity and playback fixes - - appsrc EOS handling regression fix for applications pushing EOS into a blocked appsrc - - glcolorconvert fixes for older OpenGL/GLSL versions - - mxfdemux: Fix keyframe detection regression and possible artefacts after seeking - - QML6 GL Overlay output texture lifetime handling fixes - - opencv: Add support for building against OpenCV 5 - - hip: Add missing API version suffix in HIP support library filename and fix hipcc detection on Windows with HIP SDK 7.x - - analytics: fix classes off-by-one in ssdtensordec leading to mislabelling of objects in the examples - - isobmff: Fix min_display_mastering_luminance in mdcv box - - rtpbin2: rtprecv: limit the number of remote sources being tracked - - st2038anc: parity bit handling fixes for ST 291 ADF words - - video converter and videoconvertscale fixes - - mpegdemux: restore gap event sending in MPEG-PS demuxer - - Fix x264enc high bit depth support in binary packages - - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements - -#### gstreamer - - - cpuid: Clean up NEON and ASIMD getauxval detection + port Orc's elf_aux_info support(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12258) - - dataurisrc: Fix empty payloads and unsupported charset conversion(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12407) - - pipeline: Avoid lock inversion when handling GST_MESSAGE_RESET_TIME(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12421) - - validate: Use a single value type in configs lists(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12343) - -#### gst-plugins-base - - - appsrc: Don't push EOS directly in event handler (regression fix)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12283) - - glcolorconvert: don't rely on integer modulus '%'(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12286) - - mikey: use TEK_WITH_SALT for proper key/salt separation in KEY_DATA(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12404) - - overlay-composition: Don't try to scale high bitdepth rectangles(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12330) - - rtpbasedepayload: Don't assert if previous buffer's delayed header extensions are still queued(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12444) - - rtsp: message: fix crash when an auth value started with whitespace(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12431) - - typefindhelper: Revert "Drop unnecessary check for factories without a function"(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12443) - - typefind: regression causes txt file to be detected as subtitle(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5285) - - typefindfunctions: Critical warnings when typefinding invalid ogv file(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5279) - - validate: Use a single value type in configs lists(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12343) - - video-converter: Fix GRAY output border color(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12374) - - video-format: Fix annotation on component function(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12425) - - videoconvertscale: keep input colorimetry in scale-only elements(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12378) - - videotimecode: Fix documentation bug and update annotations(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12255) - -#### gst-plugins-good - - - effectv: quarktv: read from mapped memory to reduce latency and improve performance(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12422) - - flxdec: Various read fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12387) - - qml6gloverlay: output texture lifetime fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12342) - - qtdemux: Add 'stream-format' field for AC-4 caps(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12371) - - qtdemux: Ensure enough data is available for reading closed caption boxes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12437) - - rtpmanager: crash on malformed RTCP SDES due to uninitialized values being used(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5277) - - rtpmanager: Fix malformed SDES processing segfault(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12375) - - rtpsession: implement DoS protection mechanisms(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12436) - - scaletempo: fix integer overflow in output_overlap_s16(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12265) - - soup: fix redirect uri when not using automatic redirects(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12391) - - souphttpsrc: Add new `location-trusted` property(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12438) - -#### gst-plugins-bad - - - amc: Don't set the Hardware class in metadata for sw video codecs(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12327) - - d3d12: Fix copy-paste typos(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12368) - - d3d12cmdqueue: Fix deadlock during GC(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12353) - - d3d12screencapturesrc: Fix out-of-bounds access with monochrome cursors(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12320) - - dwritebaseoverlay: Fix assertion 'G_VALUE_HOLDS_UINT (value)'(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12323) - - hip: Add missing API version suffix in library filename(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12299) - - gstreamer-hip api_version failure(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5245) - - hip: Fix hipcc detection on Windows with HIP SDK 7.x(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12332) - - hipstream: Return actual device_id instead of vendor from device_id getter(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12394) - - hipmemorycopy: Add missing ifdef guard(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12361) - - jpegparse: Fix byte order of JFIF density fields(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12259) - - mpegdemux: restore gap sending(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12400) - - mxfdemux: Fix keyframe detection(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12324) - - onnx: Fix nullptr dereference on ORT init failure(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12295) - - onnxinference: fix dead lock with wrong model file(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12329) - - opencv: Support OpenCV 5(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12363) - - pnmdec: Protect against bogus dimensions headers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12390) - - ssdtensordec: The classes were off by one(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12256) - - tsdemux: Add 'stream-format' field for AC-4 caps(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12371) - - validate: Use a single value type in configs lists(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12343) - - vulkan(av1,vp9)dec: set access NONE at buffer pool allocation parameters(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12417) - -#### gst-plugins-ugly - - - No changes - -#### GStreamer Rust plugins - - - isobmff: Fix min_display_mastering_luminance in mdcv box(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3227) - - rtprecv: limit the number of remote sources being tracked(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3229) - - rtspsrc2: Fix handling of scheme and parameter parsing(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3237) - - st2038anc: Fix inverted even/odd parity on ST 291 ADF words(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3217) - - Fix a couple of new Rust 1.97 clippy warnings(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3198) - - Sort entries for deterministic build results(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3209) - - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3200) - - closedcaption: update to winnow to 1.0(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3220) - -#### gst-libav - - - avauddec, avaudenc: Don't try channel layout mapping with >64 channels(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12439) - -#### gst-rtsp-server - - - No changes - -#### gstreamer-sharp - - - No changes - -#### gst-python - - - No changes - -#### gst-editing-services - - - validate: Use a single value type in configs lists(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12343) - -#### gst-devtools, gst-validate + gst-integration-testsuites - - - validate: Use a single value type in configs lists(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12343) - -#### gst-examples - - - No changes - -#### gstreamer-docs - - - No changes - -#### Development build environment - - - wraps: macos-bison-binary: Fix cross-compile when host/build machine cpu family differ(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12312) - - wraps: update libnice to 0.1.24(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12402) - -#### Cerbero build tool and packaging changes in 1.28.7 - - - x264: Fix high bit-depth support(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2328) - - libnice: update to 0.1.24(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2336) - -#### Contributors to 1.28.7 - -Aisuneko icecat, Antonio Rojas, Colin Kinloch, Dominique Leroux, Edward Hervey, -Eric Chandrasekhar,François Laignel, Frank Wennerdahl, Gareth Sylvester-Bradley, -Jan Schmidt, Lei Zhen, L. E. Segovia, Marcus Hanestad, Mark Nauwelaerts, -masa-iwm, Mathieu Duponchelle, Matthew Waters, Nirbheek Chauhan, Pablo García, -Sanchayan Maity, Sebastian Dröge, Seungha Yang, Seyi Kuforiji, Stéphane Cerveau, -Thibault Saunier, Thomas Devoogdt, Tim-Philipp Müller, YoungSoo Lee, - -... 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.28.7 - -- List of Merge Requests applied in 1.28.7(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.7) -- List of Issues fixed in 1.28.7(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.7) - -## Schedule for 1.30 - -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. - -The schedule for 1.30 is still to be determined, but it will likely be -in Q4/2026. - -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. - -<a id="1.27.1"></a><a id="1.27.2"></a><a id="1.27.50"></a><a id="1.27.90"></a> -## 1.27 pre-releases (superseded by 1.28) - -<!-- Add some anchors for the old pre-releases since anchors are handled - client side so we can't add server side redirects to the 1.27 page. - --> - -- 1.27.1 development snapshot release notesrn-1.27.1 -- 1.27.2 development snapshot release notesrn-1.27.2 -- 1.27.50 development snapshot release notesrn-1.27.50 -- 1.27.90 pre-release release notesrn-1.27.90 - -rn-1.27.1: https://gstreamer.freedesktop.org/releases/1.27/#1.27.1 -rn-1.27.2: https://gstreamer.freedesktop.org/releases/1.27/#1.27.2 -rn-1.27.50: https://gstreamer.freedesktop.org/releases/1.27/#1.27.50 -rn-1.27.90: https://gstreamer.freedesktop.org/releases/1.27/#1.27.90 - - -- - - - -*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(http://creativecommons.org/licenses/by-sa/4.0/)*
View file
_service:download_files:gst-plugins-ugly-1.28.7.tar.xz/scripts/dist-common-files.py
Deleted
@@ -1,73 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2023-2026 Tim-Philipp Müller <tim centricular net> -# -# 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. - -import os -import subprocess -import shutil -import tempfile -import sys - -if __name__ == "__main__": - dist_root = os.environ'MESON_DIST_ROOT' - build_root = os.environ'MESON_BUILD_ROOT' - source_root = os.environ'MESON_SOURCE_ROOT' - project_version = sys.argv1 - pwd = os.environ'PWD' - tmpdir = tempfile.gettempdir() - - ver_array = project_version.split('.') - major_minor = '{}.{}'.format(ver_array0, ver_array1) - - module = os.path.basename(os.path.normpath(source_root)) - - print('Copying README.md into dist staging directory ..') - readme_src = os.path.join(source_root, '..', '..', 'README.md') - shutil.copy2(readme_src, dist_root) - - # Release notes (instead of NEWS) - could also write it out as NEWS.md - print('Copying release notes into dist staging directory ..') - relnotes_src = os.path.join(source_root, '..', '..', 'release-notes', major_minor, f'release-notes-{major_minor}.md') - with open(relnotes_src, 'r') as f: - lines = f.readlines() - if not f'### {project_version}\n' in lines: - sys.exit(f'Update {relnotes_src} first, must contain a section for {project_version}') - if not project_version.endswith('.0'): - found = False - for line in lines: - if line.startswith('The latest') and project_version in line: - found = True - if not found: - sys.exit(f'Update {relnotes_src} first, header should say latest version is {project_version}.') - shutil.copy2(relnotes_src, dist_root) - - # RELEASE - print('Copying RELEASE into dist staging directory ..') - rel_src = os.path.join(source_root, '..', '..', 'release-notes', major_minor, f'RELEASE-{major_minor}.template') - with open(rel_src, 'r') as f: - lines = f.readlines() - - assert (lines0.startswith('This is GStreamer')) - - if module == 'gstreamer': - lines0 = f'This is GStreamer core {project_version}\n' - else: - lines0 = f'This is GStreamer {module} {project_version}\n' - - with open(os.path.join(dist_root, 'RELEASE'), 'w') as f: - f.writelines(lines)
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
.