=== release 1.28.6 ===

2026-08-05 12:59:39 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst-libav.doap:
	* meson.build:
	  Release 1.28.6

2026-07-09 17:09:56 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/libav/gstavdemux.c:
	  avdemux: Use a dynamic-sized array for the AVStreams
	  More than 20 streams are not impossible.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5195
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12238>

2026-08-04 12:09:11 -0500  Reilly Brogan <reilly@reillybrogan.com>

	* ext/libav/gstavviddec.c:
	* ext/libav/gstavvidenc.c:
	  gst-libav: Fix build failure with FFmpeg 9.0
	  Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5251
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12221>

2026-07-09 17:23:12 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/libav/gstavcodecmap.c:
	  avcodecmap: Initialize audio channel positions in all code branches
	  They were left uninitialized and used uninitialized in the mono case.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12099>

2026-07-09 17:15:52 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/libav/gstavdemux.c:
	  avdemux: Close demuxer on pad deactivation instead of state change
	  Doing it during the state change will leak the demuxer in pull mode because
	  seekable is reset to FALSE on pad deactivation and then the wrong freeing
	  function is called.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12099>

2026-07-08 23:48:39 +0200  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.28.5

=== release 1.28.5 ===

2026-07-08 23:42:39 +0200  Tim-Philipp Müller <tim@centricular.com>

	* gst-libav.doap:
	* meson.build:
	  Release 1.28.5

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

	* meson.build:
	  Back to development after 1.28.4

=== release 1.28.4 ===

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

	* gst-libav.doap:
	* meson.build:
	  Release 1.28.4

2026-06-08 10:51:39 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/libav/gstavdemux.c:
	  avdemux: Always free AVIOContext and open failure and don't dereference NULL AVFormatContext
	  Based on a patch by Ramesh Adhikari, who also reported this.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5102
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11823>

2026-06-08 10:32:58 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/libav/gstavprotocol.c:
	* ext/libav/gstavprotocol.h:
	  avprotocol: Don't free GstFFMpegPipe when closing the AVIOContext
	  It's owned by the element. Document this and also mark the parameter to the
	  constructor as `const` to make this clearer.
	  Based on a patch by Ramesh Adhikari, who also reported this issue.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5101
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11820>

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

	* meson.build:
	  Back to development after 1.28.3

=== release 1.28.3 ===

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

	* gst-libav.doap:
	* meson.build:
	  Release 1.28.3

2026-04-07 13:09:24 +0100  Nirbheek Chauhan <nirbheek@centricular.com>

	* meson.build:
	  meson: Require C std gnu11 or c11
	  When using gcc or clang, gnu11 will be used, and when using MSVC c11
	  will be used which will pass /std:c11. This provides us with the
	  `restrict` keyword on all supported platforms.
	  We can do this now because we require Visual Studio 2019.
	  This feature was added in Meson 1.3
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11563>

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

	* meson.build:
	  Back to development after 1.28.2

=== release 1.28.2 ===

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

	* gst-libav.doap:
	* meson.build:
	  Release 1.28.2

2025-10-30 15:24:45 +0100  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* ext/libav/gstavviddec.c:
	  avviddec: Refcount codec frame associated with video frame
	  FFmpeg can call `get_buffer2` multiple times for the same codec frame.
	  Ensure we don't free the codec frame too soon.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11188>

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

	* meson.build:
	  Back to development after 1.28.1

=== release 1.28.1 ===

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

	* gst-libav.doap:
	* meson.build:
	  Release 1.28.1

2025-10-30 15:27:17 +0100  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* ext/libav/gstavviddec.c:
	* ext/libav/gstavviddec.h:
	  avviddec: Fix handling of mixed interlaced content
	  The decoder would rapidly switch between progressive and interleaved
	  output when fed with PAFF / Telecine input.
	  If field order changes, we see a progressive frame after an interleaved
	  one, or we see a repeat field, switch to mixed interlace mode and stay
	  there.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10879>

2026-02-23 18:10:21 +0100  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* ext/libav/gstavviddec.c:
	  avviddec: Improve renegotiation debug message
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10879>

2026-02-23 18:08:17 +0100  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* ext/libav/gstavviddec.c:
	  avviddec: Simplify conditional code in context handling
	  Should not cause any functional change.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10879>

2023-04-02 16:53:45 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	* scripts/dist-common-files.py:
	  modules: dist common files from monorepo root
	  Less noise when making releases, and just need to maintain one copy.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10822>

2026-02-15 17:45:19 +0000  Tim-Philipp Müller <tim@centricular.com>

	* README.md:
	  modules: remove subproject README.md from git
	  Will be added to the tarballs based on the monorepo README on dist.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10822>

2026-02-15 17:20:59 +0000  Tim-Philipp Müller <tim@centricular.com>

	* RELEASE:
	  modules: remove RELEASE from git, will be generated from template on dist
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10822>

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

	* NEWS:
	  modules: Remove NEWS from git which is generated from full release notes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10822>

2025-07-08 16:56:00 +0200  Edward Hervey <edward@centricular.com>

	* ext/libav/gstav.c:
	  libav: Don't process lines that won't be outputted
	  They mostly all contain a trailing `\n`
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10815>

2025-11-14 10:50:51 +0100  Sven Püschel <s.pueschel@pengutronix.de>

	* ext/libav/gstavvidcmp.c:
	  gst-libav: avvidcmp: set colorimetry on AVFrame
	  Set the colorimetry on AVFrame based on the GstVideoFrame values.
	  This properly maps potential colorimetry information to libav.
	  Furthermore this fixes the avvideocompare element when used with
	  FFmpeg 8.0. When comparing video frames FFmpeg also uses the scale
	  filter. This has been reworked to use a new API [1], which checks
	  that the color primaries and transfer characteristics are not set
	  to RESERVED, which is the default 0 value. This causes the ff_test_fmt
	  function to fail which in turn causes the avvideocompare element to fail.
	  The implementation is copied from gst_ffmpeg_videoinfo_to_context, but
	  the color range has been adopted to also map the unknown range to
	  unspecified, similar to how gst_ffmpeg_videoinfo_to_context maps
	  AVCOL_RANGE_UNSPECIFIED to GST_VIDEO_COLOR_RANGE_UNKNOWN.
	  This was tested with FFmpeg 8.0 and the following sample pipeline:
	  gst-launch-1.0 videotestsrc num-buffers=100          \
	  ! video/x-raw,format=NV12                          \
	  ! videobalance brightness=0.005 hue=0.005          \
	  ! avvideocompare method=psnr stats-file=- name=cmp \
	  ! fakesink videotestsrc ! video/x-raw,format=NV12  \
	  ! cmp.
	  Without the patch it doesn't generate any stats output and when called
	  with GST_DEBUG=3 it shows the following errors for each frame:
	  Unsupported input (Operation not supported):
	  fmt:nv12 csp:gbr prim:reserved trc:reserved -> fmt:yuv420p csp:unknown prim:reserved trc:reserved
	  [1] https://github.com/FFmpeg/FFmpeg/commit/04ce01df0bb2d66e143bcfcea439afc2a1b8d96e
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10665>

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

	* ext/libav/gstavviddec.c:
	  avviddec: Forward any ready video frames on gap events
	  New frames might be ready to be output since the last input frame.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10750>

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

	* ext/libav/gstavauddec.c:
	  avauddec: Don't increment the AVCodecContext frame counter
	  This is incremented by ffmpeg whenever a new frame is output, there's no
	  point in us incrementing it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10750>

2026-02-03 15:08:25 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/libav/gstavviddec.c:
	  avviddec: Don't increment the AVCodecContext frame counter
	  This is incremented by ffmpeg whenever a new frame is output, there's no
	  point in us incrementing it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10750>

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

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

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

	* ext/libav/gstavvidcmp.c:
	  gst: fix author name: add missing closing angle bracket
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10729>

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

	* ext/libav/gstavviddec.c:
	  avviddec: Simplify picture_changed helper function
	  By extracting the various ffmpeg version checks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10696>

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

	* ext/libav/gstavviddec.c:
	  avviddec: Handle field/order changes in mixed interlace mode
	  The whole point of mixed interlace mode is that the actual nature of
	  the frames will be specified by buffer flags.
	  This does not require a reconfiguration
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10696>

2025-04-10 07:35:30 +0200  Robert Mader <robert.mader@collabora.com>

	* ext/libav/gstavviddec.c:
	  avviddec: Allow stride changes for some decoders
	  The ffmpeg documentation for get_buffer2() states:
	  "Some decoders do not support linesizes changing between frames."
	  For some well known decoders we know that they can.
	  Add a helper function listing those decoders/codecs and allow stride
	  changes for downstream pools in those cases.
	  This notably allows H26x to be used with with udmabuf / the
	  VideoDmabufPool independently of the video resolution, significantly
	  improving performance is various scenarios.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10663>

2026-01-27 17:10:54 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.28.0

=== release 1.28.0 ===

2026-01-27 17:02:33 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-libav.doap:
	* meson.build:
	  Release 1.28.0

2026-01-05 20:20:51 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.27.90

=== release 1.27.90 ===

2026-01-05 20:15:10 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-libav.doap:
	* meson.build:
	  Release 1.27.90

2025-12-30 17:53:22 -0500  Doug Nazar <nazard@nazar.ca>

	* tests/check/generic/libavcodec-locking.c:
	  tests: Fix several memory leaks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10476>

2025-12-23 19:17:33 +0100  Robert Mader <robert.mader@collabora.com>

	* ext/libav/gstavviddec.c:
	  avviddec: Set video alignment to internal pool
	  In line with what we already do when a downstream pool is used with
	  direct rendering.
	  This *may* fix glitches in some cases.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10437>

2025-12-09 19:13:20 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.27.50

=== release 1.27.50 ===

2025-12-09 19:08:48 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-libav.doap:
	* meson.build:
	  Release 1.27.50

2025-12-08 13:59:11 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/libav/gstavviddec.c:
	  avviddec: Try using all pools provided by the ALLOCATION query
	  This first one might fail but a later one might still work.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10306>

2025-12-05 19:58:47 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/libav/gstavviddec.c:
	  avviddec: Various fixes to allocation query handling
	  Among other things
	  * correctly aggregate video alignment from the query and the local requirements
	  from ffmpeg,
	  * make sure to use the correct allocation size after alignment
	  * recover correctly from failure to set pool configuration
	  * only set pool configuration once it is actually complete by not calling
	  into the base class' decide_allocation() implementation
	  * don't keep the pool active if direct rendering is not possible which
	  prevents usage of the pool with a different configuration
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4788
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10306>

2025-10-05 15:17:13 -0400  Doug Nazar <nazard@nazar.ca>

	* tests/check/generic/libavcodec-locking.c:
	  gst: tests: convert g_assert() to g_assert_*() and mark unused items
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9795>

2025-09-16 19:54:21 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* meson.build:
	  gst-libav: Suppress all warnings in the FFmpeg subproject
	  Needs meson-7.1.1 which contains
	  https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/merge_requests/162
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9695>

2025-09-07 20:39:44 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.27.2

=== release 1.27.2 ===

2025-09-07 20:34:55 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-libav.doap:
	* meson.build:
	  Release 1.27.2

2025-09-01 21:02:22 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* meson.build:
	  meson: Convert all remaining fallback: usages to [provide]
	  Only commonly-used plugin deps like pango, orc, openh264, libvpx,
	  libnice are enabled by default.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1788
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9626>

2025-07-31 17:50:33 -0400  Olivier Crête <olivier.crete@collabora.com>

	* AUTHORS:
	  AUTHORS: Remove outdated files
	  They only contained historical contributors, the modern version is
	  to look at the git logs.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>

2025-07-08 20:00:07 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.27.1

=== release 1.27.1 ===

2025-07-08 19:55:15 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-libav.doap:
	* meson.build:
	  Release 1.27.1

2025-05-30 19:17:38 -0400  Doug Nazar <nazard@nazar.ca>

	* meson.build:
	  meson: Disable flags not compatible with sanitizers if enabled
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>

2025-06-10 14:41:22 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* scripts/gen-changelog.py:
	  gstreamer-vaapi: remove subproject
	  It's almost superseded by va plugin in gst-plugins-bad.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9200>

2025-05-21 10:01:24 -0400  Doug Nazar <nazard@nazar.ca>

	* ext/libav/gstavcfg.c:
	  gstreamer: A few small memory cleanups
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9044>

2025-05-22 09:10:49 -0400  Doug Nazar <nazard@nazar.ca>

	* ext/libav/gstavauddec.c:
	* ext/libav/gstavaudenc.c:
	* ext/libav/gstavcodecmap.c:
	* ext/libav/gstavcodecmap.h:
	* ext/libav/gstavviddec.c:
	* ext/libav/gstavvidenc.c:
	  libav: Only allocate extradata while decoding
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9056>

2025-03-15 20:56:17 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.options:
	  meson: rename meson_options.txt to meson.options
	  Which is supported since Meson 1.1:
	  https://mesonbuild.com/Release-notes-for-1-1-0.html#support-for-reading-options-from-mesonoptions
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8651>

2025-03-10 13:14:07 -0300  Thibault Saunier <tsaunier@igalia.com>

	* ext/libav/gstavviddec.c:
	  video: Give better names to buffer pools
	  Making debugging simpler
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8617>

2025-03-12 13:59:45 +0100  Tim-Philipp Müller <tim@centricular.com>

	* RELEASE:
	* meson.build:
	  Back to development in main branch after 1.26.0
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8621>

=== release 1.26.0 ===

