=== release 1.28.3 ===

2026-05-11 18:28:12 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst-plugins-bad.doap:
	* meson.build:
	  Release 1.28.3

2026-04-27 16:45:04 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/mxf/mxfvanc.c:
	  mxfdemux: Fix parsing of multiple VANC packets per edit unit
	  Only the first packet was parsed before.
	  Also fix a couple of bounds checks and add missing bounds checks.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11592>

2026-04-27 16:42:20 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/mxf/mxfvanc.c:
	  mxfmux: Fix size calculations when writing VANC packets
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5044
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11592>

2026-04-15 15:19:12 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/mxf/mxfdemux.c:
	  mxfdemux: Fix reverse temporal offsets array upper bounds check
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5041
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11589>

2026-04-15 11:35:47 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/codecparsers/gsth266parser.c:
	  h266parser: Avoid out-of-bounds write when parsing PPS tile slices
	  Thanks to Tian Shuo for reporting and suggesting the fix.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5035
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11588>

2026-04-09 21:34:23 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/resindvd/gstpesfilter.c:
	* gst/mpegdemux/gstpesfilter.c:
	  mpegdemux: Add missing bounds checking to PES header parsing
	  And also add missing advancing of the data pointer in various places, which
	  would've caused all following header field parsing to read the wrong data.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11587>

2026-04-09 15:34:09 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/mpegdemux/gstmpegdemux.c:
	  mpegdemux: Adding missing bounds checks when scanning for timestamps
	  Also make the already existing checks a bit more explicit and avoid integer
	  overflows with length calculations by using a bigger integer type.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11587>

2026-04-09 15:31:10 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/resindvd/gstpesfilter.c:
	* gst/mpegdemux/gstpesfilter.c:
	  mpegdemux: First check for enough data and then read the DTS and not the other way around
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5026
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11587>

2026-04-28 15:58:32 +0900  Dennis Han <jshan@live.co.kr>

	* ext/qt6d3d11/gstqt6d3d11videoitem.cpp:
	  qt6d3d11: fix null check in SetForceAspectRatio()
	  The null-check branch incorrectly attempted to call
	  setForceAspectRatio() on a null item pointer.
	  Return early when item is null and call the setter otherwise.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11575>

2026-05-08 18:05:19 +0300  Sebastian Dröge <sebastian@centricular.com>

	* sys/androidmedia/gstamc.c:
	  androidmedia: Free element name after use for logging
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11573>

2026-05-07 16:49:08 +0100  Arthur Chan <arthur.chan@adalogics.com>

	* gst-libs/gst/codecparsers/gsth266parser.c:
	  h266parser: Add missing freeing function for H266 SEI message
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11571>

2026-04-07 18:41:35 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst/closedcaption/misc.h:
	  closedcaption: Fix invalid ISO varargs syntax
	  When there are no var args, there's a trailing comma. MSVC has been
	  suppressing that trailing comma, but in /std:c11 mode it (correctly)
	  does not suppress it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11563>

2026-04-07 13:09:24 +0100  Nirbheek Chauhan <nirbheek@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>

2026-05-06 16:05:40 +0300  Sebastian Dröge <sebastian@centricular.com>

	* sys/decklink/gstdecklink.cpp:
	* sys/decklink/gstdecklinkvideosink.cpp:
	  decklink: Fix various refcount issues and related leaks
	  Also initializes refcount with 1 again in GStreamerVideoOutputCallback for
	  consistency, which was changed in https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11006
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11558>

2026-04-10 17:35:41 +0300  Sebastian Dröge <sebastian@centricular.com>

	* sys/aja/gstajasink.cpp:
	  ajasink: Correctly set reference source
	  It's SetFramePulseReference() does something different and what we want is
	  SetReference() just like in the source element.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11309>

2026-03-31 12:57:19 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/androidmedia/gstamc.c:
	  amc: Log the caps for registered codecs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11551>

2026-01-17 00:40:11 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/androidmedia/gstamc.c:
	  amc: Reduce verbosity of INFO logging during init
	  We log too much during init to INFO, and Android Studio just drops all
	  those messages because they're too many.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11551>

2026-01-16 04:49:31 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/androidmedia/gstamc.c:
	  amc: Add constrained-baseline profile when baseline is available
	  Otherwise we can't decode constrained-baseline videos.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11551>

2026-01-16 02:43:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/androidmedia/gstamcvideoenc.c:
	  amc: Remove support for API level < 25
	  We no longer support Android older than Nougat.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11551>

2026-05-07 17:17:39 +0100  Arthur Chan <arthur.chan@adalogics.com>

	* gst/videoparsers/h263parse.c:
	  h263parse: Fix wrong ratio masking
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11537>

2026-05-07 17:09:32 +0100  Arthur Chan <arthur.chan@adalogics.com>

	* gst/videoparsers/gsth263parse.c:
	  h263parse: Missing handling of reserved invalid EPAR_D value
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11535>

2026-05-07 16:43:15 +0100  Arthur Chan <arthur.chan@adalogics.com>

	* gst/videoparsers/gstpngparse.c:
	  pngparse: Fix Use-after-free bug
	  Signed-off-by: Arthur Chan <arthur.chan@adalogics.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11531>

2026-05-07 16:35:31 +0100  Arthur Chan <arthur.chan@adalogics.com>

	* gst/videoparsers/gstav1parse.c:
	  av1parse: Fix null pointer deference
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11529>

2026-05-06 22:38:43 +0900  Seungha Yang <seungha@centricular.com>

	* ext/qt6d3d11/gstqml6d3d11sink.cpp:
	* ext/qt6d3d11/gstqsg6d3d11node.cpp:
	  qml6d3d11sink: Clear texture on Paused-to-Ready transition
	  Like the GL version of qmlsink, clear owned texture to black
	  instead of keeping the last rendered frame
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11520>

2026-04-21 09:32:02 -0400  Xavier Claessens <xclaessens@netflix.com>

	* sys/va/gstvabaseenc.c:
	  va: do not post error message when push fails
	  Downstream is responsible to post a specific error message. If it did
	  not, then upstream source will post a generic error message.
	  Intermediary elements just have to propagate the return value.
	  This prevents posting an error message when stopping a pipeline and
	  GST_FLOW_FLUSHING is returned.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11504>

2026-03-26 11:40:44 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtenc.c:
	* sys/applemedia/vtutil.c:
	* sys/applemedia/vtutil.h:
	  applemedia: Don't expose unsupported formats for Vulkan/GL
	  We exposed lots of formats in caps, but GL/Vulkan code doesn't have
	  paths for all of them. For GL specifically, BGRA is theoretically
	  supported but it's currently broken, pending investigation.
	  Also adds a filter to gst_vtutil_caps_append_video_format() to avoid
	  putting RGBA64_LE in non-system-memory part of the caps in vtdec.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11498>

2026-04-29 10:00:08 -0400  Dominique Leroux <dominique.p.leroux@gmail.com>

	* tests/check/pipelines/vtdec-output-paths.c:
	  applemedia: tests: harden vtdec output path checks
	  The appsink new-sample callback runs from the streaming thread and
	  asks the main loop to stop once the comparison prefix has been
	  collected. Release the pulled sample before waking the main thread
	  and keep only the requested number of buffers.
	  The fixture has enough frames for the comparison, so EOS before
	  collecting the requested eight samples is a failure. Require the
	  expected sample count and report the actual count.
	  Use gst_check_run_suite_nofork() for the nofork setup as well. The
	  previous manual runner always returned 0, hiding check failures from
	  Meson.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11461>

2026-04-28 11:45:43 +0200  Tomasz Bujewski <tomasz.bujewski@intel.com>

	* gst-libs/gst/analytics/gstanalyticsobjectdetectionmtd.c:
	* gst-libs/gst/analytics/gstanalyticssegmentationmtd.c:
	  analytics: fix meta transform functions for copy cases
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11476>

2026-01-22 13:13:28 +0100  Fabian Orccon <cfoch.fabian@gmail.com>

	* gst-libs/gst/mse/meson.build:
	  mse: Also disable the library if the option is disabled
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11473>

2026-04-28 16:33:05 +0200  Edward Hervey <edward@centricular.com>

	* gst/mpegtsdemux/pesparse.c:
	  mpegts: Fix ESCR reading
	  The second part is 4 bytes further
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11454>

2026-04-28 16:32:18 +0200  Edward Hervey <edward@centricular.com>

	* gst/mpegtsdemux/mpegtsbase.c:
	  mpegtsbase: Protect potential OOB read
	  Like it's done in get_registration_from_descriptors()
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11454>

2026-04-28 15:13:13 +0200  Edward Hervey <edward@centricular.com>

	* gst/mpegtsdemux/mpegtsbase.c:
	  mpegtsbase: Remove un-needed lines
	  flush_event will always be NULL here (cleared just above)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11454>

2026-04-23 18:39:44 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Avoid blocking decoder output callback
	  Blocking VT's output callback is not a good idea, as it can cause the
	  decoder to error out if it's blocked for too long, e.g. when a user
	  pauses playback. Especially with HEVC+alpha decoding, VT is extremely
	  sensitive and can error out after being blocked for just 10 seconds.
	  With this change I can't reproduce any similar problems anymore.
	  However, changing this also simplifies vtdec's locking situation a lot
	  because we have one less thread to possibly deadlock with. In fact, it's
	  been the source of most our problems since the output loop was added.
	  This change will hopefully reduce the amount of future problems in this
	  area.
	  This also resolves a recent issue where if the output loop triggered
	  draining (via negotiation during buffer push), the input side would
	  start to push buffers at max speed because the output loop (correctly)
	  no longer holds the stream lock while pushing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11441>

2026-04-24 16:48:57 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Don't leak CMSampleBuffer during decoder reset
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11441>

2026-03-30 16:45:31 +0200  Piotr Brzeziński <piotr@centricular.com>

	* ext/vulkan/vkupload.c:
	* tests/check/elements/vkupload.c:
	  vkupload: Fix wrong image dimensions due to stride mismatch
	  We were possibly using the wrong buffer for the get_plane_dimensions()
	  call. If the input buffer had a different stride value from the newly
	  allocated Vulkan buffer, the resulting image would be incorrect.
	  Also adds a test, which was actually meant to test an almost identical
	  issue in vulkandownload but ended up spotting this problem instead.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11387>

2026-03-26 10:34:11 +0100  Piotr Brzeziński <piotr@centricular.com>

	* ext/vulkan/vkdownload.c:
	* tests/check/elements/vkdownload.c:
	* tests/check/meson.build:
	  vkdownload: Fix corrupted output image due to mismatched stride/padding
	  Makes sure to the destination buffer layout when filling
	  VkBufferImageCopy for the image download. The old version was using the
	  input buf parameters for this, so if there was a mismatch, we'd get a
	  corrupted output image with each row shifted and stretched.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11387>

2026-03-31 12:38:22 +0200  Piotr Brzeziński <piotr@centricular.com>

	* tests/check/elements/cudaconvert.c:
	* tests/check/elements/cudafilter.c:
	* tests/check/elements/nvdec.c:
	* tests/check/elements/nvenc.c:
	* tests/check/libs/cudamemory.c:
	  tests: replace CK_FORK=no with GST_CHECK_MAIN_NOFORK
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11387>

2026-03-30 14:55:27 +0200  Piotr Brzeziński <piotr@centricular.com>

	* tests/check/elements/vkcolorconvert.c:
	* tests/check/elements/vkdeviceprovider.c:
	* tests/check/elements/vkupload.c:
	* tests/check/libs/vkcommandpool.c:
	* tests/check/libs/vkdevice.c:
	* tests/check/libs/vkformat.c:
	* tests/check/libs/vkimage.c:
	* tests/check/libs/vkimagebufferpool.c:
	* tests/check/libs/vkinstance.c:
	* tests/check/libs/vkmemory.c:
	* tests/check/libs/vkvideodecode.c:
	* tests/check/libs/vkvideoencodeav1.c:
	* tests/check/libs/vkvideoencodeh264.c:
	* tests/check/libs/vkvideoencodeh265.c:
	* tests/check/libs/vkwindow.c:
	  vulkan: Fix tests crashing on macOS due to fork() usage
	  Vulkan tests would end up segfaulting somewhere inside Metal when
	  running under MoltenVK on macOS.
	  Turns out this was because of fork() and simply disabling its usage
	  makes it all run.
	  The only exceptions are vkdeviceprovider and vkwindow tests: those spawn
	  a vulkansink which needs a window,
	  and for that we need to use gst_macos_main(), otherwise there's a
	  critical warning which causes the test to fail.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11387>

2026-04-23 12:09:29 -0400  Dominique Leroux <dominique.p.leroux@gmail.com>

	* sys/applemedia/corevideobuffer.c:
	  applemedia: fix planar CoreVideo buffer offsets
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11432>

2026-04-23 12:09:00 -0400  Dominique Leroux <dominique.p.leroux@gmail.com>

	* tests/check/pipelines/vtdec-output-paths.c:
	  applemedia: add vtdec download content checks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11432>

2026-04-24 12:25:19 +0300  Vivia Nikolaidou <vivia@ahiru.eu>

	* tests/check/elements/interlace.c:
	  interlace: Add some more autoated tests
	  The ones referenced in
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/1764
	  and
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/bf89c80d74f424e54a401243513781c73d0a6e6d
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11428>

2026-04-24 11:49:11 +0300  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/interlace/gstinterlace.c:
	  Revert "interlace: Drop framerate from query caps of sinkpad"
	  This reverts commit 1ac30ad53fff9b572212d7727695b1424b803214.
	  This commit broke negotiation in pipelines where upstream framerate is flexible
	  and downstream framerate is fixed, i.e.
	  gst-launch-1.0 videotestsrc \
	  ! video/x-raw,framerate=30/1,interlace-mode=progressive \
	  ! videorate \
	  ! interlace field-pattern=1:1 \
	  ! video/x-raw,framerate=25/1,interlace-mode=interleaved \
	  ! fakesink
	  The original issue reported was fixed by commit
	  bf89c80d74f424e54a401243513781c73d0a6e6d.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/1764
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11428>

2026-04-23 11:12:37 +0200  RSWilli <bartel.wilhelm@gmail.com>

	* ext/webrtc/webrtcdatachannel.c:
	  webrtc: take ownership of the src_bin and sink_bin
	  before this the webrtcbin takes ownership when adding the bins to the webrtcbin.
	  This could lead to use after free when the datachannel went into error state because of a lost connection
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11420>

2026-04-23 10:57:31 +0200  RSWilli <bartel.wilhelm@gmail.com>

	* ext/webrtc/webrtcdatachannel.c:
	  webrtc: don't leak error message
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11420>

2026-04-04 20:34:19 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/avfdeviceprovider.m:
	* sys/applemedia/avsamplevideosink.m:
	* sys/applemedia/corevideobuffer.c:
	* sys/applemedia/helpers.h:
	* sys/applemedia/meson.build:
	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtdec.h:
	* sys/applemedia/vtenc.c:
	* sys/applemedia/vtutil.c:
	  applemedia: Require Xcode 12.4 for all builds
	  Xcode 12.4 is the newest Xcode that you can install on macOS 10.15. We
	  require Xcode 12.4, but we only support macOS builds on it. For iOS,
	  tvOS, etc a newer (currently unspecified) Xcode version is required.
	  Fixes #4941
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11369>

2026-04-15 13:07:27 +0200  Anders Hellerup Madsen <anders@hellerup-madsen.dk>

	* sys/nvcodec/kernel/gstnvjpegenc.cu:
	  nvjpegenc: use float-precision constants in CUDA kernel
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11400>

2026-04-15 13:05:13 +0200  Anders Hellerup Madsen <anders@hellerup-madsen.dk>

	* sys/hip/kernel/converter.cu:
	  hip: use float-precision constants in converter kernel
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11400>

2026-04-15 12:52:46 +0200  Anders Hellerup Madsen <anders@hellerup-madsen.dk>

	* sys/nvcodec/kernel/gstcudaconverter.cu:
	  nvcodec: use float-precision constants in CUDA converter kernel
	  Replace double-precision floating point literals with explicit
	  single-precision (f-suffixed) constants throughout the CUDA converter
	  kernel. This avoids implicit float-to-double promotion in arithmetic
	  expressions, which incurs a significant performance penalty on GPU
	  hardware where double-precision math is much slower than float.
	  Affected areas:
	  - scale_to_* helper functions (e.g. val * 255.0 -> val * 255.0f)
	  - blend_* helper functions (division and subtraction chains)
	  - Output struct Blend methods (1.0 -> 1.0f argument)
	  - GstCudaConverterMain kernel (coordinate math and comparisons)
	  - Corresponding string-embedded copy of the kernel code
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11400>

2026-04-20 18:02:40 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Avoid locking up during a decoder reset
	  If require_reset is set while the reorder_queue is full, the output
	  callback can block. This in turn causes VTDecompressionSessionInvalidate
	  to block as well, leading to a deadlock because the reset logic holds
	  the stream lock, preventing the output loop from draining the queue.
	  This simply makes sure we don't block the output callback in this
	  scenario.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11395>

2026-03-30 11:13:38 -0400  Dominique Leroux <dominique.p.leroux@gmail.com>

	* tests/check/meson.build:
	* tests/check/pipelines/vtdec-output-paths.c:
	  vtdec: Pipeline tests for all 3 memory output paths
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11285>

2026-03-29 20:25:37 -0400  Dominique Leroux <dominique.p.leroux@gmail.com>

	* sys/applemedia/vtdec.c:
	  vtdec: warn about MoltenVK argument buffers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11285>

2026-03-17 21:36:21 -0400  Dominique Leroux <dominique.p.leroux@gmail.com>

	* sys/applemedia/iosurfacevulkanmemory.c:
	* sys/applemedia/iosurfacevulkanmemory.h:
	* sys/applemedia/metal-helpers.h:
	* sys/applemedia/videotexturecache-vulkan.mm:
	  applemedia: import Metal textures at Vulkan image creation time
	  MoltenVK 1.3.0 and later regressed on the
	  vtdec -> VulkanImage -> vulkancolorconvert path when
	  IOSurface-backed plane textures were attached after
	  vkCreateImage() through vkSetMTLTextureMVK().
	  That path relies on MoltenVK-specific post-creation binding APIs
	  that have been superseded by standard Metal interop extensions.
	  Keep the existing per-plane MTLTexture creation, but move the
	  Metal texture import into VkImage creation through
	  VkImportMetalTextureInfoEXT.
	  Importing the Metal texture as part of VkImageCreateInfo makes
	  the Vulkan image describe the external texture at creation time
	  instead of retrofitting it afterward. This aligns the Apple
	  import path with the newer Metal-object import model and avoids
	  depending on the deprecated post-create binding flow.
	  On affected MoltenVK releases, successful playback still requires
	  setting MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS=0 at runtime.
	  That workaround was confirmed from MoltenVK 1.3.0 onward during
	  investigation of this path.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11285>

2026-03-17 21:35:35 -0400  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst-libs/gst/vulkan/meson.build:
	  vulkan: prefer direct MoltenVK linkage on Darwin
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11285>

2026-04-15 13:07:55 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/mxf/mxfaes-bwf.c:
	  mxfmux: aes-bwf: Use correct size when serializing user data / channel status mode
	  This code is not actually reachable (yet) from mxfmux.
	  Thanks to Tian Shuo for reporting and suggesting the fix.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5037
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11345>

2026-04-10 17:04:55 -0400  Monty C <montyc1999@gmail.com>

	* sys/applemedia/vtdec.c:
	  vtdec: fix deadlock when restarting
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11343>

2026-04-14 22:09:40 +0900  Andrew Yooeun Chun <aychun00@gmail.com>

	* gst-libs/gst/codecparsers/gsth265parser.h:
	  h265parser: fix comments in header
	  CPS -> CPB, togeter -> together, and add missing spaces after `@param:`.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11339>

2026-04-14 22:03:21 +0900  Andrew Yooeun Chun <aychun00@gmail.com>

	* gst-libs/gst/codecparsers/gsth265parser.c:
	  h265parser: use sub-layer 0 CPB count in buffering_period SEI loops
	  The NAL and VCL initial CPB removal delay loops were bounded by
	  cpb_cnt_minus1[i]. Read the CPB count from sub-layer 0 instead.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11339>

2026-04-12 16:21:55 -0400  Monty C <montyc1999@gmail.com>

	* sys/nvcodec/plugin.c:
	  nvcodec: Fix missing adapter-luid when loading decoders from cache
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11329>

2026-04-09 21:32:28 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/resindvd/gstpesfilter.c:
	* gst/mpegdemux/gstpesfilter.c:
	  mpegdemux: Fix ES_rate parsing
	  It's not used anywhere so this doesn't really matter.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11324>

2026-04-09 21:18:36 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/mpegtsdemux/pesparse.c:
	  tsdemux: Only read 3 bytes for the ES_rate
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11324>

2026-04-09 21:08:55 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/mpegtsdemux/pesparse.c:
	  tsdemux: Fix parsing of PES ESCR and following PES header fields
	  The ESCR is 6 bytes and in the same format as the PCR, not 5 bytes and in the
	  same format as DTS/PTS. By skipping only 5 bytes, parsing of all following PES
	  header fields looked at the wrong bytes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11324>

2026-04-10 15:50:46 +0200  Edward Hervey <bilboed@bilboed.com>

	* gst/mpegtsdemux/mpegtspacketizer.c:
	  mpegtspacketizer: Avoid potential overflow
	  Avoid potential address overflow by using subtraction instead of additions.
	  If data is close to the memory range limit (especially on 32bit systems), adding
	  to it could make it wrap over.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11307>

2026-04-09 09:31:47 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/soundtouch/gstbpmdetect.cc:
	  bpmdetect: Fix calculation of number of samples for >1 channels
	  Reported by and patch provided by Olivier Laflamme.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11297>

2021-07-15 11:47:44 +0200  Andreas Frisch <andreas.frisch@ltnglobal.com>

	* gst/mpegtsdemux/tsdemux.c:
	  tsdemux: Fix segfault when trying to handle SCTE-35 with incorrect program specified
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11294>

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.28.2 ===

2026-04-07 20:02:23 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst-plugins-bad.doap:
	* meson.build:
	  Release 1.28.2

2026-04-07 16:36:27 +0900  Seungmin Lee <seungmin.lee.cpp@navercorp.com>

	* gst/vmnc/vmncdec.c:
	  vmncdec: Set cursormask to NULL to prevent double free
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11264>

2026-03-26 19:26:54 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/codecparsers/gstav1parser.c:
	* gst/videoparsers/gstav1parse.c:
	  av1parse: Correctly reject LEB128 values where the 8th byte has the high bit set
	  This is invalid according to the specification.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11259>

2026-03-26 19:18:33 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/codecparsers/gstav1parser.c:
	* gst/videoparsers/gstav1parse.c:
	  av1parse: Allow G_MAXUINT32 as LEB128 encoded value
	  The spec states that any value less than or equal to (1<<32) - 1 should be
	  accepted but we were rejecting (1<<32) - 1.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11259>

2026-03-26 18:52:48 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/videoparsers/gstav1parse.c:
	  av1parse: Be more explicit about available data when parsing LEB128 values
	  The caller already checks that at least 8 bytes are available, which is the
	  maximum this function is going to parse anyway, but better to not hardcode this
	  assumption and instead actually check for it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11259>

2026-03-26 18:45:11 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/codecparsers/gstav1parser.c:
	* gst/videoparsers/gstav1parse.c:
	  av1parse: Avoid signed 32 bit integer overflow when parsing LEB128 values
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4994
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11259>

2026-03-12 11:14:11 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/codecparsers/gsth266parser.c:
	  h266parser: Avoid integer overflow when parsing profile / tier / level
	  And as a result also avoid a stack overflow.
	  Thanks to Nicholas Soh for finding and analyzing the issue, and suggesting this fix.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4958
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11257>

2026-03-26 18:37:50 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/codecparsers/gsth264parser.c:
	  h264parse: Avoid NULL pointer dereferences when freeing partially parsed SPS/MVC data
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4992
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11251>

2026-03-26 18:31:05 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/codecparsers/gsth264parser.c:
	  h264parse: Remove pointless allocation failure handling
	  g_new0() already aborts the process on allocation failure.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11251>

2026-03-30 16:29:27 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/jp2kdecimator/jp2kcodestream.c:
	  jp2kdecimator: Avoid integer overflows and divisions by zero on invalid tile configurations
	  Thanks to Sebastian Alba Vives for reporting the issue and suggesting the fix.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5008
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11239>

2026-03-30 16:29:01 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/jp2kdecimator/jp2kcodestream.c:
	  jp2kdecimator: Fix some possible integer overflows in size checks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11239>

2026-03-18 18:58:54 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst-libs/gst/vulkan/cocoa/gstvkwindow_cocoa.m:
	  macos: Set activation policy in vulkansink (MoltenVK)
	  Upon creating a window, vulkansink now sets the policy to
	  NSApplicationActivationPolicyRegular, which lets us show an icon in
	  the Dock for convenience and appear in the top menu bar like other
	  apps.
	  This matches the behaviour of glimagesink and osxvideosink from commit
	  5e45a1b1bd0ec4355346c60ef40c14fa91aa9b6c
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11138>

2026-03-18 11:41:18 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Invert order of output caps to match our preference
	  We want Vulkan > GL > sysmem
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11138>

2026-02-13 03:33:34 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Fix incorrect setting of bitfield / flag
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11138>

2026-02-13 03:30:24 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Don't leak RGBA64_LE caps during class init
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11138>

2025-10-29 11:08:00 +0000  Thibault Saunier <tsaunier@igalia.com>

	* gst-libs/gst/cuda/cuda-gst.h:
	* gst-libs/gst/cuda/gstcudacontext.cpp:
	* gst-libs/gst/cuda/gstcudacontext.h:
	* gst-libs/gst/cuda/gstcudaloader.cpp:
	* gst-libs/gst/cuda/stub/cuda.h:
	* gst-libs/gst/hip/stub/cuda.h:
	* sys/nvcodec/gstnvav1encoder.cpp:
	* sys/nvcodec/gstnvav1encoder.h:
	* sys/nvcodec/gstnvdecoder.cpp:
	* sys/nvcodec/gstnvdecoder.h:
	* sys/nvcodec/gstnvencoder.h:
	* sys/nvcodec/gstnvh264encoder.cpp:
	* sys/nvcodec/gstnvh264encoder.h:
	* sys/nvcodec/gstnvh265encoder.cpp:
	* sys/nvcodec/gstnvh265encoder.h:
	* sys/nvcodec/gstnvjpegenc.cpp:
	* sys/nvcodec/gstnvjpegenc.h:
	* sys/nvcodec/plugin.c:
	  nvcodec: Add capability caching to speed up plugin initialization
	  Probing encoder/decoder capabilities requires opening NVENC/NVDEC
	  sessions which adds significant overhead to plugin loading. This
	  change caches the discovered capabilities in GstPlugin cache data
	  and reloads them on subsequent runs.
	  The cache is keyed by device UUID and validated against the CUDA
	  driver API version, ensuring it's invalidated when
	  the hardware configuration changes or the driver is updated.
	  Plugin initialization time: 1.64s -> 0.14s (~11x faster)
	  The remaining time is basically spent in CuInit.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10767>

2026-03-28 15:22:35 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* ext/gtk/gstgtkwaylandsink.c:
	* ext/wayland/gstwaylandsink.c:
	  waylandsink: Properly reset the tag orientation
	  Reset the tag orientation to identity if a new tag list is received without
	  the orientation in it, or if a new stream starts, as it may not contain a
	  tag list.
	  Fixes #3661
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11216>

2026-03-24 18:46:33 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtdec.h:
	  vtdec: Also reset session when output_callback gets a kVTVideoDecoderMalfunctionErr
	  We still reset the session only in handle_frame, because the reset
	  will block. We merely set a flag in output_callback().
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11233>

2025-01-14 19:43:16 +0100  Vadym Markov <markov.vadym@gmail.com>

	* sys/applemedia/vtenc.c:
	  vtenc: restart even if VTCompressionSessionCompleteFrames fails
	  Co-Authored-By: Nirbheek Chauhan <nirbheek@centricular.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11233>

2025-08-21 18:39:22 +0200  Havard Graff <havard@pexip.com>

	* sys/applemedia/vtenc.c:
	  applemedia/vtenc: make sure to NULL terminate the level string
	  Without this, passing in level="4", will cause undetermined behavior.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11233>

2024-05-23 18:36:29 +0200  Tulio Beloqui <tulio@pexip.com>

	* sys/applemedia/vtdec.c:
	  applemedia/vtdec: handle decoder error status for iOS
	  If VTDecompressionSessionDecodeFrame returns kVTInvalidSessionErr or
	  kVTVideoDecoderMalfunctionErr we need to reset the decoder session and
	  request an intra frame.
	  This change allows the decoder to continue decoding after the
	  application switches between foreground and background modes.
	  Co-Authored-by: Nirbheek Chauhan <nirbheek@centricular.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11233>

2026-04-01 09:25:57 +0200  Emil Ljungdahl <emillj@axis.com>

	* ext/sctp/sctpassociation.c:
	  sctp: Set number of outgoing & incoming streams to the same value
	  usrsctp has its own default number of streams. For outgoing streams the
	  default is 10, while for incoming streams the default is 2048. In
	  sctpassociation.c the default number of outgoing streams is changed to
	  1024.
	  This means that when initializing an SCTP session, the INIT message will
	  announce 1024 as number of outbound streams, and 2048 as number of
	  inbound streams. That is not incorrect itself, but it becomes weird when
	  it comes to WebRTC where a datachannel requires one stream in each
	  direction.
	  If a WebRTC peer tries to open a datachannel with ID 1024, it won't be
	  rejected with a proper error message, but you rather get a fatal error
	  originating from a sanity check in sctp_output.c:13873.
	  If there is a risk there are other of sctp than WebRTC we might consider
	  changing the DEFAULT_NUMBER_OF_SCTP_STREAMS define to 2048 instead to
	  avoid changed default behavior. On the other hand, that will affect
	  resource utilization for a session...
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11209>

2026-03-31 14:33:26 +0900  Seungha Yang <seungha@centricular.com>

	* sys/wasapi2/gstwasapi2rbuf.cpp:
	  wasapi2: Log target device information
	  Log device ID and requested mode information
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11202>

2026-03-30 16:40:02 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/sdp/gstsdpdemux.c:
	  gst: Fix a couple of const correctness bugs around strchr() usage
	  `assignment discards ‘const’ qualifier from pointer target type`
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11186>

2026-03-11 16:25:47 +0900  Hou Qi <qi.hou@nxp.com>

	* gst-libs/gst/wayland/gstwldisplay.c:
	  wayland: display: Add protection when replacing wl_output
	  Some legacy platforms are still using older weston version, where wl_output
	  version number is 3. This results in wl_output name being empty, leading
	  to a segment fault when replacing wl_output according to name.
	  In order to avoid above issue, need to add protection when replacing wl_output.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11086>

2026-03-24 02:28:58 +0200  Pavel Guzenfeld <pavelguzenfeld@gmail.com>

	* sys/shm/gstshmsink.c:
	* tests/check/elements/shm.c:
	  shm: fix shmsink exit code 1 on clean shutdown
	  gst_shm_sink_stop() calls gst_poll_set_flushing() which makes
	  gst_poll_wait() return -1 with errno=EBUSY. The poll thread
	  treated this as a fatal error instead of a clean shutdown.
	  Check self->stop before posting GST_ELEMENT_ERROR.
	  Fixes #4487
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11163>

2026-03-26 16:45:05 +0100  Piotr Brzeziński <piotr@centricular.com>

	* gst-libs/gst/vulkan/gstvkswapper.c:
	  vkswapper/vksink: Don't advertise unsupported formats
	  vulkansink's template caps are limited to
	  GST_VULKAN_SWAPPER_VIDEO_FORMATS, but get_supported_caps() did not
	  respect that and would advertise more formats if the HW supported them.
	  vulkanswapper doesn't know how to handle those incorrect formats,
	  resulting in a wrong image being displayed, or even crashes (on macOS
	  with MoltenVK).
	  This change just makes sure to filter out formats not correctly handled
	  by our code before we return the caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11160>

2026-01-28 10:27:43 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtutil.c:
	* sys/applemedia/vtutil.h:
	  vtdec: Supplemental VideoToolbox decoders now registered via vtutil helper
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11146>

2026-03-25 17:35:28 +0900  Haihua Hu <jared.hu@nxp.com>

	* gst-libs/gst/wayland/gstwlwindow.c:
	  wlwindow: fix viewport source outside buffer when play resolution change stream
	  when playing resolution change stream, there is chance that video crop meta
	  is not updated, only video info changed. eg. when use libav decoder.
	  Need always update crop w/h based on priv->video_width/video_height.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11142>

2026-03-25 15:18:43 +0900  Haihua Hu <jared.hu@nxp.com>

	* ext/wayland/gstwaylandsink.c:
	  waylandsink: fix waylandsink crash when call window flush
	  Need check if window is created when call gst_wl_window_flush
	  otherwise it will crash when receive event but window is not created
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11137>

2026-03-24 16:49:53 +0100  François Laignel <francois@centricular.com>

	* gst/mxf/mxfdemux.c:
	  mxfdemux: add reversed temporal offset bound check
	  In `find_entry_for_offset()`, `position` is checked against the segment bounds,
	  which should match `reverse_temporal_offsets` size considering how it is built
	  in `collect_index_table_segments`. However, it doesn't check the actual size of
	  `collect_index_table_segments` which seems a bit fragile. Besides, all other
	  parts of the code explicitely check the `reverse_temporal_offsets` size before
	  accessing it.
	  This commit:
	  * ensures `position` is valid before accessing `reverse_temporal_offsets`,
	  similarly to what was intended to be done for `find_edit_entry()`.
	  * actually acts upon the check result for both.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11127>

2026-03-24 16:23:25 +0100  François Laignel <francois@centricular.com>

	* gst/mxf/mxfdemux.c:
	  mxfdemux: reject corrupted index entry
	  A corrupted index could lead to computing an incorrect edit entry size which
	  would exceed MAX `guint32` and would lead to pulling less bytes than was
	  computed due to the size being casted to `guint32` in the next pull range call.
	  Looking for the next entry would most likely fail due to the excessive previous
	  computed size:
	  > Couldn't find matching partition for stream offset 4294968000
	  This commit detects this situation, logs the problem so as to ease root cause
	  identification and prevents the caller from pulling the entry with incorrect
	  size.
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4974
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11127>

2026-03-24 14:20:39 +0900  Seungha Yang <seungha@centricular.com>

	* sys/wasapi2/gstwasapi2rbuf.cpp:
	  wasapi2sink: Ignore device errors from default device
	  Temporary device-invalidated errors from an automatic
	  stream-routing-aware default device are expected. Ignore
	  them, as we do in the read path
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4971
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11120>

2026-03-23 22:53:08 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/vulkan/vkvp9dec.c:
	  vulkanvp9dec: Fix case in device-specific factory name
	  Previously this would become `vulkanVp9device1dec` and now it becomes
	  `vulkanvp9device1dec` which is consistent with the format used by all other
	  decoders.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11117>

2026-03-20 10:11:23 +0100  Johan Sternerup <johast@axis.com>

	* gst-libs/gst/webrtc/nice/nice.c:
	  nice: Fix leak of nice thread
	  Leak of nice thread also means leaking the nice object, its members, the
	  associated main context along with its file descriptor etc.
	  This is a scenario that could cause a leak:
	  1. Application sets webrtcbin state to NULL.
	  2. webrtcbin calls ice_close() when transitioning to NULL state.
	  3. nice triggers a close function (close_main_cb) to execute within the
	  nice thread.
	  4. close_main_cb starts executing within the nice thread, obtains a
	  strong ref on the nice object, invokes nice_agent_close_async() and
	  waits until its associated callback fires.
	  5. Application unrefs webrtcbin triggering its dispose() method which in
	  turn unrefs the nice object.
	  6. Within the nice thread nice_agent_close_async() finishes and
	  close_main_cb unrefs the nice object and now this is the last reference,
	  which means that disposing/finalization is invoked.
	  7. The finalization of nice now runs within the nice thread itself,
	  which means that that it gets stuck when trying to stop the thread, i.e.
	  it's waiting for itself to finish.
	  The main problem here is that webrtcbin, which is the entity having
	  ownership of the ice object along with its thread, does not fully take
	  the responsibility of managing the lifecycle of the ice object. If
	  webrtcbin is responsible for starting the thread (indirectly by creating
	  the ice object) it also needs to wait for that thread to finish. The
	  explicit call to ice_close() when going to the NULL state seems like the
	  right place to free resources and stop threads. We just need to make
	  sure that when ice_close() has completed, the ice object should no
	  longer be in an active state, so that we then can safely proceed with
	  unrefing the ice object.
	  We previously had the complete procedure for tearing down the ice object
	  and wait for its completion in-place within the nice-finalize method,
	  which however turns out to be too late. So instead of having two ways of
	  closing the ice object, one incomplete and one at the wrong location,
	  this commit now merge those solutions into one solution that is complete
	  and invoked at the right location.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11112>

2026-03-20 20:30:35 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Do not hold the stream lock when pushing out frames
	  This can (and does) cause a deadlock, you should not hold the stream
	  lock when pushing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11099>

2026-03-20 13:59:19 +0000  Thibault Saunier <tsaunier@igalia.com>

	* gst/videoparsers/gstav1parse.c:
	* gst/videoparsers/gstvp9parse.c:
	  vp9parse, av1parse: Remove segment clipping to let downstream handle frame boundaries
	  Remove the GST_BASE_PARSE_FRAME_FLAG_CLIP flag that was causing frames outside
	  segment boundaries to be dropped. This was problematic when seeking to positions
	  where keyframes don't align with segment boundaries, as essential keyframes
	  needed for decoding would get dropped.
	  Let downstream elements (decoders, sinks) decide what to do with frames that
	  may fall outside segment boundaries. This is more flexible and consistent
	  with h264parse which also doesn't set this flag.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11087>

2026-03-17 11:21:40 +0100  Albert Sjölund <alberts@axis.com>

	* ext/dtls/gstdtlsdec.c:
	* ext/dtls/gstdtlsdec.h:
	* ext/dtls/gstdtlsenc.c:
[--snip--]
