Commit graph

121887 commits

Author SHA1 Message Date
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
Thibault Saunier
6d83673132 tracer: dots: Check that pipeline-snapshot::dots-viewer-ws-url exists
It is a very new property and the tracer should still be usable if that
property doesn't exist

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8547>
2025-02-24 20:04:49 +00:00
Jochen Henneberg
30a00b6a97 validate: Don't print to stdout on bail out
Otherwise, if the output is multiline like from expected/actual file
comparison mismatch, meson will parse the lines for TAP formatted
strings and report an error. In that case the tests is accidently
SKIPPED instead of FAIL.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8376>
2025-02-24 19:00:16 +00:00
Jochen Henneberg
8a5ca84612 validate: Get proper error message on diff error instead of assert
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8376>
2025-02-24 19:00:16 +00:00
Jochen Henneberg
61fc65475e validate: 'bat' is optional
If 'bat' is not installed G_IS_SUBPROCESS (subprocess) fails and the
error message is misleading.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8376>
2025-02-24 19:00:16 +00:00
Thibault Saunier
ed943b04c0 dots-viewer: cargo_wrapper: Force log file to be written in utf-8
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8242>
2025-02-24 18:10:50 +00:00
Qian Hu (胡骞)
a99694cca8 wayland: leverage unified object destruction for wl_callback
This patch refactors gst_wl_display_callback_destroy() to use the
recently introduced gst_wl_display_object_destroy() helper. Previously,
the function manually handled wl_callback destruction with explicit
lock/unlock calls and direct invocation of wl_callback_destroy().
Switching to gst_wl_display_object_destroy() unifies the destruction
process across similar objects, reducing code duplication and potential
errors.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8242>
2025-02-24 18:10:50 +00:00
Qian Hu (胡骞)
6d17596777 wayland: fix crash issue during stop flow
when received xdg config event fron wayland server,
gst_wl_display_thread_run will call handle_xdg_surface_configure
which protected by priv->sync_mutex.

and in handle_xdg_surface_configure, configure_mutex also is locked

but if waylandsink set state from paused to ready, that will dispose
wlwindow, which will try to clear configure_mutex, and try to destroy
xdg_surface,
that do not proteced by anything.

so, problem is:
1) if clear configure_mutex(with locked state), clear lock will abort
2) after xdg_surface destroy, handle_xdg_surface_config may still call
   ack_configure, that will lead wayland server go wrong

so, this patch updates gst_wl_window_finalize to use the new
destruction function for xdg_toplevel and xdg_surface, ensuring all
destruction operations are properly synchronized.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8242>
2025-02-24 18:10:50 +00:00
Qian Hu (胡骞)
308540c2fe wayland: add synchronized object destruction function
Introduces a new generic destruction function
gst_wl_display_object_destroy that ensures all
destruction operations are protected by
sync_mutex.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8242>
2025-02-24 18:10:50 +00:00
Thibault Saunier
722c088ab3 tests: dash: Test retry-backoff-time
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>
2025-02-24 16:57:23 +00:00
Thibault Saunier
bbf5b71622 tests: dash: Add a test to check that retries work
This tries that both `souphttpsrc` and `adaptivedemux2` behave as
expected when HTTP failures happen but "solve themselves".

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>
2025-02-24 16:57:23 +00:00
Thibault Saunier
8c16be5901 adaptivedemux: Add 'backoff' logic for HTTP request
So that the user can configure waits between retries

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>
2025-02-24 16:57:23 +00:00
Thibault Saunier
6d0c0d5d29 adaptivedemux2: Expose a max-retries property
So the user can configure what is the maximum number of time HTTP requests can
be performed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>
2025-02-24 16:57:23 +00:00