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

Да, только вот на страничке не нашел как связаться с авторами и как получить сорцы, как присоединится к проекту...

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

Если это взлетит, предвижу треды «половина программ не работает с альсой, а вторая с клангом — как мне собрать ядро?!». Хотя я даже представляю костыль. Обёртка альсы, которая перенаправляет звук в пульсу, который перенаправляет в кланг.

Еще одно API аудио — это ведь то, чего мы все так долго ждали! А то жить теперь скучно, ничего не глючит, даже пульса работает нормально.

geekless ★★ ()

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

они изобрели OSS?

Reset ★★★★★ ()

Ну охренеть теперь.

А про высокую нагрузку ЦП джеком не понял, вроде, всё нормально с ним.

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

Чё правда? Я прям так и вижу: не я этот и вообще все остальные ноуты не буду покупать, у них встроенное аудио не умеет хардварный микс.

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

Чем это лучше OSSv4?

Ъ

OSS4 provides mixing, resampling and splicing a signal from a source to a process. But OSS4 still treats audio HW and client processes accessing it as different kinds of citizens. In addition to that OSS4 has no support for power management and sequencer data (=MIDI)

KLANG is different. KLANG has full support for the available power management primitives. KLANG provides transport for non-sample data, like MIDI. And KLANG will integrate into the kernel's namespacing/container primitives.

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

Супер Ъ? В новости об этом практически прямым текстом и написано.

mine ()

На альсу уже есть дрова почти для всех распространенных звуковух. Опять все по новой :\

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

Тогда подумайте надо вопросом: почему нет alsa под xBSD? Все не так просто. ALSA - неудобоваримый монстр. Лучший способ ее полечить - оставить помирать. :) С Jack проблемы начинаются, когда у вас много всего подключено, например rakarrack для гитары, quitarix для басухи, пара каналов с микрофонов, MIDI клава через какой-нить софтсинт, MIDI секвенсор какой-нить, и еще плюс ardour для записи всех этих дорожек.

256 остчетов, 11mc - максимум что можно выжать без xrun'ов, и то не всегда. И не сильно оно упирается в проц. 4 коры на 2.4ГГц или 2 коры на 1.8ГГц - один хрен. Где-то оно затыкается в других местах. А в приципе-то там не так много операций надо, чтоб все это пораутить и смикшировать.

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

Нет, автор как раз говорит, что API у OSS4 хорошие, но поддержка режимов энергосбережения хромает, и он решил оставить API от OSS.

anonymous ()

Как я всё это богатство выбора люблю и уважаю!

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

Тогда подумайте надо вопросом: почему нет alsa под xBSD?

Потому что xBSD принадлежит загробному миру?

Manhunt ★★★★★ ()

Тред переписи петросянов.

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

Во всех ноутах которыми я владел, была поддержка апаратного микширования.

spacemm ()

KLANG

компилятор языка K.

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

Тогда подумайте надо вопросом: почему нет alsa под xBSD? Все не так просто. ALSA - неудобоваримый монстр

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

256 остчетов, 11mc - максимум что можно выжать без xrun'ов, и то не всегда. И не сильно оно упирается в проц. 4 коры на 2.4ГГц или 2 коры на 1.8ГГц - один хрен. Где-то оно затыкается в других местах

Для подобных сетапов на слабых (софтварных) карточках не приходится ожидать миллисекундных задержек. Кстати, это на какой версии Jack? Пробовал jack2? Они там что-то на тему smp-обработки независимых роутов добавили.

в приципе-то там не так много операций надо, чтоб все это пораутить и смикшировать

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

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

ЛОР не нуждается в таких детектирующих личностях как ты, на это много ума не требуется

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

> JACK слишком сильно загружает ЦП;
автор не осилил конфиги / минимальные правки чужого кода

А почему в 2012 году программы все еще не могут не глючить/не жрать ресурсы по умолчанию, без требования тонкой настройки или правки кода?

shimon ★★★★★ ()

А почему бы просто не усовершенствовать ALSA, добавив в него недостающих костылей?

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

Отлично, на этом можно закрывать обсуждение. Автор этой заметки понимает, о чем говорит (в отличие от).

anonymous ()

Звучит, конечно, неплохо. Но еще одна аудиоподсистема — это дополнительная радость разработчикам софта, которым и так хватает зоопарков технологий при разработке под линукс.

pevzi ★★★★★ ()

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

Но в случае взлёта переходный период будет тот ещё, да. Обёрток не избежать.

agentgoblin ()

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

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

Во всяких BSD со звуком ваще мрачновато.

Не со звуком, а с аудиочипами некоторых «мрачноватых» производителей железа.

Вот выдержка из man snd_hda

==============================================================================

BUGS A few Hardware/OEM vendors tend to screw up BIOS settings, thus rendering the snd_hda driver useless. This usually results in a state where the snd_hda driver seems to attach and work, but no sound is played. Some cases can be solved by tuning loader.conf variables. Before trying to fix problem that way, make sure that there really is a problem and that the PCM audio device in use really corresponds to the expected audio con- nector.

Some vendors use non-standardized General Purpose I/O (GPIO) pins of the codec to control external amplifiers. In some cases setting a combina- tion of GPIO bits may be needed to make sound work on a specific device.

JJackFLASH ()

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

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

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

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

Дело в том, что в венде абсолютно всё в ведре. Поэтому «всему» там тесно.

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

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

Тогда подумайте надо вопросом: почему нет alsa под xBSD?

Лицензия, не?

Revetant ()

Новый аудио- и видео-плеер стоит ждать?

tensai_cirno ★★★★★ ()

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

Что имелось в виду?

А записывать PulseAudio в один столбик с аудио подсистемами было большой ошибкой. Леннарт, перелогинься.

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

Нет, не видел. С квирками играться приходилось (на уровне параметров ядерного модуля). Но при чем тут альса-то? Квирки вообще следствие криворукости тех, кто непонятно как и непонятно зачем делает слегка несовместимые звуковые на одних и тех же микросхемах.

anonymous ()

Задумка интересная, особенно понравилась идея с метрономом. Все почти как в Jack но теперь в ядре. Ничего плохого я в таком подходе не вижу. Ядро - монолит, а значит разделение на пользовательский и ядерный код определяется эффективностью. Автор обосновал свой подход, посмотрим что у него получится и что ему скажет Линус :)

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