4801 Commits

Author SHA1 Message Date
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
Víctor Manuel Jáquez Leal
c09cc64a5e vkencoder-private: free data on error
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:19 +02:00
Víctor Manuel Jáquez Leal
678affaa2f vkencoder-private: add gst_vulkan_encoder_rc_mode()
To get the updated rate control mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:19 +02:00
Víctor Manuel Jáquez Leal
0af329d505 vkencoder-private: fix array layer for layered DPB
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:19 +02:00
Víctor Manuel Jáquez Leal
88a302a3c9 vkencoder-private: free err when bailing
And log out the error message from the Vulkan call.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:15 +02:00
Víctor Manuel Jáquez Leal
7001d48483 vulkan: ycbcr conversion extension got promoted in 1.1.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 10:29:41 +02:00
Sebastian Dröge
7c1381cfd6 ssdobjectdetector: Use correct tensor data index for the scores
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9322>
2025-07-02 21:56:58 +00:00
Seungha Yang
7c4b87cc33 wasapi2: Fix various MinGW build warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9307>
2025-07-02 18:18:18 +00:00
Seungha Yang
df45c088ad waapi2: Remove unused WinRT deps and implementations
Removing unused WinRT API based implementations

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9307>
2025-07-02 18:18:18 +00:00
Seungha Yang
0b3108cb3c wasapi2: Port to IMMDevice based device selection
Because of a couple of issues reported related to WinRT device
enumeration, porting to IMMDevice device id based device selection.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4311
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3936
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9307>
2025-07-02 18:18:18 +00:00
Seungha Yang
ba41200c96 wasapi2: Implement IMMDeviceEnumerator based enumerator
... and merge wasapi2{capture,render}deviceprovider into single
wasapi2deviceprovider since we can enumerate input/output audio
devices at once using IMMDeviceEnumerator

This is a preparation for complete porting to Win32 API

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9307>
2025-07-02 18:18:18 +00:00
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
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
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
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
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
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
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
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
Seungha Yang
e3d0a8d83e d3d12screencapturesrc: Fix OS handle leaks/random crash in WGC mode
Multiple DispatcherQueues per thread seems to be causing OS handle leak
and random crashes were observed. Instead of creating
thread/DispatcherQueue per GstD3D12GraphicsCapture object,
reuse only single thread and DispatcherQueue

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4351
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9153>
2025-06-25 14:30:56 +00:00
Doug Nazar
c15a898742 vkvideoencodeh26x: ensure we call teardown() for each test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9062>
2025-06-25 10:43:51 +00:00
Seungha Yang
67031a508c hip: Add plugin docs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 01:17:27 +09:00
Seungha Yang
1d6ae8791d hip: Add hipcompositor element
Feature-wise it's the same as cudacompositor

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
2b0f4705a5 hip: Load memset symbols
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
be3d7b6f13 hipmemorycopy: Add support for GL interop
Enable memory copy between HIP and GL

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
baa9bc9d95 hip: Add GstHipGraphicsResource object
hipGraphicsResource_t wrapper object for graphics api interop

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
04fb36b2f9 hip: Load GL interop related symbols
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
ecaab82f11 hip: Pass GPU arch to kernel compile option args
Pass current GPU arch to compile option instead of relying on auto
detection

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
fc8f7c349b hip: Add support for NVIDIA kernel precompile
... with "hip-nvidia-precompile" and "hip-nvcc-arch" build options

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
eb925e4212 hip: Add support for AMD kerenl precompile
Adding "hip-amd-precompile" build option. If enabled, AMD kernels
will be precompiled at build time. Also "hip-hipcc-arch" build option
(corresponding to --offload-arch hipcc option) is added
so that user can specify target GPU arch instead of auto-detection by hipcc

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
d26755f4d4 hip: Add support for memory copy between GstCuda and GstHip
Handle CUDA <-> HIP memory copy in hipupload and hipdownload elements

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
7254e812ac hip: Add support for NVIDIA
Adding HIP <-> CUDA translation layer like the HIP SDK does
but uses dlopen() for CUDA as well

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
24b93f2c41 hip: Remove build-time SDK dependency
Use dlopen at runtime

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
0f9ce9de90 hip: Add AMD HIP plugin
Adding hipupload, hipdownload, and hipconvert family elements

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09: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
e8fda4b6b7 dashsink: test: Minor cleanups
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