PulseAudio 15.0 发行说明

2021-07-30 00:40:00

PulseAudio 现在支持 A2DP 的 LDAC 和 AptX 编解码器。为了使用它们,设备也必须支持编解码器。旧 SBC 编解码器的“XQ”配置变体也可用。 SBC XQ 变体具有固定(并且高于“正常”SBC)比特率,因此如果无线连接不好,它们可能会有更多的掉线,但另一方面,如果连接良好,质量总是很好。对于可变比特率,pulseaudio 现在能够在由于连接问题而降低比特率后再次提高比特率。可以使用 pactl send-message /card/bluez_card.XX_XX_XX_XX_XX_XX/bluez switch-codec CODEC 在命令行上切换编解码器。将 XX_XX_XX_XX_XX_XX 替换为设备地址,例如可以使用 LANG=C pactl list card | 找到该地址。名称。用可用的编解码器名称之一替换编解码器:aptx、aptx_hd、ldac_hq(“高质量”)、ldac_sq(“标准质量”)、ldac_mq(“移动质量”)、sbc、sbc_xq_453、sbc_xq_512、x_sb55可以使用 pactl send-message /card/bluez_card.XX_XX_XX_XX_XX_XX/bluez list-codecs 获取设备支持的编解码器列表,可以使用 pactl send-message /card/bluez_card.XX_XX_XX_XX_XX_XX/bluez get- 查询当前活动的编解码器编解码器。 pavucontrol 中已经实现了一种简化的切换编解码器的方法,并将在下一个 pavucontrol 版本中提供。添加了对 HFP AG 角色的本机支持。本机后端已成为 HSP/HFP 的默认后端。将后端参数设置为 auto 或 ofono 时,仍然支持 ofono。原生后端目前只实现了HFP AG角色,没有实现HFP HS角色,所以这个角色还是需要ofono。此外,还实施了对 mSBC 的支持以提高语音质量。 AVRCP 绝对音量允许 PulseAudio 控制连接的 A2DP 设备的音量(播放时)或连接的设备控制 PulseAudio 中的音量(当设备播放到 PulseAudio 时)。以前在播放耳机时,PulseAudio 在软件中进行自己的音量控制,而耳机在硬件中进行自己的音量控制。有两级音量有时很难获得足够高的音量,现在只有一级音量控制。可以通过将 avrcp_absolute_volume=false 传递给 default.pa 配置文件中的 module-bluetooth-discover 来禁用此功能。加载 ALSA 路径配置文件的代码现在检查文件是否存在于 XDG_DATA_HOME 或 XDG_DATA_DIRS 环境变量指定的目录中(在 pulseaudio/alsa-mixer/paths 子目录下)。这些环境变量由 XDG 基本目录规范定义,即使未设置这些环境变量,XDG 基本目录规范也会定义 PulseAudio 使用的默认位置。特别是,在通常没有设置 XDG_DATA_HOME 的情况下,默认值为 $HOME/.local/share,因此 PulseAudio 将从用户家下的该目录中查找路径配置文件。这在需要自定义路径配置文件时很有用。以前必须修改 /usr/share/pulseaudio/alsa-mixer/paths 中的文件,并且每次升级 PulseAudio 时修改都会丢失。卷积处理代码已被重写以使用阻塞的 FFT 函数,支持潜在的更大的脉冲响应。现有的冲动将随着重写继续发挥作用。过滤器可选地支持不对称响应,这可以通过指定两组脉冲文件来启用,使用 hrir_left 和 hrir_right 选项而不是原始 hrir 选项。 Impulses 应该与格式和频道布局相匹配。可以使用 channel_map 设置指定用于处理的实际音频输入的通道布局,只要所有指定的通道都存在于一个或两个脉冲中。

当 JACK 启动时,module-jackdbus-detect 会自动加载一个 JACK 接收器和源。现在可以更好地配置接收器和源的参数。 module-jackdbus-detect 接受以下新参数: sink_client_name - JACK 接收器在向 JACK 注册客户端时使用的名称 source_client_name - JACK 源在向 JACK 注册客户端时使用的名称 与使用相同的自定义配置其他几款 USB 游戏耳机现在应用于 SteelSeries Arctis 9,这使得该设备的功能更加强大。 HP Thunderbolt Dock 120W G2 有一个 3.5 毫米耳机连接器,并且有一个单独的音频模块为扩展坞出售,提供免提功能(集成麦克风和具有回声消除功能的扬声器)。 PulseAudio 现在具有改进向用户显示的设备描述并将扬声器标记为语音音频的首选设备的配置。 Behringer U-Phoria UMC22 有两个单声道麦克风输入,在 ALSA 中显示为单个立体声设备。 PulseAudio 现在具有此声卡的自定义配置,允许用户选择仅启用一个或另一个通道的配置文件。这样,录音应用程序最终不会录制仅在一个通道上有音频的立体声轨道。 OnePlus Type-C Bullets 是一款简单的 USB-C 耳机设备。它也适用于默认配置,但添加了自定义配置以隐藏没有意义的卡配置文件(例如,HDMI 显示为默认配置的受支持配置文件)。

Sennheiser GSX 1000 和 1200 PRO 是专为游戏设计的 USB DAC。它们有一个单独的用于语音音频的单声道输出,它们还提供了一个虚拟环绕声设备,可以将 7.1 环绕声音频缩混到硬件中的耳机。添加了自定义配置以正确公开这些设备。现在可以使用 PULSE_MODARGS 变量通过 udev 配置设置 module-alsa-card 模块参数。例如,这允许为基于计时器的调度有问题的特定声卡设置 tsched=false。以前的选项是将tsched选项传递给default.pa中的module-udev-detect,导致所有声卡都受到影响,或者完全放弃自动声卡检测和热插拔支持,在default.pa中手动配置每个声卡.现在可以使用 max_latency_msec 模块参数配置模块空源延迟的上限。 module-filter-apply 在流需要过滤时自动加载过滤器模块(即具有 filter.want 属性)。以前额外的过滤器模块参数可以由 filter.apply.<filter>.paramaters 属性中的流提供,现在可以在硬件接收器/源属性中设置 filter.apply.<filter>.parameters,所以一个流可以简单地请求过滤器而不指定参数,硬件设备可以设置(可能是硬件特定的)参数。最初的期望是不需要多次加载模块匹配,因此它被标记为不打算(也不能)多次加载的模块。然而,结果证明用不同的配置文件匹配不同的属性很有用,所以现在可以多次加载模块。来自 FreeBSD 的几个补丁已经上传。现在拔出声卡应该表现得更好,设备有更好的描述,模块开发检测现在支持热插拔设备。 PulseAudio 的 Meson 构建系统在为 Windows 构建时落后于旧的 Autotools 构建系统,现在应该可以使用 MinGW 使用 Meson 为 Windows 构建 PulseAudio。还有各种针对 Windows 的修复程序,PA 现在可以作为服务在 Win32 上运行。

可以使用命令 pactl send-message /card/<card name> set-profile-sticky 'true|false' 将卡配置文件设置为粘性。可以使用 pactl send-message /card/<card name> get-profile-sticky 查询当前状态。如果卡配置文件具有粘性,即使配置文件不可用,它也将始终被恢复。此外,卡上的端口可用性更改不会影响配置文件选择。例如,这对于将 HDMI 设备的卡配置文件永久设置为“关闭”很有用。将配置文件设置为粘性已在 pavucontrol 中实现,并将在下一个 pavucontrol 版本中提供。添加了新的“消息 API”以促进客户端和脉冲音频对象之间的轻松通信。它目前用于切换蓝牙编解码器并将卡配置文件设置为粘性。消息 API 使用 JSON 格式在脉冲音频对象和客户端之间交换信息。如果应用程序需要虚拟内存的最后一位,它可以通过在连接时在 pa_context 对象上设置 PA_PROP_CONTEXT_FORCE_DISABLE_SHM 布尔 proplist 值来强制禁用共享内存通信通道。主要用户将是具有 2Gb vmem 限制的 Wine 32bit。正如 14.0 发行说明中已经宣布的那样,最终放弃了对 autotools 的支持。介子构建系统得到了显着改进,现在是构建脉冲音频的标准方法。 PulseAudio 的启动脚本(默认为每用户模式的 default.pa 和系统模式的 system.pa)定义了在启动时自动加载的模块集。在脚本的末尾,现在有一个包含指令,用于从 /etc/pulse/default.pa.d/ 或 /etc/pulse/system.pa.d/ 加载文件。这主要适用于在安装包时想要向配置添加一些模块的发行版:现在可以轻松安装包含已安装包配置的文件。如果用户更喜欢在不修改原始启动脚本的情况下将模块添加到配置中,他们当然也可以使用此机制。当使用 PipeWire 替换 PulseAudio 时,libpulse 和 PulseAudio 实用程序仍然有用,但不需要 PulseAudio 守护程序。现在可以在不编译守护程序的情况下编译 libpulse 和实用程序。为此,请将 -Ddaemon=false 传递给 Meson。 PulseAudio 传统上通过 /etc/xdg/autostart/pulseaudio.desktop 文件在图形登录时自动加载一些 X11 模块。这在 Wayland 上并不是真正可取的,因为即使没有以其他方式使用它,它也会自动启动 XWayland。 pulseaudio.desktop 文件现在包含 X-GNOME-HiddenUnderSystemd=true 行,因此当使用 GNOME 和 systemd 时,X11 模块不再以这种方式加载。如果 GNOME 在 X11 下运行,则有一个名为 pulseaudio-x11 的新 systemd 服务来处理加载 X11 模块。

此行为在 GNOME 以外的其他桌面环境中不可用,但现在它已实现一次,为其他桌面环境开发类似的解决方案也应该很容易。 oss-output Meson 选项可用于显式启用或禁用 OSS 支持(以前,当使用 Meson 而不是 Autotools 时,当找到 sys/soundcard.h 标头时会自动启用 OSS 支持)。 valgrind Meson 选项可用于显式启用或禁用 Valgrind 支持(以前在找到 valgrind/memcheck.h 标头时会自动启用 Valgrind 支持)。 Alexey Rubtsov (1):使用 Weblate 翻译(俄语)Alper Nebi Yasak(1):alsa-ucm:在探测卷时记录正确的路径值Anders Jonsson(1):使用 Weblate 翻译(瑞典语)Arun Raghavan(13):proplist -util:删除不推荐使用的 G_CONST_RETURN 宏 glib-mainloop:删除不推荐使用的 g_get_current_time() 用法流恢复,设备恢复:避免未对齐的访问互斥锁:修复解锁()检查文档的错误分配:添加一些贡献者指南更新新闻更新新闻gitignore:为本地前缀安装添加 install/ build-sys:Bump libpulse soversion build-sys:修复几个介子警告 15.0 build-sys 的更新新闻:修复与 gsettings 和配置数据相关的警告 build-sys:修复警告与 avahi 和配置相关的数据Ben Buchwald (1): jackdbus-detect: Passthrough more arguments to sink and source Benjamin Valentin (1): alsa-mixer: 如果 max_dB 为负则禁用 has_dB Carlos Garnacho (3): daemon: 添加“stop”参数start-pulseaudio-x11 脚本守护进程:我nstall start-pulseadio-x11 作为 Xwayland-session.d 脚本守护进程:依赖 systemd 单元文件进行 X11 插件初始化Carmen Bianca Bakker (2):使用 Weblate (Esperanto) 添加翻译 使用 Weblate (Esperanto) 翻译 Christopher Arndt (1):将端口顺序元数据添加到 JACK sink / source portsChristopher Snowhill (1): virtual-surround-sink: 使用 FFTW3 而不是天真的方法大卫 (2): 在 module-jack-source.c 中将 jack 大写 在 module-jack-sink 中将 jack 大写。 cDusan Kazik (1):使用 Weblate 翻译(斯洛伐克语)Edward Lee (9): win32: Handle (WSA)EWOULDBLOCK as EAGAIN。 win32:修复(临时)module-protocol-stub.c 中的esound 路径 win32:检查 pa_is_unix_socket_stale 中的 WSAGetLastError()。 win32:(临时)从 win32 添加 sockaddr_un 定义:在 autoconf 构建中添加对 Unix 套接字的支持。 win32:更改 lt_preloaded_symbols 的链接以匹配 daemon/main.c 中 libtool 中的定义。 win32:修复 Windows 的介子构建系统。 Win32:修复构建问题。 Win32:在 Windows 上使用 WAVEFORMATEX 进行多声道音频输出。Emilio Herrera (1):使用 Weblate 翻译(西班牙语)Evan Miller(1):修复严格原型警告Fabian Affolter(1):使用 Weblate 翻译(德语)Faidon Liambotis (2): 测试: 修复未初始化变量 cpu_info buildsys/autotools 的使用: 添加pulseaudio-x11.service.inFelipe Sateler (3): treewide: 修复一堆错别字不要链接 libpulsecommon 与 GLib 和 GTK 测试:修复 json 测试对于大数字Frédéric Danis (1): core, modules: 删除无用的 EINTR 测试Georg Chini (17): protocol-native: 添加消息发送能力 pactl, pacmd, cli-command: 添加发送消息命令 core: 添加消息处理程序 pactl: 实现list message-handlers message-params:允许参数字符串包含转义的花括号 core-util:添加 pa_atoi64() 和 pa_atou64() 函数 message-params:为各种简单数据类型添加读/写函数 message-params:添加读取函数对于数组消息参数:修复数组读取功能环回:如果源是具有固定延迟接收器的 alsa 源,则修复接收器延迟计算:在取消链接接收器之前取消链接监视器源 null-source:当延迟更改源输出时更改 max_rewind:在移动虚拟源流后修复源输出音量接收器:请求回退 0 字节时不增加水印环回:修复崩溃错误流恢复:修复未初始化变量空接收器的使用:请求不超过来自接收器输入格雷格 V(19)的配置延迟:构建系统: meson:设置 HAVE_DLADDR,即使它在 libc (FreeBSD) 中,而不是 libdl build-sys:meson:当使用 libc iconv 时,告诉 libiconv 头假装是 libc 的 iconv build-sys:meson:检查 shm_open 即使它在 libc 中(FreeBSD),而不是 librt 构建系统:介子:在 alsa 测试中添加缺失的 pthread 依赖 padsp:修复在 FreeBSD 上的构建(使用与 glibc 相同的 ioctl 签名) raop:在 FreeBSD 构建系统上添加缺失的 netinet 包括:介子:添加 execinfo 依赖对于 FreeBSD 构建系统:介子:支持 m没有 SYS_memfd_create 的 emfd (FreeBSD 13) iochannel:支持在 FreeBSD pulsecore 上传递的凭据:删除古老的 __FreeBSD_version < 600000 代码 util:在没有 procfs 要求的 FreeBSD 上实现 pa_get_binary_name 检测:修复/改进 FreeBSD 支持 oss:不要回退到写入模式FreeBSD oss:支持 24 位示例格式 oss:支持 FreeBSD 上的热拔出 oss:在 FreeBSD 上正确解析设备名称 module-devd-detect:FreeBSD 上声卡热插拔的新模块 atomic-test:在 FreeBSD (cpuset_t) 上 unbreak 构建- sys: meson: only warn about缺乏 udev on LinuxGöran Uddeborg (4): Translated using Weblate (Swedish) Translated using Weblate (Swedish) Translated using Weblate (Swedish) Translated using Weblate (Swedish)Hela Basa (1): 添加翻译使用Weblate(僧伽罗语)Henri Chain(1):systemd:移动到会话 sliceHui Wang(8):alsa-mixer:一旦系统有扬声器开关可用,禁用自动静音:切换到耳机或麦克风未知使用 alsa-car d:为 alsa 配置文件添加动态优先级奖励基础 switch-on-port-available:在切换配置文件时检查关闭配置文件 alsa-mixer:将 HDMI/DP 输出设备的最大数量增加到 11 Revert“alsa-mixer:设置”Front “在耳机路径上控制到 0 dB” alsa-mixer:仅使用开关将耳机路径中的 Front 静音 alsa-sink/source:如果 ucm_port 发生变化,则立即将音量设置为 hw Igor V. Kovalenko (88):pa-info:寻找/usr/sbin 中的 alsa-info.sh 以及 build-sys: meson: 为 OSS 输出支持添加 oss-output 选项 build-sys: meson: use target_machine.cpu_family() for CANONICAL_HOST message-params: 添加读取长度参数参考到数组读取方法 message-params:通过数组读取方法使用包含 {} 的数组 module-alsa-card:处理 udev PULSE_MODARGS build-sys:meson:将 oss-output 布尔值更改为 Meson 功能蓝牙:将最大可渲染块大小与帧大小对齐上下文:添加属性以强制禁用共享内存通道 ladspa-sink:不调用 pa_sink_sus如果 PA_SINK_IS_LINKED 为 false,则挂起 x11:优雅地处理 X11 连接错误 x11:优雅地处理 ICE 连接错误守护程序:修复从构建树数据库运行时的默认 daemon.conf:提取处理机器 ID 和架构数据库的通用方法:使用匹配相同架构的现有数据库前缀数据库:从新创建的数据库文件名数据库中删除 arch:从任何 arch 数据库中选择旧数据库文件:清除对 CANONICAL_HOST 的剩余引用 alsa-mixer:添加对 SteelSeries Arctis 9 buildsys 的支持:autotools:将映射文件移动到 src/pulse buildsys:介子:实现更新映射文件目标映射文件:重新生成蓝牙:使GStreamer线程实时蓝牙:允许增加输出比特率蓝牙:允许增加SBC输出比特率蓝牙:通过output_rate_refresh_interval_ms模块参数蓝牙:a2dp双通道SBC XQ编解码器配置蓝牙:支持增加 SBC XQ 的比特率 build-sys:删除 gconf 支持 build-sys:meso n:添加 tcp-wrappers build-sys:meson:支持 elogind 替代 module-systemd-login 蓝牙:从 bluez 回退代码中删除不需要的更改 蓝牙:启用 module-bluez5-discover 参数 enable_native_hfp_hf 蓝牙:修复耳机 = 自动 ofono 切换蓝牙:更喜欢耳机 HFP HF 与本机后端蓝牙的连接:完整的蓝牙配置文件分离蓝牙:使用设备标志来防止关机期间断言失败蓝牙:将 enable_hs_role 重命名为 enable_shared_profiles 蓝牙:清理 rfcomm_write 使用蓝牙:修复错字检查目标编解码器是否可用蓝牙:正确rfcomm 命令和回复格式 build-sys: drop autotools build system build-sys: meson: fix meson dist version bluetooth: 接受 +VGM/+VGS 不请自来的回复与'=' 和 ':' 分隔符 json: 改进支持的数字 json: add JSON 编码器消息参数:使用 JSON 而不是自定义格式消息参数:清理蓝牙:更新消息传递 API 参考蓝牙:prio ritize 原生后端 HFP HF 连接蓝牙:统一编码器代码路径 bluetooth:统一解码器代码路径 bluetooth:添加 CVSD 编解码器实现 bluetooth:根据读取数据包大小应用写入 MTU 检测 bluetooth:使用 helper 设置多个传输对象属性 bluetooth:mSBC:忽略全零数据包蓝牙:mSBC:忽略空编码帧蓝牙:准备重做传输写出调度蓝牙:将 mSBC 添加到后端-ofono 蓝牙:显示协商的 HFP 编解码器蓝牙:记住......