Skip to content

Sync upstream GStreamer into ignis-main - #11

Open
github-actions[bot] wants to merge 493 commits into
ignis-mainfrom
automation/sync-upstream-main
Open

Sync upstream GStreamer into ignis-main#11
github-actions[bot] wants to merge 493 commits into
ignis-mainfrom
automation/sync-upstream-main

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown

This PR merges the latest upstream GStreamer main branch into ignis-main while preserving Ignis changes.


Note

Medium Risk
Large upstream merge touching core libraries, codec parsers, and CI; runtime risk is mostly from behavioral/API changes in parsers, tracing, and base classes rather than from the CI-only edits.

Overview
This sync brings in upstream 1.29.2-era changes reflected in generated GIRs, plus CI, fuzzing, and conformance test maintenance.

CI and validation: GitLab jobs skip Windows/macOS/Cerbero paths for the gstreamer-security project; valgrind rules use a shared *toplevel_and_ci_changes anchor; ABI-check images get a newer tag and leaner Meson args; ci/scripts/test.sh disables --check-bugs on that security fork.

Fuzzing: OSS-Fuzz build enables selected good/bad demux/parser plugins (was good/bad off); new libfuzzer targets cover audio/video converters, caps/value parsing, and discoverer corpus paths point at plugin test media instead of integration-testsuites only.

Conformance / docs: MV-HEVC Fluster reference hashes update for three streams; AGENTS.md drops the robot emoji fast-track note.

Public API surface (GIR): New Gst 1.30 tracing (GstTraceFormat, span/event macros, deprecated GstTracerRecord); plugin static-registry flags and gst_plugin_get_registry(); RISC-V vector CPU probe; GstAllocators AHardwareBuffer/IOSurface caps and peek helpers; GstBase duplicate-PTS allowance and last-sample notify property; GstCodecParsers H.265 levels 6.3–7.2 and H.274 digitally-signed-content SEI helpers; GES micro version bump; analytics segmentation mask docs clarified.

Reviewed by Cursor Bugbot for commit bf00a7f. Bugbot is set up for automated code reviews on this repo. Configure here.

gst_validate_printf (NULL,
"%*s ... and %u more (set GST_VALIDATE_REPORTING_DETAILS=all to list them)\n",
12, "", n_suppressed);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Validate synthesis omits first details

Medium Severity

In _do_report_synthesis, the first report in each issue group still gets level and “Detected on”, but gst_validate_report_print_details no longer runs for that entry. Critical and full-detail issues that only appear once (or sit at the list head) lose their Details block in synthesized output.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 048051e. Configure here.

g_free (ts_name);
g_free (full_dir);
} else {
GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (pipeline), details, dotname);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dot-dir uses wrong timestamp

Low Severity

The new dot-dir branch builds dot filenames from raw gst_util_get_timestamp(), while the default path uses GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS, which stamps elapsed time since GStreamer start. Mixed runs produce incomparable or misleading dot names for the same scenario action.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 048051e. Configure here.

Comment thread subprojects/gst-editing-services/plugins/nle/nlecomposition.c
@github-actions
github-actions Bot force-pushed the automation/sync-upstream-main branch 2 times, most recently from a4fa6a2 to ce339fa Compare July 6, 2026 07:28
sdroege and others added 27 commits July 8, 2026 14:33
The behaviour is different between aux-sender and post-aux-sender. There
is a conditional ref_sink if the element is floating in one but not the
other. As the element is afterwards added to a bin sink the element
before adding.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12066>
The videodscmeta and h274 are needed to access the DSC and h274 related public API externally. So including videodscmeta
will take care of that.

Also include video-prelude.h instead of videoutils.h in the videoh274.h because only GST_VIDEO_API is used and that is
actually provided by video-prelude. This also avoids any errors due to circular includes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12083>
Move the structure definition of ValidateFlowOverride to
"gstvalidateflow.h" so it can be accessed from outside "gstvalidateflow.c".

Note: "--color-moved" recommended
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9317>
These were designed as pure functions, but they are currently very coupled
to the state of ValidateFlowOverride. It makes no sense to keep increasing
the number of parameters of these functions. It's simpler to pass a
reference to ValidateFlowOverride instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9317>
These three functions are only used inside "formatting.c". They do not need
to be exposed in "formatting.h"

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9317>
This allows stricter validation for all GstMeta that implements the
serialize interface.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9317>
Implement gst_video_caption_meta_serialize() and
gst_video_caption_meta_deserialize() GstVideoCaptionMeta methods.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9317>
When an GstVulkanImageView is disposed and put back into the cache in
GstVulkanImage there was a subtle race-condition, if another thread is
requesting the same image view with `gst_vulkan_image_memory_find_view`.

In this case the view could have been handed back out when
`gst_vulkan_image_memory_release_view` acquires the lock.

This commit fixes that case by re-checking the image view refcount after the
lock is acquired. If the refcount is more than one it needs to stay in the
outstanding views list.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12065>
Add RVV intrinsics implementation for audio resampler inner_product
and interpolate functions for gint16, gint32, and gfloat formats.

- Add audio-resampler-rvv.h with RVV optimized functions (15 functions)
- Add RVV detection and runtime dispatch in audio-resampler.c
- Add HAVE_RISCV_RVV compile-time check in meson.build

Tested on SOPHGO SG2044 (rv64gcv) with GCC 15.1.0:
- elements_audioresample: 11/11 checks passed
- libs_audio: 32/32 checks passed
- elements_audioconvert: 18/18 checks passed
- elements_audiotestsrc: 2/2 checks passed

Depends on: gst_cpuid_supports_riscv_v() (MR !11768, merged)

Signed-off-by: Xiaofei Gong <gongxiaofei24@iscas.ac.cn>
Signed-off-by: YuanSheng <yuansheng@isrc.iscas.ac.cn>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11966>
Add an element query handler that continues to use the maximum value of
all streams, and then in the source pad query handler only return the
position/duration of the single stream.

Also see,
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11783#note_3535922

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11783>
memcmp() returns 0 on equality, not a non-zero value. The typefinder was
triggering on everything that is *not* an ipmovie file.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12089>
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/12092>
Add coding-raw and cap-compat GObject properties as legacy-decoder
compatibility knobs, guarded by GST_SVT_JPEG_XS_HAVE_COMPAT_KNOBS.

Both properties are flagged GST_PARAM_CONDITIONALLY_AVAILABLE since
they are only installed when the compat knobs are available, and
carry Since: 1.30 gtk-doc markers to satisfy hotdoc's
check-missing-since-markers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12087>
sdroege and others added 29 commits August 5, 2026 08:43
The implementation does not take ownership of latest_daily_jam,
and it is already annotated accordingly.

And add missing (allow-none) annotation to other methods for
consistency with gst_video_time_code_new()

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12248>
The first reported class is class 1, but that's at index 0 in the labels file.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12210>
Use the AImage crop rectangle to set the affine transformation meta
which is used by all GL elements to ensure that they only touch the
displayed dimensions inside the texture when converting, scaling,
cropping, etc.

This also ensures that the sink samples the texture correctly when
rendering, which fixes green/black borders.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12211>
The AHardwareBuffer width/height include padding when using hardware
decoders, so we need to get the display width/height somehow from the
AMC. AMediaFormat has the info, but the crop-* properties are not
always available. There are new properties:

* "crop" — which is a rectangle
* "display-width" / "display-height"

So let's look at those as well. On my Pixel 8a, only the "crop"
rectangle is available, so the initial src_caps had the wrong values
prior to this commit.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12211>
…nit_seeks

The test asserts, via validateflow on the nested composition's inner pads, that
only one initialization seek reaches the sources -- one flush-start/flush-stop
pair, buffers starting at the expected inpoint.

nlecomposition performs that init seek asynchronously from the composition task,
while the sources' streaming threads are already running. A source can push its
initial [0, none) segment before the seek's FLUSH_START reaches it (the segment
push happens outside the LIVE_LOCK since a3f8f03), so the leaked segment is
recorded on the inner pads and the flow no longer matches the expectation. This
event ordering is legal -- the segment is discarded by the following flush and
the composition output is unaffected -- so the inner-pad segment order is simply
not deterministic and asserting it is wrong.

Ignore segment events on these pads: the flush-start/flush-stop pair (the actual
"no unnecessary seek" invariant) and the buffers (correct inpoint/timing) are
still checked. Expectation files regenerated accordingly.

Example failed CI job:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/jobs/105336313

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12253>
…ions EOF

When the recorded flow diverges after the last line of the expectations
file, report_mismatch_diff() walked expected_lines[] beyond the strv NULL
terminator while printing the context around the mismatch: the context
window is computed from the mismatch line index, so with line_index past
EOF the loops start (or run) past the terminator, dereference a garbage
pointer and crash in the async report thread.

Bound both context loops by the actual number of expected lines. The
mismatch is then reported normally instead of crashing.

This is the intermittent teardown SIGSEGV of
ensure_no_unnecessary_stack_init_seeks: the scenario completes, and while
going to NULL an extra flush event can reach the monitored pads after the
last expected line, tripping the out-of-bounds diff.

Example failed CI job:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/jobs/106881397

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12253>
… allocators

This will better mirror gstahardwarebuffer.h, which does exactly the same for
AHardwareBuffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12202>
Makes it easier to use with language bindings that expose a closure for the
callback function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12202>
The blend weights and sample delta can each approach 65535, so their product
overflows the 32-bit intermediate.

Compute the product and shift in 64 bits.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12263>
@github-actions
github-actions Bot force-pushed the automation/sync-upstream-main branch from 58d0333 to bf00a7f Compare August 10, 2026 06:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.