Commit graph

729 commits

Author SHA1 Message Date
Sebastian Dröge
2f3deb4009 message: Remove nullable annotation from gst_message_writable_details()
This function can never return NULL as the details are created for the message
if there are none yet.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8235>
2025-01-03 13:21:28 +00:00
Sebastian Dröge
f39812dc8f pad: Reset not-linked last flow return on reconfigure events
The pad might actually be linked now and we'd only find out by actually pushing
a buffer downstream again.

The last flow return is used by GstFlowCombiner to detect if all pads are not
linked, and not resetting this when re-linking creates a race condition when
switching between pads where all pads are temporarily considered not linked.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8224>
2025-01-02 16:23:19 +00:00
Sebastian Dröge
d08fb9c241 baseparse: Add bitrate tags to empty taglists too
It's unclear why empty taglists should be handled in a special way. If the
subclass or upstream did not provide any tags at all then we can still provide
bitrate tags at least.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8157>
2024-12-21 13:07:44 +00:00
Thibault Saunier
2c9a642b66 meson: Give the same name for api_version in all modules
There were 2 version of it, apiversion and api_version, I chose the one
with most occurencies: `api_version`

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>
2024-12-20 20:19:28 +00:00
Sebastian Dröge
88a36b53c5 pad: Only remove TAG events on STREAM_START if the stream-id actually changes
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4097

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8135>
2024-12-17 12:05:54 +00:00
Sebastian Dröge
8e0f0c5ae3 info: Use an RW lock to protect the log functions and their list
Previously the code tried to be thread-safe by only locking when modifying the
list and leaking the old list, but this was not sufficient. When removing a log
function, its user_data would be freed but this log function and its user_data
might afterwards still be used during logging which then could lead to memory
corruption.

To avoid that, use an RW lock: get a write lock whenever modifying the list and
get a read lock whenever only using the list of log functions for logging.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7151>
2024-12-16 13:28:13 +00:00
Tim-Philipp Müller
7d793d8836 meson: unset GST_TRACERS for g-ir-scanner to avoid warnings
People might have GST_TRACERS=leaks set in their environment
by default, which will now trigger criticals during the build
when calling g-ir-scanner, because we unset GST_PLUGIN_SYSTEM_PATH
so that the scanner doesn't load any plugins.

Fixes #4093

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8121>
2024-12-10 23:07:06 +00:00
Thibault Saunier
b08b49d548 doc: Add some missing doc strings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086>
2024-12-10 09:35:36 +00:00
Thibault Saunier
10f31c1f10 tracers: leak: Fix some docstrings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086>
2024-12-10 09:35:36 +00:00
Thibault Saunier
9d9d5a6c5b doc: Add tracer objects information
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086>
2024-12-10 09:35:36 +00:00
Thibault Saunier
00eac85e58 tracers: latency: Port to using property based configuration
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086>
2024-12-10 09:35:36 +00:00
Thibault Saunier
1dbd8353cd gst-inspect: Document tracer properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086>
2024-12-10 09:35:36 +00:00
Thibault Saunier
7ab58c8586 tracers: rusage: Mark as set_use_structure_params
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086>
2024-12-10 09:35:35 +00:00
Thibault Saunier
619b1df389 gst-plugin-scanner: Do not create tracers when inspecting plugins
Ensuring that GST_TRACERS is not set in that process

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086>
2024-12-10 09:35:35 +00:00
Thibault Saunier
d929df61dd leaks: Port to using object property based parameters
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086>
2024-12-10 09:35:35 +00:00
Thibault Saunier
5e18499372 tracers: Simplify params handling using GstStructure and object properties
Instead of having each tracer implement its own parameter parsing,
centralize the handling in the tracer subsystem using GstStructure.
This simplifies tracer implementations and provides a consistent way
to handle properties.

It also allows for much better documentation by forcing tracer object
to expose properties

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086>
2024-12-10 09:35:35 +00:00
Seungha Yang
ebd4ec93b1 vecdeque: Fix documentation of push_tail_struct()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8111>
2024-12-09 14:00:33 +00:00
Qian Hu (胡骞)
66e21d1e70 gstvalue: fix crash in transform allocation params to string
when gst_buffer_pool_config_set_allocator (config, alloc, NULL);
gst_structure_to_string or GST_DEBUG (pool, "config %" GST_PTR_FORMAT,
config) will crash. this patch fix that

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7943>
2024-12-06 12:38:53 +00:00
Sebastian Dröge
f1cdc6f243 allocator: Avoid integer overflow when allocating sysmem
Thanks to Antonio Morales for finding and reporting the issue.

Fixes GHSL-2024-166
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3851

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8032>
2024-12-03 02:24:16 +00:00
Sebastian Dröge
1ee349f986 systemclock: Don't keep the clock entry locked while getting the time from the clock
gst_clock_get_time() will take the clock mutex, which would then result in a lock
order violation and possible deadlocks. If both mutexes are to be locked, the
clock must always be locked first.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7994>
2024-12-02 08:21:59 +00:00
Sebastian Dröge
ec698179a9 systemclock: Get rid of conditional unlocking of the clock entries
At every point it is known whether the entry needs to be unlocked or not.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7994>
2024-12-02 08:21:59 +00:00
Sebastian Dröge
4447114713 systemclock: Remove confusing conditional unlock
At this point the entry is always locked and needs to be unlocked.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7994>
2024-12-02 08:21:59 +00:00
Sebastian Dröge
37b9bfdd2e systemclock: Use a flag while waiting for the async thread to start
Otherwise there can be spurious wakeups.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7994>
2024-12-02 08:21:59 +00:00
wbartel
de41680f78 gstreamer: prefix debug dot node names to prevent splitting
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7979>
2024-11-28 15:38:56 +00:00
wbartel
6f20cd69fe tracers: unlock leaks tracer if already tracking
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7954>
2024-11-25 17:58:47 +00:00
He Junyan
df7a0d0fec utils: Add gst_util_floor_log2 helper function
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5003>
2024-11-24 16:49:24 +00:00
L. E. Segovia
51c6aa9e2f cmake: Add Android libvulkan to the ignored system libraries
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7861>
2024-11-20 16:45:44 +00:00
Qian Hu (胡骞)
6335c5d005 meta: add aggregation function for allocation meta api params
since tee do allocation query for each downstream element, and
get allocation query params from them. this function will aggregate
all params, and propose it for upstream element of tee

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7201>
2024-11-19 15:27:38 +00:00
Albert Sjolund
f068b3bf5c gstpad: specialize gst_pad_chain_list_default
In the case where the bufferlist is writable, send the
buffers immediately without adding to the refcount. This
allows writable buffers to maintain their writability, even
without implementing a chain_list function on the element.

Adds a test to verify this property, where a writable list
maintains refcount 1, but a readonly list increases it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7894>
2024-11-18 10:59:34 +00:00
Robert Rosengren
6fff1ef971 gstdeviceprovider: fix leaking hidden providers
Free list of hidden providers upon stop and dispose.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7912>
2024-11-18 09:20:34 +01:00
Matthew Waters
8e758c715b value: silence a maybe-unitialized warning
gstvalue.c:376:8: error: ‘s_val’ may be used uninitialized [-Werror=maybe-uninitialized]

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875>
2024-11-18 12:10:57 +11:00
Thibault Saunier
7010efc8ed meson: Bump minimum version to 1.3
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4025

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7899>
2024-11-16 03:02:27 +00:00
Stéphane Cerveau
a6f82ba590 utils: improve gst_util_ceil_log2
According to the following comparison of algorithms, the value
for 0 and 1 was giving an incorrect result.

https://gist.github.com/ceyusa/6061b33ac109a68bcd222f6919968c9a

More information here:
https://github.com/rofrol/codeforces/blob/master/ceil_log2.c

Use a different algorithm which offers better result and keep the
performance.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7429>
2024-11-15 16:52:29 +00:00
Sebastian Dröge
bc63d85f19 idstr: Fix docs of set_static_str_with_len()
The passed string must be NUL-terminated because otherwise a copy would be
necessary to make it NUL-terminated, which defeats the whole purpose of the
set_static() functions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7863>
2024-11-14 17:12:27 +00:00
Thibault Saunier
23ce0d2901 meson: gst: Make GST_FULL_STATIC_COMPILATION a static only arg
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7874>
2024-11-12 16:28:39 +00:00
Alicia Boya García
2080aff70c adapter: Improve documentation for gst_adapter_available()
When I first read the documentation of gst_adapter_available() and
gst_adapter_available_fast() I got quite confused as it seemed that
both performed the same purpose but one was slower than the other.

I shared it with other people and found they also arrived at the same
wrong conclusion.

Hopefully this patch will make the actual purpose clearer.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/-/issues/12

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7859>
2024-11-11 17:25:18 +00:00
Tim-Philipp Müller
566e377272 gst-launch-1.0: update man page a little
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7859>
2024-11-11 17:25:17 +00:00
Taruntej Kanakamalla
36d8243397 ptp: use ip_mreq instead of ip_mreqn for macOS
To join a multicast the macOS still uses the interface address
from the ip_mreq instead of the ip_mreqn unlike other Linux systems.

So add a new conditional block for macOS to use ip_mreq for IP_ADD_MEMBERSHIP
and ip_mreqn for IP_MULTICAST_IF

This is similar to the fix in the glib for multicast join/leave
operation on macOS
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4333

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7851>
2024-11-11 10:26:43 +00:00
Tim-Philipp Müller
5debf58615 gstreamer: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7819>
2024-11-03 17:45:28 +00:00
L. E. Segovia
410e77be6c cmake: Add Find Module to support Android and iOS consumers
This commit adds a Find Module implementing the necessary logic to link
against GStreamer, while implementing some extra bits to enhance the
compatibility.

The first addition is the `mobile` target, which implements the
monolithic `gstreamer_android` library, and which here gains
compatibility with Apple's operating systems.

The second addition is the handling of the basic GStreamer libraries as
`--whole-archive` when statically linked, which was ported from the
ndk-build project in Cerbero. This is not easy to do, as CMake suffers
from several issues that impede its proper usage of pkg-config:

- It cannot differentiate between system/compiler specific libraries
  e.g. `-lm`, `-ldl`, but especially `-framework Cocoa`.
- It does not support `--whole-archive` natively until 3.27
- It attempts to reorder flags blindly by separating them with spaces,
  thus requiring the use of `-Wl,` wrapping or (in the case of Apple
  frameworks) manual framework lookup

The third addition is the port of the Fontconfig and ca-certificates
bundling logic.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6881>
2024-11-01 10:44:43 +00:00
Thibault Saunier
cbf204e4ae multiqueue: Do not unref the query we get in pad->query
We do not own any ref to queries when running them.

If we end up processing the query from the streaming thread, it means that it was
a serialized query, and the query is being waited to be processed on the sinkpad
streaming thread, thread which owns the reference.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7767>
2024-10-31 11:04:00 +00:00
Mathieu Duponchelle
eb825574f4 aggregator: fix start time selection first with force-live
When force-live is true, we don't want to wait for a first buffer
to select a start time.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7752>
2024-10-29 08:52:40 +00:00
Thibault Saunier
ba94af0285 queue: Send the notify signals on queue level changes
This is documented as:

> you can query how many buffers are queued by reading the
> #gstqueue:current-level-buffers property. you can track changes
> by connecting to the notify::current-level-buffers signal (which
> like all signals will be emitted from the streaming thread). the same
> applies to the #gstqueue:current-level-time and
> #gstqueue:current-level-bytes properties.

... but was not implemented.

This also respects the `notify::silent` property for the notify signals
to be less intrusive.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7486>
2024-10-28 20:45:37 +00:00
Thibault Saunier
319439a1c0 queue: Cleanup properties are installed caching the pspecs in an array
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7486>
2024-10-28 20:45:36 +00:00
Sebastian Dröge
128dd3d82c buffer: Don't copy reference timestamp meta if the destination buffer already has the same
GstRtpBaseDepayload and other places already had such de-duplication code, so
it's probably better to solve this at the root.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7747>
2024-10-28 12:35:57 +00:00
Edward Hervey
f28a7e9611 gstreamer: Make dlopen leak suppression more generic
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455>
2024-10-25 13:55:19 +00:00
Jordan Petridis
bf467d4987 gstreamer: add duktape suppression
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455>
2024-10-25 13:55:19 +00:00
Edward Hervey
38c07a2d01 all: Fix closure annotations
This was misused almost everywhere.

See
https://gi.readthedocs.io/en/latest/annotations/giannotations.html#support-for-gobject-closures

and: https://www.bassi.io/articles/2023/02/20/bindable-api-2023/

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7725>
2024-10-25 08:58:29 +00:00
Mathieu Duponchelle
5e8359d407 aggregator: fix live query when force-live is TRUE
When force-live is TRUE, aggregator will correctly change its state with
NO_PREROLL, but unless something upstream is live did not previously set
live to TRUE on the latency query.

Fix this by or'ing force_live into the result.

Also improve debug

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7718>
2024-10-23 18:52:54 +00:00
Robert Rosengren
ff6ad49557 Revert "gstnetclockclient: signal lost sync if remote time resets"
This reverts commit 779e715b6c.

Since the introduced corrupt clock state for when discovering a time
server restart, this resulted in previous similar check as done in
this patch became ignored/jumped over (in case of the corrupt state
has been noticed).

Reference: df41d11a7d
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7664>
2024-10-23 16:13:44 +00:00