LINUX.ORG.RU

KLANG — проект новой аудиоподсистемы для ядра Linux и FreeBSD

 ,


1

4

Некий разработчик объявил о запуске проекта KLANG по созданию новой аудиоподсистемы для ядра Linux и FreeBSD. KLANG должен предоставить пользователям профессиональное качество работы с аудиоматериалом, минимальные задержки и минимальную загрузку ЦП при обработке звука.

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

Что не устраивает автора проекта в существующих аудиосистемах?

  • ALSA не имеет поддержки микшировавния, даже при использовании dmix.
  • JACK слишком сильно загружает ЦП.
  • PulseAudio все еще требует RealtimeKit для работы.
  • ESD — не для обычного домашнего использования.
  • OSS не поддерживает MIDI-синтезаторы, слишком быстро расходует батарею. Зато имеет прекрасный API.

Почему аудиосистема помещена внутрь ядра? Во-первых, это единственный благоразумный вариант. Для аудиопотока наиважнейшим параметром является время задержки. Даже при коротких на первый взгляд задержках восприятие такого звука ухом неприятно. Например, для видеосистемы задержки даже в 20 мс трудно различимы, а для звука уже 4 мс — это слишком много.

При низком времени задержки требуется работа с более коротким буфером данных, что усложняет процесс конфигурации планировщика процессов. Имеющиеся аудиосистемы, работающие на пользовательском уровне, запускаются с realtime-приоритетом. Если процессов-обработчиков аудиоданных немного, то все будет работать хорошо, но с увеличением их числа нагрузка на ЦП вырастет в разы. Помещение аудиоподсистемы в ядро во многом помогает в решении проблемы и позволяет реализовать собственный эффективный планировщик. К тому же ядро — прекрасный и удобный уровень абстракции над оборудованием, не нужно самому заботиться о деталях.

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

API разрабатываемой аудиоподсистемы будет изначально подразумевать правильную работу со звуком:

  • open(2) — обращение к одной из конечных точек;
  • ioctl(2) — конфигурация работы с конечной точкой;
  • write(2) — запись аудиоданных;
  • read(2) — получение аудиоданных.

Очень сильно напоминает OSS. Да, подобный OSS-совместимый API будет предоставлен KLANG для пользовательского уровня. Данный API, конечно, ни для кого не станет открытием, но он достоин повторного использования и дальнейшего расширения.

На данный момент KLANG еще слишком нестабилен для внедрения и опробования. И разработчик не собирается выпускать его для всех на слишком ранней стадии. По адресу вскоре можно ожидать появления дополнительной информации и официального баг-трекера проекта.

>>> Подробности

★★★★★

Проверено: JB ()

Ответ на: комментарий от unfo

Lennart Poettering - немец. Совпадение ли это? :)

Тихо! Немчикам за вторую мировую все еще стыдно, а ты тут такое высказываешь! Пожалел бы хоть людей. Пиво годное варят, сосиски тож ничего так=) У них есть много чего хорошего!

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

с такими костылями можно и на алсе сделать.

arecord -f cd -D hw:1,1,0 | nc6 ${SERVER} ${PORT}

это на клиенте (aloop-snd не забыть)

nc6 -l -p 12345 --continuous --exec «aplay -f cd -»

на сервере

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

Видел на одной странице.

Как будто alsa и oss снаружи

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

Если реализованная поддержка микширования позволит мне программно соединять потоки аудио как угодно без аппаратной поддержки микширования звуковухой, то я всеми руками «за». Мне этого не хватает, а покупать из-за этого звуковуху за 100500 денег как-то некошерно.

alsa+dmix, alsa+pulse.

Axon ★★★★★ ()

Да, подобный OSS-совместимый API будет предоставлен KLANG для пользовательского уровня.

Уже только из-за этого пункта НУЖНО. API ALSA придумывали по жестокому накуру.

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

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

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

Закинул в копилку. Правда для плавной громкости придется сишный костыль делать по любому.

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

5? акстись, их только три, один из них труп. (alsa, ossv3, ossv4). Остальное надстройки и костыли поверх вышеуказанных.

AiFiLTr0 ★★★★★ ()

Linus Torvalds

Talk is cheap. Show me the code.

Даже нечего к этому добавить.

dinn ★★★★★ ()

Где же этих идиотов откапывают?

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

Боится афишировать, могут побить, возможно... даже ногами.

vadmitru ()

Лучше бы Полу помог довести до ума Ардур.

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

А там кроме фанатиков практически никого не волнует почему что-то плохо работает, в этом случае виновата система которая не смогла обеспечить нормальное функционирование любимых массами шняг. Когда было надо, то и ОС патчилась под баги ПО, это не линукс где если из-за багов дистра что-то валится то кричат «прога говно, закопать».

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

Кто из коробки работает?

dmix, конечно. Ни разу не видел, чтобы не работал. Арчвики тоже со мной согласна.

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

А, dmix. Нет, у меня просто запросы нестандартные. Звук на вывод из разных программ у меня работает отлично.

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

Да что такое - пока пишу сообщение, уже ответили. Не успеваю. :)

Я, видимо, плохо читал доки в этом направлении или что-то не понял. Сейчас буду курить мануалы, как dmix'ом звуковые потоки заворачивать.

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

Когда было надо, то и ОС патчилась под баги ПО, это не линукс где если из-за багов дистра что-то валится то кричат «прога говно, закопать».

ололо, а потом в той ОС появлялись куски кода которые в зависимости от имени исполняемого файла наливали специфичное окружение - фтопку такие костыли, баги надо править, а не подпирать костылями

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

>Линуксята притащили свои костылики
>Windows виновата

Линукс головного мозга. Виндовс, конечно, не подарок, но опенсорс костыли это геморрой опенсорса.

Deleted ()

это как раз то, чего нам не хватало!

а вообще, если он соберёт плюсы от всех, будет просто отлично

xsektorx ★★★ ()

Типичный Open Source! Если что-то не нравится, запили своё!

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

Эмм, разработчику не пофиг. А чем хуже апи - тем меньше желания пилить свои поделия на линукс.

no-steam ★★ ()
Ответ на: комментарий от shty

фтопку такие костыли, баги надо править, а не подпирать костылями

Как будто в линуксе их правят - сломали звук в dosemu - зашибись, всё нормально, у нас ещё dosbox неполоманный остался!

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

Зацитирую:

I'd like to reiterate a few points based on our experience with Linux audio at Harrison.

We have a product called Xdubber that was developed 5 years ago. The Xdubber uses a custom JACK driver (no ALSA). The system operates with 8-sample buffers ( compared to the much more common 1024 or, at best, 64 samples provided in most systems ) for extremely low latency. We send 64 channels of 96kHz audio in and out of the system. I have tested this system for days using an Audio Precision bit-test with error-checking turned on.

Our findings with an actual commercial product have shown that:

  • JACK has a very minimal CPU/memory footprint.
  • JACK has nothing to do with XRUNS. it reports xruns that happen in the driver and/or application level which otherwise would go unreported.
  • There is no fundamental issue with the coding style of JACK. It's just very hard work to d this kind of plumbing.
  • An ultra-high performance, ultra-low latency system can be built with JACK

I've had similarly good experiences with the best-implemented ALSA devices, such as RME and older M-Audio.
There ARE a lot of issues with linux audio. But they stem mostly from the unbelievably wide range of use-cases between applications and devices. And the fact that Linux users actually have higher expectations of their audio system .... for example Windows still doesn't have the concept of virtual MIDI ports, much less inter-application routing. OSX's CoreAudio is better but still lacks fundamental features of ALSA and JACK.

-Ben Loftis
Harrison Consoles

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

Если реализованная поддержка микширования позволит мне программно соединять потоки аудио как угодно без аппаратной поддержки микширования звуковухой, то я всеми руками «за». Мне этого не хватает

Что конкретно мешает вам делать это, используя dmix, PulseAudio или JACK?

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

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

Другое дело, что в опенсорсе это последнее время - модный тренд. И ладно бы велосидели маленькие проекты - переписывают горы хреново работающего кода на такие же горы так же хреново работаюшего. А еще обиднее когда переписывает почти хорошо работающий код на хреновый и потом дооолго допиливают(привет KDE4!)

Pinkbyte ★★★★★ ()

В зоопарке прибыло. Успехов пареньку!

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

Линуксята притащили свои костылики
Windows виновата

Линукс головного мозга. Виндовс, конечно, не подарок, но опенсорс костыли это геморрой опенсорса.

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

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

Как будто в линуксе их правят

как будто за тебя это кто-то сделать должен

// ну и в любом разе, хоть не заботливо пестуют

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

просто последнее время альса на дефолтной конфигурации(читай - без ~/.asoundrc и /etc/asoundrc) врубает программное микширование на всех картах, где нет аппаратного

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

Мне нужно по***ть, туалет не предлагать? Сливайся сам. В виндовсе, сколько их там, три?.. способа выводить звук. Все обёртки и костыли, которые опенсорсники наклепали поверх к виндовсу относятся чуть менее, чем никак. Это, естественно, не означает, что там всё хорошо :}

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

* Анонимно, ай-яй-яй, не хорошо анонимно писать.

* Драйверы уже в ядре. Спасибо, К.О.

* Проблема лагающего звука не может быть решена в линуксе. Любая нормальная операционная система в 2012-м году будет иметь лагающий звук. И вообще это всё кривые плееры. Все.

* open/read/write/ioctl не канают как интерфейс, хоть оно сейчас по сути так и работает, но глупые прикладные программисты ничего не поймут и всё криво напишут, ещё кривее чем сейчас. Мы должны делать такое АПИ, чтобы глупые программисты не могли писать плохие программы.

* какая-то претензия про inter-application audio, возможно она разумна, не знаю, что это такое. По-моему можно открыть pipe и гонять там данные.

* не осилите миксер в ядре, мы вам запретим трогать fpu.

* Jack идеален и ничего больше не нужен (что это такое вообще? почему про этого джека никто никогда не слышал?).

* KLANG хочет переписать все драйверы, это абсурд. В принципе да, если всё с нуля переписывать, то абсурд, согласен. Надеюсь, у автора другие мысли.

* Чего-то про то, что ESD нынче не торт и не надо его упоминать.

В итоге три пункта можно натянуто признать претензиями - inter-application audio, fpu в ядре и переписывание всех драйверов. Остальное не критика.

Legioner ★★★★★ ()

Wolfgang 'datenwolf' Draxinger

A few people may remember my response to Lennart Poettering: «Do you know about shell scripts?» Shell scripts are an incredibly powerfull tool, because they allow to combine a number of simple programs into something very sophisticated. Today I present you: A network audio system consisting of sox, netcat, celt and of course a shell, for which I use simple /bin/sh. We also use a bit help of the OS kernel, so that this whole thing works as if it were an actual ALSA audio device.

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

Когда Jack будет в убунте по умолчанию, тогда имеет смысл о нём говорить. Пока из всех аудиосистем шевелятся только alsa и pulseaudio.

Legioner ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.