Commit graph

20 commits

Author SHA1 Message Date
Pauli Virtanen
d1b1b84935 sco-sink: don't stop timeouts if more data is needed
The sink timeouts need to continue even if there is currently not enough
data, as otherwise playback will stop.
2021-01-01 15:36:27 +02:00
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
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
Frédéric Danis
1759aa834f bluez5: Add mSBC support to sco-sink
This has been tested with a UART Bluetoth chipset, on a Raspberry Pi 3.
It doesn't seem to work with USB Bluetooth chipset/dongle.
2020-11-16 18:15:39 +01:00
Wim Taymans
6b50279364 bluez5: add a simple clock to sinks/sources
Fixes #269
2020-09-02 13:36:22 +02:00
Frédéric Danis
2d91e62a19 bluez5: Workaround incorrect SCO MTU
It seems that some BT adapters don't return correct SCO MTU, see
https://marc.info/?t=148586768600002&r=1&w=2
Do not try to autodetect the MTU and use a fix MTU size of 48 bytes.
2020-07-17 19:36:33 +02:00
Julian Bouzas
23788ee617 sco-sink: clean up and write data at a constant bitrate
Audio data received by HSP/HFP devices need to be sent at a constant
bitrate to achieve smooth playback
2020-07-17 15:13:03 +00:00
Wim Taymans
49332eb30f bluez5: handle suspend 2020-07-03 16:23:17 +02:00
Wim Taymans
7b129c1020 sco: remove transport hooks on destroy 2020-07-03 16:10:46 +02:00
Wim Taymans
aafd1e7298 improve debug
Improve log so that debug level 3 gives a reasonably readable overview
of what is going on.
2020-04-22 12:47:18 +02:00
Wim Taymans
c4cf5e6629 bluez5: protect against NULL transport
The transport can be destroyed at any time, make sure we don't
crash when it does.
2020-03-23 13:49:30 +01:00
Wim Taymans
a528189d26 slave -> follower
We use master/follower terminology everywhere.
2020-02-21 10:47:32 +01:00
Wim Taymans
f391353c7f Make interface types a string
This is more in line with wayland and it allows us to create new
interfaces in modules without having to add anything to the type
enum. It also removes some lookups to map type_id to readable
name in debug.
2019-12-19 13:36:04 +01:00
Wim Taymans
feb8dd3a34 Add include of keys.h 2019-11-21 09:34:08 +01:00
Wim Taymans
9ffec214b8 fix includes 2019-10-25 15:01:02 +02:00
Wim Taymans
81fc595e3d add defines for max buffer size 2019-10-24 12:51:34 +02:00
Wim Taymans
c8ffcaaefe plugins: just check the data pointer
We don't need to look at the data type, we just just be happy when
the data pointer is filled in.
2019-10-16 12:23:42 +02:00
Wim Taymans
8b85cc225e rename HAVE/NEED_BUFFER -> HAVE/NEED_DATA
It is more generic and works with control-only ports as well
2019-09-16 12:55:23 +02:00
Julian Bouzas
3a43fac0c2 sco-sink: fix several timeout issues 2019-08-22 00:07:04 +02:00
Julian Bouzas
de031b42b1 bluez: add sco-sink and sco-source nodes 2019-08-01 15:31:54 +02:00