Frédéric Danis
44d8a0a4c1
bluez5: Expose WBS in HFP AG SDP record
...
Updates the available values for SDP records and BRSF for both Hands-Free
profile version 1.7.
2021-02-09 16:12:29 +01:00
Wim Taymans
ecd1d3e1d7
Move node.pause-on-idle setting to config files
...
So that we can configure it.
Add some more docs to the config file
2021-02-08 17:19:47 +01:00
Wim Taymans
cd2a7aebaf
a2dp-sink: don't force flush on every buffer
...
Don't force flush on every buffer but accumulate enough data
first. This avoids sending many small packets when the quantum is
small.
See #680
2021-02-08 10:24:50 +01:00
Wim Taymans
e3d19e5602
a2dp: small cleanups
2021-02-08 10:24:27 +01:00
Wim Taymans
37d8cbd5d6
bluez5: make min buffer size match the latency
...
We request a latency of at least 512 so make sure we have buffers that
large.
See #680
2021-02-07 20:22:55 +01:00
Wim Taymans
63c5fadcfc
a2dp: fix compiler warnings
2021-02-07 19:43:09 +01:00
Huang-Huang
cd78003e66
bluez5: don't create device if there is no connected profile
2021-02-07 18:38:10 +00:00
Pauli Virtanen
f99eefeb4f
bluez5: a2dp-source: release transport if it went idle
...
Release the transport if it went idle, ensuring that the fd is closed,
and add safeguards we won't double-acquire/release it.
This can occur if the device pauses the playback. The transport may also
activate again later on, and in this case we need to reacquire a new fd.
Not closing the old fd causes problems in this case.
However, apparently the BlueZ Release() call fails if the transport is
idle. We just ignore the error and downgrade the error message; it might
not be safe to not call Release() because the idle property update is
async.
2021-02-07 18:32:44 +00:00
Pauli Virtanen
d3d31c4317
bluez5: don't force a2dp-source as driver
...
Don't force a2dp-source to be driver, because it won't advance clock if
the device is not sending data, and possibly blocks other streams.
2021-02-07 18:32:44 +00:00
Pauli Virtanen
d68bad4673
bluez5: fix a2dp-source clock rate + stuttering
...
Make a2dp clock advance at the correct rate.
Revert back to accumulating to a single buffer before sending it out.
What it did previously seemed hard to get to work properly with e.g.
aptx which produces block of varying sizes on decoding.
2021-02-07 18:32:44 +00:00
Pauli Virtanen
f1e56b2317
bluez5: provide media.name for a2dp source streams
...
A2DP source acts as Stream/Output/Audio, so provide media.name for it
indicating the device it comes from (e.g. shown in pulseaudio apps).
2021-02-06 20:24:04 +02:00
Pauli Virtanen
e0557e0ca8
bluez5: disable codec switching when in A2DP sink role
...
Devices that expect pipewire to function as a sink don't seem to like it
switching codecs. Disable codec switching when device is a source.
2021-02-06 18:12:19 +00:00
Pauli Virtanen
da5f17f653
bluez5: enable A2DP delay reporting
...
Inform BlueZ we'd like delay reporting from remote devices.
2021-02-05 05:00:06 +02:00
Pauli Virtanen
4cf0826b4f
bluez5: connect to SBC endpoints in order of preference
...
High sampling frequencies should be preferred. SBC-XQ should also
prefer dual channel.
2021-02-04 00:05:34 +02:00
Pauli Virtanen
fdbcaeb20f
bluez5: fix bug in endpoint sort function
2021-02-03 23:00:33 +02:00
Pauli Virtanen
0346b477ad
bluez5: make routes compatible with default-route
...
default-route wants to have SPA_PARAM_ROUTE_devices and
card.profile.devices before it will restore routes. Add these
also for bluez5-devices.
Fixes restoring volumes on Bluetooth profile change.
2021-02-03 10:49:30 +00:00
Huang-Huang
ab4223601f
bluez5: fix type of 'Codec' on remote endpoint
...
Vendor codec(LDAC, aptX) uses codec ID 0xff, use uint8 to fill it.
2021-02-03 00:01:29 +08:00
Wim Taymans
41063578a5
bluez5: use for_each_safe when items can be removed
...
Removing items when iterating a list of only allowed when using the
_safe versions of for_each
2021-02-02 11:48:47 +01:00
Wim Taymans
9d74bd61a7
bluez5: fix debug line
2021-02-02 11:00:16 +01:00
Pauli Virtanen
f841bc0b5b
bluez5: remove pipewire device when bluez device disappears
...
The pipewire device holds a pointer to the device, and should be removed
when BlueZ removes the underlying device.
2021-02-02 09:56:30 +00:00
Pauli Virtanen
4d9e9fcc33
bluez5: emit events on profile change and handle them
...
BlueZ may connect transports long after DEVICE_PROFILE_TRANSPORT_SEC has
passed on already existing devices. When this occurs, the bluez5
pipewire device should notify that the profile enumeration has changed.
Ignore these events during A2DP codec switch, and handle any changes
when the switch completes.
2021-02-02 09:56:29 +00:00
Pauli Virtanen
8ffde47080
bluez5: deal with device removal while we're switching the codec
...
Don't remove devices when there's a codec switch active, but check if
they should be removed once it completes.
2021-02-02 09:56:29 +00:00
Pauli Virtanen
5d97351970
bluez5: expose different A2DP codecs as separate profiles
...
The codecs probably should become a separate param later on, but this
workaround at least makes existing UIs work.
2021-02-02 09:56:29 +00:00
Pauli Virtanen
0c74b90f0e
bluez5: helper functions for querying codecs on device
2021-02-02 09:56:29 +00:00
Pauli Virtanen
b642c7f209
bluez5: support device capability checks beyond A2DP caps + split sbc-xq to separate codec
...
We would like to have BT device codec capability checks beyond what's
possible based on A2DP caps.
Split SBC-XQ to a separate codec, and enable it in the device-dependent
check (although currently it just uses the config option).
2021-02-02 09:56:29 +00:00
Pauli Virtanen
e860f2bb4e
bluez5: basic codec-switching framework
2021-02-02 09:56:29 +00:00
Pauli Virtanen
0908588d0c
bluez5: add codec check_caps + check vendor codec id for ldac & aptx
2021-02-02 09:56:29 +00:00
Pauli Virtanen
ce335b6d88
bluez5: keep track of remote endpoints
2021-02-02 09:56:29 +00:00
Huang-Huang
b9f2e6a8c4
bluez5: disable HSP AG by default in native backend
2021-02-01 03:39:49 +08:00
Huang-Huang
f6cc45f736
bluez5: allow headset roles selecting
2021-01-31 18:12:07 +00:00
Huang-Huang
b66e67db14
bluez5: unregister HSP dbus object paths when current HSP/HFP registration fails
2021-02-01 00:01:23 +08:00
Huang-Huang
c778bd734c
a2dp: improve codec specific transport socket send buffer size setting
2021-01-31 09:01:40 +08:00
Wim Taymans
28376d1db2
bluez: avoid warning
2021-01-30 19:31:52 +01:00
Pauli Virtanen
494194c4bf
bluez5: allow selecting codecs to use in config file
...
For debugging, it may be useful to disable some of the codecs. Enable
configuring this in config file, to make it more convenient for users,
who may not know how to recompile/install pipewire.
2021-01-30 17:23:07 +00:00
Wim Taymans
2a1875fc35
bluez: disable pause on idle by default
2021-01-29 15:37:32 +01:00
Wim Taymans
b2e4f1358d
bluez5: clean up some profile names
2021-01-27 20:50:23 +01:00
Wim Taymans
7fa1833310
bluez5: use function to get profile name
2021-01-27 20:39:02 +01:00
Wim Taymans
30d568403c
bluez5: mark profiles as available
2021-01-25 15:53:36 +01:00
Wim Taymans
26d5fe373e
bluez5: fix mute
...
Actually remember the mute state and use this when reporting our
state.
See #559
2021-01-25 15:21:23 +01:00
Wim Taymans
b3f728b1a0
bluez5: set device.bus to bluetooth
2021-01-25 13:07:31 +01:00
Pauli Virtanen
8b4fbac187
sco-sink: msbc timeout should follow processed samples
...
Remove wrong adjustment to the write timeout with mSBC.
The time between writes should be the 7.5ms at which we encode, which is
correct even when the frames get fragmented to incommensurate tx packets
(on USB BT adapters).
Fixes sound on RTL8176B. This adapter has large reported write_mtu, so
the wrong delay affected it.
2021-01-22 23:11:17 +02:00
Wim Taymans
1eb9d73814
bluez5: skip routes without a profile
2021-01-22 17:35:27 +01:00
Frédéric Danis
f464d8c596
bluez5: Fix NULL dereference in backend-native
...
Fixes : #602
2021-01-22 15:28:21 +00:00
Wim Taymans
be107317f5
Silence some dbus errors
...
Log info when a service is not running and disable it.
2021-01-14 17:11:42 +01:00
Frédéric Danis
1b10bee6f8
bluez5: Fix double free in backend-native
...
This occurs when exiting `pipewire-media-session` with a headset connected.
Fixes !395
2021-01-14 15:16:31 +01:00
Frédéric Danis
514836eebe
bluez5: Create spa_bt_transport when codec has been negotiated
...
This waits for codec negotiation completion, i.e. on `SLC` completion if
codec negotiation is not supported or on `AT+BCS` reception if codec
negotiation is supported, before creating the `spa_bt_transport`
2021-01-13 17:35:57 +01:00
Sebastian Apel
8ac5a89583
bluez5: Added mSBC support in bluze5 backend native, including check to make sure the computer's bluetooth adapter
...
supports the transport modes required for mSBC
2021-01-13 11:20:22 +01:00
Frédéric Danis
7bd86df6df
bluez5: Add simple HFP AG support to backend-native
2021-01-12 11:21:55 +01:00
Frédéric Danis
677f122f1d
bluez5: Split RFComm from spa_bt_transport
...
RFComm channel should not be part of the spa_bt_transport as this one may
change during HFP connection.
2021-01-12 11:21:55 +01:00
Frédéric Danis
00cce32514
bluez5: Rename backend-hsp-native to backend-native
2021-01-12 11:21:55 +01:00