LINUX.ORG.RU

pipewire в место pulseaudio

 , , , ,


2

3

Привет парни, кто нибудь шупал эту новую диковину и что можете сказать о ней в место пулсе и как истинный гентушник вопрос

Можно ли полностью под корень отказаться от pulseaudio, -pulseaudio, только alsa и pipewire

Есть ли возможность подавить шум микрофона как это реализовано в pulseaudio, а так же перевести его из стерео в моно

Почему используете или не используете его по умолчанию?

Привет парни, кто нибудь шупал эту новую диковину и что можете сказать о ней в место пулсе и как истинный гентушник вопрос

Оно работает.

Можно ли полностью под корень отказаться от pulseaudio, -pulseaudio, только alsa и pipewire

Вот так не надо, приложения юзают интерфейсы пульсы или джека чтобы общаться с pipewire.

Есть ли возможность подавить шум микрофона как это реализовано в pulseaudio, а так же перевести его из стерео в моно

Есть, но я этим не занимался.

Почему используете или не используете его по умолчанию?

Оно умеет и jack, и pulseaudio, так что не нужно устраивать зоопарк из двух аудиосерверов.

quantum-troll ★★★★★ ()

По возможности надо вырезать из системы всех этих аудио-посредников. В ядре есть alsa и она умеет всё что надо большинству десктопов.

Хотя я сам в одном месте pusleaudio полезным нашёл - чтобы стримить звук из системы сразу в сеть, минуя все аудиодвижки локального компа. Но в целом лучше везде чистым alsa пользоваться.

firkax ()
Ответ на: комментарий от firkax

По возможности надо вырезать из системы всех этих аудио-посредников

Кому «надо»? Мне не надо. Тебе? Ну и не говори за всех тогда.

В ядре есть alsa и она умеет всё что надо большинству десктопов.

Правда? Ну научи меня пожалуйста динамически переключать запущенные приложения (которые уже выводят звук) между интеграшкой, HDMI и двумя парами Bluetooth-наушников (одни из которых поддерживают LDAC, а другие AAC). Так, чтобы это могло происходить вручную или автоматически, а звук не терялся и не прерывался при этом.

Про стриминг звука по сети не говорю, потому что это, так и быть, уже под «большинство» не подпадает.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)

пользуюсь пайпварью, потому что она в любом случае подтянулась через зависимости, и работает не хуже пульсы. Хотя скорее даже лучше - aptx в bluetooth-наушниках из коробки, круто. Зачем держать установленным и то и другое, когда можно оставить что-то одно?

Не знаю как там с шумоподавлением, но делать его на уровне софта - в принципе прохладная идея, кмк.

Lrrr ★★ ()
Последнее исправление: Lrrr (всего исправлений: 1)
Ответ на: комментарий от SPRATAY

Оно позиционируется как универсальный аудиосервер, пригодный как для десктопа, так и для про аудао. С их же вики:

Is a new low-level multimedia framework designed from scratch that aims to provide:

Graph based processing with support for feedback loops and atomic graph updates.
Flexible and extensible media format negotiation and buffer allocation.
Support for out-of-process processing graphs with minimal overhead.
Hard real-time capable plugins.
Achieve very low-latency for both audio and video processing.

The framework is used to build a modular daemon that can be configured to:

Be a low-latency audio server with features like PulseAudio and/or JACK
A video capture server that can manage hardware video capture devices and provide access to them.
A central hub where video can be made available for other applications such as the Gnome Shell screencast API.

При этом оно реализует как интерфейс пульсы, так и интерфейс джека.

quantum-troll ★★★★★ ()
Ответ на: комментарий от firkax

По возможности надо вырезать из системы всех этих аудио-посредников. В ядре есть alsa и она умеет всё что надо большинству десктопов.

Наоборот надо выпиливать весь мультиплексинг из ALSA и разрешить им пользоваться только одному процессу (аудиосерверу), в DRM уже так. Меньше кода в ядре — меньше уязвимостей.

X512 ★★★ ()
Последнее исправление: X512 (всего исправлений: 1)

Ну как почему. Потому что нет смысла рыпаться, пока тебя принудительно не заставят. Работает пульса, ну и дай ей работать. Зачем записываться в бета-тестеры pipewire?

pingvinek ()
Последнее исправление: pingvinek (всего исправлений: 1)

кто нибудь шупал эту новую диковину

как-то раз смержил, что с ней дальше делать не очень понял, но как бы сильно и не пытался, потом удалил.

Можно ли полностью под корень отказаться от pulseaudio, -pulseaudio, только alsa и pipewire

И что ты хочешь в результате получить?
Очередное пщщщщщщщ в течение нескольких лет?

Есть ли возможность подавить шум микрофона как это реализовано в pulseaudio

Насчёт шумодава не в курсе, знаю только про echo canceler. Это сейчас отдельный проект https://github.com/voice-engine/ec, который был основан на пульсовом плагине. Может и шумодав кто-то делал.
PS: поиск по жидхабу показал, что нойз давят этим же плагином, подставив ему какие-то хитрые настройки.

imul ★★★★★ ()
Ответ на: комментарий от X512

Наоборот надо выпиливать весь мультиплексинг из ALSA и разрешить им пользоваться только одному процессу (аудиосерверу), в DRM уже так. Меньше кода в ядре — меньше уязвимостей.

Почему ты решил, что микширование происходит в ядре?

i-rinat ★★★★★ ()
Ответ на: комментарий от quantum-troll

Оно умеет и jack

Основная особенность JACK не в том, что он умеет, а в том, что он принципиально не умеет и не поддерживает. Он не поддерживает клиентов с разной частотой и форматом. Это сводит микширование к простому сложению численных представлений отдельных отсчётов и позволяет предельно уменьшить задержки, уменьшив размер буферов.

i-rinat ★★★★★ ()
Ответ на: комментарий от intelfx

Ну научи меня пожалуйста динамически переключать запущенные приложения (которые уже выводят звук) между интеграшкой, HDMI и двумя парами Bluetooth-наушников (одни из которых поддерживают LDAC, а другие AAC)

Угу, типичное, просто подавляющее, большинство десктопов.

grem ★★★★★ ()
Ответ на: комментарий от i-rinat

И в FAQ на это есть ответ: https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#isnt-format-nego...

Isn't Format Negotiation Bad For Pro Audio?
Yes. Format conversions are not cheap and must be avoided. For audio processing in PipeWire we have the following rules:

Filters and real-time clients must use float 32 mono audio. The audio processing graph is only operating in this format.
Format conversions are done at the input/output nodes. This means that conversions are done to and from devices and also to and from clients that use the stream API.
This also means that the conversion code for clients runs in the context of the client and not the server. This also avoids issues with having complicated code such as decoders running in the server context.

Carla, запущенная с `PIPEWIRE_LATENCY=«64/48000»`, работает нормально.

quantum-troll ★★★★★ ()
Ответ на: комментарий от quantum-troll

И в FAQ на это есть ответ

Не понимаю, зачем они пытаются на все стулья залезть, и почему сразу не обозначить, что заменой JACK они никогда не будут.

Ещё раз повторю. Идея JACK состоит в том, что клиенты не выбирают, с каким форматом и частотой работать. Сервер навязывает всем единые параметры, и все работают в указанных условиях. В PipeWire выносят преобразования в клиента, но, сюрприз-сюрприз, в dmix в ALSA тоже преобразования форматов делается в libasound, которая выполняется в адресном пространстве процесса-клиента. Но никто же не утверждает, что user-space компоненты ALSA это полноценная замена JACK.

Идея с переключением между низкими задержками и энергоэффективностью на ходу — так себе затея. Если цель состоит в том, чтобы предельно снизить пики задержек, имеет смысл перезагрузиться с intel_idle.max_cstate=1, чтобы отключить состояния сна. Параметр работает только во время загрузки. Во время работы поменять не получится. Да и доступа к таким настройками у демона звука, скорее всего, не будет. Не из-под рута же его пускать. Поэтому установка фиксированных частот тоже вне возможностей такого демона.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Не понимаю, зачем они пытаются на все стулья залезть, и почему сразу не обозначить, что заменой JACK они никогда не будут.

Почему? Оно вполне может работать в режиме, аналогичном JACK без ресемплинга. Проблема в программах, умеют ли они выдавать данные в нужном виде или нет.

Я намного больше не понимаю зачем нужны 2 разные системы для одной задачи.

имеет смысл перезагрузиться с intel_idle.max_cstate=1, чтобы отключить состояния сна

Привет Windows 95, перезагружаемся по каждому поводу.

X512 ★★★ ()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от intelfx

Правда? Ну научи меня пожалуйста динамически переключать запущенные приложения (которые уже выводят звук) между интеграшкой, HDMI и двумя парами Bluetooth-наушников (одни из которых поддерживают LDAC, а другие AAC). Так, чтобы это могло происходить вручную или автоматически, а звук не терялся и не прерывался при этом.

Поддерживаю. Сам переполз на pulseaudio когда как выражался t184256 начал «нескучно жить». Если используешь несколько аудиокарт/устройств, если хочется общесистемных эффектов, то пульса заметно облегчает жизнь.

pingvinek ()
Ответ на: комментарий от X512

В ALSA есть свой сервер микширования в пространстве пользователя?

Ну вообще-то есть, лол. Натурально так форкается два раза, чтобы демоном стать. Правда, он уже многие годы не используется по умолчанию, но, вроде бы, ещё можно включить.

звук только для одной программы

В ALSA, при настройках по умолчанию где-то с 2005 года множество приложений могут воспроизводить звук одновременно, даже если звуковая карта не имеет аппаратного микшера. Микширование выполняется программно, в пространстве пользователя. Работает, правда, только с программами, которые не пытаются захватить контроль за звуком в монопольном режиме. Тогда все остальные клиенты не смогут ничего воспроизводить, да.

i-rinat ★★★★★ ()
Ответ на: комментарий от X512

Почему? Оно вполне может работать в режиме, аналогичном JACK без ресемплинга. Проблема в программах, умеют ли они выдавать данные в нужном виде или нет.

Какая ирония. Это пишет мне человек, который рассказывал, как это хорошо, что в Haiku нет возможности рисовать в обход их API рисования. Что это позволяет передавать команды рисования по сети, и поэтому это так здорово. А тут тот же самый человек не понимает, какие преимущества даёт ограничение набора фич.

Клиент JACK не может задать свою частоту дискретизации и формат семплов. Там в API так задаётся: коннектишься к серверу, получаешь формат и частоту, работаешь с ними. В клиентской библиотеке нет возможности запросить частоту самому, поэтому на ресемплинг нельзя наткнуться случайно. Если приложение делает ресемплинг, это не из-за того, что программист случайно не ту функцию вызвал, а только из-за того, что он специально заморочился преобразованиями.

Привет Windows 95, перезагружаемся по каждому поводу.

Евгений Ваганович, перестаньте писать с чужих аккаунтов, пожалуйста.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Это пишет мне человек, который рассказывал, как это хорошо, что в Haiku нет возможности рисовать в обход их API рисования.

Не понимаю какое это имеет отношение. И да, обходить API рисования можно, достаточно вызвать BView::DrawBitmap. Правда при этом теряются преимущества векторной графики. Отдельный GUI сервер для растровой и векторной графики не нужен.

Клиент JACK не может задать свою частоту дискретизации и формат семплов. Там в API так задаётся: коннектишься к серверу, получаешь формат и частоту, работаешь с ними.

Pipewire не умеет давать клиенту предпочтительный формат семплов? При желании можно сделать специальный режим чтобы запретить использование других форматов, это делается элементарно и отдельный сервер для этого не нужен.

X512 ★★★ ()
Ответ на: комментарий от i-rinat

Ну вообще-то есть, лол. … Правда, он уже многие годы не используется по умолчанию

Так есть, что про него уже все забыли.

В ALSA, при настройках по умолчанию где-то с 2005 года множество приложений могут воспроизводить звук одновременно, даже если звуковая карта не имеет аппаратного микшера.

Через сервер ALSA из первого пункта? Его же во вашему надо специально включать, значит не пригодно для обычных программ, пользователь не будет править конфиги чтобы звук заработал.

X512 ★★★ ()
Ответ на: комментарий от X512

Pipewire не умеет давать клиенту предпочтительный формат семплов?

В иксах можно рисовать UI приложений через контекст OpenGL, залоченный на vsync. Это решило проблему тиринга раз и навсегда, да? (Это был сарказм.)

При желании можно сделать специальный режим

Само наличие этого желания ошибочно. Должно произойти что-то невероятное, чтобы универсальный инструмент смог выполнить работу специализированного инструмента лучше.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Само наличие этого желания ошибочно. Должно произойти что-то невероятное, чтобы универсальный инструмент смог выполнить работу специализированного инструмента лучше.

Давайте тогда уж делать специализированное ядро для звука, графики, игр, роботов и т.д.. А то выдумали универсальное ядро Линукс… Одно из главных преимуществ ядра Линукс в его универсальности и настраивамости.

Я не вижу чем Pipewire принципиально уступает Jack. Если пользователь использует только специализированные профессиональные программы, то всё будет работать точно также как в Jack и не не будет никаких накладных расходов вообще кроме памяти и места на диске. Код ресемплинга просто не будет вызываться.

X512 ★★★ ()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Через сервер ALSA из первого пункта?

Нет.

У тебя наверняка есть машина с встроенным аудио. У таких аудиоадаптеров нет аппаратного микшера, поэтому если нужно микширование, его должен производить софт. И клиентские библиотеки ALSA это и делают. Поставь на такую машину минимальный линукс с ALSA, но без PulseAudio или других аудио-серверов. Запусти несколько экземпляров плеера и убедись, что они все выводят звук одновременно.

Его же во вашему надо специально включать, значит не пригодно для обычных программ, пользователь не будет править конфиги чтобы звук заработал.

Его можно не включать, потому что микширование работает и без него. Конфиги править тоже не нужно, работает, что называется, прямо из коробки.


Все эти истории про ALSA и невозможность двух источников звука либо уходят корнями в первую половину 2000-х, когда встроенное аудио с единственным каналом стало потихоньку вытеснять отдельные звуковые карты с аппаратными микшерами, либо сгенерированы псевдо-продвинутыми пользователями, которые решили, что в состоянии написать свой конфиг ALSA, но включить там dmix не осилили. В настройках по умолчанию dmix и plug включены с примерно 2005 года, поэтому проблем с одновременным выводом звука от нескольких приложений с того времени нет.

Опять таки, нужно напомнить, что наступить на грабли всё ещё можно. Достаточно написать свой клиентский конфиг ALSA, где соединить default напрямую с hw:0,0. Тогда первое же приложение захватит звуковую, и все остальные замолчат.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

У таких аудиоадаптеров нет аппаратного микшера, поэтому если нужно микширование, его должен производить софт. И клиентские библиотеки ALSA это и делают.

Если вы разбираетесь в ALSA лучше меня, можете пояснить как может работать микширование без аппаратной поддержки, микширования в ядре и без сервера микширования? Совместное использование любым ресурсом (экран, звук, диск, сеть) требует сервер или модуль ядра.

X512 ★★★ ()
Ответ на: комментарий от X512

Давайте тогда уж делать специализированное ядро для звука, графики, игр, роботов

Для роботов имеет смысл использовать другое железо и ОС реального времени. Так что ты вообще-то в точку попал, хотя и не хотел.

Одно из главных преимуществ ядра Линукс в его универсальности и настраивамости.

Я говорил о настройке CPU. Это немного ниже, чем ядро Linux.

Ты прикалываешься или реально не понимаешь, что чем глубже C-state ядра процессора, тем больше времени ему нужно, чтобы проснуться? Вот так совпало, что на прошлой неделе замерял время отклика программы на запрос. При дефолтных настройках получилось где-то 1,5-2 мс, при выключенном сне и зафиксированной частоте — стабильно 0,6 мс. Это имеет значение, веришь ты или нет. Но опять-таки, у меня ноут, а не сервер. Мне важно, чтобы он грелся поменьше, а не миллисекунды экономить. Поэтому после замеров перезагружаюсь обратно, уже со включенными состояниями сна. И если ты не заметил, в обоих случаях ядро вообще-то одно. Настройки разные. К чему тогда твой пассаж про универсальность и настраиваемость?

i-rinat ★★★★★ ()
Ответ на: комментарий от X512

как может работать микширование без аппаратной поддержки, микширования в ядре и без сервера микширования

Отображаешь кусок разделяемой памяти в каждый процесс-клиент. Размещаешь там семафор для синхронизации. Каждый клиент вмешивает свои данные в существующие данные периода, под взаимной блокировкой. Когда доходит до вывода звука, данные в периоде уже смикшированы. Уведомления о переключении текущего периода каждый процесс получает от ядра.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Для роботов имеет смысл использовать другое железо и ОС реального времени.

Другое железо это да, но часто для роботов используют Linux с realtime патчами. Во многих описаниях роботов (например HRP-4) я вижу упоминание Linux в качестве системы управления.

Ты прикалываешься или реально не понимаешь, что чем глубже C-state ядра процессора, тем больше времени ему нужно, чтобы проснуться?

Это понятно. Не понятно зачем для этого нужна перезагрузка и почему это нельзя настроить на лету.

К чему тогда твой пассаж про универсальность и настраиваемость?

К тому что Jack не нужен и все его use case покрывает Pipewire. Он даже API Jack поддерживает.

X512 ★★★ ()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Не понимаю, зачем они пытаются на все стулья залезть, и почему сразу не обозначить, что заменой JACK они никогда не будут.

Ну что ты как маленький?
Ты разбираешься? А лемминги НЕТ!

Вот у тебя есть инструмент, он надёжный в силу возраста. Но в определённых специализированных задачах нужна Wunderwaffe.
Задачи нужны 1 проценту, но очень-очень. Как эту хрень впарить?

Даже проще - был молоток, а я пришел и сказал: мой молоток и гвозди вырывает и кусачками может быть. А ты у виска крутишь и говоришь: да Господь с тобой, ну забивает, ну вырывает (хотя хуже, чем специализированный инструмент), но кусачки?
А я тебя подвинул в сторонку и на площадь, вылез на трибуну, а тут лемминг с ЧСВ проходит - @Sunderland93.
Я ему и втёр, что за этой Wunderwaffe будущее, а кто молотками пользуется - лох. Дальше сказка о экономии, продуманности, новом подходе к задаче и так далее. Он выслушал, приобщился. Так, как знаний нет (это же сложна), то чтобы выделиться при восклицании знакомой фразы о инструментах и молотке, в частности, резко унижает других навязанными фразами «лох, устарело, вы не понимаете, как там в прошлом».

А что на выходе? Flatpak поёт и передаёт видосик:

PipeWire was designed with a powerful security model that makes interacting with audio and video devices from containerized applications easy, with supporting Flatpak applications being the primary goal.

Ну и плюс завязка на Wayland, что позволяет отрезать мир, посроенный на идеологии RMS и молодого Linus.

Viva Быдло!

real_Petrovich ()
Ответ на: комментарий от X512

Не понятно зачем для этого нужна перезагрузка и почему это нельзя настроить на лету.

Ну отменить C-states наверняка можно на ходу, ведь модуль ядра это делает уже значительно позже процедуры запуска процессора. Но у Linux по умолчанию я других ручек управления не нашёл. Да и дико это довольно, включать и отключать C-states на ходу.

И знаешь ещё что? Мне не нравится идея менять детали работы CPU от не-рута. Даже делать такое от рута — плохая идея. Как временный костыль подойдёт, но на постоянной основе не очень.

К тому что Jack не нужен и все его use case покрывает Pipewire. Он даже API Jack поддерживает.

В X11+GLX можно реализовать всё то же, что реализовано в графическом API в Haiku. Получается, Haiku не нужна? Логика та же.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

В X11+GLX можно реализовать всё то же, что реализовано в графическом API в Haiku. Получается, Haiku не нужна?

Нет, я уже обсуждал почему. В X11 не предусмотрена синхронизация рисования. GLX подразумевает аппаратное ускорение, а Haiku быстро работает на фреймбуфере без аппаратного ускорения (да я знаю, что есть LLVMPipe, но он работает медленнее специализированного векторного 2D растеризатора). В X.Org нет глобального двойного буфера, так что программы будут потреблять намного больше памяти, причём это будет порядка O(S), где S — суммарная площадь всех окон, включая пересекающиеся и скрытые.

Pipewire позволяет реализовать весь функционал Jack без потерь и снижения эффективности. Они решают абсолютно ту же задачу, и там и там буферы те же.

X512 ★★★ ()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от real_Petrovich

Flatpak поёт и передаёт видосик

Насколько я помню, PipeWire для этого и задумывался. Но потом набежали другие люди и решили им заткнуть всё остальное. Внезапно он решит все проблемы с пш-пш в PulseAudio, используя при этом тот же самый подход с таймером, из-за которого PulseAudio делает пш-пш на некоторых звуковухах. Но пш-пш не будет. Почему не будет? Потому что магия. Теперь вот ещё он и JACK заменит. Как там с пиками в задержках? Их не будет, потому что магия.

Авторы PipeWire, видимо, не понимают, как его видит громкая прослойка пользователей. Для них PipeWire это такой авангард, который победит Владыку Зла и всех нас спасёт. А возможно, понимают и просто ловят лулзы. https://www.youtube.com/watch?v=U5_Bc8ixvv8

i-rinat ★★★★★ ()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от X512

Пф. В PipeWire звук в 32-битной плавающей точке, видео в 32-битных плавающих точках на канал, причём всё нужно ресемплить туда-сюда, даже если форматы входа и выхода позволяют этого избежать. И ты что-то там про повышенное потребление ресурсов говоришь? Всё, отменяем Haiku.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

А возможно, понимают и просто ловят лулзы

Ну дык! Священная корова война!

А на самом деле они отрабатывают бабки. Чёрт меня дёрнул лезть в исходники того, что считается нативным под Wayland (кроме мелких утилит, написанных под wlroots). Я спать теперь нормально не могу.

real_Petrovich ()
Ответ на: комментарий от i-rinat

В PipeWire звук в 32-битной плавающей точке, видео в 32-битных плавающих точках на канал

PipeWire supports arbitrary formats for the audio data. For practical purposes, and interaction with existing jack clients, we limit the formats of the audio processing graph to:

32-bit floating-point (float32) mono audio

https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Audio-support

Это походу специально для совместимости с Jack сделано, значит Jack ничем не лучше.

Всё, отменяем Haiku.

В BeOS/Haiku тоже 32 float для звуковых пакетов, и это не мешало называть BeOS мультимедиа системой и использовать её в профессиональных студиях. Haiku и сейчас используется в радиостудиях.

X512 ★★★ ()