Commit graph

552 commits

Author SHA1 Message Date
Seungha Yang
75ddcd7566 pluginloader-win32: Early terminate if plugin loader binary is not installed
External plugin loader support for Windows is introduced
in this dev cycle. Since helper binary was not required (useless)
before this version, people may not ship the binary
with new GStreamer version, then they will observe warning message.

Instead of displaying the warning at plugin loading time,
checks helper bin earlier and disable external plugin loader
if helper binary is not installed.

Fixes: https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/448
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6083>
2024-02-11 13:49:34 +00:00
Xavier Claessens
561f8b71ee structure: Allow STRICT flag only in _serialize_full()
The STRICT flag makes _serialize() nullable which is an API break for
bindings. Forbid it and add _serialize_full() that accepts it and is
properly annotated.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5829>
2024-02-09 15:45:33 +00:00
Guillaume Desmottes
b6d8a55103 basesrc: add FIXME 2.0 about automatic_eos
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1334>
2024-02-08 10:51:56 +01:00
Tim-Philipp Müller
2111d6f015 Back to development
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6066>
2024-02-06 18:29:31 +00:00
Tim-Philipp Müller
9255e397f0 Release 1.23.1 2024-02-06 16:43:27 +00:00
Tim-Philipp Müller
e7d771903e meson_options.txt: fix meson warning about default bool values being a string 2024-02-06 16:37:13 +00:00
Sebastian Dröge
7c1ea2eeab pad: Copy over seqnum when creating a new segment event for applying pad offset
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6057>
2024-02-06 10:24:26 +00:00
Sebastian Dröge
3972736f91 utils: Remove unnecessary const-removal casts from gst_util_filename_compare()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6063>
2024-02-06 08:03:56 +00:00
Sebastian Dröge
404e4ca626 utils: Annotate gst_util_filename_compare() parameters as filenames
They're not UTF-8 strings.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6063>
2024-02-06 08:03:56 +00:00
Piotr Brzeziński
ffdec6bc2b macos: Fix gst_macos_main() terminating whole process before returning a value
Removes the usage of [NSApp terminate] to avoid killing the process and thus never actually returning a value.
The new way is just to use [NSApp stop] and send an event, since stop only happens after an event is processed.
Unlike terminate, stop will only halt the event loop, not the whole process.

This uses an NSApplicationDelegate to listen for NSApp finishing the launch process, and then signals the 'main' thread
to proceed. That makes sure to never call [NSApp stop] before NSApp is actually running, which could happen if the
provided 'main' function finished quickly enough.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6005>
2024-01-30 19:37:23 +00:00
Thibault Saunier
726dd5f09f basesrc: Lower verbosity of often happening warning
decodebin(3) runs a scheduling query before pads are activated which
ultimately triggers basesrc->start which will automatically call
`gst_base_src_start_complete` for any source that is not marked as
'async'. This calls will harmlessly bail out in `not_activated_yet`
so we should not warn in that case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6011>
2024-01-30 09:09:22 +00:00
Guillaume Desmottes
bebcb74801 core: pad: call tracer query-post hook after probes
Tracers are likely interested about the end result of the query, so
after probes have been caled.

Fix a bug where the buffer-lateness tracer was reporting a wrong latency
when pad probes increased the latency.

Also call the tracer hook if the pad has no query function.

Fix https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/486

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5963>
2024-01-30 07:48:30 +00:00
Thibault Saunier
a4156ebeee basesink: Preroll on out of segment buffers when not dropping them
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5980>
2024-01-29 18:57:33 +00:00
Tim-Philipp Müller
c84285d44d meson: bump Meson requirement to >= 1.1 for all modules
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6002>
2024-01-29 01:11:55 +00:00
Thibault Saunier
9afab6107f gdb: Fix the way we wrap segments
Without that we end up with a reference to a GBoxed instead of the actual segment making the rest of the code fail

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5986>
2024-01-25 12:27:29 +00:00
Thibault Saunier
f09da2db0e gdb: Fix issue with undeclared variable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5986>
2024-01-25 12:27:29 +00:00
Thibault Saunier
e98c515c58 gdb: Handle the case where the fundamental type table is optimized out
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5986>
2024-01-25 12:27:29 +00:00
Thibault Saunier
f1070b4380 gdb: Fix python style
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5986>
2024-01-25 12:27:29 +00:00
Thibault Saunier
6258ee56d2 gdb: Workaround optimized out quark_seq_id
On fedora 38 (and it was the case in previous releases), the
quark_seq_id is optimized out so getting quarks from the
global variable always failed. This patch works around that by assuming
it is a valid quark whenever the quark_seq_id is not accessible.

This issue often manifested as Python Exception <class 'TypeError'>:
can only concatenate str (not "NoneType") to str when debugging as
other parts of the code assume that getting the quark for a GType name
will work.

Same as https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3559

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5986>
2024-01-25 12:27:29 +00:00
Jonas K Danielsson
fa4b46680d gstutils: Add g_util_filename_compare
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4491>
2024-01-24 20:15:19 +00:00
Guillaume Desmottes
c9c7e83a78 core: pipeline: add gst_pipeline_get_configured_latency()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4472>
2024-01-18 20:17:04 +01:00
Guillaume Desmottes
ba4ab9dc16 core: pipeline: add gst_pipeline_is_live()
Convenient API for applications wanting to check if a pipeline is live
or not. Save them from checking the change_state return value or sending
latency queries.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4472>
2024-01-18 20:17:04 +01:00
Guillaume Desmottes
9dc4d48ff5 core: pipeline: protect priv->is_live with object lock
It's supposed to be according to the comment where it's defined.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4472>
2024-01-18 20:16:19 +01:00
Scott Moreau
f0d15f335d gst-launch: accept option to set program name
The option --prog-name="PROGRAM-NAME" can be passed to set the program name.
The program name is used by gtk and gstreamer to set the class or app-id.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5263>
2024-01-12 17:11:11 +00:00
Xavier Claessens
6a3b2001a3 gstpad, gstobject: Add GMutexLocker helper
Add GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() to simplify
g_autoptr(GMutexLocker) usage.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4300>
2024-01-11 17:20:23 +00:00
Stéphane Cerveau
97ebaa0bc1 gstutils: add gst_util_ceil_log2
Move ceil_log2 from nalutils.* to gstutils.*

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5888>
2024-01-09 15:34:10 +00:00
Sebastian Dröge
5630294ce6 ptp-helper: Allow unused Stderr export
It's not used when building tests and would otherwise cause a warning.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5872>
2023-12-29 10:18:52 +02:00
Olivier Crête
f5d5f2cf1a meta: Add API to register metas in two steps
And also remove the specific registration APIs for
serializable meta.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5830>
2023-12-19 22:41:31 +00:00
Olivier Crête
2a9c4e3270 meta: Move the clear operation to its own vfunc
Some transforms always assumed that the transformation was some kind
of copy. So adding a "clear" operation didn't work out in practice.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5830>
2023-12-19 22:41:31 +00:00
Nicolas Dufresne
73338aa1ae doc: baseparse: Clarify consumed vs output size
When we finish a frame, we pass a size which semantic can easily be confused.
Improve the documentation to clarify that the parameter size is the amount of
input data being consumed and, if set, the output_buffer size can differ.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5754>
2023-12-19 16:08:08 -05:00
Xavier Claessens
f545e79bee meta: gst_meta_serialize() is not introspectable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5355>
2023-12-17 16:13:26 +00:00
Xavier Claessens
06d9d934f9 meta: Add serialize/deserialize API
This allows metas to be serialized to be transmitted or stored. This is
intended to be used for example by gdppay or unixfdsink.

Implemented on GstCustomMeta, GstVideoMeta, GstReferenceTimestampMeta,
and GstAudioMeta.

Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5355>
2023-12-17 16:13:26 +00:00
Xavier Claessens
9501d64ccd structure: Add GST_SERIALIZE_FLAG_STRICT
It makes serialization succeed only if all values have a type that can
be deserialized.

Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5355>
2023-12-17 16:13:26 +00:00
Xavier Claessens
899d08722a buffer: Remove trailing space
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5355>
2023-12-17 16:13:26 +00:00
Xavier Claessens
d2fb30a188 devenv: Whitelist all plugins to be able to run tests
Meson devenv already overrides GST_PLUGIN_PATH and
GST_PLUGIN_SYSTEM_PATH so only built plugins can be found. That means
unit tests are allowed to use every plugins.

This makes easier to run some unit tests under devenv instead of through
"meson test".

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5748>
2023-12-14 15:09:35 +00:00
Vivia Nikolaidou
e451908a27 multiqueue: Don't stop dropping when an internal queue is empty
It is racy and may cause us to accidentally keep forwarding data past
the EOS. The only reason to stop dropping would be when we encounter a
stream-start, segment, or segment-done event, either in push_one
(already queued) or in the sink pad's event function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5766>
2023-12-13 20:36:47 +00:00
Jan Schmidt
37ba866d52 multiqueue: Ignore queue fullness for most events
Use gst_data_queue_push_force() for most events so they
are immediately enqueued. Only gap events and actual buffer
data will now block when the queue is full.

This fixes a problem with non-flushing seek handling
where events following a segment-done event would block
if they precede the SEGMENT event, since only SEGMENT
events would clear the 'eos' state of the multiqueue
queue.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5801>
2023-12-13 15:31:45 +00:00
Alexander Slobodeniuk
97e748466e aggregator: fix use-after-free in queries processing
Test included.
The problem appears when aggregator drops the query while
it's being proccessed by the klass->sink_query handler.
This can happen on FLUSH_START event. If the query is still
in the queue, it can be safely dropped, but if it's already
in the klass->sink_query() handler, then sink pad has no
choice and has to wait for the proccessing to complete.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5765>
2023-12-13 00:06:38 +01:00
Thibault Saunier
6dc86b1f91 basesrc: Expose automatic-eos as a property
It is useful for appsrc for example and no good reason to not expose it as a property

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5725>
2023-12-05 14:04:05 +00:00
Jordan Yelloz
4ec5de8784 gstcontext: Added gst_clear_context()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5756>
2023-12-02 09:03:47 +00:00
Jordan Yelloz
ac6952e936 gstpromise: Added gst_clear_promise()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5756>
2023-12-02 09:03:47 +00:00
Jordan Yelloz
e33d5303f7 gstpromise: Added GST_IS_PROMISE() macro
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5728>
2023-11-28 15:41:49 -07:00
Stéphane Cerveau
12b2dfe41b meson: fix gstreamer-full static mode on win32
Win32 was expecting the symbol gst_init_static_plugins in gstreamer-full
dynamic mode.
Add mode in gstreamer gstreamer-full options to tell if its a
gstreamer-full static or shared mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5098>
2023-11-27 18:12:18 +00:00
Jan Alexander Steffens (heftig)
393e254255 baseparse: Reset metadata for reverse playback fragment buffers
Don't let the adapter leak uncontrollable values.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5718>
2023-11-27 14:38:45 +00:00
Jan Alexander Steffens (heftig)
3319d152a8 baseparse: Add missing gst_buffer_make_writable
When the subclass attempts to finish without an explicit `out_buffer`,
we take a buffer from our adapter. We need to make this buffer writable
before copying the metadata.

This led to data races such as in the following pipeline, which randomly
messed up the buffer PTS:

    gst-launch-1.0 -e audiotestsrc timestamp-offset=5555 num-buffers=100 \
      ! opusenc ! tee name=t ! queue ! opusparse ! fakesink silent=0 \
      t. ! queue ! opusparse ! fakesink silent=0 -v | grep '0000, dur'

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5718>
2023-11-27 14:38:44 +00:00
Olivier Crête
aa7333fe43 meta: Add a new "clear" transform to avoid re-allocations
In the buffer pool, try to clear metas before freeing them so we
avoid constant reallocations on every frame.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4962>
2023-11-21 18:04:53 +00:00
Jordan Yelloz
66f51f642f bad: Added W3C Media Source Extensions library
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2992>
2023-11-19 13:48:43 +00:00
Nicolas Dufresne
bac3de1d83 valgrind: Supress racy cancellable source leak
Creating a socket source, creates a cancellable source internally. This
mechanism is racy and in order to workaround the race, the final unref
can be delayed. Unfortunatly, it seams that this is randomly leaked.
This affects users of glib 2.65 and up. Add a suppression on our side
in order to avoid this leak showing up randomly in our CI.

See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1400 for more
about the glib implementation detail. And follow this link for an
example of failing CI pipeline:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/jobs/51694889

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5688>
2023-11-17 15:21:48 -05:00
Sebastian Dröge
ba5684d0d7 ptp: Add ttl configuration to gst_ptp_init_full()
This allows configuring the TTL that is used for multicast packets sent
out on the sockets, and is defaulting to 1 as before. The default might
change at some point.

In some networks multiple hops are needed to reach the PTP clock and
this allows to configure GStreamer in a way that works in such networks.

At a later time, per-domain or per-interface TTL configurations might be
added when needed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5649>
2023-11-16 12:26:02 +00:00
Sebastian Dröge
12159cb294 ptp: Add new gst_ptp_init_full()
This takes a free-form GstStructure as parameter that allows to easily
extend it with new configuration at a later time without having to add
new API.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5649>
2023-11-16 12:26:02 +00:00