=== release 1.29.1 ===

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

	* NEWS:
	* RELEASE:
	* gst-plugins-bad.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>

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

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

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

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

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

	* ext/dtls/gstdtlsdec.c:
	* ext/dtls/gstdtlsdec.h:
	* ext/dtls/gstdtlsenc.c:
	* ext/dtls/gstdtlsenc.h:
	  dtls: unregister signal handlers from connection
	  There is a risk of receiving invalid_closure_notify due to the different
	  lifetimes between connection and self (Dtls), as the unref is part of
	  gstreamer state management and not finalization/dispose. When the
	  connection is cleared make sure to also disconnect the signal handlers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11054>

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

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

2026-03-18 13:39:29 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/mpegtsmux/tsmux/tsmux.c:
	  tsmux: Fix integer overflow in SCTE35 NULL interval
	  The default value corresponds to 300 seconds in ticks of the 90kHz clock. A
	  simple pipeline with `mpegtsmux scte-35-pid=49`, analysed with e.g. Wireshark,
	  showed the SCTE35 NULL packets every 140 seconds instead of 300. Turns out, the
	  default value fits in a guint, but not when multiplied by 300.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11066>

2026-03-11 13:49:27 -0300  L. E. Segovia <amy@centricular.com>

	* gst-libs/gst/d3d11/meson.build:
	  winrt: fix MSYS build by checking for XAML headers on egl and d3d11
	  MSYS2 has switched to a default WINVER corresponding to Windows 10. This
	  unintentionally kept WinRT working because the default WINVER made the
	  tests involving WINAPI_PARTITION_APP etc. fail early.
	  The headers involved in gluing D3D11 are not available on the MinGW CRT.
	  See https://github.com/msys2/MINGW-packages/commit/496bb7651c8168c5ad2f1ac1b88ef12c6633e395
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10989>

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

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

2026-02-16 16:18:43 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/avfassetsrc.m:
	  avfassetsrc: Replace file:// URI support with avf+file://
	  AVFoundation can't just read arbitrary files, it's only meant to decode
	  A/V media files and provide us with the raw streams. Without this
	  change, gst-play-1.0 would pick it to read any kind of local files, most
	  of which would fail. Adding a custom URI scheme allows Gst to use
	  filesrc most of the time and switch to avfassetsrc only when it's
	  explicitly requested.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10816>

2026-03-18 13:55:10 +0530  Taruntej Kanakamalla <tarun@centricular.com>

	* sys/amfcodec/include/components/AMFXInput.h:
	* sys/amfcodec/include/components/Ambisonic2SRenderer.h:
	* sys/amfcodec/include/components/AudioCapture.h:
	* sys/amfcodec/include/components/Capture.h:
	* sys/amfcodec/include/components/ChromaKey.h:
	* sys/amfcodec/include/components/ColorSpace.h:
	* sys/amfcodec/include/components/CursorCapture.h:
	* sys/amfcodec/include/components/DisplayCapture.h:
	* sys/amfcodec/include/components/FFMPEGAudioConverter.h:
	* sys/amfcodec/include/components/FFMPEGAudioDecoder.h:
	* sys/amfcodec/include/components/FFMPEGAudioEncoder.h:
	* sys/amfcodec/include/components/FFMPEGComponents.h:
	* sys/amfcodec/include/components/FFMPEGEncoderAV1.h:
	* sys/amfcodec/include/components/FFMPEGEncoderH264.h:
	* sys/amfcodec/include/components/FFMPEGEncoderHEVC.h:
	* sys/amfcodec/include/components/FFMPEGFileDemuxer.h:
	* sys/amfcodec/include/components/FFMPEGFileMuxer.h:
	* sys/amfcodec/include/components/FFMPEGVideoDecoder.h:
	* sys/amfcodec/include/components/FRC.h:
	* sys/amfcodec/include/components/HQScaler.h:
	* sys/amfcodec/include/components/MediaSource.h:
	* sys/amfcodec/include/components/PreAnalysis.h:
	* sys/amfcodec/include/components/PreProcessing.h:
	* sys/amfcodec/include/components/SupportedCodecs.h:
	* sys/amfcodec/include/components/VQEnhancer.h:
	* sys/amfcodec/include/components/VideoCapture.h:
	* sys/amfcodec/include/components/VideoConverter.h:
	* sys/amfcodec/include/components/VideoDecoderUVD.h:
	* sys/amfcodec/include/components/VideoEncoderAV1.h:
	* sys/amfcodec/include/components/VideoEncoderHEVC.h:
	* sys/amfcodec/include/components/VideoEncoderVCE.h:
	* sys/amfcodec/include/components/VideoStitch.h:
	* sys/amfcodec/include/components/ZCamLiveStream.h:
	* sys/amfcodec/include/core/AudioBuffer.h:
	* sys/amfcodec/include/core/Buffer.h:
	* sys/amfcodec/include/core/Compute.h:
	* sys/amfcodec/include/core/CurrentTime.h:
	* sys/amfcodec/include/core/D3D12AMF.h:
	* sys/amfcodec/include/core/Data.h:
	* sys/amfcodec/include/core/Factory.h:
	* sys/amfcodec/include/core/Interface.h:
	* sys/amfcodec/include/core/Platform.h:
	* sys/amfcodec/include/core/Result.h:
	* sys/amfcodec/include/core/Surface.h:
	* sys/amfcodec/include/core/Variant.h:
	* sys/amfcodec/include/core/Version.h:
	* sys/amfcodec/include/core/VulkanAMF.h:
	  amfcodec: update the SDK headers
	  copy the headers from the AMF SDK release 1.15.0
	  https://github.com/GPUOpen-LibrariesAndSDKs/AMF/commit/afed28d37aca1938da2eedc50599bb3535a987ec
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11064>

2026-01-30 09:52:24 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* tests/check/elements/av1parse.c:
	  tests: av1parse: validate codec_data presence for TU/frame alignment
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10704>

2026-01-30 09:51:46 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst/videoparsers/gstav1parse.c:
	  av1parse: build codec_data av1C from sequence header information
	  Populate codec_data on av1parse src caps with a usable AV1CodecConfigurationRecord
	  (av1C) when the parser is aligned to TU/frame and sequence-header information is
	  available.
	  Before this change, codec_data could be missing or incomplete (notably without a
	  sequence header OBU in configOBUs), which made av1C insufficient for decoder
	  configuration unless downstream reparsed the elementary bitstream.
	  This change:
	  - captures sequence-header OBU from sink codec_data (av1C) when present,
	  by parsing the config record and extracting the sequence-header OBU;
	  - also captures sequence-header OBU from parsed bitstream sequence-header OBUs;
	  - builds/updates a GstAV1DecoderConfigRecord from av1parse state plus the
	  captured sequence header, then serializes it back to codec_data;
	  - uses a dedicated config_record_parser instance so config-record parsing does
	  not disturb the main parser state;
	  - reuses shared AV1 bitwriter/parser helpers (LEB128 and OBU buffer build)
	  instead of local duplicates.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10704>

2026-01-30 09:50:21 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtdec.h:
	  vtdec: Use av1C helper when configuring VideoToolbox
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10704>

2026-02-09 19:44:40 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* gst-libs/gst/codecparsers/gstav1bitwriter.c:
	* gst-libs/gst/codecparsers/gstav1bitwriter.h:
	* gst-libs/gst/codecparsers/gstav1parser.c:
	* gst-libs/gst/codecparsers/gstav1parser.h:
	* tests/check/libs/av1bitwriter.c:
	* tests/check/libs/av1parser.c:
	  av1parser: new API to create/parse GstAV1DecoderConfigRecord
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10704>

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

	* gst-libs/gst/codecparsers/gsth264parser.c:
	  h264parser: Fix memory leak in gst_h264_parser_parse_nal()
	  Thanks to Nicholas Soh for finding the issue and suggesting the correct fix.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4966
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11052>

2026-03-17 10:38:37 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst-libs/gst/vulkan/gstvkimagememory.c:
	  vulkan: Clear mutex when GstVulkanImageMemory is freed
	  Fixes leaks on every frame.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11047>

2026-03-08 10:27:05 -0400  Daniel Morin <daniel.morin@collabora.com>

	* ext/tflite/gsttfliteinference.c:
	  tflite: set PAR to 1:1 by default
	  - Set PAR to 1:1 by default
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10987>

2026-03-07 10:21:37 -0500  Daniel Morin <daniel.morin@collabora.com>

	* ext/onnx/gstonnxinference.c:
	  onnx: set default pixel-aspect-ratio
	  - All models we currently support expect a par of 1:1
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10987>

2026-03-13 13:14:23 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtdec.h:
	  vtdec: Store supplemental codec support in a global variable
	  The detection only worked for the first instance, because the lifetime
	  of `av1_once` and `vp9_once` exceeded the lifetime of the `vtdec`
	  instance.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4964
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11018>

2026-03-15 20:22:33 -0400  Daniel Morin <daniel.morin@collabora.com>

	* ext/tflite/gsttfliteinference.c:
	  doc: fix tfliteinference doc
	  - Fix annotation
	  - Add details about modelinfo
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11037>

2026-03-15 20:01:31 -0400  Daniel Morin <daniel.morin@collabora.com>

	* ext/onnx/gstonnxinference.c:
	  doc: correct onnxinference doc
	  - Correct outdated information
	  - Fix annotation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11037>

2025-01-17 11:11:47 +0100  Edward Hervey <edward@centricular.com>

	* gst/videoparsers/gsth264parse.c:
	  h264parse: Set video buffer flags for interlaced content
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8310>

2025-01-17 11:06:46 +0100  Edward Hervey <edward@centricular.com>

	* gst/videoparsers/gsth264parse.c:
	  h264parse: Detect and set the interlace mode
	  This is the only sensible place to put such detection. Instead of having
	  downstream elements (such as decoders) guess what it might be.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8310>

2025-01-16 11:29:44 +0100  Edward Hervey <edward@centricular.com>

	* gst-libs/gst/codecparsers/gsth264parser.c:
	* gst/videoparsers/gsth264parse.c:
	  h264parse: Fix framerate calculation
	  The utility function is invalid for figuring out the target framerate. This
	  should solely be based on the VUI timing parameters.
	  How the individual frames/fields should be represented (ex: repeating fields, or
	  not) should not have an impact on the target framerate.
	  Fixes framerate caps flipping back/forth with telecine material
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8310>

2025-01-16 10:29:05 +0100  Edward Hervey <edward@centricular.com>

	* gst/videoparsers/gsth264parse.c:
	* gst/videoparsers/gsth264parse.h:
	  h264parse: Document and debug pic struct
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8310>

2025-01-16 10:23:30 +0100  Edward Hervey <edward@centricular.com>

	* gst/videoparsers/gsth264parse.c:
	  h264parse: Remove always-true statement
	  sei_pic_struct is never set to -1. The comment dates from legacy version of the parser
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8310>

2026-03-13 15:15:53 +0100  Stéphane Cerveau <scerveau@igalia.com>

	* gst-libs/gst/vulkan/gstvkinstance.c:
	  vulkan: ignore Setting-Limit-Adjusted validation layer warning
	  Add message ID 0x86fe6721 (Setting-Limit-Adjusted) to the list of
	  ignored validation layer warnings. This is a cosmetic warning emitted
	  when the validation layer adjusts maxUpdateAfterBindDescriptorsInAllPools
	  to its internal tracking limit.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11022>

2025-12-10 16:41:37 +0100  Jakub Adam <jakub.adam@collabora.com>

	* gst/videoparsers/gsth266parse.c:
	  h266parse: add "hdr-format" to caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9668>

2025-12-10 16:36:25 +0100  Jakub Adam <jakub.adam@collabora.com>

	* gst/videoparsers/gsth264parse.c:
	  h264parse: add "hdr-format" to caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9668>

2025-09-23 13:34:48 +0200  Jakub Adam <jakub.adam@collabora.com>

	* sys/va/gstvavpp.c:
	  vapostproc: drop HDR meta when HDR to SDR tone mapping is enabled
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9668>

2025-06-12 19:32:55 +0200  Jakub Adam <jakub.adam@collabora.com>

	* gst-libs/gst/codecparsers/gstav1parser.c:
	* gst-libs/gst/codecparsers/gstav1parser.h:
	* gst/videoparsers/gstav1parse.c:
	  av1parse: add parsing of HDR10+ metadata
	  Attach the detected metadata as GstVideoHDRMeta to video frames.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9668>

2020-05-08 17:46:21 +0200  Stéphane Cerveau <scerveau@collabora.com>

	* tests/check/elements/h265parse.c:
	* tests/check/elements/parser.c:
	* tests/check/elements/parser.h:
	  tests: hdr10+ parser test
	  Test caps entry for hdr-format and test hdr10+ meta received.
	  add meta context static variables in parser
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9668>

2025-06-06 19:16:20 +0200  Jakub Adam <jakub.adam@collabora.com>

	* gst/videoparsers/gsth265parse.c:
	  h265parse: add "hdr-format" to caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9668>

2020-01-27 10:06:21 +0100  Stéphane Cerveau <scerveau@collabora.com>

	* gst/videoparsers/gstvideoparseutils.c:
	* gst/videoparsers/gstvideoparseutils.h:
	  videoparserutils: add ST2094-40 parsing for hdr10plus
	  Provide parsing facilities for SMPTE ST2094-40 and attach a video meta
	  buffer each time user data with provider code
	  ITU_T_T35_MANUFACTURER_US_ST2094_40 is detected.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9668>

2026-02-26 18:21:15 +0900  Seungha Yang <seungha@centricular.com>

	* gst/gdp/gstgdppay.c:
	  gdppay: Fix null pointer dereference on duplicated caps event
	  Also, instead of dropping duplicated caps events, record all events as-is.
	  Given that gdppay is meant to record pipeline data and event flow for
	  reproduction, preserving duplicated events helps to reproduce the original
	  pipeline behavior correctly
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10911>

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

	* docs/plugins/gst_plugins_cache.json:
	* ext/soundtouch/gstpitch.cc:
	  soundtouch: Only allow up to 192kHz and 16 channels
	  Any higher numbers are not supported.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11000>

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

	* docs/plugins/gst_plugins_cache.json:
	* ext/srtp/gstsrtpdec.c:
	* ext/srtp/gstsrtpdec.h:
	  srtpdec: Add API for invalidating keys for a specific SSRC
	  This will force srtpdec to request new keys when a new buffer is received
	  for this SSRC. When accepting the new keys the existing ROC value of the
	  stream will be preserved.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10980>

2026-03-11 20:01:39 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* sys/decklink/gstdecklinkvideosink.cpp:
	  decklinkvideosink: fix element leak in decklink callback
	  SetScheduledFrameCompletionCallback takes a reference on the passed-in
	  callback, we thus need to initialize its refcount to 0 for it to
	  get destroyed when we finally call
	  SetScheduledFrameCompletionCallback(NULL);
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11006>

2026-03-11 14:49:08 +0800  He Junyan <junyan.he@intel.com>

	* gst/videoparsers/gstav1parse.c:
	  av1parse: Fix a latent wrong setting of cll in update_src_caps
	  In gst_av1_parse_update_src_caps(), "content-light-level" should be
	  updated when having the cll_str, not the mdi_str.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11001>

2026-03-11 14:40:19 +0800  He Junyan <junyan.he@intel.com>

	* gst/videoparsers/gstav1parse.c:
	  av1parse: Fix the consumed typo in _read_leb128
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11001>

2026-02-22 11:23:27 +0100  Robert Mader <robert.mader@collabora.com>

	* ext/openh264/gstopenh264dec.cpp:
	  openh264dec: 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-02-24 14:16:30 +0100  Robert Mader <robert.mader@collabora.com>

	* ext/aom/gstav1dec.c:
	  av1dec: Further streamline buffer pool handling
	  If downstream supports the video meta we try enable the related
	  buffer pool options - but only if downstream actually supplied a pool.
	  In cases where downstream doesn't call `gst_query_add_allocation_pool()`
	  at all or only specifies sizes and/or buffer counts we ended up not
	  enabling the options. This commit fixes both cases.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10869>

2026-02-07 20:04:00 -0500  Daniel Morin <daniel.morin@collabora.com>

	* tests/check/libs/analyticsmeta.c:
	  gst-python: update analytics python test
	  - New tests for GroupMtd and KeypointMtd
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10551>

2026-01-04 20:31:18 -0500  Daniel Morin <daniel.morin@collabora.com>

	* tests/check/libs/analyticsmeta.c:
	  test: adding test for GstAnalyticsGroupMtd
	  - Verify new APIs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10551>

2025-12-30 23:49:31 -0500  Daniel Morin <daniel.morin@collabora.com>

	* gst-libs/gst/analytics/analytics.h:
	* gst-libs/gst/analytics/gstanalyticsgroupmtd.c:
	* gst-libs/gst/analytics/gstanalyticsgroupmtd.h:
	* gst-libs/gst/analytics/gstanalyticskeypointmtd.c:
	* gst-libs/gst/analytics/gstanalyticskeypointmtd.h:
	* gst-libs/gst/analytics/meson.build:
	  analytics: adding group mtd
	  - Adding GstAnalyticsGroupMtd that allow to group Mtd. The grouping can have a
	  specific semantic or not.
	  - Adding KeypointMtd which is a new Mtd allowing to specify a location in the
	  image. Keypoits can be grouped according to a specific semantic (like
	  hand-21-kp) that represent the joints of a human hand.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10551>

2026-02-07 17:57:14 -0500  Daniel Morin <daniel.morin@collabora.com>

	* gst-libs/gst/analytics/gstanalyticsmeta.c:
	  analytics: fix annotation GstAnalyticsRelationMeta
	  - gst_analytics_relation_meta_exist() can retrieve relation path. Annotation
	  should be (inout) as it can re-use allocated array. This would cause a crash
	  when using this api in python.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10551>

2026-03-04 13:33:11 +0100  Ognyan Tonchev <ognyan@axis.com>

	* ext/srtp/gstsrtpenc.c:
	  srtpenc: preserve ROC when master key is updated for an ongoing session
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10969>

2026-03-04 11:19:35 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/gstvkvideocaps.c:
	  vkvideocaps: use helper for profile logging in error message
	  Simplify the error logging in try_profile() by replacing manual field printing
	  with gst_vulkan_video_profile_to_caps() for clearer and more maintainable
	  profile representation.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10967>

2026-03-04 11:14:03 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vulkan/gstvkvideo-private.c:
	  vkvideo: move dedicated DPB detection after capability query
	  The image usage flags for decode operations now depend on the decoded
	  capability flags being properly retrieved first. This prevents setting
	  incorrect usage when dedicated DPB support is unknown.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10967>

2026-03-03 15:02:23 +0000  Thibault Saunier <tsaunier@igalia.com>

	* tests/validate/autovideoconvert/renegotiate.validatetest:
	* tests/validate/codectimestamper/h264_propagate_caps.validatetest:
	* tests/validate/opencv/cvtracker.validatetest:
	* tests/validate/testsrcbin/caps_spec.validatetest:
	* tests/validate/vtenc/vtenc_h264.validatetest:
	* tests/validate/vtenc/vtenc_h264_b_frames.validatetest:
	* tests/validate/vtenc/vtenc_h265.validatetest:
	* tests/validate/vtenc/vtenc_h265_b_frames.validatetest:
	  validateflow: auto-derive directories from test file path
	  Allow validateflow configs to be written as proper nested structures
	  instead of requiring the $(validateflow) variable expansion:
	  configs = {
	  [validateflow, pad=sink:sink, buffers-checksum=true],
	  }
	  instead of:
	  configs = {
	  "$(validateflow), pad=sink:sink, buffers-checksum=true",
	  }
	  When expectations-dir or actual-results-dir are not explicitly set,
	  validate_flow_override_new() now derives them from the __filename__
	  metadata field (already attached to each config structure by the
	  parser). This mirrors the path computation done in
	  gst_validate_structure_set_variables_from_struct_file().
	  The $(validateflow) variable and the old string syntax remain fully
	  supported for backward compatibility.
	  Port all existing .validatetest files to the new syntax.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10962>

2026-02-26 12:26:15 +0100  Stéphane Cerveau <scerveau@igalia.com>

	* tests/check/libs/vkvideodecode.c:
	  tests: fix vp9 vulkan decode test on radv
	  Bitdepth was not set properly to 8 and caused a crash
	  with RADV driver during the CmdDecodeVideo command.
	  libs_vkvideodecode: ../src/amd/vulkan/radv_video.c:2210:
	  radv_CmdDecodeVideoKHR: Assertion `ret == 0' failed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10919>

2026-02-25 16:02:05 +0100  Piotr Brzeziński <piotr@centricular.com>

	* ext/vulkan/meson.build:
	* gst-libs/gst/vulkan/meson.build:
	* sys/applemedia/meson.build:
	  vulkan: Fix libMoltenVK.dylib not found when installed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10797>

2026-02-11 13:04:09 +0000  Cole Richardson <crichardson@edgeaisolutions.com>

	* ext/svtav1/gstsvtav1enc.c:
	  svtav1: fix "Level of parallelism" property type discrepencies
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10836>

2026-02-26 10:26:01 +0100  Stéphane Cerveau <scerveau@igalia.com>

	* gst/mxf/mxfdemux.c:
	  mxfdemux: fix uninitialized warning
	  `target_chunk_start_ts` might be used uninitialized
	  as it will be set only in the loop.
	  Fix compiler warning.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10910>

2026-02-25 14:36:23 +0100  Azat Nurgaliev <anurgali@amd.com>

	* sys/amfcodec/meson.build:
	  amfcodec: fix build for platforms other than Windows and Linux
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10878>

2026-02-22 15:21:09 +0800  He Junyan <junyan.he@intel.com>

	* gst/videoparsers/gstav1parse.c:
	  av1parse: Split the stream format and alignment logic
	  In current code, the alignment and stream format logic are mixed in one
	  enum, which makes the code logic not very clear. We have a assumption
	  before that the annex-b stream format only appears when the input is TU
	  aligned. But in fact, other kind of input alignments can also have annex-b
	  stream format. So we now split the stream format and alignment logic.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4919
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10868>

2026-02-22 14:43:22 +0800  He Junyan <junyan.he@intel.com>

	* gst/videoparsers/gstav1parse.c:
	  av1parse: Add the GstAV1ParseStreamFormat enum and helper functions
	  Because we split the stream format logic from alignment, so all the helper
	  functions related to alignment also should be improved.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10868>

2026-02-23 13:21:25 +0100  Carlos Bentzen <cadubentzen@igalia.com>

	* gst-libs/gst/codecparsers/gsth265parser.c:
	  h265parser: Validate num_decoding_units_minus1 in pic_timing SEI
	  Fixes GST-SA-2026-0012.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10902>

2026-02-20 13:34:50 +0100  Carlos Bentzen <cadubentzen@igalia.com>

	* gst-libs/gst/codecparsers/gsth266parser.c:
	* gst-libs/gst/codecparsers/gsth266parser.h:
	  h266parser: Fix out of bounds write when parsing pic_timing SEI
	  Validate num_decoding_units_minus1 against the array bounds in
	  GstH266PicTiming using READ_UE_MAX.
	  Fixes ZDI-CAN-28839, CVE-2026-3081, GST-SA-2026-0010.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4898
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10889>

2026-02-20 17:40:24 +0100  Carlos Bentzen <cadubentzen@igalia.com>

	* gst-libs/gst/codecparsers/gsth266parser.c:
	  h266parser: Fix APS ID bounds check in APS parsing
	  Use GST_H266_MAX_APS_COUNT - 1 as the upper bound to match the spec
	  constraint and array size.
	  Fixes ZDI-CAN-28911, CVE-2026-3086, GST-SA-2026-0009.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4904
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10888>

2026-02-20 17:10:04 +0100  Carlos Bentzen <cadubentzen@igalia.com>

	* gst-libs/gst/codecparsers/gsth266parser.c:
	  h266parser: Validate tile index bounds in picture partition parsing
	  Ensure computed tile_idx stays within valid range before using it
	  as an array index to prevent out-of-bounds reads.
	  Fixes ZDI-CAN-28910, CVE-2026-3084, SA-2026-0011.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4902
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10887>

2026-02-11 22:07:49 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/codecparsers/gstjpegparser.c:
	  libs: jpegparser: boundary checks before copying it
	  READ_BYTES macro reads data from a byte reader and then copy it to a storage
	  variable. This patch adds a validation that the length to read cannot be bigger
	  than the storage size.
	  This macro right now is used only for storage variables of guint8 arrays.
	  We have validated in the specification (sections F.1.2.1.2 and F.1.2.2.1 in ITU
	  T.81) that Huffman tables (both AC and DC) aren't bigger than 256.
	  Fixes SA-2026-0003, CVE-2026-3082, ZDI-CAN-28840.
	  Fixes: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4899>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10885>

2026-02-12 09:50:23 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/dvbsuboverlay/dvb-sub.c:
	  dvbsuboverlay: Avoid integer overflows and unreasonably large displays/regions
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10884>

2026-02-11 20:45:12 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/dvbsuboverlay/dvb-sub.c:
	  dvbsuboverlay: Add missing bounds checks to the parser everywhere
	  Fixes SA-2026-0007, ZDI-CAN-28838, CVE-2026-2923.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4897
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10884>

2026-02-25 17:22:52 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/dvbsuboverlay/dvb-sub.c:
	* gst/dvbsuboverlay/dvb-sub.h:
	  dvbsuboverlay: Mark parsed byte array as const
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10884>

2026-02-11 16:35:29 +0100  Stéphane Cerveau <scerveau@igalia.com>

	* ext/dash/gstdashsink.c:
	  dashsink: guard splitmuxsink removal in release_pad during dispose
	  During element dispose, GstBin::dispose removes all children before
	  GstElement::dispose releases request pads. This causes release_pad
	  to attempt removing splitmuxsink after it has already been removed,
	  triggering a "not in bin" warning.
	  Check GST_OBJECT_PARENT before calling gst_bin_remove.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10834>

2026-01-16 13:01:16 +0100  Stéphane Cerveau <scerveau@igalia.com>

	* tests/check/elements/dashsink.c:
	  dashsink: test: use playbin3 for DASH playback verification
	  playbin uses decodebin2 which does not set GST_BIN_FLAG_STREAMS_AWARE.
	  dashdemux2 checks for this flag on its parent bin during NULL_TO_READY
	  (gstadaptivedemux.c:744) and errors out when it is missing, causing
	  memory leaks detected by valgrind as "Early exit with return value 20"
	  in a certain timing.
	  With playbin3, the error never happens at all because decodebin3 is streams-aware
	  Switch to playbin3 which uses streams-aware decodebin3, and update
	  expected timestamps since playbin3 normalizes the first PTS to 0.
	  Fixes #4888
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10834>

2026-02-17 15:20:07 +0100  Azat Nurgaliev <anurgali@amd.com>

	* sys/amfcodec/gstamfav1enc.cpp:
	* sys/amfcodec/gstamfav1enc.h:
	* sys/amfcodec/gstamfencoder.cpp:
	* sys/amfcodec/gstamfh264enc.cpp:
	* sys/amfcodec/gstamfh264enc.h:
	* sys/amfcodec/gstamfh265enc.cpp:
	* sys/amfcodec/gstamfh265enc.h:
	* sys/amfcodec/gstamfplatform.h:
	* sys/amfcodec/meson.build:
	* sys/amfcodec/plugin.cpp:
	  amfcodec: Add Linux support
	  The AMD AMF plugin was previously Windows-only. AMF itself uses different backends per platform: DirectX 11 on Windows
	  and Vulkan on other platforms. This change adds support for using the AMD codec stack on Linux by following that split
	  and enabling the Vulkan path when not building for Windows.
	  Windows: AMF uses D3D11. The plugin depends on gstreamer-d3d11 and winmm; device enumeration is via DXGI
	  (adapter LUID).
	  Linux (and other non-Windows): AMF uses Vulkan. The plugin initialises the AMF context
	  with AMFContext1::InitVulkan(), it doesn't use gstreamer-vulkan (gstvulkan_dep) so far.
	  Build-time configuration is used because AMF's backends require different dependencies and APIs (D3D11 vs Vulkan).
	  Meson selects the backend from host_system and the corresponding dependency on Windows - gstd3d11_dep.
	  The single amfcodec option builds the appropriate backend for the target OS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10761>

2026-01-20 16:22:31 +0100  François Laignel <francois@centricular.com>

	* gst/mxf/mxfdemux.c:
	* gst/mxf/mxfdemux.h:
	  mxfdemux: reverse playback: push unencoded buffers in reverse order
	  In reverse playback, encoded buffers in a chunk (a gop or a set of pictures for
	  intra-only) are pushed in DTS order. Decoders are in charge of decoding the
	  chunk and pushing the resulting frames in reverse PTS order. Unencoded streams
	  can't take advantage of the decoder's reordering.
	  This commit makes sure unencoded stream are pushed in reverse order.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10407>

2026-01-19 19:33:55 +0100  François Laignel <francois@centricular.com>

	* gst/mxf/mxfdemux.c:
	* gst/mxf/mxfdemux.h:
	  mxfdemux: reverse playback: don't send the same buffer twice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10407>

2026-01-16 19:22:11 +0100  François Laignel <francois@centricular.com>

	* gst/mxf/mxfdemux.c:
	  mxfdemux: reverse playback: improve ref pad selection
	  In reverse playback when selecting the beginning of next chunk, the reference
	  pad should be choosen amongst the pads which tracks are not EOS. Otherwise, we
	  might end up selecting a frame further to the beggining and we would end up
	  pushing many frames which downstream will need to buffer, decode & re-order.
	  This commit improves `gst_mxf_demux_pad_set_position ()` so it return FALSE
	  when the requested position is past the end of the pad etrack.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10407>

2026-01-16 10:51:37 +0100  François Laignel <francois@centricular.com>

	* gst/mxf/mxfdemux.c:
	* gst/mxf/mxfdemux.h:
	  mxfdemux: handle reverse playback in pull mode
	  This commit adds support for reverse playback and looping backwards in pull
	  mode.
	  Reverse playback and looping backwards were tested with:
	  * Operational Pattern 1 file containing RAW audio & DNxHD video.
	  * Operational Pattern 2 file containing RAW audio & MPEG-2 video with
	  non-intra-only frames and sufficient index support for frame type
	  identification.
	  Support for video streams without index support for frame type indentification
	  would require [1].
	  [1]: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5095
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10407>

2026-02-22 02:50:20 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/meson.build:
	  applemedia: Small simplifications to the vulkan checks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10866>

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

	* sys/applemedia/avfvideosrc.h:
	  avfvideosrc: Small fixes to the plugin header
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10866>

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

	* meson.build:
	* sys/applemedia/meson.build:
	* sys/applemedia/plugin.m:
	  applemedia: Get rid of AVFoundation-related defines
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10866>

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

	* meson.build:
	* sys/applemedia/meson.build:
	* sys/applemedia/plugin.m:
	  applemedia: Remove outdated HAVE_VIDEOTOOLBOX define
	  All platform versions we support have VideoToolbox now.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10866>

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

	* meson.build:
	* sys/applemedia/vtenc.c:
	  applemedia: Fix broken HAVE_VIDEOTOOLBOX_10_9_6 define
	  We now use VTCompressionSessionPrepareToEncodeFrames() correctly.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10866>

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

	* sys/applemedia/meson.build:
	  applemedia: Sort sources list, fix indentation
	  No functional changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10866>

2026-02-20 13:23:06 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtenc.c:
	* sys/applemedia/vtenc.h:
	  vtdec: Calculate DTS offset correctly
	  Previous method was too simple and didn't offset DTS enough.
	  videotestsrc ! vtenc_h264 ! qtmux ! fakesink with GST_DEBUG=2 showed
	  qtmux complaining about DTS > PTS right away, on latest macOS at least.
	  If we only ever get one frame from upstream, it'll get pushed out when
	  drain() is called. Otherwise, it goes out as soon as the second frame
	  arrives and we can calculate the offset. Of course in some cases we know
	  right away that DTS offset won't be needed and then this is all
	  bypassed.
	  If incoming frames don't have PTS set, we don't set a DTS offset at all.
	  This is because VideoToolbox, according to its docs, simply requires PTS
	  to be provided alongside the frame being submitted to the encoder. From
	  my testing, when PTS is invalid, VT will just not set DTS at all on the
	  output buffers, so we don't need the offset.
	  1st PTS minus 2nd PTS should always give us enough offset while being
	  more precise than e.g. using the DBP size instead. Similar logic is
	  already used in other encoders such as vah26*enc or svthevcenc.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9097>

2026-02-21 17:03:48 +0100  Robert Mader <robert.mader@collabora.com>

	* ext/aom/gstav1dec.c:
	  av1dec: Enable VIDEO_META and VIDEO_ALIGNMENT for pool
	  The decoders relies on the GstVideoDecoder base class for buffer pool
	  negotiation, however the later doesn't handle the VIDEO_META and thus
	  doesn't enable the respective pool options as it can't know whether
	  derived classes actually support those.
	  GstAV1Dec does so just fine and enabling the options is required for
	  certain pools like GstVideoDmabufPool. Thus iterate over the pools from
	  the allocation query and enable the options, deferring all further
	  handling to the base class.
	  This approach could potentially serve as a template for varios other sw
	  video decoders as it keeps most complexity in the base class.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10865>

2026-02-08 20:16:06 -0500  Daniel Morin <daniel.morin@collabora.com>

	* gst/tensordecoders/gstyolosegtensordecoder.c:
	  doc: cleanup gst-launch comment
	  - remove my local path from launch comment
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10777>

2026-02-20 16:05:14 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Fix wrong DPB size check in the output loop
	  The condition was always slightly wrong, but rather harmless. However
	  after my 'fix' in 30b213a86fd5ed8f654572bd35dff31af5a36334 it became
	  possible that with dpb_size=0 we end up busy looping because obviously
	  the queue length could not be <0, so the loop would never sleep...
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10858>

2026-02-20 14:19:42 -0500  Daniel Morin <daniel.morin@collabora.com>

	* ext/onnx/gstonnxinference.c:
	  onnx: set dims_order on GstTensor
	  - set dims_order on GstTensor
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10861>

2026-02-20 14:18:03 -0500  Daniel Morin <daniel.morin@collabora.com>

	* gst/tensordecoders/gstyolosegtensordecoder.c:
	* gst/tensordecoders/gstyolotensordecoder.c:
	  tensordecoders: fix wrong dims_order check
	  - Use correct DIM_ORDER on GstTensor check for YOLO tensor decoders
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10861>

2026-02-19 16:47:12 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtenc.c:
	* sys/applemedia/vtenc.h:
	  vtenc: Make sure draining actually drains all frames, port fixes from vtdec, unify naming
	  This commit mostly ports existing fixes from vtdec to vtenc. Also makes
	  them use the same naming to follow/compare the logic easier.
	  vtenc was missing the is_draining flag that we already have in vtdec.
	  It's mostly useful to make sure the output loop outputs all the frames
	  from the queue before it pauses when draining. Without it, it's possible
	  for some frames to end up being flushed instead of drained.
	  Additionally, if we're draining or flushing, the output callback will
	  now always push to the output queue no matter if it goes over the size
	  limit. This is already present in vtdec and reduces the risk of the VT
	  thread getting stuck when the output loop stops and won't actively
	  consume buffers.
	  I also renamed a few functions to make them match vtdec and make more
	  sense.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10849>

2026-02-19 16:30:07 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtdec.h:
	  vtdec: Make sure VT thread won't get stuck after a downstream error
	  Without this, if output loop stops because of an error we might end up
	  stuck because the VT thread can't push out the remaning frames.
	  This is already present in vtenc and is also needed here in vtdec.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10849>

2026-02-19 16:27:45 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Fix return value in flush()
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10849>

2026-02-17 17:01:48 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* docs/libs/codecparsers/sitemap.txt:
	  doc: codecparsers: Switch to gi-index
	  The since marker comment are not working when using the c-index.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-02-17 15:09:09 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/codecparsers/gstav1bitwriter.c:
	* gst-libs/gst/codecparsers/gstav1parser.c:
	* gst-libs/gst/codecparsers/gsth264bitwriter.c:
	* gst-libs/gst/codecparsers/gsth264parser.c:
	* gst-libs/gst/codecparsers/gsth264parser.h:
	* gst-libs/gst/codecparsers/gsth265bitwriter.c:
	* gst-libs/gst/codecparsers/gsth265parser.c:
	* gst-libs/gst/codecparsers/gsth265parser.h:
	* gst-libs/gst/codecparsers/gsth266parser.c:
	* gst-libs/gst/codecparsers/gsth266parser.h:
	* gst-libs/gst/codecparsers/gstjpeg2000sampling.h:
	* gst-libs/gst/codecparsers/gstjpegbitwriter.c:
	* gst-libs/gst/codecparsers/gstjpegparser.c:
	* gst-libs/gst/codecparsers/gstmpegvideometa.c:
	* gst-libs/gst/codecparsers/gstmpegvideoparser.c:
	* gst-libs/gst/codecparsers/gstvc1parser.c:
	* gst-libs/gst/codecparsers/gstvc1parser.h:
	* gst-libs/gst/codecparsers/gstvp9bitwriter.c:
	* gst-libs/gst/codecparsers/gstvp9parser.c:
	* gst-libs/gst/codecparsers/gstvp9parser.h:
	  codecparsers: Fix annotation warnings reported at GIR constructions
	  This fixes all the minor warning emited buy the GIR generator.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-02-17 15:06:18 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/codecparsers/gsth265parser.h:
	* gst-libs/gst/codecparsers/gstvc1parser.c:
	* gst-libs/gst/codecparsers/gstvc1parser.h:
	* tests/check/libs/h265parser.c:
	  codecparsers: h265/vc1: Add missing namespace to some defines
	  This is effectively an API break, but I think its fair break considering the
	  risk of clash.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-02-17 15:04:37 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/codecs/meson.build:
	  build: codecs: Add gir dependency to the new GstCodecParsers gir
	  This fixes warning when structures from the parsers are exposed through the
	  codecs library API.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-02-17 15:01:07 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/codecs/gsth265decoder.c:
	* gst-libs/gst/codecs/gsth265decoder.h:
	* sys/v4l2codecs/gstv4l2codech265dec.c:
	  codec: h265decoder: Fix annotation and constify return value
	  gst_h265_decoder_get_sps_ext() return a bare pointer inside an array own by the
	  base class. Fix the annotation and constify the return value. Fix its single
	  usage in v4l2 codecs.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-02-17 13:32:14 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* docs/meson.build:
	* gst-libs/gst/codecparsers/meson.build:
	  build: codecparsers: Create a GIR file needed for since marking
	  Without a GIR file, despite the absence of GObject in this library, the
	  documentation script cannot resolved the since marker. Forcing hacks to ignore
	  newly introduce symbols. This also prevented a lot of annotation error
	  from being reported.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-02-17 13:29:41 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/codecparsers/meson.build:
	  build: codecparsers: Install some newly introduce API headers
	  This notably install the bitwriter headers included in the API but with their
	  headers not being installed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-02-17 13:28:23 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/codecs/meson.build:
	  build: codecs: Small style improvement
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-02-17 13:26:59 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/codecs/meson.build:
	  build: codecs: Add AV1 decoder to the GIR includes
	  Add missing AV1 decoder header to the GIR include flags. Since there
	  is no central header for this library, we need to pass every codec
	  headers to the GIR so all the symbols are resolved.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-02-18 19:49:25 -0500  Detlev Casanova <detlev.casanova@collabora.com>

	* sys/v4l2codecs/gstv4l2codech265dec.c:
	  v4l2codecs: Set long and short term RPS controls
	  Some hardware need that information to decode HEVC frames (e.g.:
	  Rockchip rk3588 SoC).
	  Those controls were added in linux 6.20
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-01-26 11:56:44 -0500  Detlev Casanova <detlev.casanova@collabora.com>

	* gst-libs/gst/codecs/gsth265decoder.c:
	* gst-libs/gst/codecs/gsth265decoder.h:
	  codecs: h265dec: Parse extended SPS information
	  This extra information allow notably parsing of the
	  slices headers inside the accelerator.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-01-26 11:53:02 -0500  Detlev Casanova <detlev.casanova@collabora.com>

	* gst-libs/gst/codecparsers/gsth265parser.c:
	* gst-libs/gst/codecparsers/gsth265parser.h:
	  h265parser: Store raw short/long term RPS sets
	  In order to support the new V4L2 HEVC stateless controls the raw values
	  from the long and short term RPS sets need to be kept.
	  The raw values are used in those controls so that they are kept
	  compatible with the Vulkan API.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2025-06-27 11:24:04 -0400  Detlev Casanova <detlev.casanova@collabora.com>

	* sys/v4l2codecs/linux/v4l2-controls.h:
	* sys/v4l2codecs/linux/videodev2.h:
	  v4l2codecs: Add short and long term controls in linux headers
	  Add the new V4L2_CID_STATELESS_HEVC_EXT_SPS_ST_RPS and
	  V4L2_CID_STATELESS_HEVC_EXT_SPS_LT_RPS controls in the linux kernel header.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10820>

2026-02-12 16:04:04 +0100  Hyunjun Ko <zzoon@igalia.com>

	* ext/vulkan/vkav1dec.c:
	  vkav1dec: fix to set SavedOrderHints properly
	  This fixes to play AV1 correctly on hardwares that require
	  SavedOrderHints, eg. ANV.
	  Otherwise the params is going to be reset to 0 during initialization.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10829>

2026-02-19 17:22:59 +0900  Seungha Yang <seungha@centricular.com>

	* gst/closedcaption/gstccconverter.c:
	  ccconverter: Reset counters on flush-stop
	  ... instead of flush-start. flush-start event can happen
	  at arbitrary points while the element is processing data
	  in streaming thread, which may cause races. Reset counters
	  on flush-stop to ensure that the reset happens after
	  the streaming thread no longer processing data
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10842>

2026-02-19 15:43:13 +0900  Seungha Yang <seungha@centricular.com>

	* gst/closedcaption/gsth264ccextractor.c:
	* gst/closedcaption/gsth265ccextractor.c:
	  h264,h265ccextractor: Fix framerate in initial caps
	  Update framerate in set_format() as well so that
	  the input framerate is copied to the initial output caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10840>

2026-02-17 17:41:41 +0900  Seungha Yang <seungha@centricular.com>

	* sys/asio/gstasioringbuffer.cpp:
	  asiosink: Fill silence when paused
	  Due to the ASIO API design, it's not possible to pause a specific
	  ASIO device channel. Fill silence instead to avoid garbage noise
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4909
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10823>

2026-02-09 12:33:41 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* sys/applemedia/avfassetsrc.h:
	* sys/applemedia/avfassetsrc.m:
	* sys/applemedia/avfdeviceprovider.h:
	* sys/applemedia/avfdeviceprovider.m:
	* sys/applemedia/avfvideosrc.h:
	* sys/applemedia/avfvideosrc.m:
	* sys/applemedia/avsamplevideosink.h:
	* sys/applemedia/avsamplevideosink.m:
	* sys/applemedia/helpers.h:
	* sys/applemedia/helpers.m:
	* sys/applemedia/iosassetsrc.h:
	* sys/applemedia/iosassetsrc.m:
	* sys/applemedia/meson.build:
	* sys/applemedia/plugin.m:
	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtdec.h:
	* sys/applemedia/vtenc.c:
	* sys/applemedia/vtenc.h:
	  applemedia: elements can now be individually registered with gst-full
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10780>

2026-02-16 17:17:07 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Avoid busy looping when queue length is smaller than DPB size
	  The check for whether the output loop should sleep was wrong. If we had
	  something in the queue but not enough to push frames out (depending on
	  the DPB size), we'd busy loop until that changed. If the input data
	  happened to stop at that point, vtdec would busy loop until EOS arrives,
	  which doesn't always happen instantly. This just makes sure we're
	  checking for the same thing in both places, eliminating this weirdness.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10818>

2025-05-16 12:47:35 +0200  Piotr Brzeziński <piotr@centricular.com>

	* gst/rtmp2/rtmp/rtmpconnection.c:
	  rtmp2: Don't retry on G_IO_ERROR_TIMED_OUT
	  Retrying forever on a timeout made rtmp2sink prone to hanging if the server misbehaves.
	  When that happens, rtmp2sink becomes impossible to stop/EOS by normal means.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8989>

2026-02-16 10:51:53 +0800  Xi Ruoyao <xry111@xry111.site>

	* ext/zxing/gstzxing.cpp:
	  zxing: Fix version check for zxing-cpp 3.0.1
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10812>

2026-02-12 20:42:17 +0100  Jakub Adam <jakub.adam@collabora.com>

	* sys/va/gstvaoverlaycompositor.c:
	  vaoverlaycompositor: drop overlay pools based on usage frequency
	  Age is not the best criterion for deciding which overlay pool should
	  be freed. Instead, track how often each pool is used.
	  Input frame or time overlays rarely change their dimensions, so their
	  pools can be reused repeatedly. In contrast, a pool for a subtitle is
	  typically needed for only a few frames and can then be discarded.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10365>

2026-02-12 19:57:05 +0100  Jakub Adam <jakub.adam@collabora.com>

	* sys/va/gstvaoverlaycompositor.c:
	  vaoverlaycompositor: don't free buffer pools in gst_va_filter_compose()
	  With the iHD driver, references to compose samples are kept until
	  vaEndPicture() is called. Therefore, we must not trim the pool list
	  inside _sample_next(), because destroying a pool whose buffers might
	  still be in use will lead to a crash.
	  Instead, trim the pool size to MAX_OVERLAY_POOLS only after
	  gst_va_filter_compose() has finished.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10365>

2026-02-03 18:38:15 +0100  Jakub Adam <jakub.adam@collabora.com>

	* sys/va/gstvaoverlaycompositor.c:
	  vaoverlaycompositor: refactor _get_pool()
	  Factor out creating OverlayPool into its own function to improve
	  readability.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10365>

2026-01-12 19:23:49 +0100  Jakub Adam <jakub.adam@collabora.com>

	* sys/va/gstvaoverlaycompositor.c:
	  vaoverlaycompositor: optimize _get_pool()
	  Store the video info of each buffer pool so that it doesn't have to be
	  retrieved from pool configuration every time it is needed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10365>

2025-11-05 19:09:43 +0100  Jakub Adam <jakub.adam@collabora.com>

	* sys/va/gstvaoverlaycompositor.c:
	* sys/va/gstvaoverlaycompositor.h:
	* sys/va/meson.build:
	* sys/va/plugin.c:
	  va: add VA-API overlay compositor element
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10365>

2026-02-12 14:40:40 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* sys/va/gstvabasetransform.c:
	  vabasetransform: copy buffer's metadata at copy when import buffer
	  When downstream doesn't support video meta, the buffer needs to be imported to a
	  VA surface by copying the frame data. But buffer's metadata weren't copied. This
	  patch fixes it by calling base class copy_metadata() virtual method.
	  Original-patch-by: carol-lim <carol.lim@intel.com>
	  Fixes: #4866
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10800>

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

	* docs/plugins/gst_plugins_cache.json:
	* gst/timecode/gsttimecodestamper.c:
	* gst/timecode/gsttimecodestamper.h:
	  timecodestamper: Add timecode source mode based on ST12-2/3 ancillary meta
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10774>

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

	* sys/applemedia/vtdec.c:
	  vtdec: Fix GstVideoCodecState leak
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-02-11 19:26:07 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/ladspa/gstladspa.c:
	* gst/frei0r/gstfrei0r.c:
	  frie0r, ladspa: Stop using G_MODULE_SUFFIX
	  And define GST_EXTRA_MODULE_SUFFIX inside the plugin sources, since it
	  is no longer set in config.h
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-02-11 19:25:09 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/lv2/gstlv2.c:
	* meson.build:
	* sys/shm/shmpipe.c:
	  macos: Stop using HAVE_OSX, use built-in macros instead
	  The host_system == 'darwin' check is incorrect for this anyway.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-02-02 21:37:05 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtdec.h:
	  vtdec: Check for AV1 and VP9 support once
	  And don't warn if they aren't supported. Prevents spammy warnings when
	  playing an fmp4 stream which reconfigures every segment.
	  Ensure that we check it dynamically during caps negotiation, so that
	  we do not enable this supplemental support if not necessary, since it
	  is process-wide and (likely) reserves resources.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-01-28 16:58:03 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* meson.build:
	* sys/applemedia/meson.build:
	* sys/applemedia/plugin.m:
	  applemedia: Disable avfvideosrc and avfdeviceprovider on tvOS/watchOS
	  AVCaptureDevice isn't available on watchOS, and it's only available on
	  tvOS 17.0+. It's not clear how to make an entire element dynamically
	  available via __builtin_available() so just disable it for now.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-01-28 15:53:05 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtenc.c:
	  vtenc: Fix build with tvOS
	  https://developer.apple.com/documentation/videotoolbox/kvtcompressionpropertykey_constantbitrate
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-01-28 14:41:03 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/avfvideosrc.m:
	  avfvideosrc: Add support for newer iOS 17+ APIs
	  The orientation property is deprecated, and has been replaced with
	  videoRotationAngle. Coincidentally, this is also the only way to do
	  rotation on tvOS.
	  Left TODOs for some of the features that are also available on newer
	  macOS now.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-01-28 14:04:41 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Software decoders are now more widely available
	  When software decoders are available, we now register a separate
	  vtdec_hw, similar to macOS.
	  http://developer.apple.com/documentation/videotoolbox/kvtvideodecoderspecification_enablehardwareacceleratedvideodecoder
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-01-28 14:00:07 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: VTRegisterSupplementalVideoDecoderIfAvailable is widely available
	  It's also available on tvOS and visionOS.
	  https://developer.apple.com/documentation/videotoolbox/vtregistersupplementalvideodecoderifavailable(_:)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-01-28 14:04:05 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/meson.build:
	* sys/applemedia/plugin.m:
	* sys/applemedia/videotexturecache-gl.h:
	* sys/applemedia/videotexturecache-gl.m:
	* sys/applemedia/vtdec.c:
	  applemedia: Enable EAGL support on tvOS too
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

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

	* sys/applemedia/avfdeviceprovider.m:
	  avfdeviceprovider: AVCaptureDevice manufacturer is more widely available
	  https://developer.apple.com/documentation/avfoundation/avcapturedevice/manufacturer
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

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

	* meson.build:
	* sys/applemedia/avfdeviceprovider.m:
	* sys/applemedia/avfvideosrc.m:
	* sys/applemedia/corevideobuffer.c:
	* sys/applemedia/plugin.m:
	* sys/applemedia/videotexturecache-gl.h:
	* sys/applemedia/videotexturecache-gl.m:
	* sys/applemedia/videotexturecache-vulkan.mm:
	* sys/applemedia/videotexturecache.m:
	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtenc.c:
	  applemedia: Stop using HAVE_IOS, use TARGET_OS_* macros instead
	  HAVE_IOS is being used incorrectly, because iOS vs macOS are not the
	  only two choices.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-01-28 12:04:30 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/plugin.m:
	  applemedia: Set avf* elements as PRIMARY rank
	  There's no real reason why these should not be PRIMARY rank on macOS.
	  There are no replacements for them, and their condition is probably
	  better on macOS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

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

	* ext/sctp/usrsctp/meson.build:
	* gst-libs/gst/vulkan/meson.build:
	* meson.build:
	* sys/applemedia/meson.build:
	* sys/decklink/meson.build:
	* sys/shm/meson.build:
	* tests/examples/avsamplesink/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-01-28 11:40:08 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/ladspa/gstladspa.c:
	  ladspa: Fix macOS detection
	  The macOS ifdefs were also incorrectly enabled for iOS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10667>

2026-02-13 13:07:15 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* sys/va/gstvavp8enc.c:
	  vavp8enc: set color format chroma
	  With the refactor of the encoder helper open methods, a hidden bug in vp8
	  encoder appeared, because the rt_format was never assigned, relying on a default
	  value that were removed.
	  This patch sets the format's chroma before opening the encoder helper object.
	  Fixes: #4906
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10803>

2026-02-12 19:24:41 -0500  Monty C <montyc1999@gmail.com>

	* sys/decklink/meson.build:
	  meson: Explicitly use cpp_std=c++11 for decklink
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10801>

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

	* docs/plugins/gst_plugins_cache.json:
	* sys/decklink/gstdecklink.cpp:
	* sys/decklink/gstdecklink.h:
	* sys/decklink/gstdecklinkvideosink.cpp:
	* sys/decklink/gstdecklinkvideosink.h:
	* sys/decklink/gstdecklinkvideosrc.cpp:
	* sys/decklink/gstdecklinkvideosrc.h:
	  decklink: Fix timecode handling in various situations
	  - The BCD format for providing timecodes to decklink was wrong in the upper bits
	  - Timecodes with >30 fps were handled completely wrong
	  - The timecode-format property was not properly taken into account,
	  resulting in timecodes for the wrong formats being provided or captured
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10772>

2026-02-11 09:59:53 +0000  axxel <awagger@gmail.com>

	* ext/zxing/gstzxing.cpp:
	  zxing: Minimal support for compiling with zxing-cpp 3.x
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10790>

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

	* sys/applemedia/vtdec.c:
	  vtdec: Fix CM memory leak due to incorrect unref
	  The GstMemory was being leaked for each frame because
	  gst_memory_unmap() was setting info->memory to NULL, making the unref
	  a no-op. We need to store a separate ref to the memory.
	  This broke in 9baf4701f04ee238db6282f4f348a43ca5a299a9, where
	  info->memory now starts to get cleared on unmap.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10794>

2026-02-10 22:12:56 +0100  Sjoerd Simons <sjoerd@collabora.com>

	* gst-libs/gst/wayland/gstwlwindow.c:
	  waylandsink: make gst_wl_window_commit_buffer handle NULL buffers
	  gst_wl_window_commit_buffer is meant to clear the various surfaces when passed
	  a NULL buffer. In 130e093d5c ("wayland: window: Add the ability to offload
	  cropping"), this case was broken. Correct that.
	  Fixes: 130e093d5c ("wayland: window: Add the ability to offload cropping")
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10786>

2026-02-06 13:09:02 +0100  Stéphane Cerveau <scerveau@igalia.com>

	* gst-libs/gst/vulkan/gstvkdecoder-private.c:
	* gst-libs/gst/vulkan/gstvkencoder-private.c:
	* gst-libs/gst/vulkan/gstvkvideo-private.c:
	* gst-libs/gst/vulkan/gstvkvideo-private.h:
	  vulkan: load video function pointers conditionally based on codec operation
	  Split GST_VULKAN_DEVICE_VIDEO_FN_LIST into COMMON, DECODE, and ENCODE
	  sub-lists so that gst_vulkan_video_get_vk_functions() only loads the
	  function pointers relevant to the codec operation being used.
	  Previously, both decoder and encoder would attempt to load all Vulkan
	  Video function pointers unconditionally, causing initialization to fail
	  on drivers that only support one direction (e.g. decode-only drivers
	  would fail to find vkCmdEncodeVideoKHR).
	  Now the decoder only requires CmdDecodeVideo while the encoder only
	  requires CmdEncodeVideo, GetEncodedVideoSessionParameters, and
	  GetPhysicalDeviceVideoEncodeQualityLevelProperties.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10771>

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

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

2026-01-07 16:17:23 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/vkh264enc.c:
	  vkh264enc: adjusting to work with the new GOP mapper object
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10523>

2026-01-07 16:16:39 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/base/gsth264encoder.c:
	* ext/vulkan/base/gsth264encoder.h:
	  vulkan: h264encoder: replace GOP handling with shared H.26x mapper
	  This refactors the H.264 encoder's Group of Pictures (GOP) management
	  to use the newly introduced generic H.26x GOP mapper instead of its
	  previous custom implementation.
	  The key changes include:
	  - Removing the local `GstH264GOPFrame` structure and related functions
	  like `gst_h264_encoder_create_gop_frame_map()` and
	  `gst_h264_encoder_print_gop_structure()`
	  - Adding a `GstH26XGOPMapper` instance to the encoder's private data
	  alongside consolidated `GstH26XGOPParameters`
	  - Updating the frame type handling to use the shared `GstH26XGOP` type
	  instead of the old `GstH264GOPFrame`
	  The new approach centralizes GOP structure generation and enables
	  potential reuse across different codec implementations, starting with
	  H.264 and paving the way for H.265 support. Functionality remains
	  identical while reducing code duplication.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10523>

2025-12-18 19:18:04 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/base/gsth26xgopmapper.c:
	* ext/vulkan/base/gsth26xgopmapper.h:
	* ext/vulkan/meson.build:
	* tests/check/libs/h26xgopmapper.c:
	* tests/check/meson.build:
	  vulkan: add H.26X GOP mapper utility for video encoding
	  The H.26X GOP mapper generates the map of a group of pictures (GOP) with the
	  type of each frame in the GOP. The object receives a set of parameters which
	  will be used to generate the map.
	  It includes unit tests.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10523>

2026-01-21 11:04:23 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/base/gsth264encoder.c:
	  vulkan: h264encoder: remove duplicated structure
	  The information stored in _h264_level_map is already stored _h264_levels. So
	  it's reused, removing _h264_level_map array.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10523>

2025-09-03 23:01:55 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/base/gsth264encoder.c:
	* ext/vulkan/base/gsth264encoder.h:
	  vulkan: h264encoder: fix documentation and gir generation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10523>

2025-10-06 17:18:19 +0200  Stéphane Cerveau <scerveau@igalia.com>

	* tests/check/libs/vkcodecparams_av1.c:
	* tests/check/libs/vkvideodecode.c:
	  tests: add vulkan av1 decode
	  This test aims to demonstrate the decoding of 2 frames, one KEY and one
	  INTER frame using the Vulkan library.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10725>

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

	* gst-libs/gst/vulkan/meson.build:
	* sys/applemedia/meson.build:
	  meson: Add a subproject for providing the LunarG MoltenVK SDK
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10743>

2026-02-04 16:38:21 +0200  Sebastian Dröge <sebastian@centricular.com>

	* sys/aja/gstajasinkcombiner.cpp:
	  ajasinkcombiner: Only forward the segment events from the video sinkpad
	  It's the video buffers with their timestamps that are forwarded, not the audio
	  ones, and if both segments are different then this won't work.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10747>

2026-01-14 15:24:51 +0100  David Rosca <david.rosca@amd.com>

	* sys/va/gstvah264dec.c:
	  vah264dec: Set VA_PICTURE_H264_NON_EXISTING
	  This flag indicates that the picture is marked as "non-existing" according to
	  spec (section 8.2.5.2).
	  Driver can pass this information to firmware, which is supported by both AMD and
	  Intel.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10549>

2026-02-03 17:15:10 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/vkh264enc.c:
	  vkh264enc: handle when max level idc isn't valid
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10226>

2025-11-27 16:46:07 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/vkh264enc.c:
	  vkh264enc: avoid downstream renegotiation if possible
	  By checking if the new caps are not a super-set of the current negotiated caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10226>

2025-11-27 16:43:25 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/vkh264enc.c:
	  vkh264enc: fix level if required in new_sequence()
	  H264 encoder base class needs the corrected level to create the GOP map. So this
	  patch correct it in that virtual method.
	  The same code is repeated (more or less) in new_parameters() virtual method just
	  for assurance.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10226>

2026-01-23 12:13:09 +0100  Stéphane Cerveau <scerveau@igalia.com>

	* ext/openh264/gstopenh264enc.cpp:
	  openh264enc: remove broken drain and simplify handle_frame
	  OpenH264 encoder does not support B-frames for any profile, or other
	  advanced encoding
	  feature which could require frame buffering, so there
	  are no potential frames to drain. The drain code was also broken as
	  EncodeFrame() rejects NULL input with cmInitParaError.
	  Remove the non-functional drain loop and clean up handle_frame() by
	  removing dead code paths that were only needed for the broken drain.
	  Add defensive NULL frame check with error logging.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10589>

2026-01-22 14:39:46 +0100  Stéphane Cerveau <scerveau@igalia.com>

	* ext/openh264/gstopenh264enc.cpp:
	* ext/openh264/gstopenh264enc.h:
	  openh264enc: skip drain for baseline profile
	  Baseline profile doesn't use B-frames, so there are no buffered frames
	  to drain at EOS. Attempting to drain by calling EncodeFrame with NULL
	  input causes openh264 to return cmInitParaError and log a spurious
	  error message.
	  Store the profile when initializing the encoder and check it in finish()
	  to skip the unnecessary drain call for baseline profile.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10589>

2026-02-03 11:53:03 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vulkan/gstvkoperation.c:
	* gst-libs/gst/vulkan/gstvkphysicaldevice-private.h:
	* gst-libs/gst/vulkan/gstvkphysicaldevice.c:
	  vulkan: fix grammar of function _has_feature_timeline_semaphore()
	  This is a private function so no API breakage.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10737>

2025-12-10 10:13:34 -0300  Martin Rodriguez Reboredo <yakoyoku@gmail.com>

	* gst-libs/gst/vulkan/gstvkphysicaldevice-private.h:
	* gst-libs/gst/vulkan/gstvkphysicaldevice.c:
	* gst-libs/gst/vulkan/gstvkphysicaldevice.h:
	  vulkan: expose physical device properties and features
	  This is required for !10316
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10351>

2025-12-30 18:22:47 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/mpegtsmux/tsmux/tsmux.c:
	* gst/mpegtsmux/tsmux/tsmuxcommon.h:
	  tsmux: reduce noise for DEBUG log level
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10474>

2026-01-29 16:08:33 +0900  Seungha Yang <seungha@centricular.com>

	* gst/videoparsers/gsth265parse.c:
	  h265parse: Update buffer duration only when it's invalid
	  Framerate parsed from VUI or upstream caps may be inaccurate or
	  variable. Preserve the upstream buffer duration if it is already valid.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10672>

2026-01-29 16:05:20 +0900  Seungha Yang <seungha@centricular.com>

	* gst/videoparsers/gsth264parse.c:
	  h264parse: Do not update valid DTS and duration
	  Update timestamp only if DTS or duration is invalid
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10672>

2026-01-13 10:57:14 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/closedcaption/gstcodecseiinserter.c:
	* gst/closedcaption/gstcodecseiinserter.h:
	* gst/closedcaption/gsth264seiinserter.c:
	* gst/closedcaption/gsth265seiinserter.c:
	  closedcaption: Simplify insert_sei virtual function signature
	  Change the insert_sei virtual function to take a single GPtrArray of
	  metas instead of separate arrays for each meta type. Subclasses now
	  determine meta types by checking meta->info->api, making the API more
	  extensible for future SEI types without signature changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10367>

2025-12-12 14:45:29 -0300  Thibault Saunier <tsaunier@igalia.com>

	* docs/plugins/gst_plugins_cache.json:
	* gst/closedcaption/gstclosedcaption.c:
	* gst/closedcaption/gstcodecccinserter.h:
	* gst/closedcaption/gstcodecseiinserter.c:
	* gst/closedcaption/gstcodecseiinserter.h:
	* gst/closedcaption/gsth264seiinserter.c:
	* gst/closedcaption/gsth264seiinserter.h:
	* gst/closedcaption/gsth265seiinserter.c:
	* gst/closedcaption/gsth265seiinserter.h:
	* gst/closedcaption/meson.build:
	  closedcaption: Rename CC inserter base class to SEI inserter
	  Rename internal types and files from *CCInserter to *SEIInserter
	  since these elements now handle more than just closed captions
	  (also unregistered SEI user data).
	  The element names remain unchanged.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10367>

2025-12-12 11:34:14 -0300  Thibault Saunier <tsaunier@igalia.com>

	* docs/plugins/gst_plugins_cache.json:
	* gst/closedcaption/gstclosedcaption.c:
	* gst/closedcaption/gstcodecccinserter.c:
	* gst/closedcaption/gstcodecccinserter.h:
	* gst/closedcaption/gsth264ccinserter.c:
	* gst/closedcaption/gsth264ccinserter.h:
	* gst/closedcaption/gsth265ccinserter.c:
	* gst/closedcaption/gsth265ccinserter.h:
	  closedcaption: Add h264seiinserter and h265seiinserter elements
	  Add new SEI inserter elements that support inserting both closed caption
	  and unregistered user data SEI messages into H.264/H.265 streams.
	  The base GstCodecCCInserter class is extended with:
	  - Support for GstVideoSEIUserDataUnregisteredMeta handling
	  - New `sei-types` flags property to select which SEI types to insert
	  - New `remove-sei-unregistered-meta` property
	  The existing h264ccinserter and h265ccinserter elements continue to work
	  as before (CC-only), while the new seiinserter variants default to
	  inserting all supported SEI types.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3059
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10367>

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

	* docs/plugins/gst_plugins_cache.json:
	* gst/frei0r/gstfrei0rsrc.c:
	  frei0r-src: adapt klass "Src" to "Source"
	  use recommended "Source" instead of "Src"
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

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

	* docs/plugins/gst_plugins_cache.json:
	* gst/rtp/gstrtpsrc.c:
	  rtpsrc: adapt klass "Src" to "Source"
	  use recommended "Source" instead of "Src"
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

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

	* docs/plugins/gst_plugins_cache.json:
	* ext/avtp/gstavtpsrc.c:
	  avtpsrc: adapt klass "Src" to "Source"
	  use recommended "Source" instead of "Src"
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

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

	* docs/plugins/gst_plugins_cache.json:
	* gst/unixfd/gstunixfdsrc.c:
	  unixfdsrc: adapt klass "Src" to "Source"
	  use recommended "Source" instead of "Src"
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

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

	* docs/plugins/gst_plugins_cache.json:
	* gst/debugutils/gstvideocodectestsink.c:
	  videocodectestsink: fix typo in klass
	  use "Video" instead of "video"
	  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/plugins/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>

	* ext/webp/gstwebpdec.c:
	* ext/webrtcdsp/gstwebrtcechoprobe.cpp:
	* gst/videoparsers/gstmpegvideoparse.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:02:19 +0100  Christian Gräfe <cgraefe83@gmail.com>

	* gst/debugutils/gstvideocodectestsink.c:
	* gst/rist/gstristrtpdeext.c:
	* gst/rist/gstristrtpext.c:
	* gst/rist/gstristsink.c:
	* gst/rist/gstristsrc.c:
	* gst/rist/gstroundrobin.c:
	* sys/ipcpipeline/gstipcslavepipeline.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:51:07 +0100  Christian Gräfe <cgraefe83@gmail.com>

	* ext/dtls/gstdtlsdec.c:
	* ext/dtls/gstdtlsenc.c:
	* ext/dtls/gstdtlssrtpdec.c:
	* ext/dtls/gstdtlssrtpdemux.c:
	* ext/dtls/gstdtlssrtpenc.c:
	  dtls: fix author name: add missing angle brackets
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

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

	* docs/plugins/gst_plugins_cache.json:
	* gst/fieldanalysis/gstfieldanalysis.c:
	  fieldanalysis: adapt klass to recommendation
	  - use recommended "Analyzer" instead of "Analysis"
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

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

	* docs/plugins/gst_plugins_cache.json:
	* gst/videofilters/gstzebrastripe.c:
	  zebrastripe: adapt klass to recommendation
	  - use "Video" as the element operates on base type video
	  - use recommendated "Analyzer" instead of "Analysis"
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

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

	* docs/plugins/gst_plugins_cache.json:
	  gst-plugins-bad: remove trailing spaces: update gst_plugins_cache.json
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

2026-01-04 14:31:05 +0100  Christian Gräfe <cgraefe83@gmail.com>

	* ext/smoothstreaming/gstsmoothstreaming-plugin.c:
	  smoothstreaming: remove trailing space from desc
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

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

	* ext/openni2/gstopenni2src.cpp:
	  openni2src: remove trailing space from desc
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

2026-01-04 14:15:07 +0100  Christian Gräfe <cgraefe83@gmail.com>

	* gst/siren/gstsirendec.c:
	* gst/siren/gstsirenenc.c:
	  siren: remove trailing space from klass
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10728>

2026-01-30 16:55:11 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/closedcaption/gstcea608mux.c:
	  cea608mux: fix overflow when calculating output PTS
	  In the presence of a 60000 / 1001 framerate, the previous method of calculation
	  would overflow after 10 hours.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10706>

2026-02-02 09:52:37 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/play/gstplay-signal-adapter.c:
	  play: Add new tracks-selected message as signal to the signal adapter
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10719>

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

	* sys/applemedia/vtdec.c:
	* sys/applemedia/vtdec.h:
	  vtdec: Using codec-utils to generate vpcC instead of local code
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10538>

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

	* gst/videoparsers/gstvp9parse.c:
	  vp9parse: Use codec-utils to inject vp9 level in source caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10538>

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

	* ext/avtp/gstavtpcrfbase.c:
	* tests/examples/key-handler.c:
	  all: GThreadFunc return type fixes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10682>

2026-01-30 16:09:30 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Fix race condition when negotiating during playback
	  Follow up to 376eee3bb1250cdf0f4aeab9f362c01f291dfd55 - this change
	  should have the same intended effect but removes a rare race condition.
	  After the above commit it became possible for the output loop to be
	  active in two threads at once and attempt to push frames from both,
	  possibly out of order. That's because both the thread that calls
	  set_format() and the normal output loop thread would eventually end up
	  calling drain_decoder(). When that happened, the srcpad task loop would
	  quit correctly, but the manual call to the output loop function in
	  drain_decoder() could get stuck due to the drain/flush flags being reset
	  from the other thread.
	  This change makes sure we never call the output loop from anywhere else
	  than the srcpad task. Instead of that, the output loop will not pause
	  while drain/flush is active as long as there are any frames in the
	  output queue. This makes sure that in drain_decoder(), when we request
	  the loop to pause, all frames will be out by the time that call returns.
	  At the same time, a pause requested from change_state() won't be
	  affected.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10679>

2026-01-30 16:08:41 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Add more debug logging
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10679>

2026-01-30 16:26:36 +0100  François Laignel <francois@centricular.com>

	* gst/audiobuffersplit/gstaudiobuffersplit.c:
	  audiobuffersplit: fix reverse playback
	  Problem found rendering an F32 stream.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10705>

2026-01-29 16:49:26 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Don't re-create session if only the framerate changed
	  Playing back some fMP4 files can trigger caps events at fragment
	  boundaries where only the framerate changes. We shouldn't re-create the
	  decoder session in this case, because the new fragment may still depend
	  on reference frames from the previous fragment. Re-creating the session
	  makes VT unable to decode a part of the new fragment, resulting in
	  missing frames for a while.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10686>

2026-01-07 13:25:13 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/play/gstplay-message-private.h:
	* gst-libs/gst/play/gstplay.c:
	* gst-libs/gst/play/gstplay.h:
	* tests/check/libs/play.c:
	  play: Add new tracks-selected message to notify about track selections having happened
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10509>

2026-01-23 13:13:08 +0100  Rinat Zeh <rinat.zeh@i-rz.de>

	* ext/mpeghdec/gstmpeghdec.c:
	  mpeghdec: memory leak fix in MPEG-H Audio decoder plugin
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10593>

2026-01-21 16:24:50 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/wayland/gstwlwindow.c:
	  wayland: Fix CLAMP operation of maxFALL and maxCLL
	  The CLAMP operation was simply called the wrong way, which resulted in returning
	  the original value without clipping. This fixes !9353.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10585>

2025-12-06 12:56:44 +0000  Philippe Normand <philn@igalia.com>

	* ext/webrtc/gstwebrtcbin.c:
	* ext/webrtc/gstwebrtcstats.c:
	* tests/check/elements/webrtcbin.c:
	  webrtc: Populate certificate stats
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10313>

2026-01-23 20:06:11 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audiobuffersplit/gstaudiobuffersplit.c:
	* gst/audiobuffersplit/gstaudiobuffersplit.h:
	  audiobuffersplit: Implement negative rates correctly
	  Change segments with negative rates to segments with positive rate and negated
	  applied rate, and accordingly adjust timestamps and reverse all samples in every
	  buffer before passing to the adapter.
	  This makes sure that chunking of output buffers is still done correctly while
	  keeping all samples in order. Previously each buffer would be output with
	  samples in positive order, but there would be discontinuities with jumps
	  backward at every input buffer.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10568>

2026-01-23 15:40:01 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audiobuffersplit/gstaudiobuffersplit.c:
	  audiobuffersplit: Convert gap events to silence buffers
	  Otherwise they would potentially pass ahead of previous buffers that are still
	  in the adapter, or otherwise cause inconsistent output.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10568>

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

	* gst/audiobuffersplit/gstaudiobuffersplit.c:
	  audiobuffersplit: Handle SEGMENT_DONE the same way as EOS
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10568>

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

	* gst/audiobuffersplit/gstaudiobuffersplit.c:
	  audiobuffersplit: Send any pending segment before EOS/SEGMENT_DONE
	  This is still not entirely correct but at least makes sure that a pending segment is sent downstream at all.
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6019
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10568>

2026-01-16 18:19:08 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audiobuffersplit/gstaudiobuffersplit.c:
	  audiobuffersplit: Log if an input buffer has the discont flag set or not
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10568>

2026-01-16 18:18:40 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audiobuffersplit/gstaudiobuffersplit.c:
	  audiobuffersplit: Don't use floating point divisions unnecessarily
	  Also rename variables for clarity.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10568>

2026-01-16 18:17:42 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audiobuffersplit/gstaudiobuffersplit.c:
	  audiobuffersplit: Use the output segment for output related calculations
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10568>

2026-01-16 18:17:00 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audiobuffersplit/gstaudiobuffersplit.c:
	  audiobuffersplit: Correctly calculate adapter start/end running time for negative rates
	  Running time still increases normally.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10568>

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

	* gst-libs/gst/vulkan/ios/gstvkwindow_ios.m:
	  vulkan/ios: Fix scaling and resizing with UIView
	  * layoutSubviews was misspelled, so it was never being called
	  * Vulkan wants the size in pixels, and the CGRect is in points, so it
	  must be scaled
	  * Update drawable size when the window object changes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10556>

2026-01-11 20:44:46 -0500  Daniel Morin <daniel.morin@collabora.com>

	* ext/analyticsoverlay/gstobjectdetectionoverlay.c:
	  objectdetectionoverlay: add support for rotated bounding boxes
	  - Use angle from GstAnalyticsODMtd
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10552>

2025-12-29 15:51:03 +0000  Philippe Normand <philn@igalia.com>

	* ext/webrtc/gstwebrtcbin.c:
	* ext/webrtc/gstwebrtcstats.c:
	* tests/check/elements/webrtcbin.c:
	  webrtcbin: Fill crypto-related informations in transport stats
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10472>

2025-12-29 15:50:25 +0000  Philippe Normand <philn@igalia.com>

	* docs/plugins/gst_plugins_cache.json:
	* ext/dtls/gstdtlsconnection.c:
	* ext/dtls/gstdtlsdec.c:
	* ext/dtls/gstdtlsenc.c:
	* ext/dtls/gstdtlssrtpdec.c:
	* ext/dtls/gstdtlssrtpenc.c:
	  dtls: Add version read-only properties
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10472>

2025-12-04 10:55:18 -0800  Deepa Guthyappa Madivalara <deepa.madivalara@oss.qualcomm.com>

	* sys/v4l2codecs/linux/videodev2.h:
	  v4l2: Add support for AV1 V4l2 decoder
	  Introduce support for new pixelformat V4L2_PIX_FMT_AV1
	  mapping to AV01.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9892>

2026-01-28 10:22:21 +0000  Philippe Normand <philn@igalia.com>

	* ext/webrtc/gstwebrtcbin.c:
	  webrtcbin: Check the presence of encoding-name fields in answer caps
	  The caps returned by `gst_sdp_media_get_caps_from_media()` can potentially be
	  incomplete if the input SDP has been altered by a third party, so in those cases
	  skip to the next payload when processing answer caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10639>

2026-01-28 13:31:14 +0000  freedesktop <andreas.campagna@ac-cloud.eu>

	* gst-libs/gst/play/gstplay.c:
	  gstplay: fix reference counting
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10647>

2026-01-28 11:51:07 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/tensordecoders/gstclassifiertensordecoder.c:
	  classifiertensordecoder: Fix uninitialized variable compiler warning
	  And also remove some dead code: self->class_quark is always set at this point.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4871
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10637>

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

	* gst-libs/gst/va/gstvadisplay.c:
	  vadisplay: Fix a couple of new const-ness warnings around strstr() usage
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4871
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10637>

2026-01-27 17:36:15 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Implement drain() to allow reverse playback
	  Outputs what it can output and then flushes the leftovers in case there was an error when
	  pushing frames downstream. Matches v4l2dec's behaviour.
	  Without this `gst_video_decoder_drain_out()` would do nothing and reverse playback
	  would just get stuck.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10613>

2026-01-27 17:22:47 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Make sure to reset last flow return when flushing
	  Otherwise if we hit e.g. an EOS before a flush, it could stick around
	  and cause any following frames to be ignored in handle_frame().
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10613>

2026-01-27 16:40:29 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Fix a very slight race in handle_frame() when flushing
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10613>

2026-01-21 11:12:52 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Always reset flushing flag in flush()
	  Previous version assumed that flush-stop would always be received after a flush() call, but the base video decoder class
	  will just simply use that function in reverse playback without sending any events, causing the flag to be stuck.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10613>

2026-01-22 16:32:27 +0900  Seungha Yang <seungha@centricular.com>

	* gst/codectimestamper/gstcodectimestamper.c:
	  codectimestamper: Fix latency query handling
	  Add missing max latency value update
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10588>

2026-01-20 14:25:52 +0100  François Laignel <francois@centricular.com>

	* gst/mxf/mxfdemux.c:
	  mxfdemux: always send a segment before sending eos or segment-done
	  When a seek was requested past the end of the stream an eos or segment-done
	  event was sent without the segment event.
	  The segment event is sent before the first buffer is pushed and it takes care
	  of adjusting the segment with regard to the max_temporal_offset
	  (see in `gst_mxf_demux_handle_generic_container_essence_element ()`). If no
	  buffer can be sent, the segment is not sent.
	  This commit makes sure a segment is sent before pushing any eos or
	  segment-done event.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10569>

2025-12-11 15:51:03 +0100  Edward Hervey <edward@centricular.com>

	* gst/mpegtsdemux/tsdemux.c:
	  tsdemux: Simplify initial packet handling
	  * If there's no payload, we don't care about it
	  * If we have a non-PUSI packet and we are empty, return early
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10560>

2025-11-14 16:04:04 +0100  Edward Hervey <edward@centricular.com>

	  tsdemux: Fix Continuity Counter handling
	  If a stream has a continuity counter issue we need to immediately:
	  * Drop all pending data, **NOT** flush it downstream (it's incomplete)
	  * Not use that packet, even if it's a PUSI.
	  This avoids two issues with PES:
	  * Processing: a PES Header .. which might come from a misordered packet,
	  introducing bogus timing observations.
	  * Sending: half-complete PES payload downstream when discontinuity happens,
	  which can confuse several bytestream-based codecs/parsers (which rely on a
	  bytecode sequence to detect boundaries, and not a specific payload size).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10560>

2025-11-14 15:15:53 +0100  Edward Hervey <edward@centricular.com>

	* gst/mpegtsdemux/mpegtspacketizer.c:
	  mpegtspacketizer: Handle clock change/resets without skew correction
	  While we don't want to calculate and apply a skew correction, we still need to
	  detect whether upstream clock changed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10559>

2026-01-13 16:01:28 +0100  François Laignel <francois@centricular.com>

	* gst/mxf/mxfdemux.c:
	  mxfdemux: fix gst_mxf_demux_pad_get_stream_time ()
	  `gst_mxf_demux_pad_get_stream_time ()` was only considering the `material_track`
	  edit rate while other time related functions such as
	  `gst_mxf_demux_pad_get_current_time ()` use the `material_track` edit rate when
	  summing the duration of all the previous essence track, then use current
	  essence track edit rate for the essence track position.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10550>

2026-01-14 14:06:04 +0100  Xabier Rodriguez Calvar <calvaris@igalia.com>

	* ext/webrtc/gstwebrtcbin.c:
	* ext/webrtc/transportstream.c:
	* gst-libs/gst/webrtc/nice/nicestream.c:
	  webrtc: sink floating refs of ICE transports
	  We should be returning full refs instead of floating refs when get them queried
	  from properties and we were not because references were not sunk after creation.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10532>

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

	* sys/aja/gstajasinkcombiner.cpp:
	  ajasink: Only allow 6 / 8 / 16 audio channels
	  Any other value is rejected by the SDK and driver, see implementation of
	  `CNTV2Card::SetNumberAudioChannels()`.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10521>

2026-01-05 19:15:10 +0900  Seungha Yang <seungha@centricular.com>

	* sys/nvcodec/gstcudamemorycopy.c:
	  cudaupload, cudadownload: Fix CUDA/GL interop copy path
	  Avoid requiring an element-owned GL context when copying between
	  CUDA and GL memory, since the GL context is already owned by
	  the GLMemory object
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10495>

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

	* ext/dash/meson.build:
	* ext/smoothstreaming/meson.build:
	* ext/ttml/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 ===

