Igor V. Kovalenko [Wed, 14 Apr 2021 19:55:38 +0000 (22:55 +0300)]
bluetooth: handle HFP codec list in any order
HFP HF peer can send +BAC= list of codecs in any order and pa only expects "1,2"
Fix this by actually parsing codec list elements while looking for "2" (mSBC)
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/537>
Lyndon Brown [Fri, 9 Apr 2021 00:47:58 +0000 (01:47 +0100)]
proplist: tweak documentation for `pa_proplist_get()`
to clarify that only mutating proplist calls potentially invalidate results
of earlier get requests, thus addressing the confusion found at [1].
[1]: https://github.com/jnqnfe/pulse-binding-rust/issues/38
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/536>
Igor V. Kovalenko [Thu, 4 Mar 2021 13:24:31 +0000 (16:24 +0300)]
bluetooth: mSBC: log lost input audio packets at debug level
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Wed, 3 Mar 2021 16:32:43 +0000 (19:32 +0300)]
bluetooth: add modarg to allow disabling mSBC codec
Add module-bluetooth-discover argument enable_msbc, default is true (enabled)
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Tue, 2 Mar 2021 18:33:24 +0000 (21:33 +0300)]
bluetooth: split BT codec from A2DP SEP configuration api
Common API for all bluetooth codecs is now pa_bt_codec.
API to negotiate and configure A2DP SEP over Bluez is now pa_a2dp_endpoint_conf.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Mon, 1 Mar 2021 21:52:59 +0000 (00:52 +0300)]
bluetooth: set initial packet size to 60
Raise initial MTU size to fix frame size when hci can do 60 byte frames.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Tue, 23 Feb 2021 21:58:43 +0000 (00:58 +0300)]
bluetooth: add more call indicators
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Thu, 25 Feb 2021 21:00:47 +0000 (00:00 +0300)]
bluetooth: produce silence on mSBC decoding error
We are supposed to conceal packet loss. This is not trivial but we can at least
produce silence instead of breaking on mSBC decoding error.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Thu, 25 Feb 2021 21:23:18 +0000 (00:23 +0300)]
bluetooth: remember negotiated HFP codec in native backend
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Mon, 22 Feb 2021 20:14:37 +0000 (23:14 +0300)]
bluetooth: show negotiated HFP codec
While codec switching for HFP is not implemented, show current codec via
messaging api.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Thu, 25 Feb 2021 19:36:31 +0000 (22:36 +0300)]
bluetooth: add mSBC to backend-ofono
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Sun, 21 Feb 2021 08:41:52 +0000 (11:41 +0300)]
bluetooth: prepare to redo transport writeout scheduling
Bluetooth SCO is synchronous stream, make our writes more uniformly paced.
To do this, first separate writing to socket from rendering a frame.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Wed, 3 Mar 2021 20:13:52 +0000 (23:13 +0300)]
bluetooth: mSBC: ignore empty encoded frame
If input block size is shorter than SBC frame codesize, encoder will return 0.
Log this and skip whole input block.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Tue, 2 Mar 2021 12:00:04 +0000 (15:00 +0300)]
bluetooth: mSBC: ignore all-zero packets
This is a workaround for hardware/driver which inserts all-zero packets in what
otherwise looks like a valid mSBC stream.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Sat, 20 Feb 2021 17:18:13 +0000 (20:18 +0300)]
bluetooth: use helper to set multiple transport object attributes
For mSBC to work correctly the following must be set correctly
- codec object
- transport write method
- transport setsockopt method
Use helper method to set all three simultaneously.
Static configuration structure may be cleaner solution.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Wed, 17 Feb 2021 13:31:13 +0000 (16:31 +0300)]
bluetooth: apply write MTU detection based on read packet size
HFP Audio Connection SCO configuration is negotiated symmetrically in both
directions, and USB HCI SCO packet framing is also symmetric in both directions.
This means that packet size will be the same for reads and writes over HFP SCO
socket.
HFP profile specification states that valid speech data shall exist on the
Synchronous Connection in both directions after the Audio Connection is
established.
This guarantees that an incoming packet will arrive shortly after SCO connection
is established. Use it's size to fix write MTU in case kernel value is wrong.
Discussion here https://lore.kernel.org/patchwork/patch/1303411/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
James Bottomley [Wed, 17 Feb 2021 06:44:35 +0000 (09:44 +0300)]
bluetooth: add wideband audio codec negotiation to HFP
The HFP protocol supports the ability to negotiate codecs if that is
supported by both AG and HF. This patch adds advertising of codec
negotiation support and the ability to negotiate a codec change. The
only currently supported extra codec (as of HF 1.7.1) is mSBC. mSBC
requires that the transmission be done over an eSCO link with
Transparent Data. The linux kernel ensures the former, but we have to
manually set the socket to transparent data.
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
James Bottomley [Wed, 17 Feb 2021 06:44:34 +0000 (09:44 +0300)]
bluetooth: add support for mSBC codec
Adding processing support for the mSBC codec is somewhat problematic,
because, although it is a SBC codec, the a2dp handling can't simply be
reused because the codec is used on an eSCO link with transparent
data, meaning the transmission unit has to be 48 bytes (fragmenting
the codec packets) and reassembly and boundary detection is required
to be done by the implementation. Therefore we have to implement
separate render and push routines for msbc that do this fragmentation.
Fragmentation is done by emulating circular buffers. The receive
(push) buffer is easy, since the mSBC packet size is 60, simply have a
buffer of this size in the sbc_info area where the fragments are
reassembled. Once we have a full 60 bytes, decode and restart from
zero. The send (render) buffer is more problematic, since the
transmit must be done from contiguous memory. This means that the
buffer must be the lowest common multiple of the transmission unit and
the packet size. This value is 240 since 240/48 == 5 and 240/60 == 4.
So the buffer pointers are reset at 240 which is a whole number of
both rendered packets and eSCO transmission units.
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Wed, 3 Mar 2021 15:14:53 +0000 (18:14 +0300)]
bluetooth: add CVSD codec implementation
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Wed, 3 Mar 2021 05:45:14 +0000 (08:45 +0300)]
bluetooth: unify decoder code paths
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Igor V. Kovalenko [Wed, 3 Mar 2021 05:12:08 +0000 (08:12 +0300)]
bluetooth: unify encoder code paths
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/507>
Tanu Kaskinen [Mon, 5 Apr 2021 14:24:22 +0000 (17:24 +0300)]
stream-restore: Fix NULL preferred device handling
When an application sets a device for a newly created stream, we treat
that as a temporary setting, and don't save it as the preferred device
for future streams. The handling for this was broken, however: if the
stream already had a preferred device saved in the stream-restore
database, that was unset.
This was a regression introduced in
bc0e72832057c9d2744d95767dff2a48c83082c2 and
70bbbcdc8440a6a616467a24496f497b225a2cee. These commits tried to detect
in subscribe_callback() when the preferred device is cleared, but as a
side effect the preferred device started to get cleared from the
database also when a stream was created with a device set by the
application.
There's no way for subscribe_callback() to distinguish the different
cases of the preferred device being NULL. This problem is solved by
using the PREFERRED_SINK/SOURCE_CHANGED hooks. The hooks are only called
when the preferred device really changes.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1063
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/535>
Tanu Kaskinen [Mon, 5 Apr 2021 14:13:27 +0000 (17:13 +0300)]
sink-input, source-output: Add hooks for preferred device changes
The hooks are fired when the preferred device changes. This is useful
for module-stream-restore.
I added new set_preferred_sink/source() functions for firing the hooks.
The functions also log the preferred device changes.
There was already pa_sink_input_set_preferred_sink(), but that had a
side effect of moving the stream, so I needed a new function. Since it
can be confusing when the two similarly named functions should be
called, I added a comment for pa_sink_input_set_preferred_sink() that
explains the different situations.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/535>
Igor V. Kovalenko [Sat, 3 Apr 2021 05:10:46 +0000 (08:10 +0300)]
bluetooth: prioritize native backend HFP HF connection
Bluez prepends newly registered profile to a list of supported profiles,
and new peer profile connections are attempted in reverse order of profile
registration.
Currently native backend would register HFP AG profile before HSP AG profile.
When peer supports both HFP HF and HSP HS profiles, this registration order
causes extra HSP HS connection attempt before native backend would reject it
to make sure peer is reconnected with HFP HF profile.
Reorder HSP AG profile registration before HFP AG to make sure peer supporting
both profiles connects with HFP HF profile first.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/534>
Igor V. Kovalenko [Thu, 25 Mar 2021 18:57:50 +0000 (21:57 +0300)]
bluetooth: update messaging api reference
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/525>
Igor V. Kovalenko [Sun, 14 Mar 2021 07:24:51 +0000 (10:24 +0300)]
message-params: clean up
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/525>
Igor V. Kovalenko [Sun, 14 Mar 2021 06:49:05 +0000 (09:49 +0300)]
message-params: use JSON instead of custom format
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/525>
Igor V. Kovalenko [Sat, 13 Mar 2021 08:23:43 +0000 (11:23 +0300)]
json: add JSON encoder
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/525>
Igor V. Kovalenko [Sat, 27 Mar 2021 07:07:22 +0000 (10:07 +0300)]
json: improve supported numbers
Use 64bit signed integers and fix double value conversion.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/525>
Marijn Suijten [Thu, 4 Mar 2021 11:12:37 +0000 (12:12 +0100)]
bluetooth: Only use hardware volume callbacks for peer attenuation
Setting these callbacks adds the HW_{VOLUME,MUTE}_CTRL flag even when
PulseAudio is solely responsible for performing attenuation whilst only
keeping the peer posted on changes. For this case the hardware callback
is not registered at all but instead a hook is attached to catch
PA_CORE_HOOK_{SINK,SOURCE}_VOLUME_CHANGED. Only when the peer performs
attenuation (the peer is in HeadSet/HandsFree role) are the callbacks
used, without touching PA software volume at all. A future change could
potentially use software volume to compensate for the extremely coarse
16 steps of volume control in HSP and HFP, and to allow volume over
100%.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/519>
Georg Chini [Sat, 20 Mar 2021 11:53:22 +0000 (12:53 +0100)]
alsa-sink: Do not increase watermark when requested to rewind 0 bytes
Since commit
cb91d7a1 the watermark is increased when there is nothing to rewind.
This is also done in the case when there was actually no rewind requested at all,
so the watermark is increased needlessly.
This patch fixes the issue by skipping the rewind if none is requested.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/530>
Edward Lee [Sun, 30 Aug 2020 03:08:09 +0000 (23:08 -0400)]
Win32: Use WAVEFORMATEX for multi-channel audio output on Windows.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/359>
Edward Lee [Thu, 21 Jan 2021 22:47:33 +0000 (17:47 -0500)]
Win32: Fix build issues.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/359>
Marijn Suijten [Mon, 20 Jan 2020 23:41:43 +0000 (00:41 +0100)]
bluetooth: Set up hardware gain control if init volume is received late
Originally written for A2DP this rework of that patch enables late-bound
hardware volume control on HFP and HSP. As per the specification the
headphones (where gain control for both speaker and microphone could
happen in hardware on the peer) are supposed to send initial values for
these before the SCO connection is created; these `AT+VG[MS]` commands
are also used to determine support for it. PA uses this information in
`add_{sink,source}` to attach hardware volume callbacks, _if_ it is
supported. Otherwise PA performs the attenuation in software.
Unfortunately headphones like the WH-1000XM3's connect to A2DP
initially and only send `AT+VGS` (microphone hardware gain is not
supported) _during_ SCO connection when the user switches to the HFP
profile afterwards; the callbacks set up dynamically in
`rfcomm_io_callback` are written after the sink and source have been
created (`add_{sink,source}`), leaving them without hardware volume
callbacks and with software volume when adjusted on the PA side. (The
headphones can still send volume updates resulting in abrupt changes if
software and peer volume differ. Furthermore the same attenuation is
applied twice - once in PA software, once on the peer).
To solve this problem we simply check whether the callbacks have been
attached whenever the peer sends a volume change, and if not attach the
callbacks to the sink/source and reset software volume.
Fixes:
d510ddc7f ("bluetooth: Perform software attenuation until HF/HS reports gain control")
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/528>
Igor V. Kovalenko [Fri, 5 Mar 2021 15:06:30 +0000 (18:06 +0300)]
bluetooth: accept +VGM/+VGS unsolicited reply with '=' and ':' separator
HFP specs states both '=' and ':' should be accepted as a valid
separator for +VGM and +VGS unsolicited result codes.
This change is cherry-picked from Rodrigo Araujo's work here:
https://lists.freedesktop.org/archives/pulseaudio-discuss/2017-September/028820.html
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/521>
Marijn Suijten [Fri, 5 Mar 2021 22:28:57 +0000 (23:28 +0100)]
bluetooth: Perform software attenuation until HF/HS reports gain control
HF/HS hardware attenuation is optional on HFP: the peer indicates
support with the AT+BRSF command, when bit 4 is set. That does not
explicitly mandate speaker or microphone gain control; either is
dynamically detected as soon as `AT+VG[MS]=` is received. Otherwise
software attenuation is performed.
It is also optional on HSP but nothing is mentioned about feature
detection, assume it is the same as HFP: perform software attenuation
until the HF/HS peer sends an `AT+VG[MS]=` command.
When PA is a HS/HF (and the peer the AG) we attenuate both channels in
software and unconditionally keep the peer up to date with
`AT+VGM/AT+VGS` commands.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/521>
Marijn Suijten [Thu, 4 Mar 2021 10:30:42 +0000 (11:30 +0100)]
bluetooth: Move attenuation decision to shared function
Generalize the distinction between local and peer-attenuated volumes
into a function, paving the way for future changes where this needs to
be checked in more places and when A2DP Absolute Volume support is
added.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/521>
Marijn Suijten [Sun, 7 Jun 2020 15:07:20 +0000 (17:07 +0200)]
bluetooth: Generalize speaker/microphone naming to sink/source
Sink and source naming is more generic when dealing with audio that is
directional in the sense that it either goes to or comes from the other
device, but not necessarily a microphone or speaker. A concrete example
is the swapped meaning when the current device is in the HeadSet
profile. The incoming audio can come from any source, not necessarily a
microphone. Likewise, audio captured by the microphone of the headset is
not necessarily played back by a speaker on the AG, it is merely acting
as a sink for the data: further handling is irrelevant to the naming.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/521>
Marijn Suijten [Sun, 7 Jun 2020 16:30:54 +0000 (18:30 +0200)]
bluetooth: backend-native: Round volume to closest instead of up
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/521>
Marijn Suijten [Sun, 7 Jun 2020 14:07:00 +0000 (16:07 +0200)]
bluetooth: Move HSP gain conversions into backend-native
For the upcoming A2DP AVRCP Absolute Volume feature the code in BlueZ5
has to be generic to be reusable. Move this conversion so that it
becomes possible to implement A2DP volume - which uses different values
- on top without duplicating existing callback functionality.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/521>
Marijn Suijten [Sun, 24 Jan 2021 13:10:16 +0000 (14:10 +0100)]
bluetooth: switch_codec should start with pa_blueooth_device_
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/521>
Igor V. Kovalenko [Tue, 2 Mar 2021 05:22:22 +0000 (08:22 +0300)]
build-sys: meson: fix meson dist version
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/516>
Igor V. Kovalenko [Mon, 1 Mar 2021 18:33:00 +0000 (21:33 +0300)]
build-sys: drop autotools build system
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/516>
Tanu Kaskinen [Mon, 8 Mar 2021 14:28:01 +0000 (16:28 +0200)]
i18n: Update .pot and .po files
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/523>
Ricky Tigg [Sat, 6 Mar 2021 16:41:38 +0000 (16:41 +0000)]
Translated using Weblate (Finnish)
Currently translated at 90.9% (513 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/fi/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/523>
Ricky Tigg [Fri, 5 Mar 2021 13:34:59 +0000 (13:34 +0000)]
Translated using Weblate (Finnish)
Currently translated at 87.2% (492 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/fi/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/523>
Hela Basa [Wed, 3 Mar 2021 21:25:57 +0000 (22:25 +0100)]
Added translation using Weblate (Sinhala)
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/523>
Yaron Shahrabani [Mon, 1 Mar 2021 14:24:52 +0000 (14:24 +0000)]
Translated using Weblate (Hebrew)
Currently translated at 25.1% (142 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/he/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/523>
Igor V. Kovalenko [Fri, 5 Mar 2021 11:40:37 +0000 (14:40 +0300)]
bluetooth: correct rfcomm command and reply formatting
The format of COMMAND line sent from HS to AG is COMMAND<cr>
The format of RESPONSE line sent from AG to HS is <cr><lf>RESPONSE<cr><lf>
Split rfcomm_write into rfcomm_write_command and rfcomm_write_response to handle
line formatting correctly.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/520>
Igor V. Kovalenko [Tue, 2 Mar 2021 19:47:20 +0000 (22:47 +0300)]
bluetooth: fix typo checking if target codec is available
A2DP switch-codec command implementation must check if target codec is good,
not the one we want to switch from.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/518>
Faidon Liambotis [Mon, 1 Mar 2021 01:43:14 +0000 (03:43 +0200)]
buildsys/autotools: add pulseaudio-x11.service.in
Commit
4868fcf5f344af613172f61d9105c02f3f07e1ab ("daemon: Rely on
systemd unit file for X11 plugin initialization") added a new systemd
unit file, pulseaudio-x11.service, generated from a respective .in file.
Unfortunately, this was only hooked up to meson, and is not currently
installed by autotools. Among other breakage, "make dist" produces a
tarball that meson is then unable to build (because a file is missing).
Signed-off-by: Faidon Liambotis <paravoid@debian.org>
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/514>
Faidon Liambotis [Fri, 26 Feb 2021 01:23:52 +0000 (03:23 +0200)]
tests: fix use of uninitialized variable cpu_info
On cpu-volume-test, cpu_info is initialized only on i386/amd64 systems,
and otherwise passed on to pa_cpu_init_orc() uninitialized.
If one was unlucky enough, they could end up with cpu_info.cpu_type ==
PA_CPU_X86 on a non-x86 system, and use and test the Orc codepath
without that being functional, and thus with the test failing.
This has been observed in the wild on the ppc64el Debian buildds. See
Debian bug #982740 for more context.
Define cpu_info here in the same way as in other tests.
Signed-off-by: Faidon Liambotis <paravoid@debian.org>
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/511>
Jan Kuparinen [Tue, 16 Feb 2021 19:35:11 +0000 (19:35 +0000)]
Translated using Weblate (Finnish)
Currently translated at 86.7% (489 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/fi/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Jan Kuparinen [Sun, 14 Feb 2021 18:30:02 +0000 (18:30 +0000)]
Translated using Weblate (Finnish)
Currently translated at 78.9% (445 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/fi/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Göran Uddeborg [Wed, 10 Feb 2021 19:43:08 +0000 (19:43 +0000)]
Translated using Weblate (Swedish)
Currently translated at 100.0% (564 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/sv/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Ricky Tigg [Thu, 11 Feb 2021 13:44:41 +0000 (13:44 +0000)]
Translated using Weblate (Finnish)
Currently translated at 78.1% (441 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/fi/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Göran Uddeborg [Mon, 8 Feb 2021 17:00:09 +0000 (17:00 +0000)]
Translated using Weblate (Swedish)
Currently translated at 95.9% (541 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/sv/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Göran Uddeborg [Fri, 5 Feb 2021 20:44:05 +0000 (20:44 +0000)]
Translated using Weblate (Swedish)
Currently translated at 94.1% (531 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/sv/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Karl Ove Hufthammer [Sat, 6 Feb 2021 14:52:58 +0000 (14:52 +0000)]
Translated using Weblate (Norwegian Nynorsk)
Currently translated at 100.0% (564 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/nn/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Carmen Bianca Bakker [Thu, 4 Feb 2021 00:41:27 +0000 (00:41 +0000)]
Translated using Weblate (Esperanto)
Currently translated at 23.5% (133 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/eo/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Carmen Bianca Bakker [Thu, 4 Feb 2021 00:05:18 +0000 (01:05 +0100)]
Added translation using Weblate (Esperanto)
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Yaron Shahrabani [Sat, 30 Jan 2021 22:49:26 +0000 (22:49 +0000)]
Translated using Weblate (Hebrew)
Currently translated at 22.1% (125 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/he/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Piotr Drąg [Sat, 30 Jan 2021 12:56:02 +0000 (12:56 +0000)]
Translated using Weblate (Polish)
Currently translated at 100.0% (564 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/pl/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Piotr Drąg [Sat, 30 Jan 2021 12:53:51 +0000 (12:53 +0000)]
Translated using Weblate (Polish)
Currently translated at 100.0% (564 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/pl/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Piotr Drąg [Sat, 30 Jan 2021 12:36:40 +0000 (12:36 +0000)]
Translated using Weblate (Polish)
Currently translated at 95.3% (538 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/pl/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Jan Kuparinen [Wed, 27 Jan 2021 19:19:47 +0000 (19:19 +0000)]
Translated using Weblate (Finnish)
Currently translated at 73.2% (413 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/fi/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Yuri Chornoivan [Mon, 25 Jan 2021 20:02:46 +0000 (20:02 +0000)]
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (564 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/uk/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Oğuz Ersen [Mon, 25 Jan 2021 21:52:15 +0000 (21:52 +0000)]
Translated using Weblate (Turkish)
Currently translated at 100.0% (564 of 564 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/tr/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/515>
Felipe Sateler [Fri, 26 Feb 2021 22:58:41 +0000 (19:58 -0300)]
treewide: fix a bunch of typos
Detected by lintian, the debian package linter
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/512>
Hui Wang [Tue, 2 Feb 2021 02:07:36 +0000 (10:07 +0800)]
alsa-mixer: increase the max number of HDMI/DP output device to 11
Intel TGL HDMI/DP codec provides 9 pins (Linux kernel,
9a11ba7388f16:
ALSA: hda: hdmi - add Tigerlake support), and with the DP MST enabled,
the linux kernel will build 11 output devices (3, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16), and the alsa-lib will map 11 PCM devices from HDMI:0
to HDMI:10, but current pulseaudio only supports 8 HDMI/DP devices,
if users plug the HDMI/DP monitor to the last 3 ports, the users will
not see the output device from pulseaudio or gnome.
We have experienced this issue on a dell TGL machine with a dock, we
plugged 2 HDMP/DP monitors on the dock, but we could only see 1
HDMI/DP output device from pulseaudio or gnome, through investigation,
we found one monitor is plugged in the 2nd port from last.
Here we add 3 HDMI/DP output devices.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/495>
Igor V. Kovalenko [Thu, 18 Feb 2021 18:08:21 +0000 (21:08 +0300)]
bluetooth: clean up rfcomm_write usage
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
Igor V. Kovalenko [Tue, 16 Feb 2021 05:46:19 +0000 (08:46 +0300)]
bluetooth: rename enable_hs_role to enable_shared_profiles
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
Igor V. Kovalenko [Mon, 1 Feb 2021 17:51:18 +0000 (20:51 +0300)]
bluetooth: use device flag to prevent assertion failure during shutdown
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
Igor V. Kovalenko [Fri, 29 Jan 2021 18:32:09 +0000 (21:32 +0300)]
bluetooth: complete bluetooth profile separation
This is a follow-up change to review of these series on pulseaudio-discuss
https://lists.freedesktop.org/archives/pulseaudio-discuss/2017-September/028801.html
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
Igor V. Kovalenko [Fri, 29 Jan 2021 06:28:36 +0000 (09:28 +0300)]
bluetooth: prefer headset HFP HF connection with native backend
When HFP HF support is enabled in native backend, peer HFP HF profile connection
is preferred over same peer HSP HS profile connection if peer supports both
profiles.
Enforce the preference by rejecting HSP HS profile connections from such peer.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
Igor V. Kovalenko [Thu, 28 Jan 2021 06:08:53 +0000 (09:08 +0300)]
bluetooth: fix headset=auto ofono handover
Native backend implements HFP AG but not HFP HF yet, therefore headset=auto
functionality is still needed if HFP HF is required.
To make headset=auto work again, drop both HFP AG and HSP AG roles while
performing handover from native backend when oFono is detected running.
While at it, restore profile description to Headset Head Unit (HSP/HFP)
to note that HFP may be still provided via oFono backend.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
Igor V. Kovalenko [Thu, 28 Jan 2021 12:37:36 +0000 (15:37 +0300)]
bluetooth: enable module-bluez5-discover argument enable_native_hfp_hf
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
James Bottomley [Thu, 21 Sep 2017 18:49:45 +0000 (11:49 -0700)]
bluetooth: make native the default backend
Change default backend from 'auto' to 'native' so that in the usual
install pulseaudio uses the native backend with HFP_HF handling.
set default to false unless the backend is the native one, in which
case the default becomes true.
Additionally set default value of enable_native_hfp_hf to false unless
the backend is the native one, in which case the default becomes
true. so that we only bind the HFP_HF end point in the native case
(leaving it free for ofono in the ofono backend or auto case)
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
James Bottomley [Sat, 20 Aug 2016 17:56:14 +0000 (10:56 -0700)]
bluetooth: add correct HFP rfcomm negotiation
HFP 1.6 requires a stateful negotiation of AT commands. The prior
version got away with initialising HFP simply by replying 'OK' to
every negotiation attempt. This one actually tries to parse the state
and make sure the negotiation occurs correctly
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
---
v4:
- Update for PA 11.0
- Finally sort out CIND negotiaton for complex headsets
v3:
- remove internal debugging
- added comment for t->config being not null for hfp
- removed unused returns from hfp_rfcomm_handle()
- remove rfcomm comment
- use pa_startswith
- simplify negotiation
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
James Bottomley [Thu, 18 Aug 2016 15:48:48 +0000 (08:48 -0700)]
bluetooth: separate HSP and HFP
When all headsets supported both HSP and HFP, life was good and we
only needed to implement HSP in the native backend. Unfortunately
some headsets have started supporting HFP only. Unfortuantely, we
can't simply switch to HFP only because that might break older HSP
only headsets meaning we need to support both HSP and HFP separately.
This patch separates them from a joint profile to being two separate
ones. The older one retains the headset_head_unit name, meaning any
saved parameters will still select this (keeping us backward
compatible). It also introduces a new headset_handsfree.
For headsets that support both HSP and HFP, the two profiles will
become separately visible and selectable. This will only matter once
we start adding features to HFP that HSP can't support (like wideband
audio).
Signed-off-by: <James.Bottomley@HansenPartnership.com>
---
v6:
- merge profile switching fixes patch from Rodrigo Araujo
v5:
- rename option to enable_native_hfp_hf
- don't call profile_done for HFP_HF unless it was initialised
v3:
- Update for PA 11.0
v2:
- fold in review feedback
- add global disable option for not registering HFP
v3:
- change parameter to enable_profile_hfp
- update device_supports_profile to be aware of hfp/hsp exclusivity
- change parameter to enable_profile_hfp_hf
bluetooth: separate HSP and HFP (to me merged with this patch)
Hi.
First, just to say that your patches are going great. Finally I can use
the microphone of my HFP only headset (a version of a Bluedio T2+).
So far, I've only encontered one problem: the auto_switch option of
module_bluetooth_policy stops working. Dug through the code and I think
you missed a few spots were you have to hangle the new headset_handsfree
profile in module_bluetooth_policy.c
Applying the following after applying your v5 patches fixed the issue
for me, now when I start making a VOIP call the profile switches to
headset_handsfree and the mic works automatically, and when the call
finishes it reverts back to a2dp.
Thanks and best regards.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
James Bottomley [Sat, 20 Aug 2016 17:39:30 +0000 (10:39 -0700)]
bluetooth: use consistent profile names
The PA_BLUETOOTH_PROFILE names should mirror the PA_BLUETOOTH_UUID
names using profile_function instead of randomly made up names. Fix
this with the transformation:
PA_BLUETOOTH_PROFILE_HEADSET_HEAD_UNIT -> PA_BLUETOOTH_PROFILE_HSP_HS
PA_BLUETOOTH_PROFILE_HEADSET_AUDIO_GATEWAY -> PA_BLUETOOTH_PROFILE_HFP_AG
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
---
v4: update for PA 11.0
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/491>
Henri Chain [Wed, 17 Feb 2021 11:35:56 +0000 (12:35 +0100)]
systemd: move to session slice
As per https://systemd.io/DESKTOP_ENVIRONMENTS/
(the default is app.slice which is not appropriate for pulseaudio)
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/506>
Georg Chini [Wed, 17 Feb 2021 20:36:07 +0000 (21:36 +0100)]
source-output: Fix source-output volume after move of virtual source stream
When the source-output of a virtual source with volume sharing disabled is moved,
the source output volume is reset to 100%. This patch fixes the problem by
applying the virtual source volume to the source-output after the move.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/509>
Igor V. Kovalenko [Mon, 15 Feb 2021 06:03:13 +0000 (09:03 +0300)]
bluetooth: remove unwanted change from bluez fallback code
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/504>
pseyfert [Tue, 9 Feb 2021 23:17:13 +0000 (23:17 +0000)]
fix handling of symbolic port names in zsh completion
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/500>
Igor V. Kovalenko [Thu, 11 Feb 2021 05:56:22 +0000 (08:56 +0300)]
build-sys: meson: support elogind alternative for module-systemd-login
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/502>
Igor V. Kovalenko [Tue, 9 Feb 2021 06:18:18 +0000 (09:18 +0300)]
build-sys: meson: add tcp-wrappers
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/498>
Igor V. Kovalenko [Tue, 9 Feb 2021 07:15:50 +0000 (10:15 +0300)]
build-sys: drop gconf support
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/499>
Paul Seyfert [Wed, 10 Feb 2021 18:37:07 +0000 (19:37 +0100)]
zsh-completion Add completion of sample names
This closes #201.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/501>
Marijn Suijten [Sat, 23 Jan 2021 19:39:15 +0000 (20:39 +0100)]
bluetooth/gst: Unify encoder and decoder pipeline setup
The encoding and decoding pipeline are essentially identical: both push
data in via an appsrc, route it through a codec-specific (opaque)
element, and finally pull data out of an appsink. The code already makes
it impossible to have an encoding and decoding pipeline simultaneously
set up in `gst_info`, and converting `bool for_encoding` to a tri-state
(encode, decode, or both) would be messy; particularly when encoding and
decoding could possibly differ in format.
This change removes a swath of code and removes the possibility of
misusing `enc_` or `dec_` in the wrong place (ie. after copying a bit of
code and forgetting to rename one or two). When bidirectional codecs
come online a second codec instance (`gst_info`) can simply be created
and controlled independently.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/487>
Marijn Suijten [Sat, 23 Jan 2021 19:47:29 +0000 (20:47 +0100)]
bluetooth/aptx: Call the non-HD encode_buffer function
For consistency with its decode_buffer counterpart.
For the time being the base function only performs an extra check and
logs an error when no data has been written into the GStreamer encoding
pipeline.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/487>
Marijn Suijten [Sat, 23 Jan 2021 19:20:45 +0000 (20:20 +0100)]
bluetooth/aptx: Simplify lifetime of `caps`
Fixes:
73c80ffba ("bluetooth/aptx: Deduplicate caps setup for encoding and decoding")
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/487>
Igor V. Kovalenko [Tue, 19 Jan 2021 16:24:23 +0000 (19:24 +0300)]
bluetooth: support increasing bitrate for SBC XQ
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/476>
Igor V. Kovalenko [Tue, 19 Jan 2021 15:52:55 +0000 (18:52 +0300)]
bluetooth: a2dp dual channel SBC XQ codec configurations
Desired SBC bitpool value is calculated from target bitrate limit.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/476>
Marijn Suijten [Thu, 21 Jan 2021 21:05:51 +0000 (22:05 +0100)]
bluetooth: Remove unused ts_elapsed variable
Fixes:
969951121 ("bluetooth: allow increasing output bitrate")
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/477>
Marijn Suijten [Tue, 19 Jan 2021 19:33:11 +0000 (20:33 +0100)]
tests: Update ladspa-dbus to Python 3
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/477>
Marijn Suijten [Thu, 7 Jan 2021 23:36:06 +0000 (00:36 +0100)]
treewide: Use DBus defines instead of direct string literals
While cleaning up the BlueZ counterpart of strings defined in
preprocessor macros it is only consistent to take care of all DBUS_
macros as a whole.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/477>
Marijn Suijten [Tue, 19 Jan 2021 19:27:35 +0000 (20:27 +0100)]
bluetooth: Consistently use BlueZ defines for strings
These errors and interface names shoudld all reuse predefined constants.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/477>
Marijn Suijten [Thu, 7 Jan 2021 23:45:24 +0000 (00:45 +0100)]
bluetooth: Unify BlueZ macro defines shared between util and native
Define all BLUEZ_ macros once in the shared header, instead of twice in
both backend-native.c and bluez5-util.h.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/477>
Marijn Suijten [Thu, 7 Jan 2021 23:48:55 +0000 (00:48 +0100)]
bluetooth: improve indentation around dbus_message_iter_open_container
Consistently use newlines and the same indentation style for all calls
to dbus_message_iter_open_container in Bluetooth code.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/477>