Commit graph

1720 commits

Author SHA1 Message Date
Pauli Virtanen
f1d9b2317c sco-sink: adjust data flush timeout for msbc according to packet size
Instead of using a hardcoded value for the minimum delay between writes,
select it according to the mtu/packet size that is currently used.

This is necessary for correct playback with lower mtu values.
2020-12-21 04:16:11 +02:00
Pauli Virtanen
4144427655 ofono/hsphfpd: force write_mtu=24 for mSBC codec
Kernel should provide the correct mtu/packet size to use for SCO socket
I/O, but it does not currently appear to (as of linux 5.9), see
https://lore.kernel.org/linux-bluetooth/20201210003528.3pmaxvubiwegxmhl@pali/T/

When using mSBC, instead of using the (incorrect) kernel-provided value,
hardcode mtu to 24, corresponding to ALT1 mode.  BT-UART adapters should
not require specific mtu, and it appears most BT-USB adapters only
support ALT1, see
https://lore.kernel.org/linux-bluetooth/20201210012003.133000-1-tpiepho@gmail.com/

This code needs to be revised when the issue is sorted out on the kernel
side.

Add setting bluez5.msbc-force-mtu for easier debugging in special cases.

Leave read_mtu as the detected value --- it does not seem to affect
whether BT-USB can record, but Raspberry Pi BT-UART fails to record if a
different value is used.
2020-12-21 04:16:11 +02:00
Huang-Huang Bao
b3bbc62870
a2dp: correct ldac config table
Signed-off-by: Huang-Huang Bao <eh5@sokka.cn>
2020-12-20 22:34:51 +08:00
Wim Taymans
2d89ad8533 profiler: add xrun_count and latency to profiler 2020-12-20 12:32:54 +01:00
Walter Lozano
9f766dd708 alsa: add warning in case of partial read/write
Currently alsa_read and alsa_write assumes that all the frames committed
using snd_pcm_mmap_commit are read or written, which is probably true.
However, as it could be some corner cases add a warning to notice this
fact.

Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
2020-12-20 00:23:52 -03:00
Huang-Huang Bao
4621792354
a2dp: add missing function abr_process in a2dp_codec_aptx
Signed-off-by: Huang-Huang Bao <eh5@sokka.cn>
2020-12-20 04:53:21 +08:00
Huang-Huang Bao
9653d748a3
a2dp: fix a2dp encoding under sampling rate of 88200, 96000
Signed-off-by: Huang-Huang Bao <eh5@sokka.cn>
2020-12-19 20:25:49 +08:00
Huang-Huang Bao
16f5058af9
a2dp: add ldac ABR support
Signed-off-by: Huang-Huang Bao <eh5@sokka.cn>
2020-12-19 19:17:15 +08:00
Wim Taymans
a25f1a6a1d acp: pass channelmap around
so that we can use it as a default in channelmix
2020-12-18 17:18:53 +01:00
Wim Taymans
c3973fd9ec pod: add a HINT_DICT flag
We can use this to mark the ROUTE_info property and hopefully improve
the debugging output later.
2020-12-18 16:40:35 +01:00
Wim Taymans
9fb1b02352 acp: when we have a device with no port, go to the next device
Fixes an issue where a device have no ports and then it would
stop enumerating the ports of the other devices.
2020-12-18 16:28:56 +01:00
Wim Taymans
67d10ad3c7 alsa-acp: collect channelmap from volume update
It's not used yet but would ideally need to be used to remap the
volumes.
2020-12-18 16:22:00 +01:00
Wim Taymans
b05dcacc99 alsa-acp: add channel map with soft volume 2020-12-18 16:21:18 +01:00
Wim Taymans
94ec34d138 alsa: rename seq-source -> seq-bridge 2020-12-18 11:28:31 +01:00
Wim Taymans
938e2b1451 v4l2: profiles params are not implement yet 2020-12-17 16:13:19 +01:00
Huang-Huang Bao
161c05d737 a2dp: fix aptx hd codec negotiation
Signed-off-by: Huang-Huang Bao <eh5@sokka.cn>
2020-12-17 14:17:37 +00:00
Wim Taymans
cdb6c94c8e acp: undo upstream change that breaks duplex mode 2020-12-17 13:05:37 +01:00
Wim Taymans
92f4831c9f bluez5: handle NULL profile, don't run the filter on it 2020-12-17 12:25:38 +01:00
Wim Taymans
d968ab56a5 a2dp: report PARAM_IO, as advertized 2020-12-17 12:25:12 +01:00
Wim Taymans
6e6cd0d684 acp: add new files as well 2020-12-17 12:07:31 +01:00
Wim Taymans
d6530bc0cd acp: sync with pulseaudio 2020-12-17 12:04:18 +01:00
Wim Taymans
90bdab8414 bluez5: improve param enumeration
Return -EIO when we can't enumerate the params
Don't check for end-of-params in a2dp-sink, we do that in the codec.
2020-12-17 11:43:53 +01:00
Wim Taymans
e8dcd7f5f9 acp: sync
Remove >2 channel support until upstream
Fix availability groups
2020-12-17 11:03:31 +01:00
Wim Taymans
22c793aa87 v4l2: add inotify support
Wait with inotify until we can access the device node before emiting
the new device.
Clean up alsa-udev and make it more like v4l2-udev
2020-12-17 10:43:57 +01:00
Wim Taymans
69da2ec601 alsa: refactor some helpers to add/remove a card 2020-12-17 09:36:19 +01:00
Wim Taymans
9b414b0a9e a2dp: fix a warning 2020-12-16 19:50:14 +01:00
Huang-Huang Bao
30755c4a44
bluez5: fix ldac stuttering
Signed-off-by: Huang-Huang Bao <eh5@sokka.cn>
2020-12-17 02:29:04 +08:00
Wim Taymans
1636e08368 alsa: first rough attempt at inotify support
Wait until the device is accessible before exposing it.
2020-12-16 19:18:32 +01:00
Wim Taymans
05e06f16ba audioconvert: improve channel remap some more
See #461
2020-12-16 12:53:11 +01:00
Wim Taymans
3803055403 audioconvert: remap channels only once
for planar formats, we should not remap twice or we undo the
remapping.

See #461
2020-12-16 09:53:29 +01:00
Wim Taymans
13cb51efbd spa: fix array type info
Descend into the type info of the array. Fixes names of channels
in position array.
2020-12-15 16:06:10 +01:00
Marijn Suijten
44882f5ab3 acp: Probe and set up HW volume for cards detected through UCM
The codepath `pa_alsa_ucm_add_ports` -> `probe_volumes` ->
`pa_alsa_path_probe` was never called leading to no HW volume being set
up when loading a card through UCM. PulseAudio calls this from
`card_set_profile` -> `pa_alsa_{sink,source}_new`.
2020-12-15 09:36:52 +00:00
Marijn Suijten
d636cadbb8 acp: alsa-ucm: Print iterated path name instead of current path
data->path (current path for selected profile) is not set yet here
resulting in segfaults. We are not interested in printing that anyway
but instead care about the iterated `path` from data->paths.
2020-12-15 09:36:52 +00:00
Wim Taymans
0e910a9d03 audioconvert: correctly remap in fmtconvert
Only remap channels on the planar buffers.

See #472
2020-12-15 09:47:37 +01:00
Wim Taymans
3ac2bc0ad2 pod: descend in array type if possible 2020-12-14 16:18:57 +01:00
Wim Taymans
7c5cb5a281 param: the position property is an array of channelpositions 2020-12-14 16:18:12 +01:00
Wim Taymans
c61502f57c acp: rename fields
pulseaudio -> pipewire
PULSE_* -> ACP_*

Hopefully this does not interfere with pulseaudio anymore.

See #436
2020-12-14 15:01:05 +01:00
Wim Taymans
1934b0adb9 bluez5: add codec name to node 2020-12-14 13:29:12 +01:00
Wim Taymans
7f6339e307 bluez5: Don't deref the transport to get the fd
Use the configured fd in the source for reading and writing because
the transport might be disconnected and cleared from the main thread
at any time.
2020-12-14 13:17:48 +01:00
Wim Taymans
c6f94def08 null-sink: fix null sink scheduling
The null sink pulls in data and provides data after it got the
data in _process.

See #472 #442
2020-12-14 10:21:13 +01:00
Wim Taymans
0f528dc73c splitter: place destination address in tmp array
We then remap the tmp array to the destination array.

Fixes #477
2020-12-14 09:49:44 +01:00
Wim Taymans
c1bdc58d31 a2dp: prefer aptx_hd over aptx 2020-12-11 20:04:57 +01:00
Wim Taymans
7763154239 a2dp: increase temp buffer
ldac frames are larger and need more space.

See #449
2020-12-11 19:23:30 +01:00
Wim Taymans
d71259a02c alsa: handle batch devices
For batch devices that are not usb devices, lower the period and
add an extra period of heardoom to avoid xruns.

See !330
2020-12-11 17:38:27 +01:00
Wim Taymans
6bc8ab18dc bluez5: aptx wants S24 input sample format 2020-12-11 15:13:59 +01:00
Wim Taymans
8b52e44836 bluez5: support other ldac bit depth
Make the format_info const in codec_init, we just need to read the
final negotiated format in some cases.
Add some more ldac bit depths we support.
2020-12-11 13:30:11 +01:00
Wim Taymans
8cb1db5a61 alsa-udev: add property to emit ACP devices 2020-12-11 10:10:20 +01:00
Haochen Tong
7dd69651b8
test-audioconvert: fix test failure after 7d73f0b8 2020-12-10 14:30:28 +01:00
Wim Taymans
0237821b38 a2dp: reorder codecs a little
Move higher quality codecs first.
2020-12-09 20:56:29 +01:00
Wim Taymans
7768a87a0b alsa: make it possible to fix format 2020-12-09 20:33:57 +01:00