Commit graph

1739 commits

Author SHA1 Message Date
Pauli Virtanen
036c10717d bluez5: refcount transport acquire and release, let it manage fd
Backends don't necessarily allow for opening the same device multiple
times, and it shouldn't be necessary.

Since source and sink are not necessarily both running at the same time,
refcount the transport acquire/release so that it knows to close the fd
only when no source/sink is running.

Let the transport manage the fd lifecycle, also closing it once it is
not needed.

Don't return the fd from acquire(), since each transport is associated
with a single socket fd.
2020-12-28 13:38:41 +01:00
Wim Taymans
c84646b66f acp: add channel to string function
Add a function to convert the channel to a string and use that
instead of the unsafe one.

Fixes #519
2020-12-28 13:27:34 +01:00
Pauli Virtanen
509152108a sco-source: update clock position and duration at correct rate
The clock for sco-source may run at a different rate than the capture
rate. Update its position taking this into account.
2020-12-26 19:45:44 +01:00
Frédéric Danis
bd051e89a5 bluez5: improve debug 2020-12-25 14:57:30 +00:00
Jarkko Sakkinen
8f76d80fde spa: Fix a compiler warning caused by unchecked read()
Wrap read() with the CHECK() used elsewhre in the test program, in order
to render out the compiler warning represented by this transcript:

➜  pipewire (af38edea) ✔ make
ninja -C /home/jarkko/Projects/pipewire/build
ninja: Entering directory `/home/jarkko/Projects/pipewire/build'
[6/397] Compiling C object spa/plugins/alsa/test-timer.p/test-timer.c.o
../spa/plugins/alsa/test-timer.c: In function ‘main’:
../spa/plugins/alsa/test-timer.c:195:3: warning: ignoring return value of ‘read’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  195 |   read(state.timerfd, &expirations, sizeof(expirations));
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@iki.fi>
2020-12-24 17:54:32 +02:00
Gabriel Ebner
af38edea82 a2dp: automatic delay estimation 2020-12-23 19:13:29 +00:00
Wim Taymans
c81fe38285 alsa-pcm: limit channels to MAX
We don't support more than MAX channels

See #507
2020-12-23 20:07:51 +01:00
Gabriel Ebner
392fcda01f a2dp: add aac encoder 2020-12-23 06:15:15 +00:00
Mauricio Collares
d466cffe23 Revert "port a2dp-source.c changes to sco-source.c"
This reverts commit 3ad39d83a1.
2020-12-22 22:05:23 -03:00
Wim Taymans
a8937413e6 acp: add options to disable profile and port switching
See #498
2020-12-22 13:08:14 +01:00
Wim Taymans
948255f801 result: don't use undefined shift
Use a different way to generate the upper bits of the ASYNC mask
instead of undefined shift as warned by sanitizer
Add some unit test for this

See #497
2020-12-21 21:08:56 +01:00
Wim Taymans
08ba6097a1 loop: align buffer and invoke_items to 8 bytes
To avoid unaligned access messages from sanitizer

See #497
2020-12-21 20:46:13 +01:00
Wim Taymans
461e3db741 tests: fix some leaks
See #497
2020-12-21 20:07:02 +01:00
Wim Taymans
32c015d01e tests: free resample after usage
See #497
2020-12-21 19:52:35 +01:00
Wim Taymans
3c7699980f tests: make arrays a bit larger
See #479
2020-12-21 19:38:53 +01:00
Wim Taymans
16cf174fbc audiomixer: fix array sizes 2020-12-21 19:34:55 +01:00
Mauricio Collares
a30b7518f3 adapt msbc decoding to a MTU of 48 2020-12-21 10:18:24 +00:00
Mauricio Collares
3ad39d83a1 port a2dp-source.c changes to sco-source.c 2020-12-21 10:18:24 +00:00
Pauli Virtanen
32e861fcf5 ofono: fix wrong name for bluez5.msbc-force-mtu 2020-12-21 06:14:12 +02:00
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