=== release 1.29.2 ===

2026-06-29 00:04:39 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.29.2

2026-06-18 18:16:17 +0200  Alicia Boya García <aboya@igalia.com>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	  qtdemux: push_buffer() should use global GstClockTime
	  Currently the callers of gst_qtdemux_decorate_and_push_buffer() don't
	  agree on whether the `position` argument should be in track units or
	  nanoseconds. They also don't agree on whether it should be global time
	  (after edit lists) or media time (before edit lists).
	  This patch modifies both the function and the users to use the
	  convention that makes the most sense:
	  1. The `position` argument should be in nanoseconds, as it's currently
	  only used to update qtdemux->segment.position, which is of type
	  GstClockTime. Using a different convention is currently causing
	  unnecessary rounding in pull mode.
	  2. The `position` argument should be in global time (after edit lists).
	  This is already the current behavior in pull mode.
	  3. The `position` argument reflects the current time position in the
	  demuxer. What this means more exactly remains an implementation
	  detail of the demuxer.
	  This patch also adds a test for a file where a seek with `stop` set was
	  causing a premature EOS in push mode, which is fixed by the changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11951>

2026-06-18 15:23:42 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux: Set tsdemux ignore-continuity-counter property
	  Check for the new ignore-continuity-counter property and set it
	  it to true on tsdemux if present. Some HLS streams are broken
	  at fragment boundaries and only play back correctly if we ignore
	  the discontinuity.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11884>

2026-06-22 12:14:35 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-read-common.c:
	  matroskademux: Don't pass non-GstElement pointers to GST_ELEMENT_ERROR
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11909>

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

	* meson.build:
	  msvc: Fix build after adding new tracer macros
	  MSVC's legacy preprocessor does not expand variadic args in
	  recursive macros correctly, causing new tracer macros to fail
	  with cl version 19.41.34120.
	  Use standard conforming preprocessor mode instead
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11907>

2026-03-30 09:44:27 -0300  L. E. Segovia <amy@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/gdk_pixbuf/gstgdkpixbufdec.c:
	* ext/gdk_pixbuf/meson.build:
	  gdkpixbufdec: remove Sun and Andrew raster formats
	  They were both removed in 2.32.1:
	  https://github.com/GNOME/gdk-pixbuf/commit/af2fca9bba5c127ca092c3a4bf7656015d6168ad
	  Moreover, the Andrew raster format (image/x-cmu-raster) doesn't match at
	  all the Sun raster format, the former is similar to LaTeX while the
	  latter is binary.
	  As a double safety measure, let's bump the minimum gdk-pixbuf version as
	  2.32.1 was released in 2015 [1] while 2.8.0 is from 2005 [2].
	  Fixes #5004
	  [1]: https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/tags/2.32.0
	  [2]: https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/tags/GTK_2_8_0
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11183>

2026-06-15 15:24:24 +0200  Benoît Mauduit <benoit.mauduit@devialet.com>

	* ext/flac/gstflacenc.c:
	  flacenc: Use dash for property name in DO_UPDATE
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11508>

2026-05-06 14:31:21 +0200  Benoît Mauduit <benoit.mauduit@devialet.com>

	* ext/flac/gstflacenc.c:
	  flacenc: Fix g_object_notify on loose-mid-side-stereo property
	  Fix an assertion warning on g_object_notify (in DO_UPDATE macro)
	  because there is no Gobject property named `loose_mid_side` (property
	  is loose_mid_side_stereo).
	  Assertion was :
	  ```
	  g_object_notify: object class 'GstFlacEnc' has no property named
	  'loose_mid_side'
	  ```
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11508>

2026-06-11 15:43:40 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt6/qt6glrenderer.cc:
	  qt6: remove an unneeded QOpenGLContext->makeCurrent()
	  This is no longer needed with Qt6.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11788>

2026-06-05 12:33:30 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstsbcparse.c:
	  sbcparse: Add bounds checking to header parsing
	  Also the minimum valid frame size is 7 and not 6 (assertion) or 8 (header
	  parsing).
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5087
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11799>

2026-06-05 11:24:33 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	  wavpackdec: Unmap input buffer directly after decoding
	  In case of decoder errors we would otherwise unmap the buffer after
	  finish_frame(), which potentially invalidates the input buffer already.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11797>

2026-06-05 11:24:29 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	  wavpackdec: Avoid integer overflow when checking input buffer size
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11797>

2026-06-05 11:24:25 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	  wavpackdec: Use correctly-sized variable types
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11797>

2026-06-05 11:24:21 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	  wavpackdec: Avoid integer overflow when calculating output buffer size
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5069
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11797>

2023-09-21 12:00:20 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* gst/audioparsers/gstaacparse.c:
	* gst/audioparsers/gstaacparse.h:
	  aacparse: Overhaul PCE handling
	  - Parse the correct channel count out of the PCE.
	  - Support parsing a PCE out of incoming ADTS, with the same limitation
	  as FFmpeg (must be first element in data block).
	  - Support putting a PCE into outgoing ADTS when we need to add headers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11742>

2026-06-01 10:58:19 +0200  Thomas Devoogdt <thomas.devoogdt@barco.com>

	* docs/gst_plugins_cache.json:
	* gst/rtsp/gstrtspsrc.c:
	* gst/rtsp/gstrtspsrc.h:
	  rtspsrc: add tls-client-certificate and tls-client-key properties
	  Add file-path string properties for mTLS client authentication. When
	  both properties are set, rtspsrc loads the certificate and private key
	  at connection time and presents them during the TLS handshake via an
	  internal GTlsInteraction subclass.
	  This enables mutual TLS authentication from gst-launch-1.0 without
	  requiring application code to create a GTlsInteraction object:
	  gst-launch-1.0 rtspsrc location=rtsps://host/path \
	  tls-client-certificate=/path/to/cert.pem \
	  tls-client-key=/path/to/key.pem \
	  tls-validation-flags=0 ! fakesink
	  If the existing tls-interaction property is also set, it takes
	  precedence over the file-based properties.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11735>

2026-05-29 11:53:08 +0900  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: Fix buffer leak on qbuf failure
	  When gst_v4l2_buffer_pool_qbuf() fails in the output buffer processing
	  path of gst_v4l2_buffer_pool_process(), the to_queue buffer is not
	  unreferenced before jumping to the queue_failed error label. This buffer
	  was either obtained via gst_buffer_ref() on the input buffer or acquired
	  from the buffer pool, both of which take a reference that must be
	  released on failure.
	  Add the missing gst_buffer_unref() call to prevent leaking a buffer
	  reference each time qbuf fails.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11712>

2026-05-31 14:46:21 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackenc.c:
	  wavpackenc: Handle >8 channels correctly when reordering
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11729>

2026-05-31 13:42:32 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	  wavpackparse: Fix parsing of number of channels in new-style channel info chunks
	  The number of channels is spread out over three bytes, not two.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11729>

2026-05-31 13:41:36 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	  wavpackparse: Only default channel mask if no channels are given
	  A zero channel mask is completely valid for unpositioned channels.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11729>

2026-05-31 12:30:58 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	  wavpackparse: Map unsupported channel layouts to unpositioned channels
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11729>

2026-05-31 12:13:47 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	* ext/wavpack/gstwavpackdec.h:
	  wavpackdec: Handle unsupported channel layouts by mapping to unpositioned channels
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11729>

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

	* ext/wavpack/gstwavpackenc.c:
	  wavpackenc: Handle unpositioned and unsupported channel layouts
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5129
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11729>

2026-05-31 12:00:39 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackcommon.c:
	  wavpack: Map unknown/invalid channel positions to an unpositioned layout
	  Instead of randomly failing or producing incomplete channel masks.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11729>

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

	* ext/wavpack/gstwavpackcommon.c:
	* ext/wavpack/gstwavpackcommon.h:
	  wavpack: Remove unused function
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11729>

2026-05-31 11:45:48 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackcommon.c:
	* ext/wavpack/gstwavpackcommon.h:
	* ext/wavpack/gstwavpackdec.c:
	* ext/wavpack/gstwavpackdec.h:
	* ext/wavpack/gstwavpackenc.c:
	* ext/wavpack/gstwavpackenc.h:
	  wavpack: Use more correct types and add some const qualifiers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11729>

2021-05-18 00:45:28 +0200  nitroxis <n@nxs.re>

	* docs/gst_plugins_cache.json:
	* gst/matroska/matroska-mux.c:
	  matroskamux: Add support for HDMV PGS subpicture tracks
	  This adds support for muxing Dolby TrueHD in matroskamux. The demuxer
	  already supported TrueHD, but the muxer did not. TrueHD audio tracks
	  don't appear to require any special handling and work out of the box
	  just like the other Dolby codecs. My testing showed no problems decoding
	  files produced with this patch.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8688>

2026-05-07 17:51:57 +0900  Shigeharu Kamiya <s_kamiya@toa.co.jp>

	* gst/rtsp/gstrtspsrc.c:
	* gst/rtsp/gstrtspsrc.h:
	  rtspsrc: add independent keepalive worker for non-live TCP-interleaved
	  In non-live TCP-interleaved mode the streaming loop blocks on data
	  push when downstream is paused, so the existing receive-timeout-based
	  keepalive cannot fire and the server drops the session.
	  Solve this by adding an independent keepalive worker for non-live
	  TCP-interleaved mode.
	  Worker sends share conninfo.send_lock with the streaming loop, and
	  the CSeq is tracked so synchronous receivers can skip the matching
	  response.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11544>

2026-05-29 22:02:20 +0200  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	  splitmuxsink: Fix some failure-to-shutdown race conditions
	  Always check that the element state has not been changed before
	  updating the next output_state setting. Fixes spurious
	  problems where splitmuxsink might fail to shut down when asked,
	  particularly showing up as CI timeouts in
	  the test_splitmuxsink_missing_timestamp unit test.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11723>

2026-05-29 17:37:07 +0200  Jan Schmidt <jan@centricular.com>

	* tests/check/elements/mpegaudioparse.c:
	  tests/mpegaudioparse: Fix raciness in the state change handling
	  This test_parse_gapless_and_skip_padding_samples test sometimes
	  got stuck changing state synchronously if appsink prerolled too
	  quickly. Fix it to use asynchronous state changes and waiting
	  in all the required places.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11721>

2026-05-29 11:00:33 +0800  Hou Qi <qi.hou@nxp.com>

	* gst/matroska/matroska-mux.c:
	* gst/matroska/matroska-mux.h:
	  matroska-mux: Write ReferenceBlock for non-keyframe video in BlockGroups
	  When writing video frames using BlockGroups, the muxer did not include
	  a ReferenceBlock element for non-keyframe frames. According to the
	  Matroska specification, the absence of ReferenceBlock in a BlockGroup
	  signals that the block is a keyframe. Without it, demuxers have no way
	  to distinguish keyframes from delta frames when parsing BlockGroups.
	  This caused interoperability issues with demuxers that rely on
	  ReferenceBlock presence to identify non-keyframe video frames as delta
	  units, which is the standard behavior per the Matroska spec.
	  Add a ReferenceBlock element to BlockGroups for non-keyframe video
	  blocks so that demuxers can correctly flag them as delta units.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11705>

2021-05-18 00:43:40 +0200  nitroxis <n@nxs.re>

	* docs/gst_plugins_cache.json:
	* gst/matroska/matroska-mux.c:
	  matroskamux: Add support for TrueHD audio tracks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8689>

2026-05-29 13:26:37 +0300  Rares Branici <rares.branici@senstar.com>

	* gst/rtp/gstrtph265depay.c:
	  rtph265depay: fix mem leak
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11714>

2026-05-28 22:57:43 +0200  László Károlyi <laszlo@karolyi.hu>

	* gst/wavparse/gstwavparse.c:
	* tests/check/elements/wavparse.c:
	  wavparse: handle uppercase 'ID3 ' chunk fourcc for ReplayGain tags
	  Tools like loudgain write ID3 tags into WAV files using the uppercase
	  'ID3 ' fourcc (0x49443320) while GStreamer only recognized the lowercase
	  'id3 ' variant (0x69643320), silently dropping all embedded tags.
	  Add GST_RIFF_TAG_ID3 to riff-ids.h and fall through to the existing
	  id3 handler in gstwavparse so both variants are parsed identically.
	  Add two new tests verifying that ReplayGain track gain is correctly
	  read from WAV files containing either the lowercase or uppercase ID3
	  chunk fourcc.
	  Assisted-By: Claude:claude-4.6-sonnet claude-code
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11711>

2026-05-19 18:09:25 +0200  dec05eba <dec05eba@protonmail.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: parse mastering luminance as u32 instead of u16
	  According to the specification in ISO/IEC 14496-12 2020 12.1.7.1
	  these fields should be u32, not u16.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11657>

2026-05-19 10:29:37 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxaudio/gstosxcoreaudio.c:
	  osxaudio: Fix stack overflow with >64ch audio devices
	  The fallback path for invalid channel positions didn't account for the
	  64 channel limit we have in osxaudio including the positions array, and
	  would overflow it if more channels were present.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11656>

2026-05-03 23:29:45 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/dv/gstdvdemux.c:
	* gst/avi/gstavidemux.c:
	* gst/debugutils/rndbuffersize.c:
	* gst/flv/gstflvdemux.c:
	* gst/imagefreeze/gstimagefreeze.c:
	* gst/isomp4/qtdemux.c:
	* gst/matroska/matroska-demux.c:
	* gst/multifile/gstsplitmuxsrc.c:
	* gst/rtpmanager/gstrtpjitterbuffer.c:
	* gst/rtpmanager/gstrtprtxsend.c:
	* gst/wavparse/gstwavparse.c:
	* sys/v4l2/gstv4l2videodec.c:
	  gst: Pass a strong reference to the user_data to gst_pad_start_task()
	  Otherwise the object could get disposed while the task function is still
	  running, leading to crashes and worse.
	  While this technically creates a reference cycle in most cases, this is not
	  actually a problem because the task has to be stopped before the element and pad
	  can get disposed and anything else leads to exactly the problem this is solving.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11489>

2026-03-09 16:34:54 -0400  Daniel Morin <daniel.morin@collabora.com>

	* gst/isomp4/fourcc.h:
	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: add support for losslessly-compressed video
	  Parse resv sample entries containing a rinf/cmpC box to determine the gcmp
	  compression type (zlib, deflate, brotli) and underlying video format from the
	  embedded uncC/cmpd/cpat boxes. Output media-type
	  (application/x-{zlib|brotli|deflate}-compressed) caps with original-cap field
	  that carry raw video format.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10998>

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

	* gst/isomp4/qtdemux.c:
	  qtdemux: Check for minimum stride requirements and width/height constraints with uncompressed video
	  And return an explicit error on mismatches.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5043
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11584>

2026-05-01 11:39:49 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpjitterbuffer.c:
	  gst: systemclock: Add gst_system_clock_new() to create a new instance of the system clock
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11474>

2026-05-08 22:58:24 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Abort wait for variant playlist on shutdown
	  If the element is stopped while waiting for the variant playlist,
	  exit the loop.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11550>

2026-05-08 22:24:52 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Fix mismatched clock-time vs clock-stime check
	  Adaptive demux stream start_position is an unsigned clock-time value,
	  it should not be compared against GST_CLOCK_STIME_NONE
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11550>

2026-05-08 22:09:46 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	  hlsdemux2: Error out cleanly on resync failure
	  Instead of asserting when the variant stream doesn't have a current
	  position to resynchronise to after a discontinuity, throw an element
	  error instead.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11550>

2026-05-06 19:50:35 +0100  Arthur Chan <arthur.chan@adalogics.com>

	* gst/isomp4/qtdemux.c:
	  isomp4: Fix memory leak when file is corrupted
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11515>

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/11266>

2026-05-06 19:49:33 +0100  Arthur Chan <arthur.chan@adalogics.com>

	* gst/matroska/ebml-read.c:
	  matroska: Fix wrong object type bug
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11514>

2023-07-20 08:48:45 -0600  Emmanuel Madrigal <emmanuel.madrigal@ridgerun.com>

	* docs/gst_plugins_cache.json:
	* gst/flv/flvdefs.h:
	* gst/flv/gsteflvmux.c:
	* gst/flv/gstflvdemux.c:
	* gst/flv/gstflvmux.c:
	* gst/flv/gstflvmux.h:
	* tests/check/elements/flvmux.c:
	* tests/files/flv_test/.gitattributes:
	* tests/files/flv_test/av1/0.obu:
	* tests/files/flv_test/av1/1.obu:
	* tests/files/flv_test/av1/10.obu:
	* tests/files/flv_test/av1/11.obu:
	* tests/files/flv_test/av1/12.obu:
	* tests/files/flv_test/av1/13.obu:
	* tests/files/flv_test/av1/14.obu:
	* tests/files/flv_test/av1/2.obu:
	* tests/files/flv_test/av1/3.obu:
	* tests/files/flv_test/av1/4.obu:
	* tests/files/flv_test/av1/5.obu:
	* tests/files/flv_test/av1/6.obu:
	* tests/files/flv_test/av1/7.obu:
	* tests/files/flv_test/av1/8.obu:
	* tests/files/flv_test/av1/9.obu:
	  flv: Enhanced av1 support
	  Based on the [enhanced-rtmp](https://github.com/veovera/enhanced-rtmp) spec. See #2413
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5087>

2026-04-28 19:11:15 +0200  François Laignel <francois@centricular.com>

	* gst/udp/gstudpsrc.c:
	  udpsrc: don't query downstream for Allocation / pool parameters
	  udpsrc pool & allocator parameters depend on the mtu defined locally, which
	  means we can save a serialized query / reply sequence and the related stream
	  lock.
	  This commit overrides the basesrc->prepare_allocator virtual method (and
	  replaces gst_udpsrc_decide_allocation) to set the basesrc pool parameters
	  without relying on the Allocation query.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11425>

2026-04-30 12:57:35 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Remove assertion about upstream file size
	  Upstream can report bogus values and we shouldn't assert on that but just ignore
	  it in that case.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5077
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11465>

2026-03-26 01:11:24 +0530  Taruntej Kanakamalla <tarun@centricular.com>

	* tests/check/meson.build:
	  gdkpixbufoverlay: disable gdkpixbufoverlay test
	  Temporarily disable this test so CI passes in newer Fedora until
	  https://bugzilla.redhat.com/show_bug.cgi?id=2412232 is fixed.
	  gdk-pixbuf now depends glycin and bwrap to load images and
	  bwrap is disallowed to mount /dev/pts within the container
	  so this unit test is failing in the CI constainer.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11034>

2024-10-25 16:50:35 +0300  Jordan Petridis <jordan@centricular.com>

	* docs/gst_plugins_cache.json:
	  ci: Update to f41
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11034>

2026-04-19 11:15:09 +0200  Fabien Danieau <fabien.danieau@pollen-robotics.com>

	* sys/v4l2/gstv4l2codec.h:
	* sys/v4l2/gstv4l2h264codec.c:
	* sys/v4l2/gstv4l2videoenc.c:
	* sys/v4l2/gstv4l2videoenc.h:
	* sys/v4l2/meson.build:
	  v4l2videoenc: Add automatic H.264 level calculation via codec ops
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11154>

2023-08-22 10:35:00 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* docs/gst_plugins_cache.json:
	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	  qtdemux: add 'max-atom-size' property
	  The hardcoded limit was arbitrary and not enough to play some videos
	  from our users with big 'skip' atoms.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5215>

2026-04-29 20:30:27 +0800  Qian Hu (胡骞) <qian.hu@mediatek.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: Fix empty name warning in dqbuf for M2M devices
	  During dqbuf, gst_structure_has_name() frequently prints warnings about
	  an empty name for V4L2 M2M devices. This happens because obj->driver_ts_type
	  is NULL for M2M shared objects.
	  For M2M devices, the v4l2 buffer timestamp is merely a sequence number
	  copied from the output queue. It is not a real hardware timestamp and
	  should not be used to create a GstReferenceTimestampMeta.
	  Fix this by:
	  1. Skipping the reference timestamp meta addition for M2M devices in alloc_buffer.
	  2. Adding a NULL check for meta_ts_type in dqbuf before calling gst_structure_has_name().
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11457>

2026-04-21 10:43:37 +0200  Ognyan Tonchev <ognyan@axis.com>

	* gst/rtsp/gstrtspsrc.c:
	  gstrtspsrc: mki is optional upon crypto update
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5050
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11393>

2026-04-20 15:36:34 +0900  Jeongmin Kwak <jeongmin.kwak@lge.com>

	* gst/isomp4/qtdemux.c:
	  isomp4: qtdemux: Add bounds checks for ESDS descriptors
	  Validate minimum sizes before accessing descriptor fields to prevent
	  out-of-bounds reads on truncated or malformed MP4 files.
	  - ES_DESCRIPTOR_TAG: require 3 bytes
	  - DECODER_CONFIG_DESC_TAG: require 13 bytes
	  - SL_CONFIG_DESC_TAG: require 1 byte
	  Skip short descriptors instead of reading invalid memory.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11377>

2025-11-26 15:19:48 +0000  Ilya Batalev <ilja.batalev@gmail.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2src: add v4l2_buffer timestamp to buffer
	  Added original timestamp to v4l2_buffer buffer as GstReferenceTimestampMeta to
	  not break current API and add ability to get exact original v4l2_buffer
	  timestamps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10211>

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

	* sys/osxaudio/gstosxcoreaudiocommon.h:
	  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/11225>

2025-10-15 11:16:46 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* sys/v4l2/gstv4l2transform.c:
	  v4l2transform: release input buffers earlier
	  The transform operation is synchronous. So the input buffer is no longer needed
	  once the output buffer is ready. Release it immediately so it can be reused by
	  the upstream pipeline.
	  This can reduce the number of buffers needed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9850>

2025-10-15 14:23:03 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2bufferpool.h:
	  v4l2: pool: add helper to release buffers
	  Factor out the code to dequeue and release buffers that are ready.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9850>

2026-04-14 15:43:58 +0200  Tobias Koenig <tobias.koenig@kdab.com>

	* ext/qt6/qt6glitem.cc:
	  qml6glsink: Fix redraw issues on buffer change
	  Mark the texture as dirty if the new buffer is different from
	  the previous one to make sure the item is rerendered.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11335>

2026-04-14 09:04:15 +0200  Michiel Westerbeek <happylinks@gmail.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: recover from invalid av_bps for PCM
	  Some PCM WAV files in the wild have an av_bps field (nAvgBytesPerSec)
	  that doesn't match blockalign * rate — only the metadata is wrong,
	  the PCM data is valid. Previously wavparse rejected these with a
	  fatal stream error.
	  For PCM, av_bps is fully determined by blockalign * rate, so
	  recompute to the authoritative value and warn. wav->bps is used at
	  :367 and :734 to translate timestamps to byte offsets for seeking,
	  so simply accepting the bogus value would silently produce wrong
	  seeks.
	  Non-PCM formats keep the strict rejection: for compressed formats
	  (ADPCM, GSM, etc.) the actual av_bps is much less than
	  blockalign * rate, so recomputing wouldn't give a correct value.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11328>

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

	* gst/avi/gstavidemux.c:
	  avidemux: Fix divide by zero if VPRP contains fields==0
	  Thanks to RTV for reporting.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5027
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11302>

2023-09-21 18:42:03 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* ext/mpg123/gstmpg123audiodec.c:
	  mpg123audiodec: Pass through channel mask
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11116>

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

	* gst/audioparsers/gstmpegaudioparse.c:
	  mpegaudioparse: Add channel mask to output caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11116>

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

	* gst/audioparsers/gstmpegaudioparse.c:
	* gst/audioparsers/gstmpegaudioparse.h:
	  mpegaudioparse: Simplify private fields a bit
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11116>

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

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Fix caps filtering in caps negotiation
	  The dmabuf caps feature was not properly added to the probed caps. This would
	  lead to caps negotiation failure when trying to force DMABuf using a caps filter
	  after the stateful v4l2h*dec elements.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11222>

2026-04-09 09:59:52 +0900  Shigeharu Kamiya <s_kamiya@toa.co.jp>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: include user-agent property in HTTP tunnel requests
	  The user-agent property is correctly sent in regular RTSP
	  requests via gst_rtspsrc_init_request(), but was missing from
	  HTTP tunnel GET and POST requests. Add it to the connection's
	  extra HTTP headers when tunneled mode is configured.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11282>

2026-04-08 19:09:52 +1000  Jan Schmidt <jan@centricular.com>

	* gst/matroska/matroska-demux.c:
	  matroskademux: Don't ignore encoded seek table
	  Fix a regression introduced in
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10642
	  that trigger an infinite loop when attempting to step backward at the
	  very beginning of a file by incorrectly ignoring the seek table
	  written into the stream.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11279>

2026-03-27 14:45:30 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/aalib/gstaaplugin.c:
	* ext/aalib/gstaasink.c:
	* ext/aalib/gstaasink.h:
	* ext/aalib/gstaatv.c:
	* ext/aalib/gstaatv.h:
	* ext/aalib/meson.build:
	* ext/meson.build:
	* meson.options:
	* tests/check/meson.build:
	  aasink: remove aalib-based ASCII rendering plugin
	  Superseded by Rust viuer plugin.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11172>

2026-03-27 14:45:30 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/libcaca/gstcacaplugin.c:
	* ext/libcaca/gstcacasink.c:
	* ext/libcaca/gstcacasink.h:
	* ext/libcaca/gstcacatv.c:
	* ext/libcaca/gstcacatv.h:
	* ext/libcaca/meson.build:
	* ext/meson.build:
	* meson.options:
	* tests/check/meson.build:
	  caca: remove libcaca-based ASCII rendering plugin
	  Superseded by Rust viuer plugin.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11172>

2026-04-01 13:39:27 +0300  Cameron O'Neal <tzusec@gmail.com>

	* gst/matroska/matroska-read-common.c:
	  matroskademux: Add missing parenthesis when calculating bz2 buffer sizes
	  This fixes a heap buffer overflow.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5009
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11248>

2026-04-01 13:44:52 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Use prepend+reverse instead of append when building the cues list
	  append has quadratic behaviour and this can matter if there are a lot of cues.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11247>

2026-04-01 13:42:51 +0300  Cameron O'Neal <tzusec@gmail.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Fix integer overflow when checking available buffer size for reading cues
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5009
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11247>

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

	* gst/flv/gstflvdemux.c:
	  flvdemux: Avoid assertions on corrupted streams
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4975
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11244>

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

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix bit pattern check for omitted audio channels map
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11243>

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

	* gst/isomp4/qtdemux.c:
	  qtdemux: Avoid out-of-bounds reads and writes of 64 item audio channel positions array
	  When parsing both the chan and chnl boxes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11243>

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

	* gst/isomp4/qtdemux.c:
	  qtdemux: Validate chnl defined layout before using it to index the layouts array
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4976
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11243>

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

	* gst/isomp4/qtdemux.c:
	  qtdemux: Avoid division by zero if 0 audio channels are signalled
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4977
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11243>

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

	* gst/isomp4/qtdemux.c:
	  qtdemux: Add various integer overflow and bounds checks to uncompressed video handling
	  Fixes ZDI-CAN-29392
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4963
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11242>

2024-04-30 13:34:01 +0300  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/multifile/gstsplitmuxsink.c:
	* tests/check/elements/splitmuxsink.c:
	  splitmuxsink: Require buffers to have a valid PTS
	  If we receive a buffer without a valid PTS or DTS, running_time_dts will
	  be NONE, but splitmux->max_in_running_time_dts might be valid from
	  before. As a result, the running_time_dts < next_gop->start_time_pts
	  check in handle_mq_input will not fire (because it also checks that
	  running_time_dts != GST_CLOCK_STIME_NONE), the main context will go into
	  check_completed_gop, making it return on
	  splitmux->max_in_running_time_dts < next_gop->start_time_pts , and the
	  next iteration will hit the g_assert (!ctx->is_reference);
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6776>

2026-04-03 16:15:26 +0200  Frédéric Chanal <frederic.chanal@ubicast.eu>

	* gst/flv/gstflvmux.c:
	  flvmux: fix race condition on caps get and check
	  Apart from fixing a race condition this commit also removes useless code that
	  remained after !10071 which removed the use of caps for audio and video sink
	  pads.
	  The race condition appears with this sequence:
	  [thread 1] the thread in which the mux video sink element runs
	  [thread 2] the thread running the aggregator task (gst_aggregator_loop)
	  * [thread 1] GST_EVENT_CAPS is send on muxer's video pad
	  * [thread 1] eventually `gst_aggregator_default_sink_event_pre_queue()` is called
	  and the event is pushed onto internal queue for later processing
	  * [thread 1] then `SRC_BROADCAST()` is called
	  => race appears here if [thread 2] is scheduled
	  * [thread 2] `SRC_WAIT()` from `gst_aggregator_wait_and_check()` is released and
	  this function is revaluate, and return TRUE with timeout being 1 (as both audio
	  and video codec are valid, and we are ready to mux)
	  * [thread 2] The `gst_flv_mux_aggregate()` is eveantually called ->
	  `gst_flv_mux_prepare_src_caps()` -> `gst_flv_mux_create_metadata()`
	  * [thread 2] in `gst_flv_mux_create_metadata(),` the caps for the first video
	  pad (`default_video_track_pad`) are retrieved but at this point the caps are
	  NULL as the `GST_EVENT_CAPS` has not yet been stored in the sticky datastore
	  of the pad
	  * [thread 2] g_assert(caps) triggers
	  Thus, this leftover code was not merely useless—it directly caused a race
	  condition.
	  Reproduction scenario: run the following pipeline on 1.28.1
	  ```
	  taskset -c 0 gst-launch-1.0 -e videotestsrc ! "video/x-raw, format=(string)I420, \
	  width=(int)1920, height=(int)1080, framerate=(fraction)30/1" ! openh264enc ! \
	  h264parse ! flvmux streamable=true name=mux ! fakesink \
	  audiotestsrc is-live=true wave=ticks ! mux. \
	  --gst-debug=3,flvmux:6,aggregator:6
	  ```
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11220>

2026-04-02 16:22:58 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Fix const-correctness issue around strchr() usage
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11214>

2026-03-27 14:41:03 +1100  Jan Schmidt <jan@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Discard early data in ONVIF mode
	  We need the PLAY response from the server in order to generate the
	  segment for incoming data. Any packets that arrive before the server
	  play response can't be handled until we know that - they either need
	  to be discarded or held back somewhere and processed later.
	  Discarding is the easier thing, so I did that first
	  Fixes #4874
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11161>

2025-01-08 20:15:03 +1100  Jan Schmidt <jan@centricular.com>

	* ext/qt/qtitem.cc:
	  qt5: Avoid parsing caps on every buffer
	  Optimisation: Don't update the caps on the texture every
	  frame - only do it when they change. This avoids
	  calling gst_video_info_from_caps() for every frame
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8256>

2025-01-08 20:15:03 +1100  Jan Schmidt <jan@centricular.com>

	* ext/qt6/qt6glitem.cc:
	  qt6: Avoid parsing caps on every buffer
	  Optimisation: Don't update the caps on the texture every
	  frame - only do it when they change. This avoids calling
	  gst_video_info_from_caps() every frame.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8256>

2026-03-26 07:10:43 +1100  Jan Schmidt <jan@centricular.com>

	* ext/qt/qtitem.cc:
	  qmlglsink: Fix for caps tracking on multiple setCaps calls
	  Apply the same fix to qt5 as was put into qt6 in !10959,
	  to avoid a sequence where the caps don't update correctly
	  when incoming caps get toggled between caps-A, caps-B and back
	  to caps-A without a buffer in between.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8256>

2026-03-27 16:23:09 +0100  Per Enstedt <per.enstedt@svt.se>

	* gst/audiofx/audioinvert.c:
	  audioinvert: fix float truncation in transform_float
	  The val variable was declared as glong, causing float samples to be
	  truncated to integers before being written back to the output buffer.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11170>

2026-03-26 17:40:33 +0100  Fabien Danieau <fabien.danieau@pollen-robotics.com>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: Fix code style for CI gst-indent
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11125>

2026-03-26 17:32:10 +0100  Fabien Danieau <fabien.danieau@pollen-robotics.com>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: Fix code formatting to comply with gst-indent
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11125>

2026-03-26 09:33:50 +0100  Fabien Danieau <fabien.danieau@pollen-robotics.com>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: Fix code style for CI gst-indent
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11125>

2026-03-21 15:34:21 +0100  Fabien Danieau <fabien.danieau@pollen-robotics.com>

	* sys/v4l2/gstv4l2videoenc.c:
	* sys/v4l2/gstv4l2videoenc.h:
	  v4l2videoenc: Add bitrate and gop-size GObject properties with runtime mutability
	  Add proper GObject properties for rate control that wrap the V4L2
	  controls V4L2_CID_MPEG_VIDEO_BITRATE and V4L2_CID_MPEG_VIDEO_GOP_SIZE:
	  - bitrate: Video bitrate in bits per second (0 = driver default)
	  Flag: GST_PARAM_MUTABLE_PLAYING (changeable at runtime)
	  - gop-size: Group of pictures size in frames (0 = driver default)
	  Flag: GST_PARAM_MUTABLE_PLAYING (changeable at runtime)
	  Also add missing GST_OBJECT_LOCK/UNLOCK around property handlers
	  to ensure thread-safe access.
	  Properties are applied immediately if the device is already open,
	  or cached and applied when the device is opened later.
	  This allows applications to set these values via standard GObject
	  properties rather than using the extra-controls GstStructure.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11125>

2026-03-24 15:17:16 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Error out instead of trying to handle a truncated stts box
	  Any of the handful of sample boxes could potentially be truncated and handling
	  one of them in a special way but none of the others doesn't really improve the
	  situation but complicates the special cases the sample table code needs to
	  be able to handle.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11102>

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

	* gst/isomp4/qtdemux.c:
	  qtdemux: Check that big enough stco/stsz are available when parsing sample tables
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11102>

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

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	  qtdemux: Don't store 64 bit integers in 32 bit integers to avoid overflows
	  All these numbers should never become even close to 2**32 but by storing them in
	  too small integers we end up with overflows that end up at least in assertions.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4985
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11102>

2026-03-23 13:59:17 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Avoid integer overflows when handling transform matrices
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4985
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11102>

2026-03-23 21:55:21 -0400  Olivier Crête <olivier.crete@collabora.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Preserve Metas and Flags when doing row alignment
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11122>

2026-01-13 23:03:01 +0100  David Maseda Neira <david.maseda@cinfo.es>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Prefer video streams for seeking
	  Prefer video streams over audio or subtitle tracks, to avoid long segments
	  making the seek granularity very low. This commit tackles the bug on
	  adaptivedemux2.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9884>

2025-10-22 10:18:52 +0200  David Maseda Neira <david.maseda@cinfo.es>

	* ext/adaptivedemux2/hls/m3u8.c:
	  adaptivedemux2: Ensure we are preserving target time on non-snapping seeks
	  For no-snapping seeks, instead of returning the start of the segment,
	  preserve the target position.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9884>

2026-03-22 17:15:18 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	  modules: remove zombie RELEASE and NEWS files
	  They seem to have come back from the dead by mistake.

2026-03-22 15:00:47 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.29.1

=== release 1.29.1 ===

2026-03-22 14:56:37 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.29.1

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/11094>

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/11094>

2026-03-22 14:20:18 +0000  Tim-Philipp Müller <tim@centricular.com>

	* RELEASE:
	  modules: remove RELEASE from git, will be generated from template on dist

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/11094>

2020-09-13 03:04:53 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* gst/flv/gstflvmux.c:
	  flvmux: Timestamp outgoing buffers from mux, not incoming buffer
	  This ensures that the outgoing buffer has the right timestamp if we
	  pulled a backwards buffer forward.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1034>

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

	* po/LINGUAS:
	* po/kk.po:
	* po/zh_CN.po:
	  gst-plugins-good: update translations
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11074>

2026-03-11 10:00:38 +0900  Shigeharu Kamiya <s_kamiya@toa.co.jp>

	* docs/gst_plugins_cache.json:
	* gst/rtsp/gstrtspsrc.c:
	* gst/rtsp/gstrtspsrc.h:
	  rtspsrc: add backchannel-http-method property for HTTP tunnel mode
	  Some ONVIF cameras reject backchannel RTP data sent base64-encoded via
	  the HTTP POST connection, expecting it as raw binary on the GET
	  connection instead. Add a backchannel-http-method property to select
	  which connection carries backchannel data (post or get), with automatic
	  fallback to the other method when the server closes the connection.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10999>

2026-03-16 16:37:34 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* docs/gst_plugins_cache.json:
	* gst/flv/gstflvdemux.c:
	* gst/flv/gstflvdemux.h:
	  flvdemux: Make no-more-pads threshold configurable
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11042>

2026-02-23 11:41:29 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* tests/check/meson.build:
	* tests/check/pipelines/isomp4-vpcc.c:
	* tests/check/pipelines/vp9-codecprivate.c:
	  tests: add vp9 CodecPrivate and vpcC pipeline coverage
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10875>

2026-02-23 11:35:39 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst/matroska/matroska-demux.c:
	  matroskademux: Now parsing vp9 CodecPrivate when present
	  - Using new VPX helpers from codec-utils to populate caps.
	  - Allows initial vp9 decoder configuration without depending on parsing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10875>

2026-02-23 11:38:01 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst/matroska/matroska-ids.c:
	* gst/matroska/matroska-ids.h:
	* gst/matroska/matroska-mux.c:
	  matroskamux: adding vp9 CodecPrivate data to file when possible
	  - matroska-ids.[ch]: New ids and utilities to help matroskamux and
	  matroskademux deal with vp9 CodecPrivate parse/validation.
	  - matroska-mux.c: Now adding vp9 CodecPrivate when caps have appropriate
	  fields.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10875>

2026-02-23 11:34:51 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst/isomp4/qtdemux.c:
	  isomp4: switch qtdemux to VPX caps format helper
	  The original logic to convert vpcC values to caps fields was moved
	  to codec-utils so it can be shared with matroskademux when it
	  parses vp9 CodecPrivate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10875>

2026-01-22 19:21:08 +0100  Alicia Boya García <aboya@igalia.com>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	  qtdemux: fix handling of in-between fragments without tfdt
	  Some tools, particularly MP4Box, will generate a tfdt box only for the
	  first fragment of each segment, not for each fragment.
	  qtdemux used to be able to handle files like this, but for push-mode
	  this was accidentally broken in 794dcfbfee7cbe04a3cdbbdf7d7b7da978a7b42c.
	  That commit made it so that the sample table is cleared between
	  fragments, avoiding what otherwise would be functionally a memory leak
	  when playing long or live streams in constrained devices.
	  The existing code in qtdemux relied on the sample table to obtain the
	  DTS for the next fragment. Not persisting the sample table in push-mode
	  is still desirable so at a high level the fix is simple: keep track of
	  the running DTS separate from the sample table. This patch does that.
	  Unfortunately, the code for deciding the start DTS of a trun has gotten
	  increasingly complex and hard to analyze over the years. Instead of
	  adding another special case to it I have tried to clean it up. The new
	  code represents my understanding of what the intentions of the current
	  special cases and workarounds are, flattened and sorted by priority.
	  I have added a .mp4 and a DASH .mpd file created with MP4Box that
	  reproduces the issue fixed by this patch.
	  I do not recommend intentionally deploying on the wild files where only
	  some fragments have tfdt. Derived specifications (e.g. the MSE
	  bytestream) forbid it, it makes seeks slower and harder, and all you get
	  are meager savings of 8 bytes per fragment. This probably also explains
	  how the bug has gone unnoticed for so many years: I only created such a
	  file accidentally while trying to make a test vector for a different bug.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10590>

2026-02-05 14:16:08 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst/isomp4/gstqtmux-doc.c:
	  qtmux: Add AV1 compatibility note in documentation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10704>

2026-01-30 16:59:14 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* tests/check/meson.build:
	* tests/check/pipelines/av1c-qtmux-qtdemux.c:
	* tests/files/README.av1c.md:
	* tests/files/av1c_min.mp4:
	* tests/files/av1c_two_entries.mp4:
	* tests/files/av1c_with_obu.mp4:
	  tests: qtmux, qtdemux: Add AV1 av1C round-trip tests
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10704>

2026-02-03 17:16:25 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst/isomp4/gstqtmux.c:
	* gst/isomp4/gstqtmux.h:
	  qtmux: allow AV1 caps renegotiation and warn on unparsed input
	  Treat AV1 like H.264/H.265/H.266 during caps reconfiguration by allowing
	  format-level field changes (for example profile/level/tier-related updates)
	  without failing renegotiation.
	  Also warn once per pad when AV1 caps are not marked parsed=true. In that
	  case qtmux may have insufficient information to build a reliable av1C from
	  caps alone, so users should insert av1parse upstream.
	  This warning is intentionally advisory: qtmux cannot use GstAV1Parser directly
	  to derive missing configuration because that parser lives in -bad while qtmux
	  is in -good.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10704>

2026-03-17 09:29:30 +0100  Tobias Rapp <t.rapp@noa-archive.com>

	* gst/wavenc/gstwavenc.c:
	  wavenc: Skip writing empty LIST INFO chunk
	  When wavenc receives metadata from upstream elements but there are no
	  corresponding INFO tags defined the element did append an empty LIST
	  INFO chunk.
	  Add a follow-up check to verify whether tags have actually been written
	  to the chunk buffer.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11049>

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

	* gst/isomp4/qtdemux.c:
	* tests/check/elements/qtdemux.c:
	  qtdemux: Don't immediately push segment after moov in push mode for fmp4
	  In case of fragmented MP4 we would otherwise push a segment with potentially
	  wrong cslg shift and by that produce shifted running / stream times.
	  Simply not doing it after parsing the moov and waiting until the first buffer
	  should be output is sufficient to solve this and makes qtdemux behave the same
	  way in push and pull mode with regards to the segment and running / stream
	  times.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11014>

2026-03-16 17:32:09 +0000  Mattia <mattialeon.dm@protonmail.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  hlsdemux2: fix seekable range for live HLS streams
	  Fixes #4969
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11044>

2026-03-10 19:16:55 +0100  László Károlyi <laszlo@karolyi.hu>

	* gst/replaygain/gstrgvolume.c:
	* tests/check/elements/rgvolume.c:
	  rgvolume: don't apply dBSPL reference level compensation for LUFS values
	  Tools like loudgain write REPLAYGAIN_REFERENCE_LOUDNESS as a negative
	  LUFS value (e.g. -18.0), whereas traditional ReplayGain uses a positive
	  dBSPL value (e.g. 89.0). The compensation formula
	  gain += RG_REFERENCE_LEVEL - reference_level
	  would compute 89 - (-18) = +107 dB, pushing the gain out of VALID_GAIN's
	  ±60 dB range and causing it to be silently discarded, falling back to
	  0 dB and ignoring the stored gain entirely.
	  Fix this by skipping the dBSPL compensation when the stored reference
	  level is <= 0, as that unambiguously indicates LUFS format. When no
	  REPLAYGAIN_REFERENCE_LOUDNESS tag is present at all (e.g. as written by
	  rsgain), has_ref_level is FALSE and compensation is also skipped, which
	  is correct and unchanged behaviour.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2820
	  See also: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2821
	  Assisted-By: Claude:claude-4.6-sonnet claude-code
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10997>

2026-03-12 08:49:03 +0100  Tobias Rapp <t.rapp@noa-archive.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Fix parsing of RF64 wave files
	  Avoid clipping the chunk size for data chunks. Fix comparing the
	  unsigned size64 with a signed constant.
	  Also allows parsing of RIFF files with data between 2-4 GiB.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2853
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11008>

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

	* gst/wavparse/gstwavparse.c:
	  wavparse: Avoid overflow in length when setting ignore-length=true
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4957
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11004>

2026-03-12 20:50:28 +0100  Vivienne Watermeier <vwatermeier@igalia.com>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	  qtdemux: fix invalid WebVTT timestamps
	  gst_qtdemux_process_buffer_wvtt() is relying on buffer timestamps to
	  write cue times into WebVTT samples.
	  However, since we now handle timestamps in qt streamtime to avoid
	  rounding, no timestamps are set on buffers at that point in time, and so
	  we write nonsense times into the samples.
	  This is fixed by just passing streamtime timestamps into 'process_func'.
	  I've checked the other functions for similar oversights; none of them
	  use buffer timestamps.
	  This commit also adds a validate-flow test simply recording raw WebVTT
	  subtitles.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4954
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11017>

2026-03-11 08:35:46 +0100  Ognyan Tonchev <ognyan@axis.com>

	* docs/gst_plugins_cache.json:
	* gst/rtsp/gstrtspsrc.c:
	* gst/rtsp/gstrtspsrc.h:
	* tests/examples/rtsp/test-client-managed-mikey.c:
	  test-client-managed-mikey: Preserve ROC upon key update
	  when using client-managed MIKEY KeyMgmt.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10980>

2026-02-06 22:01:06 +0700  sergey radionov <rsatom@gmail.com>

	* ext/qt6/meson.build:
	  qt6: fixed build for Android
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10781>

2026-02-14 21:29:47 +0100  Robert Mader <robert.mader@collabora.com>

	* ext/jpeg/gstjpegdec.c:
	  jpegdec: Update and simplify decide_allocation
	  Following the av1dec example. Calling into the base class *after*
	  enabling the VIDEO_META and VIDEO_ALIGNMENT options makes the decoder
	  compatible with the new VideoDmabufPool.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10869>

2026-02-22 02:58:13 +0100  Robert Mader <robert.mader@collabora.com>

	* ext/vpx/gstvpxdec.c:
	  vpxdec: Simplify decide_allocation
	  The only relevant parts the implementation does over the base class
	  is enabling the VIDEO_META and VIDEO_ALIGNMENT options on the pool.
	  Simplify it accordingly, following the av1dec example.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10869>

2026-03-03 16:45:03 +0700  sergey radionov <rsatom@gmail.com>

	* ext/qt6/qt6glitem.cc:
	  Qt6GLVideoItem: caps update fixed
	  on multiple Qt6GLVideoItemInterface::setCaps calls
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4944
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10959>

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

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpopusdepay.c:
	* gst/rtp/gstrtpopuspay.c:
	  rtp: Lower Opus (de)payloader ranks to SECONDARY
	  To be in sync with all the others: none are > SECONDARY.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10940>

2026-03-02 09:59:10 +0000  James Liu <hmliu6@gmail.com>

	* gst/rtp/gstrtph264depay.c:
	  rtph264depay: fix invalid memory access in gst_rtp_h264_finish_fragmentation_unit
	  When buffer mapping fails or buffer size is smaller than sync_bytes size,
	  the process could crash due to invalid memory access.
	  Handle buffer mapping failure and validate buffer size before accessing
	  buffer data to prevent crashes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10951>

2026-02-27 17:13:27 +0000  James Liu <hmliu6@gmail.com>

	* gst/rtpmanager/rtptwcc.c:
	* tests/check/elements/rtpsession.c:
	  rtptwcc: fix feedback packet count wrapping at 255
	  The feedback packet count was incorrectly using modulo (%) with
	  G_MAXUINT8 (255), which caused it to skip the value 0xFF. According
	  to the TWCC spec (draft-holmer-rmcat-transport-wide-cc-extensions-01),
	  the feedback message sequence number must be between 0 and 255.
	  Changed to use bitwise AND (&) with G_MAXUINT8 to ensure the full
	  0-255 range is used correctly.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10920>

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

	* gst/wavparse/gstwavparse.c:
	  wavparse: Avoid integer overflow and out-of-bounds read when parsing adtl chunks
	  Fixes GST-SA-2026-0001, CVE-2026-1940.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4854
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10900>

2026-01-12 13:48:20 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Define maximum chunk size in a single place
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10900>

2026-01-12 13:41:31 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Use GST_ROUND_UP_2() in two more places instead of a manual implementation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10900>

2026-01-12 13:22:03 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Use unsigned integers for data sizes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10900>

2026-01-12 13:21:48 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Remove pointless duplicated GST_ROUND_UP_2()
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10900>

2026-02-08 16:09:04 +0000  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtp.c:
	* gst/rtp/gstrtpqdmdepay.c:
	* gst/rtp/gstrtpqdmdepay.h:
	* gst/rtp/meson.build:
	  rtpqdm2depay: remove element
	  There is no plausible reason anyone should need this element in 2026
	  seeing that this was a streaming format produced by Darwin Streaming Server
	  ca 2009 which hasn't been in active use for well over a decade.
	  It is a maintenance burden and a security liability and there's no
	  good reason to keep it around.
	  Fixes ZDI-CAN-28850, ZDI-CAN-28851, CVE-2026-3083, CVE-2026-3085, GST-SA-2026-0008.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10886>

2026-02-08 16:01:21 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/rtp/gstrtpqdmdepay.c:
	  rtpqdm2depay: error out if anyone tries to use this element
	  Forbid use of this element and comment out all processing code.
	  There is no plausible reason this code should ever be executed in 2026
	  seeing that this was a streaming format produced by Darwin Streaming Server
	  ca 2009 which hasn't been in active use for well over a decade.
	  We simply error out for now as defensive measure and will remove the
	  element entirely in the next release cycle.
	  The processing functions are hairy and rather tedious to fix without
	  at least some sample stream at hand.
	  If anyone actually does have a legitimate need for this element and
	  can provide a sample streams, we will happily implement a depayloader
	  in Rust.
	  Fixes ZDI-CAN-28850, ZDI-CAN-28851, ZDI-CAN-28851, ZDI-CAN-28850, GST-SA-2026-0008.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4903
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4890
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10886>

2026-01-22 08:13:56 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix out-of-bounds read when parsing PlayReady DRM UUIDs
	  Fixes GST-SA-2026-0002.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4865
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10880>

2026-01-29 10:21:03 -0700  Olivier Crête <olivier.crete@collabora.com>

	* gst/isomp4/fourcc.h:
	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_dump.c:
	* gst/isomp4/qtdemux_dump.h:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: Handle 'pict' tracks as if they were video tracks
	  Image tracks are sequences of timed images, so for all practical
	  purposes, they're video.
	  They are defined by ISO/IEC 23008-12 High Efficiency Image File Format (HEIF)
	  Also include a matching validate test.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10688>

2026-01-21 21:19:17 +1100  Jan Schmidt <jan@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-demux.h:
	* gst/matroska/matroska-parse.c:
	* gst/matroska/matroska-parse.h:
	* gst/matroska/matroska-read-common.c:
	* gst/matroska/matroska-read-common.h:
	  matroskademux: Build dynamic seek index if needed
	  when a stream doesn't have a cues table, build a seek
	  index dynamically and use it for seeking, to support
	  efficient reverse playback and faster seeks on
	  regions we've already parsed.
	  To support this, the demuxer will dynamically track
	  a set of seek_ranges that have been indexed.
	  If there is a cues table, it is used directly and
	  no dynamic index is tracked.
	  When traversing through regions that have not been
	  parsed, reverse playback will step back through clusters
	  and index them
	  This is useful for playing and scrubbing around
	  files that were written with streamable=true,
	  or that have not yet finished writing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10642>

2026-02-05 19:41:49 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-ids.h:
	  matroska-demux: parse TrackLanguageBcp47 tags
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10766>

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

	* meson.build:
	* sys/osxaudio/gstosxaudio.c:
	* sys/osxaudio/gstosxaudioelement.h:
	* sys/osxaudio/gstosxaudiosink.c:
	* sys/osxaudio/gstosxaudiosink.h:
	* sys/osxaudio/gstosxaudiosrc.c:
	* sys/osxaudio/gstosxaudiosrc.h:
	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudio.h:
	* sys/osxaudio/gstosxcoreaudiocommon.c:
	* sys/osxaudio/gstosxcoreaudiocommon.h:
	  osxaudio: Stop using HAVE_IOS, use TARGET_OS_* macros instead
	  With osxaudio, all the ifdefs are macOS and !macOS, so that
	  automatically adds preliminary support for tvOS, watchOS, and visionOS
	  here.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

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

	* ext/meson.build:
	* ext/qt/meson.build:
	* ext/qt6/meson.build:
	* gst/deinterlace/meson.build:
	* meson.build:
	* sys/osxaudio/meson.build:
	* sys/osxvideo/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/10667>

2026-02-10 08:54:48 +0100  Ognyan Tonchev <ognyan@axis.com>

	* tests/examples/rtsp/test-client-managed-mikey.c:
	  test-client-managed-mikey: Fix parsing of auth
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10783>

2026-01-23 10:14:12 +0100  Tobias Koenig <tobias.koenig@kdab.com>

	* docs/gst_plugins_cache.json:
	* ext/qt6/gstqml6glsrc.cc:
	* ext/qt6/gstqml6glsrc.h:
	* ext/qt6/gstqt6navigation.cc:
	* ext/qt6/gstqt6navigation.h:
	* ext/qt6/meson.build:
	  qml6glsrc: Add support to handle navigation events
	  Add support to qml6glsrc to handle mouse, keyboard and touch
	  navigation events, by converting them to corresponding QEvents
	  and injecting them into the QQuickWindow.
	  Since that might have security implications, the functionality
	  is guarded by a new 'view-only' property, which is 'true' by default.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10733>

2026-02-06 09:17:31 +0100  Ognyan Tonchev <otonchev@gmail.com>

	* tests/examples/rtsp/test-client-managed-mikey.c:
	  test-client-managed-mikey: Allow user to select auth method
	  Add support to select auth method. Example:
	  hmac-sha1-80 or null (the latter one shall be set for AEAD ciphers like
	  aes-128-gcm)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10745>

2026-01-29 09:41:15 +0100  Ognyan Tonchev <ognyan@axis.com>

	* tests/examples/rtsp/test-client-managed-mikey.c:
	  test-client-managed-mikey: Allow user to select cipher
	  Add support to select cipher for the SRTP encryption and authentication:
	  Example:
	  'aes-128-icm' or 'aes-256-icm' in combination with 'hmac-sha1'
	  or 'aes-128-gcm' or 'aes-256-gcm' which are authenticated encryption algorithms
	  Also improve option parsing
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10745>

2026-02-05 16:15:34 +0300  Andrey Sidorov <asidorov@elvees.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Memory leak in gst_rtspsrc_close() when GST_RTSP_EEOF error occurs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10759>

2026-01-28 16:42:33 -0500  Daniel Morin <daniel.morin@collabora.com>

	* gst/isomp4/fourcc.h:
	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: adding support for bayer to mp4(uncv)
	  - ComponentPatternDefinitionBox added to describe bayer format
	  - Use 2x2 pattern, with no gain (=1)
	  - register 'uncv, uncC, cpat, cmpd' to quicktime node types
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10658>

2026-02-05 15:50:06 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/isomp4/meson.build:
	  qtmux: include gstqtmux-doc.c in doc_sources
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4887
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10763>

2026-01-29 09:36:41 +0100  Ognyan Tonchev <ognyan@axis.com>

	* gst/rtsp/gstrtspsrc.c:
	  gstrtspsrc: Set new mki in the encoder upon crypto update
	  Upon crypto update, only the new master key is set on the encoder. Consider also the newly
	  generated mki
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10744>

2025-12-09 15:42:07 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/dtmf/gstdtmfsrc.c:
	* gst/dtmf/gstdtmfsrc.h:
	* gst/dtmf/gstrtpdtmfsrc.c:
	* gst/dtmf/gstrtpdtmfsrc.h:
	  dtmfsrc: expose properties for controlling minimum durations
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4775
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10334>

2025-12-09 15:40:15 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/dtmf/gstrtpdtmfdepay.c:
	  rtpdtmfdepay: remove unused define
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10334>

2026-01-04 21:10:37 +0100  Christian Gräfe <cgraefe83@gmail.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpptdemux.c:
	* gst/rtpmanager/gstrtpssrcdemux.c:
	  rtpptdemux/rtpssrcdemux: adapt klass "Demux" to "Demuxer"
	  - use recommended "Demuxer" instead of just "Demux"
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

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

	* docs/gst_plugins_cache.json:
	  gst: also adapt author names in the gst_plugins_cache.json files
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

2026-01-04 19:25:58 +0100  Christian Gräfe <cgraefe83@gmail.com>

	* gst/debugutils/breakmydata.c:
	* gst/debugutils/testplugin.c:
	  gst-plugins: fix author name: correct incomplete or wrong emails
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

2026-01-04 19:27:12 +0100  Christian Gräfe <cgraefe83@gmail.com>

	* gst/rtp/gstrtph263pay.c:
	  rtph263pay: fix author name: where not separated by ','
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

2026-01-04 19:02:19 +0100  Christian Gräfe <cgraefe83@gmail.com>

	* gst/videofilter/gstgamma.c:
	* sys/v4l2/gstv4l2mpeg4enc.c:
	* sys/v4l2/gstv4l2vp8enc.c:
	* sys/v4l2/gstv4l2vp9enc.c:
	  gst: fix author name: add missing closing angle bracket
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

2026-01-04 18:34:47 +0100  Christian Gräfe <cgraefe83@gmail.com>

	* gst/effectv/gstop.c:
	* gst/effectv/gstquark.c:
	* gst/effectv/gstradioac.c:
	* gst/effectv/gstripple.c:
	* gst/effectv/gststreak.c:
	  gst-plugins-good: fix author name: Kentaro Fukuchi
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

2026-01-20 14:41:11 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Extract vp9 level from vpcC into caps using codec-utils
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10538>

2026-01-20 14:40:31 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst/isomp4/atoms.c:
	* gst/isomp4/atoms.h:
	* gst/isomp4/gstqtmux.c:
	  qtmux: Use codec-utils to generate vpcC and av1c instead of local code
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10538>

2025-10-16 16:30:04 +0200  Edward Hervey <edward@centricular.com>

	* gst/deinterlace/gstdeinterlace.c:
	  deinterlace: Allow allocation queries to pass through in mixed mode
	  With mixed interlacing mode, we need to wait until we get buffers to know
	  whether they can be forwarded as-is or whether they need to be deinterlaced.
	  In such cases, we forward the allocation query downstream so that upstream has a
	  chance to get an optimal bufferpool (and other video information) to decode
	  directly into if it's progressive.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10579>

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

	* gst/rtpmanager/gstrtpjitterbuffer.c:
	* gst/rtpmanager/gstrtpsession.c:
	  all: GThreadFunc return type fixes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10682>

2026-01-20 14:04:57 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	  qtdemux: Push raw audio/video buffers downstream in reverse order if rate < 0
	  For compressed buffers the decoder base classes take care of this but for raw
	  data the demuxer has to do that as there is no other element downstream that
	  could potentially do it.
	  Downstream elements can't distinguish easily between the raw output of a decoder
	  and the non-reversed raw output of a demuxer due to a signalling design bug
	  (signalling for raw data is different than for compressed data) and this is the
	  best we can do for now.
	  Also make sure to set the discont flag correctly in this case.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10571>

2026-01-08 20:00:29 +0200  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	  wavpack: Update plugin docs cache
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 16:03:09 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackenc.c:
	* ext/wavpack/gstwavpackenc.h:
	  wavpackenc: Add support for S8/S16/S18/S20/S24/S32 and F32 samples
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 14:13:27 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackenc.c:
	  wavpackenc: Map buffer readwrite for channel reordering
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 14:09:28 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackenc.c:
	* ext/wavpack/gstwavpackenc.h:
	  wavpackenc: Extend caps a bit
	  Set width and depth like the parser does now, also set sample-type.
	  Allow for up to 4096 channels and maximum sample rate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 14:01:02 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	* ext/wavpack/gstwavpackdec.h:
	  wavpackdec: Output 18 and 20 bit as their corresponding formats
	  Instead of extending them to 24 bits.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 13:49:31 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	  wavpackdec: Allocate output buffer via the base class
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 13:47:35 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	  wavpackdec: Output 24 bit samples as actual 24 bit samples
	  Instead of extending them to 32 bits.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 13:35:18 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	  wavpackdec: Re-create wavpack decoder on caps changes
	  It doesn't support allow format changes in the middle of the stream and
	  continues decoding with the initial format, which leads to corrupted output.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4837
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 13:04:27 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	  wavpackdec: Allow up to 4096 channels and up to maximum sample rate
	  The previous values were lower than what the format allows.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 12:33:43 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/wavpack/gstwavpackdec.c:
	  wavpackdec: Set OPEN_NORMALIZE flag to normalize floating point samples into the [-1,1] range
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 12:25:22 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	* gst/audioparsers/gstwavpackparse.h:
	  wavpackparse: Correctly parse and advertise depth vs. width
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 11:59:31 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	* gst/audioparsers/gstwavpackparse.h:
	  wavpackparse: Include sample type (int / float / dsd) in the caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 11:49:34 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	* gst/audioparsers/gstwavpackparse.h:
	  wavpackparse: Sync flags with latest wavpack
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 11:47:58 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	  wavpackparse: Print hexadecimal numbers with leading zeroes for easier reading
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2026-01-05 11:46:52 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	  wavpackparse: Parse 32 bit sample rate and channel masks
	  And update template caps for the appropriate ranges, and also add missing +1 for
	  the number of channels.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10496>

2025-12-27 19:17:34 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/spectrum/gstspectrum.c:
	  spectrum: Return NOT_NEGOTIATED if transform_ip() is called without caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10461>

2025-12-27 19:16:35 +0200  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/level/gstlevel.c:
	* gst/level/gstlevel.h:
	  level: Port from GstBaseTransform to GstAudioFilter
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4830
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10461>

2026-01-29 13:21:06 +0100  Peter Stensson <petest@axis.com>

	* gst/rtpmanager/rtpsource.c:
	* gst/rtpmanager/rtpsource.h:
	  rtpsource: Add locking for receive reports table
	  The hash table can be accessed simultaneously from multiple threads. The
	  rtpsessions rtcp thread will trigger collection of received report
	  stats when it's timeout triggers through the "on-sender-ssrc-active"
	  signal. Meanwhile rtpsession might process a new receive report and
	  modify the receive reports table in rtpsource. Since the session lock is
	  released before sending "on-sender-ssrc-active" signal there is no
	  protection for the receive report table in rtpsource.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10683>

2025-12-19 17:31:25 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	* gst/multifile/gstsplitmuxsink.h:
	  splitmuxsink: Include start/end timecodes in fragment-opened/closed messages
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10420>

2021-01-24 12:21:04 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Correctly parse RTSP 2.0 RTP-Info headers
	  These are actually different from RTSP 1.0 ones and failed to parse
	  before. As gst-rtsp-server produces RTSP 1.0 RTP-Info headers, still
	  handle parsing them for RTSP 2.0.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3064
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8571>

2026-01-16 13:10:20 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Make sure to not output the same samples multiple times in reverse playback mode
	  By jumping from keyframe to keyframe backwards for one of the tracks and
	  outputting the overlapping samples of the other streams, it can happen that we
	  end up at the same samples as for the previous keyframe for the other tracks.
	  One example of this would be an intra-only video stream where the audio samples
	  have a considerably larger duration than a video frame. E.g. if audio samples
	  have 15 times the duration of a video frame, every audio sample would be output
	  15 times.
	  Apart from being inefficient, this also has the chance of breaking downstream
	  processing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10548>

2026-01-26 09:00:11 +0000  ArokyaMatthewNathan <arokyamatthewnathan@gmail.com>

	* gst/alpha/gstalphacolor.c:
	  gstalphacolor: use G_GNUC_UNUSED for unused parameters
	  Mark unused function arguments with G_GNUC_UNUSED macro instead of
	  casting to void, to suppress -Wunused-parameter warnings.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10600>

2026-01-20 15:51:43 +0100  Tobias Koenig <tobias.koenig@kdab.com>

	* ext/qt6/gstqml6glsrc.cc:
	* ext/qt6/qt6glwindow.cc:
	* ext/qt6/qt6glwindow.h:
	  qml6glsrc: Simplify implementation of Qt6GLWindow
	  The Qt6GLWindow class doesn't have to inherit from QQuickWindow,
	  since it doesn't provide any window-specific functionality that
	  is used by qml6glsrc.
	  Let Qt6GLWindow inherit from QObject instead and adapt the order
	  of constructor parameters to the Qt coding style (parent parameter
	  is always last).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10573>

2026-01-20 14:04:02 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Don't ignore flow return when pushing queued buffers downstream
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10570>

2026-01-22 06:42:41 +0100  Tobias Koenig <tobias.koenig@kdab.com>

	* ext/qt6/qt6glwindow.cc:
	* ext/qt6/qt6glwindow.h:
	  qml6glsrc: Fix scraping of QQuickWindow content
	  When QQuickWindow emits the afterFrameEnd signal, the eglSwapBuffers
	  method has been invoked already for the current frame, so GL_BACK
	  does not contain the frame anymore that is displayed in the
	  QQuickWindow, but according to eglSwapBuffers some undefined data
	  (it happens to be the previous frame).
	  That causes the frame that qml6glsrc injects into the pipeline to
	  be always one frame later than what is visible in the QQuickWindow.
	  This patch connects to the QQuickWindow::afterRendering() signal
	  to make sure the glReadPixels() call is invoked before eglSwapBuffers
	  is invoked. To ensure that at this time the current frame is
	  completely rendered into GL_BACK, the QQuickWindow::begin/endExternalCommands()
	  is invoked to execute the pending commands from the scene graph renderer
	  in command buffer before we copy the GL_BACK content.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10572>

2026-01-20 15:31:17 +0100  Tobias Koenig <tobias.koenig@kdab.com>

	* ext/qt6/qt6glwindow.cc:
	  qml6glsrc: Fix rendering of scene with clipped items
	  If the scene of the QQuickWindow contains an Item with active
	  clipping ('clip: true'), the GL_SCISSOR_TEST is still active
	  when the frame buffer is copied over into gstreamer buffer
	  in Qt6GLWindow::afterFrameEnd().
	  Therefore only the content of that Item ends up in the
	  gstreamer buffer and not the whole window content.
	  This commit fixes it by resetting the OpenGL context to its
	  default state before the copy operation is done.
	  Since the afterFrameEnd callback is invoked after all the
	  QtQuick scene graph operations have been executed, there
	  is no need to restore the previous context state, the
	  scene graph renderer will setup the state from scratch
	  on the start of the next frame anyway.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10572>

2026-01-02 17:25:13 +0100  Robert Mader <robert.mader@collabora.com>

	* ext/vpx/gstvpxdec.c:
	  vpxdec: Support downstream pools with alignment requirements
	  Notably the VideoDmabufPool with the udmabuf allocator, allowing sinks
	  like the gtk4paintablesink or waylandsink to use dmabuf upload paths,
	  significantly improving performance in many cases.
	  Note that this only works when downstream pools can actually be used, which
	  is only the case for VP8, not VP9, for now.
	  Additional context:
	  VP9 currently unconditionally creates a internal pool in order meet the
	  requirements of the decoder (in the allocation callback). My attempts to
	  use the downstream pool instead failed because the decoder doesn't allow us
	  to set a custom stride (it's hardcoded in libvpx), preventing the use of
	  the udmabuf pool. There are still cases where a downstream pool could be
	  used and would be desirable - notably in glupload where using the internal
	  pool results in us using the raw uploader - but the complexity of the changes
	  didn't seem worth it for now.
	  VP8, OTOH, doesn't have a allocation callback but allocates buffers in libvpx,
	  and we always copy the frame to a buffer from a pool - so using a downstream
	  pool is trivial and already worked OOTB - just needed some changes to accept
	  downstream pools like the udmabuf one.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10442>

2026-01-21 11:37:03 -0800  Deepa Guthyappa Madivalara <deepa.madivalara@oss.qualcomm.com>

	* docs/gst_plugins_cache.json:
	  v4l2: update gst plugins cache
	  Updating gst plugins cache to resolve CI errors.
	  Sync gst_plugins_cache.json with CI-generated documentation cache.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9892>

2025-08-20 14:23:51 -0700  DEEPA GUTHYAPPA MADIVALARA <deepa.madivalara@oss.qualcomm.com>

	* sys/v4l2/ext/videodev2.h:
	* sys/v4l2/gstv4l2av1codec.c:
	* sys/v4l2/gstv4l2av1codec.h:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2videodec.c:
	* sys/v4l2/meson.build:
	  v4l2: Add v4l2av1dec stateful decoder support
	  Introduce support for new pixelformat V4L2_PIX_FMT_AV1 which maps
	  to V4l2 AV1 stateful decoder. Implement necessary changes to
	  enable v4l2av1dec component.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9892>

2026-01-26 13:15:40 +0100  Matus Gajdos <matuszpd@gmail.com>

	* gst/apetag/gstapedemux.c:
	  apedemux: Add support for cover art tags
	  Try and extract `Cover Art (Front)` and `Cover Art (Back)` APE tags into
	  GST_TAG_IMAGE.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10603>

2026-01-27 15:51:14 +0100  Matus Gajdos <matuszpd@gmail.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Add support for ID3 tags
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10610>

2026-01-12 19:43:23 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Set the segment position to the start on EOS in reverse playback mode
	  This way it will be taken into account correctly when doing a non-flushing seek
	  afterwards. Otherwise it will have only the timestamp of the previous keyframe
	  that was inside the segment.
	  Also include a validate test for this.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10534>

2026-01-12 19:42:59 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Rename last mention of last_stop to position
	  0.10 is long gone.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10534>

2026-01-12 19:41:20 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Improve debug output around seek event handling
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10534>

2026-01-27 18:25:19 +0100  Piotr Brzeziński <piotr@centricular.com>

	* ext/adaptivedemux2/meson.build:
	  meson: Fix libxml2 not building due to wrong option type
	  'python' was moved from a boolean to a feature a few months ago and
	  4f4260dbe3489699aba0a724a3d55020666a0d6a pulled that in on our side.
	  Notably, this was causing adaptivedemux2 to not build on my system.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10615>

2026-01-27 18:36:19 +0000  Tim-Philipp Müller <tim@centricular.com>

	* README.md:
	* RELEASE:
	* meson.build:
	  Back to development in main branch after 1.28.0
	  - Track orc main branch
	  - Track gst-plugins-rs main branch
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10616>

=== release 1.28.0 ===

