917 Commits

Author SHA1 Message Date
Nirbheek Chauhan
e8e12db5f4 debug: Category init should happen in class_init when possible
plugin_init() will not get called if element/feature registration
happens manually, such as when using linking only specific plugin
features with gstreamer-full. That is possible when plugins contain
static features.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9496>
2025-08-08 11:38:50 +05:30
Julian Bouzas
1b041d8114 lcevcdec: Set LCEVCdec min version to 4.0.0 and fix build
V-Nova's LCEVCdec SDK 4.0.0 was released with a small API change. This patch
fixes the 'lcevcdec' element so that it builds with the new version. For more
information see:

https://github.com/v-novaltd/LCEVCdec/blob/4.0.0/docs/v4_migration_guide.md

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9414>
2025-08-06 17:45:14 +00:00
Philippe Normand
ea69849cd8 webrtc: sdp: Validate ICE SDP attributes
According to https://datatracker.ietf.org/doc/html/rfc5245#section-15.4,
those attributes should contain only alpha-numerical (with / and + allowed),
should be less than 256 characters, the ufrag should be at least 4 characters
and the pwd should be at least 22 characters.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9485>
2025-08-04 10:22:24 +00:00
Philippe Normand
80e663d560 webrtc: sdp: Relax ice-ufrag and ice-pwd checks
According to RFC 8839 section 5.4, if two data streams have identical
"ice-ufrag"s, they MUST have identical "ice-pwd"s.

The previous code wasn't allowing different ice-ufrag values in bundled medias.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9485>
2025-08-04 10:22:24 +00:00
Philippe Normand
9e38ee7526 webrtc: stats: Set DTLS role and state on transport stats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9485>
2025-08-04 10:22:24 +00:00
Olivier Crête
0428b71c68 avtpbasepay: Add debug message for time handling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:07 +00:00
Olivier Crête
c76f65e0ee avtpbasepay: Make make constants more readable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:07 +00:00
Olivier Crête
a6a38dcab9 avtp: Use the DTS as the AVTP base time
Make it work a little more like RTP. Have the source interact with the
clock and set the capture time on each packet. Then the other elements
can use that to do adjustments. Since AVTP is always very low latency,
it can be assumed that the gPTP clock at the packet reception is very
close to the sending time, never more than 2 seconds off, so the
timestamps can be compared directly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:07 +00:00
Olivier Crête
134ff5b45f avtp: Use nicely abstracted process function in base depayloader class
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:07 +00:00
Olivier Crête
0398e376b0 avtp: Intercept changes in the latency
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:06 +00:00
Olivier Crête
cf039e49e8 avtpvfpaybase: Don't require a caps handling method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:06 +00:00
Olivier Crête
40828d890b onnx: Add Verisilicon provider
Add the option to use the VSI provider for the Verisilicon NPUs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9408>
2025-07-31 18:09:19 +00:00
Víctor Manuel Jáquez Leal
6cfc1d383c vulkanh264enc: calculate latency with corrected framerate
Fix for the h264encoder base class in the same spirit of !9437.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9465>
2025-07-30 15:37:21 +00:00
Nirbheek Chauhan
eef8ec6e47 meson: Pass python=false to libxml2
We don't need this in gstreamer anyway.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4510

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9438>
2025-07-30 00:21:18 +00:00
Olivier Crête
f69c8bf4aa onnx: Add debug message with tensor id
Also downgrade input dimensions as it's shown on
each buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9439>
2025-07-29 14:20:48 -04:00
Olivier Crête
edd46c51f1 ssdtensordecoder: Use tensor ids from the registry
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9439>
2025-07-29 14:20:14 -04:00
Julian Bouzas
b375b7d3e9 lcevcdecoder: Add lcevch265decodebin and lcevch266decodebin elements
Similar to lcevch264decodebin, these new elements are needed for LCEVC H265 and
H266 video streams to be decoded properly with autoplugging elements.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9427>
2025-07-28 23:13:05 +00:00
Olivier Crête
7456266117 objectdetectionoverlay: Print tracking id
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9440>
2025-07-25 17:09:16 +00:00
Seungha Yang
338d5501d0 nvdsdewarp: Disallow resizing in case of passthrough
It's not supported yet

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8558>
2025-07-23 12:37:43 +00:00
Seungha Yang
608e57e542 nvdsdewarp: Avoid synchronization if possible
If input/output memory objects have the same cuda stream,
don't need to synchronize stream

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8558>
2025-07-23 12:37:43 +00:00
Seungha Yang
6d2530fb37 nvdsdewarp: Cache texture object
... instead of creating texture for every frame

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8558>
2025-07-23 12:37:43 +00:00
Seungha Yang
f93e200bfe nvdsdewarp: Add support for output resizing
... and adding "add-borders" property

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8558>
2025-07-23 12:37:43 +00:00
Stéphane Cerveau
7320acdaca vkdownload: implement decide_allocation virtual method
In the case of caps change such as frame size, a new buffer pool should be
created according to this new caps via the decide_allocation() vmethod.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8931>
2025-07-23 09:45:20 +00:00
Olivier Crête
9fb3df1422 analyticsoverlay: Add expire-overlay property
If there has been no new data for this amount of time, just
expire the overlay and don't send one. Otherwise, it keeps sending
the old one for the following frames.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9409>
2025-07-22 23:31:23 +00:00
Olivier Crête
69e91b78a7 tflite: Add support for VSI delegate
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9410>
2025-07-21 17:40:04 -04:00
Philippe Normand
6db20592ef dtls: Use ECDSA private key for default certificate
ECDSA is widely used in browsers and SFUs, some servers such as the ones using
BouncyCastle only accept certificates signed with ECDSA.

Based on closed MR https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2458

Fixes #4516

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9323>
2025-07-18 00:57:40 +00:00
Stéphane Cerveau
d1022fb469 vkupload: fix the refactored frame copy
When refactoring the code in 743c425f64,
the wrong GstBuffer has been used to copy to,
leading to a failing frame copy.

The bug has been discovered running
elements_vkcolorconvert.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9373>
2025-07-17 15:30:25 +00:00
Doug Nazar
c00d77e6d7 avtp: crf: Setup socket during state change to ensure we handle failure
Previously the socket would be created in the thread, which take some
time to start. As the tests were so short they would usually pass as
they don't actually use the socket.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9364>
2025-07-10 15:50:30 +00:00
Nicolas Dufresne
c803ce7a9c waylandsink: Parse and set the HDR10 metadata
Basically whenever the compositor have support for it, and the caps includes it,
set the mastering display and light content level information.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9353>
2025-07-09 20:07:38 +00:00
Doug Nazar
24dcc0a009 openh264: Ensure src_pic is initialized before use
valgrind was showing reads of uninitialized memory and the
library examples all memset the structure before use.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9352>
2025-07-09 07:13:06 +00:00
Nicolas Dufresne
5ac6d2b635 gtkwaylandsink: Make the rotate property GST_PARAM_MUTABLE_PLAYING
This matches the change we made to waylandsink.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9283>
2025-07-07 21:11:44 +00:00
Michael Olbrich
5275bb0c20 gstwaylandsink: add some locking documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9283>
2025-07-07 21:11:44 +00:00
Michael Olbrich
0a524ca115 gstwaylandsink: add GST_PARAM_MUTABLE_PLAYING flag for more properties
The fullscreen state and rotate method can be changed while the element is
playing, so add the GST_PARAM_MUTABLE_PLAYING flag to those properties to
indicate this.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9283>
2025-07-07 21:11:44 +00:00
Michael Olbrich
96b800f82a waylandsink: make sure self->window is not NULL before using it
self->window is created with the first frame, so it is not available when
properties are set during construction of the element.
Skip calling gst_wl_window_ensure_fullscreen() in this case.

The window is already constructed with the current configured fullscreen state,
nothing else in needed here.

Without this, running e.g. 'gst-launch-1.0 -v videotestsrc ! waylandsink
fullscreen=true' will result in:

GStreamer-Wayland-CRITICAL **: 14:11:19.921: gst_wl_window_ensure_fullscreen: assertion 'self' failed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9283>
2025-07-07 21:11:43 +00:00
Olivier Crête
1413dc37eb webrtcbin: Add RTX/FEC for each relevant payload type
When sending an answer with multiple codecs, we need to add the RTX and FEC
payload for each codec

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9031>
2025-07-07 19:51:39 +00:00
Víctor Manuel Jáquez Leal
41ff02c349 vulkanh264enc: add Vulkan H264 encoder
Add an element to encode h264 content using the vulkan API.

Co-authored-by: Stéphane Cerveau <scerveau@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:32 +02:00
Víctor Manuel Jáquez Leal
d81726f8d2 vulkan: h264encoder: introduce base class
H.264 base class oriented for hardware accelerated encoders, such as Vulkan, VA
and others.

1. It can be parametrized for hardware limits, such as lists size, b-frames
   supports, etc.
2. It produces a GOP structure map [IDR, R/I/B, ...)
3. It proposes parameters set and other strucures such as bitrate limites.
   Subclases can modify those structures.
4. It calls the subclass encode virtual method implementation.

It doesn't handle rate control algorithms or other encoding quality mechanisms.

For a deeper introduction to the class there was a lighting talk in the GstConf
2024: <https://www.youtube.com/watch?v=-fQY54KHH38>

Co-authored-by: He Junyan <junyan.he@intel.com>
Co-authored-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Co-authored-by: Stéphane Cerveau <scerveau@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:32 +02: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
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
Michael Olbrich
31f3e73066 waylandsink: Add force-aspect-ratio property
Similar to and inspired by glimagesink, xvimagesink and others.

The waylandsink never transform the buffer in any way but delegates this to the
Wayland compositor with the Wayland buffer transform API.
Rotation and window size are already supported, so this just changes the video
surface geometry that is communicated to the Wayland compositor.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9210>
2025-06-25 18:38:54 +00:00
Jan Alexander Steffens (heftig)
9363054e63 srtsink: Fix header buffer filtering
Cleans up the code and fixes two issues:

- If there are no streamheaders in the caps but we have `HEADER`
  buffers, it would run `gst_buffer_list_foreach` with `self->headers`
  being `NULL`.
- The code forgot to unmap the buffer if it decided to ignore it.

Fixes: 0a562a92d7ee38d8919d1b802add84d3c93b59eb
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9284>
2025-06-25 15:44:54 +00:00
Doug Nazar
a8e3dc337b analyticsoverlay: Fix memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9266>
2025-06-23 12:29:06 +00:00
Doug Nazar
794cae4b03 dashsink: Fix memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9266>
2025-06-23 12:29:06 +00:00
Víctor Manuel Jáquez Leal
743c425f64 vulkanupload: refactor frame copy in a single function
Avoiding code duplication

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9222>
2025-06-20 11:08:17 +00:00
Víctor Manuel Jáquez Leal
bcf97b088f vulkanupload: use gst_video_frame_copy() for VulkanBuffer
There's no need of a custom copy.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9222>
2025-06-20 11:08:17 +00:00
Víctor Manuel Jáquez Leal
76f52e5f98 vkupload: use gst_buffer_find_memory() to select memory
We never implemented correctly the selection of memories in a buffer given the
plane.

This patch uses gst_buffer_find_memory() for that. The offset is checked via the
video meta either in the input and output buffers, or the default offset given
the format and size.

This patch also requests the video meta option for the output buffers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9219>
2025-06-18 09:06:55 +00:00
Matthew Waters
d59cc622f2 webrtcbin: disconnect signal ICE handlers on dispose
It is entirely possible that the in progress may still provide some state
updates until the ICE object is destroyed, these state updates should
not really be done when webrtcbin is in the process of destroying itself
and access freed data.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9216>
2025-06-18 00:41:38 +00:00
Xavier Claessens
961e7753b9 wraps: Add svtjpegxs from wrapdb
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9214>
2025-06-17 17:57:23 +00:00