Seungha Yang
a8f8bbef99
structure,capsfeatures: Fix MSVC build warnings
...
Fixing warning "warning C4068: unknown pragma 'GCC'"
Use portable GLib macro instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7589 >
2024-09-30 21:56:28 +00:00
Sebastian Dröge
21af7061eb
gst: caps: Add API for creating caps / setting caps fields from static strings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:26:18 +03:00
Sebastian Dröge
ba552fb76f
gst: Remove gstquark.c / gstquark.h
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:26:18 +03:00
Sebastian Dröge
eed7c9c66a
gst: capsfeatures: Use GstIdStr for caps features
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:21:29 +03:00
Sebastian Dröge
6233eb0ff3
common: Stop using GQuark-based GstStructure field name API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:21:29 +03:00
Sebastian Dröge
2df9c4739e
gst: structure: Use GstIdStr for structure field names
...
And add corresponding API with GstIdStr parameters, static string parameters and
deprecate the old GQuark based API.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3567
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:21:29 +03:00
Sebastian Dröge
0c1611d31d
common: Stop using GQuark-based GstStructure name API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:21:29 +03:00
Sebastian Dröge
8cbc76b180
gst: structure: Use GstIdStr for structure names
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:21:29 +03:00
Sebastian Dröge
0ee18781f9
gst: Add GstIdStr for holding structure names and field names
...
This is an efficient string storage for short strings without heap allocations,
and falling back to the heap for bigger allocations. Almost all structure fields
and structure names in use nowadays are short enough to not require a heap
allocation.
As structure names and fields are sometimes dynamically created, storing them in
a GQuark can create a memory leak and potentially a DoS attack by continously
triggering creating of new quarks.
Thanks to Tim for coming up with the name!
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:21:29 +03:00
Sebastian Dröge
0823c639cc
gst: structure: Stop using private structure name quark field
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:21:29 +03:00
Arun Raghavan
90e58aec3c
gstreamer: parse: Use child proxy for deferred property setting
...
We use that mechanism for the non-deferred path, and this makes sure we are
consistent for deferred set too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7519 >
2024-09-23 17:47:20 +00:00
Arun Raghavan
92d8da92dc
gstreamer: parse: Minor whitespace fixups
...
Mostly replacing some tabs with spaces.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7519 >
2024-09-23 17:47:20 +00:00
Arun Raghavan
ba69987114
gstreamer: parse: Make sure children are bins before recursing in
...
A deferred set of the form parentbin::childelement::pad works in the
non-deferred property setting path, but the deferred path assumes that all
non-root non-leaf children specify bins. We already have a bin check on the
root, so let's add one for other non-leaves to avoid a critical.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3806
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7519 >
2024-09-23 17:47:19 +00:00
Sebastian Dröge
389302eb96
dynamictypefactory: Fix name of the class cast macro
...
And deprecate the old name.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3814
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7541 >
2024-09-23 15:04:31 +00:00
Peter Kjellerstedt
0db32b3b3a
meta: Add missing include of gststructure.h
...
This avoids the following error when only including gstmeta.h:
/usr/include/gstreamer-1.0/gst/gstmeta.h:146:3: error: unknown type
name 'GstStructure'
146 | GstStructure *structure;
| ^~~~~~~~~~~~
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7520 >
2024-09-16 06:58:08 +00:00
Arun Raghavan
f30321538b
pad: Check data NULL-ness when probes are stopped
...
We were correctly handling this for buffers, but not events and queries.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7493 >
2024-09-12 05:47:16 +00:00
Sebastian Dröge
e5133033fa
clock: Use external / internal as term for the two clock bases everywhere
...
It was confusing that some functions were using master for the external time and
slave for the internal time. This is not consistently using external / internal
when talking about concrete clock times.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7456 >
2024-09-08 11:42:38 +01:00
Sebastian Dröge
f463d4c3c1
clock: Use nullable
/ optional
annotations instead of ambiguous allow-none
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7456 >
2024-09-08 09:54:56 +00:00
Tim-Philipp Müller
6031f9ece1
gstreamer: use g_sort_array() instead of deprecated g_qsort_with_data()
...
Fixes compiler warnings with the latest GLib versions.
See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4127
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7384 >
2024-09-02 22:31:34 +00:00
Sebastian Dröge
55994477a7
bus: Switch from GstAtomicQueue to GstVecDeque
...
All accesses to it were protected either by a mutex already, or at least
used yet another mutex for gst_poll_read_control() / gst_poll_write_control().
The usage of GstPoll has to stay for backwards compatibility as it is
used to manage the (public) fd that can be used to wait for the bus to
be ready, but this switch at least simplifies the implementation a bit
and results in fewer atomic operations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6684 >
2024-09-02 09:26:23 +00:00
Sebastian Dröge
8e589eec08
bufferpool: Switch from GstAtomicQueue to GstVecDeque and a mutex/cond
...
While the atomic queue itself is lock-free, all its usage had to be
synchronized externally via a GstPoll and gst_poll_read_control() /
gst_poll_write_control(). Both functions were always taking a mutex
internally since cd06aea1, so the implementation was just very
complicated but not lock-free at all.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2714
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6684 >
2024-09-02 09:26:23 +00:00
Sebastian Dröge
3c7ddf902a
structure: Remove quadratic behaviour from gst_structure_fixate()
...
It was iterating over each field and after fixating its value was again
iterating over every field to find where to store the value.
Instead directly overwrite the value after validating it.
Also actually check that the structure is writable before modifying its fields
by using gst_structure_map_in_place() instead of gst_structure_fixate().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7420 >
2024-09-02 07:32:16 +00:00
Sebastian Dröge
8b0ae3ba87
clock: Fix calculation for number of bits needed to store a 64 bit value
...
It was using log2(n) but what actually is needed is log2(n) + 1. Also add a
fast-path that uses __builtin_clzll() on gcc/clang.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7406 >
2024-08-29 10:55:35 +00:00
Sebastian Dröge
41f3fab3d4
clock: Fix unchecked overflows in linear regression code
...
The initial calculation for the precision shift was wrong and would allow for
overflows during the calculations which were not detected and lead to wrong
results.
Also add a test for a case where overflows where previously not detected and
caused a completely wrong result.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7406 >
2024-08-29 10:55:35 +00:00
Daniel Morin
4106ad4ae6
doc: correct delimiters documentation
...
- "<>" are delimiters for GST_TYPE_ARRAY and "{}" are delimiters for
GST_TYPE_LIST.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7419 >
2024-08-29 00:00:43 +00:00
Jan Schmidt
e76581fe93
core: Log pad name, not just the pointer
...
Change a debug statement that was just logging a pad pointer where
it could log the pad name more usefully.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6943 >
2024-08-12 12:38:44 +05:30
Sebastian Dröge
9bbb7accb3
bin: Don't keep the object lock while setting a GstContext when handling NEED_CONTEXT
...
This can potentially deadlock.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3707
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7305 >
2024-08-06 07:00:29 +00:00
Jan Schmidt
7bd51afd04
gsturi: Ensure file:// URIs retain //
...
Add the // back after the scheme for file URIs so 'file:///path/to/file'
doesn't become 'file:/path/to/file' in gst_uri_to_string()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6969 >
2024-07-30 00:06:50 +00:00
L. E. Segovia
5929829131
gst: clock: Move Android OS check to the __ANDROID__ macro
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6510 >
2024-07-17 22:33:52 +00:00
Tim-Philipp Müller
154b84649f
info: remove unused valgrind header include
...
Follow-up to commit a2cbf75523cdf8a4df1baa7007d86ef455972245.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7126 >
2024-07-03 03:46:19 +00:00
Xavier Claessens
84b3a0950d
build: Add missing common options that are yielding in subprojects
...
- Align `glib_debug`, `glib_assert` and `glib_checks` options with GLib,
otherwise glib subproject won't inherit their value. Previous names
and values are preserved using Meson's deprecation mechanism.
- Add `extra-checks` and `benchmarks` options in the main project so it
can be inherited in GStreamer subprojects.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1165 >
2024-06-27 15:53:46 +00:00
Seungha Yang
27662d5fb8
bufferpool: Clarify GstBufferPoolClass::start() usage
...
Make it clear that chaining up to the default implementation
is optional if subclasses do not want preallocation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6328 >
2024-06-13 10:59:56 +00:00
Edward Hervey
4f94749665
gstpromise: Don't use g_return_* for internal checks
...
If assertion/checks are disabled bad things will happen and the function won't
return as expected
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6993 >
2024-06-05 18:47:05 +00:00
Martin Nordholts
5d2421b8c8
gst_debug: Add missing gst_debug_log_id_literal() dummy with gst_debug=false
...
E.g. gst_debug_log_literal() already has a dummy variant.
gst_debug_log_id_literal() is simply missing, which can
cause link errors for project using gstreamer with
gst_debug=false.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6972 >
2024-06-01 07:30:34 +00:00
Edward Hervey
1f4c1c18ca
gstmessage: Allow retrieving and setting details on messages
...
This was only available on warning/error/info messages creator/parsers. These
new functions make it more generic and also add a writable variant for users who
want to add/extend the details
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6929 >
2024-05-29 22:24:07 +00:00
Sebastian Dröge
529f2472b3
gstreamer: parse: Don't assume that child proxy child objects are GstObjects
...
The name is already passed via the signal parameters so it doesn't have
to be retrieved again via GstObject API, which would crash on other
GObjects. Child proxy child objects can be any kind of GObject and the
code here otherwise handles this correctly already.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6938 >
2024-05-29 05:33:03 +00:00
Sebastian Dröge
a7908b05da
info: Make gst_debug_print_object() and gst_debug_print_segment() public
...
It can be useful in custom logging code to easily get string
representations of all kinds of objects or a segment.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6820 >
2024-05-27 17:08:03 +00:00
Sebastian Dröge
1f12493787
gstreamer: Solaris/Illumos require linking to libnsl / libsocket for various socket APIs
...
Patch by Tim Mooney <Tim.Mooney@ndsu.edu> from OpenIndiana/oi-userland
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6925 >
2024-05-26 12:33:50 +03:00
Sebastian Dröge
562cecaef4
clock: Fix 32 bit assertions in GST_TIME_TO_TIMEVAL and GST_TIME_TO_TIMESPEC
...
On various 32 bit systems, time_t is actually 64 bits while long is
still only 32 bits. The macro would wrongly trigger its assertion in
this case if a value with more than 68 years worth of seconds is
converted.
Examples are various newer 32 bit platforms and old ones that are
compiled with -D_TIME_BITS=64.
Also statically assert that time_t is either 32 or 64 bits. Other values
might need adjustments in the macro.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6869 >
2024-05-24 09:27:01 +00:00
Sebastian Dröge
1a8e7aa92d
bufferlist: get() is not actually nullable in its return value
...
Passing an out of bounds index is the only way to get a NULL buffer but
this causes an assertion so is not to be considered for the
annotations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6884 >
2024-05-23 06:34:59 +00:00
Sebastian Dröge
0a2e0a4f64
buffer: Use C11 atomics if available for 64 bit atomic operations
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6740 >
2024-05-16 06:52:58 +00:00
Alexander Slobodeniuk
0e3e688bed
systemclock: fix usage of __STDC_NO_ATOMICS__
...
__STDC_NO_ATOMICS doesn't seem to exist. In fact the only compiler
I've found that sets any of those is msvc, but it sets
__STDC_NO_ATOMICS__, not __STDC_NO_ATOMICS.
__STDC_NO_ATOMICS__ is the one documented by C11 standard.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6848 >
2024-05-14 23:38:31 +02:00
Sebastian Dröge
9e58fa49f1
info: Use GstVecDeque for the ringbuffer logger instead of GQueue
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6779 >
2024-05-06 18:25:42 +00:00
Sebastian Dröge
0ef396359c
gst: Move GstQueueArray as GstVecDeque to core
...
And change lengths and indices from guint to gsize for a more correct type.
Also deprecate GstQueueArray and implement it in terms of GstVecDeque.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6779 >
2024-05-06 18:25:42 +00:00
Edward Hervey
9c10726ae1
gstvalue: Add a GstAllocationParams to String conversion
...
Avoids ending up with plenty of warnings when serializing GstStructure
containing GstAllocationParams
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6714 >
2024-04-29 16:01:33 +00:00
Edward Hervey
777c8a9b15
structure: Add a serialization for GArray in GstStructure
...
Instead of constantly spurting out warnings in the log files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6691 >
2024-04-29 11:05:44 +00:00
Xavier Claessens
364d0ff45d
pad: gst_pad_set_offset is only reliable on source pads
...
Setting an offset on sink pads won't repush segment event which means
buffer running time won't be adjusted. Better warn about this than being
silently not working.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6464 >
2024-04-25 13:49:03 +00:00
L. E. Segovia
6ce27e328d
gst: clock: Block futex_time64 usage on Android API level < 30
...
This syscall is seccomp blocked on all lower API levels:
ee7bc3002d
While at it, also fix all direct tests on __NR_futex_time64 and
__NR_futex so that they refer to the results available in
config.h.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6477 >
2024-04-02 15:32:37 +00:00
Antonio Larrosa
bd97973ce0
registry, ptp: Canonicalize the library path returned by dladdr
...
On systems using UsrMerge (like openSUSE or Fedora), /lib64 is
a symlink to /usr/lib64. So dladdr is returning the path to
the gstreamer library in /lib64 in priv_gst_get_relocated_libgstreamer.
Later gst_plugin_loader_spawn tries to build the path to the
gst-plugin-scanner helper from /lib64 and ends up trying to use
/lib64/../libexec/gstreamer-1.0/gst-plugin-scanner which doesn't exist.
By canonicalizing the path with a call to realpath, gst-plugin-scanner
is found correctly under
/usr/lib64/../libexec/gstreamer-1.0/gst-plugin-scanner
Similar change applied to gstreamer/libs/gst/net/gstptpclock.c
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6322 >
2024-03-12 15:51:36 +00:00
Nirbheek Chauhan
77831d6142
gsturi: Sort by feature name to break a feature rank tie
...
This matches autoplug in other places such as decodebin, otherwise we
will pick "randomly" based on the order in which plugins are
registered, which is mostly dependent on the order in which readdir()
returns items.
So let's make it predictable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6227 >
2024-03-12 14:25:10 +00:00