Sync upstream GStreamer into ignis-main - #11
Conversation
| gst_validate_printf (NULL, | ||
| "%*s ... and %u more (set GST_VALIDATE_REPORTING_DETAILS=all to list them)\n", | ||
| 12, "", n_suppressed); | ||
|
|
There was a problem hiding this comment.
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.
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); |
There was a problem hiding this comment.
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.
Reviewed by Cursor Bugbot for commit 048051e. Configure here.
048051e to
a4fa6a2
Compare
- subgroup shader stage flags - conformance version - device/driver UUIDs - src/dst copy image laytous - depth/stencel resolve modes - subgroup features - etc Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11965>
GCC from Yocto for Beaglebone Black doesn't enable it, so it causes a build time error since !5075. All other versions that I know of (Godbolt, Alpine, Ubuntu) have Thumb mode enabled by default. Fixes #5164 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11879>
Signed-off-by: Arthur Chan <arthur.chan@adalogics.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11557>
When no instance is discovered, no elements should be registered as when using the elements, it will fail again to initialize the instance. To avoid a blocklisted plugin, it will return TRUE but do not register any elements on no instance case. Updating VK_ICD_FILENAMES will respawn the registration. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11789>
When gbm setup fails, it closes drm_fd and terminates, but a double closing issue was discovered. gst_object_unref(display) calls finalize, closing display->drm_fd (which has the same value as drm_fd), and then calls close(drm_fd) one more time. In a multithreaded environment, if another thread is reassigned the same file descriptor (fd) in the meantime, it results in a serious bug where the wrong fd is closed. Remove the duplicate close(drm_fd). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11977>
…rame There is no need to keep the LCEVC data from an old frame as the data is only useful for the frame it is associated with. This also fixes a memleak when running gst-discoverer-1.0. Fixes #5192 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11984>
To ease ranking and also help adding codec-specific behaviour, vtdec is now split in vtav1dec, vtav1dec_hw, vth264dec, vth264dec_hw, etc. The original monolithic vtdec and vtdec_hw have been kept (but are registered with rank none to avoid interference with autoplug). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11631>
Check registration, rank, and sink caps. With the amount of shared code in the element, it's worth verifying that we're not breaking individual elements. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11631>
This new memory feature is the first step to make it possible for Android video decoders to send AHardwareBuffers to upload elements for import into Vulkan or GL without forcing download to system memory. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11731>
Covers NDK dynamic symbols, vtable API, and JNI unsupported stubs. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11731>
amcviddec will use this memory to keep AImage lifetime tied to buffers exposed as memory:AHardwareBuffer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11731>
Use the new AImageReader codec API and associated AHardwareBuffer memory allocator. This mode supports direct control of internal AImage buffering through the ahardware-buffer-max-images property. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11731>
Add full-screen quad sampler utils for both mutable and immutable samplers, factor out the YCbCr-conversion handle free, and add a new GstVulkanImageMemory wrapped constructor allowing a custom VkImageCreateInfo. Also fix gstvkfullscreenquad.c's input image barrier. Inputs are bound as combined image samplers, so the destination access mask should be VK_ACCESS_SHADER_READ_BIT rather than VK_ACCESS_INPUT_ATTACHMENT_READ_BIT, which is for render-pass input attachments. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11731>
The AHardwareBuffer import consists of two paths: one for VkFormats we currently accept (only RGBA for now) and one for external formats. External formats are not interpretable directly and must instead be converted to RGBA using a YCbCr sampler. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11731>
AHARDWARE_BUFFER lets caps describe AHardwareBuffer-backed frames without pretending that the underlying storage is RGBA. The optional ahb-format field carries values taken directly from Android's AHARDWAREBUFFER_FORMAT constants in hardware_buffer.h. This is intended to be symmetric with DMA_DRM/drm-format. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11731>
…ype() functions G_GNUC_CONST must only be used for functions that don't modify global state. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12141>
…e() functions G_GNUC_CONST must only be used for functions that don't modify global state. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12141>
…t_type() functions G_GNUC_CONST must only be used for functions that don't modify global state. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12141>
… functions G_GNUC_CONST must only be used for functions that don't modify global state. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12141>
Store the property GParamSpecs in a static array and install them with g_object_class_install_properties(). This makes it possible to notify property changes with g_object_notify_by_pspec(), which is cheaper than the name-based g_object_notify(). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/119>
The "last-sample" property was readable but GstBaseSink never emitted a property notification when it changed, so a "notify::last-sample" listener would never be woken up. Callers that connect to the signal to wait for a sample (e.g. gst-validate's check-last-sample action) could then block forever: if they observe a transient NULL last-sample -- for instance after a flush during preroll clears it via gst_base_sink_set_last_buffer(NULL) -- the buffer that arrives next re-populates last-sample but never fires the notification they are waiting on. Emit the notification whenever the stored last buffer or buffer list actually changes. g_object_notify() may re-enter application code, so it is fired after dropping the OBJECT_LOCK to avoid lock-order issues, mirroring the existing "unref outside the lock" pattern in these helpers. As the notification is emitted for every buffer that updates the last sample it can be expensive, so it is guarded by a new enable-last-sample-notify property, disabled by default. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/119>
…ications fakevideosink and fakeaudiosink are bins wrapping a fakesink child whose properties are proxied onto them via gst_util_proxy_class_properties(). Property reads/writes were forwarded to the child, but its "notify::" signals were not, so a listener connected to e.g. "notify::last-sample" on the bin was never woken up when the child updated the property. This could hang consumers that wait for such a notification (e.g. gst-validate's check-last-sample action against a fakevideosink). Add gst_util_proxy_child_properties_notify() next to the property proxying helper and use it from both sinks: it connects a detailed "notify::<name>" on the child for each property the proxy mirrors and re-emits the proxy's own pspec, so the handler runs only for the relevant property. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/119>
…en shell path Add NULL check for gst_wl_display_get_output_by_name() and log a warning if output is not found. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12146>
…buffer Fix dma_mem leak on buffer too small path in gst_wl_video_buffer_pool_alloc_buffer() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12145>
Fix an assert when a continuity missmatch is detected for a stream for which its pad is not yet exposed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12158>
3fc1d79 added support for F32LE output but missed a spot where S16 was still hardcoded when reordering. Fix by passing the negotiated format Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12150>
vaQuerySurfaceStatus can return a not-ready surface status. Previously a single call returning these errors caused a hard failure, leading to dropped frames or loss of direct rendering paths. This patch introduces va_retry_query_surface_status(), a poll helper that retries up to 10 times (0.1ms sleep between attempts) when the driver returns a not-ready surfaced. Non-recoverable errors bail out immediately. It's used in va_get_derive_image(). Original-patch-by: oscar carter <oscar.carter@consult.red> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11695>
First the surface is queried to check if it's already on Ready state. If it's, the function bails immediately. The VA spec recommend to retry if vaSyncSurfaces returns VA_STATUS_ERROR_HW_BUSY, so this patch retries until 10 times, waiting 1ms per each try, if that error is returned. Original-patch-by: oscar carter <oscar.carter@consult.red> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11695>
We weren't disabling the registry correctly due to typos and missing env vars. This speeds up introspection builds considerably on Windows. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12153>
As some encoder can be slow better to avoid being sync Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12030>
The protocol is half undefined and yields protocols errors with all major compositors. Just do like other sinks would do and push the frame as progressive it they where not deinterlaced prior to the sink. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12159>
This prevents build failures when docs are disabled when the subproject docs generators try to load the variable from the main project. In this case, the plugins cache should still be buildable even though the docs themselves are not generated. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5152 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11894>
Map video/x-ffvhuff to FourCC FFVH through the existing VfW-compatibility path, the same way huffyuv maps to HFYU. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12168>
…ptor sets The previous implementation allowed allocating one descriptor set less than the maximum. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12169>
RTX packets with decreasing running times routinely come through send_rtp , causing miscalculation of elapsed. Fix by using current_time instead to calculate the bandwidth for RTX sources, and also guard against potential underflows in elapsed calculation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11779>
Remove unexpected debugging in _maybe_begin_setup_new_stack_span, logged as an error when GST_TRACERS=dots is set. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12140>
Updates the glimagesink test to iterate through the queryed buffers and select only the pool with GST_IS_GL_BUFFER_POOL. This fixes a broken assert that will blindly pick the pool at index 0 which might not be a glbufferpool. On Linux w/o NVIDIA GPUs, a second pool (udmabuf) might spawn in the upstream query, causing the problem. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12140>
…tion/sync-upstream-main
36c4354 to
c1cf807
Compare


This PR merges the latest upstream GStreamer main branch into ignis-main while preserving Ignis changes.
Note
High Risk
Very large upstream merge touching core GStreamer APIs, demuxers in fuzz builds, and CI behavior; regression risk is broad even though most changes are upstream maintenance.
Overview
This sync brings in a large upstream snapshot on ignis-main, centered on 1.29.2-era API/docs and CI/fuzzing work rather than a single feature.
OSS-Fuzz gains several new libfuzzer targets (caps/value parsing, audio/video converters, audio caps) with seeds and an updated discoverer corpus; the OSS-Fuzz Meson build now enables selected good and bad demux/parser plugins so fuzzing can exercise real container paths.
CI adds rules so the
gstreamer-securityproject skips Windows/macOS (and some Cerbero) jobs, andci/scripts/test.shomits--check-bugsfor that project. VISL MV-HEVC reference hashes are refreshed.Public API (via GIR bumps) includes structured tracing (
GST_TRACE_*, span formats), static plugin registry helpers (gst_plugin_set_static_features_flag,gst_plugin_get_registry), AHardwareBuffer allocator/caps support, CUDA aggregator/converter helpers,gst_base_parse_set_allow_duplicated_pts, optionalnotify::last-sampleon BaseSink,gst_egl_image_create, andgst_cpuid_supports_riscv_v.GstTracerRecordis deprecated in favor of the new trace APIs.Reviewed by Cursor Bugbot for commit c1cf807. Bugbot is set up for automated code reviews on this repo. Configure here.