- Add case where we have element in subset that are equal to element in
superset. In this case subset is still a subset if at least one element is a
subset of the corresponding element in superset.
- clarify gst_value_is_subset inline documentation
- Add helper VALUE_TYPE_SINGLETON (type) to identify GType that represent a
value that is not a collection.
- Fixed issue in gst_value_is_subset_array_array (<1, 2, 3>, <0, 1, 4, 2, 3>)
would have returned TRUE because because the alignment of the subset could be
done multiple times. Now once alignment of set as been done once, everything
else in the superset need to be a subset of corresponding element without
interuption. is_subset (<1, 2, 3>, <0, 1, 2, 3>) => TRUE, but is_subset (<1,
2, 3>, <0, 1, 4, 2, 3>) => FALSE.
- If both array are fixed value and we perform a is_subset on them, both value
can't be equal to be considered subset. (For consistency with other fixed
values)
- Define gst_value_subtract (singleton, array) and
gst_value_subtract (array, singleton), to allow a gst_value_is_subset
(singleton, array) and gst_value_is_subset (array, singleton). General
case of gst_value_is_subset (v1, v2) use gst_value_subtract (v1, v2) and
gst_value_subtract (v2, v1) to evaluate _is_subset(), therefore we need these
for is_subset() operation that involve singleton and array.
Note gst_value_subtract (array, array) is not implemented but this case is not
require by gst_value_is_subset () and as it has a direct handling. Warned if
the case is used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9220>
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4317
This patch fixes a regression in
a35bf1e3847351703542869755b6b9e536b9d2fd.
The new calls to tracers in the affected change were being done while
holding the pad object lock, which wasn't the case in the old ones,
leading to the latency tracer deadlocking in gst_object_get_parent().
The dependency on the pad lock for those calls was accidental. This
patch removes it by temporarily unlocking during the affected calls,
not unlike how it's done when calling a probe callback or the
send_event() function of the downstream element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8925>
When GST_DISABLE_GST_DEBUG is defined, the log context functions were
missing their stub implementations, causing link errors. Add the missing
stub functions to the disabled debug section.
Also add (nullable) annotation to gst_log_context_get_category since
it can return NULL when debugging is disabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9122>
Add a new API to control logging behavior, particularly for implementing
"log once" functionality and periodic logging. This helps avoid spamming
logs with repetitive messages.
The API provides:
- Static and dynamic context creation
- Configurable message identity calculation
- Periodic reset capability
- Context-aware logging macros
- Element message variants with context support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6855>
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>
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>