LADI
/
spa
1
Fork 0
Commit Graph

8914 Commits

Author SHA1 Message Date
Barnabás Pőcze 2d060a5a72 INSTALL.md: add note about uninstallation
At the moment, meson stores the list of installed files
in the build directory, and this list must be kept intact
for uninstallation to work. Add a note about it.
2022-06-15 19:11:50 +00:00
Barnabás Pőcze 33a8cf2a23 INSTALL.md: remove unnecessary colon 2022-06-15 19:11:50 +00:00
Barnabás Pőcze c757ed6d41 INSTALL.md: do not specify `sudo` for installation
Depending on the installation prefix and destination dreictory,
`sudo` may be unnecessary, so remove it from the command,
but mention that it may be needed.
2022-06-15 19:11:50 +00:00
Barnabás Pőcze 78d5315c76 INSTALL.md: emphasize some things with monospace font
Make some mentions of paths, programs, environmental variables monospace.
2022-06-15 19:11:50 +00:00
Barnabás Pőcze c195b5eda0 INSTALL.md: specify build directory for (un)installation
Most meson command invocations specify the build directory
in the document, do the same for `meson install` and
uninstallation.
2022-06-15 19:11:50 +00:00
Barnabás Pőcze f6ddac3f8e INSTALL.md: use `meson compile`
The "compile" subcommand is available since meson 0.54,
and it provides a backend agnostic way to start the build.
2022-06-15 19:11:50 +00:00
Barnabás Pőcze 24177c3bae INSTALL.md: link to meson and ninja websites 2022-06-15 19:11:50 +00:00
Jonas Holmberg 671fc51d27 pw-cli: Work without readline too
Build and install pw-cli using getline() (standardized in POSIX.1-2008)
if readline is not found.
2022-06-15 16:37:01 +02:00
Wim Taymans b9fa0e6f28 pw-cat: also set rate/latency for pipe
Move the latency and rate properties to a separate function so that
we can call it in all cases and not just for sndfile io.
Simplify format handling.
2022-06-15 12:35:56 +02:00
Ole Salscheider 3695611b20 channelmix: Assign slev in mixing matrix when generating side/rear from front
This way, PSD upmixing sounds much more natural and is in line with the
original publication.
2022-06-14 10:58:25 +00:00
Wim Taymans 68bafcf166 pulse-server: Don't send more than fragsize chunks
Send exactly fragsize chunks when capturing.

See #2418 and #2434
2022-06-14 11:20:18 +02:00
Peter Oliver d3597ed149 alsa: Disable IEC958 on Audioengine HD3
As discussed in #2112.
2022-06-14 06:58:41 +00:00
Wim Taymans 8e1f0628f7 channelmix: add 3p1_2 and use this for quad conversions
Simplify some SSE versions
2022-06-13 20:35:00 +02:00
Wim Taymans c1a61a7941 pulse-server: only append .monitor for capture streams 2022-06-13 20:12:10 +02:00
Wim Taymans f88134232d pulse-server: fix name when moved to monitor
When a stream is moved to a monitor, make sure we append the .monitor
suffix to the node name.

Fixes #2440
2022-06-13 19:54:35 +02:00
Ole Salscheider 5dc4434dc7 channelmix: Implement PSD upmixing for stereo -> quad
Fixes #2436.
2022-06-13 14:19:23 +00:00
Ole Salscheider 354a04c91d Channel mixer: Remove channelmix_f32_2_4_sse
It does not have PSD upmixing implemented and does not allow to disable
the simple upmixing algorithm either.

Fixes #2438.
2022-06-13 14:19:23 +00:00
Wim Taymans a1d4b41c34 channelmix: fix control handling
We need to use the control type of the control we're actually going
to use.
2022-06-13 16:17:53 +02:00
Frédéric Danis 8bd1d4c7c9 bluez5: Fix LC3plus plugin build
LC3PLus plugin should not depend on LDAC C args to build
2022-06-10 18:16:49 +02:00
Jonas Holmberg aa3aa6bb05 stream: Fix memory leak
Cleanup controls instead of inserting new elements with id 0 into the
controls list every time there is an unsupported or invalid PropInfo in
an info_changed node event.
2022-06-10 11:50:40 +02:00
Wim Taymans 9255cfbd7c pw-cli: add -m option
To keep the mainloop running and keep the process (and objects) alive.
Interesting when doing pw-cli load-module libpipewire-module-loopback.
2022-06-09 17:24:13 +02:00
Wim Taymans 4821c7ca2f pulse-server: don't append "/pulse" to PULSE_RUNTIME_PATH
Fixes #2431
2022-06-09 17:06:07 +02:00
Wim Taymans 31bf631057 0.3.52 2022-06-09 10:35:24 +02:00
Barnabás Pőcze c8c2526f87 pulse-server: destroy modules first
The `impl::servers` list contains all servers, and they are all
destroyed in `impl_clear()`. However, by that time, modules were
not freed previously, so if there were any instances of
*module-protocol-native-tcp* loaded, then the unload() method
of those would call `server_free()` on already freed servers,
resulting in use-after-frees. Fix that by unloading modules
before destroying the servers.

==451490==ERROR: AddressSanitizer: heap-use-after-free on address 0x612000006050 ...
READ of size 8 at 0x612000006050 thread T0
    #0 0x7f45edb19a0c in server_free ../src/modules/module-protocol-pulse/server.c:1022
    #1 0x7f45edb46c7d in module_native_protocol_tcp_unload ../src/modules/module-protocol-pulse/modules/module-native-protocol-tcp.c:66
    #2 0x7f45eda893c7 in module_unload ../src/modules/module-protocol-pulse/module.c:128
    #3 0x7f45edaf7269 in impl_unload_module ../src/modules/module-protocol-pulse/pulse-server.c:5336
    #4 0x7f45edaa1583 in pw_map_for_each ../src/pipewire/map.h:238
    #5 0x7f45edaf79c5 in impl_clear ../src/modules/module-protocol-pulse/pulse-server.c:5358
    ...

0x612000006050 is located 16 bytes inside of 264-byte region [0x612000006040,0x612000006148)
freed by thread T0 here:
    #0 0x7f45f30be672 in __interceptor_free /usr/src/debug/gcc/libsanitizer/asan/asan_malloc_linux.cpp:52
    #1 0x7f45edb1a48a in server_free ../src/modules/module-protocol-pulse/server.c:1040
    #2 0x7f45edaf730b in impl_clear ../src/modules/module-protocol-pulse/pulse-server.c:5347
    ...

Fixes: f181210b29 ("pulse-server: properly unload modules")
2022-06-09 03:02:06 +02:00
Wim Taymans b99c71262e alsa: force same clock only for pro audio profile
Assume that capture and playback nodes from a device have different
clocks. This enables the adative resampler to match them. A lot of devices
actually have slightly different rates and would work out of the box
with this fix.

Make an exception when the card is configured in the pro audio profile.
Then we force the same clock on all device nodes and avoid resampling
and rate matching. This can still be changed with a session manager
override.
2022-06-08 17:03:50 +02:00
Wim Taymans 47e1f38f03 pw-dump: also dump object removal
When in monitor mode, also dump object removal with info/props as
NULL.

Fixes #2426
2022-06-08 16:24:22 +02:00
Wim Taymans 5b23adbb65 examples: fix modifier handling
Use a preallocated array of modifiers instead of using a dynamically
allocated one that is too small.
2022-06-08 15:13:03 +02:00
Aleix Pol 74646d1be5 dma-buf.dox readability 2022-06-08 15:07:26 +02:00
Aleix Pol 04b579f5f3 video-play-fixate: Address initialising modifiers
We were writing twice in the same space, leaving another one undefined.
2022-06-08 11:24:52 +00:00
Pauli Virtanen 5b429607a8 bluez5: disable dummy avrcp player by default
It causes some headsets behave strangely. See pipewire#2391,
pipewire#1853.

The BlueZ issue of AVRCP volume sometimes missing that this worked
around was fixed in recent versions. The issue of some headsets not
sending volume without AVRCP player remains, but it appears this breaks
more headsets than fixes.
2022-06-07 18:13:06 +03:00
Wim Taymans 9493dafe44 vulkan: update example shaders 2022-06-06 12:13:20 +02:00
Wim Taymans 80f317344e vulkan: fix validation errors 2022-06-06 12:13:20 +02:00
Wim Taymans d40e6aeedd vulkan: use image sampler 2022-06-06 12:13:20 +02:00
Wim Taymans b02ebec954 vulkan: use images
The filter can now run shadertoy filters.
2022-06-06 12:13:20 +02:00
Wim Taymans 24fc972164 vulkan: add some more error checks 2022-06-06 12:13:20 +02:00
Wim Taymans 6e681fc98d vulkan: more improvements 2022-06-06 12:13:19 +02:00
Wim Taymans e6f01563ab vulkan: support multiple streams of buffers 2022-06-06 12:13:19 +02:00
Wim Taymans 332e8b7029 vulkan: start of vulkan filters 2022-06-06 12:13:19 +02:00
Pauli Virtanen 8898a6a8f0 bluez5: don't consider profiles the adapter doesn't have
Don't try to reconnect or wait for profiles, which cannot be connected
because the adapter doesn't have the counterpart sink/source profile.

E.g. we should not reconnect/wait for HFP HF on remote device, if
we don't have the corresponding HFP AG.
2022-06-05 18:15:42 +00:00
Pauli Virtanen 8383ee8552 bluez5: a2dp-sink: address A2DP transport acquire failure mode
If A2DP remote does not acquire its pending transport within a timeout,
we won't get a write error in a2dp-sink, but instead the transport
becomes idle.  Currently, we continue writing to the socket as if
everything was fine, even though the data won't be processed at the
remote end.

Handle this by stopping the node and emitting a node error event.
Pipewire may then restart the node to retry.
2022-06-05 18:10:01 +00:00
Pauli Virtanen fc4f831afa audioconvert: forward follower node errors
If the follower of the adapter emits an error event, the adapter needs
to forward it to upper levels so that they know the node has errored,
and handle the situation.
2022-06-05 18:10:01 +00:00
Barnabás Pőcze c248091528 pulse-server: module-switch-on-connect: remove dead code and one allocation
As Coverity correctly points out, the `if (blocklist)` condition
is never true after the `out` label, so this commit makes some
changes to remove the dead code.

First of all, the `regex_t` object is directly embedded in the
module's data struct, so the `malloc()` call can be removed,
and thus there is no need for the cleanup code anymore, so everything
after the `out` label is also removed.

Furthermore, two NULL checks are removed which check `d->blocklist`
from `module_switch_on_connect_unload()` and `manager_added()`
because both of those functions can only ever run if the `d->blocklist`
regex object has been successfully initialized in `module_switch_on_connect_prepare()`.
Those checks were not strictly needed to begin with.
2022-06-05 18:04:03 +00:00
Pauli Virtanen 8949d45c69 bluez5: check decode/encode capability also at registering
Endpoints without decode/encode capability are skipped in the object
manager, but we should also skip them in the registration calls (even
though in practice this doesn't appear to matter).
2022-06-05 18:03:24 +00:00
Wim Taymans a84412ccb7 modules: improve parsing of rate and channels 2022-06-04 18:54:50 +02:00
Barnabás Pőcze f2c53622d2 pipewire-jack: use `jack_client_close()` to free client in error path
The client needs to be cleaned up properly, otherwise references
to its storage may remain, which can later result in use-after-frees.
For example, the via the various embedded `spa_hook`s in it.

See #2394
2022-06-04 12:42:44 +02:00
Barnabás Pőcze c6a5698eac pipewire-jack: check before destroying
Check pointers before calling the destructors (where needed), so that
a not fully constructed `client` object may be passed to `jack_client_close()`.

Furthermore, remove the metadata proxy and object listeners as well.
2022-06-04 12:42:17 +02:00
Barnabás Pőcze 15d5ab2425 pipewire-jack: move client-node setup right after creation
Move the client-node setup code right after the client-node
creation, so that they are close to each other.
2022-06-04 12:42:17 +02:00
Barnabás Pőcze d7a7d7f738 pipewire-jack: initialize certain members right after allocation
Move the initialization of some of `client`'s members right after
allocation, so that it will be simpler to tear down the client object
even if `jack_client_open()` fails later.

Furthermore, initialize `client::driver_id` to `SPA_ID_INVALID`.
2022-06-04 12:42:17 +02:00
Wim Taymans 0f839c7b61 modules: clamp input offset and size
So that we don't cause memory errors with invalid input.
2022-06-04 11:47:48 +02:00
Wim Taymans 24ba3f4d92 module-roc: improve sender loop
FIxes #2422
2022-06-04 10:57:20 +02:00