Skip to content

Commit 6b07a9c

Browse files
committed
generic-system-acceleration: Rework PipeWire section a bit
Signed-off-by: Vasiliy Stelmachenok <[email protected]>
1 parent 81b58e4 commit 6b07a9c

File tree

1 file changed

+67
-46
lines changed

1 file changed

+67
-46
lines changed

docs/source/sound.rst

Lines changed: 67 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -8,49 +8,66 @@
88
99
.. _sound:
1010

11-
**********************
12-
Низкие задержки звука
13-
**********************
11+
*******************
12+
Настройка PipeWire
13+
*******************
1414

15-
.. index:: installation, lowlatency, audio, pipewire
15+
.. index:: installation, audio, pipewire, about
1616
.. _pipewire:
1717

18-
========
19-
PipeWire
20-
========
18+
====================
19+
Что такое PipeWire?
20+
====================
2121

2222
`PipeWire <https://wiki.archlinux.org/title/PipeWire_(Русский)>`__ -
23-
это новая альтернатива PulseAudio, которая призвана избавить от
24-
проблем своего предшественника, уменьшить задержки звука, снизить
25-
потребление памяти и улучшить безопасность. PipeWire поставляется по
26-
умолчанию в Arch Linux в качестве звукового сервера, требуемого для
27-
клиентов libpulse [#]_, так что никаких команд для его установки
28-
прописывать не нужно. Однако несмотря на это рекомендуется установить
29-
дополнительные компоненты и явно включить пользовательские службы для
30-
уменьшения задержки их запуска через активацию путем сокетов, которая
31-
используется по умолчанию для запуска PipeWire::
23+
это новая альтернатива PulseAudio, которая призвана избавить
24+
пользователей от проблем своего предшественника, уменьшить задержки
25+
звука и снизить потребление памяти, а также улучшить безопасность.
3226

33-
sudo pacman -S pipewire-jack gst-plugin-pipewire
34-
systemctl --user enable --now pipewire pipewire-pulse wireplumber
27+
С недавних пор PipeWire поставляется в Arch Linux и ряде других
28+
дистрибутивов Linux в качестве звукового сервера по умолчанию,
29+
требуемого для клиентов libpulse [#]_, так что никаких команд для его
30+
установки прописывать не нужно.
3531

36-
Для непосредственно уменьшения самих задержек установим дополнительный
37-
пакет ``realtime-privileges`` и добавим пользователя в группу
38-
``realtime``::
32+
.. [#] https://gitlab.archlinux.org/archlinux/packaging/packages/pipewire/-/commit/14614b08f6f8cf8e50b4cbb78a141e82066e7f80
3933
40-
sudo pacman -S realtime-privileges rtkit
41-
sudo usermod -aG realtime "$USER"
34+
.. index:: installation, lowlatency, audio, pipewire
35+
.. _pipewire_lowlatency_setup:
4236

43-
Дополнительно советуем установить реализацию Jack API. См. раздел
44-
ниже.
37+
==========================
38+
Уменьшение задержки звука
39+
==========================
4540

46-
.. [#] https://gitlab.archlinux.org/archlinux/packaging/packages/pipewire/-/commit/14614b08f6f8cf8e50b4cbb78a141e82066e7f80
41+
Для понижения задержек звука нужно изменить алгоритм планирования
42+
процессов PipeWire, сделав обработку звука первоочередной задачей для
43+
системы. Сделать это можно при помощи уже упомянутой ранее службы
44+
``ananicy-cpp`` путём создания дополнительного набора правил, который
45+
позволит автоматически изменять используемую политику планирования и
46+
повышать приоритет в отношении данных процессов:
47+
48+
.. code-block:: shell
49+
:caption: ``/etc/ananicy.d/pipewire.rules``
50+
51+
{ "name": "pipewire", "sched": "rr", "rtprio": 20 }
52+
{ "name": "pipewire-pulse", "sched": "rr", "rtprio": 20 }
53+
{ "name": "wireplumber", "sched": "rr", "rtprio": 10 }
54+
55+
После сохранения файла следует перезапустить службу::
56+
57+
sudo systemctl restart ananicy-cpp
58+
59+
Использование данных правил также может помочь избавиться от
60+
неприятного потрескивания при воспроизведении звука в ситуациях
61+
повышенной нагрузки на систему. Однако это не единственная мера,
62+
которая может помочь справится со звуковыми искажениями. Подробнее
63+
смотрите следующие разделы.
4764
4865
.. index:: pipewire, lowlatency, audio, sound
4966
.. _pipewire_setup:
5067
51-
--------------------
52-
Настройка PipeWire
53-
--------------------
68+
=================================
69+
Настройка частоты дискретизации
70+
=================================
5471
5572
Несмотря на то, что настройки по умолчанию могут работать достаточно
5673
хорошо для большинства оборудования, имеет смысл выполнить
@@ -120,9 +137,9 @@ PipeWire так же считает оптимальные задержки дл
120137
.. index:: pipewire, upmix, 5.1, sound
121138
.. _upmixing-5.1:
122139
123-
^^^^^^^^^^^^^^^^^^^^^^^^^^^
140+
--------------------------
124141
Микширование стерео в 5.1
125-
^^^^^^^^^^^^^^^^^^^^^^^^^^^
142+
--------------------------
126143
127144
PipeWire так же как и PulseAuido позволяет микшировать звук в 5.1.
128145
Эта возможность отключена по умолчанию, но для неё существует заранее
@@ -136,19 +153,20 @@ PipeWire так же как и PulseAuido позволяет микширова
136153
.. index:: pipewire, choppy, high-load, cpu, sound
137154
.. _choppy-audio:
138155
139-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
140-
Исправление хрипов под нагрузкой
141-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
156+
================================================
157+
Исправление "потрескивания" звука под нагрузкой
158+
================================================
142159
143160
Некоторые пользователи после перехода на PipeWire могут столкнуться с
144-
появлением "хрипов" во время произведения звука, если система находится
145-
под высокой нагрузкой (например, фоновой компиляцией или во время игры).
146-
Это происходит потому, что PipeWire старается осуществлять вывод с
147-
звука с наименьшими задержками, что сложно гарантировать когда
148-
система нагружена даже с установленными ``realtime-privileges``.
161+
появлением "хрипов" или так называемого "потрескивания" во время
162+
произведения звука, если система находится под высокой нагрузкой
163+
(например, фоновой компиляцией или во время игры). Это происходит
164+
потому, что PipeWire старается осуществлять вывод с звука с
165+
наименьшими задержками, что сложно гарантировать даже тогда, когда
166+
система настроена на приоритизацию процессов по выводу звука.
149167
150-
Для их исправления создадим новый конфигурационный файл и изменим
151-
следующие значения для размера буфера по умолчанию:
168+
Для решения данной проблемы следует создать новый конфигурационный
169+
файл с указанием измененных значений для минимального размера буфера:
152170
153171
.. code-block:: shell
154172
:caption: ``~/.config/pipewire/pipewire.conf.d/10-sound.conf``
@@ -163,11 +181,12 @@ PipeWire так же как и PulseAuido позволяет микширова
163181
``min-quantum`` на два и проверить снова до тех пор пока проблема не
164182
перестанет воспроизводится.
165183
166-
.. jack:
184+
.. index:: pipewire, lowlatency, audio, jack
185+
.. _pipewire_jack:
167186
168-
----
169-
JACK
170-
----
187+
===============
188+
Поддержка JACK
189+
===============
171190
172191
JACK - это ещё один альтернативный звуковой сервер с одноименной
173192
библиотекой API, цель которого состоит выведение звука с минимальной
@@ -181,6 +200,8 @@ PipeWire, так как актуальная реализация JACK - `jack2
181200
библиотеки API лучше всего установить пакет ``pipewire-jack``, который
182201
предоставляет совместимость между такими приложениями со звуковым
183202
сервером PipeWire, что позволяет всем изменениям проделенным выше для
184-
его настройки распространяться и на приложения, использующие JACK.
203+
его настройки распространяться и на приложения, использующие JACK:
204+
205+
sudo pacman -S pipewire-jack
185206
186207
.. vim:set textwidth=70:

0 commit comments

Comments
 (0)