Commit graph

8923 commits

Author SHA1 Message Date
Wim Taymans
db2cbdf906 audioconvert2: DSP mode without format gives no ports 2022-06-16 09:09:27 +02:00
Wim Taymans
d53311099f audioconvert2: format is optional for convert mode 2022-06-16 09:09:27 +02:00
Wim Taymans
e78a93d358 audioconvert2: fix audio rate property 2022-06-16 09:09:27 +02:00
Wim Taymans
9babdee6cd audioconvert2: do input and output remapping
We remap the input channels to our cannonical layout and then remap it
to the target layout.
2022-06-16 09:09:27 +02:00
Wim Taymans
922a088129 audioconvert2: handle volume 2022-06-16 09:09:27 +02:00
Wim Taymans
0099b80098 audioconvert2: add properties 2022-06-16 09:09:27 +02:00
Wim Taymans
8cb0d9fd7b audioconvert: add channelmix and resample 2022-06-16 09:09:27 +02:00
Wim Taymans
399f638eb1 audioconvert: more work 2022-06-16 09:09:27 +02:00
Wim Taymans
7f9ddd0f15 Add audioconvert2 2022-06-16 09:09:27 +02:00
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