122820 Commits

Author SHA1 Message Date
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
Víctor Manuel Jáquez Leal
829de89122 vkphysicaldevice: enable sampler ycbcr, sync2 and timeline semaphore features
For the features VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
VkPhysicalDeviceSynchronization2Features and
VkPhisicalDeviceTimelineSemaphoreFeatures

The Vulkan specification states:

  If the `VkPhysicalDeviceXXXFeatures` structure is included in the `pNext`
  chain of the `VkPhysicalDeviceFeatures2` structure passed to
  `vkGetPhysicalDeviceFeatures2`, it is filled in to indicate whether each
  corresponding feature is supported. If the application wishes to use a
  `VkDevice` with any features described by `VkPhysicalDeviceXXXFeatures`,
  it **must** add an instance of the structure, with the desired feature members
  set to `VK_TRUE`, to the `pNext` chain of `VkDeviceCreateInfo` when creating
  the `VkDevice`.

And that was missing in the code.

Strangely, that functionality doesn't have a Valid-Usage ID assigned, so it
isn't caught by the validation layer.

This patch adds the structures in the physical devices to get them and later set
them in the device creation.

In order to link these features, videomaintenance1, and others to come, without
knowing if Vulkan 1.3 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 these queried features.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9483>
2025-08-04 09:31:14 +00:00
Jan Schmidt
e653acc200 decodebin3: Don't error out for unknown streams in default selection
If there is only unknown stream-type streams in the current collection
don't post an error straight away. This fixes a problem with RTSP
cameras and legacy upstream collection building, if the first
stream that rtspsrc outputs is the ONVIF metadata track. That
happens often on bandwidth-constrained camera inputs, as the
video and audio will naturally take longer to arrive.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9433>
2025-08-04 06:14:00 +00:00
Nirbheek Chauhan
55f72b1840 gst-device-monitor: Add shell quoting for launch lines
Launch-lines will be pasted into a shell, and `gst_value_serialize()`
yields strings that will likely be interpreted by the shell. For
example:

`gst-launch-1.0 ... ! osxaudiosink unique-id="AppleUSBAudioEngine:BEHRINGER:UMC202HD\ 192k:12345678:1\,2"`

The shell will remove the double-quotes `"` but keep the `\ ` which
means the output of `gst_value_deserialize()` will not be the original
string, and the launch line will not work.

So let's use `gst_value_serialize()` only if the string is non-ASCII,
and if it's ASCII and needs quoting, we do some shell quoting.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9466>
2025-08-02 17:26:58 +05:30
Nirbheek Chauhan
5c14cb882e gst-device-monitor: Don't loop unnecessarily when printing properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9466>
2025-08-02 10:12:22 +00:00
Olivier Crête
4650a7a58f test glfilter: Make sure the meta are not copied twice
This only happens if there are no tags, so we use a custom meta to
check it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6212>
2025-08-01 16:30:01 -04:00
Olivier Crête
14493fa064 Revert "glcolorconvert: should copy metadatas from the incoming buffer"
This reverts commit 199b62570fd201fd67e41af1932d6ae19ead2b76.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6212>
2025-08-01 16:30:01 -04:00
Olivier Crête
c135020c5f random: Remove historical doc
This is about porting which happened over 20 years ago.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:20 +00:00
Olivier Crête
7ac6e8e1ec random: Remove historical LICENSE header
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:20 +00:00
Olivier Crête
0efbacf886 docs: Remove 0.11 plan
We're 10 years past.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:20 +00:00
Olivier Crête
f88e6781cd AUTHORS: Remove outdated files
They only contained historical contributors, the modern version is
to look at the git logs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:20 +00:00
Olivier Crête
668d54f8fb MAINTAINERS: Update to reflect current maintainership
Instead of listing everyone, just point to GitLab

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:20 +00:00
Olivier Crête
235258259d REQUIREMENTS: Remove outdated doc
They contained information which was completely outdated.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:19 +00:00
Víctor Manuel Jáquez Leal
f170eff6bb vaXXXenc: fix potential race condition
VA encoders, at reconfiguration, have to check if the rate-control was changed
by the user, but since user parameters setting are in another thread, the
comparison was racy.

This patch locks the object to compare the current rate-control with the one set
by the user.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9480>
2025-08-01 15:20:56 +00:00
Jonathan Lui
c81c19bfdc vaav1enc: Enable intrablock copy and palette mode
This allow screen content coding (SCC) optimization feature.

Co-authored-by: Victor Jaquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8560>
2025-08-01 13:42:37 +00:00
Seungha Yang
0c378091a0 d3d12screencapturedevice: Avoid false device removal on monitor reconfiguration
Post device-changed instead of device-removed/device-added when
only HMONITOR or display position changed without actual device change.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9472>
2025-08-01 12:51:46 +00:00
Olivier Crête
ec85036a1e analytics: Add unit test for copying GstAnalyticsRelationMeta
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9475>
2025-07-31 22:56:26 +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
Nicolas Dufresne
33d0170d6e docs: Update documentation cache for new RGB 10bit support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9460>
2025-07-31 21:34:35 +00:00
Nicolas Dufresne
6078cee500 opengl: Add opaque 10bit RGB support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9460>
2025-07-31 21:34:35 +00:00
Nicolas Dufresne
c5657fde44 waylandsink: Enable 10bit RGB for SHM buffer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9460>
2025-07-31 21:34:35 +00:00
Nicolas Dufresne
b634094928 video: Add more variants of 10bit RGB formats
Add support for RGB10A2/BGR10x2/RGB10x2.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9460>
2025-07-31 21:34:35 +00:00
Nicolas Dufresne
a4969e8c02 av1parse: Set MDI into the final caps
The MDI was being set in the original caps which is not even writable.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9474>
2025-07-31 20:54:02 +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
Marc-André Lureau
78f0f61523 meson: d3d12: Add support for MinGW DirectXMath package
This is a similar issue that was found for d3d11:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6495

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9464>
2025-07-31 15:09:34 +00:00
Seungha Yang
ffc3d16983 device-monitor: Use gst_print instead of g_print
Avoid broken stdout output on Windows. Same change was made for
gst-launch in commit 493a3261a9757b5ade7aec289eb07221966f9eed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9467>
2025-07-31 20:12:43 +09:00
Matthew Waters
9522551e1d gl/basesrc: add get_gl_context
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9455>
2025-07-31 02:24:46 +00:00
Matthew Waters
9dca1f4a6f gl/basesrc: support changing caps
Caps may change the framerate used and the frame counting approach for
timestamps, needs to account for this by taking a snapshot of the current frames
and running time to add to all subsequent produced frames.  Code is mostly taken
from videotestsrc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9455>
2025-07-31 02:24:46 +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
Amotz Terem
489e908a92 nvcodec: Add emit-frame-stats signal
Add emit-frame-stats property to optionally emit frame stats on each frame

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9429>
2025-07-30 14:13:46 +00:00
Hou Qi
7b61be6c43 v4l2videodec: Fix assertion failure when acquiring drm caps
This is to fix assertion failure "assertion 'drm_info->drm_fourcc != DRM_FORMAT_INVALID' failed"
when acquiring drm caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8533>
2025-07-30 17:32:24 +09:00
Jaslo Ziska
b58605ec0d gloverlay: Recompute geometry when caps change
Set geometry_changed when setting caps so that the geometry is
recomputed correctly with the new dimensions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9434>
2025-07-30 03:07:08 +00:00
Jaslo Ziska
3f99fb7f94 gloverlay: Load texture after stopping and starting again
Set location_has_changed when stopping so that the texture will be
loaded when starting again.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9434>
2025-07-30 03:07:08 +00:00
Nirbheek Chauhan
87ed0c0e33 windows: Disable all audio device providers except wasapi2
We have too many device providers outputting duplicate device entries,
and it's not clear to people what they should be using. Let's only
keep wasapi2 around since it is PRIMARY + 1.

After the device switching work done on WASAPI2, there is no reason to
use directsound anymore.

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9326

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9438>
2025-07-30 00:21:18 +00:00