291 Commits

Author SHA1 Message Date
Sebastian Dröge
6a210b53e3 gst: Mark caps parameters in ALLOCATION query API as nullable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3752>
2023-01-19 16:01:21 +02:00
Jan Alexander Steffens (heftig)
b0e55caf0d input-selector: Take the object lock while iterating sinkpads
Otherwise we can race with pad removal and crash from use-after-free.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1717
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3745>
2023-01-18 16:21:12 +00:00
Tim-Philipp Müller
a9ec35b1ca Release 1.21.90 2023-01-13 19:08:48 +00:00
Tim-Philipp Müller
14e619158f gstreamer: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711>
2023-01-11 19:20:17 +00:00
Tim-Philipp Müller
a1672ec004 Fix translation pot files when creating dist tarballs
Add version as per Translation Project requirements and
also add a .pot file without the ABI suffix.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711>
2023-01-11 19:20:17 +00:00
Sebastian Dröge
c28bc4492e tools: Use gst_macos_main() on macOS
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1673

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3709>
2023-01-11 13:36:55 +00:00
Mathieu Duponchelle
2f020013e6 docs: explicitly declare gir build dependencies
As the path to the gir file is passed to hotdoc.generate_doc() and
not the build target itself, meson doesn't know about the dependency.

In turn, as the CI doesn't build everything before building the
documentation target, some gir files might not exist, for instance
in the case of gst-rtsp-server, causing the output documentation to
be empty.

The error occurred silently because hotdoc accepts wildcards for
*-sources arguments, thus it won't warn about a missing gir file as
it is legitimate for glob matching to resolve to nothing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3686>
2023-01-06 22:50:57 +00:00
Philippe Normand
8ec82f9363 event: Fix gst_event_parse_stream_collection annotation
The output parameter ownership is passed to the caller.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3659>
2022-12-29 18:16:31 +00:00
Philippe Normand
3f3bd70687 tests: gstelement: Fix test_add_pad_while_paused flakiness
`gst_element_remove_pad()` doesn't automatically deactivate the pad, it has to
be done explicitly beforehand, otherwise the pad task might be left dangling,
exposed to undefined behaviour.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3653>
2022-12-28 17:42:31 +00:00
Alicia Boya García
15caeb4ac9 gstelement: fix deadlock in gst_element_add_pad() when >=PAUSED
gst_element_add_pad() is supposed to activate the pad if the element
state is >= PAUSED and the pad is not already active.

Unfortunately, before this patch, the activation was performed while the
element lock was still taken, which ended causing a deadlock in
gst_pad_start_task() as it attempted to post `stream-status` message in
the element, which also requires the element lock.

Elements could work around this bug by activating the pad manually
before adding it to the element.

This patch fixes the problem by performing pad activation only after the
element lock has been released.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3635>
2022-12-27 20:31:10 +00:00
Mart Raudsepp
3fa4ff0562 multiqueue: Fix potential deadlock with parallel release_pad calls
Commit d3a66f9851ea introduced a potential deadlock with two parallel release_pad
calls, where one could release the main multiqueue lock (qlock) while still
holding the reconf_lock and then calling other routines which in some conditions
may try to acquire qlock again. The second release_pad could already acquire the
qlock and then start waiting on reconf_lock, which may never be possible because
because the first one isn't releasing it until it can acquire qlock.

Fix it by holding reconf_lock for the whole durationg of qlock, making this
particular deadlock impossible.

Fixes #1642

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3571>
2022-12-23 13:08:54 +00:00
Hiero32
7050b00c10 fdsrc,fdsink: Set binary mode on FD
Default mode of STD handles on Windows is text mode, and OS will
insert CRLF sequence by default.

Co-authored-by: Seungha Yang <seungha@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3070>
2022-12-21 06:34:15 +00:00
Hiero32
a29a1b21c3 coreelements: Use G_OS_WIN32 macro
* HAVE_WIN32 is not defined elsewhere
* Enables fdsrc/fdsink for MinGW build as well

Co-authored-by: Seungha Yang <seungha@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3070>
2022-12-21 06:34:15 +00:00
Xavier Claessens
cd78cbac86 Fix API visibility macros
This copies the logic from GLib discussed there:
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2936

Beside being simpler, it also fix all public symbols being annotated
with dllexport when doing a static build, as discovered there:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3540#note_1678335

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3567>
2022-12-20 14:03:35 +00:00
Mathieu Duponchelle
f8b732563b basesrc: respect FIXED_CAPS flag in caps query implementation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3590>
2022-12-17 12:04:49 +00:00
Hosang Lee
04dc8e2484 gst: handle combinations in gst_stream_type_get_name()
This should handle the majority of the valid stream cases.
The element setting the stream type may set each type separately.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2804>
2022-12-14 15:22:08 +00:00
Piotr Brzeziński
3bb8700577 macos: Add wrapper API to run a NSApplication in the main thread
On macOS, a Cocoa event loop is needed in the main thread to ensure
things like opening a GL window work correctly. In the past, this was
patched into glib via Cerbero, but that prevented us from updating it.
This workaround simply runs an NSApplication and then calls the
main function on a secondary thread, allowing GStreamer to correctly
display windows and/or system permission prompts, for example.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3532>
2022-12-13 17:50:32 +00:00
Sebastian Dröge
9ca6b1196e systemclock: Use futex_time64 syscall if available (32-bit systems) and use correct struct timespec definition
See also https://gitlab.gnome.org/GNOME/glib/-/issues/2634

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3561>
2022-12-13 13:11:56 +00:00
sezanzeb
6687e7ed17 gst_init: Removed wrong warning in docstring
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3562>
2022-12-12 22:34:08 +00:00
Hugo Svirak
4aeb3def20 docs: specify possibility of a NULL return
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3546>
2022-12-11 00:05:04 +00:00
Tim-Philipp Müller
8110ea6b1b multiqueue: update for renamed log id macros
See #1635.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3553>
2022-12-10 12:40:13 +00:00
Tim-Philipp Müller
b74452cbc6 info: rename new log macros from GST_*_OBJECT_ID -> GST_*_ID
Fixes #1635

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3553>
2022-12-10 12:40:13 +00:00
Jan Schmidt
0791a73a04 gstplugin: Handle static plugins in gst_plugin_load_by_name()
gst_plugin_load_by_name() assumed a plugin has a filename,
which isn't true for static plugins, leading to criticals.

If a plugin is already loaded, just return the loaded plugin,
which makes it work for static plugins as well as saving a
moment for already-loaded dynamic plugins.

Add locking in gst_plugin_is_loaded(), as a plugin may be
still being loaded in another thread.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3552>
2022-12-10 11:01:35 +00:00
Tim-Philipp Müller
a2c7398a1c meson: fix check for pthread_setname_np()
Need to define _GNU_SOURCE.

Fixes #1542

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3538>
2022-12-07 11:53:50 +00:00
Edward Hervey
df311a65da gstinfo: Minor modification to avoid gst-indent pain
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3483>
2022-12-05 09:59:30 +00:00
Edward Hervey
f84fe4710a multiqueue: Use new id-based debugging methods
Clarifies the debug logs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3483>
2022-12-05 09:59:30 +00:00
Edward Hervey
a289c61c11 gstinfo: Allow passing a string identifier for debugging
This adds "id" variants to most debugging functions, and allows providing a
string identifier instead of a GObject.

This allows providing unified and clearer debug logs for all the
non-gobject-based items, and opens the way for more unified logging.

As an extension, copying the object name is avoided as much as possible, by
using it directly instead of going through another copy.

* API : gst_debug_message_get_object_id

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3483>
2022-12-05 09:59:30 +00:00
Tim-Philipp Müller
1f65d7cc5c Back to development 2022-12-05 02:29:08 +00:00
Tim-Philipp Müller
fd6a3948c6 Release 1.21.3 2022-12-05 01:28:21 +00:00
Tim-Philipp Müller
84e74ceb10 Remove ChangeLog files from git repository
This information is tracked fully in the git repository, so
no point having the ChangeLog duplicate it, and it interferes
with grepping the repository.

We are going to create the ChangeLogs on the fly when generating
tarballs going forward (with a limited history), since it's still
valuable for tarball consumers to be able to easily see a list of
recent changes.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/73

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3521>
2022-12-04 18:16:25 +00:00
Tim-Philipp Müller
9eb081ea0a meson: Generate ChangeLog files for release tarballs on dist
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3521>
2022-12-04 18:16:25 +00:00
Edward Hervey
90d4129301 multiqueue: Handle gapless with flushing
Don't reset the stream-start group-id when stop/pausing single queues. They are
only resetted when re-used (in READY->PAUSED).

Fixes #1586

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3487>
2022-12-02 09:22:41 +00:00
Edward Hervey
9f9e625776 gstinfo: Optimize color escape code creation
When coloring is in use, those escape codes are going to be created many times
for almost all debug lines.

Don't create plenty of temporary allocations, and instead build the escape code
ourselves statically

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3498>
2022-12-02 06:02:48 +00:00
Edward Hervey
0841e846a3 gst-inspect: Don't leak list
Just iterate the list instead of trying to be smart...

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3497>
2022-12-01 06:42:22 +00:00
Vivia Nikolaidou
c6af0a39e7 inputselector: Add drop-backwards property
When sync-streams=true, drop backwards buffers on pad switch.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3256>
2022-11-22 21:21:40 +02:00
Vivia Nikolaidou
5fb71dd55b inputselector: Fix waiting on sync-mode=clock
Basically copy over what clocksync does, but taking into account that we
have multiple upstream latencies.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3256>
2022-11-22 21:21:40 +02:00
Jan Schmidt
2a32861ab3 event: Add transfer none annotation to gst_event_new_stream_collection()
Update the documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3387>
2022-11-21 10:32:02 +00:00
Jan Schmidt
bdaa8f83aa pad: Fix sticky event ordering for instant-rate-change
The event type for instant-rate-change events was poorly chosen,
leading to them being re-sent too late and even after EOS.

Add a mechanism in GstPad for the sticky event order to be
different to the value of the event type to fix that up.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3387>
2022-11-21 10:32:02 +00:00
Célestin Marot
9d829b85e4 fakesrc: avoid time overflow with datarate
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3433>
2022-11-19 11:13:33 +00:00
Colin Kinloch
7840db5384 gst: serialization of GLibDateTime
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2980>
2022-11-18 21:11:07 +00:00
Mathieu Duponchelle
b5cd758230 aggregator: Implement force_live API
Setting force_live lets aggregator behave as if it had at least one of
its sinks connected to a live source, which should let us get rid of the
fake live test source hack that is probably present in dozens of
applications by now.

+ Expose API for subclasses to set and get force_live
+ Expose force-live properties in GstVideoAggregator and GstAudioAggregator
+ Adds a simple test

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3008>
2022-11-18 18:14:26 +00:00
Jan Schmidt
d3a66f9851 multiqueue: Protect reconfiguration with a lock
Add a lock to prevent overlapping of request and release
pads, to close a race where multiqueue might try and
add a slot with an id that hasn't quite finished being
removed yet by another thread.

Fix for https://gitlab.freedesktop.org/bilboed/gstreamer/-/issues/5
and https://gitlab.freedesktop.org/bilboed/gstreamer/-/issues/11

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>
2022-11-16 14:01:46 +00:00
Edward Hervey
4b8f411c5d multiqueue: Handle gapless input
When dealing with gapless input (i.e. streams with changing group-id in
GST_EVENT_STREAM_START), we need to take into account the elapsed
running-time (if applicable) in order to properly calculate levels and output
time. Without doing this all incoming data from future groups would be
considered as being "late" and would be consumed immediately.

This does **NOT** modify the actual segment and buffer times, and is only used
internally.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>
2022-11-16 14:01:46 +00:00
Edward Hervey
64c81b6972 urisourcebin: Remove pending pad handling
This was needed to support the legacy handling of changing streams (add new
pads, send EOS and remove old pads).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>
2022-11-16 14:01:46 +00:00
Sebastian Dröge
72c5105312 typefindhelper: Fix docs/annotations for the new functions
Follow-up for https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3296

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3418>
2022-11-16 04:07:09 +00:00
Thibault Saunier
9dc787755d inspect: Print default value of ValueArray properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3377>
2022-11-15 17:20:56 +00:00
Sanchayan Maity
30841dae99 typefindhelper: Use the new GstTypeFind * API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3296>
2022-11-15 14:05:40 +00:00
Sanchayan Maity
89da632219 typefindhelper: Introduce a new API for working with a GstTypeFind *
Introduce a new API that can return a GstTypeFind * with helper functions
and data set around buffer data.

While at it, drop factory field from GstTypeFindBufHelper. While it was
useful for logging, it was not passed through function arguments and keeping
it for logging would require an additional API increasing the API surface
and making it harder to use.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3296>
2022-11-15 14:05:40 +00:00
Sanchayan Maity
036b77b519 typefindhelper: Add helpers to improve type finding given the caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3296>
2022-11-15 14:05:40 +00:00
Sanchayan Maity
58f7d88585 typefindhelper: Update annotation for function parameters
Fix the nullable/optional situation. allow-none is deprecated and
replaced by either or both of the others.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3296>
2022-11-15 14:05:40 +00:00