Commit graph

5302 commits

Author SHA1 Message Date
Wim Taymans
f70fdf5605 pulse-server: also remove creating objects
When an object is created, it is marked creating until all roundtrips
complete. If the object is removed in between, we don't remove it
because find_object does not return creating objects.

Make find_object also return the creating objects to fix this.
2021-11-03 16:57:41 +01:00
Wim Taymans
73bf30efa6 module-zeroconf: translate audio format
The audio format in the avahi messages is in pulseaudio format so
translate it to PipeWire format in audio.format.

See #1745
2021-11-03 12:54:58 +01:00
Thomas Weißschuh
7d9b49293c core: add runtime fallback for nonpresent getrandom() sycall
The current compile-time-check only tests for the getrandom() syscall
wrapper of libc. The presence of this wrapper however does not relate to
the presence of the actual syscall at runtime.
2021-11-02 17:55:24 +01:00
Pauli Virtanen
bbc2136e89 meson: ensure all examples are included in doc
Move declaration of examples to use same file lists for build and docs.
2021-11-02 09:46:14 +00:00
Wim Taymans
3c8a60944f pipewire: handle NULL plugin_dir
We can't load plugins when the plugin directory is unspecified, either
in config.h or with SPA_PLUGING_DIR in the environment.

Fixes #1774
2021-11-02 09:18:42 +01:00
Wim Taymans
9facfca45b jack: add option to disable monitor ports
Add a jack.show-monitor option (default true) that makes it possible
to hide the monitor ports.

Monitor ports are not enabled by default on JACK and maybe they also
should not for PipeWire. Or maybe we need some tweaks for some apps.

See #1760
2021-10-29 09:27:46 +02:00
Wim Taymans
f39f9b207b map: don't mix insert_at() and _remove()
You are supposed to allocate with _insert_new()/_remove() or use
someone elses allocated number with _insert_at(), never mix the
two or it will give an error.
2021-10-28 09:36:41 +02:00
Simon McVittie
f6b1d65e35 core: Use /dev/urandom for getrandom fallback
Sami Farin pointed out on #833 that on Linux kernels older than 5.6,
/dev/random blocks when entropy estimates are too low, whereas
/dev/urandom does not.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2021-10-28 07:15:50 +00:00
Wim Taymans
3509962f3a module-session-manager: don't leak the impl structure
We need to remove the listener for the object as well so that we
can safely free the impl memory.
2021-10-27 17:41:32 +02:00
Wim Taymans
2112a7287b tests: add new ABI test for stream 2021-10-27 11:31:39 +02:00
Wim Taymans
a84e43e3ee examples: update some examples with RequestProcess
Let video-src unconditionally call _trigger_process() when it is
ready. This will either start the graph when it is the driver or emit
a RequestProcess event to the driver.

Let video-play-pull intercept the RequestProcess command and use it
to do a trigger_process(). Otherwise use a timer to pull in the next
frame.
2021-10-27 11:20:06 +02:00
Wim Taymans
baca092ba5 stream: emit the RequestProcess event
Emit the RequestProcess event when pw_stream_trigger_process() was
called but we are not the driver node.

Fixes #1728
2021-10-27 11:19:56 +02:00
Wim Taymans
b5080a0395 node: dispatch RequestProcess event and command
The event is send to the driver node.
The command is sent to node directly.
2021-10-27 11:16:53 +02:00
Wim Taymans
7529e7c47c stream: add trigger_done event
It is emited after the graph cycle that was started with
trigger_process() completed.
2021-10-27 11:15:29 +02:00
Wim Taymans
0982c903eb fix example a little 2021-10-27 11:09:24 +02:00
columbarius
110aac8c6f examples: video-play-fixate announce ParamBuffer after fixation
This lets the fixation finish. Can this be made unneeded?
2021-10-27 11:09:24 +02:00
columbarius
9f34885174 examples: Create source and sink with fixation on format negotiation
This commit uses the video-src-alloc and video-play-reneg templates to create
examples for manual fixation at the format negotiation phase. These
clients simulate modifier negotiation done by clients handling DmaBufs.

Note: Neither client is capable of proper DmaBuf handling!

video-play-fixate can be used to test if a producer is capable to
fallback to shm buffer transport, while video-src-fixate can only be
used with the former example!
2021-10-27 11:09:24 +02:00
Wim Taymans
0568958856 impl-link: keep on negotiatiating until fixed Format
Send unfixed Format to nodes but don't proceed to the next state.
When EnumFormat is emited, change the link state back to INIT to restart
the negotiation.

Fixes #1732
2021-10-27 11:09:07 +02:00
Tom Briden
6cea8b201b meson: Allow session-managers option to be an absolute path
If it's not an absolute_path, then set the build_ms and build_wp
as normal, otherwise use the value as passed in.
2021-10-27 08:27:53 +00:00
Simon McVittie
e167123667 Reinstate compatibility with older Linux with no getrandom()
Commit 42d8b2b1 "Remove legacy FreeBSD compatibility code" removed
compatibility with old versions of FreeBSD, but also removed
compatibility with old versions of Linux and glibc, which was requested
in #833.

This partially reverts commit 42d8b2b167.

Resolves: #833
Signed-off-by: Simon McVittie <smcv@collabora.com>
2021-10-26 19:32:02 +01:00
Wim Taymans
a2f06be199 pulse-server: Improve combine sink properties
Make streams and sink have the same description so that they show
up as the same node in catia.
2021-10-26 10:50:28 +02:00
Wim Taymans
33653cbabf protocol-pulse: flush streams on pause
To remove any lingering data
2021-10-26 10:49:50 +02:00
Wim Taymans
ba18768246 impl-link: both ports need to be negotiated before we can allocate
Fix allocation check. Both ports need to be at least negotiated before
we can attempt to allocate buffers.
2021-10-26 10:13:21 +02:00
Peter Hutterer
9acee530e2 meson: switch to "foo in array" style for meson arrays
In Meson, string.contains() is a substring check but array.contains() is
a full string check. Let's use 'foo in bar' style instead to avoid
confusion.

Supported since meson 0.49.0
2021-10-26 06:22:20 +00:00
Wim Taymans
c4d5c01429 impl-link: check port state before allocating
At least one port needs to be ready to do allocation.
2021-10-25 18:13:47 +02:00
Wim Taymans
f9a45a8b84 impl-link: improve debug 2021-10-25 18:12:24 +02:00
Wim Taymans
f7eafe1404 stream: use user param field to track param changes
count the number of changes and then when there are any, flip the
SERIAL bit in the param info so that the server can detect a
change. Without this, 2 updated params would not flip the bit and the
param changes would not be noticed.
2021-10-25 18:08:58 +02:00
Wim Taymans
5dfc3494dc map: use uintptr_t for the next pointer
This aligns the low bits of the next field with the low bits of the
pointer on big endian cpus.

Fixes #1747
2021-10-25 16:17:35 +02:00
Wim Taymans
c07f0ccb71 map: make _insert_at() fail on a removed item
You are only supposed to use _insert_new()/_remove() or _insert_at()
on the map, If we detect a _insert_at() to a removed item,
return an error because else we might corrupt the free list.

Update unit test accordingly.
2021-10-25 16:17:35 +02:00
Peter Hutterer
d5825b8551 meson: use meson variables for the SMs' uninstalled scripts
Both wireplumber and media-session have a meson variable now that
represents the -uninstalled script, complete with filled-in BUILDDIR
etc.

Let's use those variables for pipewire-uninstalled.conf so we don't have
to fill in the paths here.
2021-10-25 07:45:56 +00:00
Philippe Normand
397a67889a examples: Add explicit break statement in video-play-reneg 2021-10-25 07:26:15 +00:00
Guilherme Henrique
8641977816 meson: Set session manager variable based on renamed project 2021-10-24 19:53:02 +02:00
Gleb Popov
65aea7c05a Avoid compiler warning by #ifdef'ing a function used only on Linux. 2021-10-22 19:08:24 +03:00
Gleb Popov
a76ccfe64b Set PW_KEY_SEC_LABEL property on FreeBSD and avoid compiler warning. 2021-10-22 19:07:45 +03:00
Gleb Popov
43ef614537 Remove unused function. 2021-10-22 19:05:43 +03:00
Gleb Popov
e26b40a75f Fix compiler warning by spelling the initializer properly. 2021-10-22 19:04:47 +03:00
Wim Taymans
e1f21ebd0b stream: add spa command include 2021-10-20 11:51:50 +02:00
Wim Taymans
45d9c2c9df pw-cat: use default metadata for default source/sink 2021-10-20 11:40:33 +02:00
Peter Hutterer
6edbbf6a23 examples: fix NAME for bluez-session 2021-10-20 08:55:27 +00:00
KangJing Huang (Chaserhkj)
22aad6eaff Tuning some webrtc parameters 2021-10-19 18:59:07 +00:00
KangJing Huang (Chaserhkj)
2bfc03f43c Allow echo-cancel to select larger buffer sizes 2021-10-19 18:59:07 +00:00
Wim Taymans
002566ae83 test: fix stream ABI test 2021-10-19 17:16:25 +02:00
Wim Taymans
34609389e3 filter: add event to notify command
All commands send to the filter are emited in the command event.
2021-10-19 15:27:14 +02:00
Wim Taymans
dfa3f631ec stream: add event to notify commands 2021-10-19 15:23:20 +02:00
Wim Taymans
100c12460f client-node: handle events, send them to the server part 2021-10-19 12:28:23 +02:00
Wim Taymans
b4dc04c777 stream: use sizeof instead of hardcoded value 2021-10-19 12:26:02 +02:00
Wim Taymans
b6059fd007 stream: add some debug for commands 2021-10-19 12:25:46 +02:00
Wim Taymans
32c7121e54 impl-node: add method to send a command to a node 2021-10-19 12:24:47 +02:00
Barnabás Pőcze
4c27c3fd43 pulse-server: use for-each loop
Use `SPA_FOR_EACH_ELEMENT` to enumate the elements
in the array instead of an "indexed" loop.
2021-10-18 15:36:22 +02:00
Barnabás Pőcze
3fefb55ef2 pulse-server: return NULL instead of 0
... to be consistent with the vast majority of the
existing source code.
2021-10-18 15:36:22 +02:00