Huang-Huang Bao
01df7671d5
bluez5: avoid log spamming on debug log level, use log level 'warn' on hsphfpd or ofono registering fail instead of 'error'
2021-03-16 10:31:08 +00:00
Huang-Huang Bao
374180e211
bluez5: pass per-device settings to codec handler, make 'bluez5.sbc-xq-support' a per-device setting
2021-03-16 10:31:08 +00:00
Huang-Huang Bao
af8272fe08
bluez5: create device handle before profile negotiation started so that profile handler can retrieve per-device settings
2021-03-16 10:31:08 +00:00
Wim Taymans
1b1a3b96ec
alsa: improve startup
...
Start with an extra period of silence.
Reconfigure a new timeout if we are too far off from the desired
buffer fill level. Reduce this level to the maximum error we
tollerate.
With this we use the extra period of silence to reconfigure the
timeout until we are close enough and we can start the dll with a
small error.
See #892
2021-03-16 09:48:12 +01:00
Pauli Virtanen
8f075619b2
bluez5: set volume for both channels when switching HFP -> A2DP
...
Retain mono volume level set with HFP, for A2DP, in case session manager
fails to restore it.
2021-03-15 23:24:40 +02:00
Pauli Virtanen
c7ad443e03
bluez5: update supported codec list when profiles changed
...
When A2DP is connected and new device profiles appear, update also
supported codec list.
Fixes missing codec profiles when A2DP is connected late.
2021-03-15 20:47:22 +02:00
Ivan
4c9af21ec6
meson: Add 'feature' options to enable/disable bluetooth codecs
...
Fixes : #606
2021-03-15 00:14:23 +02:00
Wim Taymans
b07bfd0661
alsa: fix dll handling
...
Pass the right value for the rate, we need to pass the graph rate.
Don't reduce bandwidth, it is not needed.
Fixes timings for reading the alsa-sequencer.
2021-03-14 21:42:17 +01:00
Wim Taymans
f372de8608
resample: refactor rate match code
...
Use the same code to start rate matching so that we get the same
results for passthrough.
2021-03-14 20:06:45 +01:00
Wim Taymans
017900575c
alsa: don't compensate for resampler delay
...
Don't try to move closer to the read/write pointers in the ringbuffer
to compensate for the resampler delay. We might not have enough time
anymore to complete a cycle without xruns. The delay is properly
reported in the clock times and should also be reported on the port
latency eventually.
2021-03-14 17:08:04 +01:00
Wim Taymans
17fd38c3a5
channelmix: use front-center matrix values
...
Use the front-center matrix values to mix left and right.
2021-03-14 15:42:53 +01:00
Wim Taymans
c4e3b5adbc
alsa: don't double the resampler delay
...
The delay of the resampler is what it reports, don't double it.
See #854
2021-03-14 14:13:37 +01:00
Wim Taymans
cc12755c6c
json: ignore '\0'
...
We ignore '\0' chars as we use the string length to check for the
end and the 0 chars might be inserted to parse the json in-place.
2021-03-14 10:23:40 +01:00
Wim Taymans
2d1f84fd7d
json: Move past the end char of a symbol
...
So that we can put a \0 there and continue parsing the rest of
the string. This allows us to in-place parse_string.
2021-03-14 09:28:38 +01:00
Wim Taymans
da5c43fb33
logger: printf \n even when colors disabled
2021-03-13 20:36:23 +01:00
Jan Alexander Steffens (heftig)
6e2f78fffc
acp: Check return value of asprintf
...
Building with `-D c_args="-D_FORTIFY_SOURCE=2"` triggers warnings:
../spa/plugins/alsa/acp/acp.c: In function ‘add_pro_profile’:
../spa/plugins/alsa/acp/acp.c:298:2: warning: ignoring return value of ‘asprintf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
298 | asprintf(&device, "hw:%d", index);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../spa/plugins/alsa/acp/acp.c:334:4: warning: ignoring return value of ‘asprintf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
334 | asprintf(&name, "Mapping pro-output-%d", dev);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../spa/plugins/alsa/acp/acp.c:364:4: warning: ignoring return value of ‘asprintf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
364 | asprintf(&name, "Mapping pro-input-%d", dev);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-13 14:50:42 +00:00
Wim Taymans
a9bf93030e
resample: limit input size to max size of empty space
...
When flushing use the max size of the empty space, not the
max size of the input buffers, which might be larger.
2021-03-13 13:53:41 +01:00
Wim Taymans
801bd98233
audioconvert: use preallocated empty buffer to drain
...
Avoid calling memset on a large piece of memory when draining
the resampler because it might use up all the allocated time in
our realtime thread. Instead use a prealloced empty buffer.
2021-03-13 12:54:41 +01:00
Huang-Huang Bao
d6be84ddd0
bluez5: close sco socket if bluetooth daemon disappeared
...
Fixes pipewire/pipewire#853
2021-03-13 19:06:49 +08:00
Dmitry Sharshakov
e2ac16ccbd
fix: remove v-battery when device disconnects
2021-03-12 15:45:41 +00:00
Dmitry Sharshakov
a0ac3ac8dd
fix: cancel and free battery register pending call
2021-03-12 15:45:41 +00:00
Dmitry Sharshakov
5c9028a94d
bluez5-dbus: move battery provider functions, fix ghost batteries
2021-03-12 15:45:41 +00:00
Dmitry Sharshakov
48cc5915fb
chore: backend-native: remove unused define
2021-03-12 15:45:41 +00:00
Dmitry Sharshakov
2683c1ef5e
backend-native: report battery status to BlueZ
2021-03-12 15:45:41 +00:00
Dmitry Sharshakov
a1ed8aec68
chore: bluez5: move spa_bt_monitor to common header file
2021-03-12 15:45:41 +00:00
Dmitry Sharshakov
0078b3b73e
backend-native: get battery status via HFP
2021-03-12 15:45:41 +00:00
Wim Taymans
86cf4ad5a5
audioconvert: keep better track of changed params
...
Keep all the children param flags around and use those to decide
if something changed. Also don't change the param flag serial when
we are simply adding a listener.
This should reduce the number of param updates, most notably the
PropInfo that was updated along with the Props on volume changes.
2021-03-12 11:10:43 +01:00
Wim Taymans
6562a2ab79
channelmix: clean up param handling
...
Use defines to access the different params.
Fix the name of the function to emit properties.
2021-03-12 10:36:08 +01:00
Wim Taymans
f41de50b28
json: escape and unescape invalid unicode chars
2021-03-12 09:23:33 +01:00
Wim Taymans
9cd9339c2a
alsa-pcm: only disable IRQ when not batch
...
For batch devices we want to keep the IRQ so that the pointers are
updated with the period-size. Brings my UMC404HD to 4.8ms roundtrip
times with IRQ at 6 sample and batch enabled.
2021-03-11 18:37:13 +01:00
Wim Taymans
b4cf78b5a6
alsa-pcm: improve debug
2021-03-11 18:34:55 +01:00
Wim Taymans
d63f4234ae
channelmix: remap volumes
...
The volumes set with the properties need to be reordered to match
the volumes of our internal layout.
2021-03-11 11:26:26 +01:00
Thibault Saunier
485bae5eb0
meson: Use feature options everywhere it makes sense
2021-03-10 20:18:34 +00:00
Pauli Virtanen
98bedb3895
bluez5: don't set a2dp codec for source device initial profiles
...
Source devices don't have the a2dp codec profiles, so don't set a codec
profile as the initial one.
2021-03-10 21:32:01 +02:00
Wim Taymans
4f816c1fb0
loop: never try to block in the thread
...
When we are calling invoke from the thread, the call will be completed
in the thread and there is no need to block for completion.
2021-03-10 13:01:19 +01:00
Wim Taymans
63a34f4f84
alsa: after XRun, fill with previous threshold
...
It is possible that the quantum has changed before the xrun and
then we will assume the previous quantum was in the device.
2021-03-09 15:46:44 +01:00
Wim Taymans
aa0e0043d3
alsa: only recompute threshold when quantum changes
2021-03-09 13:21:50 +01:00
Wim Taymans
fc044a37af
resample: don't copy too much
...
When we are in passthrough mode, copy only the min of input and
output size or else we might overread/overwrite.
See #875
2021-03-09 12:47:38 +01:00
Wim Taymans
c0ab4b1b8d
bluez5: fix compiler warning
2021-03-09 12:25:20 +01:00
Pauli Virtanen
808b54bc19
bluez5: sco-io: fallback packet size when read size unknown should be even
...
Reported write MTU is odd for some adapters, which will misalign CVSD
frames, so round fallback value to even.
2021-03-09 08:03:21 +00:00
Wim Taymans
e095105e57
resample: fix passthrough check
...
Only in passthrough we need to just copy input to output. Otherwise
we need to ask the resampler for the conversion size.
2021-03-09 08:52:43 +01:00
Pauli Virtanen
511bafb436
bluez5: release transports on profile change
...
SCO transports have timer-delayed release, but they need to be released
immediately when changing profiles to close connections before switching
to A2DP.
2021-03-08 23:42:08 +02:00
Wim Taymans
6fd870a5f0
alsa: pass the right direction to ucm_set_port()
...
The function requires true for playback ports and false otherwise.
See #867
2021-03-08 17:40:32 +01:00
Wim Taymans
cab5cf3ccb
alsa: add resampler delay in clock delay reporting
2021-03-08 17:12:00 +01:00
Wim Taymans
99b2973c31
resample: disable when not used.
2021-03-08 16:55:56 +01:00
Wim Taymans
2c1f8af2e6
alsa: correct dll error after quantum change
...
When the quantum is changed, the error between the current and
expected buffer levels needs to be corrected with the quantum
difference.
For example, say we are running with a 1024 quantum and the quantum
is changed to 8192, when we wake up the filled level might be
1016 vs expected 8192, 1024 - 8192 = -7168. The real error for the
timeout was 1016 - 8192 - (-7168) = -8.
2021-03-08 16:29:53 +01:00
Wim Taymans
ffeb2e0f0e
alsa: fill with right amount of silence when starting
...
When we start or after an xrun, we need fill the buffer with one
period + headroom of samples, not period*2. This is because after
start we set our timeout immediately and expect there to be
period + headroom samples in the buffer.
With period*2 we take one period longer to start and we also feed
one period of error in the dll, which causes it to wobble for no
good reason.
2021-03-08 15:36:58 +01:00
Pauli Virtanen
a99f3a90ef
bluez5: correct EnumRoute availability
...
Mark bluez5 routes always available in EnumRoute, because there's always
a device connected.
Fixes default-route resetting profiles back, when they are manually
changed.
2021-03-07 01:37:57 +02:00
Wim Taymans
6324298bc5
channelmix: add more generic upmixing
...
Add options to enable lfe filtering and upmix.
Enable upmix by default, lfe is disabled because we don't actually
do a lowpass filter yet.
2021-03-06 21:31:18 +01:00
Wim Taymans
c7309f0248
channelmix: small cleanups
...
Fix indent
Rename DUAL/QUAD to REAR and SIDE and use it for checking availability
of stereo pairs.
2021-03-06 21:29:36 +01:00