=== release 1.29.1 ===

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

	* NEWS:
	* RELEASE:
	* gst-devtools.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-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-12 20:40:24 +0100  Vivienne Watermeier <vwatermeier@igalia.com>

	* docs/gst-validate-flow.md:
	* validate/gst/validate/flow/formatting.c:
	* validate/gst/validate/flow/formatting.h:
	* validate/gst/validate/flow/gstvalidateflow.c:
	  validateflow: add option to record buffer contents as text
	  'buffers-checksum' offers a 'raw-hex' option for recording buffer contents,
	  this adds a similar 'raw-text' one to more conveniently record
	  buffers containing text, e.g. subtitles.
	  (And adds a line of documentation for the previously unmentioned 'raw-hex'.)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11017>

2026-02-27 10:55:44 +0000  Thibault Saunier <tsaunier@igalia.com>

	* validate/gst/validate/media-descriptor-writer.c:
	  validate: media-descriptor-writer: sort tag fields alphabetically
	  Tag fields in .media_info files were serialized in insertion order,
	  which could vary between runs. Sort them alphabetically to produce
	  stable, diffable output.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10924>

2026-02-26 23:33:06 +0000  Thibault Saunier <tsaunier@igalia.com>

	* validate/gst/validate/gst-validate-internal.h:
	* validate/gst/validate/media-descriptor-writer.c:
	* validate/gst/validate/media-descriptor.c:
	  validate: media-descriptor-writer: strip stream IDs for portability
	  Stream IDs in .media_info files contain a SHA256 hash of the media URI
	  as prefix (e.g. "ab929aab.../001"), making them machine-specific and
	  causing meaningless diffs when regenerated on different systems.
	  Strip the SHA256 prefix at write time, storing only the portable suffix
	  ("/001", "/002") for multi-stream files, or an empty string for
	  single-stream files. The comparison code in stream_id_is_equal() is
	  updated to handle the new portable format while remaining
	  backwards-compatible with old full-hash IDs.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10924>

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

	* validate/launcher/apps/gstvalidate.py:
	  validate-launcher: Move .stream_info files from media submodule to main repo
	  Following the same pattern as .media_info files (d87c819ed93), move
	  .stream_info files into gst-integration-testsuites/media_info/ so they
	  are versioned in the main repo rather than the media submodule.
	  When media_info_dir is set, skip .stream_info files during the regular
	  media path walk and instead discover them from the media_info_dir.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10924>

2026-02-26 22:15:11 +0000  Thibault Saunier <tsaunier@igalia.com>

	* validate/gst/validate/gst-validate-internal.h:
	* validate/gst/validate/media-descriptor-writer.c:
	  validate: media-descriptor-writer: sort streams by stream number when serializing
	  Stream ordering in .media_info files depends on discovery/callback order,
	  which is not deterministic. Sort streams by their stream number from
	  GstDiscovererStreamInfo before serializing to ensure stable output
	  across runs.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10924>

2026-02-26 22:12:06 +0000  Thibault Saunier <tsaunier@igalia.com>

	* validate/gst/validate/media-descriptor-writer.c:
	  validate: media-descriptor-writer: store relative URIs in .media_info files
	  .media_info files previously stored absolute file:// URIs, making them
	  machine-specific and causing meaningless diffs when regenerated on
	  different systems. When writing to a file, compute the relative path
	  from the output file's directory to the media file and store that
	  instead. Non-file:// URIs (HTTP, DASH, etc.) are left unchanged. If
	  the relative path cannot be computed, the absolute URI is kept as a
	  fallback.
	  The Python parser already handles this gracefully — when a file:// URI
	  doesn't exist on disk, it reconstructs the path from the media file
	  location.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10924>

2026-02-26 20:16:33 +0000  Thibault Saunier <tsaunier@igalia.com>

	* validate/launcher/baseclasses.py:
	* validate/launcher/main.py:
	  ci: run media_check tests on a dedicated runner with diff on failure
	  Reserve the last CI parallel runner for media_check tests using a new
	  --dedicated-part option in gst-validate-launcher. On failure, regenerate
	  .media_info files and produce a downloadable diff artifact.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4936
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10924>

2026-02-26 10:12:19 -0300  Thibault Saunier <tsaunier@igalia.com>

	* validate/launcher/apps/gstvalidate.py:
	* validate/launcher/baseclasses.py:
	* validate/launcher/main.py:
	  validate-launcher: regenerate stream media info files when updating
	  When running with --update-media-info, stream info (.media_info) files
	  were silently skipped. Parse the existing XML to extract the stream URI
	  and frame-detection setting, then re-run the media check command to
	  regenerate the file.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10924>

2026-02-25 16:05:39 -0300  Thibault Saunier <tsaunier@igalia.com>

	* docs/gst-validate-launcher-writing-testsuites.md:
	* docs/gst-validate-launcher.md:
	* docs/sitemap.txt:
	  docs: gst-validate-launcher: split out testsuite writing into its own page
	  The launcher documentation was mixing usage instructions with testsuite
	  authoring details. Split the testsuite implementation example into a
	  dedicated page (gst-validate-launcher-writing-testsuites.md) so the
	  main page focuses on running tests and debugging.
	  Also added sections for listing tests and debugging options (gdb,
	  valgrind, verbose), and registered the new page in the hotdoc sitemap
	  as a child of the launcher page.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10924>

2025-12-18 13:54:30 +0100  Alicia Boya García <aboya@igalia.com>

	* validate/launcher/main.py:
	  gst-validate-launcher: Fix --help for Python 3.14
	  There are two regressions relating to --help in Python 3.14:
	  The existing code did not flush after printing the help to the temporary
	  file. In consequence, it wasn't guaranteed that the file had been fully
	  written (or at all) by the time less was spawned, and in Python 3.14
	  less showed an empty file.
	  Python 3.14's argparse added color formatting to the help. However, less
	  won't display color codes by default and will instead complain about
	  receiving a binary file. This patch passes -R to less to fix this.
	  This patch also makes the usage of the pager consistent with
	  gst-inspect-1.0.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10408>

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

	* docs/fakesrc.simple.validatetest:
	* docs/gst-validate-flow.md:
	* docs/gst-validate-test-file.md:
	* validate/gst/validate/flow/gstvalidateflow.c:
	* validate/tests/launcher_tests/appsink_forward.validatetest:
	* validate/tests/launcher_tests/simple_repeat.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-22 13:28:57 +0200  Sebastian Dröge <sebastian@centricular.com>

	* dots-viewer/Cargo.lock:
	  devtools: dots-viewer: Update Rust dependencies
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10867>

2026-02-18 20:41:10 +0000  Thibault Saunier <tsaunier@igalia.com>

	* validate/launcher/reporters.py:
	  validate: launcher: fix total time spent when re-running flaky tests
	  init_timer() was resetting _start_time unconditionally, so the recursive
	  _run_tests() call made for flaky test retries would overwrite the original
	  start time, causing "Total time spent" to only reflect the retry run duration.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10839>

2026-02-18 08:58:45 -0300  Thibault Saunier <tsaunier@igalia.com>

	* validate/launcher/apps/gstvalidate.py:
	  validate-launcher: don't generate tests for skipped media info files after updating them
	  When running with --update-media-info, .skipped media info files were
	  being updated correctly but then also passed to _add_media(), causing
	  tests to be generated for them. Skipped files should never produce tests.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10831>

2026-02-11 00:19:19 +0000  Thibault Saunier <tsaunier@igalia.com>

	* validate/launcher/testsuites/check.py:
	  validate: blacklist check_edit_in_frames_with_framerate_mismatch from valgrind
	  This test triggers massive external library leaks (PipeWire, ALSA, OpenAL,
	  Pango/Cairo, libxml2) during audio sink autodetection that are not caused
	  by GStreamer code. With 240+ valgrind errors from third-party libraries,
	  suppressing them individually is not practical.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10784>

2026-02-10 16:26:21 +0000  Thibault Saunier <tsaunier@igalia.com>

	* validate/data/gstvalidate.supp:
	  validate: suppress GLib GTask thread pool init leak
	  GLib's GTask type initialization creates a one-time thread pool
	  during GDBus startup that is never freed. This is a known GLib
	  behavior, not a GStreamer leak.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10784>

2026-02-06 21:42:19 +0000  Thibault Saunier <tsaunier@igalia.com>

	* validate/gst/validate/gst-validate-scenario.c:
	  validate: scenario: fix action type leak in _should_execute_action
	  GST_VALIDATE_ACTION_GET_TYPE() uses gst_validate_get_action_type()
	  which returns a transfer-full reference. The macro is used inline
	  to access the flags field, but the returned reference is never
	  released, leaking the action type's refcount each time it's called.
	  Use _find_action_type() directly instead, which returns a borrowed
	  reference that doesn't need to be freed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10784>

2026-02-11 15:08:46 +0000  Thibault Saunier <tsaunier@igalia.com>

	* docs/gst-validate-test-file.md:
	* validate/launcher/apps/gstvalidate.py:
	* validate/launcher/baseclasses.py:
	* validate/launcher/main.py:
	  validate: support .media_info files in the main repo
	  .media_info files often need to be updated atomically with code changes
	  (e.g. a parser fix that changes frame detection results), but updating
	  them in the media submodule requires a separate commit in a separate
	  repo.
	  Add a --media-info-dir option to gst-validate-launcher that specifies a
	  directory containing .media_info files that override the ones next to
	  media files. The directory structure mirrors media/defaults/.
	  The validate testsuite auto-detects media_info/ next to the testsuites
	  directory, so no CLI flag is needed when running from the monorepo.
	  Move all existing .media_info files from the media submodule into
	  subprojects/gst-integration-testsuites/media_info/ so they can be
	  updated in the same commit as the code they relate to.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10791>

2026-02-03 12:44:32 -0300  Thibault Saunier <tsaunier@igalia.com>

	* docs/gst-validate-flow.md:
	* docs/gst-validate-launcher.md:
	* docs/gst-validate-test-file.md:
	* validate/launcher/main.py:
	  integration-testsuites: rename medias/ to media/
	  "Media" is already the plural of "medium", so "medias" is a double
	  plural. Rename the submodule directory from medias/ to media/ and update
	  all references throughout the codebase.
	  The --media-paths argument is now the primary name for the launcher
	  option, with --medias-paths kept as a deprecated alias for backward
	  compatibility.
	  The gitlab repo has been renamed from gst-integration-testsuites to
	  gst-test-media to better reflect its contents (media files only, not
	  testsuites), though the URL path remains gst-integration-testsuites due
	  to gitlab limitations.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10537>

2026-02-02 17:00:33 -0300  Thibault Saunier <tsaunier@igalia.com>

	* docs/gst-validate-test-file.md:
	  validate: docs: document how to add tests and media files to gst-integration-testsuites
	  Add sections to the .validatetest file documentation explaining
	  where tests live, how test discovery works, how to set up
	  validateflow expectations, the steps to follow when adding a new
	  test, and how to add media files to the medias/ submodule.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10537>

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

	* docs/gst-validate-flow.md:
	* validate/gst/validate/flow/formatting.c:
	* validate/gst/validate/flow/formatting.h:
	* validate/gst/validate/flow/gstvalidateflow.c:
	  validateflow: Add support for GstVideoSEIUserDataUnregisteredMeta
	  Add formatting support for GstVideoSEIUserDataUnregisteredMeta in
	  validateflow's buffer output. The SEI metadata is formatted as:
	  GstVideoSEIUserDataUnregisteredMeta[uuid=..., size=..., data="..."]
	  A new `logged-unregistered-sei-uuids` config option allows whitelisting
	  specific SEI UUIDs to log. If not specified, no SEI metas are logged,
	  preserving backward compatibility with existing expectation files.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10367>

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

	* 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 ===

