122858 Commits

Author SHA1 Message Date
Jan Schmidt
cdf1338e6b hlsdemux2: Fix parsing of byterange and init map directives
Don't reuse the same offset and size variables when reading
the byterange out of a MAP directive, as it can overwrite
values from a pending BYTERANGE directive for the next
fragment URI.

Fixes problems where the EXT-X-MAP directive has been written
into the playlist between an EXT-X-BYTERANGE and the fragment
URI it applies to.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9533>
2025-08-12 02:47:46 +00:00
Elliot Chen
fd6168709c video: dma-drm: Add P016_LE format map
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9513>
2025-08-11 17:24:15 +00:00
Qian Hu (胡骞)
9943a6082c waylandsink: add some error handler for event dispatch
if wl client got last_error, wl_display_dispatch_queue_pending
will return -1, may lead to unhandled case, we should quit.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9511>
2025-08-11 16:39:19 +00:00
Seungha Yang
42758aac2c wasapi2: Tone down activation fail log
If there's no endpoint available, that failure is expected error

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9521>
2025-08-11 12:29:52 +00:00
Seungha Yang
e0146536ab wasapi2: Pass correct data flow value to GetDefaultAudioEndpoint()
Respect requested data flow value

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9521>
2025-08-11 12:29:51 +00:00
Sebastian Dröge
a052257c03 gstreamer: Make sure to zero-initialize the GValue before G_VALUE_COLLECT_INIT
G_VALUE_INIT does not zero-initialize the data member as automatic
zero-initialization only happens for non-union types. For union types the
initialized value is undefined.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9525>
2025-08-11 08:39:53 +00:00
Sebastian Dröge
9d6cd03221 ptp: Fix a new Rust 1.89 compiler warning on Windows
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9527>
2025-08-11 07:49:48 +00:00
Sebastian Dröge
57df39fb4c ci: Update to cargo-c 0.10.15
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9503>
2025-08-10 19:11:49 +00:00
Sebastian Dröge
78c2140db7 ci: Update to Rust 1.89
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9503>
2025-08-10 19:11:49 +00:00
Xavier Claessens
6a9da23bbf mpegtsmux: Caps event fails with stream type change error
If mpegtsmux receives the same caps again, it wrongly claims the stream
type changed:

  error: Stream type change from 06 to 8f not supported

This adds a unit test that demonstrate the issue in the very hacky way.
I have seen this happening with the below pipeline when upstream caps
changes. Since the caps filter fixates the caps received by opusenc and
mpegtsmux, the stream type cannot change.

  ...
  ! audioconvert
  ! audio/x-raw,format=S16LE,channels=2,rate=48000
  ! opusenc bitrate=128000
  ! mpegtsmux

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9430>
2025-08-10 19:31:52 +10:00
Jan Schmidt
80949e1ca6 mpegtsmux: Use 'internal' stream_type to detect codec changes
The TsMuxStream internal_stream_type field stores the original
'full' stream type (such as Opus), while the stream_type field
stores the value that will actually be written into the MPEG-TS
packets according to the codec mappings. When checking if
input caps are changing stream type, check the original type.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9430>
2025-08-09 11:42:29 +00:00
Seungha Yang
1cba38145f wasapi2: Fix default render device probing
Fixing typo

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9517>
2025-08-08 18:39:51 +00:00
Sebastian Dröge
99ad6972c2 gstreamer: Disable miniobject inline functions for gobject-introspection for non-subprojects too
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9518>
2025-08-08 14:52:44 +00:00
Víctor Manuel Jáquez Leal
a62fa5d66e vkphysicaldevice: detect and dump Vulkan 1.4 properties and features
In order to link videomaintenance1, and others to come, without knowing if
Vulkan 1.4 features are chained in the device properties structure, a static and
inlined function was added in gstvkphysicaldevice-private.h. It was added in a
header file to avoid compiler warnings if it's not used because of old Vulkan
headers.

Also the value dump videomaintenance1 was moved to another function to pack
there all the future features to query which aren't part of a Vulkan release
yet.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:25 +00:00
Víctor Manuel Jáquez Leal
c84982b5c9 vulkan: fine grained access to API
This patch is the payment to my technical debt.

The symbol GST_VULKAN_HAVE_VIDEO_EXTENSIONS is defined at compilation-time if
the user requests for the usage of the Vulkan Video extensions. And we used this
symbol for anything related with Vulkan Video. But this is not the smartest
approach.

The rule should be:

- If the code allocates Vulkan Video resources, use
  GST_VULKAN_HAVE_VIDEO_EXTENSIONS

- Otherwise, use the Vulkan's guard for the used API

In this way, API version bumps will be easier.

Also, this commit marks the end of GST_VULKAN_HAVE_VIDEO_EXTENSIONS guarded code
for readability.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:25 +00:00
Víctor Manuel Jáquez Leal
92e2c5b29d vkoperation: refactor for fine grained guards and clean ups
Added a static inlined function in gstvkphysicaldevice-private.h for looking up
a specific vulkan structure in a chain.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:25 +00:00
Víctor Manuel Jáquez Leal
1a7f0f1627 vkimagebufferpool: refactor common code
Both gst_vulkan_image_buffer_pool_set_config() and
gst_vulkan_image_buffer_pool_alloc() functions share the same code to create
Vulkan images for different purposes.

This patch refactor them in a new helper function that creates the images and
stores them in a buffer if it's passed as output parameters, such as the
offsets.

This patch also adds specifics guards for Vulkan's symbols for better grained
API usage, but also for prepare_buffer() the guard is set where the symbol is
used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:25 +00:00
Víctor Manuel Jáquez Leal
f3f319a630 vkdevice: fine grained vulkan video extensions detection
The Vulkan Video extensions can be available, according to the specification,
since Vulkan 1.1, but with other extensions dependencies. That's why this patch
adds a field in the extension structure, which represents the extension
dependency that the specified extension requires. And they are specified by
Vulkan Video extensions.

This allow to have a single function to check if the extension can be enabled
both by optional extensions and video extensions.

Regardless that video extension can be loaded since Vulkan 1.1, they are rather
loaded since Vulkan 1.3, when synchronization2 was promoted, so it isn't
checked as video_queue dependency.

Finally, this patch checks for each guard symbol.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:24 +00:00
Víctor Manuel Jáquez Leal
80da022590 vulkan: private functions for physical device features
This is a continuation of !9483, but without back-porting.

Instead of checking the driver's API version to figure out if a physical device
feature is available and enabled, or even more, instead of checking for enabled
extensions in the driver, this patch adds private functions in the physical
driver to get the availability and enabling of features such as sampler ycbrc
conversion, synchronization2, timeline semaphore and video maintenance1.

And these new functions are used internally in the GstVulkanOperation object,
and the private object GstVulkanDecoder.

This approach is computationally cheaper, simpler and precise.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:24 +00:00
Sebastian Dröge
8921c6504b ptp: Fix new compiler warning with Rust 1.89
This still compiles with Rust 1.48 and newer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9512>
2025-08-08 13:14:30 +03:00
Jan Alexander Steffens (heftig)
5a6ceaf2f3 zbar: tests: Handle symbol-bytes as not null-terminated
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4592
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9510>
2025-08-08 07:28:26 +00:00
L. E. Segovia
265b488093 gobject-introspection: Fix introspection failing on Linux with subproject GLib
This is caused by RPATHs missing when glib, gobject, or gio are supplied by
uninstalled pkg-config modules (as opposed to directly in the command line).

Fixes #4561

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9509>
2025-08-08 07:01:49 +00:00
Nirbheek Chauhan
3f1e8835b8 docs: Initialize the debug category in class_init when possible
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9496>
2025-08-08 11:38:50 +05:30
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
Sebastian Dröge
fdeca0767d av1parser: Don't error out on "currently" undefined seq-level indices
They might very well be defined in the future and that shouldn't affect the
parsing in any way. Specifically, ffmpeg with `av1_nvenc` seems to create
`GST_AV1_SEQ_LEVEL_7_3` currently and parsing such streams would fail otherwise.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9502>
2025-08-07 12:22:22 +00:00
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
Sebastian Dröge
8ea031b400 uridecodebin3: Add missing locking and NULL checks when adding URIs to messages
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4559

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9500>
2025-08-06 12:51:54 +00:00
Xavier Claessens
24356c099a audioconvert: Fix regression when using a mix matrix
This fixes regression introduced by commit da3a1011. When a mix matrix
is set, we still want to set the default channel-mask on output caps.

Fixes: #4579

Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9487>
2025-08-06 10:25:51 +00:00
Nirbheek Chauhan
a9f803247f device-monitor: Also accept utf8 in launch lines
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9494>
2025-08-06 07:05:11 +00:00
Nirbheek Chauhan
fe2db9df3d device-monitor: Fix criticals when dumping non-string values
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9494>
2025-08-06 07:05:11 +00:00
Tim-Philipp Müller
fe760ca71d ci: add rtsp-server valgrind job
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7811>
2025-08-05 23:24:39 +00:00
Víctor Manuel Jáquez Leal
573f401e58 vkvideoutils-private: make it private
Since we moved the GstVulkan generic decoder and encoder to private objects in
the library, there was not need to keep vkvideoutils public.

This patch turns it private and reduces the public API surface.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9493>
2025-08-05 19:44:36 +00:00
Thibault Saunier
8162ba6338 ges: docs: fix enum value extraction for enums with gaps
Handle enums like GstBaseTextOverlayHAlign that have missing values
by dynamically calculating the actual range needed and skipping
invalid enum values instead of creating placeholder entries.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9495>
2025-08-05 14:58:30 -04:00
Seungha Yang
6af0ea60c1 wasapi2: Always fallback to MMDevice if default device is unavailable
Automatic stream routing supported virtual device may not be
available for some reason, but can try default MMdevice

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
2769f8ff44 wasapi2: Always probe default audio endpoint info
Regardless of GetActivateResult() return code, fill default
device information to device provider props

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
fedced4017 wasapi2: Handle GetActivateResult failure
Even if GetActivateResult() succeeded, activation result can fail.
Checks output HRESULT code as well

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
7651662fc9 wasapi2deviceprovider: Log device update details
... and add wasapi2deviceprovider debug category

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
7d6d49a888 wasapi2enumerator: Retry on IMMDevice::Activate failure
Since the sequence of IMMDeviceEnumerator::EnumAudioEndpoints()
followed by IMMDevice::Activate() is not atomic, Activate() may fail
if the enumerated device becomes invalidated before probing.
In such cases, retry device probing

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
df95f95206 wasapi2enumerator: Avoid racy device probing
IMMDeviceEnumerator may fire a series of callbacks even for a single
device plug/unplug event. To avoid redundant probing, start device
enumeration only after no further callbacks are received for 100ms.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
e515b1aee8 wasapi2enumerator: Log IMMNotificationClient callback details
... and add wasapi2enumerator debug category

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:28 +00:00
Thibault Saunier
3fe0127a64 scripts: git-hooks: ci: Add GES children properties documentation check
Add a pre-commit hook that automatically checks if GES children properties
documentation is up to date when GES source files are modified. The hook
runs the document-children-props.py script and warns if the generated
documentation files have changes that need to be committed.

This ensures that children properties documentation stays synchronized
with code changes and prevents outdated documentation from being merged.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5987>
2025-08-05 12:48:38 +00:00
Thibault Saunier
b27bcf1751 ges: docs: Fix enum introspection in document-children-props.py
The script was failing with newer pygobject versions because the
__enum_values__ attribute has been removed. Updated to use proper
introspection by:

- Getting enum type from property default value
- Using enum_class.values for the first enum value (index 0)
- Creating other enum values with enum_type(i) constructor
- Extracting name and nick from enum values properly

Also fixed ruff linting issues:
- Removed unused imports and variables
- Used specific exception types instead of bare except
- Added noqa comment for gi import ordering

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5987>
2025-08-05 12:48:38 +00:00
Thibault Saunier
e8cb82137c ges: Update children properties documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5987>
2025-08-05 12:48:38 +00:00
Thibault Saunier
84580ebf08 ges: framepositioner: Make zorder controllable and expose it
And add a test for it

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5987>
2025-08-05 12:48:37 +00:00
Elliot Chen
a1faec5f47 glupload: check the return value when transforming caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9478>
2025-08-04 16:00:31 +00:00
Qian Hu (胡骞)
a626f74872 v4l2: fix memory leak for dyn resolution change
if resolution changed, old input state will not unref before
new state overwrite self->input_state

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9479>
2025-08-04 12:50:24 +00:00
Elliot Chen
a374bd51fb videopool: support parsing dma_drm caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9345>
2025-08-04 12:11:41 +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