Commit graph

121899 commits

Author SHA1 Message Date
Ruben Gonzalez
7b98c739c8 vacompositor: Add missing GST_VIDEO_CROP_META_API_TYPE
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8537>
2025-03-10 16:39:00 +00:00
Carlo Caione
69c1746139 uvcgadget: Properly implement GET_INFO control responses
According to the UVC 1.5 specification, section 4.1.2, the GET_INFO request
must return a bitmap indicating supported operations for the control.
Value 0x00 indicates that neither GET nor SET operations are supported.

This patch fixes control handling in the UVC gadget implementation to properly
respond to GET_INFO requests with the correct bitmap, allowing host systems
to properly detect supported control operations (none in this case).

The pipeline I'm using to test this is:

  gst-launch-1.0 videotestsrc ! uvcsink v4l2sink::device=/dev/video0

This is the equivalent of [0] but the difference is that we are now returning
0x00 instead of 0x03.

Without this change the host in my case is unable to probe the UVC gadget at
all, automatically disconnecting the device after a few seconds.

Following is the log when the gadget is not working (without this fix):

  usb 1-1.2: new high-speed USB device number 73 using xhci_hcd
  usb 1-1.2: New USB device found, idVendor=0525, idProduct=a4a2, bcdDevice= 5.15
  usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
  usb 1-1.2: Product: UVC Gadget
  usb 1-1.2: Manufacturer: localhost.localdomain
  usb 1-1.2: SerialNumber: 0123456789
  usb 1-1.2: Found UVC 1.10 device UVC Gadget (0525:a4a2)
  usb 1-1.2: Failed to query (GET_INFO) UVC control 2 on unit 1: -110 (exp. 1).
  usb 1-1.2: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
  uvcvideo 1-1.2:1.1: Failed to query (129) UVC probe control : -71 (exp. 34).
  uvcvideo 1-1.2:1.1: Failed to initialize the device (-71).
  cdc_subset 1-1.2:1.0: probe with driver cdc_subset failed with error -22
  cdc_subset 1-1.2:1.1: probe with driver cdc_subset failed with error -22
  usb 1-1.2: USB disconnect, device number 73

With the fix the USB device is correctly probed:

  usb 1-1.2: new high-speed USB device number 88 using xhci_hcd
  usb 1-1.2: New USB device found, idVendor=0525, idProduct=a4a2, bcdDevice= 5.15
  usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
  usb 1-1.2: Product: UVC Gadget
  usb 1-1.2: Manufacturer: localhost.localdomain
  usb 1-1.2: SerialNumber: 0123456789
  usb 1-1.2: Found UVC 1.10 device UVC Gadget (0525:a4a2)

[0] camera/uvc-gadget@0df9d3ad

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8572>
2025-03-07 10:12:25 +01:00
Benjamin Gaignard
cb681d8d28 v4l2codecs: Fix caps leak after sorting caps
gst_v4l2_format_sort_caps() create a new caps which need to be
release to avoid leak.

Co-authored-by: Robert Mader <robert.mader@posteo.de>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8583>
2025-03-06 21:28:33 +00:00
Benjamin Gaignard
95a3c0123f v4l2codecs: Release sink allocator when deciding allocation
All decoders have the same design pattern in decide allocation
and forgot to release sink allocator before allocating a new one.
Fixing the memory leak by clearing sink allocator before creating
the new one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8583>
2025-03-06 21:28:33 +00:00
Benjamin Gaignard
0d1cc08176 v4l2codecs: allocator: Fix buffers leak when using remove buffers
When removing buffers from v4l2 queue do not forget to release
the memory on gstreamer side.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8583>
2025-03-06 21:28:33 +00:00
Hou Qi
ba6c86fc4d v4l2: object: Not consider GRAY as RGB
This is to fix colorimetry mismatch between v4l2object and video-info
when format is GRAY.

Fixes #4270

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8590>
2025-03-06 20:40:03 +00:00
Seungha Yang
dba3bdd0cf h264ccextractor,h265ccextractor: Do not resend caps per output buffer
Send caps event only when it's required

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4281
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8596>
2025-03-06 16:24:44 +00:00
Devon Sookhoo
2f2a6e76bc qtdemux: InterleaveType enum
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8578>
2025-03-06 14:40:45 +00:00
dukesook
ee9c8724c3 qtdemux: component to format lookup table
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8578>
2025-03-06 14:40:45 +00:00
Pablo García
af148bb746 curl: replace #if with #ifdef (part 2)
Continuation of 47d1262402c81a9054e618052deeff7414b4f75d, that is not enough.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8595>
2025-03-06 13:44:33 +00:00
Stéphane Cerveau
93364189d0 vulkan/operation: fix timeline semaphore extension detection
As for synchronization2, the timeline semaphore has been
been promoted in 1.2 and does not have to be enabled explicitely.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554>
2025-03-06 12:14:21 +00:00
Matthew Waters
b9bbcf9202 vulkan/operation: fix synchronization2 extension detection
The synchronization2 extension is a core part of Vulkan 1.3.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554>
2025-03-06 12:14:21 +00:00
Matthew Waters
20eb11e5c4 ci: update ABI for vulkan change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554>
2025-03-06 12:14:21 +00:00
Matthew Waters
e23bc6ed77 vulkan/device: only enable relevant extensions
Extensions can have a minimum set of dependencies (e.g. API version) and may
also be promoted to core in a later version.  Don't explicitly enable extensions
that fail to meet their requirements or that have been promoted to the core API.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554>
2025-03-06 12:14:21 +00:00
Matthew Waters
e7b8ac099f vulkan/operation: retrieve function pointers directly from the device
The instance API version supported may not be of the same version supported by
the device. It is possible that the function that is returned may be non-0
but not functional due to the requested API version of the instance limiting the
availability of calling the returned function.

Can be reproduced by running a pipeline with GST_VULKAN_INSTANCE_API_VERSION=1.1

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554>
2025-03-06 12:14:21 +00:00
Matthew Waters
7452589ff8 vulkan/instance: allow the requested api version to be larger than the supported
Since Vulkan 1.1, the requested API version is the maximum API version that the
application is expecting to use. It is also possible for individual devices
(backed by potentially different drivers) may support a higher or lower API
version than the instance.  Both cases (higher and lower) should be supported
and as such, it is not an error to request an API version that is larger than
the instance supported API version.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554>
2025-03-06 12:14:21 +00:00
Matthew Waters
156b05d52b vulkan: plugin: add debug for why an instance fails to open
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554>
2025-03-06 12:14:20 +00:00
Matthew Waters
4692a45dea vkformat: fix format_from_video_info_2 to actually runtime check versions and extensions
If the vulkan plugin was compiled against a newer version than the supported
vulkan runtime instance or device, then it was possible for format retrieval to
fail.  Failure was due to unconditionally using newer extensions and features
without runtime checking them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554>
2025-03-06 12:14:20 +00:00
Matthew Waters
51dda24a88 vulkan: fix device related API version checks
The API version exposed by a particular device can be completely different from
what is exported by the parent instance.  Since Vulkan 1.1 it is also possible
to use newer device API than supported by the instance API version (with the
appropriate version checks).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554>
2025-03-06 12:14:20 +00:00
Matthew Waters
72860a20bf vulkan/physicaldevice: add methods for retrieving and checking against an API version
Most version checks should actually be done against the device API version and
not the instance API version.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554>
2025-03-06 12:14:20 +00:00
Pablo García
3e8fbc1203 curl: replace #if with #ifdef
Using #if instead of #ifdef was causing some issues when cross-compiling, like:

        ../ext/curl/gstcurlsmtpsink.c:54:5: error: "HAVE_SYS_SOCKET_H" is not
        defined, evaluates to 0 [-Werror=undef]
        54 | #if HAVE_SYS_SOCKET_H

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8589>
2025-03-05 15:13:43 +01:00
Pablo García
4640650ff5 curl: remove unnecesary reference to unistd.h
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8589>
2025-03-05 15:13:35 +01:00
Christopher Degawa
6bdfaa4606 svtav1enc: update to use SVT-AV1 3.0.0 API changes
Signed-off-by: Christopher Degawa <ccom@randomderp.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8539>
2025-03-05 13:18:26 +00:00
Jakub Adam
1248e4c462 adaptivedemux2: wake waiting streams upon completed manifest downlaod
Fixes race when a live stream finishes playing all segments from a
dynamic manifest and waits for its update. If the manifest meanwhile
changes from dynamic to static and this update is received
asynchronously, periodic calls of gst_adaptive_demux_manifest_update_cb
will stop. As a result the blocked stream won't get notified about the
updated manifest and will remain stuck indefinitely.

Also removed the wake-up code from gst_adaptive_demux_manifest_update_cb
where it remained as a relic from previous implementation when manifest
updates were synchronous.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8587>
2025-03-05 11:37:26 +00:00
Branko Subasic
f37b820060 voamrwbenc: Do not install anything unless dependency found
If the dependency for the plugin is not found then nothing should be
installed, neither the element nor documentation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8586>
2025-03-05 10:48:40 +00:00
Carlos Bentzen
ee6618d9ba h266parse: clear cache values with memset
Fixes a stack overflow on Windows/MSVC.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8588>
2025-03-05 10:02:38 +00:00
Nirbheek Chauhan
e2e6daf362 meson: Replace disabler dependencies with not-found dependencies
If a plugin gets disabled due to a `disabler()` dependency, the plugin
docs build itself will get disabled because `all_plugins_paths` will
become a disabler.

This was actually happening with opencv on systems that don't have
opencv available, and could happen with libsoup too if the build files
change in the future.

Let's avoid wasting hours of debugging for people. A not-found
dependency has the same effect.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8582>
2025-03-04 17:38:30 +00:00
Stéphane Cerveau
a42bcf7865 tests: add dashsink unit test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7916>
2025-03-03 12:19:09 +01:00
Stéphane Cerveau
1492b282dc dashsink: use gst_dash_sink_reset
To be able to use the properties properly,
the element should be reset by gst_dash_sink_reset
during the state change from READY_PAUSED and PAUSED_READY.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7916>
2025-03-03 12:19:09 +01:00
Stéphane Cerveau
c9dd3fbc8f dashsink: send element message on event
On new mpd update and new segment written, send
an element message to signal the event.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7916>
2025-03-03 12:19:09 +01:00
Stéphane Cerveau
a7a3a80344 dashsink: cleanup the teardown process
The stream was keeping a reference to the sink, preventing
it to be removed properly by the pipleline bin.
Clean up and simplify the code to get the stream from the pad.
Add more mutex protection against add/remove requested pad.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7916>
2025-03-03 12:19:09 +01:00
Denis Yuji Shimizu
51a3ef55c9 analytics: objectdetectionoverlay: improve event handling
This change ensures that the `GST_EVENT_EOS`,
`GST_EVENT_FLUSH_START` and `GST_EVENT_FLUSH_STOP`
events are forwarded to the sink downstream.
The logging message for `GST_EVENT_FLUSH_START`
has also been fixed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8576>
2025-03-01 10:47:33 +00:00
Nicolas Dufresne
356c1ff8e3 validate: Do not use G_URI_FLAGS_NONE symbol from 2.66
The GStreamer project currently requires GLib 2.64,
so just avoid this new API for now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8577>
2025-03-01 00:03:55 +00:00
Dongyun Seo
c206ddd930 playbin3: fix unlocking twice
fix unlocking playbin3 lock twice.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8570>
2025-02-28 13:49:11 +00:00
Dongyun Seo
e778791b90 pitch: fix build error
fix build error due to sound integer sample caps

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8570>
2025-02-28 13:49:11 +00:00
Elliot Chen
4b44169f05 gstplay: support disabling the selected track at startup
In some cases, need to disable some type tracks at startup before
receiving the stream collection message. And fix printing error log
in this case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8568>
2025-02-28 18:10:18 +09:00
Robert Mader
970bfc335e waylandsink/demo: Use playbin3 instead of playbin
Video looping currently does not work reliably with the later
and playbin3 is generally considered the better choice.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8561>
2025-02-27 23:32:29 +00:00
Olivier Crête
0e9d6f7e42 avtpsrc: Use GSocket to have cancellable wait
Otherwise it would block forever when there is no sender.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8550>
2025-02-27 21:37:51 +00:00
Tim-Philipp Müller
3523ba76ae csharp: fix GstAudioRingBuffer structure size and field offset mismatches
.. which caused the gstreamer_sharp_abi unit test to fail.

GstAudioRingBuffer has segdone and segbase as struct fields and
a get/set API with the same name but different types. The fields
have been deprecated and are no longer used now, and they need to
be hidden and we also need to rename them so that the generator
does not mix types (the setter/getters use guint64 but the fields
have gint types, which caused some type confusion in the generator).

Co-authored by: Andoni Morales Alastruey <ylatuya@gmail.com>

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8541>
2025-02-27 17:38:57 +00:00
Tim-Philipp Müller
458494c8e5 csharp: gstreamer: update for 1.26 API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8541>
2025-02-27 15:03:00 +00:00
Tim-Philipp Müller
15323a65fb csharp: ges: update for 1.26 API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8541>
2025-02-27 15:02:32 +00:00
Thibault Saunier
4c051f25c8 dots-viewer: cargo: Mark as not being part of a workspace
Otherwise if GStreamer is checked out inside a directory that
has a `Cargo.toml` file, building fails with:

```
error: current package believes it's in a workspace when it's not:
current rust-project/gstreamer/subprojects/gst-devtools/dots-viewer/Cargo.toml
workspace rust-project/Cargo.toml

This may be fixable by adding `gstreamer/subprojects/gst-devtools/dots-viewer`
to the `workspace.members` array of the manifest located at: rust-project/Cargo.toml

Alternatively, to keep it out of the workspace, add the package to the `workspace.exclude`
array, or add an empty `[workspace]` table to the package's manifest.
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8562>
2025-02-26 16:20:25 +00:00
Jochen Henneberg
71d8618daf qtdemux: Ignore non-zero values for UV/XY in transformation matrix
But write an info message about that. The values have been ignored
before !8127 as well.

Fixes #4252

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8559>
2025-02-26 14:51:57 +00:00
L. E. Segovia
8ab2844443 android: Use the Ninja generator
An upcoming Cerbero change will one-ring all the builds.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8478>
2025-02-26 12:22:23 +00:00
L. E. Segovia
c963597525 cmake: Memoize include checks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8478>
2025-02-26 12:22:23 +00:00
Sebastian Dröge
593dc0356c Revert "glupload: Add formats supported by #GstGLMemory to raw caps when generating sink pad caps"
This reverts commit cf30e875de.

This broke caps negotiation on Wayland/EGL with:

  videotestsrc ! glupload ! glimagesinkelement

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8552>
2025-02-26 10:08:41 +00:00
Thibault Saunier
ff15682f0a docs: Add a way to specify extra_assets path for plugins doc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8545>
2025-02-25 20:06:12 +00:00
Roberto Viola
2e8b542145 dashsink: fix period duration in dynamic MPD
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8531>
2025-02-25 12:33:39 +00:00
Tim-Philipp Müller
1b01090e4a rtsp-server: media: fix locking in gst_rtsp_media_get_dscp_qos()
Fixes #4247

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8551>
2025-02-25 01:03:38 +00:00
Sebastian Dröge
1d91616b3c splitmuxsink: Also increment fragment IDs when no filename is configured on the sink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8544>
2025-02-24 23:11:52 +00:00