122597 Commits

Author SHA1 Message Date
James Cowgill
ea08b70946 v4l2codecs: Use prop_offset in gst_v4l2_decoder_install_properties
Install properties at the given offset as intended instead of at 0.

Currently there are no elements with any properties, so this has no
effect. This change is needed if any element adds properties in the
future.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9179>
2025-07-02 15:24:45 +00:00
Edward Hervey
efb22b550c mpegtsdemux: Add property to disable skew corrections
This is for cases where:
* We *do* want to refer to the PCR stream to figure out global positioning, gap
  detection, wrapover correction.
* But we do not want to apply any skew correction to the output

This is useful for cases where:
* the input stream has already been clock-corrected (for example with
mpegtslivesrc)
* or where the output doesn't require synchronization against a clock (ex: for
  storage)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9301>
2025-07-02 14:10:55 +00:00
Jordan Petridis
d4b7066060 ci: Run the jobs as an unprivileged non-root user
Docker/oci and thus gitlab-runner, default to a root
user inside the namespace, even if its an unprivileged
one.

This can cause issues and let permission bugs sneak in,
as we are functionally root when running the build.

Switch the build jobs to run with our new "containeruser"
so we avoid much of it.

Our user is still in the wheel/sudo group but that's fine
as long we don't elevate the privileges unintentionally.

Noticeably for the time being, we will need to chown the
CI_PROJECT_DIR checkout as the gitlab runner might try
to reuse pre-existing and cached volumes of the project
checkout.

Additionally we need to change the ccache path, so we
will avoid the existing cache owned by "root".

Close https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2433

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8763>
2025-07-02 12:18:01 +00:00
Jordan Petridis
fafd2bc844 ci: override python user-base location
We are currently running pip as root which will cause it
to install into /root/.local cause it wants to do a user install
Set the user-base in the gloabl config, /etc/pip.conf, so pip will
both install there and subsequently look there if we invoke it
from any other user.

This makes pip install ofc require elevated permissions, as it
will be writting into /usr/local from now on

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8763>
2025-07-02 12:18:01 +00:00
Jordan Petridis
59faed542e ci: Move subprojects cache into /var/cache
Functionally identical, but a better location to
place them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8763>
2025-07-02 12:18:00 +00:00
Jordan Petridis
936a3cefcd ci: Add a metadata file into the images we build
Create a file we can check at runtime, and identify if the
environment we run against is one of our CI build images.
Useful mostly for our internal scritps so we can  match against
metadata rather than heuristics, ex. if /subprojects exists

Conceptually similar to /.flatpak-info

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8763>
2025-07-02 12:17:59 +00:00
Daniel Morin
d5e9779e55 gstvalue: update gir file
- update gir file

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9220>
2025-07-02 06:47:00 +00:00
Daniel Morin
d760457bd7 gstcaps: add test for caps
- if a subset contain identical element in superset it is still a subset it they
  are note equal. e.g is_subset (<1, 1000>, <1, [1, 1000])

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9220>
2025-07-02 06:46:59 +00:00
Daniel Morin
71bd3cbcd6 gstvalue: increase test coverage for _is_subset()
- Identify _is_subset () general/specials cases.
- Add multiple test cases for general cases.
- Add multiple test cases for unfixed value.
- Add mutliple test cases for fixed array value.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9220>
2025-07-02 06:46:59 +00:00
Daniel Morin
93241e4203 gstvalue: generalize gst_value_is_subset()
- Add case where we have element in subset that are equal to element in
  superset. In this case subset is still a subset if at least one element is a
  subset of the corresponding element in superset.
- clarify gst_value_is_subset inline documentation
- Add helper VALUE_TYPE_SINGLETON (type) to identify GType that represent a
  value that is not a collection.
- Fixed issue in gst_value_is_subset_array_array (<1, 2, 3>, <0, 1, 4, 2, 3>)
  would have returned TRUE because because the alignment of the subset could be
  done multiple times. Now once alignment of set as been done once, everything
  else in the superset need to be a subset of corresponding element without
  interuption. is_subset (<1, 2, 3>, <0, 1, 2, 3>) => TRUE, but is_subset (<1,
  2, 3>, <0, 1, 4, 2, 3>) => FALSE.
- If both array are fixed value and we perform a is_subset on them, both value
  can't be equal to be considered subset. (For consistency with other fixed
  values)
- Define gst_value_subtract (singleton, array) and
  gst_value_subtract (array, singleton), to allow a gst_value_is_subset
  (singleton, array) and gst_value_is_subset (array, singleton). General
  case of gst_value_is_subset (v1, v2) use gst_value_subtract (v1, v2) and
  gst_value_subtract (v2, v1) to evaluate _is_subset(), therefore we need these
  for is_subset() operation that involve singleton and array.

  Note gst_value_subtract (array, array) is not implemented but this case is not
  require by gst_value_is_subset () and as it has a direct handling. Warned if
  the case is used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9220>
2025-07-02 06:46:59 +00:00
Mathieu Duponchelle
39a7e0066c aggregator: add sub_latency_min to pad queue size
It should be possible for a subclass to let data accumulate on any of its input
pads for as long as it has introduced latency.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9320>
2025-07-02 06:11:27 +00:00
Thibault Saunier
c604196306 gl: cocoa: Add navigation event support
Implement keyboard, mouse, and scroll wheel event handling for the
OpenGL Cocoa backend.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9276>
2025-07-02 01:31:16 +00:00
Enock Gomes Neto
cade54e2af qtdemux: Fix incorrect FourCC used when iterating over sbgp atoms
In qtdemux_parse_traf(), the loop over sbgp atoms used FOURCC_sgpd instead
of FOURCC_sbgp when retrieving the next sibling node. This caused the loop
to either terminate early or attempt to parse sgpd atoms as sbgp, leading
to incorrect or incomplete seig group associations.

This fix ensures that all sbgp atoms are properly parsed in sequence.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4511
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9318>
2025-07-01 12:40:33 -03:00
Sebastian Dröge
da2da7711d ci: Update to Rust 1.88 and cargo-c 0.10.14
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9310>
2025-06-30 22:56:04 +00:00
Nicolas Dufresne
b6b6bf9370 opengl: Rename to _private EGL and GLX context header
Both only contains private symbols, clarify this by using a very explicit
name.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9306>
2025-06-30 21:53:55 +00:00
Nicolas Dufresne
7f18dc5411 gl: upload: Fix direct dmabuf transform function
When doing direct dmabuf upload, we rely on the GL stack for doing the color
transformation. The caps we transform from GL to DMABuf are always with a format
of RGBA. Instead of listing all GstVideoFormat and translating them back into
DRM formats, simply list all supported DRM format for the context.

This enable rendering DRM formats that don't have an shader based emulation
implemented such as NV15.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9306>
2025-06-30 21:53:55 +00:00
Nicolas Dufresne
c475088501 gl: context_egl: Add a helper to list all supported fourcc/modifiers
This helper creates a GST_TYPE_LIST of all possible DRM formats that the context
can support. This will be needed to fix support for formats that aren't emulated
using GStreamer shaders.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9306>
2025-06-30 21:53:55 +00:00
Nicolas Dufresne
ef98722709 gl: context_egl: Show all possible translation to GstVideoFormat
The code would simply trace one random format using the DRM fourcc. Instead,
trace the result of translating the pair and skip if there is not match.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9306>
2025-06-30 21:53:55 +00:00
Nicolas Dufresne
475083200d gl: utils: Correct gst/dma caps transformation
The transformation was fuzzy, adding random modifiers to the list. Use the newly
introduce helpers from 1.26 to precisely convert GStreamer formats to a DRM
fourcc and modifier pair and vice-versa.

This fixes support for formats that have a GstVideoFormat value and requires a
modifier.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9306>
2025-06-30 21:53:55 +00:00
Nicolas Dufresne
5e2a4a6d13 v4l2codecs: h265dec: Fail when frame cropping is needed while using DMABuf
It is not possible to do frame cropping when DMABuf caps feature is negotiated.
The VideoInfo size is zero, resulting in empty destination buffers, and video
convert library may not understand what the format actually is.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9305>
2025-06-30 21:17:16 +00:00
Nicolas Dufresne
e7be87b3de v4l2codecs: h265dec: Avoid cropping for zero top/left alignments
If the conformance window does not requires cropping the top or left of the
window, we can use GstVideoMeta to crop in a zero-copy fashion. If a copy
is needed, the frame copy can also handle it, and is a lot faster.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9305>
2025-06-30 21:17:16 +00:00
Nicolas Dufresne
0fbd76dd50 v4l2codecs: dec: Remove has_videometa member
Now that the code is properly located, this member is not needed
anymore.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9305>
2025-06-30 21:17:16 +00:00
Nicolas Dufresne
c7b0b9a816 v4l2codecs: dec: Move copy_frames logic inside decide_allocation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9305>
2025-06-30 21:17:15 +00:00
Seungha Yang
de1166338c webrtcdsp: Respect disabled feature option
Don't try to build this plugin if it's explicitly disabled

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8424>
2025-06-30 17:18:18 +00:00
Vineet Suryan
13fc7ef932 onnx: Use system installed Eigen to avoid hash mismatch failure
Eigen’s download for the commit referenced by ONNX Runtime v1.16.3 was
updated upstream, so the SHA-256 embedded in ORT’s CMake scripts no
longer matches and the build aborts with a hash-mismatch error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9229>
2025-06-30 13:13:38 +00:00
Doug Nazar
55bd9434f3 ges: Fix using freed memory to print prop name
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
6be8b2974e avtp: Fix memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
3c69e6ddd2 srt: Fix warning about uninitialized memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
c37a694b1b vc1parser: Fix warning about printing uninitialized variables
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
27a55d9346 proxysrc: Fix order freeing pads
Free pads from bottom of parent tree first else with GST_DEBUG
enabled it would access freed memory printing object info.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
d7e90e5a15 avtpcvfpay: tests: Initialize codec memory
If GST_DEBUG was enabled we would print unintialized memory

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
7bf94c4c46 videodecoder: Print correct frame variable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
b490629528 rtph265pay: Fix valgrind warning about uninitialized usage
Skip NALs less than minimum size of 2.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
6ddb5b4ad9 selector: tests: Fix initialization of segment
If GST_DEBUG is enabled and it dumps the segment, valgrind will warn about
uninitialized memory.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
b06c9090a7 gstinfo: tests: Ensure that the target msg is one of the ones seen
If GST_DEBUG is enabled we will get multiple log messages. Signal
success if one of messages is correct.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
4c7b2fe4cc memory: tests: Fix test to ensure all logs are less severe than WARN
If GST_DEBUG is enabled the existing test will fail as it gets INFO
log messages.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
aa71fbd4ae transform: test: TestTransData is not an object
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Sebastian Dröge
8711294ea0 analytics: Fix docs of gst_tensor_check_type()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9311>
2025-06-30 11:13:24 +00:00
Robert Mader
7e2b383553 matroskademux: Send tags after seeking
Similar to what qtdemux does in `gst_qtdemux_stream_update_segment()`,
in which case we want to resend tags according to our position.
By setting the changed flag for all stream tags we ensure they will all
be (re-)send as we progrees.

This notably ensures that rotation tags are not lost when video players
finish playback and jump back to the beginning of a video.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8429>
2025-06-30 08:49:21 +00:00
Sebastian Dröge
bebec6d965 analytics: Fix transfer annotations of gst_tensor_check_type()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9293>
2025-06-30 08:00:17 +00:00
Sebastian Dröge
46df60ed1d Revert "streamsynchronizer: Consider streams having received stream-start as waiting"
This reverts commit a1a189c07cb66af06d7047c74f6421bd36e3d66c.

It breaks the uriplaylistbin tests and needs further investigation.

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4506

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9309>
2025-06-30 09:26:29 +03:00
Tim-Philipp Müller
b0d952ef53 contributing: add section about deletion of merged branches
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9292>
2025-06-28 11:21:44 +00:00
David Maseda Neira
188a9fa7a2 adaptivedemux2: Fixed reverse playback
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9298>
2025-06-27 12:21:51 +00:00
David Monge
d22be5d383 mpegtsmux: fix double free caused by shared PMT descriptor
The PMT descriptor was owned by the stream object but also added to
the descriptors array without copying, leading to a double free and
core dump during cleanup

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9285>
2025-06-27 09:55:33 +00:00
Thibault Saunier
51cbcfbc57 cuda: Lower debug log level on nvrtc compilation failure
We have a fallback to compile with cubin and that compilation failure
might very well not be fatal.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9232>
2025-06-27 09:10:25 +00:00
Matthew Waters
87666a2d3b rtph265pay: add profile-id, tier-flag, and level-id to output rtp caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9300>
2025-06-27 07:36:47 +00:00
David Maseda Neira
73d57329e8 gst-inspect-1.0: Added type info for caps fields
gst-inspect-1.0 now shows the expected GType for each field of the
capabilities on a pad.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9270>
2025-06-27 07:00:22 +00:00
He Junyan
eedd01ac3d h266parser: Fix overflow when parsing subpic_level_info
1. non_subpic_layers_fraction, ref_level_idc and ref_level_fraction_minus1
   fields should not have the GST_H266_MAX_SUBLAYERS limitation.
2. Should check max_sublayers_minus1, no more than GST_H266_MAX_SUBLAYERS-1

Fixes ZDI-CAN-27381, CVE-2025-6663

Closes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4503
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9294>
2025-06-26 19:45:05 +01:00
Johan Sternerup
af63e991ec hip: Add missing #ifdef
So that it compiles without gstreamer-gl.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9289>
2025-06-26 11:37:30 +00:00
Sebastian Dröge
d236538d28 gstutils: Mark times array as static to avoid symbol conflict with the POSIX function
It works fine but there can be linker warnings, e.g. with mold.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9288>
2025-06-26 09:22:14 +00:00