gstreamer/subprojects/gst-plugins-base/gst-libs/gst
Sebastian Dröge fc026fcfbe glupload: Don't skip all other methods than the currently selected one when transforming caps
This leads to spurious negotiation failures because the configured method can
change over time and caps queries (and thus transform_caps) are happening
independently from configuring caps. Instead prefer the transformed caps of the
current method, but always also return the transformed caps for all other
methods. Previously all other methods would've only been used if the current
method returned empty caps. If a different method is needed later when
configuring the caps, it will be and was selected regardless.

Later during caps fixation, prefer the caps of the current method too for the
fixated caps if possible in any way.

This should preserve the desired behaviour of preferring the current method if
possible but to change to a different method if nothing else is possible, while
also returning consistent (and not too narrow) caps every time.

The way how the current method was checked was also racy as the current method
might change at any moment during caps query handling, and apart from
inconsistent results also a NULL pointer dereference was possible here. Use the
GST_OBJECT_LOCK to protect access to the current method like in other places.

This part of the code was introduced in f349cdccf5
and tried to be fixed multiple times over the years without addressing the root
cause of caps queries and caps configuration happening independently from each
other, e.g. in !2687 and !2699.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8431>
2025-02-14 18:44:34 +00:00
..
allocators docs: generate hotdoc configs for libraries with our helper script 2025-01-17 20:36:06 +01:00
app docs: generate hotdoc configs for libraries with our helper script 2025-01-17 20:36:06 +01:00
audio audioaggregator: fix chaining up GObject's constructed virtual method 2025-02-10 17:49:29 +00:00
fft gst-plugins-base: re-indent with GNU indent 2.2.12 2023-03-17 03:18:53 +00:00
gl glupload: Don't skip all other methods than the currently selected one when transforming caps 2025-02-14 18:44:34 +00:00
pbutils pbutils: add profile-tier-level functions for VVC/H.266 2025-02-10 09:20:22 +00:00
riff docs: generate hotdoc configs for libraries with our helper script 2025-01-17 20:36:06 +01:00
rtp docs: generate hotdoc configs for libraries with our helper script 2025-01-17 20:36:06 +01:00
rtsp docs: generate hotdoc configs for libraries with our helper script 2025-01-17 20:36:06 +01:00
sdp docs: generate hotdoc configs for libraries with our helper script 2025-01-17 20:36:06 +01:00
tag docs: generate hotdoc configs for libraries with our helper script 2025-01-17 20:36:06 +01:00
video video-overlay-composition: Fix meta scale transformation for xscale != yscale 2025-02-14 18:44:33 +00:00
glib-compat-private.h gst-plugins-base: use g_sort_array() instead of deprecated g_qsort_with_data() 2024-09-02 22:31:34 +00:00
meson.build sdp: Handle level-asymmetry-allowed for H264 streams 2021-12-12 10:59:00 -03:00