=== release 1.28.4 ===

2026-06-12 13:19:43 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst-plugins-base.doap:
	* meson.build:
	  Release 1.28.4

2026-06-12 13:18:19 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ext/alsa/gstalsasrc.c:
	  Revert "alsa: fix deadlock during shutdown"
	  This reverts commit dd1fbc9160e5368119544394be2c16c9e57d9a22.
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11690#note_3516817

2026-06-12 12:20:36 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/pbutils/gstdiscoverer.c:
	  discoverer: Lock the DISCO_LOCK whenever accessing the streams list
	  The list is accessed from multiple threads, possibly at the same time.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11840>

2026-06-04 12:39:38 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/subparse/gstsubparse.c:
	  subparse: Avoid zero and extreme fps when parsing mdvdsub subtitles
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5068
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11810>

2026-06-04 12:16:07 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/tag/id3v2.c:
	* gst-libs/gst/tag/id3v2.h:
	* gst-libs/gst/tag/id3v2frames.c:
	  id3v2: Improve const-correctness and use correct size type
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11808>

2026-06-04 12:16:03 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/tag/id3v2frames.c:
	  id3v2: Check for enough data when reading RVA2 tags
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5067
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11808>

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

	* gst-libs/gst/tag/id3v2.c:
	  id3v2: Don't modify const data
	  Also actually store caps for custom ID3v2 frames in the sample.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5045
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11808>

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

	* gst-libs/gst/tag/gstxmptag.c:
	  xmptag: Make sure to keep the temporary array always NUL-terminated during parsing
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5066
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11806>

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

	* gst-libs/gst/tag/gstxmptag.c:
	  xmptag: Correctly initialize pointer to the end of the input array
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5066
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11806>

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

	* gst-libs/gst/tag/gstxmptag.c:
	  xmptag: Improve const-correctness in parser
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11806>

2026-06-02 17:52:06 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/rtp/gstrtcpbuffer.c:
	* tests/check/libs/rtp.c:
	  rtcpbuffer: Add some missing bounds checks when parsing SDES
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5047
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11796>

2026-06-02 17:51:53 +0300  Sebastian Dröge <sebastian@centricular.com>

	* tests/check/libs/rtp.c:
	  rtp: Fix various bool assertions in test
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11796>

2026-06-02 15:06:45 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* gst-libs/gst/audio/gstaudioaggregator.c:
	* tests/check/elements/audiomixer.c:
	  audioaggregator: Remove brittle conversion of in-progress buffers
	  The sinkpad converters cannot be used to re-convert the internal buffers
	  because the `converter-config` could be invalid for this conversion. For
	  example, a conflicting `mix-matrix` will cause the conversion to fail.
	  In case of the converted input buffers, just remove them. On aggregate
	  we will re-convert and re-align the same input buffer.
	  In case of the partially-written output buffer, we cannot convert them
	  without potentially causing data loss or glitches. Since ad-hoc
	  conversion is brittle, just drop the converted output buffer.
	  A more elaborate implementation could keep already-mixed input buffers
	  around in case we need to recreate the entire output buffer. However,
	  that is not the aim of this commit.
	  Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11775>

2026-06-03 11:09:15 +0200  Dino Spiller <dinos@axis.com>

	* gst-libs/gst/audio/audio-resampler-neon.h:
	  audio-resampler-neon: re-increment address
	  The original code contained an increment on the "a" and "b" variables
	  that has been removed by last patch, resulting in several artifacts in
	  the sound. Restored the increment, to get back to the correct behavior.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11760>

2026-06-02 17:07:49 +0100  Arthur Chan <arthur.chan@adalogics.com>

	* gst-libs/gst/pbutils/encoding-profile.c:
	  pbutils: Add NULL check for tmpcaps parsing
	  Signed-off-by: Arthur Chan <arthur.chan@adalogics.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11746>

2026-06-02 17:02:00 +0100  Arthur Chan <arthur.chan@adalogics.com>

	* gst-libs/gst/pbutils/encoding-profile.c:
	  pbutils: Fix possible null dereferene when empty string is provided
	  Signed-off-by: Arthur Chan <arthur.chan@adalogics.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11747>

2026-05-21 00:50:55 +0530  Taruntej Kanakamalla <tarun@centricular.com>

	* gst-libs/gst/sdp/gstsdpmessage.c:
	* tests/check/libs/sdp.c:
	  sdp: keep level-asymmetry-allowed in the caps
	  Looking at the caps generated from SDP, without the `level-asymmetry-allowed`` field,
	  there is no way to tell if its value is 1 or not set (i.e 0) by the remote
	  peer.
	  So retain the `level-asymmetry-allowed` field in the caps so that, it can be used
	  along with the `profile-level-id` to determine the compatible `level` values
	  during the negotiation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11727>

2026-05-24 00:53:49 +0200  Robert Mader <robert.mader@collabora.com>

	* gst-libs/gst/gl/egl/gstglmemoryegl.c:
	  gl: egl: Set TRANSFER_NEED_DOWNLOAD flag
	  Bringing _gl_mem_egl_alloc() in line with _gl_mem_pbo_alloc() and
	  ensuring glReadPixels() is used when downloading imported dmabufs.
	  Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4965
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11710>

2026-05-21 15:38:50 +0200  Dino Spiller <dinos@axis.com>

	* gst-libs/gst/audio/audio-resampler-neon.h:
	  audio-resampler-neon: fix accumulated stride
	  The stride is accumulated, resulting in unintended excessive shift.
	  Modified by saving the base address to the register and successively
	  adding the strides.
	  Fixed also a missing load that was present in previous code.
	  Change-Id: Icedd56397c745b1c7603edc45a825b6a78b16b11
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11703>

2025-11-18 14:06:15 +0100  Albert Sjölund <alberts@axis.com>

	* ext/alsa/gstalsasrc.c:
	  alsa: fix deadlock during shutdown
	  Previously, due to being blocking and having no mechanism for graceful
	  shutdown, it would hang if there is no data available. Instead,
	  implement a similar mechanism as in alsasink to handle this, by using
	  snd_pcm_wait and yield.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11690>

2026-05-22 20:34:26 +0200  Robert Mader <robert.mader@collabora.com>

	* gst-libs/gst/video/gstvideodmabufpool.c:
	  videodmabufpool: Fix debug category
	  Without this define the default category is used, i.e.
	  GST_DEBUG=video-dmabuf-pool:5 doesn't work.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11677>

2026-05-15 10:46:15 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/tag/id3v2.c:
	  id3v2: Don't unnecessarily assert on size==0 when unsyncing data
	  Simply return NULL and let the callers handle it, which all handle this
	  correctly already.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11641>

2026-05-14 15:42:21 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/gl/gstglupload.c:
	  glupload: fix memleak on failure path
	  In function _udmabuf_upload_transform_caps(), the capsfeature variable
	  `passthrough` was leaked if `intersected_caps` and empty, when pad direction is
	  not GST_PAD_SINK.
	  The simplest approach would be just add `gst_caps_features_free()` before the
	  `goto out`, but it looks better to refactor a little bit the function, so two
	  common variables to both blocks of the main `if`, would have a single point of
	  deallocation.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11640>

2026-05-14 16:41:42 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: Use PLAY_ITEMS_LOCK for URI-related getter
	  The setter is using that lock.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11633>

2026-05-11 10:59:08 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/playback/gsturidecodebin.c:
	  uridecodebin: Protect missing_plugin_errors list from concurrent access
	  Otherwise this can lead to memory corruption or leaks.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11615>

2026-05-08 12:44:20 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/gl/gstglwindow.c:
	  glwindow: Allow setting a NULL window handle
	  Otherwise it's not possible to go back into the original state and a dangling
	  window handle might still be used by the window.
	  All our Android tutorials, for example, are setting the handle back to NULL when
	  the surface disappears and backends also seem to already handle this just fine.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11611>

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

	* meson.build:
	  Back to development after 1.28.3

=== release 1.28.3 ===

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

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

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-04-22 15:12:04 -0400  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst-libs/gst/gl/gstglcolorconvert.c:
	* gst-libs/gst/gl/gstglformat.c:
	  gl: add GBRA swizzle support
	  Handle GBRA in the GL video format swizzle table, and use the same GBR
	  component reorder for input and output planar RGB conversions.  This lets
	  GBRA follow the existing planar RGB reorder path instead of reaching the
	  unhandled swizzle case.
	  Fixes #5060
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11422>

2026-04-22 15:10:55 -0400  Dominique Leroux <dominique.p.leroux@gmail.com>

	* tests/check/libs/gstglcolorconvert.c:
	  gl/tests: make colorconvert meta test robust
	  Check that textoverlay is available before constructing the meta test
	  pipeline, and report parser errors from gst_parse_launch() directly.  This
	  keeps the test from continuing with a partial pipeline in environments where
	  textoverlay is not visible to the Meson test sandbox.
	  Use a bounded preroll wait so failures in the helper pipeline cannot hang the
	  whole gstglcolorconvert test binary.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11422>

2026-04-22 15:08:21 -0400  Dominique Leroux <dominique.p.leroux@gmail.com>

	* tests/check/libs/gstglcolorconvert.c:
	  gl/tests: cover planar RGB reorder conversion
	  Add focused coverage for conversions between packed RGBA and planar RGB
	  formats in gstglcolorconvert.  The test keeps planar GL inputs as one
	  GstGLMemory per texture plane, because mapping the input buffer as a
	  GstVideoFrame before conversion can collapse or otherwise alter the memory
	  layout that the converter is meant to consume.
	  The failure messages include the input format, output format, plane,
	  offset, and byte values so component-swizzle mistakes are directly
	  visible from the test log.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11422>

2026-04-23 11:12:28 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/video/video-info-dma.c:
	  libs: video: add precondition check on dma helpers
	  For not invalid fourcc and modifiers. Also, check caps object type.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11451>

2026-05-05 10:34:45 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/pbutils/gstdiscoverer.c:
	  discoverer: Take the DISCO_LOCK while parsing stream topology
	  pad-added/removed on uridecodebin can modify the structures this is iterating
	  over, which can then lead to a use-after-free if timing is very bad.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11539>

2026-04-30 23:31:12 -0300  L. E. Segovia <amy@centricular.com>

	* gst-libs/gst/audio/audio-resampler-neon.h:
	  audio-resampler-neon: fix Thumb encoding and use Clang O2 calculation for strides
	  Fixes #5075
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11491>

2026-05-03 10:43:43 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/audio/gstaudioaggregator.c:
	  audioaggregator: Don't reset samples_per_buffer when updating latency
	  There's no relation at all between these two values. Instead only reset it
	  when the output buffer duration property changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11487>

2026-05-03 10:41:34 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/audio/gstaudioaggregator.c:
	  audioaggregator: Don't reset samples_per_buffer unless sample rate has changed
	  The value only depends on the output-buffer-duration property and the sample
	  rate, so resetting it is unnecessary unless the rate changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11487>

2026-05-02 18:12:59 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/audio/gstaudioaggregator.c:
	  audioaggregator: Don't drop pending input buffers on sinkpads on srcpad caps changes
	  If there is no conversion support on the sinkpads then the subclass must be able
	  to handle the buffer independent of the srcpad caps, so dropping it is
	  unnecessary.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11483>

2026-05-01 20:31:52 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/audio/gstaudioaggregator.c:
	  audioaggregator: Don't try converting buffers on caps changes if impossible
	  If there is no conversion function then the best we can do is to just not
	  convert and drop the buffers, and then continue processing from the next
	  buffers.
	  Anything else will cause assertions.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11479>

2026-04-30 17:39:00 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/playback/gstdecodebin2.c:
	  decodebin2: fix leak of endpads list on shutdown while exposing
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11470>

2026-04-21 12:07:20 +0200  Santiago Carot-Nemesio <sancane@gmail.com>

	* gst/audioresample/gstaudioresample.c:
	* tests/check/elements/audioresample.c:
	  audioresample: Fix extra samples produced at speech-to-silence transitions
	  When audiorate fills a PTS gap with GAP-flagged silence buffers and
	  these reach audioresample, the element calls push_drain() to flush
	  the FIR filter tail during the transition from non-gap to gap samples.
	  This pushes an extra buffer downstream (bypassing BaseTransform)
	  containing the filter's residual output — roughly 128 samples at 16 kHz
	  per transition.
	  Since the incoming data is silence (GAP), the filter tail is also
	  silence, so these extra samples are audibly meaningless but they break
	  sample-count accounting in downstream elements that rely on exact
	  timestamp/duration correspondence.
	  Fix this by replacing push_drain() with dump_drain() in the GAP path.
	  dump_drain() feeds the same zeros into the filter to stabilize it, but
	  discards the output instead of pushing it downstream.
	  Includes a test that feeds audiorate ! audioresample with a 140 ms
	  timestamp gap and verifies that exactly 6 output buffers are produced
	  (not 7), with correct PTS, duration, and GAP flags.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11439>

2026-04-22 16:03:15 -0400  Xavier Claessens <xclaessens@netflix.com>

	* gst-libs/gst/app/gstappsink.c:
	* gst-libs/gst/app/gstappsrc.c:
	  appsink: Allow passing NULL callbacks
	  Otherwise there is no way to stop receiving those
	  callbacks. Implementation already explicitly allows it.
	  gst_app_sink_set_simple_callbacks() already allows it too.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11431>

2026-04-22 16:02:10 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* ext/gl/gstglimagesink.c:
	* gst-libs/gst/gl/gstglcolorconvert.c:
	  opengl: Fix glcolorconvert vertical flip issue on crop
	  The same crop vertices was applied to both glimageisnk and glcolorconvert
	  despite the image orientation being opposite. To avoid more errors in the
	  future, simply multiply the texture coordinate by their cropped size. This allow
	  having exactly the same code in both element.
	  Fixes #5061
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11413>

2026-04-20 09:23:31 +0200  Edward Hervey <edward@centricular.com>

	* gst-libs/gst/tag/id3v2.c:
	* gst-libs/gst/tag/id3v2.h:
	  id3v2: Check valid frame sizes more
	  An empty frame data size is invalid and should be ignored.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5049
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11380>

2026-04-13 20:23:23 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/subparse/samiparse.c:
	  samiparse: Error out if there's more than 64 levels of SAMI element nesting
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11362>

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

	* gst/subparse/samiparse.c:
	  samiparse: Skip lines with invalid element/tag names or attribute names
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11362>

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

	* gst/subparse/samiparse.c:
	  samiparse: Skip comment elements, DOCTYPE, [CDATA etc
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11362>

2026-04-13 19:50:25 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/subparse/samiparse.c:
	  samiparse: Truncate HTML context buffer when resetting the context too
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11362>

2026-04-13 19:31:20 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/subparse/samiparse.c:
	  samiparse: Improve const-correctness and don't modify const input string
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11362>

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

	* gst/subparse/gstsubparse.c:
	  subparse: Free error if stripping pango markup fails
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11362>

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

	* gst/subparse/gstsubparse.c:
	  subparse: Use a GString to accumulate text results from GMarkupParser
	  Repeated g_strconcat() is unnecessarily inefficient.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11362>

2026-04-13 20:54:18 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/tag/gstexiftag.c:
	  exiftag: Use a hashtable instead of a linked list for storing the pending tags
	  This considerably speeds up parsing of huge exif chunks.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11364>

2026-04-16 15:38:40 +0100  Arthur Chan <arthur.chan@adalogics.com>

	* gst/subparse/qttextparse.c:
	  subparse: Fix memory leakage for fgcolor and bgcolor
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11359>

2026-04-11 15:39:47 +0100  Philippe Normand <philn@igalia.com>

	* gst-libs/gst/video/gstvideodmabufpool.c:
	  videodmabufpool: Break ref cycle between the pool and its thread
	  The GThread stored in the pool was taking a strong ref of the pool itself, thus
	  preventing full disposal later on and introducing several memory leaks.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11337>

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

	* gst-libs/gst/tag/id3v2.c:
	  id3v2: Add input validation and refactor id3v2_ununsync_data
	  The ID3v2 specification uses data unsynchronisation to prevent 0xff 0x00
	  sequences from being mistaken for sync bytes. The ununsync_data() function
	  removes this protection by replacing 0xff 0x00 with 0xff bytes.
	  The function previously accepted any pointer without validation, risking
	  crashes on NULL inputs. The pointer-based iteration was also harder to
	  follow and more error-prone than index-based access.
	  The loop now uses indices instead of pointer arithmetic, making the bounds check
	  and byte-skipping logic clearer.  Providing invalid inputs is a programming
	  error.  on error.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11320>

2026-04-11 10:38:10 +0200  Edward Hervey <edward@centricular.com>

	* gst-libs/gst/app/gstappsrc.c:
	  appsrc: Fix dropped counting with bufferlist
	  * buflist is the incoming bufferlist (and not the one we are dropping)
	  * buflist could be NULL
	  Instead, properly use the actual item buffer list we are dropping
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11312>

2026-04-09 11:51:38 +0200  Edward Hervey <edward@centricular.com>

	* gst-libs/gst/tag/gstexiftag.c:
	  exiftag: Check denominator of fractions are valid
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11293>

2026-04-09 11:36:17 +0200  Edward Hervey <edward@centricular.com>

	* gst-libs/gst/tag/id3v2.c:
	  id3v2: Prevent undefined behaviour when shifting
	  Unless specified, operations on types smaller than `int` are promoted
	  to (signed) int. That would result in `0xff << 24` being a negative
	  value (highest bit set).
	  Instead, make it clear by casting to a guint.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11293>

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-base.doap:
	* meson.build:
	  Release 1.28.2

2026-04-07 11:58:30 -0300  L. E. Segovia <amy@centricular.com>

	* gst-libs/gst/audio/audio-resampler-neon.h:
	  audio-resampler-neon: read array operand by hand, part 2
	  Fixes #5015
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11273>

2026-04-07 10:50:22 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/subparse/qttextparse.c:
	  subparse: Fix integer overflow when calculating qttext timestamp
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11265>

2026-03-31 12:11:37 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/tag/gstexiftag.c:
	  exiftag: Parse sensitivity value with the correct number of bits and endianness
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11261>

2026-03-31 12:09:16 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/tag/gstexiftag.c:
	  exiftag: Add missing bounds check and integer overflow protections in various places
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4996
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11261>

2026-03-31 11:59:11 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/tag/gstexiftag.c:
	  exiftag: Use g_malloc() instead of malloc()
	  The memory is going to be freed later with g_free().
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11261>

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

	* gst/typefind/gsttypefindfunctions.c:
	  typefind: Remove dead code in AV1 LEB128 parser
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11259>

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

	* gst/typefind/gsttypefindfunctions.c:
	  typefind: Allow G_MAXUINT32 as LEB128 encoded value when parsing AV1 bitstreams
	  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:59:11 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/typefind/gsttypefindfunctions.c:
	  typefind: Use a byte reader for parsing AV1 bitstreams
	  And make sure to use appropriate bounds checks.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4993
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11259>

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

	* gst/typefind/gsttypefindfunctions.c:
	  typefind: Avoid signed 32 bit integer overflow when parsing AV1 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-26 19:59:42 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/subparse/gstsubparse.c:
	  subparse: Avoid NULL-pointer dereferences in mdvdsub parsing code
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4995
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11256>

2026-03-30 23:37:04 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/subparse/gstsubparse.c:
	* tests/check/elements/subparse.c:
	  subparse: Fix handling of closing of multi-byte tags
	  They were previously wrongly considered as wrong tags due to using wrong
	  byte offsets into the string that only happened to match for single-byte tags.
	  Add a test for this case too.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11249>

2026-03-30 20:39:08 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/subparse/gstsubparse.c:
	* gst/subparse/gstsubparse.h:
	  subparse: Replace regex string matching / replacing with plain C string parsing
	  The regexes had suboptimal behaviour that easily took 30s on a 1kB long line and
	  probably had quadratic behaviour in the length of the string.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5002
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11249>

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

	* gst/subparse/gstsubparse.c:
	  subparse: Replace a `g_strv_length()` in a loop header with more efficient code
	  It doesn't really matter in this case as the array is small.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11249>

2026-04-01 11:06:11 -0300  L. E. Segovia <amy@centricular.com>

	* gst-libs/gst/audio/audio-resampler-neon.h:
	  audio-resampler-neon: read array operand by hand
	  GCC at -O0 -mfloat-abi=hard runs out of registers for precalculating the
	  offsets of the second operand. So instead let's generate them by hand.
	  For GCC and Clang (tested with Godbolt on 15.2 and 22.1 rsp.) the
	  generated code optimizes to the same.
	  See https://godbolt.org/z/e6G9WT7df
	  Fixes #5015
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11231>

2026-04-05 12:44:16 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/tag/gstexiftag.c:
	  exiftag: Ignore invalid fractions with numerator/denominator G_MININT
	  We can't represent these.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11229>

2026-04-01 12:40:31 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/playback/gstparsebin.c:
	  parsebin: Remove pointless casts
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11212>

2026-04-01 12:40:11 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/playback/gstdecodebin2.c:
	* gst/playback/gstplaybin2.c:
	* gst/playback/gsturisourcebin.c:
	  playback: Make sure to check for empty/any caps before getting the first structure
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5012
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11212>

2026-04-01 19:10:07 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/tag/gstexiftag.c:
	  exiftag: Unmap buffer if parsing a rational number gives a zero denominator
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11210>

2023-09-21 15:02:44 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* gst-libs/gst/audio/gstaudioencoder.c:
	  base: audioencoder: Remove fixed caps from srcpad
	  Audio encoders don't have to have fixed caps. In particular, this breaks
	  switching channel configuration with avenc_aac.
	  fdkaacenc was unaffected and permitted channel changes because it did
	  not use the caps from gst_pad_get_allowed_caps in its entirety.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11131>

2026-03-24 12:17:30 +0100  Pablo García <pgarcia@fluendo.com>

	* gst-libs/gst/audio/gstaudiodecoder.c:
	  audiodecoder: Fix different seqnum error
	  Authored-by: Rubén González <rgonzalez@fluendo.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11136>

2026-03-24 12:20:49 +0100  Pablo García <pgarcia@fluendo.com>

	* gst-libs/gst/video/gstvideodecoder.c:
	  videodecoder: Fix different seqnum error
	  When running
	  "> gst-launch-1.0 v4l2src num-buffers=10 ! image/jpeg ! filesink
	  location=/tmp/data
	  > gst-validate-1.0 filesrc location=/tmp/data ! jpegdec ! fakesink"
	  the logs say:
	  "EOS events that are part of the same pipeline 'operation' should have
	  the same seqnum"
	  Authored-by: Rubén González <rgonzalez@fluendo.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11136>

2026-02-19 14:56:50 +0200  Marko Kohtala <marko.kohtala@gmail.com>

	* gst-libs/gst/rtsp/gstrtspurl.c:
	* tests/check/libs/rtsp.c:
	  rtsp: gstrtspurl: Parse URL having user without password
	  In RFC 1738 the password is optional, but it was required when @ was used
	  in the authority section. This failed to parse URL with only a username.
	  Fixes #4922
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11083>

2026-03-19 09:41:29 +0000  Wojciech Kapsa <wojciech.kapsa@medvc.eu>

	* gst/compositor/compositor.c:
	  compositor: move gst_compositor_init_blend() to element class_init
	  Commit e8e12db5f4 moved gst_compositor_init_blend() from plugin_init()
	  to gst_compositor_pad_class_init() so it would be called even without
	  plugin_init() (e.g. gstreamer-full static linking).
	  However, pad_class_init is only called when the first GstCompositorPad
	  is instantiated. When compositor runs with force-live=true and no sink
	  pads, no pad is ever created, so the global blend/fill function pointers
	  remain NULL, causing a segfault in _draw_background().
	  Move the call to gst_compositor_class_init() instead, which is always
	  called when a GstCompositor element is created, regardless of whether
	  any pads exist. This preserves the original intent of not depending on
	  plugin_init() while ensuring the blend functions are always initialized.
	  This is the same pattern applied by c0f9029a13 which moved
	  GST_DEBUG_CATEGORY_INIT from pad_class_init to compositor_class_init
	  for the same reason.
	  Fixes: e8e12db5f4 ("debug: Category init should happen in class_init when possible")
	  Reproducer:
	  gst-launch-1.0 compositor force-live=true background=black \
	  ! fakesink sync=true
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11080>

2026-03-18 23:42:56 +0100  Tim-Philipp Müller <tim@centricular.com>

	* po/LINGUAS:
	* po/kk.po:
	* po/pt_BR.po:
	* po/sv.po:
	* po/zh_CN.po:
	  gst-plugins-base: update translations
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11077>

2026-03-13 12:19:45 +0100  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/gl/gstglupload.c:
	  gl: upload: Fix linking glupload with restrictive caps filter
	  When a strict caps filter is used, the caps we are using may be
	  limited to DMABuf. Before we have a context, we don't know if the DMABuf formats
	  are supported or not, but we know that they will likely be supported as
	  GLMemory/RGBA with direct upload. Ensure this option is return, fixing the
	  linker issue.
	  Fixes #4622
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11050>

2026-03-13 12:17:29 +0100  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/gl/gstglupload.c:
	  gl: upload: Optimize EGL format check when there is no context
	  Iterating over all the format is unnecessary without a context since all format
	  are going to be accepted anyway. Skip the check entire and accept the formats.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11050>

2026-03-15 11:37:21 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst-libs/gst/video/video-info.c:
	* tests/check/libs/video.c:
	  video: fix too small default stride for UYVP with odd widths
	  UYVP is packed 4:2:2 in units of two pixels. For odd widths we
	  need to allocate an extra macropixel of two pixels, even if we
	  only need one of those.
	  For a width of 321 it would allocate 804 bytes whereas we need 805.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11039>

2026-03-13 18:32:49 +0900  Seungha Yang <seungha@centricular.com>

	* gst/videorate/gstvideorate.c:
	* tests/check/elements/videorate.c:
	  videorate: Fix unrestored caps on backward PTS
	  When caps changes, videorate temporarily restores previous caps to
	  drain queued buffers and then switches back to the current caps.
	  But if the current buffer has backward PTS, above restoration step was
	  skipped, leaving the previous caps configured on the srcpad.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11038>

2026-03-12 08:59:41 +0000  Charles <charles05@canonical.com>

	* gst-libs/gst/video/video-converter.c:
	  video-converter: fix I420/A420/AYUV BGRA/ARGB output on big-endian
	  These conversion tasks contained a G_BYTE_ORDER guard that swapped the
	  choice between video_orc_convert_*_BGRA and video_orc_convert_*_ARGB on
	  big-endian platforms, corrupting I420/A420/AYUV -> RGBA/BGRA/ARGB
	  conversions. A black I420 frame came out as R=0 G=0 B=255 A=0 instead
	  of R=0 G=0 B=0 A=255 on s390x.
	  The ORC C fallback implementations use orc_union16/orc_union32 byte-array
	  fields (x2[], x4[]) which index bytes at fixed memory addresses regardless
	  of host endianness. The AltiVec SIMD backend similarly handles endianness
	  internally via different vperm constants for BE/LE. In both cases the same
	  function produces the same byte layout in memory on all platforms, making
	  the G_BYTE_ORDER guards incorrect.
	  Tested on s390x (big-endian): removing the guards fixes the corruption.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4960
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11024>

2026-03-05 15:35:15 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/opus/gstopusenc.c:
	  opusenc: Use correct memcpy() size when copying Vorbis channel positions
	  The size of the destination (64 channels) was used but the source is
	  smaller (8 channels). While copying garbage into the destination is not so much
	  of a problem as only the actually used number of channels is going to be read
	  later, this can potentially lead to a segfault.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4948
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10984>

2026-02-03 07:30:26 +0900  jeongmin kwak <jeongmin.kwak@lge.com>

	* gst-libs/gst/rtp/gstrtcpbuffer.c:
	* tests/check/libs/rtp.c:
	  rtcp: Fix buffer overread in SDES packet parsing
	  Add bounds checking in gst_rtcp_packet_sdes_next_entry() and
	  gst_rtcp_packet_sdes_get_entry() to prevent reading beyond packet
	  boundaries when parsing malformed SDES items.
	  Both functions now return FALSE when attempting to read past the
	  packet length, preventing potential buffer overread vulnerabilities.
	  tests: Add regression test for SDES buffer overread vulnerability
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10971>

2026-03-03 16:25:39 +0900  jeongmin kwak <jeongmin.kwak@lge.com>

	* gst-libs/gst/rtp/gstrtpbuffer.c:
	* tests/check/libs/rtp.c:
	  rtpbuffer: Add validation for CSRC list length
	  Validate that the CSRC list does not extend beyond the packet boundary
	  as required by RFC 3550. A malformed RTP packet with a CSRC count that
	  would cause the CSRC list to extend beyond the available packet data
	  could lead to out-of-bounds memory access.
	  The validation follows the same pattern used for padding validation
	  (line 430), ensuring consistency with existing security checks.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10957>

2026-01-29 12:34:46 +0100  Fabian Orccon <forccon@fluendo.com>

	* gst-libs/gst/audio/gstaudiosink.c:
	* gst-libs/gst/audio/gstaudiosrc.c:
	* gst/playback/gstdecodebin2.c:
	* gst/playback/gstparsebin.c:
	* tests/check/elements/inputselector.c:
	  all: GThreadFunc return type fixes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10955>

2026-03-01 10:53:21 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/gl/gstglcolorconvert.c:
	  glcolorconvert: Fix NULL pointer dereference on buffers without video meta
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4935
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10953>

2026-02-26 01:53:07 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.28.1

=== release 1.28.1 ===

2026-02-26 01:44:06 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst-plugins-base.doap:
	* meson.build:
	  Release 1.28.1

2026-02-11 19:44:34 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/riff/riff-media.c:
	  riff: Correctly check that enough RGB palette data is available
	  This can otherwise overflow and result in out-of-bounds reads/writes.
	  Fixes GST-SA-2026-0004, ZDI-CAN-28854, CVE-2026-2921.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4901
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10892>

2026-02-22 00:21:15 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* meson.build:
	  meson: Fix building of examples/gl/qt/qglwtextureshare
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10874>

2026-02-18 17:45:25 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst-libs/gst/video/video-converter.c:
	  video-converter: Do not transform_metas with 0 width or height
	  It can legitimately happen in some scenarios and will lead to a crash, so in
	  that case we just skip copying the metas instead. gst_video_converter_frame, for
	  example, has a similar check that just returns if width or height are 0, so
	  let's just follow the same approach.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10833>

2026-02-12 02:49:28 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst-libs/gst/gl/egl/gstglcontext_egl.c:
	* gst-libs/gst/gl/gstglcontext.c:
	* gst-libs/gst/gl/wgl/gstglcontext_wgl.c:
	  gstgl: Fix incorrect usage of G_MODULE_SUFFIX on macOS
	  G_MODULE_SUFFIX is "so" on both Linux and macOS, but these codepaths
	  were assuming that it's only "so" for Linux. Use pre-processor macros
	  instead.
	  This is exactly why G_MODULE_SUFFIX is deprecated on macOS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10807>

2026-01-28 11:55:31 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst-libs/gst/gl/meson.build:
	  eagl: Add support for tvOS
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10807>

2026-01-28 11:45:20 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/gl/meson.build:
	* gst-libs/gst/gl/meson.build:
	* meson.build:
	* tests/examples/gl/cocoa/meson.build:
	* tests/examples/gl/qt/qglwtextureshare/meson.build:
	  meson: Deprecate `system = 'ios'` in cross files, use subsystem
	  Since we require Meson 1.4.0, we can now use subsystem names (added in
	  1.2.0).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10807>

2026-02-17 13:23:26 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/compositor/compositor.c:
	  compositor: Do copy_metas also for background frame
	  Previously the background frame was skipped from the n_pads counting for
	  performance reasons, but the copy_metas check  used n_pads to iterate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10825>

2023-04-02 16:53:45 +0100  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>

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>

2026-02-15 15:02:07 +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>

2026-02-14 12:38:55 +0100  Robert Mader <robert.mader@collabora.com>

	* gst-libs/gst/video/gstvideofilter.c:
	  videofilter: Add VIDEO_ALIGNMENT to downstream pool
	  In order to support the new GstVideoDmabufPool. Note that the video meta
	  should also only be added when downstream advertises support for it,
	  however doing so requires changes to tests and is thus left to a follow-up.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10811>

2026-02-03 14:34:09 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/video/gstvideodecoder.c:
	  videodecoder: Don't directly forward gap events if the decoder is not drained
	  Instead queue it up for forwarding before the next video frame. While this is
	  not ideal, it makes sure that the gap event does not go ahead of previous
	  buffers if the decoder has any queued internally, which could break timestamp
	  tracking downstream.
	  This fixes a regression introduced in 62cb08404b9bd055c45cc1d5b71141e927ad748a.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10750>

2026-02-03 14:13:54 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/video/gstvideodecoder.c:
	  videodecoder: Move gap event handling into a helper function
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10750>

2026-02-03 13:55:27 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/audio/gstaudiodecoder.c:
	  audiodecoder: Only forward gap events immediately if no frames are pending
	  Otherwise the gap event would go ahead of the pending frames, breaking
	  buffer/event serialization.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10750>

2026-01-06 21:30:00 +0100  Christian Gräfe <cgraefe83@gmail.com>

	* docs/plugins/gst_plugins_cache.json:
	* ext/gl/gstglsrcbin.c:
	  glsrcbin: adapt klass "Src" to "Source"
	  use recommended "Source" instead of "Src"
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10729>

2026-01-06 11:41:27 +0900  jeongmin kwak <jeongmin.kwak@lge.com>

	* gst-libs/gst/rtsp/gstrtsptransport.c:
	  rtsp: Validate transport parameter parsing in RFC 2326
	  The layers, ttl, and ssrc parameters were parsed with strtoul()
	  but did not validate whether parsing succeeded, causing invalid or
	  empty values to be silently accepted as zero in violation of RFC 2326.
	  Replace with g_ascii_string_to_unsigned() for proper validation with
	  automatic range checking (ttl: 0-255) and overflow detection.
