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 ()

Знатный велосипед. Ну посмотрим, во что это выльется.

geekless ★★ ()

Хочет изобрести Jack?

ArtKun ★★★★★ ()

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

Все остальные задумывали системы как нерпозрачные, неэффективные с узкими возможностями?

r ★★★★★ ()

Да, давненько никто не делал принципиально новую аудио-подсистему.

metar ★★★ ()

Почему аудиосистема помещена внутрь ядра? Во-первых, это единственный благоразумный вариант.

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

anonymous ()

К тому же ядро - прекрасный и удобный уровень абстракции над оборудованием

Правильно, давайте в него еще чего-нибудь запихаем

upcFrost ★★★★★ ()

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

Alden ★★ ()

Для аудиопотока наиважнейшим параметром является время задержки. Даже при коротких на первый взгляд задержках восприятие такого звука ухом неприятно.

Зато тормозящие видео, интерфейс, или xeyes ухом воспринимается приятно. С такой логикой давайте все в ядро запихнем, че.

r ★★★★★ ()

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

А JACK разве не ровно для этого же задумывался?

Gvidon ★★★★ ()

какой замечательный треп.

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

Правильно, давайте в него еще чего-нибудь запихаем

Предлагаю запихать туда systemd и wayland. Чисто для лулзов.

geekless ★★ ()

Теперь модно не плееры писать, а целые аудио-подсистемы?

PS: Название, конечно, убогое.

kovrik ★★★★★ ()

Этот «некий автор» довольно таки разносторонняя личность

ALSA не имеет поддержки микшировавния, даже при использовании dmix;

автор не осилил пульсу

JACK слишком сильно загружает ЦП;

автор не осилил конфиги / минимальные правки чужого кода

PulseAudio все еще требует RealtimeKit для работы;

автор - тулкитофоб

ESD - не для обычного домашнего использования

автор - анонимный аналитик

OSS не поддерживает MIDI-синтезаторы, слишком быстро расходует батарею. Зато имеет прекрасный API.

познания автора остались на уровне fopen/fread.

quiet_readonly ★★★★ ()

PulseAudio все еще требует RealtimeKit для работы;
PulseAudio... meh, but I'm hearing it's getting better recently. Does it still require RealtimeKit to work properly?

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

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

--- У нас есть 14 стандартов, но каждый из них с изъянами. Давайте сделаем новый, объединив всё лучшее из других.

--- Давайте!

--- У нас есть 15 стандартов, но каждый из них с изъянами...

ssvda ()

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

unfo ★★★★★ ()

А допилить альсу до ума и отослать патчи разрабам, не? Или форкнуть, если не берут.

Lavos ★★★★★ ()

ALSA не имеет поддержки микшировавния, даже при использовании dmix;

Чушь какая-то. Как-то же потоки микшируются. Я могу одновременно смотреть кино или слушать музыку и получать звуковые уведомления из жаббера.

JACK слишком сильно загружает ЦП;

Да не слишком, нормально он загружает. Для своих целей.

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

Собсна:

If you don't like the idea of KLANG, then don't use it.

Maybe it ends up in a mainline kernel's source tree.

If not, it's not much of a big deal either, though it would be rather cool to have it there.

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

Предлагаю запихать туда systemd и wayland. Чисто для лулзов.

Мало. Лучше сразу иксы и кеды четвертые. И все существующие игры.

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

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

Так работает если специально конфигуришь или потому что карточка умеет аппаратный миксинг.

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

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

Kernel Level Audio Next Generation наверное.

r ★★★★★ ()

Maybe it ends up in a mainline kernel's source tree.

Наивный

upcFrost ★★★★★ ()

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

punya ★★ ()

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

anonymous ()

А почему название тупое-то? Ни чуть не хуже названий остальных аудиосистем.

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

А зачем вообще брать каточку без микширования? Ведь это одна из основных ее функций.Да и фиг найдешь сейчас такую.

spacemm ()

Не думаю что этот проект настолько необходим.

Лучше бы некоторые производители сотрудничали с сообществом

Open Source .

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

Kernel Level Audio Next Generation

Это я видел :) Но оно все равно кривое. А аббревиатура и подавно.

unfo ★★★★★ ()

Ура, в линуксе появится еще один интерфейс для вывода звука! Все разработчики радуются!

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

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

Так работает если специально конфигуришь или потому что карточка умеет аппаратный миксинг.

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

anonymous ()

Посмотрим. Если будет удобно - почему бы и нет?

vurdalak ★★★★★ ()

Ваще-то алса тоже появилась как альтернатива ОSS и все по началу посмеивались. Но кто реально занимается звуком, тот в курсе всех проблем и alsa, и jack. PulseAudio - ваще просто не берем в расчет, это дрянь полная.

Во всяких BSD со звуком ваще мрачновато. Так то не надо раньше времени кричать «не нужно». Нужно и очень нужно.

alukin ()

...и снова я буду играть без звука...

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

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

anonymous ()

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

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

Год велосипедов в ядре?

Предлагаю подобные новости помечать тэгом «ведросипед»

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